adlint-3.2.14/0000755000004100000410000000000012340630463013105 5ustar www-datawww-dataadlint-3.2.14/Rakefile0000644000004100000410000001232412340630463014554 0ustar www-datawww-data#-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "rubygems/package_task" require "rdoc/task" require "rspec/core/rake_task" require "cucumber/rake/task" $: << File.expand_path("lib", File.dirname(__FILE__)) require "adlint/version" task :default => [:gem] task :gem => [:parser, :doc] task :package => [:parser, :doc] gemspec = Gem::Specification.new do |s| s.name = "adlint" s.version = AdLint::SHORT_VERSION s.date = AdLint::RELEASE_DATE s.homepage = "http://adlint.sourceforge.net/" s.licenses = ["GPLv3+: GNU General Public License version 3 or later"] s.author = "Yutaka Yanoh" s.email = "yanoh@users.sourceforge.net" s.summary = <= 1.9.3") s.executables = %w(adlint adlint_sma adlint_cma adlint_chk adlintize) s.require_paths = %w(lib) manifest_fpath = File.expand_path("MANIFEST", File.dirname(__FILE__)) s.files = File.readlines(manifest_fpath).map { |str| str.chomp } s.has_rdoc = true s.extra_rdoc_files = %w(README) s.rdoc_options = ["--main", "README", "--charset", "utf-8"] s.post_install_message = <. ------------------------------------------------------------------------------- EOS end Gem::PackageTask.new(gemspec) do |pkg| pkg.need_zip = true pkg.need_tar_bz2 = true end desc "Generate all parsers" task :parser do chdir "lib/adlint/cpp" do racc Dir["*.y"] end chdir "lib/adlint/cc1" do racc Dir["*.y"] end end desc "Build Texinfo HTML files" task :doc do chdir "share/doc" do make "all" end end RDoc::Task.new(:rdoc) do |rd| rd.rdoc_dir = "rdoc" rd.title = "AdLint #{AdLint::SHORT_VERSION} Documentation" rd.main = "README" rd.rdoc_files.include("README") rd.rdoc_files.include("bin/*") rd.rdoc_files.include("lib/**/*.{rb,y}") rd.rdoc_files.exclude("lib/adlint/cpp/constexpr.rb") rd.rdoc_files.exclude("lib/adlint/cc1/parser.rb") rd.options << "--charset=utf-8" << "--all" end desc "Generate tags file" task :tags do ctags *Dir["bin/*", "lib/**/*.rb"] end desc "Remove all temporary products" task :clean do chdir "lib/adlint/cpp" do rm_f Dir["*.output"] end chdir "lib/adlint/cc1" do rm_f Dir["*.output"] end end desc "Remove all generated products" task :clobber => :clean do chdir "lib/adlint/cpp" do rm_f Dir["*.y"].map { |f| "#{File.basename(f, '.y')}.rb" } end chdir "lib/adlint/cc1" do rm_f Dir["*.y"].map { |f| "#{File.basename(f, '.y')}.rb" } end rm_f Dir["share/doc/*.html"] rm_rf ["rdoc", "pkg"] rm_f "tags" end RSpec::Core::RakeTask.new(:spec) do |t| t.ruby_opts = %w(-w) t.rspec_opts = %w(-f html -o spec.html) end Cucumber::Rake::Task.new(:features) do |t| t.cucumber_opts = %w(--strict --quiet -f html -o features.html) end def racc(files) files.each do |file| sh "racc #{file} -o #{File.basename(file, ".y")}.rb" racced_src = File.open("#{File.basename(file, ".y")}.rb") { |io| io.read } File.open("#{File.basename(file, ".y")}.rb", "w") do |io| beautify_racced_source(racced_src).each { |line| io.puts(line) } end end end def beautify_racced_source(src) end_count = 0 src.each_line.reverse_each.map { |line| line.chomp! if end_count < 3 && line =~ /\A\s*(end\b.*)\z/ line = " " * end_count + $1 end_count += 1 end line }.reverse end def make(*targets) sh "make " + targets.join(" ") end def ctags(*files) sh "ctags " + files.join(" ") end adlint-3.2.14/bin/0000755000004100000410000000000012340630463013655 5ustar www-datawww-dataadlint-3.2.14/bin/adlintize0000755000004100000410000004211712340630463015573 0ustar www-datawww-data#! /usr/bin/env ruby # # AdLint project generator. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ $LOAD_PATH.unshift(File.expand_path("../lib", File.dirname(__FILE__))) require "adlint" version = "AdLint project generator #{AdLint::VERSION}" usage = < # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ $LOAD_PATH.unshift(File.expand_path("../lib", File.dirname(__FILE__))) require "adlint" $stdout.set_encoding(Encoding.default_external) $stderr.set_encoding(Encoding.default_external) version = "AdLint configuration validator #{AdLint::VERSION}" usage = < ex $stderr.puts ex.message, ex.backtrace $stderr.puts exit 2 end exit 0 adlint-3.2.14/bin/adlint_cma0000755000004100000410000000677212340630463015712 0ustar www-datawww-data#! /usr/bin/env ruby # # Cross module analyzer. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ $LOAD_PATH.unshift(File.expand_path("../lib", File.dirname(__FILE__))) require "adlint" $stdout.set_encoding(Encoding.default_external) $stderr.set_encoding(Encoding.default_external) version = "AdLint cross module analyzer #{AdLint::VERSION}" usage = < ex $stderr.puts ex.message, ex.backtrace $stderr.puts exit 2 end exit 0 adlint-3.2.14/bin/adlint_sma0000755000004100000410000000762212340630463015725 0ustar www-datawww-data#! /usr/bin/env ruby # # Single module analyzer. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ $LOAD_PATH.unshift(File.expand_path("../lib", File.dirname(__FILE__))) require "adlint" $stdout.set_encoding(Encoding.default_external) $stderr.set_encoding(Encoding.default_external) version = "AdLint single module analyzer #{AdLint::VERSION}" usage = < ex $stderr.puts ex.message, ex.backtrace $stderr.puts exit 2 end exit 0 adlint-3.2.14/bin/adlint0000755000004100000410000001037312340630463015062 0ustar www-datawww-data#! /usr/bin/env ruby # # All in one analyzer. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ $LOAD_PATH.unshift(File.expand_path("../lib", File.dirname(__FILE__))) require "adlint" $stdout.set_encoding(Encoding.default_external) $stderr.set_encoding(Encoding.default_external) version = "AdLint all in one analyzer #{AdLint::VERSION}" usage = < ex $stderr.puts ex.message, ex.backtrace $stderr.puts exit 2 end exit 0 adlint-3.2.14/features/0000755000004100000410000000000012340630463014723 5ustar www-datawww-dataadlint-3.2.14/features/step_definitions/0000755000004100000410000000000012340630463020271 5ustar www-datawww-dataadlint-3.2.14/features/step_definitions/code_check_steps.rb0000644000004100000410000000111512340630463024101 0ustar www-datawww-dataGiven /^a target source named "(.*)" with:$/ do |src_name, content| create_src_file(src_name, content) end When /^I successfully run `(.*)` on noarch$/ do |abbrev_cmd| cmd, src = abbrev_cmd.split run_adlint(cmd, src, "-t", "noarch_traits.yml") end Then /^the output should exactly match with:$/ do |mesg_table| $all_output.lines.to_a.size.should == mesg_table.hashes.size $all_output.each_line.zip(mesg_table.hashes).each do |line, row| if row line.should =~ /#{row[:line]}:#{row[:column]}:.*:.*:#{row[:mesg]}/ else line.should =~ /::.*:/ end end end adlint-3.2.14/features/metric_measurement/0000755000004100000410000000000012340630463020613 5ustar www-datawww-dataadlint-3.2.14/features/metric_measurement/TODO0000644000004100000410000000011312340630463021276 0ustar www-datawww-dataMust write functional specifications about the metric measurement feature. adlint-3.2.14/features/code_check/0000755000004100000410000000000012340630463016772 5ustar www-datawww-dataadlint-3.2.14/features/code_check/W0758.feature0000644000004100000410000001001712340630463021100 0ustar www-datawww-dataFeature: W0758 W0758 detects that `unsigned long' value is converted into `unsigned int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { unsigned int b = a; /* W0758 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0758 | 3 | 22 | | W0100 | 3 | 18 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { unsigned int b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 18 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { unsigned int b; b = a; /* W0758 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0758 | 4 | 9 | | W0100 | 3 | 18 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { unsigned int b; b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 18 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(unsigned long a) { bar(a); /* W0758 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0758 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(unsigned long a) { bar((unsigned int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(unsigned long a) { return a; /* W0758 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0758 | 3 | 12 | | W0392 | 3 | 5 | | W0104 | 1 | 32 | | W0628 | 1 | 14 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(unsigned long a) { return (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0104 | 1 | 32 | | W0628 | 1 | 14 | adlint-3.2.14/features/code_check/W0010.feature0000644000004100000410000000452112340630463021060 0ustar www-datawww-dataFeature: W0010 W0010 detects that a side-effect may occur in the conditional-expression. Scenario: postfix-increment-expression and postfix-decrement-expression Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return (a > 0) ? b++ : b--; /* W0010 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 20 | | W0629 | 1 | 12 | | W0010 | 3 | 20 | | W0628 | 1 | 12 | Scenario: object-specifier and postfix-decrement-expression Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return (a > 0) ? b : b--; /* W0010 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 20 | | W0629 | 1 | 12 | | W0010 | 3 | 20 | | W0086 | 3 | 20 | | W0628 | 1 | 12 | Scenario: function-call-expression and constant-specifier Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return (a > 0) ? foo(1, b) : 0; /* W0010 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0556 | 3 | 25 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0010 | 3 | 20 | | W0086 | 3 | 20 | | W0555 | 1 | 12 | Scenario: additive-expression and multiplicative-expression Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return (a > 0) ? b / a : a + b; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 32 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0629 | 1 | 12 | | W0501 | 3 | 20 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0612.feature0000644000004100000410000000144712340630463021074 0ustar www-datawww-dataFeature: W0612 W0612 detects that a controlling expression of the selection-statement always be true. Scenario: bitwise and expression as the controlling expression Given a target source named "fixture.c" with: """ void foo(unsigned int ui) { while (ui) { if (ui & 1) { /* OK not W0612 */ break; } else { ui >>= 1; } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0167 | 4 | 18 | | W0572 | 4 | 16 | | W0114 | 3 | 5 | | W0114 | 4 | 9 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W1046.feature0000644000004100000410000000346012340630463021073 0ustar www-datawww-dataFeature: W1046 W1046 detects that a space or tab character is found after newline escaping `\' character. Scenario: illformed newline escape in #define directive Given a target source named "fixture.c" with: """ #define FOO(a, b) /* OK */ \ ( /* W1046 */ \ (a) + (b) /* W1046 */ \ ) """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1046 | 2 | 33 | | W1046 | 3 | 33 | | W0442 | 1 | 1 | | W0443 | 1 | 1 | Scenario: illformed newline escape in declaration Given a target source named "fixture.c" with: """ const char *str = "foo" /* OK */ \ "bar" /* W1046 */ \ "baz" /* W1046 */ \ "qux"; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1046 | 2 | 41 | | W1046 | 3 | 41 | | W0117 | 1 | 13 | | W0947 | 1 | 19 | Scenario: illformed newline escape in expression Given a target source named "fixture.c" with: """ static void bar(const char *str); void foo(void) { bar("foo" /* OK */ \ "bar" /* W1046 */ \ "baz" /* W1046 */ \ "qux"); } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1046 | 6 | 31 | | W1046 | 7 | 31 | | W0117 | 3 | 6 | | W0947 | 5 | 9 | | W0628 | 3 | 6 | adlint-3.2.14/features/code_check/W0760.feature0000644000004100000410000001101612340630463021071 0ustar www-datawww-dataFeature: W0760 W0760 detects that `long long' value is converted into `short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { short b = a; /* W0760 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0760 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { short b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 15 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 11 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { short b; b = a; /* W0760 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0760 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { short b; b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 11 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(long long a) { bar(a); /* W0760 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0760 | 5 | 9 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(long long a) { bar((short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 20 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ short foo(long long a) { return a; /* W0760 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0760 | 3 | 12 | | W0394 | 3 | 5 | | W0104 | 1 | 21 | | W0834 | 1 | 11 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ short foo(long long a) { return (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 21 | | W0104 | 1 | 21 | | W0834 | 1 | 11 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0708.feature0000644000004100000410000000363712340630463021105 0ustar www-datawww-dataFeature: W0708 W0708 detects that a controlling variable of for-statement is updated in the loop body. Scenario: address of the controlling variable is passed to a function in the controlling part of for-statement Given a target source named "fixture.c" with: """ static int bar(int *); static void foo(void) { int i; for (i = 0; (bar(&i)) && (i < 10); ) { /* OK */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 13 | | W0629 | 3 | 13 | | W0628 | 3 | 13 | Scenario: address of the controlling variable is passed to a function in the controlling part of for-statement Given a target source named "fixture.c" with: """ static int bar(int *); static void foo(void) { int i; for (i = 0; (bar(&i)) && (i < 10); i++) { /* OK */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 13 | | W0629 | 3 | 13 | | W0628 | 3 | 13 | Scenario: address of the controlling variable is passed to a function in the controlling part of for-statement Given a target source named "fixture.c" with: """ static int bar(int *); static void foo(void) { int i; for (i = 0; (bar(&i)) && (i < 10); i++) { if (i == 5) { i++; } /* W0708 */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 13 | | W0708 | 7 | 24 | | W0629 | 3 | 13 | | W0628 | 3 | 13 | adlint-3.2.14/features/code_check/W0783.feature0000644000004100000410000000475012340630463021105 0ustar www-datawww-dataFeature: W0783 W0783 detects that a cast-expression contains a pointer type of an incomplete type. Scenario: casting to a pointer of an incomplete struct Given a target source named "fixture.c" with: """ extern struct Foo *gp; void foo(int *p) { gp = (struct Foo *) p; /* W0783 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 20 | | W0117 | 3 | 6 | | W0783 | 5 | 10 | | W0104 | 3 | 15 | | W0105 | 3 | 15 | | W0628 | 3 | 6 | Scenario: casting from a pointer of an incomplete struct Given a target source named "fixture.c" with: """ extern struct Foo *gp; void foo(void) { int *p = (int *) gp; /* W0783 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 20 | | W0117 | 3 | 6 | | W0783 | 5 | 14 | | W0100 | 5 | 10 | | W0628 | 3 | 6 | Scenario: casting from and to a pointer of an incomplete struct Given a target source named "fixture.c" with: """ extern struct Foo *p1; extern union Bar *p2; void foo(void) { p2 = (union Bar *) p1; /* W0783 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 20 | | W0118 | 2 | 19 | | W0117 | 4 | 6 | | W0783 | 6 | 10 | | W0628 | 4 | 6 | Scenario: casting from and to a pointer of an complete type Given a target source named "fixture.c" with: """ struct Foo { int i; } *p1; union Bar { int i; char c; } *p2; void foo(void) { p2 = (union Bar *) p1; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 4 | | W0117 | 8 | 4 | | W0117 | 10 | 6 | | W0551 | 5 | 7 | | W0628 | 10 | 6 | | W0589 | 3 | 4 | | W0593 | 3 | 4 | | W0589 | 8 | 4 | | W0593 | 8 | 4 | adlint-3.2.14/features/code_check/W0155.feature0000644000004100000410000001112212340630463021065 0ustar www-datawww-dataFeature: W0155 W0155 detects that `unsigned long long' value is converted into `long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { long b = a; /* W0155 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0155 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { long b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 14 | | C1000 | | | | C1006 | 1 | 29 | | W0100 | 3 | 10 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { long b; b = a; /* W0155 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0155 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { long b; b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 29 | | W0100 | 3 | 10 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(unsigned long long a) { bar(a); /* W0155 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0155 | 5 | 9 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(unsigned long long a) { bar((long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 29 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long foo(unsigned long long a) { return a; /* W0155 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0155 | 3 | 12 | | W0291 | 3 | 5 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long foo(unsigned long long a) { return (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0209.feature0000644000004100000410000001034112340630463021067 0ustar www-datawww-dataFeature: W0209 W0209 detects that `unsigned long long' value is converted into `float' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { float b = a; /* W0209 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0209 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { float b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { float b; b = a; /* W0209 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0209 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { float b; b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(unsigned long long a) { bar(a); /* W0209 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0209 | 5 | 9 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(unsigned long long a) { bar((float) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ float foo(unsigned long long a) { return a; /* W0209 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0209 | 3 | 12 | | W0345 | 3 | 5 | | W0104 | 1 | 30 | | W0834 | 1 | 11 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ float foo(unsigned long long a) { return (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 30 | | W0834 | 1 | 11 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0645.feature0000644000004100000410000000764212340630463021105 0ustar www-datawww-dataFeature: W0645 W0645 detects that a function parameter is typed as `void'. Scenario: a `void' parameter of a `void' function Given a target source named "fixture.c" with: """ extern void func(a) /* W0645 */ void a; { } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0031 | 2 | 6 | | W0104 | 2 | 6 | | W0002 | 1 | 13 | | W0645 | 1 | 13 | | W0628 | 1 | 13 | Scenario: a `void' parameter of a `int' function Given a target source named "fixture.c" with: """ extern int func(a) /* W0645 */ void a; { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0031 | 2 | 6 | | W0104 | 2 | 6 | | W0002 | 1 | 12 | | W0645 | 1 | 12 | | W0628 | 1 | 12 | Scenario: multiple parameters including `void' typed one Given a target source named "fixture.c" with: """ extern void func(a, b) /* W0645 */ int a; void b; { } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0031 | 2 | 5 | | W0031 | 3 | 6 | | W0104 | 2 | 5 | | W0104 | 3 | 6 | | W0002 | 1 | 13 | | W0645 | 1 | 13 | | W0628 | 1 | 13 | Scenario: a `void *' parameter Given a target source named "fixture.c" with: """ extern void func(p) /* OK */ void* p; { } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0031 | 2 | 7 | | W0104 | 2 | 7 | | W0105 | 2 | 7 | | W0002 | 1 | 13 | | W0628 | 1 | 13 | Scenario: an `int' parameter Given a target source named "fixture.c" with: """ extern void func(a) /* OK */ int a; { } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0031 | 2 | 5 | | W0104 | 2 | 5 | | W0002 | 1 | 13 | | W0628 | 1 | 13 | Scenario: a `void' as a parameter-type-list Given a target source named "fixture.c" with: """ extern void func(void); /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | Scenario: a qualified `void' parameter Given a target source named "fixture.c" with: """ extern void func(a) /* W0645 */ const void a; { } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0031 | 2 | 12 | | W0002 | 1 | 13 | | W0645 | 1 | 13 | | W0628 | 1 | 13 | Scenario: a more qualified `void' parameter Given a target source named "fixture.c" with: """ extern void func(a) /* W0645 */ const volatile void a; { } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0031 | 2 | 21 | | W0002 | 1 | 13 | | W0645 | 1 | 13 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0148.feature0000644000004100000410000001060212340630463021071 0ustar www-datawww-dataFeature: W0148 W0148 detects that `unsigned long' value is converted into `signed char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { signed char b = a; /* W0148 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0148 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { signed char b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 21 | | C1000 | | | | C1006 | 1 | 24 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { signed char b; b = a; /* W0148 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0148 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { signed char b; b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 24 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(unsigned long a) { bar(a); /* W0148 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0148 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(unsigned long a) { bar((signed char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 24 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(unsigned long a) { return a; /* W0148 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0148 | 3 | 12 | | W0284 | 3 | 5 | | W0104 | 1 | 31 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(unsigned long a) { return (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 31 | | W0104 | 1 | 31 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0177.feature0000644000004100000410000001116612340630463021101 0ustar www-datawww-dataFeature: W0177 W0177 detects that `long long' value is converted into `unsigned char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned char b = a; /* W0177 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0177 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned char b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 23 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 19 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned char b; b = a; /* W0177 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0177 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned char b; b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 19 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(long long a) { bar(a); /* W0177 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0177 | 5 | 9 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(long long a) { bar((unsigned char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 20 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(long long a) { return a; /* W0177 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0177 | 3 | 12 | | W0313 | 3 | 5 | | W0104 | 1 | 29 | | W0834 | 1 | 19 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(long long a) { return (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0104 | 1 | 29 | | W0834 | 1 | 19 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0488.feature0000644000004100000410000001000312340630463021073 0ustar www-datawww-dataFeature: W0488 W0488 detects that multiple function-call-expressions or member-access-expressions or array-subscript-expressions appear in a logical-and-expression or a logical-or-expression without appropriate grouping. Scenario: member-access-expression and array-subscript-expression and function-call-expression as an operand of logical-and-expression Given a target source named "fixture.c" with: """ struct foo { int (*a[3])(void); }; static void foo(struct foo *p) { if (p) { if (p->a[0]() && p->a[1]()) { /* W0488 */ return; } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 13 | | W0104 | 3 | 29 | | W0105 | 3 | 29 | | W1071 | 3 | 13 | | W0629 | 3 | 13 | | W0488 | 6 | 13 | | W0508 | 6 | 23 | | W0114 | 5 | 5 | | W0628 | 3 | 13 | Scenario: member-access-expression and array-subscript-expression and function-call-expression as an operand of logical-and-expression with grouping Given a target source named "fixture.c" with: """ struct foo { int (*a[3])(void); }; static void foo(struct foo *p) { if (p) { if (((p->a[0])()) && ((p->a[1])())) { /* OK */ return; } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 13 | | W0104 | 3 | 29 | | W0105 | 3 | 29 | | W1071 | 3 | 13 | | W0629 | 3 | 13 | | W0508 | 6 | 27 | | W0114 | 5 | 5 | | W0628 | 3 | 13 | Scenario: member-access-expression and array-subscript-expression and function-call-expression as an operand of logical-and-expression grouped entirely Given a target source named "fixture.c" with: """ struct foo { int (*a[3])(void); }; static void foo(struct foo *p) { if (p) { if ((p->a[0]() && p->a[1]())) { /* W0488 */ return; } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 13 | | W0104 | 3 | 29 | | W0105 | 3 | 29 | | W1071 | 3 | 13 | | W0629 | 3 | 13 | | W0488 | 6 | 13 | | W0508 | 6 | 24 | | W0114 | 5 | 5 | | W0628 | 3 | 13 | Scenario: ungrouped array-subscript-expression in a logical-and-expression Given a target source named "fixture.c" with: """ static void foo(int i, int a[]) { if (i && a[0]) { /* W0488 */ return; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0104 | 1 | 21 | | W0104 | 1 | 28 | | W1071 | 1 | 13 | | W0629 | 1 | 13 | | W0488 | 3 | 9 | | W0628 | 1 | 13 | Scenario: grouped array-subscript-expression in a logical-and-expression Given a target source named "fixture.c" with: """ static void foo(int i, int a[]) { if (i && (a[0])) { /* OK */ return; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0104 | 1 | 21 | | W0104 | 1 | 28 | | W1071 | 1 | 13 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0251.feature0000644000004100000410000001054612340630463021073 0ustar www-datawww-dataFeature: W0251 W0251 detects that `unsigned char' value is converted into `long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { long long b = a; /* W0251 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0251 | 3 | 19 | | W0100 | 3 | 15 | | W0104 | 1 | 24 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { long long b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 24 | | W0834 | 3 | 20 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { long long b; b = a; /* W0251 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0251 | 4 | 9 | | W0100 | 3 | 15 | | W0104 | 1 | 24 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { long long b; b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 24 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(unsigned char a) { bar(a); /* W0251 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0251 | 5 | 9 | | W0104 | 3 | 24 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(unsigned char a) { bar((long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(unsigned char a) { return a; /* W0251 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0251 | 3 | 12 | | W0407 | 3 | 5 | | W0104 | 1 | 29 | | W0834 | 1 | 1 | | W0628 | 1 | 11 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(unsigned char a) { return (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0104 | 1 | 29 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 11 | adlint-3.2.14/features/code_check/W0241.feature0000644000004100000410000001044712340630463021072 0ustar www-datawww-dataFeature: W0241 W0241 detects that `double' value is converted into `long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { long long b = a; /* W0241 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0241 | 3 | 19 | | W0100 | 3 | 15 | | W0104 | 1 | 17 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { long long b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 17 | | W0834 | 3 | 20 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { long long b; b = a; /* W0241 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0241 | 4 | 9 | | W0100 | 3 | 15 | | W0104 | 1 | 17 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { long long b; b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 17 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(double a) { bar(a); /* W0241 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0241 | 5 | 9 | | W0104 | 3 | 17 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(double a) { bar((long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 17 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(double a) { return a; /* W0241 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0241 | 3 | 12 | | W0377 | 3 | 5 | | W0104 | 1 | 22 | | W0834 | 1 | 1 | | W0628 | 1 | 11 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(double a) { return (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0104 | 1 | 22 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 11 | adlint-3.2.14/features/code_check/W0123.feature0000644000004100000410000000750712340630463021074 0ustar www-datawww-dataFeature: W0123 W0123 detects that `char' value is converted into `int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { int b = a; /* W0123 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0123 | 3 | 13 | | W0100 | 3 | 9 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { int b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 9 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { int b; b = a; /* W0123 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0123 | 4 | 9 | | W0100 | 3 | 9 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { int b; b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 9 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(char a) { bar(a); /* W0123 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0123 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(char a) { bar((int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ int foo(char a) { return a; /* W0123 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0123 | 3 | 12 | | W0259 | 3 | 5 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ int foo(char a) { return (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0124.feature0000644000004100000410000000767412340630463021102 0ustar www-datawww-dataFeature: W0124 W0124 detects that `char' value is converted into `unsigned int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { unsigned int b = a; /* W0124 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0124 | 3 | 22 | | W0100 | 3 | 18 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { unsigned int b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 18 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { unsigned int b; b = a; /* W0124 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0124 | 4 | 9 | | W0100 | 3 | 18 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { unsigned int b; b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 18 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(char a) { bar(a); /* W0124 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0124 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(char a) { bar((unsigned int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(char a) { return a; /* W0124 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0124 | 3 | 12 | | W0260 | 3 | 5 | | W0104 | 1 | 23 | | W0628 | 1 | 14 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(char a) { return (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0104 | 1 | 23 | | W0628 | 1 | 14 | adlint-3.2.14/features/code_check/W1066.feature0000644000004100000410000000621112340630463021072 0ustar www-datawww-dataFeature: W1066 W1066 detects that a value of the `float' typed compound expression is explicitly converted into a `double' value. Scenario: explicit conversion from `float' to `double' when the source value is derived from `+', `-', `*' or `/' expressions Given a target source named "fixture.c" with: """ static void func(float a, float b) { double c; c = (double) (a + b); /* W1066 */ c = (double) (a - b); /* W1066 */ c = (double) (a * b); /* W1066 */ c = (double) (a / b); /* W1066 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 4 | 21 | | W1066 | 4 | 21 | | W0723 | 5 | 21 | | W1066 | 5 | 21 | | W0723 | 6 | 21 | | W1066 | 6 | 21 | | W0093 | 7 | 21 | | C1000 | | | | C1006 | 1 | 33 | | W1066 | 7 | 21 | | W0104 | 1 | 24 | | W0104 | 1 | 33 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: explicit conversion from `float' to `double' when the source value is not derived from `+', `-', `*' or `/' expressions Given a target source named "fixture.c" with: """ static void func(float a, float b) { double c; c = (double) (a % b); /* OK */ c = (double) (a < b); /* OK */ c = (double) (a << b); /* OK */ c = (double) (a ^ b); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0093 | 4 | 21 | | C1000 | | | | C1006 | 1 | 33 | | W0570 | 6 | 21 | | C1000 | | | | C1006 | 1 | 24 | | W0572 | 6 | 21 | | W0794 | 6 | 21 | | W0572 | 7 | 21 | | W0104 | 1 | 24 | | W0104 | 1 | 33 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: implicit conversion from `float' to `double' Given a target source named "fixture.c" with: """ static void func(float a, float b) { double c; c = a + b; /* W0777 */ c = a - b; /* W0777 */ c = a * b; /* W0777 */ c = a / b; /* W0777 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 4 | 11 | | W0777 | 4 | 11 | | W0723 | 5 | 11 | | W0777 | 5 | 11 | | W0723 | 6 | 11 | | W0777 | 6 | 11 | | W0093 | 7 | 11 | | C1000 | | | | C1006 | 1 | 33 | | W0777 | 7 | 11 | | W0104 | 1 | 24 | | W0104 | 1 | 33 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0705.feature0000644000004100000410000002655412340630463021105 0ustar www-datawww-dataFeature: W0705 W0705 detects that an array subscript may cause out of bound access of the array object. Scenario: array-subscript-expression with non-constant subscript may cause OOB access in an initializer Given a target source named "fixture.c" with: """ extern int a[5]; int foo(int i) { if (i >= 0 && i < 5) { int j = a[i + 1]; /* W0705 */ return j; } return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W0705 | 6 | 21 | | W0100 | 6 | 13 | | W0104 | 3 | 13 | | W1071 | 3 | 5 | | W0490 | 5 | 9 | | W0499 | 5 | 9 | | W0502 | 5 | 9 | | W0628 | 3 | 5 | Scenario: array-subscript-expression with non-constant subscript may cause OOB access in rhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; int foo(int i) { int j = 0; if (i >= 0 && i < 4) { j = a[i - 1]; /* W0705 */ } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W0705 | 7 | 17 | | W0104 | 3 | 13 | | W0490 | 6 | 9 | | W0499 | 6 | 9 | | W0502 | 6 | 9 | | W0628 | 3 | 5 | Scenario: array-subscript-expression with non-constant subscript may cause OOB access in lhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; void foo(int i) { if (i >= 0 && i < 3) { a[i + 3] = 0; /* W0705 */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 6 | | W0705 | 6 | 13 | | W0104 | 3 | 14 | | W0490 | 5 | 9 | | W0499 | 5 | 9 | | W0502 | 5 | 9 | | W0628 | 3 | 6 | Scenario: indirection-expression with non-constant subscript may cause OOB access in rhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; int foo(int i) { int j = 0; if (i >= 0 && i < 5) { j = *(a + i - 1); /* W0705 */ } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W9003 | 7 | 19 | | W0023 | 7 | 17 | | W9003 | 7 | 23 | | W0024 | 7 | 21 | | W0705 | 7 | 14 | | W0104 | 3 | 13 | | W0490 | 6 | 9 | | W0499 | 6 | 9 | | W0502 | 6 | 9 | | W0498 | 7 | 14 | | W0628 | 3 | 5 | Scenario: indirection-expression with non-constant subscript may cause OOB access in lhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; void foo(int i) { if (i >= 0 && i < 5) { *(2 + a + i - 1) = 0; /* W0705 */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 6 | | W9003 | 6 | 11 | | W0023 | 6 | 13 | | W9003 | 6 | 19 | | W0023 | 6 | 17 | | W9003 | 6 | 23 | | W0024 | 6 | 21 | | W0705 | 6 | 10 | | W0104 | 3 | 14 | | W0490 | 5 | 9 | | W0499 | 5 | 9 | | W0502 | 5 | 9 | | W0498 | 6 | 10 | | W0628 | 3 | 6 | Scenario: array-subscript-expression with non-constant subscript must not cuase OOB access in initializer Given a target source named "fixture.c" with: """ extern int a[5]; int foo(int i) { if (i > 0 && i <= 5) { int j = a[i - 1]; /* OK */ return j; } return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W0100 | 6 | 13 | | W0104 | 3 | 13 | | W1071 | 3 | 5 | | W0490 | 5 | 9 | | W0499 | 5 | 9 | | W0502 | 5 | 9 | | W0628 | 3 | 5 | Scenario: array-subscript-expression with non-constant subscript must not cause OOB access in rhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; int foo(int i) { int j = 0; if (i >= 0 && i < 4) { j = a[i + 1]; /* OK */ } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W0104 | 3 | 13 | | W0490 | 6 | 9 | | W0499 | 6 | 9 | | W0502 | 6 | 9 | | W0628 | 3 | 5 | Scenario: array-subscript-expression with non-constant subscript must not cause OOB access in lhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; void foo(int i) { if (i >= 0 && i < 3) { a[i + 2] = 0; /* OK */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 6 | | W0104 | 3 | 14 | | W0490 | 5 | 9 | | W0499 | 5 | 9 | | W0502 | 5 | 9 | | W0628 | 3 | 6 | Scenario: indirection-expression with non-constant subscript must not cause OOB access in rhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; int foo(int i) { int j = 0; if (i > 0 && i < 6) { j = *(a + i - 1); /* OK */ } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W9003 | 7 | 19 | | W0023 | 7 | 17 | | W9003 | 7 | 23 | | W0024 | 7 | 21 | | W0104 | 3 | 13 | | W0490 | 6 | 9 | | W0499 | 6 | 9 | | W0502 | 6 | 9 | | W0498 | 7 | 14 | | W0628 | 3 | 5 | Scenario: indirection-expression with non-constant subscript must not cause OOB access in lhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; void foo(int i) { if (i >= 0 && i < 5) { *(2 + a + i - 2) = 0; /* OK */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 6 | | W9003 | 6 | 11 | | W0023 | 6 | 13 | | W9003 | 6 | 19 | | W0023 | 6 | 17 | | W9003 | 6 | 23 | | W0023 | 6 | 21 | | W0104 | 3 | 14 | | W0490 | 5 | 9 | | W0499 | 5 | 9 | | W0502 | 5 | 9 | | W0498 | 6 | 10 | | W0628 | 3 | 6 | Scenario: indirection-expression with non-constant subscript should not cause OOB access in an initializer Given a target source named "fixture.c" with: """ extern int a[5]; int foo(int i) { if (i >= 0 && i < 5) { int j = *(a + i++); /* OK */ int k = *(a + i - 1); /* OK */ return j; } return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W9003 | 6 | 24 | | W0023 | 6 | 21 | | W9003 | 7 | 23 | | W0023 | 7 | 21 | | W9003 | 7 | 27 | | W0024 | 7 | 25 | | W0100 | 6 | 13 | | W0100 | 7 | 13 | | W1071 | 3 | 5 | | W0490 | 5 | 9 | | W0499 | 5 | 9 | | W0502 | 5 | 9 | | W0498 | 7 | 18 | | W0628 | 3 | 5 | Scenario: indirection-expression with non-constant subscript may and should not cause OOB access in an initializer Given a target source named "fixture.c" with: """ extern int a[5]; int foo(int i) { if (i >= 0 && i < 5) { int j = *(a + ++i); /* W0705 */ int k = *(a + i - 1); /* OK */ return j; } return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W9003 | 6 | 23 | | W0023 | 6 | 21 | | W0705 | 6 | 18 | | W9003 | 7 | 23 | | W0023 | 7 | 21 | | W9003 | 7 | 27 | | W0024 | 7 | 25 | | W0100 | 6 | 13 | | W0100 | 7 | 13 | | W1071 | 3 | 5 | | W0490 | 5 | 9 | | W0499 | 5 | 9 | | W0502 | 5 | 9 | | W0498 | 7 | 18 | | W0628 | 3 | 5 | Scenario: size of array is specified by the global constant variable Given a target source named "fixture.c" with: """ const int size = 2; void foo(void) { int i; char a[size]; for (i = 0; i < size; i++) { a[i] = (char) 0; /* OK */ } } void bar(void) { int i; char a[size]; for (i = 0; i < size; i++) { a[i] = (char) 0; /* OK */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0117 | 3 | 6 | | W0117 | 12 | 6 | | W0628 | 3 | 6 | | W0628 | 12 | 6 | | W0593 | 1 | 11 | adlint-3.2.14/features/code_check/W0583.feature0000644000004100000410000000653212340630463021103 0ustar www-datawww-dataFeature: W0583 W0583 detects that arguments specified to call the function does not match with the corresponding function-definition appears after the function-call. Scenario: array as an argument Given a target source named "fixture.c" with: """ int main(void) { int a[] = { 0, 1, 2 }; return foo(a); } int foo(const int *p) { /* W0583 should not be output */ return *p; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0109 | 4 | 12 | | W0117 | 7 | 5 | | W0422 | 8 | 12 | | C1000 | | | | C1005 | 7 | 20 | | W0104 | 7 | 20 | | W0589 | 7 | 5 | | W0591 | 7 | 5 | Scenario: call with matched arguments Given a target source named "fixture.c" with: """ static void foo(int *p) { bar(NULL, *p); /* OK */ } static void bar(int *p, int i) { } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0422 | 3 | 15 | | C1000 | | | | C1005 | 1 | 22 | | W0109 | 3 | 5 | | W0104 | 1 | 22 | | W0105 | 1 | 22 | | W1073 | 3 | 8 | | W1076 | 6 | 13 | | W0031 | 6 | 22 | | W0031 | 6 | 29 | | W0104 | 6 | 22 | | W0104 | 6 | 29 | | W0105 | 6 | 22 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: call with unmatched arguments Given a target source named "fixture.c" with: """ static void foo(int *p) { bar(NULL, p); /* W0583 */ } static void bar(int *p, int i) { } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0109 | 3 | 5 | | W0104 | 1 | 22 | | W0105 | 1 | 22 | | W1073 | 3 | 8 | | W0583 | 3 | 8 | | W1076 | 6 | 13 | | W0031 | 6 | 22 | | W0031 | 6 | 29 | | W0104 | 6 | 22 | | W0104 | 6 | 29 | | W0105 | 6 | 22 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: call with unmatched constant pointer Given a target source named "fixture.c" with: """ static void foo(int *p) { bar(3, p); /* W0583 */ } static void bar(int *p, int i) { } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0109 | 3 | 5 | | W0104 | 1 | 22 | | W0105 | 1 | 22 | | W1073 | 3 | 8 | | W0583 | 3 | 8 | | W1076 | 6 | 13 | | W0031 | 6 | 22 | | W0031 | 6 | 29 | | W0104 | 6 | 22 | | W0104 | 6 | 29 | | W0105 | 6 | 22 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0767.feature0000644000004100000410000000756312340630463021114 0ustar www-datawww-dataFeature: W0767 W0767 detects that `double' value is converted into `float' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { float b = a; /* W0767 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0767 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { float b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { float b; b = a; /* W0767 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0767 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { float b; b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(double a) { bar(a); /* W0767 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0767 | 5 | 9 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(double a) { bar((float) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ float foo(double a) { return a; /* W0767 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0767 | 3 | 12 | | W0774 | 3 | 5 | | W0104 | 1 | 18 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ float foo(double a) { return (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 18 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W1076.feature0000644000004100000410000000340012340630463021070 0ustar www-datawww-dataFeature: W1076 W1076 detects that a `static' function definition appears with no anterior function declarations. Scenario: `static' function definition Given a target source named "fixture.c" with: """ static int foo(void) /* W1076 */ { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: `static' function declaration followed by the `static' function definition Given a target source named "fixture.c" with: """ static int foo(void); static int foo(void) /* OK */ { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0629 | 3 | 12 | | W0628 | 3 | 12 | Scenario: `extern' function definition Given a target source named "fixture.c" with: """ extern int foo(void) /* OK */ { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0628 | 1 | 12 | Scenario: function definition without storage-class-specifier Given a target source named "fixture.c" with: """ int foo(void) /* OK */ { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0161.feature0000644000004100000410000001052212340630463021065 0ustar www-datawww-dataFeature: W0161 W0161 detects that `short' value is converted into `unsigned char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { unsigned char b = a; /* W0161 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0161 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { unsigned char b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 23 | | C1000 | | | | C1006 | 1 | 16 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { unsigned char b; b = a; /* W0161 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0161 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { unsigned char b; b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 16 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(short a) { bar(a); /* W0161 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0161 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(short a) { bar((unsigned char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 16 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(short a) { return a; /* W0161 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0161 | 3 | 12 | | W0297 | 3 | 5 | | W0104 | 1 | 25 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(short a) { return (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 25 | | W0104 | 1 | 25 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0236.feature0000644000004100000410000000777512340630463021110 0ustar www-datawww-dataFeature: W0236 W0236 detects that `long double' value is converted into `unsigned int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned int b = a; /* W0236 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0236 | 3 | 22 | | W0100 | 3 | 18 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned int b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 18 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned int b; b = a; /* W0236 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0236 | 4 | 9 | | W0100 | 3 | 18 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned int b; b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 18 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(long double a) { bar(a); /* W0236 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0236 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(long double a) { bar((unsigned int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(long double a) { return a; /* W0236 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0236 | 3 | 12 | | W0372 | 3 | 5 | | W0104 | 1 | 30 | | W0628 | 1 | 14 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(long double a) { return (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0104 | 1 | 30 | | W0628 | 1 | 14 | adlint-3.2.14/features/code_check/W0147.feature0000644000004100000410000001041712340630463021074 0ustar www-datawww-dataFeature: W0147 W0147 detects that `unsigned int' value is converted into `int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { int b = a; /* W0147 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0147 | 3 | 13 | | W0100 | 3 | 9 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { int b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 13 | | C1000 | | | | C1006 | 1 | 23 | | W0100 | 3 | 9 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { int b; b = a; /* W0147 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0147 | 4 | 9 | | W0100 | 3 | 9 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { int b; b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 23 | | W0100 | 3 | 9 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(unsigned int a) { bar(a); /* W0147 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0147 | 5 | 9 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(unsigned int a) { bar((int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 23 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ int foo(unsigned int a) { return a; /* W0147 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0147 | 3 | 12 | | W0283 | 3 | 5 | | W0104 | 1 | 22 | | W0628 | 1 | 5 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ int foo(unsigned int a) { return (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 22 | | W0104 | 1 | 22 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0688.feature0000644000004100000410000000353112340630463021105 0ustar www-datawww-dataFeature: W0688 W0688 detects that the line number of #line directive is less than 1 or greater than 32767. Scenario: zero as the line number Given a target source named "fixture.c" with: """ #line 0 "test.c" /* W0688 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0688 | 1 | 7 | Scenario: valid min line number Given a target source named "fixture.c" with: """ #line 1 "test.c" /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | Scenario: valid line number Given a target source named "fixture.c" with: """ #line 1024 "test.c" /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | Scenario: valid max line number Given a target source named "fixture.c" with: """ #line 32767 "test.c" /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | Scenario: 32768 as the line number Given a target source named "fixture.c" with: """ #line 32768 "test.c" /* W0688 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0688 | 1 | 7 | Scenario: too big as the line number Given a target source named "fixture.c" with: """ #line 4294967296 "test.c" /* W0688 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0688 | 1 | 7 | adlint-3.2.14/features/code_check/W0489.feature0000644000004100000410000000444312340630463021107 0ustar www-datawww-dataFeature: W0489 W0489 detects that multiple unary-expressions appear as an operand of a logical-and-expression or a logical-or-expression without appropriate grouping. Scenario: unary-expressions appear as an operand of a logical-and-expression Given a target source named "fixture.c" with: """ static void foo(int i, int *p) { if (p) { if (-i++ && !*p) { /* W0489 */ return; } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0104 | 1 | 29 | | W0105 | 1 | 29 | | W1071 | 1 | 13 | | W0629 | 1 | 13 | | W0489 | 4 | 13 | | W0114 | 3 | 5 | | W0628 | 1 | 13 | Scenario: unary-expressions appear as an operand of a logical-and-expression with grouping Given a target source named "fixture.c" with: """ static void foo(int i, int *p) { if (p) { if ((-i++) && (!*p)) { /* OK */ return; } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0104 | 1 | 29 | | W0105 | 1 | 29 | | W1071 | 1 | 13 | | W0629 | 1 | 13 | | W0114 | 3 | 5 | | W0628 | 1 | 13 | Scenario: unary-expressions appear as an operand of a logical-and-expression grouped entirely Given a target source named "fixture.c" with: """ static void foo(int i, int *p) { if (p) { if ((-i++ && !*p)) { /* W0489 */ return; } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0104 | 1 | 29 | | W0105 | 1 | 29 | | W1071 | 1 | 13 | | W0629 | 1 | 13 | | W0489 | 4 | 13 | | W0114 | 3 | 5 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0461.feature0000644000004100000410000000617112340630463021075 0ustar www-datawww-dataFeature: W0461 W0461 detects that a pointer to the undefined value is passed as an argument. Scenario: pointer to the global constant array initialized with a string-literal Given a target source named "fixture.c" with: """ static const char str[] = "str"; extern void foo(const void *); static void bar(void) { foo(str); /* OK */ } static void baz(void) { foo(str); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 3 | 13 | | W1076 | 5 | 13 | | W1076 | 10 | 13 | | W0629 | 5 | 13 | | W0629 | 10 | 13 | | W0947 | 1 | 27 | | W0628 | 5 | 13 | | W0628 | 10 | 13 | Scenario: pointer to the global constant explicitly sized array initialized with a string-literal Given a target source named "fixture.c" with: """ static const char str[4] = "str"; extern void foo(const void *); static void bar(void) { foo(str); /* OK */ } static void baz(void) { foo(str); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 3 | 13 | | W1076 | 5 | 13 | | W1076 | 10 | 13 | | W0629 | 5 | 13 | | W0629 | 10 | 13 | | W0947 | 1 | 28 | | W0950 | 1 | 23 | | W0628 | 5 | 13 | | W0628 | 10 | 13 | Scenario: array elements may be initialized according to a parameter value Given a target source named "fixture.c" with: """ extern void bar(const int *); void baz(int i) { int a[5]; for (; i < 2; i++) { a[i] = i; } bar(a); /* OK not W0461 but W0462 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0534 | 7 | 10 | | W0705 | 8 | 11 | | C1000 | | | | C1006 | 3 | 14 | | W0462 | 11 | 9 | | C1000 | | | | C1003 | 5 | 9 | | C1002 | 7 | 14 | | W0950 | 5 | 11 | | W0628 | 3 | 6 | Scenario: array elements is initialized by an iteration-statement Given a target source named "fixture.c" with: """ extern void bar(const int *); void baz(void) { int a[3]; for (int i = 0; i < 3; i++) { a[i] = i; } bar(a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0950 | 5 | 11 | | W0628 | 3 | 6 | adlint-3.2.14/features/code_check/W0534.feature0000644000004100000410000000405412340630463021074 0ustar www-datawww-dataFeature: W0534 W0534 detects that a controlling variable of for-statement is not initialized in the 1st part of for-statement. Scenario: the 1st part of for-statement does not initialize the controlling variable Given a target source named "fixture.c" with: """ static int bar(int *); static int foo(const int num) { int i = 0, j; for (j = 0; (bar(&i)) && (i < num); i++) { /* W0534 */ j++; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W0534 | 6 | 10 | | W0629 | 3 | 12 | | W0425 | 5 | 16 | | W0628 | 3 | 12 | Scenario: the 1st part of for-statement is empty Given a target source named "fixture.c" with: """ static int bar(int *); static int foo(const int num) { int i = 0, j = 0; for (; (bar(&i)) && (i < num); i++) { /* W0534 */ j++; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W0534 | 6 | 10 | | W0629 | 3 | 12 | | W0425 | 5 | 16 | | W0628 | 3 | 12 | Scenario: the 1st part of for-statement initializes the controlling variable Given a target source named "fixture.c" with: """ static int bar(int *); static int foo(const int num) { int i, j = 0; for (i = 0; (bar(&i)) && (i < num); i++) { /* OK */ j++; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W0629 | 3 | 12 | | W0425 | 5 | 12 | | W0628 | 3 | 12 | adlint-3.2.14/features/code_check/W0137.feature0000644000004100000410000000763412340630463021102 0ustar www-datawww-dataFeature: W0137 W0137 detects that `unsigned int' value is converted into `char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { char b = a; /* W0137 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0137 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { char b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { char b; b = a; /* W0137 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0137 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { char b; b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(unsigned int a) { bar(a); /* W0137 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0137 | 5 | 9 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(unsigned int a) { bar((char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ char foo(unsigned int a) { return a; /* W0137 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0137 | 3 | 12 | | W0273 | 3 | 5 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ char foo(unsigned int a) { return (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0178.feature0000644000004100000410000001120512340630463021074 0ustar www-datawww-dataFeature: W0178 W0178 detects that `long long' value is converted into `unsigned short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned short b = a; /* W0178 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0178 | 3 | 24 | | W0100 | 3 | 20 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned short b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 24 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 20 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned short b; b = a; /* W0178 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0178 | 4 | 9 | | W0100 | 3 | 20 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned short b; b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 20 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(long long a) { bar(a); /* W0178 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0178 | 5 | 9 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(long long a) { bar((unsigned short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 20 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(long long a) { return a; /* W0178 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0178 | 3 | 12 | | W0314 | 3 | 5 | | W0104 | 1 | 30 | | W0834 | 1 | 20 | | W0628 | 1 | 16 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(long long a) { return (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 30 | | W0104 | 1 | 30 | | W0834 | 1 | 20 | | W0628 | 1 | 16 | adlint-3.2.14/features/code_check/W0726.feature0000644000004100000410000000521212340630463021074 0ustar www-datawww-dataFeature: W0726 W0726 detects that `return' statement is found in qualified void function. Scenario: `return' with value statement in const void function Given a target source named "fixture.c" with: """ const void func(void) /* W0726 */ { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W1033 | 1 | 12 | | W0726 | 3 | 5 | | W0628 | 1 | 12 | Scenario: `return' with value statement in volatile void function Given a target source named "fixture.c" with: """ volatile void func(void) /* W0726 */ { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W1033 | 1 | 15 | | W0726 | 3 | 5 | | W0628 | 1 | 15 | Scenario: `return;' statement in const void function Given a target source named "fixture.c" with: """ const void func(void) /* OK */ { return; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W1033 | 1 | 12 | | W0628 | 1 | 12 | Scenario: `return;' statement in volatile void function Given a target source named "fixture.c" with: """ volatile void func(void) /* OK */ { return; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W1033 | 1 | 15 | | W0628 | 1 | 15 | Scenario: `return' with value statement in void function Given a target source named "fixture.c" with: """ void func(void) /* OK */ { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0628 | 1 | 6 | Scenario: `return' statement in void function Given a target source named "fixture.c" with: """ void func(void) /* OK */ { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0793.feature0000644000004100000410000001041412340630463021100 0ustar www-datawww-dataFeature: W0793 W0793 detects that an explicit conversion between pointer to variable and pointer to function is found. Scenario: converting `float *' to function pointer Given a target source named "fixture.c" with: """ typedef int (*funptr_t)(void); funptr_t foo(float *p) { return (funptr_t) p; /* W0793 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 10 | | W0625 | 1 | 15 | | W0793 | 5 | 12 | | W0104 | 3 | 21 | | W0105 | 3 | 21 | | W0628 | 3 | 10 | Scenario: converting `double *' to function pointer Given a target source named "fixture.c" with: """ typedef int (*funptr_t)(void); funptr_t foo(double *p) { return (funptr_t) p; /* W0793 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 10 | | W0625 | 1 | 15 | | W0793 | 5 | 12 | | W0104 | 3 | 22 | | W0105 | 3 | 22 | | W0628 | 3 | 10 | Scenario: converting `long double *' to function pointer Given a target source named "fixture.c" with: """ typedef int (*funptr_t)(void); funptr_t foo(long double *p) { return (funptr_t) p; /* W0793 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 10 | | W0625 | 1 | 15 | | W0793 | 5 | 12 | | W0104 | 3 | 27 | | W0105 | 3 | 27 | | W0628 | 3 | 10 | Scenario: converting function pointer to `float *' Given a target source named "fixture.c" with: """ typedef int (*funptr_t)(void); float *foo(funptr_t p) { return (float *) p; /* W0793 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 8 | | W0793 | 5 | 12 | | W0104 | 3 | 21 | | W0628 | 3 | 8 | Scenario: converting function pointer to `double *' Given a target source named "fixture.c" with: """ typedef int (*funptr_t)(void); double *foo(funptr_t p) { return (double *) p; /* W0793 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 9 | | W0793 | 5 | 12 | | W0104 | 3 | 22 | | W0628 | 3 | 9 | Scenario: converting function pointer to `long double *' Given a target source named "fixture.c" with: """ typedef int (*funptr_t)(void); long double *foo(funptr_t p) { return (long double *) p; /* W0793 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 14 | | W0793 | 5 | 12 | | W0104 | 3 | 27 | | W0628 | 3 | 14 | Scenario: converting `float *' to `int *' Given a target source named "fixture.c" with: """ int *foo(float *p) { return (int *) p; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 17 | | W0105 | 1 | 17 | | W0628 | 1 | 6 | Scenario: converting function pointer to `void *' Given a target source named "fixture.c" with: """ typedef int (*funptr_t)(void); void *foo(funptr_t p) { return (void *) p; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 7 | | W0104 | 3 | 20 | | W0628 | 3 | 7 | adlint-3.2.14/features/code_check/W0144.feature0000644000004100000410000001047312340630463021073 0ustar www-datawww-dataFeature: W0144 W0144 detects that `unsigned short' value is converted into `short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { short b = a; /* W0144 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0144 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { short b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 15 | | C1000 | | | | C1006 | 1 | 25 | | W0100 | 3 | 11 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { short b; b = a; /* W0144 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0144 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { short b; b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 25 | | W0100 | 3 | 11 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(unsigned short a) { bar(a); /* W0144 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0144 | 5 | 9 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(unsigned short a) { bar((short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 25 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ short foo(unsigned short a) { return a; /* W0144 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0144 | 3 | 12 | | W0280 | 3 | 5 | | W0104 | 1 | 26 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ short foo(unsigned short a) { return (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 26 | | W0104 | 1 | 26 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0649.feature0000644000004100000410000002046612340630463021110 0ustar www-datawww-dataFeature: W0649 W0649 detects that right hand side of the shift-expression is a constant-expression of negative value. Scenario: left shift-expression with negative constant rhs value Given a target source named "fixture.c" with: """ int foo(int i) { return i << -1; /* W0649 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0570 | 3 | 14 | | C1000 | | | | C1006 | 1 | 13 | | W0572 | 3 | 14 | | W0649 | 3 | 14 | | W0794 | 3 | 14 | | W0104 | 1 | 13 | | W0628 | 1 | 5 | Scenario: right shift-expression with negative constant rhs value Given a target source named "fixture.c" with: """ int foo(int i) { return i >> -1; /* W0649 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0571 | 3 | 14 | | W0572 | 3 | 14 | | W0649 | 3 | 14 | | W0104 | 1 | 13 | | W0628 | 1 | 5 | Scenario: left shift-expression with negative constant rhs value derived by macro Given a target source named "fixture.c" with: """ #define VAL (-1) int foo(int i) { return i << VAL; /* W0649 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0570 | 5 | 14 | | C1000 | | | | C1006 | 3 | 13 | | W0572 | 5 | 14 | | W0649 | 5 | 14 | | W0794 | 5 | 14 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: right shift-expression with negative constant rhs value derived by macro Given a target source named "fixture.c" with: """ #define VAL (-1) int foo(int i) { return i >> VAL; /* W0649 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0571 | 5 | 14 | | W0572 | 5 | 14 | | W0649 | 5 | 14 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: left shift-expression with positive constant rhs value Given a target source named "fixture.c" with: """ int foo(int i) { return i << 1; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0570 | 3 | 14 | | C1000 | | | | C1006 | 1 | 13 | | W0572 | 3 | 14 | | W0794 | 3 | 14 | | W0104 | 1 | 13 | | W0628 | 1 | 5 | Scenario: right shift-expression with positive constant rhs value Given a target source named "fixture.c" with: """ int foo(int i) { return i >> 1; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0571 | 3 | 14 | | W0572 | 3 | 14 | | W0104 | 1 | 13 | | W0628 | 1 | 5 | Scenario: left shift-expression with zero constant rhs value Given a target source named "fixture.c" with: """ int foo(int i) { return i << 0; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0570 | 3 | 14 | | C1000 | | | | C1006 | 1 | 13 | | W0572 | 3 | 14 | | W0794 | 3 | 14 | | W0104 | 1 | 13 | | W0628 | 1 | 5 | Scenario: right shift-expression with zero constant rhs value Given a target source named "fixture.c" with: """ int foo(int i) { return i >> 0; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0571 | 3 | 14 | | W0572 | 3 | 14 | | W0104 | 1 | 13 | | W0628 | 1 | 5 | Scenario: left shift compound-assignment-expression with negative constant rhs value Given a target source named "fixture.c" with: """ void foo(int i) { i <<= -1; /* W0649 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0570 | 3 | 7 | | C1000 | | | | C1006 | 1 | 14 | | W0572 | 3 | 7 | | W0649 | 3 | 7 | | W0794 | 3 | 7 | | W0628 | 1 | 6 | Scenario: right shift compound-assignment-expression with negative constant rhs value Given a target source named "fixture.c" with: """ void foo(int i) { i >>= -1; /* W0649 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0571 | 3 | 7 | | W0572 | 3 | 7 | | W0649 | 3 | 7 | | W0628 | 1 | 6 | Scenario: left shift-expression with negative constant rhs value derived by enumerator Given a target source named "fixture.c" with: """ enum e { VAL = -2 }; int foo(int i) { return i << VAL; /* W0649 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0570 | 5 | 14 | | C1000 | | | | C1006 | 3 | 13 | | W0572 | 5 | 14 | | W0649 | 5 | 14 | | W0794 | 5 | 14 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: right shift-expression with negative constant rhs value derived by enumerator Given a target source named "fixture.c" with: """ enum e { VAL = -2 }; int foo(int i) { return i >> VAL; /* W0649 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0571 | 5 | 14 | | W0572 | 5 | 14 | | W0649 | 5 | 14 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: left shift-expression with positive constant rhs value derived by enumerator Given a target source named "fixture.c" with: """ enum e { VAL = 2 }; int foo(int i) { return i << VAL; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0570 | 5 | 14 | | C1000 | | | | C1006 | 3 | 13 | | W0572 | 5 | 14 | | W0794 | 5 | 14 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: right shift-expression with positive constant rhs value derived by enumerator Given a target source named "fixture.c" with: """ enum e { VAL = 2 }; int foo(int i) { return i >> VAL; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0571 | 5 | 14 | | W0572 | 5 | 14 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | adlint-3.2.14/features/code_check/W0071.feature0000644000004100000410000000242112340630463021064 0ustar www-datawww-dataFeature: W0071 W0071 detects that contents of a header included by #include "..." directive are not referred by other files in a translation-unit. Scenario: a typedef in the header and no reference to it Given a target source named "fixture.c" with: """ #include "test.h" /* W0071 */ int bar(void) { return 0; } """ And a target source named "test.h" with: """ #if !defined(TEST_H) #define TEST_H typedef int foo; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0071 | 1 | 1 | | W0628 | 3 | 5 | Scenario: a typedef in the header and reference to it in other file. Given a target source named "fixture.c" with: """ #include "test.h" /* OK */ foo bar(void) { return 0; } """ And a target source named "test.h" with: """ #if !defined(TEST_H) #define TEST_H typedef int foo; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0628 | 3 | 5 | adlint-3.2.14/features/code_check/W0635.feature0000644000004100000410000000301612340630463021073 0ustar www-datawww-dataFeature: W0635 W0635 detects that the argument type is not suitable for the corresponding conversion-specifier. Scenario: `%s' conversion-specifiers with various arguments Given a target source named "fixture.c" with: """ #include int main(void) { const char * const foo = "foo"; const unsigned char * const bar = "bar"; signed char *baz = "baz"; char * const qux = "qux"; return printf("%s %s %s %s", foo, bar, baz, qux); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W9003 | 7 | 24 | | W0100 | 7 | 18 | | W0947 | 5 | 30 | | W0947 | 6 | 39 | | W0947 | 7 | 24 | | W0947 | 8 | 24 | | W0947 | 10 | 19 | Scenario: `%s' conversion-specifiers with bad arguments Given a target source named "fixture.c" with: """ #include int main(void) { int foo = 0; const int bar = 0; const int * const baz = 0; return printf("%s %s %s", foo, bar, baz); /* W0635 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0635 | 9 | 19 | | W0635 | 9 | 19 | | W0635 | 9 | 19 | | W0100 | 5 | 9 | | W0947 | 9 | 19 | adlint-3.2.14/features/code_check/W0188.feature0000644000004100000410000000755212340630463021107 0ustar www-datawww-dataFeature: W0188 W0188 detects that `short' value is converted into `float' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { float b = a; /* W0188 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0188 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { float b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { float b; b = a; /* W0188 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0188 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { float b; b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(short a) { bar(a); /* W0188 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0188 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(short a) { bar((float) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ float foo(short a) { return a; /* W0188 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0188 | 3 | 12 | | W0324 | 3 | 5 | | W0104 | 1 | 17 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ float foo(short a) { return (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 17 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0159.feature0000644000004100000410000001057512340630463021104 0ustar www-datawww-dataFeature: W0159 W0159 detects that `signed char' value is converted into `unsigned int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned int b = a; /* W0159 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0159 | 3 | 22 | | W0100 | 3 | 18 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned int b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 22 | | C1000 | | | | C1006 | 1 | 22 | | W0100 | 3 | 18 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned int b; b = a; /* W0159 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0159 | 4 | 9 | | W0100 | 3 | 18 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned int b; b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 22 | | W0100 | 3 | 18 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(signed char a) { bar(a); /* W0159 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0159 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(signed char a) { bar((unsigned int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 22 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(signed char a) { return a; /* W0159 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0159 | 3 | 12 | | W0295 | 3 | 5 | | W0104 | 1 | 30 | | W0628 | 1 | 14 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(signed char a) { return (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 30 | | W0104 | 1 | 30 | | W0628 | 1 | 14 | adlint-3.2.14/features/code_check/W0194.feature0000644000004100000410000000753012340630463021100 0ustar www-datawww-dataFeature: W0194 W0194 detects that `int' value is converted into `float' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { float b = a; /* W0194 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0194 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { float b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { float b; b = a; /* W0194 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0194 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { float b; b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(int a) { bar(a); /* W0194 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0194 | 5 | 9 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(int a) { bar((float) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ float foo(int a) { return a; /* W0194 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0194 | 3 | 12 | | W0330 | 3 | 5 | | W0104 | 1 | 15 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ float foo(int a) { return (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 15 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0704.feature0000644000004100000410000000130412340630463021066 0ustar www-datawww-dataFeature: W0704 W0704 detects that an ordinary identifier is hiding other identifier. Scenario: hiding typedef name by enumerator name Given a target source named "fixture.c" with: """ typedef double DOUBLE; void foo(void) { enum arg_type { INT, DOUBLE } type; type = DOUBLE; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0704 | 5 | 26 | | C0001 | 1 | 16 | | W0789 | 5 | 26 | | C0001 | 1 | 16 | | W0100 | 5 | 35 | | W0628 | 3 | 6 | adlint-3.2.14/features/code_check/W0699.feature0000644000004100000410000000105412340630463021105 0ustar www-datawww-dataFeature: W0699 W0699 detects that`return;' statement is found at except void function. Scenario: return statement Given a target source named "fixture.c" with: """ extern func(void) { return; /* W0699 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0700 | 1 | 8 | | W0457 | 1 | 8 | | W0699 | 3 | 5 | | W0628 | 1 | 8 | adlint-3.2.14/features/code_check/W0755.feature0000644000004100000410000000750712340630463021107 0ustar www-datawww-dataFeature: W0755 W0755 detects that `long' value is converted into `int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { int b = a; /* W0755 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0755 | 3 | 13 | | W0100 | 3 | 9 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { int b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 9 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { int b; b = a; /* W0755 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0755 | 4 | 9 | | W0100 | 3 | 9 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { int b; b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 9 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(long a) { bar(a); /* W0755 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0755 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(long a) { bar((int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ int foo(long a) { return a; /* W0755 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0755 | 3 | 12 | | W0389 | 3 | 5 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ int foo(long a) { return (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0497.feature0000644000004100000410000000456312340630463021111 0ustar www-datawww-dataFeature: W0497 W0497 detects that multiple shift-expressions or relational-expressions or equality-expressions appear in an expression without appropriate grouping. Scenario: without grouping Given a target source named "fixture.c" with: """ static int foo(unsigned int a, unsigned int b) { return a << 1 < b << 2; /* W0497 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0116 | 3 | 14 | | C1000 | | | | C1006 | 1 | 29 | | W0116 | 3 | 23 | | C1000 | | | | C1006 | 1 | 45 | | W0104 | 1 | 29 | | W0104 | 1 | 45 | | W0629 | 1 | 12 | | W0497 | 3 | 12 | | W0502 | 3 | 12 | | W0628 | 1 | 12 | Scenario: with appropriate grouping Given a target source named "fixture.c" with: """ static int foo(unsigned int a, unsigned int b) { return (a << 1) < (b << 2); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0116 | 3 | 15 | | C1000 | | | | C1006 | 1 | 29 | | W0116 | 3 | 26 | | C1000 | | | | C1006 | 1 | 45 | | W0104 | 1 | 29 | | W0104 | 1 | 45 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: entirely grouped Given a target source named "fixture.c" with: """ static int foo(unsigned int a, unsigned int b) { return (a << 1 < b << 2); /* W0497 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0116 | 3 | 15 | | C1000 | | | | C1006 | 1 | 29 | | W0116 | 3 | 24 | | C1000 | | | | C1006 | 1 | 45 | | W0104 | 1 | 29 | | W0104 | 1 | 45 | | W0629 | 1 | 12 | | W0497 | 3 | 12 | | W0502 | 3 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0242.feature0000644000004100000410000001063612340630463021073 0ustar www-datawww-dataFeature: W0242 W0242 detects that `double' value is converted into `unsigned long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { unsigned long long b = a; /* W0242 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0242 | 3 | 28 | | W0100 | 3 | 24 | | W0104 | 1 | 17 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { unsigned long long b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 24 | | W0104 | 1 | 17 | | W0834 | 3 | 29 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { unsigned long long b; b = a; /* W0242 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0242 | 4 | 9 | | W0100 | 3 | 24 | | W0104 | 1 | 17 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { unsigned long long b; b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 24 | | W0104 | 1 | 17 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(double a) { bar(a); /* W0242 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0242 | 5 | 9 | | W0104 | 3 | 17 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(double a) { bar((unsigned long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 17 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(double a) { return a; /* W0242 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0242 | 3 | 12 | | W0378 | 3 | 5 | | W0104 | 1 | 31 | | W0834 | 1 | 1 | | W0628 | 1 | 20 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(double a) { return (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0104 | 1 | 31 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 20 | adlint-3.2.14/features/code_check/W0211.feature0000644000004100000410000001045712340630463021070 0ustar www-datawww-dataFeature: W0211 W0211 detects that `unsigned long long' value is converted into `long double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { long double b = a; /* W0211 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0211 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { long double b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { long double b; b = a; /* W0211 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0211 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { long double b; b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(unsigned long long a) { bar(a); /* W0211 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0211 | 5 | 9 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(unsigned long long a) { bar((long double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(unsigned long long a) { return a; /* W0211 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0211 | 3 | 12 | | W0347 | 3 | 5 | | W0104 | 1 | 36 | | W0834 | 1 | 17 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(unsigned long long a) { return (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0104 | 1 | 36 | | W0834 | 1 | 17 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0794.feature0000644000004100000410000000531012340630463021100 0ustar www-datawww-dataFeature: W0794 W0794 detects that a value of the signed integer variable is shifted to left. Scenario: left shifting a `signed int' value Given a target source named "fixture.c" with: """ int func(int i) { return i << 1; /* W0794 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0570 | 3 | 14 | | C1000 | | | | C1006 | 1 | 14 | | W0572 | 3 | 14 | | W0794 | 3 | 14 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | Scenario: right shifting a `signed int' value Given a target source named "fixture.c" with: """ int func(int i) { return i >> 1; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0571 | 3 | 14 | | W0572 | 3 | 14 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | Scenario: left shifting an `unsigned int' value Given a target source named "fixture.c" with: """ unsigned int func(unsigned int ui) { return ui << 1; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0116 | 3 | 15 | | C1000 | | | | C1006 | 1 | 32 | | W0104 | 1 | 32 | | W0628 | 1 | 14 | Scenario: left shifting a `signed int' constant Given a target source named "fixture.c" with: """ int func(void) { return 123 << 1; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0572 | 3 | 16 | | W0628 | 1 | 5 | Scenario: left shifting an `unsigned char' value which will be integer-promoted to `signed int' Given a target source named "fixture.c" with: """ int func(unsigned char uc) { return uc << 1; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0246 | 3 | 12 | | W0116 | 3 | 15 | | C1000 | | | | C1006 | 1 | 24 | | W0104 | 1 | 24 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0136.feature0000644000004100000410000001031312340630463021065 0ustar www-datawww-dataFeature: W0136 W0136 detects that `int' value is converted into `char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { char b = a; /* W0136 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0136 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { char b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 14 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { char b; b = a; /* W0136 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0136 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { char b; b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(int a) { bar(a); /* W0136 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0136 | 5 | 9 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(int a) { bar((char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 14 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ char foo(int a) { return a; /* W0136 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0136 | 3 | 12 | | W0272 | 3 | 5 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ char foo(int a) { return (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 14 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0715.feature0000644000004100000410000000702712340630463021100 0ustar www-datawww-dataFeature: W0715 W0715 detects that operands of both sides of inclusive-or-expression is `effectively boolean'. Scenario: relational expressions Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a > b) | (c > d); /* W0715 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0572 | 3 | 20 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0715 | 3 | 20 | | W0716 | 3 | 20 | | W0628 | 1 | 12 | Scenario: equality expressions Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a == b) | (c != d); /* W0715 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0572 | 3 | 21 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0715 | 3 | 21 | | W0716 | 3 | 21 | | W0628 | 1 | 12 | Scenario: logical expressions Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a && b) | (c || d); /* W0715 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0572 | 3 | 21 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0715 | 3 | 21 | | W0716 | 3 | 21 | | W0628 | 1 | 12 | Scenario: shift expressions Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a << b) | (c ^ d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0570 | 3 | 15 | | C1000 | | | | C1006 | 1 | 20 | | W0572 | 3 | 15 | | W0794 | 3 | 15 | | W0572 | 3 | 26 | | W0572 | 3 | 21 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: arithmetic expressions Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a + b) | (c - d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 15 | | W0723 | 3 | 25 | | W0572 | 3 | 20 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0695.feature0000644000004100000410000000432412340630463021104 0ustar www-datawww-dataFeature: W0695 W0695 detects that the function named `assert' is called because standard `assert' macro is undefined. Scenario: undefining `assert' macro and then declaring `assert' function Given a target source named "fixture.c" with: """ #undef assert /* W0695 */ extern void assert(int); """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0695 | 1 | 8 | | W0118 | 2 | 13 | Scenario: undefining `assert' macro in function and then declaring `assert' function Given a target source named "fixture.c" with: """ extern void foo(void) { #undef assert extern void assert(int); } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0695 | 3 | 8 | | W0117 | 1 | 13 | | W0118 | 4 | 17 | | W0622 | 4 | 17 | | W0624 | 3 | 1 | | W0628 | 1 | 13 | Scenario: calling `assert' macro Given a target source named "fixture.c" with: """ #include void foo(void) { assert("should not be reached" == ""); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0085 | 5 | 5 | | W0628 | 3 | 6 | Scenario: `assert' function declared but calling `assert' macro Given a target source named "fixture.c" with: """ extern void assert(int); #define assert(expr) ((void *) 0) /* to simulate #include */ void foo(void) { assert("should not be reached" == ""); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 3 | 1 | | W0118 | 1 | 13 | | W0117 | 5 | 6 | | W0567 | 7 | 5 | | W0085 | 7 | 5 | | W0628 | 5 | 6 | adlint-3.2.14/features/code_check/W0169.feature0000644000004100000410000001051112340630463021073 0ustar www-datawww-dataFeature: W0169 W0169 detects that `long' value is converted into `unsigned char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { unsigned char b = a; /* W0169 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0169 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { unsigned char b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 23 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { unsigned char b; b = a; /* W0169 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0169 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { unsigned char b; b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(long a) { bar(a); /* W0169 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0169 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(long a) { bar((unsigned char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 15 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(long a) { return a; /* W0169 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0169 | 3 | 12 | | W0305 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(long a) { return (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 24 | | W0104 | 1 | 24 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0216.feature0000644000004100000410000000773712340630463021104 0ustar www-datawww-dataFeature: W0216 W0216 detects that `float' value is converted into `unsigned short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { unsigned short b = a; /* W0216 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0216 | 3 | 24 | | W0100 | 3 | 20 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { unsigned short b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 20 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { unsigned short b; b = a; /* W0216 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0216 | 4 | 9 | | W0100 | 3 | 20 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { unsigned short b; b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 20 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(float a) { bar(a); /* W0216 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0216 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(float a) { bar((unsigned short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(float a) { return a; /* W0216 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0216 | 3 | 12 | | W0352 | 3 | 5 | | W0104 | 1 | 26 | | W0628 | 1 | 16 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(float a) { return (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0104 | 1 | 26 | | W0628 | 1 | 16 | adlint-3.2.14/features/code_check/W0165.feature0000644000004100000410000001050012340630463021065 0ustar www-datawww-dataFeature: W0165 W0165 detects that `int' value is converted into `unsigned char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { unsigned char b = a; /* W0165 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0165 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { unsigned char b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 23 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 19 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { unsigned char b; b = a; /* W0165 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0165 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { unsigned char b; b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 19 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(int a) { bar(a); /* W0165 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0165 | 5 | 9 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(int a) { bar((unsigned char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 14 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(int a) { return a; /* W0165 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0165 | 3 | 12 | | W0301 | 3 | 5 | | W0104 | 1 | 23 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(int a) { return (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 23 | | W0104 | 1 | 23 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0212.feature0000644000004100000410000000753512340630463021074 0ustar www-datawww-dataFeature: W0212 W0212 detects that `float' value is converted into `char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { char b = a; /* W0212 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0212 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { char b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { char b; b = a; /* W0212 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0212 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { char b; b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(float a) { bar(a); /* W0212 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0212 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(float a) { bar((char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ char foo(float a) { return a; /* W0212 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0212 | 3 | 12 | | W0348 | 3 | 5 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ char foo(float a) { return (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0122.feature0000644000004100000410000000772612340630463021076 0ustar www-datawww-dataFeature: W0122 W0122 detects that `char' value is converted into `unsigned short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { unsigned short b = a; /* W0122 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0122 | 3 | 24 | | W0100 | 3 | 20 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { unsigned short b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 20 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { unsigned short b; b = a; /* W0122 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0122 | 4 | 9 | | W0100 | 3 | 20 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { unsigned short b; b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 20 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(char a) { bar(a); /* W0122 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0122 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(char a) { bar((unsigned short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(char a) { return a; /* W0122 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0122 | 3 | 12 | | W0258 | 3 | 5 | | W0104 | 1 | 25 | | W0628 | 1 | 16 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(char a) { return (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0104 | 1 | 25 | | W0628 | 1 | 16 | adlint-3.2.14/features/code_check/W0759.feature0000644000004100000410000001113412340630463021102 0ustar www-datawww-dataFeature: W0759 W0759 detects that `long long' value is converted into `signed char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { signed char b = a; /* W0759 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0759 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { signed char b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 21 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 17 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { signed char b; b = a; /* W0759 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0759 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { signed char b; b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 17 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(long long a) { bar(a); /* W0759 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0759 | 5 | 9 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(long long a) { bar((signed char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 20 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(long long a) { return a; /* W0759 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0759 | 3 | 12 | | W0393 | 3 | 5 | | W0104 | 1 | 27 | | W0834 | 1 | 17 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(long long a) { return (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 27 | | W0104 | 1 | 27 | | W0834 | 1 | 17 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0175.feature0000644000004100000410000001140112340630463021067 0ustar www-datawww-dataFeature: W0175 W0175 detects that `int' value is converted into `unsigned long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { unsigned long long b = a; /* W0175 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0175 | 3 | 28 | | W0100 | 3 | 24 | | W0104 | 1 | 14 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { unsigned long long b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 28 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 24 | | W0104 | 1 | 14 | | W0834 | 3 | 29 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { unsigned long long b; b = a; /* W0175 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0175 | 4 | 9 | | W0100 | 3 | 24 | | W0104 | 1 | 14 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { unsigned long long b; b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 24 | | W0104 | 1 | 14 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(int a) { bar(a); /* W0175 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0175 | 5 | 9 | | W0104 | 3 | 14 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(int a) { bar((unsigned long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 14 | | W0104 | 3 | 14 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(int a) { return a; /* W0175 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0175 | 3 | 12 | | W0311 | 3 | 5 | | W0104 | 1 | 28 | | W0834 | 1 | 1 | | W0628 | 1 | 20 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(int a) { return (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 28 | | W0104 | 1 | 28 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 20 | adlint-3.2.14/features/code_check/W0646.feature0000644000004100000410000000741212340630463021101 0ustar www-datawww-dataFeature: W0646 W0646 detects that a string-literal of narrow characters and a string-literal of wide characters are neighboring. Scenario: a string-literal of narrow characters followed by one of wide characters Given a target source named "fixture.c" with: """ static const char *str = "foo" L"bar"; /* W0646 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0646 | 1 | 32 | | W0947 | 1 | 26 | Scenario: a string-literal of narrow characters followed by a compatible string-literal Given a target source named "fixture.c" with: """ static const char *str = "foo" "bar"; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0947 | 1 | 26 | Scenario: a string-literal of wide characters followed by one of narrow characters Given a target source named "fixture.c" with: """ static const char *str = L"foo" "bar"; /* W0646 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0646 | 1 | 33 | | W9003 | 1 | 26 | | W0626 | 1 | 26 | | W0947 | 1 | 26 | Scenario: a string-literal of wide characters followed by a compatible string-literal Given a target source named "fixture.c" with: """ static const char *str = L"foo" L"bar"; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W9003 | 1 | 26 | | W0626 | 1 | 26 | | W0947 | 1 | 26 | Scenario: a string-literal of narrow characters followed by one of wide characters those are replaced by macros Given a target source named "fixture.c" with: """ #define STR1 "foo" #define STR2 L"bar" static const char *str = STR1 STR2; /* W0646 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0646 | 4 | 31 | Scenario: a string-literal of narrow characters followed by a compatible string-literal those are replaced by macros Given a target source named "fixture.c" with: """ #define STR1 "foo" #define STR2 "bar" static const char *str = STR1 STR2; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | Scenario: a string-literal of wide characters followed by one of narrow characters those are replaced by macros Given a target source named "fixture.c" with: """ #define STR1 L"foo" #define STR2 "bar" static const char *str = STR1 STR2; /* W0646 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0646 | 4 | 31 | | W9003 | 4 | 26 | | W0626 | 4 | 26 | Scenario: a string-literal of wide characters followed by a compatible string-literal those are replaced by macros Given a target source named "fixture.c" with: """ #define STR1 L"foo" #define STR2 L"bar" static const char *str = STR1 STR2; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W9003 | 4 | 26 | | W0626 | 4 | 26 | adlint-3.2.14/features/code_check/W0157.feature0000644000004100000410000001061212340630463021072 0ustar www-datawww-dataFeature: W0157 W0157 detects that `signed char' value is converted into `unsigned char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned char b = a; /* W0157 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0157 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned char b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 23 | | C1000 | | | | C1006 | 1 | 22 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned char b; b = a; /* W0157 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0157 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned char b; b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 22 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(signed char a) { bar(a); /* W0157 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0157 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(signed char a) { bar((unsigned char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 22 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(signed char a) { return a; /* W0157 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0157 | 3 | 12 | | W0293 | 3 | 5 | | W0104 | 1 | 31 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(signed char a) { return (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 31 | | W0104 | 1 | 31 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0199.feature0000644000004100000410000000777112340630463021114 0ustar www-datawww-dataFeature: W0199 W0199 detects that `unsigned int' value is converted into `long double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { long double b = a; /* W0199 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0199 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { long double b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { long double b; b = a; /* W0199 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0199 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { long double b; b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(unsigned int a) { bar(a); /* W0199 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0199 | 5 | 9 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(unsigned int a) { bar((long double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(unsigned int a) { return a; /* W0199 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0199 | 3 | 12 | | W0335 | 3 | 5 | | W0104 | 1 | 30 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(unsigned int a) { return (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0104 | 1 | 30 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0610.feature0000644000004100000410000000511712340630463021070 0ustar www-datawww-dataFeature: W0610 W0610 detects that a logical expression makes always true. Scenario: comparison of static storage duration variable Given a target source named "fixture.c" with: """ struct { char *p; } foo = { NULL }; int *p = NULL; static void bar(void) { if (p != NULL) { /* OK */ return; } if (foo.p != NULL) { /* OK */ return; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 21 | | W0117 | 2 | 6 | | W0492 | 2 | 6 | | C0001 | 1 | 16 | | W1076 | 4 | 13 | | W1071 | 4 | 13 | | W0629 | 4 | 13 | | W0628 | 4 | 13 | | W0589 | 1 | 21 | | W0593 | 1 | 21 | | W0589 | 2 | 6 | | W0593 | 2 | 6 | Scenario: no explicit controlling-expression in for-statement Given a target source named "fixture.c" with: """ void foo(void) { int i; for (i = 0; ; i++) { if (i < 0) { /* W0610 */ i++; } if (i == 3) { /* OK not W0610 */ i++; } if (i == 5) { /* OK */ break; } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0610 | 5 | 15 | | W0613 | 5 | 15 | | W0708 | 9 | 14 | | W9001 | 6 | 13 | | W0114 | 4 | 5 | | W0628 | 1 | 6 | Scenario: no explicit controlling-expression in c99-for-statement Given a target source named "fixture.c" with: """ void foo(void) { for (int i = 0; ; i++) { if (i < 0) { /* W0610 */ i++; } if (i == 3) { /* OK not W0610 */ i++; } if (i == 5) { /* OK */ break; } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0610 | 4 | 15 | | W0613 | 4 | 15 | | W0708 | 8 | 14 | | W9001 | 5 | 13 | | W0114 | 3 | 5 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0240.feature0000644000004100000410000001062512340630463021067 0ustar www-datawww-dataFeature: W0240 W0240 detects that `float' value is converted into `unsigned long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { unsigned long long b = a; /* W0240 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0240 | 3 | 28 | | W0100 | 3 | 24 | | W0104 | 1 | 16 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { unsigned long long b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 24 | | W0104 | 1 | 16 | | W0834 | 3 | 29 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { unsigned long long b; b = a; /* W0240 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0240 | 4 | 9 | | W0100 | 3 | 24 | | W0104 | 1 | 16 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { unsigned long long b; b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 24 | | W0104 | 1 | 16 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(float a) { bar(a); /* W0240 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0240 | 5 | 9 | | W0104 | 3 | 16 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(float a) { bar((unsigned long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 16 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(float a) { return a; /* W0240 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0240 | 3 | 12 | | W0376 | 3 | 5 | | W0104 | 1 | 30 | | W0834 | 1 | 1 | | W0628 | 1 | 20 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(float a) { return (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0104 | 1 | 30 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 20 | adlint-3.2.14/features/code_check/W1073.feature0000644000004100000410000001756412340630463021105 0ustar www-datawww-dataFeature: W1073 W1073 detects that a return value of the function is discarded. Scenario: simply discarding a return value Given a target source named "fixture.c" with: """ extern int bar(void); static void foo(void) { bar(); /* W1073 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1076 | 2 | 13 | | W1073 | 4 | 8 | | W0629 | 2 | 13 | | W0628 | 2 | 13 | Scenario: calling `void' function Given a target source named "fixture.c" with: """ extern void bar(void); static void foo(void) { bar(); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W1076 | 2 | 13 | | W0629 | 2 | 13 | | W0628 | 2 | 13 | Scenario: discarding return value in comma separated expression Given a target source named "fixture.c" with: """ extern int bar(void); extern int baz(void); static void foo(void) { int i; i = (bar(), baz()); /* W1073 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0118 | 2 | 12 | | W1076 | 3 | 13 | | W0100 | 5 | 9 | | W1073 | 6 | 13 | | W0629 | 3 | 13 | | W0447 | 6 | 10 | | W0628 | 3 | 13 | Scenario: discarding return value in for-statement Given a target source named "fixture.c" with: """ extern int bar(void); static void foo(void) { int i; int j; for (i = 0, bar(); i < 10; i++) { /* W1073 */ j = bar(); /* OK */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1076 | 2 | 13 | | W1073 | 6 | 20 | | W0629 | 2 | 13 | | W0535 | 6 | 10 | | W0628 | 2 | 13 | Scenario: no assignment but not discarding the return value Given a target source named "fixture.c" with: """ extern int bar(void); static void foo(void) { if (bar() == 0) { /* OK */ return; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1076 | 2 | 13 | | W1071 | 2 | 13 | | W0629 | 2 | 13 | | W0628 | 2 | 13 | Scenario: propagating the return value Given a target source named "fixture.c" with: """ extern int bar(void); static int foo(void) { return bar(); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1076 | 2 | 12 | | W0629 | 2 | 12 | | W0628 | 2 | 12 | Scenario: propagating the return value in a conditional-expression Given a target source named "fixture.c" with: """ extern int bar(void); extern int baz(void); static int foo(void) { return bar() == 0 ? baz() : 0; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0118 | 2 | 12 | | W1076 | 3 | 12 | | W0629 | 3 | 12 | | W0501 | 5 | 23 | | W0010 | 5 | 23 | | W0086 | 5 | 23 | | W0628 | 3 | 12 | Scenario: standalone function-call-expression as the controlling expression of if-statement Given a target source named "fixture.c" with: """ static int bar(int *); static int foo(void) { int i = 0; if (bar(&i)) { /* OK */ return i; } return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W1071 | 3 | 12 | | W0629 | 3 | 12 | | W0114 | 6 | 5 | | W0628 | 3 | 12 | Scenario: standalone function-call-expression as the controlling expression of if-else-statement Given a target source named "fixture.c" with: """ static int bar(int *); static int foo(void) { int i = 0; if (bar(&i)) { /* OK */ return i; } else { return 0; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W1071 | 3 | 12 | | W0629 | 3 | 12 | | W0114 | 6 | 5 | | W0628 | 3 | 12 | Scenario: standalone function-call-expression as the controlling expression of while-statement Given a target source named "fixture.c" with: """ static int bar(int *); static int foo(void) { int i = 0; while (bar(&i)) { /* OK */ i++; } return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W0629 | 3 | 12 | | W0114 | 6 | 5 | | W0628 | 3 | 12 | Scenario: standalone function-call-expression as the controlling expression of do-statement Given a target source named "fixture.c" with: """ static int bar(int *); static int foo(void) { int i = 0; do { i++; } while (bar(&i)); /* OK */ return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W0629 | 3 | 12 | | W0114 | 6 | 5 | | W0628 | 3 | 12 | Scenario: standalone function-call-expression as the controlling expression of for-statement Given a target source named "fixture.c" with: """ static int bar(int *); static int foo(void) { int i, j = 0; for (i = 0; bar(&i); i++) { /* OK */ j++; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W0629 | 3 | 12 | | W0114 | 6 | 5 | | W0425 | 5 | 12 | | W0628 | 3 | 12 | Scenario: standalone function-call-expression as the controlling expression of c99-for-statement Given a target source named "fixture.c" with: """ static int bar(int *); static int foo(void) { int j = 0; for (int i = 0; bar(&i); i++) { /* OK */ j++; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W0629 | 3 | 12 | | W0114 | 6 | 5 | | W0628 | 3 | 12 | adlint-3.2.14/features/code_check/W0184.feature0000644000004100000410000001000212340630463021063 0ustar www-datawww-dataFeature: W0184 W0184 detects that `unsigned char' value is converted into `long double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { long double b = a; /* W0184 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0184 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { long double b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { long double b; b = a; /* W0184 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0184 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { long double b; b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(unsigned char a) { bar(a); /* W0184 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0184 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(unsigned char a) { bar((long double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(unsigned char a) { return a; /* W0184 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0184 | 3 | 12 | | W0320 | 3 | 5 | | W0104 | 1 | 31 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(unsigned char a) { return (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0104 | 1 | 31 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0807.feature0000644000004100000410000000203212340630463021071 0ustar www-datawww-dataFeature: W0807 W0807 detects that it undefined the macro defined as pre-defined. Scenario: undefine the macro defined as pre-defined Given a target source named "fixture.c" with: """ #undef __STDC_VERSION__ /* W0807 */ #undef __LINE__ /* W0807 */ #undef __FILE__ /* W0807 */ #undef __DATE__ /* W0807 */ #undef __TIME__ /* W0807 */ #undef __STDC__ /* W0807 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0807 | 1 | 8 | | W0807 | 2 | 8 | | W0807 | 3 | 8 | | W0807 | 4 | 8 | | W0807 | 5 | 8 | | W0807 | 6 | 8 | Scenario: undefine the macro defined by the user Given a target source named "fixture.c" with: """ #define LINE !LINE #undef LINE """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | adlint-3.2.14/features/code_check/W0220.feature0000644000004100000410000000772212340630463021071 0ustar www-datawww-dataFeature: W0220 W0220 detects that `float' value is converted into `unsigned long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { unsigned long b = a; /* W0220 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0220 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { unsigned long b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { unsigned long b; b = a; /* W0220 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0220 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { unsigned long b; b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(float a) { bar(a); /* W0220 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0220 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(float a) { bar((unsigned long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(float a) { return a; /* W0220 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0220 | 3 | 12 | | W0356 | 3 | 5 | | W0104 | 1 | 25 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(float a) { return (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0104 | 1 | 25 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0500.feature0000644000004100000410000000425212340630463021065 0ustar www-datawww-dataFeature: W0500 W0500 detects that `+', `-', `*' and `%' operators of the different priority appear in an expression without appropriate grouping. Scenario: additives and multiplicatives in an expression Given a target source named "fixture.c" with: """ static unsigned int foo(unsigned int a, unsigned int b, unsigned int c) { return a + b * c; /* W0500 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 21 | | W1052 | 3 | 18 | | W1052 | 3 | 14 | | W0104 | 1 | 38 | | W0104 | 1 | 54 | | W0104 | 1 | 70 | | W0629 | 1 | 21 | | W0500 | 3 | 12 | | W0628 | 1 | 21 | Scenario: additives and multiplicatives in an expression with grouping Given a target source named "fixture.c" with: """ static unsigned int foo(unsigned int a, unsigned int b, unsigned int c) { return a + (b * c); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 21 | | W1052 | 3 | 19 | | W1052 | 3 | 14 | | W0104 | 1 | 38 | | W0104 | 1 | 54 | | W0104 | 1 | 70 | | W0629 | 1 | 21 | | W0628 | 1 | 21 | Scenario: additives and multiplicatives in an expression with large grouping Given a target source named "fixture.c" with: """ static unsigned int foo(unsigned int a, unsigned int b, unsigned int c) { return (a + b * c); /* W0500 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 21 | | W1052 | 3 | 19 | | W1052 | 3 | 15 | | W0104 | 1 | 38 | | W0104 | 1 | 54 | | W0104 | 1 | 70 | | W0629 | 1 | 21 | | W0500 | 3 | 12 | | W0628 | 1 | 21 | adlint-3.2.14/features/code_check/W0019.feature0000644000004100000410000000431212340630463021067 0ustar www-datawww-dataFeature: W0019 W0019 detects that a pointer-cast deletes `const' qualifier. Scenario: casting const int pointer to int pointer Given a target source named "fixture.c" with: """ int foo(const int *p) { int *q; q = (int *) p; /* W0019 */ return -1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0019 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 20 | | W0628 | 1 | 5 | Scenario: casting const unsigned short pointer to short pointer Given a target source named "fixture.c" with: """ int foo(const unsigned short *p) { unsigned short *q; q = (short *) p; /* W0019 */ return -1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0019 | 4 | 9 | | W9003 | 4 | 9 | | W0100 | 3 | 21 | | W0104 | 1 | 31 | | W0628 | 1 | 5 | Scenario: assigning compatible const pointers Given a target source named "fixture.c" with: """ int foo(const int *p) { const int *q; q = p; /* OK */ return -1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0100 | 3 | 16 | | W0104 | 1 | 20 | | W0628 | 1 | 5 | Scenario: casting const int array pointer to int pointer Given a target source named "fixture.c" with: """ const int a[] = { 0, 1, 2 }; int foo(void) { const int *p = a; /* OK */ return -1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0117 | 3 | 5 | | W0100 | 5 | 16 | | W0628 | 3 | 5 | adlint-3.2.14/features/code_check/W0690.feature0000644000004100000410000000200212340630463021066 0ustar www-datawww-dataFeature: W0690 W0690 detects that no line number is in the #line directive. Scenario: an identifier as arguments Given a target source named "fixture.c" with: """ #line LINE1000 /* W0690 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0690 | 1 | 7 | Scenario: inverted arguments Given a target source named "fixture.c" with: """ #line __FILE__ 35 /* W0690 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0689 | 1 | 16 | | W0690 | 1 | 7 | Scenario: line number and macro replaceable filename Given a target source named "fixture.c" with: """ #line 35 __FILE__ 35 /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | adlint-3.2.14/features/code_check/W0833.feature0000644000004100000410000001521012340630463021072 0ustar www-datawww-dataFeature: W0833 W0833 detects that an integer-constant has a long-long-suffix `LL'. Scenario: LL-ed decimal-constant in initializer Given a target source named "fixture.c" with: """ long long ll = 123LL; /* W0833 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0833 | 1 | 16 | | W0117 | 1 | 11 | | W0834 | 1 | 1 | Scenario: LL-ed octal-constant in initializer Given a target source named "fixture.c" with: """ long long ll = 0123LL; /* W0833 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0833 | 1 | 16 | | W0117 | 1 | 11 | | W0529 | 1 | 16 | | W0834 | 1 | 1 | Scenario: LL-ed hexadecimal-constant in initializer Given a target source named "fixture.c" with: """ long long ll = 0x123LL; /* W0833 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0833 | 1 | 16 | | W0117 | 1 | 11 | | W0834 | 1 | 1 | Scenario: ULL-ed decimal-constant in initializer Given a target source named "fixture.c" with: """ unsigned long long ull = 123ULL; /* W0833 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0833 | 1 | 26 | | W0117 | 1 | 20 | | W0834 | 1 | 1 | Scenario: ULL-ed octal-constant in initializer Given a target source named "fixture.c" with: """ unsigned long long ull = 0123LLU; /* W0833 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0833 | 1 | 26 | | W0117 | 1 | 20 | | W0529 | 1 | 26 | | W0834 | 1 | 1 | Scenario: ULL-ed hexadecimal-constant in initializer Given a target source named "fixture.c" with: """ unsigned long long ull = 0x123LLU; /* W0833 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0833 | 1 | 26 | | W0117 | 1 | 20 | | W0834 | 1 | 1 | Scenario: LL-ed decimal-constant in assignment-expression Given a target source named "fixture.c" with: """ void foo(void) { long long ll; ll = 123LL; /* W0833 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0833 | 4 | 10 | | W0100 | 3 | 15 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: LL-ed octal-constant in assignment-expression Given a target source named "fixture.c" with: """ void foo(void) { long long ll; ll = 0123LL; /* W0833 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0833 | 4 | 10 | | W0100 | 3 | 15 | | W0834 | 3 | 5 | | W0529 | 4 | 10 | | W0628 | 1 | 6 | Scenario: LL-ed hexadecimal-constant in assignment-expression Given a target source named "fixture.c" with: """ void foo(void) { long long ll; ll = 0x123LL; /* W0833 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0833 | 4 | 10 | | W0100 | 3 | 15 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: ULL-ed decimal-constant in assignment-expression Given a target source named "fixture.c" with: """ void foo(void) { unsigned long long ull; ull = 123LLU; /* W0833 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0833 | 4 | 11 | | W0100 | 3 | 24 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: ULL-ed octal-constant in assignment-expression Given a target source named "fixture.c" with: """ void foo(void) { unsigned long long ull; ull = 0123ULL; /* W0833 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0833 | 4 | 11 | | W0100 | 3 | 24 | | W0834 | 3 | 5 | | W0529 | 4 | 11 | | W0628 | 1 | 6 | Scenario: ULL-ed hexadecimal-constant in assignment-expression Given a target source named "fixture.c" with: """ void foo(void) { unsigned long long ull; ull = 0x123LLU; /* W0833 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0833 | 4 | 11 | | W0100 | 3 | 24 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: L-ed decimal-constant in initializer Given a target source named "fixture.c" with: """ long l = 123L; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | Scenario: LL-ed octal-constant in initializer Given a target source named "fixture.c" with: """ long l = 0123L; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0529 | 1 | 10 | Scenario: LL-ed hexadecimal-constant in initializer Given a target source named "fixture.c" with: """ long l = 0x123L; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | adlint-3.2.14/features/code_check/W1077.feature0000644000004100000410000000666512340630463021111 0ustar www-datawww-dataFeature: W1077 W1077 detects that an array variable declared without number of its elements. Scenario: 1-dimensional array variable declaration without size Given a target source named "fixture.c" with: """ extern int a[]; /* W1077 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1077 | 1 | 12 | Scenario: 1-dimensional array variable declaration with size Given a target source named "fixture.c" with: """ extern int a[3]; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | Scenario: 2-dimensional array variable declaration without all sizes Given a target source named "fixture.c" with: """ extern int a[][]; /* W1077 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1028 | 1 | 12 | | W1077 | 1 | 12 | Scenario: 2-dimensional array variable declaration without outer size Given a target source named "fixture.c" with: """ extern int a[][3]; /* W1077 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1077 | 1 | 12 | Scenario: 2-dimensional array variable declaration with all sizes Given a target source named "fixture.c" with: """ extern int a[2][3]; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | Scenario: 3-dimensional array variable declaration without all sizes Given a target source named "fixture.c" with: """ extern int a[][][]; /* W1077 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1028 | 1 | 12 | | W1077 | 1 | 12 | Scenario: 3-dimensional array variable declaration with all sizes Given a target source named "fixture.c" with: """ extern int a[1][2][3]; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | Scenario: cv-qualified 3-dimensional array variable declaration without all sizes Given a target source named "fixture.c" with: """ extern const int a[][][]; /* W1077 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 18 | | W1028 | 1 | 18 | | W1077 | 1 | 18 | Scenario: cv-qualified 3-dimensional array variable declaration with all sizes Given a target source named "fixture.c" with: """ extern const int a[1][2][3]; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 18 | adlint-3.2.14/features/code_check/W1075.feature0000644000004100000410000000451512340630463021077 0ustar www-datawww-dataFeature: W1075 W1075 detects that a declaration has no `static' specifier while the anterior declaration is specified as `static'. Scenario: colliding global variable declarations Given a target source named "fixture.c" with: """ static int i; extern int i; /* W1075 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1031 | 2 | 12 | | W1075 | 2 | 12 | Scenario: `static' function declaration followed by its definition without storage-class-specifier Given a target source named "fixture.c" with: """ static int foo(void); int foo(void) /* W1075 */ { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1075 | 3 | 5 | | W0629 | 3 | 5 | | W0628 | 3 | 5 | Scenario: colliding function declarations with `static' and `extern' Given a target source named "fixture.c" with: """ static int foo(void); extern int foo(void) /* W1075 */ { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1031 | 3 | 12 | | W1075 | 3 | 12 | | W0629 | 3 | 12 | | W0628 | 3 | 12 | Scenario: all function declarations with `static' Given a target source named "fixture.c" with: """ static int foo(void); static int foo(void) /* OK */ { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0629 | 3 | 12 | | W0628 | 3 | 12 | Scenario: all function declarations with `extern' Given a target source named "fixture.c" with: """ extern int foo(void); extern int foo(void) /* OK */ { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0628 | 3 | 12 | adlint-3.2.14/features/code_check/W1041.feature0000644000004100000410000000066612340630463021073 0ustar www-datawww-dataFeature: W1041 W1041 detects that a non-standard preprocessing directive is found. Scenario: a compiler-specific preprocessing directive Given a target source named "fixture.c" with: """ #compiler_specific_extension 1 2.3 "4" /* W1041 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1041 | 1 | 1 | adlint-3.2.14/features/code_check/W0226.feature0000644000004100000410000000753112340630463021075 0ustar www-datawww-dataFeature: W0226 W0226 detects that `double' value is converted into `int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { int b = a; /* W0226 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0226 | 3 | 13 | | W0100 | 3 | 9 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { int b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 9 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { int b; b = a; /* W0226 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0226 | 4 | 9 | | W0100 | 3 | 9 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { int b; b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 9 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(double a) { bar(a); /* W0226 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0226 | 5 | 9 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(double a) { bar((int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ int foo(double a) { return a; /* W0226 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0226 | 3 | 12 | | W0362 | 3 | 5 | | W0104 | 1 | 16 | | W0628 | 1 | 5 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ int foo(double a) { return (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 16 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0477.feature0000644000004100000410000000424712340630463021106 0ustar www-datawww-dataFeature: W0477 W0477 detects that there is unpaired `[]',`()',`{}' in macro definition. Scenario: unpaired `[]' in macro Given a target source named "fixture.c" with: """ #define BEGIN [ /* W0477 */ #define END ] /* W0477 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0477 | 1 | 1 | | W0477 | 2 | 1 | | W0480 | 1 | 1 | | W0480 | 2 | 1 | Scenario: paired `[]' in macro Given a target source named "fixture.c" with: """ #define BEGIN [] /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | Scenario: unpaired `()' in macro Given a target source named "fixture.c" with: """ #define BEGIN ( /* W0477 */ #define END ) /* W0477 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0477 | 1 | 1 | | W0477 | 2 | 1 | | W0480 | 1 | 1 | | W0480 | 2 | 1 | Scenario: paired `()' in macro Given a target source named "fixture.c" with: """ #define BEGIN () /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | Scenario: unpaired `{}' in macro Given a target source named "fixture.c" with: """ #define BEGIN { /* W0477 */ #define END } /* W0477 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0477 | 1 | 1 | | W0477 | 2 | 1 | | W0480 | 1 | 1 | | W0480 | 2 | 1 | Scenario: paired `{}' in macro Given a target source named "fixture.c" with: """ #define BEGIN {} /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | adlint-3.2.14/features/code_check/W0768.feature0000644000004100000410000000764012340630463021111 0ustar www-datawww-dataFeature: W0768 W0768 detects that `long double' value is converted into `float' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { float b = a; /* W0768 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0768 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { float b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { float b; b = a; /* W0768 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0768 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { float b; b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(long double a) { bar(a); /* W0768 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0768 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(long double a) { bar((float) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ float foo(long double a) { return a; /* W0768 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0768 | 3 | 12 | | W0775 | 3 | 5 | | W0104 | 1 | 23 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ float foo(long double a) { return (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 23 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0801.feature0000644000004100000410000000442712340630463021075 0ustar www-datawww-dataFeature: W0801 W0801 detects that there is no named member in this struct or union. Scenario: no member exists in the struct Given a target source named "fixture.c" with: """ struct foo { /* W0801 */ }; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0801 | 1 | 8 | Scenario: no named member exists in the struct Given a target source named "fixture.c" with: """ struct bar { /* W0801 */ int; int :1; long; double; }; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0040 | 1 | 8 | | W0801 | 1 | 8 | Scenario: named member exists in the struct Given a target source named "fixture.c" with: """ struct baz { /* OK */ int i; long l; double d; }; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | Scenario: no member exists in the union Given a target source named "fixture.c" with: """ union foo { /* W0801 */ }; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0551 | 1 | 7 | | W0801 | 1 | 7 | Scenario: no named member exists in the union Given a target source named "fixture.c" with: """ union bar { /* W0801 */ int; int :1; long; }; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0040 | 1 | 7 | | W0551 | 1 | 7 | | W0801 | 1 | 7 | Scenario: named member exists in the union Given a target source named "fixture.c" with: """ union baz { /* OK */ int i; long l; }; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0551 | 1 | 7 | adlint-3.2.14/features/code_check/W0225.feature0000644000004100000410000000775012340630463021077 0ustar www-datawww-dataFeature: W0225 W0225 detects that `double' value is converted into `unsigned short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { unsigned short b = a; /* W0225 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0225 | 3 | 24 | | W0100 | 3 | 20 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { unsigned short b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 20 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { unsigned short b; b = a; /* W0225 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0225 | 4 | 9 | | W0100 | 3 | 20 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { unsigned short b; b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 20 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(double a) { bar(a); /* W0225 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0225 | 5 | 9 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(double a) { bar((unsigned short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(double a) { return a; /* W0225 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0225 | 3 | 12 | | W0361 | 3 | 5 | | W0104 | 1 | 27 | | W0628 | 1 | 16 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(double a) { return (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0104 | 1 | 27 | | W0628 | 1 | 16 | adlint-3.2.14/features/code_check/W1026.feature0000644000004100000410000000525512340630463021075 0ustar www-datawww-dataFeature: W1026 W1026 detects that type of an argument is incomplete. Scenario: incomplete struct type as an argument Given a target source named "fixture.c" with: """ extern struct st s; extern void foo(struct st); void bar(void) { foo(s); /* W1026 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 18 | | W0118 | 2 | 13 | | W0117 | 4 | 6 | | W0493 | 6 | 8 | | W1026 | 6 | 9 | | W0628 | 4 | 6 | Scenario: incomplete typedef-ed struct type as an argument Given a target source named "fixture.c" with: """ typedef struct st st_t; extern st_t s; extern void foo(st_t); void bar(void) { foo(s); /* W1026 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 3 | 13 | | W0625 | 1 | 19 | | W0118 | 4 | 13 | | W0117 | 6 | 6 | | W0493 | 8 | 8 | | W1026 | 8 | 9 | | W0628 | 6 | 6 | Scenario: complete struct type as an argument Given a target source named "fixture.c" with: """ typedef struct { int i; } st_t; extern st_t s; extern void foo(st_t); void bar(void) { foo(s); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 5 | 13 | | W0625 | 3 | 3 | | W0118 | 6 | 13 | | W0117 | 8 | 6 | | W0493 | 10 | 8 | | W0628 | 8 | 6 | Scenario: multiple incomplete typed arguments Given a target source named "fixture.c" with: """ typedef struct st st_t; typedef enum en en_t; extern st_t s; extern en_t e; extern void foo(st_t, int, en_t); void bar(void) { foo(s, 0, e); /* two W1026 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 4 | 13 | | W0625 | 1 | 19 | | W0118 | 5 | 13 | | W0625 | 2 | 17 | | W0737 | 5 | 13 | | W0118 | 6 | 13 | | W0117 | 8 | 6 | | W0493 | 10 | 8 | | W1026 | 10 | 9 | | W1026 | 10 | 15 | | W0628 | 8 | 6 | adlint-3.2.14/features/code_check/W0691.feature0000644000004100000410000000575712340630463021113 0ustar www-datawww-dataFeature: W0691 W0691 detects that `##' operator makes invalid preprocessing token. Scenario: resulting a decimal-constant `123456' Given a target source named "fixture.c" with: """ #define MACRO(a, b) a ## b double d = (double) MACRO(123, 456); /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0117 | 3 | 8 | Scenario: resulting a floating-constant `.123' Given a target source named "fixture.c" with: """ #define MACRO(a, b) a ## b double d = (double) MACRO(., 123); /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0117 | 3 | 8 | Scenario: resulting a floating-constant `3.1415'. Given a target source named "fixture.c" with: """ #define MACRO(a, b) a ## b double d = (double) MACRO(3., 1415); /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0117 | 3 | 8 | Scenario: resulting a floating-constant `1.23e3' Given a target source named "fixture.c" with: """ #define MACRO(a, b) a ## b double d = (double) MACRO(1.23, e3); /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0117 | 3 | 8 | Scenario: resulting an expression `-123' Given a target source named "fixture.c" with: """ #define MACRO(a, b) a ## b double d = (double) MACRO(-, 123); /* W0691 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0691 | 3 | 21 | | W0117 | 3 | 8 | Scenario: resulting an expression `1 / 23' Given a target source named "fixture.c" with: """ #define MACRO(a, b) a ## b double d = (double) MACRO(1/, 23); /* W0691 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0691 | 3 | 21 | | W0195 | 3 | 21 | | W0117 | 3 | 8 | Scenario: resulting an expression `1.2 * 3.4' Given a target source named "fixture.c" with: """ #define MACRO(a, b) a ## b double d = (double) MACRO(1.2*, 3.4); /* W0691 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0691 | 3 | 21 | | W0117 | 3 | 8 | adlint-3.2.14/features/code_check/W0499.feature0000644000004100000410000000443412340630463021110 0ustar www-datawww-dataFeature: W0499 W0499 detects that different operators of the same priority except for `+', `-', `*', `/' and `%' appear in an expression without appropriate grouping. Scenario: multiple shift-expressions in an expression Given a target source named "fixture.c" with: """ static unsigned int foo(unsigned int a, unsigned int b, unsigned int c) { return a << b >> c; /* W0499 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 21 | | W0116 | 3 | 14 | | C1000 | | | | C1006 | 1 | 38 | | W0104 | 1 | 38 | | W0104 | 1 | 54 | | W0104 | 1 | 70 | | W0629 | 1 | 21 | | W0499 | 3 | 12 | | W0628 | 1 | 21 | Scenario: multiple shift-expressions in an expression with grouping Given a target source named "fixture.c" with: """ static unsigned int foo(unsigned int a, unsigned int b, unsigned int c) { return (a << b) >> c; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 21 | | W0116 | 3 | 15 | | C1000 | | | | C1006 | 1 | 38 | | W0104 | 1 | 38 | | W0104 | 1 | 54 | | W0104 | 1 | 70 | | W0629 | 1 | 21 | | W0628 | 1 | 21 | Scenario: multiple shift-expressions in an expression with large grouping Given a target source named "fixture.c" with: """ static unsigned int foo(unsigned int a, unsigned int b, unsigned int c) { return (a << b >> c); /* W0499 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 21 | | W0116 | 3 | 15 | | C1000 | | | | C1006 | 1 | 38 | | W0104 | 1 | 38 | | W0104 | 1 | 54 | | W0104 | 1 | 70 | | W0629 | 1 | 21 | | W0499 | 3 | 12 | | W0628 | 1 | 21 | adlint-3.2.14/features/code_check/W0685.feature0000644000004100000410000000700112340630463021076 0ustar www-datawww-dataFeature: W0685 W0685 detects that the order of the character which including `-' is not correct in the scanset. Scenario: bigger lower-case character to smaller one Given a target source named "fixture.c" with: """ #include void foo(void) { char c; int i = scanf("%[z-a]", &c); /* W0685 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0459 | 6 | 29 | | C1000 | | | | C1003 | 5 | 10 | | W0573 | 6 | 19 | | W0685 | 6 | 19 | | W0100 | 5 | 10 | | W0100 | 6 | 9 | | W0947 | 6 | 19 | | W0628 | 3 | 6 | Scenario: bigger number to smaller one Given a target source named "fixture.c" with: """ #include void foo(void) { char c; int i = scanf("%[9-1]", &c); /* W0685 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0459 | 6 | 29 | | C1000 | | | | C1003 | 5 | 10 | | W0573 | 6 | 19 | | W0685 | 6 | 19 | | W0100 | 5 | 10 | | W0100 | 6 | 9 | | W0947 | 6 | 19 | | W0628 | 3 | 6 | Scenario: lower-case character to number Given a target source named "fixture.c" with: """ #include void foo(void) { char c; int i = scanf("%[a-0]", &c); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0459 | 6 | 29 | | C1000 | | | | C1003 | 5 | 10 | | W0573 | 6 | 19 | | W0685 | 6 | 19 | | W0100 | 5 | 10 | | W0100 | 6 | 9 | | W0947 | 6 | 19 | | W0628 | 3 | 6 | Scenario: lower-case character to uppercase one Given a target source named "fixture.c" with: """ #include void foo(void) { char c; int i = scanf("%[a-A]", &c); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0459 | 6 | 29 | | C1000 | | | | C1003 | 5 | 10 | | W0573 | 6 | 19 | | W0685 | 6 | 19 | | W0100 | 5 | 10 | | W0100 | 6 | 9 | | W0947 | 6 | 19 | | W0628 | 3 | 6 | Scenario: proper older Given a target source named "fixture.c" with: """ #include void foo(void) { char c; int i = scanf("%[a-z]", &c); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0459 | 6 | 29 | | C1000 | | | | C1003 | 5 | 10 | | W0573 | 6 | 19 | | W0100 | 5 | 10 | | W0100 | 6 | 9 | | W0947 | 6 | 19 | | W0628 | 3 | 6 | adlint-3.2.14/features/code_check/W0168.feature0000644000004100000410000001050012340630463021070 0ustar www-datawww-dataFeature: W0168 W0168 detects that `int' value is converted into `unsigned long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { unsigned long b = a; /* W0168 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0168 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { unsigned long b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 23 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 19 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { unsigned long b; b = a; /* W0168 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0168 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { unsigned long b; b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 19 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(int a) { bar(a); /* W0168 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0168 | 5 | 9 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(int a) { bar((unsigned long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 14 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(int a) { return a; /* W0168 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0168 | 3 | 12 | | W0304 | 3 | 5 | | W0104 | 1 | 23 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(int a) { return (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 23 | | W0104 | 1 | 23 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0223.feature0000644000004100000410000000773312340630463021076 0ustar www-datawww-dataFeature: W0223 W0223 detects that `double' value is converted into `unsigned char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { unsigned char b = a; /* W0223 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0223 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { unsigned char b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { unsigned char b; b = a; /* W0223 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0223 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { unsigned char b; b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(double a) { bar(a); /* W0223 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0223 | 5 | 9 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(double a) { bar((unsigned char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(double a) { return a; /* W0223 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0223 | 3 | 12 | | W0359 | 3 | 5 | | W0104 | 1 | 26 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(double a) { return (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0104 | 1 | 26 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0252.feature0000644000004100000410000001056112340630463021071 0ustar www-datawww-dataFeature: W0252 W0252 detects that `unsigned short' value is converted into `long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { long long b = a; /* W0252 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0252 | 3 | 19 | | W0100 | 3 | 15 | | W0104 | 1 | 25 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { long long b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 25 | | W0834 | 3 | 20 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { long long b; b = a; /* W0252 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0252 | 4 | 9 | | W0100 | 3 | 15 | | W0104 | 1 | 25 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { long long b; b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 25 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(unsigned short a) { bar(a); /* W0252 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0252 | 5 | 9 | | W0104 | 3 | 25 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(unsigned short a) { bar((long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 25 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(unsigned short a) { return a; /* W0252 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0252 | 3 | 12 | | W0408 | 3 | 5 | | W0104 | 1 | 30 | | W0834 | 1 | 1 | | W0628 | 1 | 11 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(unsigned short a) { return (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0104 | 1 | 30 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 11 | adlint-3.2.14/features/code_check/W0542.feature0000644000004100000410000000120512340630463021066 0ustar www-datawww-dataFeature: W0542 W0542 detects that some of parameters have an identifier. Scenario: hard to parse Given a target source named "fixture.c" with: """ typedef unsigned int VALUE; typedef void *ANYARGS; VALUE foo(VALUE(*p1)(VALUE),VALUE,VALUE(*p2)(ANYARGS),VALUE); /* W0542 */ VALUE bar(VALUE(*)(VALUE),VALUE,VALUE(*)(ANYARGS),VALUE); """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 4 | 7 | | W0625 | 1 | 22 | | W0118 | 5 | 7 | | W0542 | 4 | 7 | adlint-3.2.14/features/code_check/W0703.feature0000644000004100000410000000374612340630463021101 0ustar www-datawww-dataFeature: W0703 W0703 detects that a tag name is hiding other tag names. Scenario: tag hiding declaration in function-definition Given a target source named "fixture.c" with: """ struct Foo { int i; }; int main(void) { union Foo { /* W0703 */ int i; int j; } foo = { 0 }; return foo.i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0703 | 7 | 11 | | C0001 | 1 | 8 | | W0785 | 7 | 11 | | W0552 | 10 | 7 | | W0100 | 10 | 7 | | W0551 | 7 | 11 | Scenario: tag hiding declaration in the global scope Given a target source named "fixture.c" with: """ struct Foo { int i; }; static union Foo { /* W0703 */ int i; int j; } foo = { 0 }; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0703 | 5 | 14 | | C0001 | 1 | 8 | | W0785 | 5 | 14 | | W0552 | 8 | 3 | | W0551 | 5 | 14 | Scenario: enum declaration in global and function scope Given a target source named "fixture.c" with: """ enum E { FOO, BAR }; int main(void) { enum E { BAR, BAZ } e = FOO; /* W0703 */ return e; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0703 | 5 | 10 | | C0001 | 1 | 6 | | W0704 | 5 | 14 | | C0001 | 1 | 15 | | W0785 | 5 | 10 | | W0789 | 5 | 14 | | C0001 | 1 | 15 | | W9003 | 6 | 12 | | W1060 | 6 | 12 | | W0100 | 5 | 25 | adlint-3.2.14/features/code_check/W1059.feature0000644000004100000410000000461012340630463021075 0ustar www-datawww-dataFeature: W1059 W1059 detects that a value of enum typed expression is passed to a non-enum typed parameter. Scenario: passing a value of the enum typed constant expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; extern void foo(int); static void bar(void) { foo(RED + 1); /* W1059 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 3 | 13 | | W1076 | 5 | 13 | | W9003 | 7 | 15 | | W9003 | 7 | 13 | | W1059 | 7 | 13 | | W0629 | 5 | 13 | | W0628 | 5 | 13 | Scenario: passing a value of the enum typed non-constant expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; extern void foo(int); static void bar(const enum Color c) { foo(c); /* W1059 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 3 | 13 | | W1076 | 5 | 13 | | W9003 | 7 | 9 | | W1059 | 7 | 9 | | W0629 | 5 | 13 | | W0628 | 5 | 13 | Scenario: passing a value of consistently typed constant expression Given a target source named "fixture.c" with: """ extern void foo(int); static void bar(void) { foo(1 + 1); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W1076 | 3 | 13 | | W0629 | 3 | 13 | | W0628 | 3 | 13 | Scenario: passing a value of inconsistently typed constant expression Given a target source named "fixture.c" with: """ extern void foo(int); static void bar(void) { foo(1.0 * .1); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W1076 | 3 | 13 | | W0226 | 5 | 13 | | W0629 | 3 | 13 | | W0628 | 3 | 13 | adlint-3.2.14/features/code_check/W0834.feature0000644000004100000410000001364612340630463021106 0ustar www-datawww-dataFeature: W0834 W0834 detects that a `long long' type of the ISO C99 standard is used. Scenario: `long long' global variable declaration Given a target source named "fixture.c" with: """ extern long long ll; /* W0834 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 18 | | W0834 | 1 | 8 | Scenario: `long long' global variable definition Given a target source named "fixture.c" with: """ static long long ll; /* W0834 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0834 | 1 | 8 | Scenario: `long long' parameter in function declaration Given a target source named "fixture.c" with: """ extern void foo(long long ll); /* W0834 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0834 | 1 | 17 | Scenario: `long long' parameter in function definition Given a target source named "fixture.c" with: """ static void foo(long long ll) /* W0834 */ { } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0031 | 1 | 27 | | W0104 | 1 | 27 | | W0629 | 1 | 13 | | W0834 | 1 | 17 | | W0628 | 1 | 13 | Scenario: `long long' function local variable definition Given a target source named "fixture.c" with: """ static void foo(void) { long long ll = 0; /* W0834 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0100 | 3 | 15 | | W0629 | 1 | 13 | | W0834 | 3 | 5 | | W0628 | 1 | 13 | Scenario: `long long' as return type in function declaration Given a target source named "fixture.c" with: """ extern long long foo(void); /* W0834 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 18 | | W0834 | 1 | 8 | Scenario: `long long' as return type in function definition Given a target source named "fixture.c" with: """ static long long foo(void) /* W0834 */ { return 0LL; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 18 | | W0833 | 3 | 12 | | W0629 | 1 | 18 | | W0834 | 1 | 8 | | W0628 | 1 | 18 | Scenario: `long long' in cast-expression Given a target source named "fixture.c" with: """ static long long foo(void) /* W0834 */ { return (long long) 0; /* W0834 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 18 | | W0629 | 1 | 18 | | W0834 | 1 | 8 | | W0834 | 3 | 13 | | W0628 | 1 | 18 | Scenario: `long long' in sizeof-expression Given a target source named "fixture.c" with: """ #include static size_t foo(void) { return sizeof(long long); /* W0834 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 15 | | W0629 | 3 | 15 | | W0834 | 5 | 19 | | W0628 | 3 | 15 | Scenario: multiple `long long' parameters in function declaration Given a target source named "fixture.c" with: """ extern void foo(long long a, int b, long long b); /* W0834 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0834 | 1 | 17 | | W0834 | 1 | 37 | Scenario: nested function-declarators with `long long' Given a target source named "fixture.c" with: """ extern void (*p)(long long, int (*)(long long), unsigned long long); /* W0834 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 15 | | W0834 | 1 | 18 | | W0834 | 1 | 37 | | W0834 | 1 | 49 | Scenario: `long long' member in struct and union type. Given a target source named "fixture.c" with: """ struct Foo { int i; long long ll; /* W0834 */ union { int i; long long ll; /* W0834 */ } u; } foo; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 8 | 3 | | W0834 | 3 | 5 | | W0834 | 6 | 9 | | W0551 | 4 | 5 | Scenario: nested function-declarators with `long long' in typedef declaration Given a target source named "fixture.c" with: """ typedef void (*p)(long long, int (*)(long long), signed long long); /* W0834 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0834 | 1 | 19 | | W0834 | 1 | 38 | | W0834 | 1 | 50 | adlint-3.2.14/features/code_check/W1062.feature0000644000004100000410000001042312340630463021066 0ustar www-datawww-dataFeature: W1062 W1062 detects that a value of the inconsistently typed non-constant expression is assigned to an enum typed variable. Scenario: non-constant `int' typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; static enum Color foo(const int i) { enum Color c; c = i + 1; /* W1062 */ return c; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 4 | 19 | | W0723 | 8 | 11 | | W0727 | 8 | 11 | | W9003 | 8 | 11 | | W1054 | 8 | 7 | | W1062 | 8 | 7 | | W0100 | 6 | 16 | | W0629 | 4 | 19 | | W0628 | 4 | 19 | Scenario: non-constant consistent enum typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; extern enum Color color(void); static enum Color foo(void) { enum Color c; c = color(); /* OK */ return c; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 4 | 19 | | W1076 | 6 | 19 | | W0100 | 8 | 16 | | W0629 | 6 | 19 | | W0628 | 6 | 19 | Scenario: non-constant inconsistent enum typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; extern enum Fruit fruit(void); static enum Color foo(void) { enum Color c; c = fruit(); /* W1062 */ return c; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 4 | 19 | | W1076 | 6 | 19 | | W0727 | 10 | 14 | | W9003 | 10 | 14 | | W1057 | 10 | 7 | | W1062 | 10 | 7 | | W0100 | 8 | 16 | | W0629 | 6 | 19 | | W0628 | 6 | 19 | Scenario: constant consistent `int' typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; static enum Color foo(void) { enum Color c; c = 2; /* OK but W1054 */ return c; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 19 | | W9003 | 7 | 9 | | W1054 | 7 | 7 | | W0100 | 5 | 16 | | W0629 | 3 | 19 | | W0628 | 3 | 19 | Scenario: constant consistent enum typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; static enum Color foo(void) { enum Color c; c = RED + 1; /* OK */ return c; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 19 | | W9003 | 7 | 15 | | W0100 | 5 | 16 | | W0629 | 3 | 19 | | W0628 | 3 | 19 | Scenario: constant inconsistent enum typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; static enum Color foo(void) { enum Color c; c = ORANGE + 1; /* OK but W0729 */ return c; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 4 | 19 | | W9003 | 8 | 18 | | W0727 | 8 | 16 | | W9003 | 8 | 16 | | W0729 | 8 | 7 | | W0100 | 6 | 16 | | W0629 | 4 | 19 | | W0628 | 4 | 19 | adlint-3.2.14/features/code_check/W0748.feature0000644000004100000410000001004512340630463021100 0ustar www-datawww-dataFeature: W0748 W0748 detects that `unsigned short' value is converted into `unsigned char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { unsigned char b = a; /* W0748 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0748 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { unsigned char b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { unsigned char b; b = a; /* W0748 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0748 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { unsigned char b; b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(unsigned short a) { bar(a); /* W0748 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0748 | 5 | 9 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(unsigned short a) { bar((unsigned char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(unsigned short a) { return a; /* W0748 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0748 | 3 | 12 | | W0382 | 3 | 5 | | W0104 | 1 | 34 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(unsigned short a) { return (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0104 | 1 | 34 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0139.feature0000644000004100000410000000764512340630463021106 0ustar www-datawww-dataFeature: W0139 W0139 detects that `unsigned long' value is converted into `char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { char b = a; /* W0139 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0139 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { char b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { char b; b = a; /* W0139 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0139 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { char b; b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(unsigned long a) { bar(a); /* W0139 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0139 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(unsigned long a) { bar((char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ char foo(unsigned long a) { return a; /* W0139 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0139 | 3 | 12 | | W0275 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ char foo(unsigned long a) { return (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0765.feature0000644000004100000410000001047412340630463021105 0ustar www-datawww-dataFeature: W0765 W0765 detects that `unsigned long long' value is converted into `unsigned int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned int b = a; /* W0765 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0765 | 3 | 22 | | W0100 | 3 | 18 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned int b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 18 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned int b; b = a; /* W0765 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0765 | 4 | 9 | | W0100 | 3 | 18 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned int b; b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 18 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(unsigned long long a) { bar(a); /* W0765 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0765 | 5 | 9 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(unsigned long long a) { bar((unsigned int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(unsigned long long a) { return a; /* W0765 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0765 | 3 | 12 | | W0399 | 3 | 5 | | W0104 | 1 | 37 | | W0834 | 1 | 18 | | W0628 | 1 | 14 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(unsigned long long a) { return (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0104 | 1 | 37 | | W0834 | 1 | 18 | | W0628 | 1 | 14 | adlint-3.2.14/features/code_check/W0611.feature0000644000004100000410000000746312340630463021077 0ustar www-datawww-dataFeature: W0611 W0611 detects that a controlling expression of the iteration-statement always be true. Scenario: controlling variable of for-statement is not updated Given a target source named "fixture.c" with: """ static int foo(void) { int i = 0, j = 0; for (; i < 10; ) { /* W0611 */ j++; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0534 | 4 | 10 | | W0609 | 4 | 14 | | W0708 | 5 | 10 | | W0611 | 4 | 14 | | W0100 | 3 | 9 | | W0629 | 1 | 12 | | W0425 | 3 | 16 | | W0628 | 1 | 12 | Scenario: controlling variable of for-statement is updated Given a target source named "fixture.c" with: """ static int foo(void) { int i = 0, j = 0; for (; i < 10; i++) { /* OK */ j++; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0534 | 4 | 10 | | W0629 | 1 | 12 | | W0425 | 3 | 16 | | W0628 | 1 | 12 | Scenario: controlling variable of while-statement is not updated Given a target source named "fixture.c" with: """ static int foo(void) { int i = 0, j = 0; while (i < 10) { /* W0611 */ j++; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0609 | 4 | 14 | | W0611 | 4 | 14 | | W0100 | 3 | 9 | | W0629 | 1 | 12 | | W0425 | 3 | 16 | | W0628 | 1 | 12 | Scenario: controlling variable of while-statement is updated Given a target source named "fixture.c" with: """ static int foo(void) { int i = 0, j = 0; while (i < 10) { /* OK */ i++; j++; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0629 | 1 | 12 | | W0425 | 3 | 16 | | W0628 | 1 | 12 | Scenario: controlling variable of do-statement is not updated Given a target source named "fixture.c" with: """ static int foo(void) { int i = 0, j = 0; do { j++; } while (i < 10); /* W0611 */ return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0609 | 6 | 16 | | W0611 | 6 | 16 | | W0100 | 3 | 9 | | W0629 | 1 | 12 | | W0425 | 3 | 16 | | W0628 | 1 | 12 | Scenario: controlling variable of do-statement is updated Given a target source named "fixture.c" with: """ static int foo(void) { int i = 0, j = 0; do { i++; j++; } while (i < 10); /* OK */ return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0629 | 1 | 12 | | W0425 | 3 | 16 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0191.feature0000644000004100000410000000767312340630463021105 0ustar www-datawww-dataFeature: W0191 W0191 detects that `unsigned short' value is converted into `float' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { float b = a; /* W0191 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0191 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { float b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { float b; b = a; /* W0191 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0191 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { float b; b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(unsigned short a) { bar(a); /* W0191 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0191 | 5 | 9 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(unsigned short a) { bar((float) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ float foo(unsigned short a) { return a; /* W0191 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0191 | 3 | 12 | | W0327 | 3 | 5 | | W0104 | 1 | 26 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ float foo(unsigned short a) { return (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 26 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0018.feature0000644000004100000410000001326112340630463021071 0ustar www-datawww-dataFeature: W0018 W0018 detects that precision of the conversion-specifier in `*printf' function call is greater than 509. Scenario: precision of `%f' conversion-specifier in `printf' function call is greater than 509 Given a target source named "fixture.c" with: """ #include int foo(double d) { return printf("%.512f", d); /* W0018 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0018 | 5 | 19 | | W0104 | 3 | 16 | | W0947 | 5 | 19 | | W0628 | 3 | 5 | Scenario: precision of `%f' conversion-specifier in `printf' function call is equal to 510 Given a target source named "fixture.c" with: """ #include int foo(double d) { return printf("%.510f", d); /* W0018 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0018 | 5 | 19 | | W0104 | 3 | 16 | | W0947 | 5 | 19 | | W0628 | 3 | 5 | Scenario: precision of `%f' conversion-specifier in `printf' function call is equal to 509 Given a target source named "fixture.c" with: """ #include int foo(double d) { return printf("%.509f", d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 16 | | W0947 | 5 | 19 | | W0628 | 3 | 5 | Scenario: precision of `%f' conversion-specifier in `printf' function call is less than 509 Given a target source named "fixture.c" with: """ #include int foo(double d) { return printf("%.500f", d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 16 | | W0947 | 5 | 19 | | W0628 | 3 | 5 | Scenario: no precision of `%f' conversion-specifier in `printf' function call Given a target source named "fixture.c" with: """ #include int foo(double d) { return printf("%f", d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 16 | | W0947 | 5 | 19 | | W0628 | 3 | 5 | Scenario: precision of `%f' conversion-specifier in `fprintf' function call is greater than 509 Given a target source named "fixture.c" with: """ #include int foo(double d) { return fprintf(stdout, "%.512f", d); /* W0018 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0018 | 5 | 28 | | W0104 | 3 | 16 | | W0947 | 5 | 28 | | W0628 | 3 | 5 | Scenario: precision of `%f' conversion-specifier in `fprintf' function call is equal to 510 Given a target source named "fixture.c" with: """ #include int foo(double d) { return fprintf(stdout, "%.510f", d); /* W0018 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0018 | 5 | 28 | | W0104 | 3 | 16 | | W0947 | 5 | 28 | | W0628 | 3 | 5 | Scenario: precision of `%f' conversion-specifier in `fprintf' function call is equal to 509 Given a target source named "fixture.c" with: """ #include int foo(double d) { return fprintf(stdout, "%.509f", d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 16 | | W0947 | 5 | 28 | | W0628 | 3 | 5 | Scenario: precision of `%f' conversion-specifier in `fprintf' function call is less than 509 Given a target source named "fixture.c" with: """ #include int foo(double d) { return fprintf(stdout, "%.500f", d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 16 | | W0947 | 5 | 28 | | W0628 | 3 | 5 | Scenario: no precision of `%f' conversion-specifier in `fprintf' function call Given a target source named "fixture.c" with: """ #include int foo(double d) { return fprintf(stdout, "%f", d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 16 | | W0947 | 5 | 28 | | W0628 | 3 | 5 | adlint-3.2.14/features/code_check/W1039.feature0000644000004100000410000001726012340630463021100 0ustar www-datawww-dataFeature: W1039 W1039 detects that an `ll' length-modifier is found in *printf or *scanf function call. Scenario: an `ll' in printf function call Given a target source named "fixture.c" with: """ #include void foo(long long ll) { printf("%lld", ll); /* W1039 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W1039 | 5 | 12 | | W0104 | 3 | 20 | | W1073 | 5 | 11 | | W0834 | 3 | 10 | | W0947 | 5 | 12 | | W0628 | 3 | 6 | Scenario: an `ll' in scanf function call Given a target source named "fixture.c" with: """ #include void foo(void) { long long ll = 0; scanf("%lld", &ll); /* W1039 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W1039 | 6 | 11 | | W1073 | 6 | 10 | | W0834 | 5 | 5 | | W0947 | 6 | 11 | | W0628 | 3 | 6 | Scenario: an `ll' with one of conversion-specifiers in printf function call Given a target source named "fixture.c" with: """ #include void foo(int i, long long ll, unsigned long ul) { printf("%d %lld %lu", i, ll, ul); /* W1039 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W1039 | 5 | 12 | | W0104 | 3 | 14 | | W0104 | 3 | 27 | | W0104 | 3 | 45 | | W1073 | 5 | 11 | | W0834 | 3 | 17 | | W0947 | 5 | 12 | | W0628 | 3 | 6 | Scenario: an `ll' with one of conversion-specifiers in scanf function call Given a target source named "fixture.c" with: """ #include void foo(void) { int i = 0; long long ll = 0; unsigned long ul = 0U; scanf("%d %lld %lu", &i, &ll, &ul); /* W1039 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W1039 | 8 | 11 | | W1073 | 8 | 10 | | W0834 | 6 | 5 | | W0947 | 8 | 11 | | W0628 | 3 | 6 | Scenario: an `ll' with conversion-specifier `i' in printf function call Given a target source named "fixture.c" with: """ #include void foo(long long ll) { printf("%lli", ll); /* W1039 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W1039 | 5 | 12 | | W0104 | 3 | 20 | | W1073 | 5 | 11 | | W0834 | 3 | 10 | | W0947 | 5 | 12 | | W0628 | 3 | 6 | Scenario: an `ll' with conversion-specifier `o' in printf function call Given a target source named "fixture.c" with: """ #include void foo(unsigned long long ull) { printf("%llo", ull); /* W1039 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W1039 | 5 | 12 | | W0104 | 3 | 29 | | W1073 | 5 | 11 | | W0834 | 3 | 10 | | W0947 | 5 | 12 | | W0628 | 3 | 6 | Scenario: an `ll' with conversion-specifier `u' in printf function call Given a target source named "fixture.c" with: """ #include void foo(unsigned long long ull) { printf("%llu", ull); /* W1039 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W1039 | 5 | 12 | | W0104 | 3 | 29 | | W1073 | 5 | 11 | | W0834 | 3 | 10 | | W0947 | 5 | 12 | | W0628 | 3 | 6 | Scenario: an `ll' with conversion-specifier `x' in printf function call Given a target source named "fixture.c" with: """ #include void foo(unsigned long long ull) { printf("%llx", ull); /* W1039 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W1039 | 5 | 12 | | W0104 | 3 | 29 | | W1073 | 5 | 11 | | W0834 | 3 | 10 | | W0947 | 5 | 12 | | W0628 | 3 | 6 | Scenario: an `ll' with conversion-specifier `X' in printf function call Given a target source named "fixture.c" with: """ #include void foo(unsigned long long ull) { printf("%llX", ull); /* W1039 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W1039 | 5 | 12 | | W0104 | 3 | 29 | | W1073 | 5 | 11 | | W0834 | 3 | 10 | | W0947 | 5 | 12 | | W0628 | 3 | 6 | Scenario: an `ll' with conversion-specifier `d' in fprintf function call Given a target source named "fixture.c" with: """ #include void foo(long long ll) { fprintf(stdout, "%lld", ll); /* W1039 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W1039 | 5 | 21 | | W0104 | 3 | 20 | | W1073 | 5 | 12 | | W0834 | 3 | 10 | | W0947 | 5 | 21 | | W0628 | 3 | 6 | Scenario: multiple `ll' in printf function call Given a target source named "fixture.c" with: """ #include void foo(long long ll, unsigned long long ull) { printf("%lld %llu", ll, ull); /* W1039 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W1039 | 5 | 12 | | W1039 | 5 | 12 | | W0104 | 3 | 20 | | W0104 | 3 | 43 | | W1073 | 5 | 11 | | W0834 | 3 | 10 | | W0834 | 3 | 24 | | W0947 | 5 | 12 | | W0628 | 3 | 6 | Scenario: multiple `ll' in scanf function call Given a target source named "fixture.c" with: """ #include void foo(void) { long long ll = 0; unsigned long long ull = 0U; scanf("%lld %llu", &ll, &ull); /* W1039 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W1039 | 7 | 11 | | W1039 | 7 | 11 | | W1073 | 7 | 10 | | W0834 | 5 | 5 | | W0834 | 6 | 5 | | W0947 | 7 | 11 | | W0628 | 3 | 6 | adlint-3.2.14/features/code_check/W0808.feature0000644000004100000410000000202112340630463021070 0ustar www-datawww-dataFeature: W0808 W0808 detects that it pre-defined macro is re-defined. Scenario: pre-defined macro is re-defined Given a target source named "fixture.c" with: """ #define __STDC_VERSION__ "1" /* W0808 */ #define __LINE__ "2" /* W0808 */ #define __FILE__ "3" /* W0808 */ #define __DATE__ "4" /* W0808 */ #define __TIME__ "5" /* W0808 */ #define __STDC__ "6" /* W0808 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0808 | 1 | 9 | | W0808 | 2 | 9 | | W0808 | 3 | 9 | | W0808 | 4 | 9 | | W0808 | 5 | 9 | | W0808 | 6 | 9 | Scenario: undefine the macro defined by the user Given a target source named "fixture.c" with: """ #define LINE !LINE """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | adlint-3.2.14/features/code_check/W0146.feature0000644000004100000410000001045112340630463021071 0ustar www-datawww-dataFeature: W0146 W0146 detects that `unsigned int' value is converted into `short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { short b = a; /* W0146 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0146 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { short b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 15 | | C1000 | | | | C1006 | 1 | 23 | | W0100 | 3 | 11 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { short b; b = a; /* W0146 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0146 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { short b; b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 23 | | W0100 | 3 | 11 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(unsigned int a) { bar(a); /* W0146 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0146 | 5 | 9 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(unsigned int a) { bar((short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 23 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ short foo(unsigned int a) { return a; /* W0146 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0146 | 3 | 12 | | W0282 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ short foo(unsigned int a) { return (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 24 | | W0104 | 1 | 24 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W1072.feature0000644000004100000410000000131112340630463021063 0ustar www-datawww-dataFeature: W1072 W1072 detects that a `goto' statement is found. Scenario: `goto' statement is found Given a target source named "fixture.c" with: """ static int func(int i) { if (i == 1) { goto Label1; /* W1072 */ } goto Label2; /* W1072 */ Label1: i = 10; Label2: i = 20; return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0629 | 1 | 12 | | W1072 | 4 | 9 | | W1072 | 7 | 5 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0158.feature0000644000004100000410000001062712340630463021101 0ustar www-datawww-dataFeature: W0158 W0158 detects that `signed char' value is converted into `unsigned short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned short b = a; /* W0158 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0158 | 3 | 24 | | W0100 | 3 | 20 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned short b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 24 | | C1000 | | | | C1006 | 1 | 22 | | W0100 | 3 | 20 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned short b; b = a; /* W0158 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0158 | 4 | 9 | | W0100 | 3 | 20 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned short b; b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 22 | | W0100 | 3 | 20 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(signed char a) { bar(a); /* W0158 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0158 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(signed char a) { bar((unsigned short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 22 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(signed char a) { return a; /* W0158 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0158 | 3 | 12 | | W0294 | 3 | 5 | | W0104 | 1 | 32 | | W0628 | 1 | 16 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(signed char a) { return (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 32 | | W0104 | 1 | 32 | | W0628 | 1 | 16 | adlint-3.2.14/features/code_check/W0606.feature0000644000004100000410000000067412340630463021100 0ustar www-datawww-dataFeature: W0606 W0606 detects that floating point in union. Scenario: floating point in union Given a target source named "fixture.c" with: """ union UNI { /* W0606 */ float a; int b; }; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0551 | 1 | 7 | | W0606 | 1 | 7 | adlint-3.2.14/features/code_check/W0173.feature0000644000004100000410000001151312340630463021071 0ustar www-datawww-dataFeature: W0173 W0173 detects that `signed char' value is converted into `unsigned long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned long long b = a; /* W0173 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0173 | 3 | 28 | | W0100 | 3 | 24 | | W0104 | 1 | 22 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned long long b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 28 | | C1000 | | | | C1006 | 1 | 22 | | W0100 | 3 | 24 | | W0104 | 1 | 22 | | W0834 | 3 | 29 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned long long b; b = a; /* W0173 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0173 | 4 | 9 | | W0100 | 3 | 24 | | W0104 | 1 | 22 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned long long b; b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 22 | | W0100 | 3 | 24 | | W0104 | 1 | 22 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(signed char a) { bar(a); /* W0173 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0173 | 5 | 9 | | W0104 | 3 | 22 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(signed char a) { bar((unsigned long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 22 | | W0104 | 3 | 22 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(signed char a) { return a; /* W0173 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0173 | 3 | 12 | | W0309 | 3 | 5 | | W0104 | 1 | 36 | | W0834 | 1 | 1 | | W0628 | 1 | 20 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(signed char a) { return (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 36 | | W0104 | 1 | 36 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 20 | adlint-3.2.14/features/code_check/W0166.feature0000644000004100000410000001051512340630463021074 0ustar www-datawww-dataFeature: W0166 W0166 detects that `int' value is converted into `unsigned short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { unsigned short b = a; /* W0166 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0166 | 3 | 24 | | W0100 | 3 | 20 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { unsigned short b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 24 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 20 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { unsigned short b; b = a; /* W0166 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0166 | 4 | 9 | | W0100 | 3 | 20 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { unsigned short b; b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 20 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(int a) { bar(a); /* W0166 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0166 | 5 | 9 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(int a) { bar((unsigned short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 14 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(int a) { return a; /* W0166 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0166 | 3 | 12 | | W0302 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 16 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(int a) { return (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 24 | | W0104 | 1 | 24 | | W0628 | 1 | 16 | adlint-3.2.14/features/code_check/W0145.feature0000644000004100000410000001057112340630463021073 0ustar www-datawww-dataFeature: W0145 W0145 detects that `unsigned int' value is converted into `signed char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { signed char b = a; /* W0145 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0145 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { signed char b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 21 | | C1000 | | | | C1006 | 1 | 23 | | W0100 | 3 | 17 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { signed char b; b = a; /* W0145 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0145 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { signed char b; b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 23 | | W0100 | 3 | 17 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(unsigned int a) { bar(a); /* W0145 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0145 | 5 | 9 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(unsigned int a) { bar((signed char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 23 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(unsigned int a) { return a; /* W0145 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0145 | 3 | 12 | | W0281 | 3 | 5 | | W0104 | 1 | 30 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(unsigned int a) { return (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 30 | | W0104 | 1 | 30 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0093.feature0000644000004100000410000001077612340630463021104 0ustar www-datawww-dataFeature: W0093 W0093 detects that a multiplicative-expression may cause division-by-zero. Scenario: narrowing denominator variable by an iteration controlling variable which has same value domain of the denominator Given a target source named "fixture.c" with: """ static void foo(void) { int k; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (i == j) { k = j / i; /* W0093 */ } else { k = j / i; /* W0093 */ } } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0093 | 8 | 23 | | C1000 | | | | C1006 | 5 | 14 | | W0093 | 11 | 23 | | C1000 | | | | C1006 | 5 | 14 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: narrowing denominator variable by an iteration controlling variable which has narrower value domain than the denominator Given a target source named "fixture.c" with: """ static void foo(void) { int k; for (int i = 0; i < 10; i++) { for (int j = 3; j < 5; j++) { if (i == j) { k = j / i; /* OK */ } else { k = j / i; /* W0093 */ } } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0093 | 11 | 23 | | C1000 | | | | C1006 | 5 | 14 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: narrowing denominator variable by an iteration controlling variable which has narrower value domain contains zero Given a target source named "fixture.c" with: """ static void foo(void) { int k; for (int i = -5; i < 5; i++) { for (int j = -1; j < 2; j++) { if (i == j) { k = j / i; /* W0093 */ } else { k = j / i; /* OK */ } } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0093 | 8 | 23 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: possible zero-devide because of an incomplete if-else-if statement Given a target source named "fixture.c" with: """ int foo(int i) { int j = 0; if (i < 0) { /* false */ j = -i; } else if (i > 0) { /* false */ j = i; } return 5 / j; /* W0093 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0093 | 12 | 14 | | C1000 | | | | C1006 | 3 | 9 | | C1002 | 5 | 11 | | C1002 | 8 | 16 | | W0104 | 1 | 13 | | W1069 | 5 | 5 | | W0628 | 1 | 5 | Scenario: possible zero-devide because of an incomplete if-else-if statement Given a target source named "fixture.c" with: """ int foo(int i) { int j; if (i < 0) { /* false */ j = -i; } else if (i > 0) { j = i; /* false */ } return 5 / j; /* W0093 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0460 | 12 | 14 | | C1000 | | | | C1003 | 3 | 9 | | C1002 | 5 | 11 | | C1002 | 8 | 16 | | W0093 | 12 | 14 | | C1000 | | | | C1006 | 3 | 9 | | C1002 | 5 | 11 | | C1002 | 8 | 16 | | W0104 | 1 | 13 | | W1069 | 5 | 5 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0250.feature0000644000004100000410000001043412340630463021066 0ustar www-datawww-dataFeature: W0250 W0250 detects that `unsigned int' value is converted into `long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { long b = a; /* W0250 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0250 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { long b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 14 | | C1000 | | | | C1006 | 1 | 23 | | W0100 | 3 | 10 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { long b; b = a; /* W0250 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0250 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { long b; b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 23 | | W0100 | 3 | 10 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(unsigned int a) { bar(a); /* W0250 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0250 | 5 | 9 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(unsigned int a) { bar((long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 23 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long foo(unsigned int a) { return a; /* W0250 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0250 | 3 | 12 | | W0406 | 3 | 5 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long foo(unsigned int a) { return (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 23 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0128.feature0000644000004100000410000000755612340630463021105 0ustar www-datawww-dataFeature: W0128 W0128 detects that `char' value is converted into `double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { double b = a; /* W0128 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0128 | 3 | 16 | | W0100 | 3 | 12 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { double b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { double b; b = a; /* W0128 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0128 | 4 | 9 | | W0100 | 3 | 12 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { double b; b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(char a) { bar(a); /* W0128 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0128 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(char a) { bar((double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ double foo(char a) { return a; /* W0128 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0128 | 3 | 12 | | W0264 | 3 | 5 | | W0104 | 1 | 17 | | W0628 | 1 | 8 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ double foo(char a) { return (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0104 | 1 | 17 | | W0628 | 1 | 8 | adlint-3.2.14/features/code_check/W1064.feature0000644000004100000410000000430112340630463021066 0ustar www-datawww-dataFeature: W1064 W1064 detects that an integer constant is specified to the case-label in the switch-statement with an enum typed controlling variable. Scenario: an integer constant Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; static int foo(const enum Color c) { switch (c) { case 0: /* W1064 */ return 1; case 1: /* W1064 */ return 2; default: return 0; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W1064 | 6 | 10 | | W1064 | 8 | 10 | | W1071 | 3 | 12 | | W0629 | 3 | 12 | | W0628 | 3 | 12 | Scenario: enumerator of the same enum type Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; static int foo(const enum Color c) { switch (c) { case RED: /* OK */ return 1; case BLUE: /* OK */ return 2; default: return 0; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W1071 | 3 | 12 | | W0629 | 3 | 12 | | W0628 | 3 | 12 | Scenario: enum typed variable of the same enum type Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; static int foo(const enum Color c) { const enum Color col = RED; switch (c) { case col: /* OK */ return 1; case BLUE: /* OK */ return 2; default: return 0; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W1071 | 3 | 12 | | W0629 | 3 | 12 | | W0628 | 3 | 12 | adlint-3.2.14/features/code_check/W0195.feature0000644000004100000410000000754512340630463021107 0ustar www-datawww-dataFeature: W0195 W0195 detects that `int' value is converted into `double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { double b = a; /* W0195 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0195 | 3 | 16 | | W0100 | 3 | 12 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { double b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { double b; b = a; /* W0195 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0195 | 4 | 9 | | W0100 | 3 | 12 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { double b; b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(int a) { bar(a); /* W0195 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0195 | 5 | 9 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(int a) { bar((double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ double foo(int a) { return a; /* W0195 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0195 | 3 | 12 | | W0331 | 3 | 5 | | W0104 | 1 | 16 | | W0628 | 1 | 8 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ double foo(int a) { return (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0104 | 1 | 16 | | W0628 | 1 | 8 | adlint-3.2.14/features/code_check/W0780.feature0000644000004100000410000000373712340630463021106 0ustar www-datawww-dataFeature: W0780 W0780 detects that a left shift-expression of unsigned constant value discards upper non-zero bits. Scenario: discarding 3 of zero bits and 1 of non-zero bit in `unsigned int' constant Given a target source named "fixture.c" with: """ unsigned int foo(void) { return 0x08000000U << 5; /* W0780 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0115 | 3 | 24 | | W0780 | 3 | 24 | | W0628 | 1 | 14 | Scenario: discarding 4 of zero bits in `unsigned int' constant Given a target source named "fixture.c" with: """ unsigned int foo(void) { return 0x08000000U << 4; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0628 | 1 | 14 | Scenario: discarding 3 of zero bits and 1 of non-zero bit in `unsigned long' constant Given a target source named "fixture.c" with: """ unsigned long foo(void) { return 0x08000000UL << 5; /* W0780 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0115 | 3 | 25 | | W0780 | 3 | 25 | | W0628 | 1 | 15 | Scenario: discarding 4 of zero bits in `unsigned int' constant Given a target source named "fixture.c" with: """ unsigned long foo(void) { return 0x08000000UL << 4; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0203.feature0000644000004100000410000000766212340630463021075 0ustar www-datawww-dataFeature: W0203 W0203 detects that `unsigned long' value is converted into `float' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { float b = a; /* W0203 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0203 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { float b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { float b; b = a; /* W0203 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0203 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { float b; b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(unsigned long a) { bar(a); /* W0203 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0203 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(unsigned long a) { bar((float) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ float foo(unsigned long a) { return a; /* W0203 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0203 | 3 | 12 | | W0339 | 3 | 5 | | W0104 | 1 | 25 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ float foo(unsigned long a) { return (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 25 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0025.feature0000644000004100000410000000376612340630463021100 0ustar www-datawww-dataFeature: W0025 W0025 detects that there is redundant #include in a source file. Scenario: redundant #include of user header Given a target source named "fixture.c" with: """ #include "test.h" #include "test2.h" #include "test.h" /* W0025 */ """ And a target source named "test.h" with: """ """ And a target source named "test2.h" with: """ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0025 | 3 | 1 | | W0071 | 1 | 1 | | W0071 | 2 | 1 | | W0071 | 3 | 1 | Scenario: no redundant #include of user header Given a target source named "fixture.c" with: """ #include "test.h" #include "test2.h" /* OK */ """ And a target source named "test.h" with: """ """ And a target source named "test2.h" with: """ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0071 | 1 | 1 | | W0071 | 2 | 1 | Scenario: redundant #include of system header Given a target source named "fixture.c" with: """ #include #include #include /* W0025 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0025 | 3 | 1 | | W0070 | 1 | 1 | | W0070 | 2 | 1 | | W0070 | 3 | 1 | Scenario: no redundant #include of system header Given a target source named "fixture.c" with: """ #include #include /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0070 | 1 | 1 | | W0070 | 2 | 1 | adlint-3.2.14/features/code_check/W0479.feature0000644000004100000410000000377512340630463021115 0ustar www-datawww-dataFeature: W0479 W0479 detects that the macro can replace with a typedef declaration. Scenario: having the two type specifier Given a target source named "fixture.c" with: """ #define UINT unsigned int /* W0479 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0479 | 1 | 1 | Scenario: having the type specifier and qualifier Given a target source named "fixture.c" with: """ #define CINT const int /* W0479 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0479 | 1 | 1 | Scenario: having the type specifier and pointer Given a target source named "fixture.c" with: """ #define PLONG long * /* W0479 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0479 | 1 | 1 | Scenario: having the type specifier, qualifier and pointer Given a target source named "fixture.c" with: """ #define V_CLONG volatile long * const /* W0479 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0479 | 1 | 1 | Scenario: having a type specifier Given a target source named "fixture.c" with: """ #define INT int /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0482 | 1 | 1 | Scenario: having a type qualifier Given a target source named "fixture.c" with: """ #define CONST const /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0483 | 1 | 1 | adlint-3.2.14/features/code_check/W0231.feature0000644000004100000410000000775612340630463021102 0ustar www-datawww-dataFeature: W0231 W0231 detects that `long double' value is converted into `signed char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { signed char b = a; /* W0231 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0231 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { signed char b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { signed char b; b = a; /* W0231 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0231 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { signed char b; b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(long double a) { bar(a); /* W0231 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0231 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(long double a) { bar((signed char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(long double a) { return a; /* W0231 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0231 | 3 | 12 | | W0367 | 3 | 5 | | W0104 | 1 | 29 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(long double a) { return (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0104 | 1 | 29 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0104.feature0000644000004100000410000000657412340630463021076 0ustar www-datawww-dataFeature: W0104 W0104 detects that a non-const parameter is never changed in the function. Scenario: unchanged non-const parameter Given a target source named "fixture.c" with: """ static int func(int i) /* W0104 */ { return i + 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 14 | | W0104 | 1 | 21 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: unchanged prefixed const parameter Given a target source named "fixture.c" with: """ static int func(const int i) /* OK */ { return i + 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 14 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: unchanged postfixed const parameter Given a target source named "fixture.c" with: """ static int func(int const i) /* OK */ { return i + 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 14 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: unchanged prefixed const volatile parameter Given a target source named "fixture.c" with: """ static int func(const volatile int i) /* OK */ { return i + 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 14 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: unchanged prefixed volatile const parameter Given a target source named "fixture.c" with: """ static int func(volatile const int i) /* OK */ { return i + 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 14 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: unchanged mixfixed const volatile parameter Given a target source named "fixture.c" with: """ static int func(const int volatile i) /* OK */ { return i + 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 14 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: unchanged mixfixed volatile const parameter Given a target source named "fixture.c" with: """ static int func(volatile int const i) /* OK */ { return i + 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 14 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0186.feature0000644000004100000410000000765512340630463021111 0ustar www-datawww-dataFeature: W0186 W0186 detects that `signed char' value is converted into `double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { double b = a; /* W0186 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0186 | 3 | 16 | | W0100 | 3 | 12 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { double b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { double b; b = a; /* W0186 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0186 | 4 | 9 | | W0100 | 3 | 12 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { double b; b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(signed char a) { bar(a); /* W0186 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0186 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(signed char a) { bar((double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ double foo(signed char a) { return a; /* W0186 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0186 | 3 | 12 | | W0322 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 8 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ double foo(signed char a) { return (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0104 | 1 | 24 | | W0628 | 1 | 8 | adlint-3.2.14/features/code_check/W0142.feature0000644000004100000410000001060212340630463021063 0ustar www-datawww-dataFeature: W0142 W0142 detects that `unsigned char' value is converted into `signed char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { signed char b = a; /* W0142 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0142 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { signed char b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 21 | | C1000 | | | | C1006 | 1 | 24 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { signed char b; b = a; /* W0142 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0142 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { signed char b; b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 24 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(unsigned char a) { bar(a); /* W0142 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0142 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(unsigned char a) { bar((signed char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 24 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(unsigned char a) { return a; /* W0142 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0142 | 3 | 12 | | W0278 | 3 | 5 | | W0104 | 1 | 31 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(unsigned char a) { return (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 31 | | W0104 | 1 | 31 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0174.feature0000644000004100000410000001142512340630463021074 0ustar www-datawww-dataFeature: W0174 W0174 detects that `short' value is converted into `unsigned long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { unsigned long long b = a; /* W0174 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0174 | 3 | 28 | | W0100 | 3 | 24 | | W0104 | 1 | 16 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { unsigned long long b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 28 | | C1000 | | | | C1006 | 1 | 16 | | W0100 | 3 | 24 | | W0104 | 1 | 16 | | W0834 | 3 | 29 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { unsigned long long b; b = a; /* W0174 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0174 | 4 | 9 | | W0100 | 3 | 24 | | W0104 | 1 | 16 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { unsigned long long b; b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 16 | | W0100 | 3 | 24 | | W0104 | 1 | 16 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(short a) { bar(a); /* W0174 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0174 | 5 | 9 | | W0104 | 3 | 16 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(short a) { bar((unsigned long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 16 | | W0104 | 3 | 16 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(short a) { return a; /* W0174 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0174 | 3 | 12 | | W0310 | 3 | 5 | | W0104 | 1 | 30 | | W0834 | 1 | 1 | | W0628 | 1 | 20 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(short a) { return (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 30 | | W0104 | 1 | 30 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 20 | adlint-3.2.14/features/code_check/W0792.feature0000644000004100000410000000716112340630463021104 0ustar www-datawww-dataFeature: W0792 W0792 detects that an explicit conversion between variable of floating point number and pointer to a function is found. Scenario: converting `float' to function pointer Given a target source named "fixture.c" with: """ int (*foo(const float f))(void) { return (int (*)(void)) f; /* W0792 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0792 | 3 | 12 | | W0628 | 1 | 7 | Scenario: converting `double' to function pointer Given a target source named "fixture.c" with: """ int (*foo(const double f))(void) { return (int (*)(void)) f; /* W0792 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0792 | 3 | 12 | | W0628 | 1 | 7 | Scenario: converting `long double' to function pointer Given a target source named "fixture.c" with: """ int (*foo(const long double f))(void) { return (int (*)(void)) f; /* W0792 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0792 | 3 | 12 | | W0628 | 1 | 7 | Scenario: converting function pointer to `float' Given a target source named "fixture.c" with: """ float foo(int (* const p)(void)) { return (float) p; /* W0792 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0792 | 3 | 12 | | W0628 | 1 | 7 | Scenario: converting function pointer to `double' Given a target source named "fixture.c" with: """ double foo(int (* const p)(void)) { return (double) p; /* W0792 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0792 | 3 | 12 | | W0628 | 1 | 8 | Scenario: converting function pointer to `long double' Given a target source named "fixture.c" with: """ long double foo(int (* const p)(void)) { return (long double) p; /* W0792 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0792 | 3 | 12 | | W0628 | 1 | 13 | Scenario: converting `float' to `int' Given a target source named "fixture.c" with: """ int foo(const float f) { return (int) f; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0628 | 1 | 5 | Scenario: converting function pointer to `void *' Given a target source named "fixture.c" with: """ void *foo(int (* const p)(void)) { return (void *) p; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0088.feature0000644000004100000410000001111012340630463021067 0ustar www-datawww-dataFeature: W0088 W0088 detects that right-hand-side of the logical-expression in a standalone expression-statement has no side-effect. Scenario: no side-effect in a standalone expression-statement Given a target source named "fixture.c" with: """ static int foo(int n) { int i = bar(); (i < n) && (i < 10); /* W0088 */ return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0109 | 3 | 13 | | W0088 | 4 | 13 | | W0100 | 3 | 9 | | W0104 | 1 | 20 | | W0629 | 1 | 12 | | W0085 | 4 | 5 | | W0628 | 1 | 12 | Scenario: side-effect in a standalone expression-statement Given a target source named "fixture.c" with: """ static int foo(int n) { int i = bar(); (i < n) && (i++); /* OK */ return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0109 | 3 | 13 | | W0104 | 1 | 20 | | W0629 | 1 | 12 | | W0508 | 4 | 13 | | W0735 | 4 | 16 | | W0512 | 4 | 18 | | W0628 | 1 | 12 | Scenario: no side-effect in controlling expression of for-statement Given a target source named "fixture.c" with: """ static int foo(int n) { int i, j = 0; for (i = 0; (i < n) && (i < 10); i++) { /* OK */ j++; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 20 | | W0629 | 1 | 12 | | W0425 | 3 | 12 | | W0628 | 1 | 12 | Scenario: no side-effect in right-most expression of a standalone expression-statement Given a target source named "fixture.c" with: """ extern int foo(int); extern int bar(int); static void baz(int i, int j, int k) { (i > 0) && foo(i) && bar(j) && k; /* W0088 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0118 | 2 | 12 | | W1076 | 4 | 13 | | W0088 | 6 | 33 | | W0104 | 4 | 21 | | W0104 | 4 | 28 | | W0104 | 4 | 35 | | W0629 | 4 | 13 | | W0488 | 6 | 5 | | W0508 | 6 | 23 | | W0508 | 6 | 13 | | W0628 | 4 | 13 | Scenario: no side-effect in right-most expression of an assignment-expression Given a target source named "fixture.c" with: """ extern int foo(int); extern int bar(int); static void baz(int i, int j, int k) { int l = 0; l = (i > 0) && foo(i) && bar(j) && k; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0118 | 2 | 12 | | W1076 | 4 | 13 | | W0104 | 4 | 21 | | W0104 | 4 | 28 | | W0104 | 4 | 35 | | W0629 | 4 | 13 | | W0488 | 7 | 5 | | W0508 | 7 | 27 | | W0508 | 7 | 17 | | W0628 | 4 | 13 | Scenario: no side-effect in argument expressions of function-call-expression Given a target source named "fixture.c" with: """ extern int foo(int); extern int bar(int); extern void baz(const char *, ...); static void qux(int i, int j, int k) { baz("", (i > 0) && foo(i) && bar(i || j) && k); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0118 | 2 | 12 | | W0118 | 3 | 13 | | W1076 | 5 | 13 | | W0104 | 5 | 21 | | W0104 | 5 | 28 | | W0104 | 5 | 35 | | W0629 | 5 | 13 | | W0488 | 7 | 13 | | W0947 | 7 | 9 | | W0508 | 7 | 31 | | W0508 | 7 | 21 | | W0628 | 5 | 13 | adlint-3.2.14/features/code_check/W0170.feature0000644000004100000410000001052612340630463021071 0ustar www-datawww-dataFeature: W0170 W0170 detects that `long' value is converted into `unsigned short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { unsigned short b = a; /* W0170 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0170 | 3 | 24 | | W0100 | 3 | 20 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { unsigned short b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 24 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 20 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { unsigned short b; b = a; /* W0170 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0170 | 4 | 9 | | W0100 | 3 | 20 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { unsigned short b; b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 20 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(long a) { bar(a); /* W0170 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0170 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(long a) { bar((unsigned short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 15 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(long a) { return a; /* W0170 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0170 | 3 | 12 | | W0306 | 3 | 5 | | W0104 | 1 | 25 | | W0628 | 1 | 16 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(long a) { return (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 25 | | W0104 | 1 | 25 | | W0628 | 1 | 16 | adlint-3.2.14/features/code_check/W0016.feature0000644000004100000410000001325512340630463021072 0ustar www-datawww-dataFeature: W0016 W0016 detects that field-width of the conversion-specifier in `*printf' function call is greater than 509. Scenario: field-width of `%d' conversion-specifier in `printf' function call is greater than 509 Given a target source named "fixture.c" with: """ #include int foo(int i) { return printf("%512d", i); /* W0016 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0016 | 5 | 19 | | W0104 | 3 | 13 | | W0947 | 5 | 19 | | W0628 | 3 | 5 | Scenario: field-width of `%d' conversion-specifier in `printf' function call is equal to 510 Given a target source named "fixture.c" with: """ #include int foo(int i) { return printf("%510d", i); /* W0016 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0016 | 5 | 19 | | W0104 | 3 | 13 | | W0947 | 5 | 19 | | W0628 | 3 | 5 | Scenario: field-width of `%d' conversion-specifier in `printf' function call is equal to 509 Given a target source named "fixture.c" with: """ #include int foo(int i) { return printf("%509d", i); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 13 | | W0947 | 5 | 19 | | W0628 | 3 | 5 | Scenario: field-width of `%d' conversion-specifier in `printf' function call is less than 509 Given a target source named "fixture.c" with: """ #include int foo(int i) { return printf("%500d", i); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 13 | | W0947 | 5 | 19 | | W0628 | 3 | 5 | Scenario: no field-width of `%d' conversion-specifier in `printf' function call Given a target source named "fixture.c" with: """ #include int foo(int i) { return printf("%d", i); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 13 | | W0947 | 5 | 19 | | W0628 | 3 | 5 | Scenario: field-width of `%d' conversion-specifier in `fprintf' function call is greater than 509 Given a target source named "fixture.c" with: """ #include int foo(int i) { return fprintf(stdout, "%512d", i); /* W0016 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0016 | 5 | 28 | | W0104 | 3 | 13 | | W0947 | 5 | 28 | | W0628 | 3 | 5 | Scenario: field-width of `%d' conversion-specifier in `fprintf' function call is equal to 510 Given a target source named "fixture.c" with: """ #include int foo(int i) { return fprintf(stdout, "%510d", i); /* W0016 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0016 | 5 | 28 | | W0104 | 3 | 13 | | W0947 | 5 | 28 | | W0628 | 3 | 5 | Scenario: field-width of `%d' conversion-specifier in `fprintf' function call is equal to 509 Given a target source named "fixture.c" with: """ #include int foo(int i) { return fprintf(stdout, "%509d", i); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 13 | | W0947 | 5 | 28 | | W0628 | 3 | 5 | Scenario: field-width of `%d' conversion-specifier in `fprintf' function call is less than 509 Given a target source named "fixture.c" with: """ #include int foo(int i) { return fprintf(stdout, "%500d", i); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 13 | | W0947 | 5 | 28 | | W0628 | 3 | 5 | Scenario: no field-width of `%d' conversion-specifier in `fprintf' function call Given a target source named "fixture.c" with: """ #include int foo(int i) { return fprintf(stdout, "%d", i); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 13 | | W0947 | 5 | 28 | | W0628 | 3 | 5 | adlint-3.2.14/features/code_check/W0230.feature0000644000004100000410000000762312340630463021072 0ustar www-datawww-dataFeature: W0230 W0230 detects that `long double' value is converted into `char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { char b = a; /* W0230 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0230 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { char b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { char b; b = a; /* W0230 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0230 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { char b; b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(long double a) { bar(a); /* W0230 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0230 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(long double a) { bar((char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ char foo(long double a) { return a; /* W0230 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0230 | 3 | 12 | | W0366 | 3 | 5 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ char foo(long double a) { return (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0805.feature0000644000004100000410000000515512340630463021100 0ustar www-datawww-dataFeature: W0805 W0805 detects that no identifier as argument for the `defined' operator. Scenario: no arguments Given a target source named "fixture.c" with: """ #if defined /* OK */ int i = 0; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | E0007 | 1 | | | W0804 | 1 | 5 | Scenario: an argument specified but not an identifier Given a target source named "fixture.c" with: """ #if defined "foo" /* W0805 */ int i = 0; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | E0007 | 1 | 13 | | W0804 | 1 | 5 | | W0805 | 1 | 5 | Scenario: an identifier specified Given a target source named "fixture.c" with: """ #if defined FOO /* OK */ int i = 0; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | Scenario: an identifier specified in parenthesis Given a target source named "fixture.c" with: """ #if defined(FOO) /* OK */ int i = 0; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | Scenario: no arguments for latter `defined' operator Given a target source named "fixture.c" with: """ #if defined(FOO) && defined /* OK */ int i = 0; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | E0007 | 1 | | | W0804 | 1 | 21 | Scenario: non identifier for latter `defined' operator Given a target source named "fixture.c" with: """ #if defined(FOO) && defined "foo" /* W0805 */ int i = 0; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | E0007 | 1 | 29 | | W0804 | 1 | 21 | | W0805 | 1 | 21 | Scenario: identifiers for two `defined' operator Given a target source named "fixture.c" with: """ #if defined(FOO) && defined BAR /* OK */ int i = 0; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | adlint-3.2.14/features/code_check/W0599.feature0000644000004100000410000001243612340630463021112 0ustar www-datawww-dataFeature: W0599 W0599 detects that value of the variable is referred and updated between sequence-points. Scenario: return-expression in a for-statement Given a target source named "fixture.c" with: """ extern void bar(int, int, int); static void foo(int a, int b, int *c) { b = (a + 1) + a++; /* W0599 */ b = c[a] + c[++a]; /* W0599 */ bar(a, a++, c[a]); /* W0599 */ bar(a, a, c[a++]); /* W0599 */ a = a + b; c[a] = a++ + b; /* W0599 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W1076 | 3 | 13 | | W0723 | 5 | 12 | | W0723 | 5 | 17 | | W0599 | 5 | 7 | | W0422 | 6 | 10 | | C1000 | | | | C1005 | 3 | 36 | | W0422 | 6 | 17 | | C1000 | | | | C1005 | 3 | 36 | | W0723 | 6 | 14 | | W0599 | 6 | 7 | | W0422 | 7 | 18 | | C1000 | | | | C1005 | 3 | 36 | | W0599 | 7 | 8 | | W0422 | 8 | 16 | | C1000 | | | | C1005 | 3 | 36 | | W0723 | 9 | 11 | | W0422 | 10 | 6 | | C1000 | | | | C1005 | 3 | 36 | | W0723 | 10 | 16 | | W0599 | 10 | 10 | | W0104 | 3 | 36 | | W0629 | 3 | 13 | | W0512 | 5 | 20 | | W0512 | 6 | 18 | | W0512 | 7 | 13 | | W0512 | 8 | 18 | | W0512 | 10 | 13 | | W0628 | 3 | 13 | Scenario: return-expression in a for-statement Given a target source named "fixture.c" with: """ static int foo(int x, int y, int z) { for (int i = 0; i < z; i++) { /* OK */ if (x < y) { return i; } } return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: object-specifier as a controlling expression and updating same variable in the branch Given a target source named "fixture.c" with: """ static void foo(int i) { if (i) { i++; /* OK */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0629 | 1 | 13 | | W0114 | 3 | 5 | | W0628 | 1 | 13 | Scenario: assignment-expression as a controlling expression and updating same variable in the branch Given a target source named "fixture.c" with: """ extern int bar(void); static void foo(int i) { while (i = bar()) { i++; /* OK */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1076 | 3 | 13 | | W0629 | 3 | 13 | | W0108 | 5 | 14 | | W0114 | 5 | 5 | | W0628 | 3 | 13 | Scenario: assignment-expression as a controlling expression and updating same variable in the branch Given a target source named "fixture.c" with: """ extern int bar(int); static void foo(void) { int i; for (i = 0; i = bar(i); ) { i++; /* OK */ } i++; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1076 | 3 | 13 | | W0708 | 7 | 10 | | W0629 | 3 | 13 | | W0108 | 6 | 19 | | W0114 | 6 | 5 | | W0628 | 3 | 13 | Scenario: updating variable in the 1st expression of conditional-expression Given a target source named "fixture.c" with: """ static int foo(int i) { return i++ ? i : 0; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0629 | 1 | 12 | | W0114 | 3 | 13 | | W0628 | 1 | 12 | Scenario: updating variable in the 1st expression of conditional-expression Given a target source named "fixture.c" with: """ static int foo(int i) { return i++ > 0 ? i : 0; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0629 | 1 | 12 | | W0501 | 3 | 20 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/E0016.feature0000644000004100000410000000227312340630463021046 0ustar www-datawww-dataFeature: E0016 E0016 detects that a block comment is not terminated in the translation unit. Scenario: `/*' sequence in a string-literal Given a target source named "fixture.c" with: """ #define FOO extern void bar(const char *); void baz(void) { #ifdef FOO bar("1 /*\n"); #else bar("2 /*\n"); #endif } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 3 | 13 | | W0117 | 5 | 6 | | W0947 | 8 | 9 | | W0628 | 5 | 6 | Scenario: `/*' sequence in a string-literal Given a target source named "fixture.c" with: """ extern void bar(const char *); void baz(void) { #ifdef FOO bar("1 /*\n"); #else bar("2 /*\n"); #endif } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0947 | 8 | 9 | | W0628 | 3 | 6 | adlint-3.2.14/features/code_check/W0502.feature0000644000004100000410000000447312340630463021074 0ustar www-datawww-dataFeature: W0502 W0502 detects that operators of the different priority except for `+', `-', `*', `/' and `%' appear in an expression without appropriate grouping. Scenario: shift-expression and and-expression in an expression Given a target source named "fixture.c" with: """ static unsigned int foo(unsigned int a, unsigned int b, unsigned int c) { return a << b & c; /* W0502 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 21 | | W0116 | 3 | 14 | | C1000 | | | | C1006 | 1 | 38 | | W0104 | 1 | 38 | | W0104 | 1 | 54 | | W0104 | 1 | 70 | | W0629 | 1 | 21 | | W0502 | 3 | 12 | | W0628 | 1 | 21 | Scenario: shift-expression and and-expression in an expression with grouping Given a target source named "fixture.c" with: """ static unsigned int foo(unsigned int a, unsigned int b, unsigned int c) { return a << (b & c); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 21 | | W0116 | 3 | 14 | | C1000 | | | | C1006 | 1 | 38 | | W0104 | 1 | 38 | | W0104 | 1 | 54 | | W0104 | 1 | 70 | | W0629 | 1 | 21 | | W0628 | 1 | 21 | Scenario: shift-expression and and-expression in an expression with large grouping Given a target source named "fixture.c" with: """ static unsigned int foo(unsigned int a, unsigned int b, unsigned int c) { return (a << b & c); /* W0502 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 21 | | W0116 | 3 | 15 | | C1000 | | | | C1006 | 1 | 38 | | W0104 | 1 | 38 | | W0104 | 1 | 54 | | W0104 | 1 | 70 | | W0629 | 1 | 21 | | W0502 | 3 | 12 | | W0628 | 1 | 21 | adlint-3.2.14/features/code_check/W0206.feature0000644000004100000410000001021612340630463021065 0ustar www-datawww-dataFeature: W0206 W0206 detects that `long long' value is converted into `float' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { float b = a; /* W0206 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0206 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { float b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { float b; b = a; /* W0206 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0206 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { float b; b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(long long a) { bar(a); /* W0206 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0206 | 5 | 9 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(long long a) { bar((float) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ float foo(long long a) { return a; /* W0206 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0206 | 3 | 12 | | W0342 | 3 | 5 | | W0104 | 1 | 21 | | W0834 | 1 | 11 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ float foo(long long a) { return (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 21 | | W0834 | 1 | 11 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0764.feature0000644000004100000410000001052612340630463021102 0ustar www-datawww-dataFeature: W0764 W0764 detects that `unsigned long long' value is converted into `unsigned short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned short b = a; /* W0764 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0764 | 3 | 24 | | W0100 | 3 | 20 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned short b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 20 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned short b; b = a; /* W0764 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0764 | 4 | 9 | | W0100 | 3 | 20 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned short b; b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 20 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(unsigned long long a) { bar(a); /* W0764 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0764 | 5 | 9 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(unsigned long long a) { bar((unsigned short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(unsigned long long a) { return a; /* W0764 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0764 | 3 | 12 | | W0398 | 3 | 5 | | W0104 | 1 | 39 | | W0834 | 1 | 20 | | W0628 | 1 | 16 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(unsigned long long a) { return (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0104 | 1 | 39 | | W0834 | 1 | 20 | | W0628 | 1 | 16 | adlint-3.2.14/features/code_check/W0151.feature0000644000004100000410000001044512340630463021070 0ustar www-datawww-dataFeature: W0151 W0151 detects that `unsigned long' value is converted into `long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { long b = a; /* W0151 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0151 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { long b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 14 | | C1000 | | | | C1006 | 1 | 24 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { long b; b = a; /* W0151 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0151 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { long b; b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 24 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(unsigned long a) { bar(a); /* W0151 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0151 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(unsigned long a) { bar((long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 24 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long foo(unsigned long a) { return a; /* W0151 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0151 | 3 | 12 | | W0287 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long foo(unsigned long a) { return (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 24 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0141.feature0000644000004100000410000001032212340630463021061 0ustar www-datawww-dataFeature: W0141 W0141 detects that `unsigned long long' value is converted into `char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { char b = a; /* W0141 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0141 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { char b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { char b; b = a; /* W0141 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0141 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { char b; b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(unsigned long long a) { bar(a); /* W0141 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0141 | 5 | 9 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(unsigned long long a) { bar((char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ char foo(unsigned long long a) { return a; /* W0141 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0141 | 3 | 12 | | W0277 | 3 | 5 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ char foo(unsigned long long a) { return (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0201.feature0000644000004100000410000000755612340630463021075 0ustar www-datawww-dataFeature: W0201 W0201 detects that `long' value is converted into `double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { double b = a; /* W0201 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0201 | 3 | 16 | | W0100 | 3 | 12 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { double b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { double b; b = a; /* W0201 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0201 | 4 | 9 | | W0100 | 3 | 12 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { double b; b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(long a) { bar(a); /* W0201 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0201 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(long a) { bar((double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ double foo(long a) { return a; /* W0201 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0201 | 3 | 12 | | W0337 | 3 | 5 | | W0104 | 1 | 17 | | W0628 | 1 | 8 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ double foo(long a) { return (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0104 | 1 | 17 | | W0628 | 1 | 8 | adlint-3.2.14/features/code_check/W0459.feature0000644000004100000410000000732612340630463021107 0ustar www-datawww-dataFeature: W0459 W0459 detects that the variable is not initialized at point of the expression evaluation. Scenario: variable initialization by a function via the output parameter Given a target source named "fixture.c" with: """ extern void foo(int ***); extern void bar(int **); void baz(int i) { int **p; foo(i == 0 ? NULL : &p); bar(p); } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0118 | 2 | 13 | | W0117 | 4 | 6 | | W0459 | 7 | 25 | | C1000 | | | | C1003 | 6 | 11 | | W0100 | 6 | 11 | | W0104 | 4 | 14 | | W0501 | 7 | 16 | | W0628 | 4 | 6 | Scenario: reference to the uninitialized nested array element of the indefinite subscript Given a target source named "fixture.c" with: """ int foo(int i) { int a[3][3]; /* W0100 */ return a[i][i]; /* W0459 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0705 | 4 | 14 | | C1000 | | | | C1006 | 1 | 13 | | W0705 | 4 | 17 | | C1000 | | | | C1006 | 1 | 13 | | W0459 | 4 | 16 | | C1000 | | | | C1003 | 3 | 9 | | W0100 | 3 | 9 | | W0104 | 1 | 13 | | W0950 | 3 | 14 | | W0950 | 3 | 11 | | W0628 | 1 | 5 | Scenario: reference to the initialized array element of the indefinite subscript Given a target source named "fixture.c" with: """ int foo(int i) { int a[3] = { 0 }; if (i < 3) { return a[i]; /* OK not W0459 */ } return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0705 | 6 | 18 | | C1000 | | | | C1006 | 1 | 13 | | W0100 | 3 | 9 | | W0104 | 1 | 13 | | W1071 | 1 | 5 | | W0950 | 3 | 11 | | W0628 | 1 | 5 | Scenario: assign value to the variable in a switch-statement in an iteration-statement Given a target source named "fixture.c" with: """ extern void bar(int *); int foo(int a[]) { int i; int j; for (i = 0; a[i]; i++) { switch (a[i]) { case 0: bar(&j); break; case 2: bar(&j); break; default: break; } } return j; /* OK but W0460 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0459 | 14 | 17 | | C1000 | | | | C1003 | 6 | 9 | | W0460 | 21 | 12 | | C1000 | | | | C1003 | 6 | 9 | | C1001 | 8 | 18 | | C1002 | 13 | 9 | | W0104 | 3 | 13 | | W9001 | 10 | 9 | | W9001 | 11 | 13 | | W9001 | 12 | 13 | | W0114 | 8 | 5 | | W0628 | 3 | 5 | adlint-3.2.14/features/code_check/W0232.feature0000644000004100000410000001001212340630463021056 0ustar www-datawww-dataFeature: W0232 W0232 detects that `long double' value is converted into `unsigned char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned char b = a; /* W0232 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0232 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned char b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned char b; b = a; /* W0232 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0232 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned char b; b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(long double a) { bar(a); /* W0232 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0232 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(long double a) { bar((unsigned char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(long double a) { return a; /* W0232 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0232 | 3 | 12 | | W0368 | 3 | 5 | | W0104 | 1 | 31 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(long double a) { return (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0104 | 1 | 31 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0121.feature0000644000004100000410000000754112340630463021070 0ustar www-datawww-dataFeature: W0121 W0121 detects that `char' value is converted into `short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { short b = a; /* W0121 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0121 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { short b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { short b; b = a; /* W0121 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0121 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { short b; b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(char a) { bar(a); /* W0121 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0121 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(char a) { bar((short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ short foo(char a) { return a; /* W0121 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0121 | 3 | 12 | | W0257 | 3 | 5 | | W0104 | 1 | 16 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ short foo(char a) { return (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 16 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0222.feature0000644000004100000410000000770112340630463021070 0ustar www-datawww-dataFeature: W0222 W0222 detects that `double' value is converted into `signed char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { signed char b = a; /* W0222 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0222 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { signed char b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { signed char b; b = a; /* W0222 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0222 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { signed char b; b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(double a) { bar(a); /* W0222 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0222 | 5 | 9 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(double a) { bar((signed char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(double a) { return a; /* W0222 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0222 | 3 | 12 | | W0358 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(double a) { return (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0104 | 1 | 24 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0224.feature0000644000004100000410000000756312340630463021100 0ustar www-datawww-dataFeature: W0224 W0224 detects that `double' value is converted into `short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { short b = a; /* W0224 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0224 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { short b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { short b; b = a; /* W0224 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0224 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { short b; b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(double a) { bar(a); /* W0224 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0224 | 5 | 9 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(double a) { bar((short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ short foo(double a) { return a; /* W0224 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0224 | 3 | 12 | | W0360 | 3 | 5 | | W0104 | 1 | 18 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ short foo(double a) { return (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 18 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0003.feature0000644000004100000410000000606112340630463021063 0ustar www-datawww-dataFeature: W0003 W0003 detects that no default clause is in the switch-statement. Scenario: no default clause Given a target source named "fixture.c" with: """ 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; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0460 | 17 | 12 | | C1000 | | | | C1003 | 3 | 9 | | C1002 | 6 | 5 | | C1002 | 9 | 5 | | C1002 | 12 | 5 | | W0104 | 1 | 13 | | W0003 | 5 | 5 | | W0628 | 1 | 5 | Scenario: a default clause at the bottom Given a target source named "fixture.c" with: """ int foo(int i) { int j; switch(i) { /* OK */ case 1: j = 1; break; case 2: j = 2; break; case 3: j = 3; break; default: j = 4; break; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 13 | | W0628 | 1 | 5 | Scenario: a default clause at the middle Given a target source named "fixture.c" with: """ int foo(int i) { int j; switch(i) { /* OK */ case 1: j = 1; break; default: j = 4; break; case 2: j = 2; break; case 3: j = 3; break; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 13 | | W0538 | 9 | 5 | | W0628 | 1 | 5 | Scenario: a default clause at the top Given a target source named "fixture.c" with: """ int foo(int i) { int j; switch(i) { /* OK */ default: j = 4; break; case 1: j = 1; break; case 2: j = 2; break; case 3: j = 3; break; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 13 | | W0538 | 6 | 5 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0422.feature0000644000004100000410000003214712340630463021074 0ustar www-datawww-dataFeature: W0422 W0422 detects that an inconstant expression may cause NULL pointer dereference. Scenario: pointer variable definition with self referring sizeof-expression in the initializer Given a target source named "fixture.c" with: """ struct foo { int i; }; extern void *malloc(unsigned long); static int bar(void) { struct foo * const p = (struct foo *) malloc(sizeof *p); return p->i; /* W0422 */ } static int baz(void) { struct foo * const p = (struct foo *) malloc(sizeof(struct foo)); return p->i; /* W0422 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 2 | 14 | | W1076 | 4 | 12 | | W0422 | 7 | 13 | | C1000 | | | | C1005 | 6 | 24 | | W1076 | 10 | 12 | | W0422 | 13 | 13 | | C1000 | | | | C1005 | 12 | 24 | | W0629 | 4 | 12 | | W0629 | 10 | 12 | | W0628 | 4 | 12 | | W0628 | 10 | 12 | Scenario: pointer variable as a part of controlling expression Given a target source named "fixture.c" with: """ struct node { struct node *prev; }; void foo(const struct node *list) { if (list != NULL) { while (1) { list = list->prev; /* OK */ if (list == NULL) { break; } } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0114 | 7 | 9 | | W0628 | 3 | 6 | Scenario: pointer variable as a part of controlling expression is declared in the iteration body Given a target source named "fixture.c" with: """ static int *bar(void); void foo(void) { if (1) { int *p1; p1 = bar(); while (1) { int *p2; p2 = p1; while (*p2 != 3) { /* W0422 */ p2++; } if (*p2 == 4) { break; } else { p1 = bar(); } } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0422 | 11 | 20 | | C1000 | | | | C1001 | 5 | 9 | | C1005 | 9 | 18 | | C1005 | 10 | 16 | | W0024 | 12 | 19 | | W0114 | 5 | 5 | | W0114 | 8 | 9 | | W0628 | 3 | 6 | Scenario: pointer variable has the same name with previously declared function Given a target source named "fixture.c" with: """ extern void instr(void); void foo(char *instr) { if (instr[0] == '*') { /* W0422 */ return; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0704 | 3 | 16 | | C0001 | 1 | 13 | | W0422 | 5 | 14 | | C1000 | | | | C1005 | 3 | 16 | | W0123 | 5 | 14 | | W0104 | 3 | 16 | | W0105 | 3 | 16 | | W1071 | 3 | 6 | | W0948 | 5 | 21 | | W0628 | 3 | 6 | Scenario: value of the global pointer is correctly null-checked by the controlling-expression of while-statement Given a target source named "fixture.c" with: """ int *ptr = NULL; static void foo(void) { while (ptr) { int i, *p = ptr; i = *p; /* OK */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1076 | 3 | 13 | | W0100 | 6 | 17 | | W0629 | 3 | 13 | | W0114 | 5 | 5 | | W0425 | 6 | 17 | | W0628 | 3 | 13 | | W0589 | 1 | 6 | | W0593 | 1 | 6 | Scenario: global pointer array as the controlling-expression of if-statement Given a target source named "fixture.c" with: """ int *a[3] = { 0 }; int foo(void) { if (a[2] == NULL) { return *a[2]; } else if (a[2] == 1) { return *a[2]; } return *a[2]; /* OK not W0422 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0117 | 3 | 5 | | W0421 | 6 | 16 | | C1000 | | | | C1004 | 1 | 6 | | W9003 | 8 | 22 | | W0027 | 8 | 19 | | W1071 | 3 | 5 | | W0950 | 1 | 8 | | W1069 | 5 | 5 | | W0628 | 3 | 5 | | W0589 | 1 | 6 | | W0593 | 1 | 6 | Scenario: global pointer as the controlling-expression of if-statement Given a target source named "fixture.c" with: """ int *ptr = 0; int bar(void) { if (ptr == NULL) { return *ptr; } else if (ptr == 1) { return *ptr; } return *ptr; /* OK not W0422 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0117 | 3 | 5 | | W0421 | 6 | 16 | | C1000 | | | | C1004 | 1 | 6 | | W9003 | 8 | 21 | | W0027 | 8 | 18 | | W1071 | 3 | 5 | | W1069 | 5 | 5 | | W0628 | 3 | 5 | | W0589 | 1 | 6 | | W0593 | 1 | 6 | Scenario: global pointer as the controlling-expression of if-statement in an iteration-statement Given a target source named "fixture.c" with: """ int *a[3] = { 0 }; int foo(unsigned int ui) { for (; ui < 3; ui++) { if (a[ui] == NULL) { break; } return *a[ui]; /* OK not W0422 */ } return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0117 | 3 | 5 | | W0534 | 5 | 10 | | W0167 | 5 | 17 | | W0147 | 6 | 15 | | W0147 | 9 | 19 | | W0104 | 3 | 22 | | W1071 | 3 | 5 | | W0950 | 1 | 8 | | W0628 | 3 | 5 | | W0589 | 1 | 6 | | W0593 | 1 | 6 | Scenario: global pointer as the controlling-expression of if-statement in an iteration-statement Given a target source named "fixture.c" with: """ int *ptr = 0; int bar(unsigned int ui) { for (; ui < 3; ui++) { if (ptr == NULL) { break; } else if (ptr == 1) { return *ptr; /* OK */ } return *ptr; /* OK not W0422 */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0117 | 3 | 5 | | W0534 | 5 | 10 | | W0167 | 5 | 17 | | W9003 | 9 | 25 | | W0027 | 9 | 22 | | W0697 | 3 | 5 | | W0104 | 3 | 22 | | W1071 | 3 | 5 | | W1069 | 6 | 9 | | W0628 | 3 | 5 | | W0589 | 1 | 6 | | W0593 | 1 | 6 | Scenario: possible null-dereference because of an incomplete if statement Given a target source named "fixture.c" with: """ int *bar(void); int foo(int i) { int *p; if (i == 0) { /* true */ p = bar(); } return *p; /* W0422 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 6 | | W0117 | 3 | 5 | | W0460 | 11 | 12 | | C1000 | | | | C1003 | 5 | 10 | | C1002 | 7 | 11 | | W0422 | 11 | 12 | | C1000 | | | | C1005 | 5 | 10 | | C1001 | 7 | 11 | | C1005 | 8 | 11 | | W0100 | 5 | 10 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: possible null-dereference because of an incomplete selection statement Given a target source named "fixture.c" with: """ static void foo(void) { int i; int *p; switch (rand()) { case 0: /* false */ p = &i; break; case 1: /* true */ p = NULL; break; default: return; } *p = 5; /* W0422 */ if (i < rand()) { /* false */ p = &i; } *p = 6; /* W0422 */ if (rand() < 1) { /* false */ p = &i; } *p = 7; /* W0422 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0109 | 6 | 13 | | W0459 | 8 | 13 | | C1000 | | | | C1003 | 3 | 9 | | W0422 | 17 | 5 | | C1000 | | | | C1005 | 4 | 10 | | C1002 | 7 | 5 | | C1001 | 10 | 5 | | C1004 | 11 | 11 | | W0459 | 19 | 11 | | C1000 | | | | C1003 | 3 | 9 | | W0459 | 20 | 13 | | C1000 | | | | C1003 | 3 | 9 | | W0422 | 23 | 5 | | C1000 | | | | C1005 | 4 | 10 | | C1002 | 7 | 5 | | C1001 | 10 | 5 | | C1004 | 11 | 11 | | C1002 | 19 | 11 | | W0459 | 26 | 13 | | C1000 | | | | C1003 | 3 | 9 | | W0422 | 29 | 5 | | C1000 | | | | C1005 | 4 | 10 | | C1002 | 7 | 5 | | C1001 | 10 | 5 | | C1004 | 11 | 11 | | C1002 | 19 | 11 | | C1002 | 25 | 16 | | W0100 | 3 | 9 | | W1071 | 1 | 13 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: possible null-dereference because of an incomplete iteration statement Given a target source named "fixture.c" with: """ static void foo(void) { int i; int *p; switch (rand()) { case 0: /* false */ p = &i; break; case 1: /* true */ p = NULL; break; default: return; } *p = 5; /* W0422 */ for (i = 0; i < rand(); ++i) { /* false */ p = &i; } *p = 6; /* W0422 */ while (rand() < 1) { /* false */ p = &i; } *p = 7; /* W0422 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0109 | 6 | 13 | | W0459 | 8 | 13 | | C1000 | | | | C1003 | 3 | 9 | | W0422 | 17 | 5 | | C1000 | | | | C1005 | 4 | 10 | | C1002 | 7 | 5 | | C1001 | 10 | 5 | | C1004 | 11 | 11 | | W0422 | 23 | 5 | | C1000 | | | | C1005 | 4 | 10 | | C1002 | 7 | 5 | | C1001 | 10 | 5 | | C1004 | 11 | 11 | | C1002 | 19 | 19 | | W0422 | 29 | 5 | | C1000 | | | | C1005 | 4 | 10 | | C1002 | 7 | 5 | | C1001 | 10 | 5 | | C1004 | 11 | 11 | | C1002 | 19 | 19 | | C1002 | 25 | 19 | | W1071 | 1 | 13 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W1061.feature0000644000004100000410000001003312340630463021062 0ustar www-datawww-dataFeature: W1061 W1061 detects that a value of the inconsistently typed non-constant expression is passed to a enum typed parameter. Scenario: non-constant `int' typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; extern void foo(enum Color); static void bar(const int i) { foo(i + 1); /* W1061 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 4 | 13 | | W1076 | 6 | 13 | | W0723 | 8 | 11 | | W0727 | 8 | 11 | | W9003 | 8 | 11 | | W1061 | 8 | 11 | | W0629 | 6 | 13 | | W0628 | 6 | 13 | Scenario: non-constant consistent enum typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; extern void foo(enum Color); static void bar(const enum Color c) { foo(c); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 4 | 13 | | W1076 | 6 | 13 | | W0629 | 6 | 13 | | W0628 | 6 | 13 | Scenario: non-constant inconsistent enum typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; extern void foo(enum Color); static void bar(const enum Fruit f) { foo(f); /* W1061 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 4 | 13 | | W1076 | 6 | 13 | | W0727 | 8 | 9 | | W9003 | 8 | 9 | | W1056 | 8 | 9 | | W1061 | 8 | 9 | | W0629 | 6 | 13 | | W0628 | 6 | 13 | Scenario: constant consistent `int' typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; extern void foo(enum Color); static void bar(void) { foo(2); /* OK but W1053 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 3 | 13 | | W1076 | 5 | 13 | | W9003 | 7 | 9 | | W1053 | 7 | 9 | | W0629 | 5 | 13 | | W0628 | 5 | 13 | Scenario: constant consistent enum typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; extern void foo(enum Color); static void bar(void) { foo(RED + 1); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 3 | 13 | | W1076 | 5 | 13 | | W9003 | 7 | 15 | | W0629 | 5 | 13 | | W0628 | 5 | 13 | Scenario: constant inconsistent enum typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; extern void foo(enum Color); static void bar(void) { foo(ORANGE + 1); /* OK but W0728 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 4 | 13 | | W1076 | 6 | 13 | | W9003 | 8 | 18 | | W0727 | 8 | 16 | | W9003 | 8 | 16 | | W0728 | 8 | 16 | | W0629 | 6 | 13 | | W0628 | 6 | 13 | adlint-3.2.14/features/code_check/W0747.feature0000644000004100000410000001047012340630463021101 0ustar www-datawww-dataFeature: W0747 W0747 detects that `short' value is converted into `signed char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { signed char b = a; /* W0747 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0747 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { signed char b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 21 | | C1000 | | | | C1006 | 1 | 16 | | W0100 | 3 | 17 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { signed char b; b = a; /* W0747 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0747 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { signed char b; b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 16 | | W0100 | 3 | 17 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(short a) { bar(a); /* W0747 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0747 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(short a) { bar((signed char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 16 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(short a) { return a; /* W0747 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0747 | 3 | 12 | | W0381 | 3 | 5 | | W0104 | 1 | 23 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(short a) { return (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 23 | | W0104 | 1 | 23 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0205.feature0000644000004100000410000001000212340630463021055 0ustar www-datawww-dataFeature: W0205 W0205 detects that `unsigned long' value is converted into `long double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { long double b = a; /* W0205 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0205 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { long double b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { long double b; b = a; /* W0205 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0205 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { long double b; b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(unsigned long a) { bar(a); /* W0205 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0205 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(unsigned long a) { bar((long double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(unsigned long a) { return a; /* W0205 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0205 | 3 | 12 | | W0341 | 3 | 5 | | W0104 | 1 | 31 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(unsigned long a) { return (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0104 | 1 | 31 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0001.feature0000644000004100000410000000244112340630463021057 0ustar www-datawww-dataFeature: W0001 W0001 detects that a number of the expression grouping is greater than 32. Scenario: deeply grouped in initializer Given a target source named "fixture.c" with: """ static void foo(void) { const int a = 10; const int b = 20; const int c = (((((((((((((((((((((((((((((((((a + b))))))))))))))))))))))))))))))))); /* W0001 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0629 | 1 | 13 | | W0001 | 5 | 51 | | W0628 | 1 | 13 | Scenario: deeply grouped in expression-statement Given a target source named "fixture.c" with: """ static void foo(void) { const int a = 10; const int b = 20; int c; c = (((((((((((((((((((((((((((((((((a + b))))))))))))))))))))))))))))))))); /* W0001 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0100 | 5 | 9 | | W0629 | 1 | 13 | | W0001 | 6 | 41 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0160.feature0000644000004100000410000001061212340630463021064 0ustar www-datawww-dataFeature: W0160 W0160 detects that `signed char' value is converted into `unsigned long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned long b = a; /* W0160 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0160 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned long b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 23 | | C1000 | | | | C1006 | 1 | 22 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned long b; b = a; /* W0160 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0160 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { unsigned long b; b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 22 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(signed char a) { bar(a); /* W0160 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0160 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(signed char a) { bar((unsigned long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 22 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(signed char a) { return a; /* W0160 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0160 | 3 | 12 | | W0296 | 3 | 5 | | W0104 | 1 | 31 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(signed char a) { return (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 31 | | W0104 | 1 | 31 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0712.feature0000644000004100000410000000657012340630463021077 0ustar www-datawww-dataFeature: W0712 W0712 detects that operand of left side of relational expression is `effectively boolean'. Scenario: a relational expression Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a > b) > (c + d); /* W0712 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 25 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0712 | 3 | 12 | | W0628 | 1 | 12 | Scenario: an equality expression Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a == b) > (c + d); /* W0712 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 26 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0712 | 3 | 12 | | W0628 | 1 | 12 | Scenario: a logical expression Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a && b) > (c + d); /* W0712 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 26 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0712 | 3 | 12 | | W0628 | 1 | 12 | Scenario: a shift expression Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a << b) > (c + d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0570 | 3 | 15 | | C1000 | | | | C1006 | 1 | 20 | | W0572 | 3 | 15 | | W0794 | 3 | 15 | | W0723 | 3 | 26 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: an arithmetic expression Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a + b) > (c + d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 15 | | W0723 | 3 | 25 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0483.feature0000644000004100000410000000415412340630463021100 0ustar www-datawww-dataFeature: W0483 W0483 detects that the macro defines only storage-class-specifier and type-qualifier. Scenario: storage-class-specifier and `const' qualifier Given a target source named "fixture.c" with: """ #define CONST_1 static const /* W0483 */ #define CONST_2 extern const /* W0483 */ #define CONST_3 auto const /* W0483 */ #define CONST_4 register const /* W0483 */ #define CONST_5 typedef const /* W0483 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0483 | 1 | 1 | | W0483 | 2 | 1 | | W0483 | 3 | 1 | | W0483 | 4 | 1 | | W0483 | 5 | 1 | Scenario: storage-class-specifier and `volatile' qualifier Given a target source named "fixture.c" with: """ #define VOL_1 static volatile /* W0483 */ #define VOL_2 extern volatile /* W0483 */ #define VOL_3 auto volatile /* W0483 */ #define VOL_4 register volatile /* W0483 */ #define VOL_5 typedef volatile /* W0483 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0483 | 1 | 1 | | W0483 | 2 | 1 | | W0483 | 3 | 1 | | W0483 | 4 | 1 | | W0483 | 5 | 1 | Scenario: storage-class-specifier, `const' qualifier and the others Given a target source named "fixture.c" with: """ #define MACRO static const int a /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0479 | 1 | 1 | Scenario: storage-class-specifier, `volatile' qualifier and the others Given a target source named "fixture.c" with: """ #define MACRO volatile static int a /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0479 | 1 | 1 | adlint-3.2.14/features/code_check/W0787.feature0000644000004100000410000000345612340630463021113 0ustar www-datawww-dataFeature: W0787 W0787 detects that a variable defined with a type which is different with one of previously defined variable in the other scope. Scenario: different types of local variables of the same name Given a target source named "fixture.c" with: """ int foo(void) { int retval = 0; return retval; } long bar(void) { long retval = 0; /* OK */ return retval; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0100 | 3 | 9 | | W0117 | 7 | 6 | | W0100 | 9 | 10 | | W0628 | 1 | 5 | | W0628 | 7 | 6 | Scenario: different types of `extern' variables of the same name Given a target source named "fixture.c" with: """ void foo(void) { extern int retval; retval = 0; } void bar(void) { extern long retval; /* W0787 */ retval = 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0118 | 3 | 16 | | W0623 | 3 | 16 | | W0117 | 7 | 6 | | W0118 | 9 | 17 | | W0623 | 9 | 17 | | W0787 | 9 | 17 | | C0001 | 3 | 16 | | W0628 | 1 | 6 | | W0628 | 7 | 6 | | W0770 | 3 | 16 | | C0001 | 9 | 17 | | W1037 | 3 | 16 | | C0001 | 9 | 17 | | W0770 | 9 | 17 | | C0001 | 3 | 16 | | W1037 | 9 | 17 | | C0001 | 3 | 16 | adlint-3.2.14/features/code_check/W0580.feature0000644000004100000410000000137312340630463021076 0ustar www-datawww-dataFeature: W0580 W0580 detects that address of the function local static variable is assigned to the global pointer variable declared in wider scope. Scenario: assigning address of an array element to the global pointer Given a target source named "fixture.c" with: """ extern int *p; static void foo(void) { static int a[] = { 1, 2, 3 }; p = &a[1]; /* W0580 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W1076 | 3 | 13 | | W0580 | 6 | 7 | | W0100 | 5 | 16 | | W0629 | 3 | 13 | | W0628 | 3 | 13 | adlint-3.2.14/features/code_check/W0756.feature0000644000004100000410000001003412340630463021075 0ustar www-datawww-dataFeature: W0756 W0756 detects that `unsigned long' value is converted into `unsigned char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { unsigned char b = a; /* W0756 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0756 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { unsigned char b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { unsigned char b; b = a; /* W0756 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0756 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { unsigned char b; b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(unsigned long a) { bar(a); /* W0756 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0756 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(unsigned long a) { bar((unsigned char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(unsigned long a) { return a; /* W0756 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0756 | 3 | 12 | | W0390 | 3 | 5 | | W0104 | 1 | 33 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(unsigned long a) { return (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0104 | 1 | 33 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0167.feature0000644000004100000410000001046312340630463021077 0ustar www-datawww-dataFeature: W0167 W0167 detects that `int' value is converted into `unsigned int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { unsigned int b = a; /* W0167 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0167 | 3 | 22 | | W0100 | 3 | 18 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { unsigned int b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 22 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 18 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { unsigned int b; b = a; /* W0167 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0167 | 4 | 9 | | W0100 | 3 | 18 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { unsigned int b; b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 18 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(int a) { bar(a); /* W0167 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0167 | 5 | 9 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(int a) { bar((unsigned int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 14 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(int a) { return a; /* W0167 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0167 | 3 | 12 | | W0303 | 3 | 5 | | W0104 | 1 | 22 | | W0628 | 1 | 14 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(int a) { return (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 22 | | W0104 | 1 | 22 | | W0628 | 1 | 14 | adlint-3.2.14/features/code_check/W0125.feature0000644000004100000410000000752412340630463021075 0ustar www-datawww-dataFeature: W0125 W0125 detects that `char' value is converted into `long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { long b = a; /* W0125 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0125 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { long b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { long b; b = a; /* W0125 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0125 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { long b; b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(char a) { bar(a); /* W0125 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0125 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(char a) { bar((long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long foo(char a) { return a; /* W0125 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0125 | 3 | 12 | | W0261 | 3 | 5 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long foo(char a) { return (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0210.feature0000644000004100000410000001035612340630463021065 0ustar www-datawww-dataFeature: W0210 W0210 detects that `unsigned long long' value is converted into `double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { double b = a; /* W0210 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0210 | 3 | 16 | | W0100 | 3 | 12 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { double b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { double b; b = a; /* W0210 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0210 | 4 | 9 | | W0100 | 3 | 12 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { double b; b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(unsigned long long a) { bar(a); /* W0210 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0210 | 5 | 9 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(unsigned long long a) { bar((double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ double foo(unsigned long long a) { return a; /* W0210 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0210 | 3 | 12 | | W0346 | 3 | 5 | | W0104 | 1 | 31 | | W0834 | 1 | 12 | | W0628 | 1 | 8 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ double foo(unsigned long long a) { return (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0104 | 1 | 31 | | W0834 | 1 | 12 | | W0628 | 1 | 8 | adlint-3.2.14/features/code_check/W0135.feature0000644000004100000410000000765612340630463021104 0ustar www-datawww-dataFeature: W0135 W0135 detects that `unsigned short' value is converted into `char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { char b = a; /* W0135 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0135 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { char b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { char b; b = a; /* W0135 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0135 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { char b; b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(unsigned short a) { bar(a); /* W0135 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0135 | 5 | 9 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(unsigned short a) { bar((char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ char foo(unsigned short a) { return a; /* W0135 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0135 | 3 | 12 | | W0271 | 3 | 5 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ char foo(unsigned short a) { return (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0482.feature0000644000004100000410000000375712340630463021107 0ustar www-datawww-dataFeature: W0482 W0482 detects that the macro defines type specifier. Scenario: macro defines type specifier. Given a target source named "fixture.c" with: """ #define VOID void /* W0482 */ #define INT int /* W0482 */ #define LONG long /* W0482 */ #define FLOAT float /* W0482 */ #define DOUBLE double /* W0482 */ #define SHORT short /* W0482 */ #define CHAR char /* W0482 */ #define STR struct /* W0482 */ #define UNI union /* W0482 */ #define ENUM enum /* W0482 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0482 | 1 | 1 | | W0482 | 2 | 1 | | W0482 | 3 | 1 | | W0482 | 4 | 1 | | W0482 | 5 | 1 | | W0482 | 6 | 1 | | W0482 | 7 | 1 | | W0482 | 8 | 1 | | W0482 | 9 | 1 | | W0482 | 10 | 1 | Scenario: macro defines signed specifier Given a target source named "fixture.c" with: """ #define SIGNED signed /* W0482 */ #define UNSIGNED unsigned /* W0482 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0482 | 1 | 1 | | W0482 | 2 | 1 | Scenario: macro defines type specifier and a value Given a target source named "fixture.c" with: """ #define UINT unisgned int 10 /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | Scenario: macro defines a struct Given a target source named "fixture.c" with: """ #define STR struct{int a; int b} /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0479 | 1 | 1 | adlint-3.2.14/features/code_check/W0245.feature0000644000004100000410000000766212340630463021103 0ustar www-datawww-dataFeature: W0245 W0245 detects that `unsigned char' value is converted into `short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { short b = a; /* W0245 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0245 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { short b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { short b; b = a; /* W0245 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0245 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { short b; b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(unsigned char a) { bar(a); /* W0245 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0245 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(unsigned char a) { bar((short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ short foo(unsigned char a) { return a; /* W0245 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0245 | 3 | 12 | | W0401 | 3 | 5 | | W0104 | 1 | 25 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ short foo(unsigned char a) { return (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 25 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0425.feature0000644000004100000410000002053212340630463021072 0ustar www-datawww-dataFeature: W0425 W0425 detects that two or more declarations or statements are in a line. Scenario: two declarations in a line Given a target source named "fixture.c" with: """ int foo(void) { int i = 0; int j = 0; /* W0425 */ return i + j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0100 | 3 | 9 | | W0100 | 3 | 20 | | W0425 | 3 | 20 | | W0628 | 1 | 5 | Scenario: two declarators in a declaration Given a target source named "fixture.c" with: """ int foo(void) { int i = 0, j = 0; /* W0425 */ return i + j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0100 | 3 | 9 | | W0100 | 3 | 16 | | W0425 | 3 | 16 | | W0628 | 1 | 5 | Scenario: a declaration and a jump-statement in a line Given a target source named "fixture.c" with: """ int foo(void) { int i = 0; return i + 1; /* W0425 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0100 | 3 | 9 | | W0425 | 3 | 16 | | W0628 | 1 | 5 | Scenario: a expression-statement and a jump-statement in a line Given a target source named "fixture.c" with: """ int foo(void) { int i; i = 0; return i + 1; /* W0425 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0100 | 3 | 9 | | W0425 | 4 | 12 | | W0628 | 1 | 5 | Scenario: a if-else-statement in a line Given a target source named "fixture.c" with: """ int foo(int i) { if (i == 0) return 0; else return 1; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 13 | | W1071 | 1 | 5 | | W0414 | 3 | 17 | | W0414 | 3 | 32 | | W0628 | 1 | 5 | Scenario: a if-else-statement with compound-statements in a line Given a target source named "fixture.c" with: """ int foo(int i) { if (i == 0) { return 0; } else { return 1; } /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 13 | | W1071 | 1 | 5 | | W0628 | 1 | 5 | Scenario: a if-statement with compound-statements in a line Given a target source named "fixture.c" with: """ int foo(int i) { if (i == 0) { return 0; } /* OK */ return 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 13 | | W1071 | 1 | 5 | | W0628 | 1 | 5 | Scenario: a if-statement in a line Given a target source named "fixture.c" with: """ int foo(int i) { if (i == 0) return 0; /* OK */ return 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 13 | | W1071 | 1 | 5 | | W0414 | 3 | 17 | | W0628 | 1 | 5 | Scenario: a for-statement in a line Given a target source named "fixture.c" with: """ int foo(int i) { int j, k = 1; /* W0425 */ for (j = 0; j < i; j++) k *= 2; /* OK */ return k; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 13 | | W0414 | 4 | 29 | | W0425 | 3 | 12 | | W0628 | 1 | 5 | Scenario: a for-statement with a compound-statement in a line Given a target source named "fixture.c" with: """ int foo(int i) { int j, k = 1; /* W0425 */ for (j = 0; j < i; j++) { k *= 2; } /* OK */ return k; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 13 | | W0425 | 3 | 12 | | W0628 | 1 | 5 | Scenario: extra statement after if-statement in a line Given a target source named "fixture.c" with: """ int foo(int i) { if (i == 0) return 0; return 1; /* W0425 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 13 | | W1071 | 1 | 5 | | W0414 | 3 | 17 | | W0425 | 3 | 27 | | W0628 | 1 | 5 | Scenario: extra statement after for-statement in a line Given a target source named "fixture.c" with: """ int foo(int i) { int j, k = 1; /* W0425 */ for (j = 0; j < i; j++) k *= 2; return k; /* W0425 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 13 | | W0414 | 4 | 29 | | W0425 | 3 | 12 | | W0425 | 4 | 37 | | W0628 | 1 | 5 | Scenario: two member-declarations in a line Given a target source named "fixture.c" with: """ struct foo { int i; int j; }; /* W0425 */ union bar { int i; int j; }; /* W0425 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0551 | 2 | 7 | | W0425 | 1 | 25 | | W0425 | 2 | 24 | Scenario: two declarators in a member-declaration Given a target source named "fixture.c" with: """ struct foo { int *p, i; }; /* W0425 */ union bar { int *p, i; }; /* W0425 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0551 | 2 | 7 | | W0425 | 1 | 22 | | W0425 | 2 | 21 | Scenario: two declarators in a member-declaration Given a target source named "fixture.c" with: """ extern struct { int i; } foo; /* OK */ extern union { int i; } bar; /* OK */ typedef struct { int i; } baz; /* OK */ typedef union { int i; } qux; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 26 | | W0118 | 2 | 25 | | W0551 | 2 | 8 | | W0551 | 4 | 9 | Scenario: two declarators in a member-declaration Given a target source named "fixture.c" with: """ extern struct { int *p, i; } foo; /* W0425 */ extern union { int *p, i; } bar; /* W0425 */ typedef struct { int *p, i; } baz; /* W0425 */ typedef union { int *p, i; } qux; /* W0425 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 30 | | W0118 | 2 | 29 | | W0551 | 2 | 8 | | W0551 | 4 | 9 | | W0425 | 1 | 25 | | W0425 | 2 | 24 | | W0425 | 3 | 26 | | W0425 | 4 | 25 | adlint-3.2.14/features/code_check/W1074.feature0000644000004100000410000000751312340630463021077 0ustar www-datawww-dataFeature: W1074 W1074 detects that an expression with possible side-effects appears in the `sizeof' expression. Scenario: postfix-increment-expression in the sizeof-expression Given a target source named "fixture.c" with: """ static int foo(void) { int i = 0; if (sizeof(i++) == 4) { /* W1074 */ return 0; } else { return 1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0168 | 5 | 24 | | W0609 | 5 | 21 | | W0612 | 5 | 21 | | W0100 | 3 | 9 | | W0629 | 1 | 12 | | W1074 | 5 | 15 | | W9001 | 9 | 9 | | W0628 | 1 | 12 | Scenario: nested sizeof-expression Given a target source named "fixture.c" with: """ static int foo(void) { int i = 0; if (sizeof(1 + sizeof(i++)) == 5) { /* W1074 */ return 0; } else { return 1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0168 | 5 | 36 | | W0610 | 5 | 33 | | W0613 | 5 | 33 | | W0100 | 3 | 9 | | W0629 | 1 | 12 | | W1074 | 5 | 26 | | W9001 | 6 | 9 | | W0628 | 1 | 12 | Scenario: ungrouped postfix-increment-expression in the sizeof-expression Given a target source named "fixture.c" with: """ static int foo(void) { int i = 0; if (sizeof i++ == 4) { /* W1074 */ return 0; } else { return 1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0168 | 5 | 23 | | W0609 | 5 | 20 | | W0612 | 5 | 20 | | W0100 | 3 | 9 | | W0629 | 1 | 12 | | W1074 | 5 | 17 | | W9001 | 9 | 9 | | W0628 | 1 | 12 | Scenario: function-call-expression in the sizeof-expression Given a target source named "fixture.c" with: """ extern int bar(void); static int foo(void) { if (sizeof(bar()) == 4) { /* W1074 */ return 0; } else { return 1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1076 | 3 | 12 | | W0168 | 5 | 26 | | W0609 | 5 | 23 | | W0612 | 5 | 23 | | W0629 | 3 | 12 | | W1074 | 5 | 15 | | W9001 | 9 | 9 | | W0628 | 3 | 12 | Scenario: array-subscript-expression in the sizeof-expression Given a target source named "fixture.c" with: """ extern int a[]; static int foo(void) { if (sizeof(a[0]) == 4) { /* OK */ return 0; } else { return 1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1077 | 1 | 12 | | W1076 | 3 | 12 | | W0168 | 5 | 25 | | W0609 | 5 | 22 | | W0612 | 5 | 22 | | W0629 | 3 | 12 | | W9001 | 9 | 9 | | W0628 | 3 | 12 | adlint-3.2.14/features/code_check/W0185.feature0000644000004100000410000000764012340630463021102 0ustar www-datawww-dataFeature: W0185 W0185 detects that `signed char' value is converted into `float' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { float b = a; /* W0185 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0185 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { float b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { float b; b = a; /* W0185 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0185 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { float b; b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(signed char a) { bar(a); /* W0185 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0185 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(signed char a) { bar((float) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ float foo(signed char a) { return a; /* W0185 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0185 | 3 | 12 | | W0321 | 3 | 5 | | W0104 | 1 | 23 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ float foo(signed char a) { return (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 23 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0235.feature0000644000004100000410000000760612340630463021100 0ustar www-datawww-dataFeature: W0235 W0235 detects that `long double' value is converted into `int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { int b = a; /* W0235 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0235 | 3 | 13 | | W0100 | 3 | 9 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { int b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 9 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { int b; b = a; /* W0235 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0235 | 4 | 9 | | W0100 | 3 | 9 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { int b; b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 9 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(long double a) { bar(a); /* W0235 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0235 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(long double a) { bar((int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ int foo(long double a) { return a; /* W0235 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0235 | 3 | 12 | | W0371 | 3 | 5 | | W0104 | 1 | 21 | | W0628 | 1 | 5 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ int foo(long double a) { return (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 21 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0713.feature0000644000004100000410000000642712340630463021101 0ustar www-datawww-dataFeature: W0713 W0713 detects that operands of both sides of relational expression is `effectively boolean'. Scenario: relational expressions Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a > b) > (c > d); /* W0713 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0713 | 3 | 20 | | W0628 | 1 | 12 | Scenario: an equality expression Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a == b) > (c != d); /* W0713 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0713 | 3 | 21 | | W0628 | 1 | 12 | Scenario: logical expressions Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a && b) > (c || d); /* W0713 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0713 | 3 | 21 | | W0628 | 1 | 12 | Scenario: shift expressions Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a << b) > (c ^ d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0570 | 3 | 15 | | C1000 | | | | C1006 | 1 | 20 | | W0572 | 3 | 15 | | W0794 | 3 | 15 | | W0572 | 3 | 26 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: arithmetic expressions Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a + b) > (c - d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 15 | | W0723 | 3 | 25 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0156.feature0000644000004100000410000001202512340630463021071 0ustar www-datawww-dataFeature: W0156 W0156 detects that `unsigned long long' value is converted into `long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { long long b = a; /* W0156 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0156 | 3 | 19 | | W0100 | 3 | 15 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { long long b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 19 | | C1000 | | | | C1006 | 1 | 29 | | W0100 | 3 | 15 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0834 | 3 | 20 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { long long b; b = a; /* W0156 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0156 | 4 | 9 | | W0100 | 3 | 15 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { long long b; b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 29 | | W0100 | 3 | 15 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(unsigned long long a) { bar(a); /* W0156 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0156 | 5 | 9 | | W0104 | 3 | 29 | | W0834 | 1 | 17 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(unsigned long long a) { bar((long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 29 | | W0104 | 3 | 29 | | W0834 | 1 | 17 | | W0834 | 3 | 10 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(unsigned long long a) { return a; /* W0156 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0156 | 3 | 12 | | W0292 | 3 | 5 | | W0104 | 1 | 34 | | W0834 | 1 | 1 | | W0834 | 1 | 15 | | W0628 | 1 | 11 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(unsigned long long a) { return (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 34 | | W0104 | 1 | 34 | | W0834 | 1 | 1 | | W0834 | 1 | 15 | | W0834 | 3 | 13 | | W0628 | 1 | 11 | adlint-3.2.14/features/code_check/W0460.feature0000644000004100000410000002277012340630463021077 0ustar www-datawww-dataFeature: W0460 W0460 detects that a value of the variable is not possibly initialized. Scenario: array element is not possibly initialized Given a target source named "fixture.c" with: """ static int foo(void) { int a[5]; if (a[1] == 0) { /* W0459 */ a[0] = 0; } return a[0]; /* W0460 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0459 | 5 | 14 | | C1000 | | | | C1003 | 3 | 9 | | W0460 | 9 | 13 | | C1000 | | | | C1003 | 3 | 9 | | C1002 | 5 | 14 | | W0629 | 1 | 12 | | W0950 | 3 | 11 | | W0628 | 1 | 12 | Scenario: possible uninitialized value reference because of an incomplete if statement Given a target source named "fixture.c" with: """ void foo(int i) { int j; if (i == 0) { /* false */ j = 0; } return j; /* W0460 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0460 | 9 | 12 | | C1000 | | | | C1003 | 3 | 9 | | C1002 | 5 | 11 | | W0100 | 3 | 9 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: possible uninitialized value reference because of an incomplete if statement Given a target source named "fixture.c" with: """ void foo(int i) { int j; if (i < 0) { /* false */ j = 1; if (i < -10) { j = 2; } else if (i < -5) { j = 3; } } return j; /* W0460 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0460 | 15 | 12 | | C1000 | | | | C1003 | 3 | 9 | | C1002 | 5 | 11 | | W0104 | 1 | 14 | | W1069 | 7 | 9 | | W0628 | 1 | 6 | Scenario: possible uninitialized value reference because of an incomplete if-else-if statement Given a target source named "fixture.c" with: """ void foo(int i) { int j; if (i < 0) { /* true */ if (i < -10) { /* false */ j = 2; } else if (i < -5) { /* false */ j = 3; } } else { j = 1; } return j; /* W0460 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0460 | 17 | 12 | | C1000 | | | | C1003 | 3 | 9 | | C1001 | 5 | 11 | | C1002 | 6 | 15 | | C1002 | 9 | 20 | | W0104 | 1 | 14 | | W1069 | 6 | 9 | | W0628 | 1 | 6 | Scenario: possible uninitialized value reference because of an incomplete if statement Given a target source named "fixture.c" with: """ void foo(int i) { int j; if (i < 0) { /* false */ if (i < -10) { j = 2; } else if (i < -5) { j = 3; } else { j = 1; } } return j; /* W0460 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0460 | 17 | 12 | | C1000 | | | | C1003 | 3 | 9 | | C1002 | 5 | 11 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: possible uninitialized value reference because of missing assignment in a complete if statement Given a target source named "fixture.c" with: """ void foo(int i) { int j; if (i < 0) { /* true */ if (i < -10) { /* false */ j = 2; } else if (i < -5) { /* false */ j = 3; } else { } } else { j = 1; } return j; /* W0460 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0460 | 19 | 12 | | C1000 | | | | C1003 | 3 | 9 | | C1001 | 5 | 11 | | C1002 | 6 | 15 | | C1002 | 9 | 20 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: possible uninitialized value reference because of an incomplete if statement Given a target source named "fixture.c" with: """ void foo(int i) { int j; if (i < 0) { /* false */ j = 1; if (i < -10) { j = 2; } } return j; /* W0460 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0460 | 12 | 12 | | C1000 | | | | C1003 | 3 | 9 | | C1002 | 5 | 11 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: possible uninitialized value reference because of an incomplete if-else-if statement Given a target source named "fixture.c" with: """ int foo(int i) { int j; if (i > 2) { /* true */ if (i == 5) { /* false */ j = 5; } else if (i == 6) { /* false */ j = 6; } } else if (i < 0) { j = -1; } return j; /* W0460 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0460 | 17 | 12 | | C1000 | | | | C1003 | 3 | 9 | | C1001 | 5 | 11 | | C1002 | 6 | 15 | | C1002 | 9 | 20 | | W0104 | 1 | 13 | | W1069 | 5 | 5 | | W1069 | 6 | 9 | | W0628 | 1 | 5 | Scenario: variable is not possibly initialized because of an incomplete selection statement Given a target source named "fixture.c" with: """ struct bar { int x; int y; }; struct bar a[3]; int foo(int i, int j) { int k; if (i < 0) { struct bar b; if (j == 0) { return 0; } k = j < 10 ? b.x : b.y; } else if (i > 10) { k = j ? a[0].x : a[1].y; } return k; /* W0460 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 6 | 12 | | W0117 | 8 | 5 | | W0459 | 17 | 20 | | C1000 | | | | C1003 | 13 | 20 | | W0100 | 13 | 20 | | W0460 | 23 | 12 | | C1000 | | | | C1003 | 10 | 9 | | C1002 | 12 | 11 | | C1002 | 19 | 16 | | W0104 | 8 | 13 | | W0104 | 8 | 20 | | W1071 | 8 | 5 | | W0950 | 6 | 14 | | W1069 | 12 | 5 | | W0501 | 17 | 20 | | W0114 | 20 | 13 | | W0628 | 8 | 5 | | W0589 | 6 | 12 | | W0593 | 6 | 12 | Scenario: variable is initialized by a complete selection statement Given a target source named "fixture.c" with: """ struct bar { int x; int y; }; struct bar a[3]; int foo(int i, int j) { int k; if (i < 0) { struct bar b; if (j == 0) { return 0; } k = j < 10 ? b.x : b.y; } else { k = j ? a[0].x : a[1].y; } return k; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 6 | 12 | | W0117 | 8 | 5 | | W0459 | 17 | 20 | | C1000 | | | | C1003 | 13 | 20 | | W0100 | 13 | 20 | | W0104 | 8 | 13 | | W0104 | 8 | 20 | | W1071 | 8 | 5 | | W0950 | 6 | 14 | | W0501 | 17 | 20 | | W0114 | 20 | 13 | | W0628 | 8 | 5 | | W0589 | 6 | 12 | | W0593 | 6 | 12 | adlint-3.2.14/features/code_check/W0811.feature0000644000004100000410000000432612340630463021074 0ustar www-datawww-dataFeature: W0811 W0811 detects that token sequence replaced by macro contains `defined' operator. Scenario: no macro replacement Given a target source named "fixture.c" with: """ #if defined(FOO) /* OK */ int i = 0; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | Scenario: expanding a wellformed `defined' operator Given a target source named "fixture.c" with: """ #define COND defined(FOO) #if COND /* W0811 */ int i = 0; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0811 | 3 | 5 | Scenario: expanding a wellformed expression contains `defined' operator from object-like macro Given a target source named "fixture.c" with: """ #define COND defined(FOO) && !defined(BAR) #if COND /* W0811 */ int i = 0; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0811 | 3 | 5 | Scenario: expanding a wellformed `defined' operator from function-like macro Given a target source named "fixture.c" with: """ #define COND(id) defined(id) #if COND(FOO) /* W0811 */ int i = 0; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0811 | 3 | 5 | | W0443 | 1 | 1 | Scenario: expanding a wellformed expression contains `defined' operator from function-like macro Given a target source named "fixture.c" with: """ #define COND(id1, id2) defined(id1) && !defined(id2) #if COND(FOO, BAR) /* W0811 */ int i = 0; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0811 | 3 | 5 | | W0443 | 1 | 1 | adlint-3.2.14/features/code_check/W0024.feature0000644000004100000410000001670412340630463021073 0ustar www-datawww-dataFeature: W0024 W0024 detects that a pointer variable appears in the increment or decrement operation. Scenario: postfix-increment-expression with a pointer variable Given a target source named "fixture.c" with: """ const int *func(const int *p) { return p++; /* W0024 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0024 | 3 | 13 | | W0628 | 1 | 12 | Scenario: prefix-increment-expression with a pointer variable Given a target source named "fixture.c" with: """ const int *func(const int *p) { return ++p; /* W0024 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0024 | 3 | 12 | | W0424 | 3 | 14 | | C1000 | | | | C1005 | 1 | 28 | | W0628 | 1 | 12 | Scenario: a pointer variable as lhs of the additive-expression Given a target source named "fixture.c" with: """ const int *func(const int * const p) { return p + 1; /* W0024 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W9003 | 3 | 16 | | W0024 | 3 | 14 | | W0424 | 3 | 12 | | C1000 | | | | C1005 | 1 | 35 | | W0628 | 1 | 12 | Scenario: a pointer variable as rhs of the additive-expression Given a target source named "fixture.c" with: """ const int *func(const int * const p) { return 1 + p; /* W0024 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W9003 | 3 | 12 | | W0024 | 3 | 14 | | W0424 | 3 | 16 | | C1000 | | | | C1005 | 1 | 35 | | W0628 | 1 | 12 | Scenario: a pointer variable as lhs of the additive-expression Given a target source named "fixture.c" with: """ const int *func(const int *p) { p = p + 1; /* W0024 */ return p; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W9003 | 3 | 14 | | W0024 | 3 | 12 | | W0424 | 3 | 10 | | C1000 | | | | C1005 | 1 | 28 | | W0628 | 1 | 12 | Scenario: postfix-decrement-expression with a pointer variable Given a target source named "fixture.c" with: """ const int *func(const int *p) { return p--; /* W0024 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0024 | 3 | 13 | | W0424 | 3 | 12 | | C1000 | | | | C1005 | 1 | 28 | | W0628 | 1 | 12 | Scenario: prefix-decrement-expression with a pointer variable Given a target source named "fixture.c" with: """ const int *func(const int *p) { return --p; /* W0024 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0024 | 3 | 12 | | W0424 | 3 | 14 | | C1000 | | | | C1005 | 1 | 28 | | W0628 | 1 | 12 | Scenario: a pointer variable as lhs of the additive-expression Given a target source named "fixture.c" with: """ const int *func(const int * const p) { return p - 1; /* W0024 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W9003 | 3 | 16 | | W0024 | 3 | 14 | | W0424 | 3 | 12 | | C1000 | | | | C1005 | 1 | 35 | | W0628 | 1 | 12 | Scenario: a pointer variable as rhs of the additive-expression Given a target source named "fixture.c" with: """ const int *func(const int * const p) { return 1 - p; /* W0024 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W9003 | 3 | 12 | | W0024 | 3 | 14 | | W0424 | 3 | 16 | | C1000 | | | | C1005 | 1 | 35 | | W0628 | 1 | 12 | Scenario: pointer variables are incremented and decremented Given a target source named "fixture.c" with: """ const int *func(const int *p, const int *q) { return p++ & q--; /* W0024 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0024 | 3 | 13 | | W0024 | 3 | 19 | | W0424 | 3 | 18 | | C1000 | | | | C1005 | 1 | 42 | | W0424 | 3 | 13 | | W0424 | 3 | 19 | | W0628 | 1 | 12 | Scenario: pointer variables are incremented in arithmetic operations Given a target source named "fixture.c" with: """ const int *func(const int *p, const int *q) { return (p++) * (q++); /* W0024 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0024 | 3 | 14 | | W0024 | 3 | 22 | | W0023 | 3 | 18 | | W0424 | 3 | 12 | | W0424 | 3 | 20 | | W1052 | 3 | 18 | | W0628 | 1 | 12 | Scenario: pointer variable plus 2 Given a target source named "fixture.c" with: """ const int *func(const int * const p) { return p + 2; /* Ok but W0023 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W9003 | 3 | 16 | | W0023 | 3 | 14 | | W0424 | 3 | 12 | | C1000 | | | | C1005 | 1 | 35 | | W0628 | 1 | 12 | Scenario: pointer variable minus 2 Given a target source named "fixture.c" with: """ const int *func(const int * const p) { return p - 2; /* Ok but W0023 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W9003 | 3 | 16 | | W0023 | 3 | 14 | | W0424 | 3 | 12 | | C1000 | | | | C1005 | 1 | 35 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0021.feature0000644000004100000410000000442112340630463021061 0ustar www-datawww-dataFeature: W0021 W0021 detects that a pointer-cast deletes `volatile' qualifier. Scenario: casting volatile int pointer to int pointer Given a target source named "fixture.c" with: """ int foo(volatile int *p) { int *q; q = (int *) p; /* W0021 */ return -1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0021 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 23 | | W0105 | 1 | 23 | | W0628 | 1 | 5 | Scenario: casting volatile const int pointer to int pointer Given a target source named "fixture.c" with: """ int foo(volatile const int *p) { int *q; q = (int *) p; /* W0021 */ return -1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0019 | 4 | 9 | | W0021 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 29 | | W0628 | 1 | 5 | Scenario: assigning compatible volatile pointers Given a target source named "fixture.c" with: """ int foo(volatile int *p) { volatile int *q; q = p; /* OK */ return -1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0100 | 3 | 19 | | W0104 | 1 | 23 | | W0105 | 1 | 23 | | W0628 | 1 | 5 | Scenario: casting volatile int array pointer to int pointer Given a target source named "fixture.c" with: """ volatile int a[] = { 0, 1, 2 }; int foo(void) { volatile int *p = a; /* OK */ return -1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0117 | 3 | 5 | | W0100 | 5 | 19 | | W0628 | 3 | 5 | adlint-3.2.14/features/code_check/W0097.feature0000644000004100000410000000165712340630463021106 0ustar www-datawww-dataFeature: W0097 W0097 detects that a multiplicative-expression must cause division-by-zero. Scenario: dividing by global constant variable initialized with 0 Given a target source named "fixture.c" with: """ static const int i = 0; static int foo(void) { return 3 / i; /* W0097 */ } static int bar(void) { return 3 / i; /* W0097 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W0097 | 5 | 14 | | C1000 | | | | C1006 | 1 | 18 | | W1076 | 8 | 12 | | W0097 | 10 | 14 | | C1000 | | | | C1006 | 1 | 18 | | W0629 | 3 | 12 | | W0629 | 8 | 12 | | W0628 | 3 | 12 | | W0628 | 8 | 12 | adlint-3.2.14/features/code_check/W0213.feature0000644000004100000410000000767012340630463021075 0ustar www-datawww-dataFeature: W0213 W0213 detects that `float' value is converted into `signed char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { signed char b = a; /* W0213 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0213 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { signed char b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { signed char b; b = a; /* W0213 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0213 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { signed char b; b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(float a) { bar(a); /* W0213 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0213 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(float a) { bar((signed char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(float a) { return a; /* W0213 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0213 | 3 | 12 | | W0349 | 3 | 5 | | W0104 | 1 | 23 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(float a) { return (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0104 | 1 | 23 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0214.feature0000644000004100000410000000772212340630463021074 0ustar www-datawww-dataFeature: W0214 W0214 detects that `float' value is converted into `unsigned char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { unsigned char b = a; /* W0214 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0214 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { unsigned char b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { unsigned char b; b = a; /* W0214 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0214 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { unsigned char b; b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(float a) { bar(a); /* W0214 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0214 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(float a) { bar((unsigned char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(float a) { return a; /* W0214 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0214 | 3 | 12 | | W0350 | 3 | 5 | | W0104 | 1 | 25 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(float a) { return (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0104 | 1 | 25 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0234.feature0000644000004100000410000001002712340630463021066 0ustar www-datawww-dataFeature: W0234 W0234 detects that `long double' value is converted into `unsigned short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned short b = a; /* W0234 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0234 | 3 | 24 | | W0100 | 3 | 20 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned short b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 20 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned short b; b = a; /* W0234 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0234 | 4 | 9 | | W0100 | 3 | 20 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned short b; b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 20 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(long double a) { bar(a); /* W0234 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0234 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(long double a) { bar((unsigned short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(long double a) { return a; /* W0234 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0234 | 3 | 12 | | W0370 | 3 | 5 | | W0104 | 1 | 32 | | W0628 | 1 | 16 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(long double a) { return (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0104 | 1 | 32 | | W0628 | 1 | 16 | adlint-3.2.14/features/code_check/W0162.feature0000644000004100000410000001053712340630463021074 0ustar www-datawww-dataFeature: W0162 W0162 detects that `short' value is converted into `unsigned short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { unsigned short b = a; /* W0162 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0162 | 3 | 24 | | W0100 | 3 | 20 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { unsigned short b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 24 | | C1000 | | | | C1006 | 1 | 16 | | W0100 | 3 | 20 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { unsigned short b; b = a; /* W0162 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0162 | 4 | 9 | | W0100 | 3 | 20 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { unsigned short b; b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 16 | | W0100 | 3 | 20 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(short a) { bar(a); /* W0162 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0162 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(short a) { bar((unsigned short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 16 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(short a) { return a; /* W0162 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0162 | 3 | 12 | | W0298 | 3 | 5 | | W0104 | 1 | 26 | | W0628 | 1 | 16 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(short a) { return (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 26 | | W0104 | 1 | 26 | | W0628 | 1 | 16 | adlint-3.2.14/features/code_check/W0432.feature0000644000004100000410000000247512340630463021076 0ustar www-datawww-dataFeature: W0432 W0432 detects that indentation of this line does not match with the project's indentation style. Scenario: function-like macro replacement Given a target source named "fixture.c" with: """ extern int foo(int, int); #define bar(a, b) ((a) > 0) ? (a) : (b) #define baz(a, b) \ ((a) > 0) ? \ (a) : (b) void qux(void) { int i = 0; i = foo(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1, /* OK */ 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2); /* OK */ i = bar(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1, /* OK */ 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2); /* OK */ i = baz(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1, /* OK */ 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 3 | 1 | | W0442 | 4 | 1 | | W0118 | 1 | 12 | | W0117 | 8 | 6 | | W0609 | 14 | 9 | | W0609 | 16 | 9 | | W0443 | 3 | 1 | | W0443 | 4 | 1 | | W0628 | 8 | 6 | adlint-3.2.14/features/code_check/W0254.feature0000644000004100000410000001054612340630463021076 0ustar www-datawww-dataFeature: W0254 W0254 detects that `unsigned long' value is converted into `long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { long long b = a; /* W0254 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0254 | 3 | 19 | | W0100 | 3 | 15 | | W0104 | 1 | 24 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { long long b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 24 | | W0834 | 3 | 20 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { long long b; b = a; /* W0254 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0254 | 4 | 9 | | W0100 | 3 | 15 | | W0104 | 1 | 24 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { long long b; b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 24 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(unsigned long a) { bar(a); /* W0254 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0254 | 5 | 9 | | W0104 | 3 | 24 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(unsigned long a) { bar((long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(unsigned long a) { return a; /* W0254 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0254 | 3 | 12 | | W0410 | 3 | 5 | | W0104 | 1 | 29 | | W0834 | 1 | 1 | | W0628 | 1 | 11 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(unsigned long a) { return (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0104 | 1 | 29 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 11 | adlint-3.2.14/features/code_check/W0244.feature0000644000004100000410000001071312340630463021071 0ustar www-datawww-dataFeature: W0244 W0244 detects that `long double' value is converted into `unsigned long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned long long b = a; /* W0244 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0244 | 3 | 28 | | W0100 | 3 | 24 | | W0104 | 1 | 22 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned long long b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 24 | | W0104 | 1 | 22 | | W0834 | 3 | 29 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned long long b; b = a; /* W0244 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0244 | 4 | 9 | | W0100 | 3 | 24 | | W0104 | 1 | 22 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned long long b; b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 24 | | W0104 | 1 | 22 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(long double a) { bar(a); /* W0244 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0244 | 5 | 9 | | W0104 | 3 | 22 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(long double a) { bar((unsigned long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(long double a) { return a; /* W0244 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0244 | 3 | 12 | | W0380 | 3 | 5 | | W0104 | 1 | 36 | | W0834 | 1 | 1 | | W0628 | 1 | 20 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(long double a) { return (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0104 | 1 | 36 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 20 | adlint-3.2.14/features/code_check/W0198.feature0000644000004100000410000000766612340630463021116 0ustar www-datawww-dataFeature: W0198 W0198 detects that `unsigned int' value is converted into `double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { double b = a; /* W0198 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0198 | 3 | 16 | | W0100 | 3 | 12 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { double b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { double b; b = a; /* W0198 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0198 | 4 | 9 | | W0100 | 3 | 12 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { double b; b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(unsigned int a) { bar(a); /* W0198 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0198 | 5 | 9 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(unsigned int a) { bar((double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ double foo(unsigned int a) { return a; /* W0198 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0198 | 3 | 12 | | W0334 | 3 | 5 | | W0104 | 1 | 25 | | W0628 | 1 | 8 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ double foo(unsigned int a) { return (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0104 | 1 | 25 | | W0628 | 1 | 8 | adlint-3.2.14/features/code_check/W0735.feature0000644000004100000410000002353012340630463021077 0ustar www-datawww-dataFeature: W0735 W0735 detects that right side of logical expression is bitwise expression or arithmetic expression. Scenario: right side of `&&' operator is an arithmetic expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c) { int r; r = a && (b + c); /* W0735 */ r = a && (b - c); /* W0735 */ r = a && (b * c); /* W0735 */ r = a && (b / c); /* W0735 */ r = a && (b % c); /* W0735 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 5 | 17 | | W0723 | 6 | 17 | | W0723 | 7 | 17 | | W0093 | 8 | 17 | | C1000 | | | | C1006 | 1 | 36 | | W0093 | 9 | 17 | | C1000 | | | | C1006 | 1 | 36 | | W0104 | 1 | 22 | | W0104 | 1 | 29 | | W0104 | 1 | 36 | | W0629 | 1 | 13 | | W0735 | 5 | 14 | | W0735 | 6 | 14 | | W0735 | 7 | 14 | | W0735 | 8 | 14 | | W0735 | 9 | 14 | | W0628 | 1 | 13 | Scenario: right side of `&&' operator is an arithmetic expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c, int d) { int r; r = (a == b) && (c + d); /* W0735 */ r = (a = b) && (c - d); /* W0735 */ r = (a && b) && (c * d); /* W0735 */ r = (a < b) && (c / d); /* W0735 */ r = (a != b) && (c % d); /* W0735 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 5 | 24 | | W0723 | 6 | 23 | | W0723 | 7 | 24 | | W0093 | 8 | 23 | | C1000 | | | | C1006 | 1 | 43 | | W0093 | 9 | 24 | | C1000 | | | | C1006 | 1 | 43 | | W0104 | 1 | 29 | | W0104 | 1 | 36 | | W0104 | 1 | 43 | | W0629 | 1 | 13 | | W0735 | 5 | 21 | | W0735 | 6 | 20 | | W0735 | 7 | 21 | | W0735 | 8 | 20 | | W0735 | 9 | 21 | | W0108 | 6 | 12 | | W0628 | 1 | 13 | Scenario: right side of `||' operator is an arithmetic expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c) { int r; r = a || (b + c); /* W0735 */ r = a || (b - c); /* W0735 */ r = a || (b * c); /* W0735 */ r = a || (b / c); /* W0735 */ r = a || (b % c); /* W0735 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 5 | 17 | | W0723 | 6 | 17 | | W0723 | 7 | 17 | | W0093 | 8 | 17 | | C1000 | | | | C1006 | 1 | 36 | | W0093 | 9 | 17 | | C1000 | | | | C1006 | 1 | 36 | | W0104 | 1 | 22 | | W0104 | 1 | 29 | | W0104 | 1 | 36 | | W0629 | 1 | 13 | | W0735 | 5 | 14 | | W0735 | 6 | 14 | | W0735 | 7 | 14 | | W0735 | 8 | 14 | | W0735 | 9 | 14 | | W0628 | 1 | 13 | Scenario: right side of `||' operator is an arithmetic expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c, int d) { int r; r = (a == b) || (c + d); /* W0735 */ r = (a = b) || (c - d); /* W0735 */ r = (a || b) || (c * d); /* W0735 */ r = (a < b) || (c / d); /* W0735 */ r = (a != b) || (c % d); /* W0735 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 5 | 24 | | W0723 | 6 | 23 | | W0723 | 7 | 24 | | W0093 | 8 | 23 | | C1000 | | | | C1006 | 1 | 43 | | W0093 | 9 | 24 | | C1000 | | | | C1006 | 1 | 43 | | W0104 | 1 | 29 | | W0104 | 1 | 36 | | W0104 | 1 | 43 | | W0629 | 1 | 13 | | W0735 | 5 | 21 | | W0735 | 6 | 20 | | W0735 | 7 | 21 | | W0735 | 8 | 20 | | W0735 | 9 | 21 | | W0108 | 6 | 12 | | W0628 | 1 | 13 | Scenario: right side of `&&' operator is a bitwise expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c) { int r; r = a && (b << c); /* W0735 */ r = a && (b >> c); /* W0735 */ r = a && (b & c); /* W0735 */ r = a && (b ^ c); /* W0735 */ r = a && (b | c); /* W0735 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0570 | 5 | 17 | | C1000 | | | | C1006 | 1 | 29 | | W0572 | 5 | 17 | | W0794 | 5 | 17 | | W0571 | 6 | 17 | | W0572 | 6 | 17 | | W0572 | 7 | 17 | | W0572 | 8 | 17 | | W0572 | 9 | 17 | | W0104 | 1 | 22 | | W0104 | 1 | 29 | | W0104 | 1 | 36 | | W0629 | 1 | 13 | | W0735 | 5 | 14 | | W0735 | 6 | 14 | | W0735 | 7 | 14 | | W0735 | 8 | 14 | | W0735 | 9 | 14 | | W0628 | 1 | 13 | Scenario: right side of `||' operator is a bitwise expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c) { int r; r = a || (b << c); /* W0735 */ r = a || (b >> c); /* W0735 */ r = a || (b & c); /* W0735 */ r = a || (b ^ c); /* W0735 */ r = a || (b | c); /* W0735 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0570 | 5 | 17 | | C1000 | | | | C1006 | 1 | 29 | | W0572 | 5 | 17 | | W0794 | 5 | 17 | | W0571 | 6 | 17 | | W0572 | 6 | 17 | | W0572 | 7 | 17 | | W0572 | 8 | 17 | | W0572 | 9 | 17 | | W0104 | 1 | 22 | | W0104 | 1 | 29 | | W0104 | 1 | 36 | | W0629 | 1 | 13 | | W0735 | 5 | 14 | | W0735 | 6 | 14 | | W0735 | 7 | 14 | | W0735 | 8 | 14 | | W0735 | 9 | 14 | | W0628 | 1 | 13 | Scenario: right side of `&&' operator is a bitwise expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c, int d) { int r; r = (a == b) && (c << d); /* W0735 */ r = (a = b) && (c >> d); /* W0735 */ r = (a && b) && (c & d); /* W0735 */ r = (a < b) && (c ^ d); /* W0735 */ r = (a != b) && (c | d); /* W0735 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0570 | 5 | 24 | | C1000 | | | | C1006 | 1 | 36 | | W0572 | 5 | 24 | | W0794 | 5 | 24 | | W0571 | 6 | 23 | | W0572 | 6 | 23 | | W0572 | 7 | 24 | | W0572 | 8 | 23 | | W0572 | 9 | 24 | | W0104 | 1 | 29 | | W0104 | 1 | 36 | | W0104 | 1 | 43 | | W0629 | 1 | 13 | | W0735 | 5 | 21 | | W0735 | 6 | 20 | | W0735 | 7 | 21 | | W0735 | 8 | 20 | | W0735 | 9 | 21 | | W0108 | 6 | 12 | | W0628 | 1 | 13 | Scenario: right side of `||' operator is a bitwise expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c, int d) { int r; r = (a == b) || (c << d); /* W0735 */ r = (a = b) || (c >> d); /* W0735 */ r = (a && b) || (c & d); /* W0735 */ r = (a < b) || (c ^ d); /* W0735 */ r = (a != b) || (c | d); /* W0735 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0570 | 5 | 24 | | C1000 | | | | C1006 | 1 | 36 | | W0572 | 5 | 24 | | W0794 | 5 | 24 | | W0571 | 6 | 23 | | W0572 | 6 | 23 | | W0572 | 7 | 24 | | W0572 | 8 | 23 | | W0572 | 9 | 24 | | W0104 | 1 | 29 | | W0104 | 1 | 36 | | W0104 | 1 | 43 | | W0629 | 1 | 13 | | W0735 | 5 | 21 | | W0735 | 6 | 20 | | W0735 | 7 | 21 | | W0735 | 8 | 20 | | W0735 | 9 | 21 | | W0108 | 6 | 12 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0238.feature0000644000004100000410000001001212340630463021064 0ustar www-datawww-dataFeature: W0238 W0238 detects that `long double' value is converted into `unsigned long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned long b = a; /* W0238 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0238 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned long b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned long b; b = a; /* W0238 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0238 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { unsigned long b; b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(long double a) { bar(a); /* W0238 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0238 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(long double a) { bar((unsigned long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(long double a) { return a; /* W0238 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0238 | 3 | 12 | | W0374 | 3 | 5 | | W0104 | 1 | 31 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(long double a) { return (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0104 | 1 | 31 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W9001.feature0000644000004100000410000000265412340630463021076 0ustar www-datawww-dataFeature: W9001 W9001 detects that the control never reach to a statement. Scenario: indefinitive controlling variable narrowing Given a target source named "fixture.c" with: """ static void bar(int); int main(void) { int i; int j; for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) { if (i == j) { bar(1); } else { bar(2); /* W9001 should not be output */ } } } return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | Scenario: indefinitive controlling variable narrowing Given a target source named "fixture.c" with: """ void foo(int i) { if (i > 0) { do { puts("foo"); /* OK not W9001 */ } while (i == -1); } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0109 | 5 | 13 | | W0610 | 6 | 20 | | W0614 | 6 | 20 | | W0104 | 1 | 14 | | W1073 | 5 | 17 | | W0947 | 5 | 18 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0163.feature0000644000004100000410000001050512340630463021070 0ustar www-datawww-dataFeature: W0163 W0163 detects that `short' value is converted into `unsigned int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { unsigned int b = a; /* W0163 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0163 | 3 | 22 | | W0100 | 3 | 18 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { unsigned int b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 22 | | C1000 | | | | C1006 | 1 | 16 | | W0100 | 3 | 18 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { unsigned int b; b = a; /* W0163 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0163 | 4 | 9 | | W0100 | 3 | 18 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { unsigned int b; b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 16 | | W0100 | 3 | 18 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(short a) { bar(a); /* W0163 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0163 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(short a) { bar((unsigned int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 16 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(short a) { return a; /* W0163 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0163 | 3 | 12 | | W0299 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 14 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(short a) { return (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 24 | | W0104 | 1 | 24 | | W0628 | 1 | 14 | adlint-3.2.14/features/code_check/E0018.feature0000644000004100000410000000566312340630463021056 0ustar www-datawww-dataFeature: E0018 E0018 detects that an extra semicolon appears in the global scope. Scenario: extra semicolon after variable declaration Given a target source named "fixture.c" with: """ int i;; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | E0018 | 1 | 7 | | W0117 | 1 | 5 | Scenario: extra semicolon after variable definition Given a target source named "fixture.c" with: """ int i = 1;; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | E0018 | 1 | 11 | | W0117 | 1 | 5 | Scenario: extra semicolon before variable declaration Given a target source named "fixture.c" with: """ ;int i; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | E0018 | 1 | 1 | | W0117 | 1 | 6 | Scenario: extra semicolon before variable definition Given a target source named "fixture.c" with: """ ;int i = 1; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | E0018 | 1 | 1 | | W0117 | 1 | 6 | Scenario: extra semicolon after function declaration Given a target source named "fixture.c" with: """ extern void foo(void);; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | E0018 | 1 | 23 | | W0118 | 1 | 13 | Scenario: extra semicolon after function definition Given a target source named "fixture.c" with: """ int foo(void) { return 0; }; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | E0018 | 4 | 2 | | W0117 | 1 | 5 | | W0628 | 1 | 5 | Scenario: extra semicolon before function declaration Given a target source named "fixture.c" with: """ ;extern void foo(void); """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | E0018 | 1 | 1 | | W0118 | 1 | 14 | Scenario: extra semicolon before function definition Given a target source named "fixture.c" with: """ ;int foo(void) { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | E0018 | 1 | 1 | | W0117 | 1 | 6 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0806.feature0000644000004100000410000000126712340630463021101 0ustar www-datawww-dataFeature: W0806 W0806 detects that the macro named `defined' is defined. Scenario: a macro named `defined' is defined Given a target source named "fixture.c" with: """ #define defined !defined /* W0806 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0806 | 1 | 9 | Scenario: a macro named `define' is defined Given a target source named "fixture.c" with: """ #define define !define /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | adlint-3.2.14/features/code_check/W0134.feature0000644000004100000410000001033512340630463021067 0ustar www-datawww-dataFeature: W0134 W0134 detects that `short' value is converted into `char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { char b = a; /* W0134 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0134 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { char b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 14 | | C1000 | | | | C1006 | 1 | 16 | | W0100 | 3 | 10 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { char b; b = a; /* W0134 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0134 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { char b; b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 16 | | W0100 | 3 | 10 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(short a) { bar(a); /* W0134 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0134 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(short a) { bar((char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 16 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ char foo(short a) { return a; /* W0134 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0134 | 3 | 12 | | W0270 | 3 | 5 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ char foo(short a) { return (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 16 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W1063.feature0000644000004100000410000000670012340630463021072 0ustar www-datawww-dataFeature: W1063 W1063 detects that a function of enum return type is returning a value of the inconsistently typed non-constant expression. Scenario: returning a value of the non-constant `int' typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; static enum Color foo(const enum Color c) { int i = 0; if (c == RED) { i = 2; } return i + 1; /* W1063 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 19 | | W9003 | 11 | 14 | | W1055 | 11 | 14 | | W1063 | 11 | 14 | | W0629 | 3 | 19 | | W0628 | 3 | 19 | Scenario: returning a value of the non-constant `double' typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; static enum Color foo(const enum Color c) { double d = .0; if (c == RED) { d = .2; } return d + 1.0; /* W1063 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 19 | | W9003 | 11 | 14 | | W1055 | 11 | 14 | | W1063 | 11 | 14 | | W0629 | 3 | 19 | | W0628 | 3 | 19 | Scenario: returning a value of the non-constant same enum typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; extern enum Color foo(void); static enum Color bar(void) { return foo() + 1; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 3 | 19 | | W1076 | 5 | 19 | | W9003 | 7 | 20 | | W0723 | 7 | 18 | | W0629 | 5 | 19 | | W0628 | 5 | 19 | Scenario: returning a value of the non-constant inconsistent enum typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; extern enum Fruit foo(void); static enum Color bar(void) { return foo() + 1; /* W1063 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 4 | 19 | | W1076 | 6 | 19 | | W9003 | 8 | 20 | | W0723 | 8 | 18 | | W0727 | 8 | 18 | | W9003 | 8 | 18 | | W1058 | 8 | 18 | | W1063 | 8 | 18 | | W0629 | 6 | 19 | | W0628 | 6 | 19 | Scenario: returning a value of the constant same enum typed expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; static enum Color foo(void) { return BLUE; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 19 | | W0629 | 3 | 19 | | W0628 | 3 | 19 | adlint-3.2.14/features/code_check/W0248.feature0000644000004100000410000000764112340630463021103 0ustar www-datawww-dataFeature: W0248 W0248 detects that `unsigned short' value is converted into `int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { int b = a; /* W0248 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0248 | 3 | 13 | | W0100 | 3 | 9 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { int b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 9 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { int b; b = a; /* W0248 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0248 | 4 | 9 | | W0100 | 3 | 9 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { int b; b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 9 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(unsigned short a) { bar(a); /* W0248 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0248 | 5 | 9 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(unsigned short a) { bar((int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ int foo(unsigned short a) { return a; /* W0248 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0248 | 3 | 12 | | W0404 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 5 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ int foo(unsigned short a) { return (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0181.feature0000644000004100000410000001207112340630463021070 0ustar www-datawww-dataFeature: W0181 W0181 detects that `long long' value is converted into `unsigned long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned long long b = a; /* W0181 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0181 | 3 | 28 | | W0100 | 3 | 24 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned long long b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 28 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 24 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0834 | 3 | 29 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned long long b; b = a; /* W0181 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0181 | 4 | 9 | | W0100 | 3 | 24 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned long long b; b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 24 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(long long a) { bar(a); /* W0181 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0181 | 5 | 9 | | W0104 | 3 | 20 | | W0834 | 1 | 17 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(long long a) { bar((unsigned long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 20 | | W0104 | 3 | 20 | | W0834 | 1 | 17 | | W0834 | 3 | 10 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(long long a) { return a; /* W0181 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0181 | 3 | 12 | | W0317 | 3 | 5 | | W0104 | 1 | 34 | | W0834 | 1 | 1 | | W0834 | 1 | 24 | | W0628 | 1 | 20 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(long long a) { return (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 34 | | W0104 | 1 | 34 | | W0834 | 1 | 1 | | W0834 | 1 | 24 | | W0834 | 3 | 13 | | W0628 | 1 | 20 | adlint-3.2.14/features/code_check/W0187.feature0000644000004100000410000000775612340630463021114 0ustar www-datawww-dataFeature: W0187 W0187 detects that `signed char' value is converted into `long double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { long double b = a; /* W0187 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0187 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { long double b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { long double b; b = a; /* W0187 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0187 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { long double b; b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(signed char a) { bar(a); /* W0187 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0187 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(signed char a) { bar((long double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(signed char a) { return a; /* W0187 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0187 | 3 | 12 | | W0323 | 3 | 5 | | W0104 | 1 | 29 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(signed char a) { return (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0104 | 1 | 29 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W1030.feature0000644000004100000410000000400312340630463021056 0ustar www-datawww-dataFeature: W1030 W1030 detects that label with the same name is used more than two. Scenario: same named label is used in twice Given a target source named "fixture.c" with: """ extern void func(const int a, const int b) { if (a == 0) { int c = 0; RETRY: b = 10; } if (b != 0) { goto RETRY; } RETRY: /* W1030 */ b = 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0100 | 4 | 13 | | W0564 | 10 | 9 | | W1072 | 10 | 9 | | W1030 | 12 | 1 | | W0628 | 1 | 13 | Scenario: only one label in a function Given a target source named "fixture.c" with: """ extern void func(const int a, const int b) { if (a == 0) { int c = 0; } if (b != 0) { goto RETRY; } RETRY: /* OK */ b = 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0100 | 4 | 13 | | W1072 | 8 | 9 | | W0628 | 1 | 13 | Scenario: two different labels in a function Given a target source named "fixture.c" with: """ extern void func(const int a, const int b) { if (a == 0) { goto ERROR; } if (b != 0) { goto RETRY; } ERROR: /* OK */ b = 0; RETRY: /* OK */ b = 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W1072 | 4 | 9 | | W1072 | 8 | 9 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0716.feature0000644000004100000410000000411612340630463021075 0ustar www-datawww-dataFeature: W0716 W0716 detects that operands of both sides of bitwise expression or arithmetic expression are `effectively boolean'. Scenario: an arithmetic expression Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a > b) + (c > d); /* W0716 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 20 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0716 | 3 | 20 | | W0628 | 1 | 12 | Scenario: a bitwise expression Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a > b) ^ (c > d); /* W0716 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0572 | 3 | 20 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0716 | 3 | 20 | | W0628 | 1 | 12 | Scenario: a shift expression Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a > b) << (c > d); /* W0716 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0570 | 3 | 20 | | W0572 | 3 | 20 | | W0794 | 3 | 20 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0716 | 3 | 20 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0013.feature0000644000004100000410000001174012340630463021064 0ustar www-datawww-dataFeature: W0013 W0013 detects that a continue-statement is used in iteration-statement. Scenario: a continue-statement in for-statement Given a target source named "fixture.c" with: """ static void foo(void) { int i; int j; for (i = 1, j = 0; i < 20; i++) { j += 2; if ((j % i) == 3) { continue; /* W0013 */ } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0629 | 1 | 13 | | W0535 | 6 | 10 | | W0013 | 9 | 13 | | W0628 | 1 | 13 | Scenario: a continue-statement in c99-for-statement Given a target source named "fixture.c" with: """ static void foo(void) { int j = 0; for (int i = 1; i < 20; i++) { j += 2; if ((j % i) == 3) { continue; /* W0013 */ } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0629 | 1 | 13 | | W0013 | 8 | 13 | | W0628 | 1 | 13 | Scenario: a continue-statement in while-statement Given a target source named "fixture.c" with: """ static void foo(void) { int i = 1; int j = 0; while (i < 20) { i++; j += 2; if ((j % i) == 3) { continue; /* W0013 */ } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0629 | 1 | 13 | | W0013 | 10 | 13 | | W0628 | 1 | 13 | Scenario: a continue-statement in do-statement Given a target source named "fixture.c" with: """ static void foo(void) { int i = 1; int j = 0; do { i++; j += 2; if ((j % i) == 3) { continue; /* W0013 */ } } while (i < 20); } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0629 | 1 | 13 | | W0013 | 10 | 13 | | W0628 | 1 | 13 | Scenario: no continue-statement in for-statement Given a target source named "fixture.c" with: """ static void foo(void) { int i; int j; for (i = 1, j = 0; i < 20; i++) { j += 2; if ((j % i) == 3) { break; /* OK */ } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0629 | 1 | 13 | | W0535 | 6 | 10 | | W0628 | 1 | 13 | Scenario: no continue-statement in c99-for-statement Given a target source named "fixture.c" with: """ static void foo(void) { int j = 0; for (int i = 1; i < 20; i++) { j += 2; if ((j % i) == 3) { break; /* OK */ } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: no continue-statement in while-statement Given a target source named "fixture.c" with: """ static void foo(void) { int i = 1; int j = 0; while (i < 20) { i++; j += 2; if ((j % i) == 3) { break; /* OK */ } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: no continue-statement in do-statement Given a target source named "fixture.c" with: """ static void foo(void) { int i = 1; int j = 0; do { i++; j += 2; if ((j % i) == 3) { break; /* OK */ } } while (i < 20); } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0641.feature0000644000004100000410000000750612340630463021100 0ustar www-datawww-dataFeature: W0641 W0641 detects that an explicit conversion between variable of floating point number and pointer to a variable is found. Scenario: converting `float' into pointer to `int' variable Given a target source named "fixture.c" with: """ int *foo(const float f) { return (int *) f; /* W0641 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0641 | 3 | 12 | | W0628 | 1 | 6 | Scenario: converting `double' into pointer to `int' variable Given a target source named "fixture.c" with: """ int *foo(const double f) { return (int *) f; /* W0641 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0641 | 3 | 12 | | W0628 | 1 | 6 | Scenario: converting `long double' into pointer to `int' variable Given a target source named "fixture.c" with: """ int *foo(const long double f) { return (int *) f; /* W0641 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0641 | 3 | 12 | | W0628 | 1 | 6 | Scenario: converting `int' into pointer to `float' variable Given a target source named "fixture.c" with: """ float foo(int *p) { return (float) p; /* W0641 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0641 | 3 | 12 | | W0104 | 1 | 16 | | W0105 | 1 | 16 | | W0628 | 1 | 7 | Scenario: converting `int' into pointer to `double' variable Given a target source named "fixture.c" with: """ double foo(int *p) { return (double) p; /* W0641 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0641 | 3 | 12 | | W0104 | 1 | 17 | | W0105 | 1 | 17 | | W0628 | 1 | 8 | Scenario: converting `int' into pointer to `long double' Given a target source named "fixture.c" with: """ long double foo(int *p) { return (long double) p; /* W0641 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0641 | 3 | 12 | | W0104 | 1 | 22 | | W0105 | 1 | 22 | | W0628 | 1 | 13 | Scenario: converting `float' to `int' Given a target source named "fixture.c" with: """ int foo(const float f) { return (int) f; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0628 | 1 | 5 | Scenario: converting `float' into pointer to `void *' Given a target source named "fixture.c" with: """ void *foo(float f) { return (void *) f; /* W0641 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0641 | 3 | 12 | | W0104 | 1 | 17 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0692.feature0000644000004100000410000000243412340630463021101 0ustar www-datawww-dataFeature: W0692 W0692 detects that no argument is given to a function-like macro. Scenario: empty argument to a function-like macro Given a target source named "fixture.c" with: """ #define MACRO(a) #a const char *s = (char *) MACRO(); /* W0692 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0692 | 3 | 26 | | W0117 | 3 | 13 | Scenario: enough arguments to a function-like macro Given a target source named "fixture.c" with: """ #define MACRO(a) #a const char *s = (char *) MACRO(str); /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0117 | 3 | 13 | Scenario: no argument to a function-like macro Given a target source named "fixture.c" with: """ #define MACRO() 0 const int i = MACRO(); /* W0692 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0117 | 3 | 11 | adlint-3.2.14/features/code_check/W0172.feature0000644000004100000410000001051112340630463021065 0ustar www-datawww-dataFeature: W0172 W0172 detects that `long' value is converted into `unsigned long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { unsigned long b = a; /* W0172 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0172 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { unsigned long b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 23 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { unsigned long b; b = a; /* W0172 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0172 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { unsigned long b; b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(long a) { bar(a); /* W0172 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0172 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(long a) { bar((unsigned long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 15 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(long a) { return a; /* W0172 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0172 | 3 | 12 | | W0308 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(long a) { return (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 24 | | W0104 | 1 | 24 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0835.feature0000644000004100000410000000775012340630463021106 0ustar www-datawww-dataFeature: W0835 W0835 detects that a function like macro with variable arguments is defined. Scenario: function declaration helper macro Given a target source named "fixture.c" with: """ #define defun(type, name, ...) /* W0835 has not been implemented yet */ \ extern type builtin_##name(__VA_ARGS__) defun(int, foo, int); defun(long, bar, int, long); defun(int, baz); """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0549 | 2 | 12 | | W0118 | 4 | 1 | | W0118 | 5 | 1 | | W0118 | 6 | 1 | | W0478 | 1 | 1 | | W0078 | 6 | 1 | Scenario: initializer generator macro Given a target source named "fixture.c" with: """ #define init(...) /* W0835 has not been implemented yet */ \ { 0, __VA_ARGS__, -1 } int a[] = init(1, 2, 3); """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0117 | 4 | 5 | Scenario: initializer generator macro with ## operator Given a target source named "fixture.c" with: """ #define init(...) /* W0835 has not been implemented yet */ \ { 0, ## __VA_ARGS__, -1 } int a[] = init(1, 2, 3); """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0691 | 4 | 11 | | W0117 | 4 | 5 | Scenario: interface to a varg function Given a target source named "fixture.c" with: """ extern int printf(const char *, ...); extern const char *mesg(int); #define msg(n) mesg(100 + (n)) #define log(fmt, ...) /* W0835 has not been implemented yet */ \ (void) printf((fmt), __VA_ARGS__) static void func(void) { log("%d %d", 1, 2); log("%d %s %s", 1, msg(1), msg(1 + 2)); } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 4 | 1 | | W0442 | 5 | 1 | | W0118 | 1 | 12 | | W0118 | 2 | 20 | | W1076 | 8 | 13 | | W0629 | 8 | 13 | | W0443 | 4 | 1 | | W0628 | 8 | 13 | Scenario: interface to a varg function with ## operator Given a target source named "fixture.c" with: """ extern int printf(const char *, ...); extern const char *mesg(int); #define msg(n) mesg(100 + (n)) #define log(fmt, ...) /* W0835 has not been implemented yet */ \ (void) printf((fmt), ##__VA_ARGS__) static void func(void) { log("%d %d", 1, 2); log("%d %s %s", 1, msg(1), msg(1 + 2)); } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 4 | 1 | | W0442 | 5 | 1 | | W0691 | 10 | 5 | | W0691 | 11 | 5 | | W0118 | 1 | 12 | | W0118 | 2 | 20 | | W1076 | 8 | 13 | | W0629 | 8 | 13 | | W0443 | 4 | 1 | | W0628 | 8 | 13 | Scenario: ill-formed macro call with too few arguments Given a target source named "fixture.c" with: """ #define init(a, b, ...) { 0, a, b, __VA_ARGS__ } int a[] = init(1); """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0549 | 1 | 30 | | W0549 | 1 | 33 | | W0109 | 2 | 11 | | W9003 | 2 | 11 | | W0117 | 2 | 5 | adlint-3.2.14/features/code_check/W0769.feature0000644000004100000410000000765512340630463021120 0ustar www-datawww-dataFeature: W0769 W0769 detects that `long double' value is converted into `double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { double b = a; /* W0769 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0769 | 3 | 16 | | W0100 | 3 | 12 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { double b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { double b; b = a; /* W0769 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0769 | 4 | 9 | | W0100 | 3 | 12 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { double b; b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(long double a) { bar(a); /* W0769 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0769 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(long double a) { bar((double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ double foo(long double a) { return a; /* W0769 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0769 | 3 | 12 | | W0776 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 8 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ double foo(long double a) { return (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0104 | 1 | 24 | | W0628 | 1 | 8 | adlint-3.2.14/features/code_check/W0698.feature0000644000004100000410000000102412340630463021101 0ustar www-datawww-dataFeature: W0698 W0698 detects that a `return' statement without expression is found in a non-void function. Scenario: returning nothing from `int' function Given a target source named "fixture.c" with: """ int func(void) { return; /* W0698 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0698 | 3 | 5 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0190.feature0000644000004100000410000000767012340630463021101 0ustar www-datawww-dataFeature: W0190 W0190 detects that `short' value is converted into `long double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { long double b = a; /* W0190 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0190 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { long double b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { long double b; b = a; /* W0190 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0190 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { long double b; b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(short a) { bar(a); /* W0190 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0190 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(short a) { bar((long double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(short a) { return a; /* W0190 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0190 | 3 | 12 | | W0326 | 3 | 5 | | W0104 | 1 | 23 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(short a) { return (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0104 | 1 | 23 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0750.feature0000644000004100000410000001033012340630463021066 0ustar www-datawww-dataFeature: W0750 W0750 detects that `int' value is converted into `short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { short b = a; /* W0750 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0750 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { short b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 15 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 11 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { short b; b = a; /* W0750 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0750 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { short b; b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 11 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(int a) { bar(a); /* W0750 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0750 | 5 | 9 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(int a) { bar((short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 14 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ short foo(int a) { return a; /* W0750 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0750 | 3 | 12 | | W0384 | 3 | 5 | | W0104 | 1 | 15 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ short foo(int a) { return (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 15 | | W0104 | 1 | 15 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W1070.feature0000644000004100000410000001051112340630463021063 0ustar www-datawww-dataFeature: W1070 W1070 detects that a `switch' statement can be translated into if-else statement because there are only two execution paths. Scenario: `switch' statement which has only two execution paths Given a target source named "fixture.c" with: """ static int func(const int i) { switch (i) { /* W1070 */ case 0: return 4; default: return 8; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W1070 | 3 | 5 | | W0628 | 1 | 12 | Scenario: `switch' statement which has only two execution paths and doesn't have `default' clause Given a target source named "fixture.c" with: """ static int func(const int i) { switch (i) { /* W1070 */ case 0: return 4; case 1: return 6; } return 10; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W0003 | 3 | 5 | | W1070 | 3 | 5 | | W0628 | 1 | 12 | Scenario: `switch' statement which has only two execution paths and the control never reaches to one of that paths Given a target source named "fixture.c" with: """ static int func(const int i) { if (i > 5) { switch (i) { /* W1070 */ case 5: return 2; default: return 3; } } return 10; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W9001 | 5 | 9 | | W9001 | 6 | 13 | | W0781 | 4 | 9 | | W1070 | 4 | 9 | | W0628 | 1 | 12 | Scenario: `switch' statement which has only one execution path Given a target source named "fixture.c" with: """ static int func(const int i) { switch (i) { /* OK */ default: return 8; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0629 | 1 | 12 | | W0781 | 3 | 5 | | W0628 | 1 | 12 | Scenario: `switch' statement which has three execution paths, but the control never reaches to only one of that paths Given a target source named "fixture.c" with: """ static int func(const int i) { if (i > 5) { switch (i) { /* OK */ case 0: return 1; case 5: return 2; default: return 3; } } return 10; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W9001 | 5 | 9 | | W9001 | 6 | 13 | | W9001 | 7 | 9 | | W9001 | 8 | 13 | | W0781 | 4 | 9 | | W0628 | 1 | 12 | Scenario: `switch' statement which has three execution paths Given a target source named "fixture.c" with: """ static int func(const int i) { switch (i) { /* OK */ case 0: return 4; case 1: return 6; default: return 8; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0711.feature0000644000004100000410000000657112340630463021077 0ustar www-datawww-dataFeature: W0711 W0711 detects that operand of right side of relational expression is `effectively boolean'. Scenario: a relational expression Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a + b) > (c > d); /* W0711 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 15 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0711 | 3 | 22 | | W0628 | 1 | 12 | Scenario: an equality expression Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a + b) > (c == d); /* W0711 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 15 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0711 | 3 | 22 | | W0628 | 1 | 12 | Scenario: a logical expression Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a + b) > (c && d); /* W0711 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 15 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0711 | 3 | 22 | | W0628 | 1 | 12 | Scenario: a shift expression Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a + b) > (c << d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 15 | | W0570 | 3 | 25 | | C1000 | | | | C1006 | 1 | 34 | | W0572 | 3 | 25 | | W0794 | 3 | 25 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: an arithmetic expression Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a + b) > (c + d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 15 | | W0723 | 3 | 25 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W1050.feature0000644000004100000410000000302312340630463021061 0ustar www-datawww-dataFeature: W1050 W1050 detects that an explicit conversion to signed integer must cause overflow. Scenario: conversion from `int' to `signed char' Given a target source named "fixture.c" with: """ static void foo(const int i) { if (i > 127) { const signed char c = (signed char) i; /* W1050 */ } if (i < -128) { const signed char c = (signed char) i; /* W1050 */ } if (i > 100) { const signed char c = (signed char) i; /* OK but W1049 */ } if (i < -100) { const signed char c = (signed char) i; /* OK but W1049 */ } if (i > -129 && i < 128) { const signed char c = (signed char) i; /* OK */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W1050 | 4 | 31 | | C1000 | | | | C1006 | 1 | 27 | | W1050 | 7 | 31 | | C1000 | | | | C1006 | 1 | 27 | | W1049 | 11 | 31 | | C1000 | | | | C1006 | 1 | 27 | | W1049 | 14 | 31 | | C1000 | | | | C1006 | 1 | 27 | | W0629 | 1 | 13 | | W0489 | 17 | 9 | | W0490 | 17 | 9 | | W0499 | 17 | 9 | | W0502 | 17 | 9 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0183.feature0000644000004100000410000000767712340630463021112 0ustar www-datawww-dataFeature: W0183 W0183 detects that `unsigned char' value is converted into `double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { double b = a; /* W0183 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0183 | 3 | 16 | | W0100 | 3 | 12 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { double b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { double b; b = a; /* W0183 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0183 | 4 | 9 | | W0100 | 3 | 12 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { double b; b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(unsigned char a) { bar(a); /* W0183 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0183 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(unsigned char a) { bar((double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ double foo(unsigned char a) { return a; /* W0183 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0183 | 3 | 12 | | W0319 | 3 | 5 | | W0104 | 1 | 26 | | W0628 | 1 | 8 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ double foo(unsigned char a) { return (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0104 | 1 | 26 | | W0628 | 1 | 8 | adlint-3.2.14/features/code_check/W9003.feature0000644000004100000410000002065312340630463021077 0ustar www-datawww-dataFeature: W9003 W9003 detects that an object is implicitly converted into a new object of the different type. Scenario: passing an enum variable whose type differs from one of the corresponding enum parameter Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE }; extern void foo(enum Color); static void bar(void) { foo(ORANGE); /* W9003 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 4 | 13 | | W1076 | 6 | 13 | | W9003 | 8 | 9 | | W0728 | 8 | 9 | | W0629 | 6 | 13 | | W0628 | 6 | 13 | Scenario: passing an enum argument as an `int' parameter Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; extern void foo(int); static void bar(void) { foo(RED); /* W9003 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 3 | 13 | | W1076 | 5 | 13 | | W9003 | 7 | 9 | | W1059 | 7 | 9 | | W0629 | 5 | 13 | | W0628 | 5 | 13 | Scenario: passing an `int' argument as an enum parameter Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; extern void foo(enum Color); static void bar(void) { foo(0); /* W9003 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 3 | 13 | | W1076 | 5 | 13 | | W9003 | 7 | 9 | | W1053 | 7 | 9 | | W0629 | 5 | 13 | | W0628 | 5 | 13 | Scenario: initializing an `int' variable with an enumerator Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; int i = RED; /* W9003 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W9003 | 2 | 9 | | W0117 | 2 | 5 | Scenario: initializing an enum variable with an `int' value Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Color c = 1; /* W9003 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W9003 | 2 | 16 | | W0117 | 2 | 12 | Scenario: arithmetic expression with an `int' variable and an enum variable Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; static int foo(enum Color c) { if (c == RED || c == BLUE || c == GREEN) { return c + 10; /* W9003 */ } else { return 0; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W0727 | 6 | 20 | | W9003 | 6 | 20 | | W9003 | 6 | 18 | | W1060 | 6 | 18 | | W0104 | 3 | 27 | | W1071 | 3 | 12 | | W0629 | 3 | 12 | | W0490 | 5 | 9 | | W0497 | 5 | 9 | | W0502 | 5 | 9 | | W0628 | 3 | 12 | Scenario: no implicit conversion of size_t value Given a target source named "fixture.c" with: """ #include size_t foo(int a) { return sizeof(a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 8 | | W0031 | 3 | 16 | | W0104 | 3 | 16 | | W0628 | 3 | 8 | Scenario: implicit conversion of size_t value Given a target source named "fixture.c" with: """ #include int foo(int a) { return sizeof(a); /* W9003 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0150 | 5 | 12 | | W9003 | 5 | 12 | | W0286 | 5 | 5 | | W0031 | 3 | 13 | | W0104 | 3 | 13 | | W0070 | 1 | 1 | | W0628 | 3 | 5 | Scenario: explicit conversion of size_t value Given a target source named "fixture.c" with: """ #include int foo(int a) { return (int) sizeof(a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0031 | 3 | 13 | | W0104 | 3 | 13 | | W0070 | 1 | 1 | | W0628 | 3 | 5 | Scenario: implicit conversion to void pointer Given a target source named "fixture.c" with: """ typedef struct foo { int i; } foo_t; extern void foo(foo_t *); typedef struct bar { int i; } bar_t; extern void bar(bar_t *); extern void baz(void *); static void qux(foo_t *f, bar_t *b) { foo(b); /* W9003 */ bar(f); /* W9003 */ foo(f); /* OK */ baz(f); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 2 | 13 | | W0118 | 5 | 13 | | W0118 | 7 | 13 | | W1076 | 9 | 13 | | W9003 | 11 | 9 | | W9003 | 12 | 9 | | W0104 | 9 | 24 | | W0104 | 9 | 34 | | W0105 | 9 | 24 | | W0105 | 9 | 34 | | W0629 | 9 | 13 | | W0628 | 9 | 13 | Scenario: implicit convertion from void pointer Given a target source named "fixture.c" with: """ typedef struct foo { int i; } foo_t; extern void *foo(foo_t *); static void bar(void *p) { foo_t *f = foo(p); /* legal but W9003 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 2 | 14 | | W1076 | 4 | 13 | | W9003 | 6 | 20 | | W9003 | 6 | 19 | | W0100 | 6 | 12 | | W0104 | 4 | 23 | | W0105 | 4 | 23 | | W0629 | 4 | 13 | | W0628 | 4 | 13 | Scenario: implicit convertion of constant pointer Given a target source named "fixture.c" with: """ static void foo(void *p) { int *p1 = NULL; /* OK */ int *p2 = 0; /* OK */ int *p3 = p; /* legal but W9003 */ int *p4 = 3; /* W9003 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W9003 | 5 | 15 | | W9003 | 6 | 15 | | W0100 | 3 | 10 | | W0100 | 4 | 10 | | W0100 | 5 | 10 | | W0100 | 6 | 10 | | W0104 | 1 | 23 | | W0105 | 1 | 23 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: no implicit convertion of register variable Given a target source named "fixture.c" with: """ static void foo(void) { register char a[3]; char *p; p = &a[0]; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0459 | 5 | 9 | | C1000 | | | | C1003 | 3 | 19 | | W0642 | 5 | 9 | | W0100 | 3 | 19 | | W0100 | 4 | 11 | | W0629 | 1 | 13 | | W0950 | 3 | 21 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0717.feature0000644000004100000410000000370712340630463021103 0ustar www-datawww-dataFeature: W0717 W0717 detects that operand of left side of bitwise expression or arithmetic expression is `effectively boolean'. Scenario: an arithmetic expression Given a target source named "fixture.c" with: """ static int func(int a, int b, int c) { return (a > b) + c; /* W0717 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 20 | | W0104 | 1 | 21 | | W0104 | 1 | 28 | | W0104 | 1 | 35 | | W0629 | 1 | 12 | | W0717 | 3 | 12 | | W0628 | 1 | 12 | Scenario: a bitwise expression Given a target source named "fixture.c" with: """ static int func(int a, int b, int c) { return (a > b) ^ c; /* W0717 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0572 | 3 | 20 | | W0104 | 1 | 21 | | W0104 | 1 | 28 | | W0104 | 1 | 35 | | W0629 | 1 | 12 | | W0717 | 3 | 12 | | W0628 | 1 | 12 | Scenario: a shift expression Given a target source named "fixture.c" with: """ static int func(int a, int b, int c) { return (a > b) << c; /* W0717 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0570 | 3 | 20 | | W0572 | 3 | 20 | | W0794 | 3 | 20 | | W0104 | 1 | 21 | | W0104 | 1 | 28 | | W0104 | 1 | 35 | | W0629 | 1 | 12 | | W0717 | 3 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0219.feature0000644000004100000410000000753512340630463021103 0ustar www-datawww-dataFeature: W0219 W0219 detects that `float' value is converted into `long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { long b = a; /* W0219 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0219 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { long b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { long b; b = a; /* W0219 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0219 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { long b; b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(float a) { bar(a); /* W0219 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0219 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(float a) { bar((long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long foo(float a) { return a; /* W0219 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0219 | 3 | 12 | | W0355 | 3 | 5 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long foo(float a) { return (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W1047.feature0000644000004100000410000001427312340630463021100 0ustar www-datawww-dataFeature: W1047 W1047 detects that an initializer of struct, union or array variable contains non-constant expressions. Scenario: initializing array with non-constant expressions Given a target source named "fixture.c" with: """ int foo(int i, int j) { int a[] = { 0, i, j }; /* W1047 */ return a[1]; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W1047 | 3 | 9 | | W0100 | 3 | 9 | | W0104 | 1 | 13 | | W0104 | 1 | 20 | | W0628 | 1 | 5 | Scenario: initializing struct with non-constant expressions Given a target source named "fixture.c" with: """ struct Coord { int x; int y; int z; }; int foo(int i, int j) { struct Coord c = { i, j, 0 }; /* W1047 */ return c.y; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 7 | 5 | | W1047 | 9 | 18 | | W0100 | 9 | 18 | | W0104 | 7 | 13 | | W0104 | 7 | 20 | | W0628 | 7 | 5 | Scenario: initializing union with non-constant expressions Given a target source named "fixture.c" with: """ struct Color { int r; int g; int b; }; struct Coord { int x; int y; }; struct Event { int type; union { struct Color color; struct Coord coord; } body; }; int foo(int i, int j) { struct Event ev = { 0, { i, j, 0 } }; /* W1047 */ return ev.body.color.g; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 20 | 5 | | W1047 | 22 | 18 | | W0100 | 22 | 18 | | W0104 | 20 | 13 | | W0104 | 20 | 20 | | W0551 | 14 | 5 | | W0628 | 20 | 5 | Scenario: initializing array with all constant expressions Given a target source named "fixture.c" with: """ int foo(void) { int a[] = { 0, 1, 2 }; /* OK */ return a[1]; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0100 | 3 | 9 | | W0628 | 1 | 5 | Scenario: initializing struct with all constant expressions Given a target source named "fixture.c" with: """ struct Coord { int x; int y; int z; }; int foo(void) { struct Coord c = { 2, 1, 0 }; /* OK */ return c.y; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 7 | 5 | | W0100 | 9 | 18 | | W0628 | 7 | 5 | Scenario: initializing union with all constant expressions Given a target source named "fixture.c" with: """ struct Color { int r; int g; int b; }; struct Coord { int x; int y; }; struct Event { int type; union { struct Color color; struct Coord coord; } body; }; int foo(void) { struct Event ev = { 0, { 2, 1, 0 } }; /* OK */ return ev.body.color.g; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 20 | 5 | | W0100 | 22 | 18 | | W0551 | 14 | 5 | | W0628 | 20 | 5 | Scenario: initializing array with address-constant Given a target source named "fixture.c" with: """ extern int foo(void); extern int bar(void); extern int baz(void); static int (*fun_tbl[])(void) = { foo, bar, baz }; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0118 | 2 | 12 | | W0118 | 3 | 12 | Scenario: initializing struct with constant-specifier and address-constant Given a target source named "fixture.c" with: """ typedef struct handler { int id; int (*ptr)(void); } handler_t; extern int foo(void); extern int bar(void); extern int baz(void); static handler_t h = { 1, foo }; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 6 | 12 | | W0118 | 7 | 12 | | W0118 | 8 | 12 | Scenario: initializing struct with inconstant expression and address-constant Given a target source named "fixture.c" with: """ typedef struct handler { int id; int (*ptr)(void); } handler_t; extern int foo(void); extern int bar; extern int baz; static handler_t h = { bar + baz, foo }; /* W1047 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 6 | 12 | | W0118 | 7 | 12 | | W0118 | 8 | 12 | | W0723 | 10 | 28 | | W1047 | 10 | 18 | Scenario: initializing array with address-constant Given a target source named "fixture.c" with: """ static int i, j, k; static int *var_tbl[] = { &i, &j, &k }; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0425 | 1 | 15 | | W0425 | 1 | 18 | adlint-3.2.14/features/code_check/W0246.feature0000644000004100000410000000763012340630463021077 0ustar www-datawww-dataFeature: W0246 W0246 detects that `unsigned char' value is converted into `int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { int b = a; /* W0246 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0246 | 3 | 13 | | W0100 | 3 | 9 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { int b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 9 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { int b; b = a; /* W0246 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0246 | 4 | 9 | | W0100 | 3 | 9 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { int b; b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 9 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(unsigned char a) { bar(a); /* W0246 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0246 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(unsigned char a) { bar((int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ int foo(unsigned char a) { return a; /* W0246 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0246 | 3 | 12 | | W0402 | 3 | 5 | | W0104 | 1 | 23 | | W0628 | 1 | 5 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ int foo(unsigned char a) { return (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 23 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0149.feature0000644000004100000410000001046212340630463021076 0ustar www-datawww-dataFeature: W0149 W0149 detects that `unsigned long' value is converted into `short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { short b = a; /* W0149 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0149 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { short b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 15 | | C1000 | | | | C1006 | 1 | 24 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { short b; b = a; /* W0149 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0149 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { short b; b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 24 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(unsigned long a) { bar(a); /* W0149 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0149 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(unsigned long a) { bar((short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 24 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ short foo(unsigned long a) { return a; /* W0149 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0149 | 3 | 12 | | W0285 | 3 | 5 | | W0104 | 1 | 25 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ short foo(unsigned long a) { return (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 25 | | W0104 | 1 | 25 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0127.feature0000644000004100000410000000754112340630463021076 0ustar www-datawww-dataFeature: W0127 W0127 detects that `char' value is converted into `float' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { float b = a; /* W0127 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0127 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { float b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { float b; b = a; /* W0127 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0127 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { float b; b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(char a) { bar(a); /* W0127 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0127 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(char a) { bar((float) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ float foo(char a) { return a; /* W0127 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0127 | 3 | 12 | | W0263 | 3 | 5 | | W0104 | 1 | 16 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ float foo(char a) { return (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 16 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W1071.feature0000644000004100000410000000614012340630463021067 0ustar www-datawww-dataFeature: W1071 W1071 detects that a function has multiple termination points. Scenario: explicit returns and implicit return Given a target source named "fixture.c" with: """ void foo(int i) /* W1071 */ { if (i == 0) { return; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 14 | | W1071 | 1 | 6 | | W0628 | 1 | 6 | Scenario: explicit return and no implicit return Given a target source named "fixture.c" with: """ void foo(int i) /* OK */ { switch (i) { default: return; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 14 | | W0781 | 3 | 5 | | W0628 | 1 | 6 | Scenario: dead explicit return and implicit return Given a target source named "fixture.c" with: """ void foo(unsigned int ui) /* OK */ { if (ui < 0U) { return; /* dead-code */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0610 | 3 | 12 | | W0613 | 3 | 12 | | W0104 | 1 | 23 | | W9001 | 4 | 9 | | W0628 | 1 | 6 | Scenario: explicit returns and no implicit return Given a target source named "fixture.c" with: """ int foo(int i) /* W1071 */ { if (i == 0) { return 0; } else { return 1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 13 | | W1071 | 1 | 5 | | W0628 | 1 | 5 | Scenario: array-subscript-expression as the controlling expression Given a target source named "fixture.c" with: """ struct foo { int len; int ary[]; }; static void foo(struct foo *p) { int i; for (i = 0; i < p->len; i++) { if (p->ary[i]) return; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 6 | 13 | | W0422 | 9 | 22 | | C1000 | | | | C1005 | 6 | 29 | | W0422 | 10 | 14 | | C1000 | | | | C1005 | 6 | 29 | | W0104 | 6 | 29 | | W0105 | 6 | 29 | | W1071 | 6 | 13 | | W0629 | 6 | 13 | | W0414 | 10 | 24 | | W0114 | 10 | 9 | | W0628 | 6 | 13 | adlint-3.2.14/features/code_check/W0478.feature0000644000004100000410000000671212340630463021106 0ustar www-datawww-dataFeature: W0478 W0478 detects that the macro defined as an unrecognizable piece of code. Scenario: including `{}' and control statement Given a target source named "fixture.c" with: """ #define CHECK(ptr) if (!ptr) { exit(1) }; /* W0478 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0549 | 1 | 25 | | W0478 | 1 | 1 | Scenario: including semicolon and control statement Given a target source named "fixture.c" with: """ #define CHECK(ptr) ptr = malloc(size); if (!ptr) exit(1);/* W0478 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0549 | 1 | 20 | | W0549 | 1 | 45 | | W0478 | 1 | 1 | Scenario: including storage-class specifier Given a target source named "fixture.c" with: """ #define CONV(num) return (static int) (num) /* W0478 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0478 | 1 | 1 | Scenario: including `{]',but it also including initializer Given a target source named "fixture.c" with: """ #define SUM(num) { num, num + 10 } /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0549 | 1 | 20 | | W0549 | 1 | 25 | Scenario: including `{]',but it also including code block Given a target source named "fixture.c" with: """ #define INI(x, n) {int i; for (i = 0; i < n; ++i) { x[i] = 0; }} /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0549 | 1 | 53 | | W0549 | 1 | 43 | | W0481 | 1 | 1 | Scenario: including `{}' but have `do-while-zero' structure Given a target source named "fixture.c" with: """ #define DO_WHILE(x) do { x = x + 1 } while (0) /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0549 | 1 | 26 | | W0549 | 1 | 30 | Scenario: have the semicolon but it's list of specifier and qualifier Given a target source named "fixture.c" with: """ #define U_INT unsigned int; /* OK */ #define C_INT const int; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0479 | 1 | 1 | | W0479 | 2 | 1 | Scenario: have the semicolon but it's list of storage-class specifier and type specifier Given a target source named "fixture.c" with: """ #define CONV(x) static const int y = x; return y; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0549 | 1 | 38 | adlint-3.2.14/features/code_check/W0761.feature0000644000004100000410000001076412340630463021103 0ustar www-datawww-dataFeature: W0761 W0761 detects that `long long' value is converted into `int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { int b = a; /* W0761 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0761 | 3 | 13 | | W0100 | 3 | 9 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { int b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 13 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 9 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { int b; b = a; /* W0761 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0761 | 4 | 9 | | W0100 | 3 | 9 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { int b; b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 9 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(long long a) { bar(a); /* W0761 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0761 | 5 | 9 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(long long a) { bar((int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 20 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ int foo(long long a) { return a; /* W0761 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0761 | 3 | 12 | | W0395 | 3 | 5 | | W0104 | 1 | 19 | | W0834 | 1 | 9 | | W0628 | 1 | 5 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ int foo(long long a) { return (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 19 | | W0104 | 1 | 19 | | W0834 | 1 | 9 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0687.feature0000644000004100000410000000133012340630463021077 0ustar www-datawww-dataFeature: W0687 W0687 detects that #undef directive deletes the `defined' operator. Scenario: #undef directive with the `defined' operator Given a target source named "fixture.c" with: """ #undef defined /* W0687 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0687 | 1 | 8 | Scenario: #undef directive with ordinary macro name Given a target source named "fixture.c" with: """ #define MACRO (0) #undef MACRO /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | adlint-3.2.14/features/code_check/W0228.feature0000644000004100000410000000754612340630463021105 0ustar www-datawww-dataFeature: W0228 W0228 detects that `double' value is converted into `long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { long b = a; /* W0228 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0228 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { long b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { long b; b = a; /* W0228 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0228 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { long b; b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(double a) { bar(a); /* W0228 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0228 | 5 | 9 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(double a) { bar((long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long foo(double a) { return a; /* W0228 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0228 | 3 | 12 | | W0364 | 3 | 5 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long foo(double a) { return (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0196.feature0000644000004100000410000000764612340630463021112 0ustar www-datawww-dataFeature: W0196 W0196 detects that `int' value is converted into `long double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { long double b = a; /* W0196 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0196 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { long double b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { long double b; b = a; /* W0196 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0196 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { long double b; b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(int a) { bar(a); /* W0196 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0196 | 5 | 9 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(int a) { bar((long double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(int a) { return a; /* W0196 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0196 | 3 | 12 | | W0332 | 3 | 5 | | W0104 | 1 | 21 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(int a) { return (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0104 | 1 | 21 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0490.feature0000644000004100000410000000504412340630463021075 0ustar www-datawww-dataFeature: W0490 W0490 detects that multiple precedence binary-expressions appear as an operand of a logical-and-expression or a logical-or-expression without appropriate grouping. Scenario: precedence binary-expressions appear as an operand of a logical-and-expression Given a target source named "fixture.c" with: """ static void foo(int i, int j) { if (i + j && i * j) { /* W0490 */ return; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 3 | 11 | | W0723 | 3 | 20 | | W0104 | 1 | 21 | | W0104 | 1 | 28 | | W1071 | 1 | 13 | | W0629 | 1 | 13 | | W0490 | 3 | 9 | | W0500 | 3 | 9 | | W0502 | 3 | 9 | | W0732 | 3 | 15 | | W0628 | 1 | 13 | Scenario: precedence binary-expressions appear as an operand of a logical-and-expression with grouping Given a target source named "fixture.c" with: """ static void foo(int i, int j) { if ((i + j) && (i * j)) { /* OK */ return; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 3 | 12 | | W0723 | 3 | 23 | | W0104 | 1 | 21 | | W0104 | 1 | 28 | | W1071 | 1 | 13 | | W0629 | 1 | 13 | | W0732 | 3 | 17 | | W0628 | 1 | 13 | Scenario: precedence binary-expressions appear as an operand of a logical-and-expression grouped entirely Given a target source named "fixture.c" with: """ static void foo(int i, int j) { if ((i + j && i * j)) { /* W0490 */ return; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 3 | 12 | | W0723 | 3 | 21 | | W0104 | 1 | 21 | | W0104 | 1 | 28 | | W1071 | 1 | 13 | | W0629 | 1 | 13 | | W0490 | 3 | 9 | | W0500 | 3 | 9 | | W0502 | 3 | 9 | | W0732 | 3 | 16 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0650.feature0000644000004100000410000001457312340630463021102 0ustar www-datawww-dataFeature: W0650 W0650 detects that right hand side of shift-expression is greater than the bit length of left hand side value. Scenario: 32-bit left shift-expression of `int' value Given a target source named "fixture.c" with: """ unsigned int foo(unsigned int i) { return i << 32; /* W0650 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0116 | 3 | 14 | | C1000 | | | | C1006 | 1 | 31 | | W0650 | 3 | 14 | | W0104 | 1 | 31 | | W0628 | 1 | 14 | Scenario: 32-bit right shift-expression of `int' value Given a target source named "fixture.c" with: """ unsigned int foo(unsigned int i) { return i >> 32; /* W0650 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0650 | 3 | 14 | | W0104 | 1 | 31 | | W0628 | 1 | 14 | Scenario: 31-bit left shift-expression of `int' value Given a target source named "fixture.c" with: """ unsigned int foo(unsigned int i) { return i << 31; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0116 | 3 | 14 | | C1000 | | | | C1006 | 1 | 31 | | W0104 | 1 | 31 | | W0628 | 1 | 14 | Scenario: 31-bit right shift-expression of `int' value Given a target source named "fixture.c" with: """ unsigned int foo(unsigned int i) { return i >> 31; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0104 | 1 | 31 | | W0628 | 1 | 14 | Scenario: 64-bit left shift-expression of `int' value Given a target source named "fixture.c" with: """ unsigned int foo(unsigned int i) { return i << 64; /* W0650 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0116 | 3 | 14 | | C1000 | | | | C1006 | 1 | 31 | | W0650 | 3 | 14 | | W0104 | 1 | 31 | | W0628 | 1 | 14 | Scenario: 64-bit right shift-expression of `int' value Given a target source named "fixture.c" with: """ unsigned int foo(unsigned int i) { return i >> 64; /* W0650 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0650 | 3 | 14 | | W0104 | 1 | 31 | | W0628 | 1 | 14 | Scenario: 32-bit left shift compound-assignment-expression of `int' value Given a target source named "fixture.c" with: """ void foo(unsigned int i) { i <<= 32; /* W0650 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0116 | 3 | 7 | | C1000 | | | | C1006 | 1 | 23 | | W0650 | 3 | 7 | | W0628 | 1 | 6 | Scenario: 32-bit right shift compound-assignment-expression of `int' value Given a target source named "fixture.c" with: """ void foo(unsigned int i) { i >>= 32; /* W0650 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0650 | 3 | 7 | | W0628 | 1 | 6 | Scenario: 31-bit left shift-expression of `char' value Given a target source named "fixture.c" with: """ int foo(char c) { return c << 31; /* OK because of the integer-promotion */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0123 | 3 | 12 | | W0116 | 3 | 14 | | C1000 | | | | C1006 | 1 | 14 | | W0719 | 3 | 14 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | Scenario: 31-bit right shift-expression of `char' value Given a target source named "fixture.c" with: """ int foo(char c) { return c >> 31; /* OK because of the integer-promotion */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0123 | 3 | 12 | | W0719 | 3 | 14 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | Scenario: 31-bit left shift-expression of `char' value Given a target source named "fixture.c" with: """ int foo(char c) { return c << 32; /* W0650 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0123 | 3 | 12 | | W0116 | 3 | 14 | | C1000 | | | | C1006 | 1 | 14 | | W0650 | 3 | 14 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | Scenario: 31-bit right shift-expression of `char' value Given a target source named "fixture.c" with: """ int foo(char c) { return c >> 32; /* W0650 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0123 | 3 | 12 | | W0650 | 3 | 14 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0749.feature0000644000004100000410000001044612340630463021106 0ustar www-datawww-dataFeature: W0749 W0749 detects that `int' value is converted into `signed char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { signed char b = a; /* W0749 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0749 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(int a) { signed char b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 21 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 17 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { signed char b; b = a; /* W0749 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0749 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(int a) { signed char b; b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 17 | | W0104 | 1 | 14 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(int a) { bar(a); /* W0749 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0749 | 5 | 9 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(int a) { bar((signed char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 14 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(int a) { return a; /* W0749 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0749 | 3 | 12 | | W0383 | 3 | 5 | | W0104 | 1 | 21 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(int a) { return (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 21 | | W0104 | 1 | 21 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0719.feature0000644000004100000410000001064212340630463021101 0ustar www-datawww-dataFeature: W0719 W0719 detects that the right hand side of the shift-expression is greater than the bit length of underlying type of the left hand side. Scenario: 31-bit left shift-expression of `char' value Given a target source named "fixture.c" with: """ int foo(char c) { return c << 31; /* W0719 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0123 | 3 | 12 | | W0116 | 3 | 14 | | C1000 | | | | C1006 | 1 | 14 | | W0719 | 3 | 14 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | Scenario: 31-bit right shift-expression of `char' value Given a target source named "fixture.c" with: """ int foo(char c) { return c >> 31; /* W0719 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0123 | 3 | 12 | | W0719 | 3 | 14 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | Scenario: 7-bit left shift-expression of `char' value Given a target source named "fixture.c" with: """ int foo(char c) { return c << 7; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0123 | 3 | 12 | | W0116 | 3 | 14 | | C1000 | | | | C1006 | 1 | 14 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | Scenario: 7-bit right shift-expression of `char' value Given a target source named "fixture.c" with: """ int foo(char c) { return c >> 7; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0123 | 3 | 12 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | Scenario: 31-bit left shift compound-assignment-expression of `char' value Given a target source named "fixture.c" with: """ void foo(char c) { c <<= 31; /* W0719 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0123 | 3 | 5 | | W0116 | 3 | 7 | | C1000 | | | | C1006 | 1 | 15 | | W0719 | 3 | 7 | | W0136 | 3 | 5 | | W0628 | 1 | 6 | Scenario: 31-bit right shift-expression of `char' value Given a target source named "fixture.c" with: """ int foo(char c) { return c >> 31; /* W0719 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0123 | 3 | 12 | | W0719 | 3 | 14 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | Scenario: 63-bit left shift compound-assignment-expression of `char' value Given a target source named "fixture.c" with: """ void foo(char c) { c <<= 63; /* OK but W0650 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0123 | 3 | 5 | | W0116 | 3 | 7 | | C1000 | | | | C1006 | 1 | 15 | | W0650 | 3 | 7 | | W0136 | 3 | 5 | | W0628 | 1 | 6 | Scenario: 63-bit right shift-expression of `char' value Given a target source named "fixture.c" with: """ int foo(char c) { return c >> 63; /* OK but W0650 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0123 | 3 | 12 | | W0650 | 3 | 14 | | W0104 | 1 | 14 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0218.feature0000644000004100000410000000770512340630463021101 0ustar www-datawww-dataFeature: W0218 W0218 detects that `float' value is converted into `unsigned int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { unsigned int b = a; /* W0218 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0218 | 3 | 22 | | W0100 | 3 | 18 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { unsigned int b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 18 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { unsigned int b; b = a; /* W0218 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0218 | 4 | 9 | | W0100 | 3 | 18 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { unsigned int b; b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 18 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(float a) { bar(a); /* W0218 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0218 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(float a) { bar((unsigned int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(float a) { return a; /* W0218 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0218 | 3 | 12 | | W0354 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 14 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(float a) { return (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0104 | 1 | 24 | | W0628 | 1 | 14 | adlint-3.2.14/features/code_check/W0492.feature0000644000004100000410000000424712340630463021103 0ustar www-datawww-dataFeature: W0492 W0492 detects that the same name appears in different namespaces. Scenario: hard to parse Given a target source named "fixture.c" with: """ typedef int foo; foo bar(foo baz) { goto foo; foo: return baz; } struct foo { foo foo, (*bar)(foo); }; /* W0492 */ union bar { foo foo, (*bar)(foo (*baz)(foo)); }; /* W0492 */ enum baz { baz }; struct { foo :1; foo foo:1; /* W0492 */ foo :1; foo bar:1; /* W0492 */ foo :1; } qux; struct qux { foo; union bar bar; /* W0492 */ }; int const long volatile unsigned cv_ulong; const foo volatile cv_foo; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0625 | 1 | 13 | | W0491 | 6 | 1 | | C0001 | 1 | 13 | | W0104 | 3 | 13 | | W0491 | 10 | 8 | | C0001 | 1 | 13 | | W0492 | 10 | 18 | | C0001 | 1 | 13 | | C0001 | 10 | 8 | | W0492 | 11 | 7 | | C0001 | 10 | 25 | | W0492 | 11 | 17 | | C0001 | 1 | 13 | | C0001 | 10 | 8 | | W0492 | 11 | 24 | | C0001 | 11 | 7 | | W0492 | 16 | 9 | | C0001 | 1 | 13 | | C0001 | 10 | 8 | | W0492 | 18 | 9 | | C0001 | 11 | 7 | | W0117 | 20 | 3 | | W0491 | 22 | 8 | | C0001 | 20 | 3 | | W0492 | 24 | 15 | | C0001 | 11 | 7 | | W0080 | 27 | 34 | | W0117 | 27 | 34 | | W0080 | 28 | 20 | | W0117 | 28 | 20 | | W1072 | 5 | 5 | | W0551 | 11 | 7 | | W0525 | 16 | 9 | | W0525 | 18 | 9 | | W0040 | 14 | 1 | | W0425 | 10 | 25 | | W0425 | 11 | 24 | | W0431 | 6 | 1 | | W0432 | 6 | 1 | | W0628 | 3 | 5 | adlint-3.2.14/features/code_check/E0013.feature0000644000004100000410000000153312340630463021041 0ustar www-datawww-dataFeature: E0013 E0013 detects that an expression contains statements. Scenario: statements in initializer Given a target source named "fixture.c" with: """ int foo(int i) { int j = ({ volatile int *p = &i; i - 1; }); /* E0013 */ if (j == 0) { return 0; } else { return foo(j); } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | E0013 | 3 | 13 | | W0117 | 1 | 5 | | W0556 | 9 | 19 | | W0100 | 3 | 9 | | W0031 | 1 | 13 | | W0104 | 1 | 13 | | W1071 | 1 | 5 | | W0555 | 1 | 5 | | W0589 | 1 | 5 | | W0591 | 1 | 5 | adlint-3.2.14/features/code_check/W0757.feature0000644000004100000410000001005112340630463021075 0ustar www-datawww-dataFeature: W0757 W0757 detects that `unsigned long' value is converted into `unsigned short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { unsigned short b = a; /* W0757 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0757 | 3 | 24 | | W0100 | 3 | 20 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { unsigned short b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 20 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { unsigned short b; b = a; /* W0757 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0757 | 4 | 9 | | W0100 | 3 | 20 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { unsigned short b; b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 20 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(unsigned long a) { bar(a); /* W0757 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0757 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(unsigned long a) { bar((unsigned short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(unsigned long a) { return a; /* W0757 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0757 | 3 | 12 | | W0391 | 3 | 5 | | W0104 | 1 | 34 | | W0628 | 1 | 16 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(unsigned long a) { return (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0104 | 1 | 34 | | W0628 | 1 | 16 | adlint-3.2.14/features/code_check/W0026.feature0000644000004100000410000000601612340630463021070 0ustar www-datawww-dataFeature: W0026 W0026 detects that there is redundant #include not in a source file but in a translation-unit. Scenario: redundant #include of user header Given a target source named "fixture.c" with: """ #include "test.h" #include "test2.h" /* W0026 */ void foo(void) { } """ And a target source named "test.h" with: """ #ifndef INCLUDED_TEST #define INCLUDED_TEST #include "test2.h" #endif """ And a target source named "test2.h" with: """ #ifndef INCLUDED_TEST2 #define INCLUDED_TEST2 void foo(void); #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0026 | 2 | 1 | | W0071 | 1 | 1 | | W0628 | 4 | 6 | Scenario: no redundant #include of user header Given a target source named "fixture.c" with: """ #include "test.h" /* OK */ void foo(void) { } """ And a target source named "test.h" with: """ #ifndef INCLUDED_TEST #define INCLUDED_TEST #include "test2.h" #endif """ And a target source named "test2.h" with: """ #ifndef INCLUDED_TEST2 #define INCLUDED_TEST2 void foo(void); #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0071 | 1 | 1 | | W0628 | 3 | 6 | Scenario: redundant #include of system header Given a target source named "fixture.c" with: """ #include #include /* W0026 */ void foo(void) { } """ And a target source named "test.h" with: """ #ifndef INCLUDED_TEST #define INCLUDED_TEST #include #endif """ And a target source named "test2.h" with: """ #ifndef INCLUDED_TEST2 #define INCLUDED_TEST2 void foo(void); #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0026 | 2 | 1 | | W0070 | 1 | 1 | | W0628 | 4 | 6 | Scenario: no redundant #include of system header Given a target source named "fixture.c" with: """ #include /* OK */ void foo(void) { } """ And a target source named "test.h" with: """ #ifndef INCLUDED_TEST #define INCLUDED_TEST #include #endif """ And a target source named "test2.h" with: """ #ifndef INCLUDED_TEST2 #define INCLUDED_TEST2 void foo(void); #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0070 | 1 | 1 | | W0628 | 3 | 6 | adlint-3.2.14/features/code_check/W0809.feature0000644000004100000410000000711312340630463021100 0ustar www-datawww-dataFeature: W0809 W0809 detects that an identifier is declared but it already reserved by the library. Scenario: an identifier starts with `__' Given a target source named "fixture.c" with: """ extern int __number; /* W0809 */ extern int __NUMBER; /* W0809 */ extern char __value; /* W0809 */ extern char __VALUE; /* W0809 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0118 | 2 | 12 | | W0118 | 3 | 13 | | W0118 | 4 | 13 | | W0809 | 1 | 12 | | W0809 | 2 | 12 | | W0809 | 3 | 13 | | W0809 | 4 | 13 | Scenario: an identifier starts with `_(capital letters)' Given a target source named "fixture.c" with: """ extern int _NUMBER; /* W0809 */ extern int _Number; /* W0809 */ extern char _VALUE; /* W0809 */ extern char _Value; /* W0809 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0118 | 2 | 12 | | W0118 | 3 | 13 | | W0118 | 4 | 13 | | W0809 | 1 | 12 | | W0809 | 2 | 12 | | W0809 | 3 | 13 | | W0809 | 4 | 13 | Scenario: an identifier starts with `_' declared as function Given a target source named "fixture.c" with: """ static void _func(void); /* W0809 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0809 | 1 | 13 | Scenario: an identifier starts with `_' declared as struct Given a target source named "fixture.c" with: """ struct _foo { /* W0809 */ int i; }; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0809 | 1 | 8 | Scenario: an identifier starts with `_' declared as typedef Given a target source named "fixture.c" with: """ typedef void _type; /* W0809 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0809 | 1 | 14 | Scenario: an identifier starts with `_' declared as enum Given a target source named "fixture.c" with: """ enum _color { Red, Green, Blue}; /* W0809 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0809 | 1 | 6 | Scenario: an identifier starts with `_' declared as enumerators Given a target source named "fixture.c" with: """ enum color { _Red, _Green, _Blue}; /* W0809 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0809 | 1 | 14 | | W0809 | 1 | 20 | | W0809 | 1 | 28 | Scenario: an identifier starts with `_' declared as union Given a target source named "fixture.c" with: """ union _uni { /* W0809 */ int a; int b; }; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0551 | 1 | 7 | | W0809 | 1 | 7 | adlint-3.2.14/features/code_check/W0227.feature0000644000004100000410000000771612340630463021103 0ustar www-datawww-dataFeature: W0227 W0227 detects that `double' value is converted into `unsigned int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { unsigned int b = a; /* W0227 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0227 | 3 | 22 | | W0100 | 3 | 18 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { unsigned int b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 18 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { unsigned int b; b = a; /* W0227 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0227 | 4 | 9 | | W0100 | 3 | 18 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { unsigned int b; b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 18 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(double a) { bar(a); /* W0227 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0227 | 5 | 9 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(double a) { bar((unsigned int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(double a) { return a; /* W0227 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0227 | 3 | 12 | | W0363 | 3 | 5 | | W0104 | 1 | 25 | | W0628 | 1 | 14 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(double a) { return (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0104 | 1 | 25 | | W0628 | 1 | 14 | adlint-3.2.14/features/code_check/W1057.feature0000644000004100000410000001003412340630463021070 0ustar www-datawww-dataFeature: W1057 W1057 detects that a value of enum typed non-constant expression is assigned to the inconsistently enum typed variable. Scenario: assigning a value of the consistently enum typed constant expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; static void foo(void) { enum Color c = RED; c = BLUE; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 4 | 13 | | W0629 | 4 | 13 | | W0628 | 4 | 13 | Scenario: assigning a value of the consistently enum typed non-constant expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; static void foo(const enum Color p) { enum Color c = RED; c = p; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 4 | 13 | | W0629 | 4 | 13 | | W0628 | 4 | 13 | Scenario: assigning a value of the inconsistently enum typed constant expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; static void foo(void) { enum Color c = RED; c = ORANGE; /* OK but W0729 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 4 | 13 | | W9003 | 8 | 9 | | W0729 | 8 | 7 | | W0629 | 4 | 13 | | W0628 | 4 | 13 | Scenario: assigning a value of the inconsistently enum typed non-constant expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; static void foo(const enum Fruit f) { enum Color c = RED; c = f; /* W1057 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 4 | 13 | | W0727 | 8 | 9 | | W9003 | 8 | 9 | | W1057 | 8 | 7 | | W1062 | 8 | 7 | | W0629 | 4 | 13 | | W0628 | 4 | 13 | Scenario: assigning a value of `int' typed constant expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; static void foo(void) { enum Color c = RED; c = 2; /* OK but W1054 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 4 | 13 | | W9003 | 8 | 9 | | W1054 | 8 | 7 | | W0629 | 4 | 13 | | W0628 | 4 | 13 | Scenario: assigning a value of `int' typed non-constant expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; static void foo(const int i) { enum Color c = RED; c = i + 1; /* OK but W1062 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 4 | 13 | | W0723 | 8 | 11 | | W0727 | 8 | 11 | | W9003 | 8 | 11 | | W1054 | 8 | 7 | | W1062 | 8 | 7 | | W0629 | 4 | 13 | | W0628 | 4 | 13 | adlint-3.2.14/features/code_check/W0584.feature0000644000004100000410000000765212340630463021110 0ustar www-datawww-dataFeature: W0584 W0584 detects that type of the argument of a function call does not conform with one of the corresponding parameter of the old style function definition. Scenario: call with matched arguments Given a target source named "fixture.c" with: """ int foo(p, i) int *p; int i; { return *p + i; } int bar(p) int *p; { return foo(NULL, *p); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0422 | 5 | 12 | | C1000 | | | | C1005 | 2 | 6 | | W0723 | 5 | 15 | | W0104 | 2 | 6 | | W0104 | 3 | 5 | | W0105 | 2 | 6 | | W0117 | 8 | 5 | | W0422 | 11 | 22 | | C1000 | | | | C1005 | 9 | 6 | | W0104 | 9 | 6 | | W0105 | 9 | 6 | | W0002 | 1 | 5 | | W0002 | 8 | 5 | | W0589 | 1 | 5 | | W0591 | 1 | 5 | | W0628 | 8 | 5 | Scenario: call with unmatched arguments Given a target source named "fixture.c" with: """ int foo(p, i) int *p; int i; { return *p + i; } int bar(p) int *p; { return foo(NULL, p); /* W0584 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0422 | 5 | 12 | | C1000 | | | | C1005 | 2 | 6 | | W0723 | 5 | 15 | | W0104 | 2 | 6 | | W0104 | 3 | 5 | | W0105 | 2 | 6 | | W0117 | 8 | 5 | | W9003 | 11 | 22 | | W0584 | 11 | 22 | | W0104 | 9 | 6 | | W0105 | 9 | 6 | | W0002 | 1 | 5 | | W0002 | 8 | 5 | | W0589 | 1 | 5 | | W0591 | 1 | 5 | | W0628 | 8 | 5 | Scenario: call with unmatched constant pointer Given a target source named "fixture.c" with: """ int foo(p, i) int *p; int i; { return *p + i; } int bar(p) int *p; { return foo(3, *p); /* W0584 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0422 | 5 | 12 | | C1000 | | | | C1005 | 2 | 6 | | W0723 | 5 | 15 | | W0104 | 2 | 6 | | W0104 | 3 | 5 | | W0105 | 2 | 6 | | W0117 | 8 | 5 | | W0422 | 11 | 19 | | C1000 | | | | C1005 | 9 | 6 | | W9003 | 11 | 16 | | W0584 | 11 | 16 | | W0104 | 9 | 6 | | W0105 | 9 | 6 | | W0002 | 1 | 5 | | W0002 | 8 | 5 | | W0589 | 1 | 5 | | W0591 | 1 | 5 | | W0628 | 8 | 5 | Scenario: call with convertible arguments Given a target source named "fixture.c" with: """ void print(p) const char *p; { } void foo() { print("foo"); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0031 | 2 | 13 | | W0104 | 2 | 13 | | W0117 | 6 | 6 | | W0002 | 1 | 6 | | W0540 | 6 | 6 | | W0947 | 8 | 11 | | W0589 | 1 | 6 | | W0591 | 1 | 6 | | W0628 | 6 | 6 | adlint-3.2.14/features/code_check/W0204.feature0000644000004100000410000000767712340630463021104 0ustar www-datawww-dataFeature: W0204 W0204 detects that `unsigned long' value is converted into `double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { double b = a; /* W0204 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0204 | 3 | 16 | | W0100 | 3 | 12 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { double b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { double b; b = a; /* W0204 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0204 | 4 | 9 | | W0100 | 3 | 12 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { double b; b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(unsigned long a) { bar(a); /* W0204 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0204 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(unsigned long a) { bar((double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ double foo(unsigned long a) { return a; /* W0204 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0204 | 3 | 12 | | W0340 | 3 | 5 | | W0104 | 1 | 26 | | W0628 | 1 | 8 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ double foo(unsigned long a) { return (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0104 | 1 | 26 | | W0628 | 1 | 8 | adlint-3.2.14/features/code_check/W0481.feature0000644000004100000410000000157312340630463021100 0ustar www-datawww-dataFeature: W0481 W0481 detects that the macro is enclosed by `{}' and have semicolon. Scenario: enclosed by `{}' and have code block Given a target source named "fixture.c" with: """ #define INI(x, n) {int i;for (i=0; i < n; ++i) { x[i] = 0; }} /* W0481 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0549 | 1 | 50 | | W0549 | 1 | 40 | | W0481 | 1 | 1 | Scenario: enclosed by `{}', but it's not code block Given a target source named "fixture.c" with: """ #define INI(x, n) { (x) + (n) } /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | adlint-3.2.14/features/code_check/W0697.feature0000644000004100000410000001225112340630463021104 0ustar www-datawww-dataFeature: W0697 W0697 detects that some execution paths terminate implicitly without explicit `return' statements in the non-void function. Scenario: no `return' statement in non-void function Given a target source named "fixture.c" with: """ extern int func(void) /* W0697 */ { } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0697 | 1 | 12 | | W0628 | 1 | 12 | Scenario: a `return' statement is only in a `if' statement Given a target source named "fixture.c" with: """ extern int func(int value) /* W0697 */ { if (value == 0) { return 0; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0697 | 1 | 12 | | W0104 | 1 | 21 | | W1071 | 1 | 12 | | W0628 | 1 | 12 | Scenario: `return' statements are only in a `if-else-if' statements chain Given a target source named "fixture.c" with: """ extern int func(int value) /* W0697 */ { if (value == 0) { return 0; } else if (value == 1) { return 1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0697 | 1 | 12 | | W0104 | 1 | 21 | | W1071 | 1 | 12 | | W1069 | 3 | 5 | | W0628 | 1 | 12 | Scenario: `return' statements are in all `case' clauses but not in the `default` clause Given a target source named "fixture.c" with: """ extern int func(int value) /* W0697 */ { switch (value) { case 1: return 0; case 2: return 1; case 3: return 2; default: break; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0697 | 1 | 12 | | W0104 | 1 | 21 | | W1071 | 1 | 12 | | W0628 | 1 | 12 | Scenario: a `return' statement in non-void function Given a target source named "fixture.c" with: """ extern int func(void) /* OK */ { return 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0628 | 1 | 12 | Scenario: no implicit termination in all execution paths Given a target source named "fixture.c" with: """ extern int func(int value) /* OK */ { if (value == 0) { return 0; } return 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0104 | 1 | 21 | | W1071 | 1 | 12 | | W0628 | 1 | 12 | Scenario: no implicit termination in `if-else-if' statements chain Given a target source named "fixture.c" with: """ extern int func(int value) /* OK */ { if (value == 0) { return 0; } else if (value == 1) { return 1; } else { return 2; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0104 | 1 | 21 | | W1071 | 1 | 12 | | W0628 | 1 | 12 | Scenario: no implicit termination with `switch' statement Given a target source named "fixture.c" with: """ extern int func(int value) /* OK */ { switch (value) { case 1: return 0; case 2: return 1; case 3: return 2; default: break; } return 10; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0104 | 1 | 21 | | W1071 | 1 | 12 | | W0628 | 1 | 12 | Scenario: no implicit termination with `goto' statement Given a target source named "fixture.c" with: """ extern int func(int value) /* OK */ { if (value == 10) { goto A; } A: return 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0104 | 1 | 21 | | W1072 | 4 | 9 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0133.feature0000644000004100000410000001042312340630463021064 0ustar www-datawww-dataFeature: W0133 W0133 detects that `signed char' value is converted into `char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { char b = a; /* W0133 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0133 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(signed char a) { char b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 14 | | C1000 | | | | C1006 | 1 | 22 | | W0100 | 3 | 10 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { char b; b = a; /* W0133 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0133 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(signed char a) { char b; b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 22 | | W0100 | 3 | 10 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(signed char a) { bar(a); /* W0133 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0133 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(signed char a) { bar((char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 22 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ char foo(signed char a) { return a; /* W0133 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0133 | 3 | 12 | | W0269 | 3 | 5 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ char foo(signed char a) { return (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 22 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0138.feature0000644000004100000410000001032412340630463021071 0ustar www-datawww-dataFeature: W0138 W0138 detects that `long' value is converted into `char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { char b = a; /* W0138 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0138 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { char b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 14 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 10 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { char b; b = a; /* W0138 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0138 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { char b; b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 10 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(long a) { bar(a); /* W0138 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0138 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(long a) { bar((char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 15 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ char foo(long a) { return a; /* W0138 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0138 | 3 | 12 | | W0274 | 3 | 5 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ char foo(long a) { return (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 15 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0751.feature0000644000004100000410000001002312340630463021066 0ustar www-datawww-dataFeature: W0751 W0751 detects that `unsigned int' value is converted into `unsigned char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { unsigned char b = a; /* W0751 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0751 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { unsigned char b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { unsigned char b; b = a; /* W0751 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0751 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { unsigned char b; b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(unsigned int a) { bar(a); /* W0751 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0751 | 5 | 9 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(unsigned int a) { bar((unsigned char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(unsigned int a) { return a; /* W0751 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0751 | 3 | 12 | | W0385 | 3 | 5 | | W0104 | 1 | 32 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(unsigned int a) { return (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0104 | 1 | 32 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0745.feature0000644000004100000410000000743512340630463021106 0ustar www-datawww-dataFeature: W0745 W0745 detects that an array subscript must cause out of bound access of the array object. Scenario: array-subscript-expression with non-constant subscript must cause OOB access in an initializer Given a target source named "fixture.c" with: """ extern int a[5]; int foo(int i) { if (i < 0) { int j = a[i - 1]; /* W0745 */ return j; } return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W0723 | 6 | 21 | | W0745 | 6 | 21 | | W0100 | 6 | 13 | | W0104 | 3 | 13 | | W1071 | 3 | 5 | | W0628 | 3 | 5 | Scenario: array-subscript-expression with non-constant subscript must cause OOB access in rhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; int foo(int i) { int j = 0; if (i > 4) { j = a[i + 1]; /* W0745 */ } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W0723 | 7 | 17 | | W0745 | 7 | 17 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: array-subscript-expression with non-constant subscript must cause OOB access in lhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; void foo(int i) { if (i < -2) { a[i + 2] = 0; /* W0745 */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 6 | | W0745 | 6 | 13 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: indirection-expression with non-constant subscript must cause OOB access in rhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; int foo(int i) { int j = 0; if (i > 5) { j = *(a + i + 2); /* W0745 */ } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W9003 | 7 | 19 | | W0023 | 7 | 17 | | W9003 | 7 | 23 | | W0023 | 7 | 21 | | W0745 | 7 | 14 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: indirection-expression with non-constant subscript must cause OOB access in lhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; void foo(int i) { if (i < 0) { *(i + a - 1) = 0; /* W0745 */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 6 | | W9003 | 6 | 11 | | W0023 | 6 | 13 | | W9003 | 6 | 19 | | W0024 | 6 | 17 | | W0745 | 6 | 10 | | W0104 | 3 | 14 | | W0498 | 6 | 10 | | W0628 | 3 | 6 | adlint-3.2.14/features/code_check/W0686.feature0000644000004100000410000000526512340630463021111 0ustar www-datawww-dataFeature: W0686 W0686 detects that the same characters exist in a scanset. Scenario: same characters exist in a scanset Given a target source named "fixture.c" with: """ #include void foo(void) { char c; int i = scanf("%[aa]", &c); /* W0686 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0459 | 6 | 28 | | C1000 | | | | C1003 | 5 | 10 | | W0686 | 6 | 19 | | W0100 | 5 | 10 | | W0100 | 6 | 9 | | W0947 | 6 | 19 | | W0628 | 3 | 6 | Scenario: same characters exist in a scanset Given a target source named "fixture.c" with: """ #include void foo(void) { char c; int i = scanf("%[111]", &c); /* W0686 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0459 | 6 | 29 | | C1000 | | | | C1003 | 5 | 10 | | W0686 | 6 | 19 | | W0100 | 5 | 10 | | W0100 | 6 | 9 | | W0947 | 6 | 19 | | W0628 | 3 | 6 | Scenario: same characters exist in a scanset Given a target source named "fixture.c" with: """ #include void foo(void) { char c; int i = scanf("%[ababa]", &c); /* W0686 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0459 | 6 | 31 | | C1000 | | | | C1003 | 5 | 10 | | W0686 | 6 | 19 | | W0100 | 5 | 10 | | W0100 | 6 | 9 | | W0947 | 6 | 19 | | W0628 | 3 | 6 | Scenario: proper character list in a scanset Given a target source named "fixture.c" with: """ #include void foo(void) { char c; int i = scanf("%[abcde]", &c); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0459 | 6 | 31 | | C1000 | | | | C1003 | 5 | 10 | | W0100 | 5 | 10 | | W0100 | 6 | 9 | | W0947 | 6 | 19 | | W0628 | 3 | 6 | adlint-3.2.14/features/code_check/W0249.feature0000644000004100000410000000765612340630463021112 0ustar www-datawww-dataFeature: W0249 W0249 detects that `unsigned short' value is converted into `long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { long b = a; /* W0249 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0249 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { long b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { long b; b = a; /* W0249 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0249 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { long b; b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(unsigned short a) { bar(a); /* W0249 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0249 | 5 | 9 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(unsigned short a) { bar((long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long foo(unsigned short a) { return a; /* W0249 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0249 | 3 | 12 | | W0405 | 3 | 5 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long foo(unsigned short a) { return (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0239.feature0000644000004100000410000001043612340630463021077 0ustar www-datawww-dataFeature: W0239 W0239 detects that `float' value is converted into `long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { long long b = a; /* W0239 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0239 | 3 | 19 | | W0100 | 3 | 15 | | W0104 | 1 | 16 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { long long b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 16 | | W0834 | 3 | 20 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { long long b; b = a; /* W0239 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0239 | 4 | 9 | | W0100 | 3 | 15 | | W0104 | 1 | 16 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { long long b; b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 16 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(float a) { bar(a); /* W0239 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0239 | 5 | 9 | | W0104 | 3 | 16 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(float a) { bar((long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 16 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(float a) { return a; /* W0239 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0239 | 3 | 12 | | W0375 | 3 | 5 | | W0104 | 1 | 21 | | W0834 | 1 | 1 | | W0628 | 1 | 11 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(float a) { return (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0104 | 1 | 21 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 11 | adlint-3.2.14/features/code_check/W0570.feature0000644000004100000410000000264112340630463021074 0ustar www-datawww-dataFeature: W0570 W0570 detects that a signed left-shift expression may cause undefined behavior because of overflow. Scenario: left-shift expression with `int' operand Given a target source named "fixture.c" with: """ static void foo(int i) { if (i > 0 && i <= 0x1FFFFFFF) { i << 1; /* OK */ i << 2; /* OK */ i << 3; /* W0570 */ i << 4; /* W0570 */ } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0076 | 3 | 23 | | W0572 | 4 | 11 | | W0794 | 4 | 11 | | W0572 | 5 | 11 | | W0794 | 5 | 11 | | W0570 | 6 | 11 | | C1000 | | | | C1006 | 1 | 21 | | W0572 | 6 | 11 | | W0794 | 6 | 11 | | W0570 | 7 | 11 | | C1000 | | | | C1006 | 1 | 21 | | W0572 | 7 | 11 | | W0794 | 7 | 11 | | W0104 | 1 | 21 | | W0629 | 1 | 13 | | W0490 | 3 | 9 | | W0499 | 3 | 9 | | W0502 | 3 | 9 | | W0085 | 4 | 9 | | W0085 | 5 | 9 | | W0085 | 6 | 9 | | W0085 | 7 | 9 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0171.feature0000644000004100000410000001047412340630463021074 0ustar www-datawww-dataFeature: W0171 W0171 detects that `long' value is converted into `unsigned int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { unsigned int b = a; /* W0171 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0171 | 3 | 22 | | W0100 | 3 | 18 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { unsigned int b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 22 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 18 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { unsigned int b; b = a; /* W0171 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0171 | 4 | 9 | | W0100 | 3 | 18 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { unsigned int b; b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 18 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(long a) { bar(a); /* W0171 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0171 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(long a) { bar((unsigned int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 15 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(long a) { return a; /* W0171 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0171 | 3 | 12 | | W0307 | 3 | 5 | | W0104 | 1 | 23 | | W0628 | 1 | 14 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(long a) { return (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 23 | | W0104 | 1 | 23 | | W0628 | 1 | 14 | adlint-3.2.14/features/code_check/W0733.feature0000644000004100000410000001222412340630463021073 0ustar www-datawww-dataFeature: W0733 W0733 detects that both sides of `||' operator are bitwise expression or arithmetic expression. Scenario: both sides of `||' operator are arithmetic expressions Given a target source named "fixture.c" with: """ static void func(int a, int b, int c, int d) { int r; r = (a + b) || (c + d); /* W0733 */ r = (a - b) || (c - d); /* W0733 */ r = (a * b) || (c * d); /* W0733 */ r = (a / b) || (c / d); /* W0733 */ r = (a % b) || (c % d); /* W0733 */ r = (a += b) || (c -= d); /* W0733 */ r = (a *= b) || (c /= d); /* W0733 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 5 | 12 | | W0723 | 5 | 23 | | W0723 | 6 | 12 | | W0723 | 6 | 23 | | W0723 | 7 | 12 | | W0723 | 7 | 23 | | W0093 | 8 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0093 | 8 | 23 | | C1000 | | | | C1006 | 1 | 43 | | W0093 | 9 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0093 | 9 | 23 | | C1000 | | | | C1006 | 1 | 43 | | W0093 | 12 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0093 | 12 | 24 | | C1000 | | | | C1006 | 1 | 43 | | W0104 | 1 | 29 | | W0104 | 1 | 43 | | W0629 | 1 | 13 | | W0733 | 5 | 17 | | W0733 | 6 | 17 | | W0733 | 7 | 17 | | W0733 | 8 | 17 | | W0733 | 9 | 17 | | W0508 | 11 | 18 | | W0733 | 11 | 18 | | W0508 | 12 | 18 | | W0733 | 12 | 18 | | W0108 | 11 | 12 | | W0108 | 11 | 24 | | W0108 | 12 | 12 | | W0108 | 12 | 24 | | W0628 | 1 | 13 | Scenario: both sides of `&&' operator are bitwise expressions Given a target source named "fixture.c" with: """ static void func(int a, int b, int c, int d) { int r; r = (a << b) || (c << d); /* W0733 */ r = (a >> b) || (c >> d); /* W0733 */ r = (a & b) || (c & d); /* W0733 */ r = (a ^ b) || (c ^ d); /* W0733 */ r = (a | b) || (c | d); /* W0733 */ r = (a &= b) || (c ^= d); /* W0733 */ r = (a <<= b) || (c >>= d); /* W0733 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0570 | 5 | 12 | | C1000 | | | | C1006 | 1 | 22 | | W0572 | 5 | 12 | | W0794 | 5 | 12 | | W0570 | 5 | 24 | | C1000 | | | | C1006 | 1 | 36 | | W0572 | 5 | 24 | | W0794 | 5 | 24 | | W0571 | 6 | 12 | | W0572 | 6 | 12 | | W0571 | 6 | 24 | | W0572 | 6 | 24 | | W0572 | 7 | 12 | | W0572 | 7 | 23 | | W0572 | 8 | 12 | | W0572 | 8 | 23 | | W0572 | 9 | 12 | | W0572 | 9 | 23 | | W0572 | 11 | 12 | | W0572 | 11 | 24 | | W0570 | 12 | 12 | | C1000 | | | | C1006 | 11 | 12 | | W0572 | 12 | 12 | | W0794 | 12 | 12 | | W0571 | 12 | 25 | | W0572 | 12 | 25 | | W0104 | 1 | 29 | | W0104 | 1 | 43 | | W0629 | 1 | 13 | | W0733 | 5 | 18 | | W0733 | 6 | 18 | | W0733 | 7 | 17 | | W0733 | 8 | 17 | | W0733 | 9 | 17 | | W0508 | 11 | 18 | | W0733 | 11 | 18 | | W0508 | 12 | 19 | | W0733 | 12 | 19 | | W0108 | 11 | 12 | | W0108 | 11 | 24 | | W0108 | 12 | 12 | | W0108 | 12 | 25 | | W0628 | 1 | 13 | Scenario: both sides of `||' operator are neither arithmetic nor bitwise Given a target source named "fixture.c" with: """ static void func(int a, int b, int c, int d) { int r; /* equality expression */ r = (a == b) || (c != d); /* OK */ /* relational expression */ r = (a < b) || (c > d); /* OK */ r = (a <= b) || (c >= d); /* OK */ /* logical expression */ r = (a && b) || (c && d); /* OK */ r = (a || b) || (c || d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0104 | 1 | 22 | | W0104 | 1 | 29 | | W0104 | 1 | 36 | | W0104 | 1 | 43 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0613.feature0000644000004100000410000000153712340630463021075 0ustar www-datawww-dataFeature: W0613 W0613 detects that a controlling expression of the iteration-statement always be false. Scenario: array-subscript-expression refers to global constant table Given a target source named "fixture.c" with: """ static const int a[256] = { 0, 1, 0, 0, 1 }; extern unsigned char foo(int); int main(void) { int i, j = 0; for (i = 0; a[foo(i)]; i++) { /* OK */ j++; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 3 | 22 | | W0246 | 9 | 22 | | W0736 | 1 | 18 | | W0043 | 1 | 27 | | W0950 | 1 | 20 | | W0114 | 9 | 5 | | W0425 | 7 | 12 | adlint-3.2.14/features/code_check/W0830.feature0000644000004100000410000000573212340630463021077 0ustar www-datawww-dataFeature: W0830 W0830 detects that an extra comma appears after enumerator-list. Scenario: an extra comma after enumerator-list in the named enum-specifier Given a target source named "fixture.c" with: """ enum Color { Red, Green, Blue, }; /* W0830 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0830 | 1 | 30 | Scenario: an extra comma after enumerator-list in the unnamed enum-specifier Given a target source named "fixture.c" with: """ enum { Red, Green, Blue, }; /* W0830 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0830 | 1 | 24 | Scenario: no extra comma after enumerator-list in the named enum-specifier Given a target source named "fixture.c" with: """ enum Color { Red, Green, Blue }; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | Scenario: no extra comma after enumerator-list in the unnamed enum-specifier Given a target source named "fixture.c" with: """ enum { Red, Green, Blue }; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | Scenario: an extra comma after initialized enumerator-list in the named enum-specifier Given a target source named "fixture.c" with: """ enum Color { Red = 1, Green = 2, Blue = 3, }; /* W0830 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0830 | 1 | 42 | Scenario: an extra comma after initialized enumerator-list in the unnamed enum-specifier Given a target source named "fixture.c" with: """ enum { Red = 1, Green = 2, Blue = 3, }; /* W0830 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0830 | 1 | 36 | Scenario: hard to preprocess Given a target source named "fixture.c" with: """ #include "config.h" """ And a target source named "config.h" with: """ typedef enum jid { #define DEFINE_JOB(id, func) JOBID_##id, #include "job_tbl.h" #undef DEFINE_JOB } jid_t; """ And a target source named "job_tbl.h" with: """ DEFINE_JOB(1id, func1) DEFINE_JOB(id2, func2) """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 2 | 1 | | W0073 | 1 | 1 | | W0073 | 1 | 1 | | W0830 | 2 | 1 | | W0071 | 3 | 1 | adlint-3.2.14/features/code_check/W0109.feature0000644000004100000410000000237112340630463021072 0ustar www-datawww-dataFeature: W0109 W0703 detects that a function-call is performed before declaring the target function. Scenario: calling function is not declared Given a target source named "fixture.c" with: """ int main(void) { return foo(); /* W0109 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0109 | 3 | 12 | Scenario: calling function is forward declared Given a target source named "fixture.c" with: """ extern int foo(void); int main(void) { return foo(); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | Scenario: calling function is backward declared Given a target source named "fixture.c" with: """ int main(void) { return foo(); /* W0109 */ } extern int foo(void); """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0109 | 3 | 12 | | W0118 | 6 | 12 | adlint-3.2.14/features/code_check/W0766.feature0000644000004100000410000001051112340630463021076 0ustar www-datawww-dataFeature: W0766 W0766 detects that `unsigned long long' value is converted into `unsigned long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned long b = a; /* W0766 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0766 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned long b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned long b; b = a; /* W0766 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0766 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned long b; b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(unsigned long long a) { bar(a); /* W0766 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0766 | 5 | 9 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(unsigned long long a) { bar((unsigned long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(unsigned long long a) { return a; /* W0766 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0766 | 3 | 12 | | W0400 | 3 | 5 | | W0104 | 1 | 38 | | W0834 | 1 | 19 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(unsigned long long a) { return (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0104 | 1 | 38 | | W0834 | 1 | 19 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W1068.feature0000644000004100000410000000633612340630463021104 0ustar www-datawww-dataFeature: W1068 W1068 detects that a value of the `double' typed compound expression is explicitly converted into a `long double' value. Scenario: explicit conversion from `double' to `long double' when the source value is derived from `+', `-', `*' or `/' expressions Given a target source named "fixture.c" with: """ static void func(double a, double b) { long double c; c = (long double) (a + b); /* W1068 */ c = (long double) (a - b); /* W1068 */ c = (long double) (a * b); /* W1068 */ c = (long double) (a / b); /* W1068 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 4 | 26 | | W1068 | 4 | 26 | | W0723 | 5 | 26 | | W1068 | 5 | 26 | | W0723 | 6 | 26 | | W1068 | 6 | 26 | | W0093 | 7 | 26 | | C1000 | | | | C1006 | 1 | 35 | | W1068 | 7 | 26 | | W0104 | 1 | 25 | | W0104 | 1 | 35 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: explicit conversion from `double' to `long double' when the source value is not derived from `+', `-', `*' or `/' expressions Given a target source named "fixture.c" with: """ static void func(double a, double b) { long double c; c = (long double) (a % b); /* OK */ c = (long double) (a < b); /* OK */ c = (long double) (a << b); /* OK */ c = (long double) (a ^ b); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0093 | 4 | 26 | | C1000 | | | | C1006 | 1 | 35 | | W0570 | 6 | 26 | | C1000 | | | | C1006 | 1 | 25 | | W0572 | 6 | 26 | | W0794 | 6 | 26 | | W0572 | 7 | 26 | | W0104 | 1 | 25 | | W0104 | 1 | 35 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: implicit conversion from `double' to `long double' Given a target source named "fixture.c" with: """ static void func(double a, double b) { long double c; c = a + b; /* W0779 */ c = a - b; /* W0779 */ c = a * b; /* W0779 */ c = a / b; /* W0779 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 4 | 11 | | W0779 | 4 | 11 | | W0723 | 5 | 11 | | W0779 | 5 | 11 | | W0723 | 6 | 11 | | W0779 | 6 | 11 | | W0093 | 7 | 11 | | C1000 | | | | C1006 | 1 | 35 | | W0779 | 7 | 11 | | W0104 | 1 | 25 | | W0104 | 1 | 35 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W1031.feature0000644000004100000410000002277112340630463021073 0ustar www-datawww-dataFeature: W1031 W1031 detects that two or more object declarations have inconsistent storage-class-specifiers. Scenario: function declaration with `static' and function definition without storage-class-specifier Given a target source named "fixture.c" with: """ static int foo(long); int foo(long l) { /* OK */ return (int) l; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1075 | 3 | 5 | | W0104 | 3 | 14 | | W0629 | 3 | 5 | | W0628 | 3 | 5 | Scenario: function declaration with `extern' and function definition without storage-class-specifier Given a target source named "fixture.c" with: """ extern int foo(long); int foo(long l) { /* OK */ return (int) l; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0104 | 3 | 14 | | W0628 | 3 | 5 | Scenario: function declaration without storage-class-specifier and function definition without storage-class-specifier Given a target source named "fixture.c" with: """ int foo(long); int foo(long l) { /* OK */ return (int) l; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 5 | | W0104 | 3 | 14 | | W0628 | 3 | 5 | Scenario: function declaration without storage-class-specifier and function definition with `static' Given a target source named "fixture.c" with: """ int foo(long); static int foo(long l) { /* W1031 */ return (int) l; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 5 | | W1031 | 3 | 12 | | W0104 | 3 | 21 | | W0628 | 3 | 12 | Scenario: function declaration without storage-class-specifier and function definition with `extern' Given a target source named "fixture.c" with: """ int foo(long); extern int foo(long l) { /* OK */ return (int) l; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 5 | | W0104 | 3 | 21 | | W0628 | 3 | 12 | Scenario: function declaration with `static' and function definition with `extern' Given a target source named "fixture.c" with: """ static int foo(long); extern int foo(long l) { /* W1031 */ return (int) l; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1031 | 3 | 12 | | W1075 | 3 | 12 | | W0104 | 3 | 21 | | W0629 | 3 | 12 | | W0628 | 3 | 12 | Scenario: function declaration with `extern' and function definition with `static' Given a target source named "fixture.c" with: """ extern int foo(long); static int foo(long l) { /* W1031 */ return (int) l; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1031 | 3 | 12 | | W0104 | 3 | 21 | | W0628 | 3 | 12 | Scenario: variable declaration with `extern' and variable definition without storage-class-specifier Given a target source named "fixture.c" with: """ extern int i; int i = 0; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | Scenario: variable definition without storage-class-specifier and variable declaration with `extern' Given a target source named "fixture.c" with: """ int i; extern int i; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0118 | 2 | 12 | Scenario: function declaration with `static' and function definition with `extern' Given a target source named "fixture.c" with: """ static int i; extern int i = 0; /* W1031 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1031 | 2 | 12 | | W1075 | 2 | 12 | Scenario: variable declaration with `extern' and variable definition with `static' Given a target source named "fixture.c" with: """ extern int i; static int i = 0; /* W1031 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1031 | 2 | 12 | Scenario: function definition with `static' and function declaration without storage-class-specifier Given a target source named "fixture.c" with: """ static int foo(long l) { return (int) l; } int foo(long); /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 21 | | W1075 | 5 | 5 | | W0629 | 1 | 12 | | W0543 | 1 | 12 | | W0628 | 1 | 12 | Scenario: function definition with `extern' and function declaration without storage-class-specifier Given a target source named "fixture.c" with: """ extern int foo(long l) { return (int) l; } int foo(long); /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0104 | 1 | 21 | | W0118 | 5 | 5 | | W0543 | 1 | 12 | | W0628 | 1 | 12 | Scenario: function definition without storage-class-specifier and function declaration without storage-class-specifier Given a target source named "fixture.c" with: """ int foo(long l) { return (int) l; } int foo(long); /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 14 | | W0118 | 5 | 5 | | W0543 | 1 | 5 | | W0628 | 1 | 5 | Scenario: function definition without storage-class-specifier and function declaration with `static' Given a target source named "fixture.c" with: """ int foo(long l) { return (int) l; } static int foo(long); /* W1031 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 14 | | W0118 | 5 | 12 | | W1031 | 5 | 12 | | W0543 | 1 | 5 | | W0628 | 1 | 5 | Scenario: function definition without storage-class-specifier and function declaration with `extern' Given a target source named "fixture.c" with: """ int foo(long l) { return (int) l; } extern int foo(long); /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 14 | | W0118 | 5 | 12 | | W0543 | 1 | 5 | | W0628 | 1 | 5 | Scenario: function definition with `static' and function declaration with `extern' Given a target source named "fixture.c" with: """ static int foo(long l) { return (int) l; } extern int foo(long l); /* W1031 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 21 | | W1031 | 5 | 12 | | W1075 | 5 | 12 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: function definition with `extern' and function declaration with `static' Given a target source named "fixture.c" with: """ extern int foo(long l) { return (int) l; } static int foo(long); /* W1031 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 12 | | W0104 | 1 | 21 | | W0118 | 5 | 12 | | W1031 | 5 | 12 | | W0543 | 1 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0017.feature0000644000004100000410000001620312340630463021067 0ustar www-datawww-dataFeature: W0017 W0017 detects that field-width of the conversion-specifier in `*scanf' function call is greater than 509. Scenario: field-width of `%d' conversion-specifier in `scanf' function call is greater than 509 Given a target source named "fixture.c" with: """ #include int foo(int *p) { if (p != NULL) { *p = 0; return scanf("%512d", p); /* W0017 */ } else { return -1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0017 | 7 | 22 | | W0104 | 3 | 14 | | W1071 | 3 | 5 | | W0947 | 7 | 22 | | W0628 | 3 | 5 | Scenario: field-width of `%d' conversion-specifier in `scanf' function call is equal to 510 Given a target source named "fixture.c" with: """ #include int foo(int *p) { if (p != NULL) { *p = 0; return scanf("%510d", p); /* W0017 */ } else { return -1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0017 | 7 | 22 | | W0104 | 3 | 14 | | W1071 | 3 | 5 | | W0947 | 7 | 22 | | W0628 | 3 | 5 | Scenario: field-width of `%d' conversion-specifier in `scanf' function call is equal to 509 Given a target source named "fixture.c" with: """ #include int foo(int *p) { if (p != NULL) { *p = 0; return scanf("%509d", p); /* OK */ } else { return -1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 14 | | W1071 | 3 | 5 | | W0947 | 7 | 22 | | W0628 | 3 | 5 | Scenario: field-width of `%d' conversion-specifier in `scanf' function call is less than 509 Given a target source named "fixture.c" with: """ #include int foo(int *p) { if (p != NULL) { *p = 0; return scanf("%500d", p); /* OK */ } else { return -1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 14 | | W1071 | 3 | 5 | | W0947 | 7 | 22 | | W0628 | 3 | 5 | Scenario: no field-width of `%d' conversion-specifier in `scanf' function call Given a target source named "fixture.c" with: """ #include int foo(int *p) { if (p != NULL) { *p = 0; return scanf("%d", p); /* OK */ } else { return -1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 14 | | W1071 | 3 | 5 | | W0947 | 7 | 22 | | W0628 | 3 | 5 | Scenario: field-width of `%d' conversion-specifier in `fscanf' function call is greater than 509 Given a target source named "fixture.c" with: """ #include int foo(int *p) { if (p != NULL) { *p = 0; return fscanf(stdin, "%512d", p); /* W0017 */ } else { return -1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0017 | 7 | 30 | | W0104 | 3 | 14 | | W1071 | 3 | 5 | | W0947 | 7 | 30 | | W0628 | 3 | 5 | Scenario: field-width of `%d' conversion-specifier in `fscanf' function call is equal to 510 Given a target source named "fixture.c" with: """ #include int foo(int *p) { if (p != NULL) { *p = 0; return fscanf(stdin, "%510d", p); /* W0017 */ } else { return -1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0017 | 7 | 30 | | W0104 | 3 | 14 | | W1071 | 3 | 5 | | W0947 | 7 | 30 | | W0628 | 3 | 5 | Scenario: field-width of `%d' conversion-specifier in `fscanf' function call is equal to 509 Given a target source named "fixture.c" with: """ #include int foo(int *p) { if (p != NULL) { *p = 0; return fscanf(stdin, "%509d", p); /* OK */ } else { return -1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 14 | | W1071 | 3 | 5 | | W0947 | 7 | 30 | | W0628 | 3 | 5 | Scenario: field-width of `%d' conversion-specifier in `fscanf' function call is less than 509 Given a target source named "fixture.c" with: """ #include int foo(int *p) { if (p != NULL) { *p = 0; return fscanf(stdin, "%500d", p); /* OK */ } else { return -1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 14 | | W1071 | 3 | 5 | | W0947 | 7 | 30 | | W0628 | 3 | 5 | Scenario: no field-width of `%d' conversion-specifier in `fscanf' function call Given a target source named "fixture.c" with: """ #include int foo(int *p) { if (p != NULL) { *p = 0; return fscanf(stdin, "%d", p); /* OK */ } else { return -1; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0104 | 3 | 14 | | W1071 | 3 | 5 | | W0947 | 7 | 30 | | W0628 | 3 | 5 | adlint-3.2.14/features/code_check/W0498.feature0000644000004100000410000000724512340630463021112 0ustar www-datawww-dataFeature: W0498 W0498 detects that different operators of the same priority appear in an expression without appropriate grouping. Scenario: multiple additive-expressions in an expression Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return a + b - 5; /* W0498 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 14 | | W0723 | 3 | 18 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0629 | 1 | 12 | | W0498 | 3 | 12 | | W0628 | 1 | 12 | Scenario: multiple additive-expressions in an expression with grouping Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return a + (b - 5); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 19 | | W0723 | 3 | 14 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: multiple additive-expressions in an expression with large grouping Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return (a + b - 5); /* W0498 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 15 | | W0723 | 3 | 19 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0629 | 1 | 12 | | W0498 | 3 | 12 | | W0628 | 1 | 12 | Scenario: multiple multiplicative-expressions in an expression Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return a * b / 5; /* W0498 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 14 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0629 | 1 | 12 | | W0498 | 3 | 12 | | W0628 | 1 | 12 | Scenario: multiple multiplicative-expressions in an expression with grouping Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return a * (b / 5); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 14 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: multiple multiplicative-expressions in an expression grouped entirely Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return (a * b / 5); /* W0498 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 15 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0629 | 1 | 12 | | W0498 | 3 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0237.feature0000644000004100000410000000762312340630463021101 0ustar www-datawww-dataFeature: W0237 W0237 detects that `long double' value is converted into `long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { long b = a; /* W0237 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0237 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { long b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { long b; b = a; /* W0237 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0237 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { long b; b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(long double a) { bar(a); /* W0237 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0237 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(long double a) { bar((long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long foo(long double a) { return a; /* W0237 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0237 | 3 | 12 | | W0373 | 3 | 5 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long foo(long double a) { return (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0501.feature0000644000004100000410000000423512340630463021067 0ustar www-datawww-dataFeature: W0501 W0501 detects that a binary-expression appars in a conditional-expression without appropriate grouping. Scenario: binary-expressions in a conditional-expression Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c) { return a + b ? a + b : c; /* W0501 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 14 | | W0723 | 3 | 22 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0629 | 1 | 12 | | W0501 | 3 | 18 | | W0114 | 3 | 14 | | W0628 | 1 | 12 | Scenario: binary-expressions in a conditional-expression with grouping Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c) { return (a + b) ? (a + b) : c; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 15 | | W0723 | 3 | 25 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0629 | 1 | 12 | | W0114 | 3 | 12 | | W0628 | 1 | 12 | Scenario: binary-expressions in a conditional-expression with large grouping Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c) { return (a + b ? a + b : c); /* W0501 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 15 | | W0723 | 3 | 23 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0629 | 1 | 12 | | W0501 | 3 | 19 | | W0114 | 3 | 15 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0734.feature0000644000004100000410000002371712340630463021105 0ustar www-datawww-dataFeature: W0734 W0734 detects that left side of logical expression is bitwise expression or arithmetic expression. Scenario: left side of `&&' operator is an arithmetic expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c) { int r; r = (a + b) && c; /* W0734 */ r = (a - b) && c; /* W0734 */ r = (a * b) && c; /* W0734 */ r = (a / b) && c; /* W0734 */ r = (a % b) && c; /* W0734 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 5 | 12 | | W0723 | 6 | 12 | | W0723 | 7 | 12 | | W0093 | 8 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0093 | 9 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0104 | 1 | 22 | | W0104 | 1 | 29 | | W0104 | 1 | 36 | | W0629 | 1 | 13 | | W0734 | 5 | 9 | | W0734 | 6 | 9 | | W0734 | 7 | 9 | | W0734 | 8 | 9 | | W0734 | 9 | 9 | | W0628 | 1 | 13 | Scenario: left side of `&&' operator is an arithmetic expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c, int d) { int r; r = (a + b) && (c == d); /* W0734 */ r = (a - b) && (c = d); /* W0734 */ r = (a * b) && (c && d); /* W0734 */ r = (a / b) && (c < d); /* W0734 */ r = (a / b) && (c != d); /* W0734 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 5 | 12 | | W0723 | 6 | 12 | | W0723 | 7 | 12 | | W0093 | 8 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0093 | 9 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0104 | 1 | 22 | | W0104 | 1 | 29 | | W0104 | 1 | 43 | | W0629 | 1 | 13 | | W0734 | 5 | 9 | | W0508 | 6 | 17 | | W0734 | 6 | 9 | | W0734 | 7 | 9 | | W0734 | 8 | 9 | | W0734 | 9 | 9 | | W0108 | 6 | 23 | | W0628 | 1 | 13 | Scenario: left side of `||' operator is an arithmetic expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c) { int r; r = (a + b) || c; /* W0734 */ r = (a - b) || c; /* W0734 */ r = (a * b) || c; /* W0734 */ r = (a / b) || c; /* W0734 */ r = (a % b) || c; /* W0734 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 5 | 12 | | W0723 | 6 | 12 | | W0723 | 7 | 12 | | W0093 | 8 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0093 | 9 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0104 | 1 | 22 | | W0104 | 1 | 29 | | W0104 | 1 | 36 | | W0629 | 1 | 13 | | W0734 | 5 | 9 | | W0734 | 6 | 9 | | W0734 | 7 | 9 | | W0734 | 8 | 9 | | W0734 | 9 | 9 | | W0628 | 1 | 13 | Scenario: left side of `||' operator is an arithmetic expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c, int d) { int r; r = (a + b) || (c == d); /* W0734 */ r = (a - b) || (c = d); /* W0734 */ r = (a * b) || (c || d); /* W0734 */ r = (a / b) || (c < d); /* W0734 */ r = (a / b) || (c != d); /* W0734 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 5 | 12 | | W0723 | 6 | 12 | | W0723 | 7 | 12 | | W0093 | 8 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0093 | 9 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0104 | 1 | 22 | | W0104 | 1 | 29 | | W0104 | 1 | 43 | | W0629 | 1 | 13 | | W0734 | 5 | 9 | | W0508 | 6 | 17 | | W0734 | 6 | 9 | | W0734 | 7 | 9 | | W0734 | 8 | 9 | | W0734 | 9 | 9 | | W0108 | 6 | 23 | | W0628 | 1 | 13 | Scenario: left side of `&&' operator is a bitwise expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c) { int r; r = (a << b) && c; /* W0734 */ r = (a >> b) && c; /* W0734 */ r = (a & b) && c; /* W0734 */ r = (a ^ b) && c; /* W0734 */ r = (a | b) && c; /* W0734 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0570 | 5 | 12 | | C1000 | | | | C1006 | 1 | 22 | | W0572 | 5 | 12 | | W0794 | 5 | 12 | | W0571 | 6 | 12 | | W0572 | 6 | 12 | | W0572 | 7 | 12 | | W0572 | 8 | 12 | | W0572 | 9 | 12 | | W0104 | 1 | 22 | | W0104 | 1 | 29 | | W0104 | 1 | 36 | | W0629 | 1 | 13 | | W0734 | 5 | 9 | | W0734 | 6 | 9 | | W0734 | 7 | 9 | | W0734 | 8 | 9 | | W0734 | 9 | 9 | | W0628 | 1 | 13 | Scenario: left side of `||' operator is a bitwise expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c) { int r; r = (a << b) || c; /* W0734 */ r = (a >> b) || c; /* W0734 */ r = (a & b) || c; /* W0734 */ r = (a ^ b) || c; /* W0734 */ r = (a | b) || c; /* W0734 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0570 | 5 | 12 | | C1000 | | | | C1006 | 1 | 22 | | W0572 | 5 | 12 | | W0794 | 5 | 12 | | W0571 | 6 | 12 | | W0572 | 6 | 12 | | W0572 | 7 | 12 | | W0572 | 8 | 12 | | W0572 | 9 | 12 | | W0104 | 1 | 22 | | W0104 | 1 | 29 | | W0104 | 1 | 36 | | W0629 | 1 | 13 | | W0734 | 5 | 9 | | W0734 | 6 | 9 | | W0734 | 7 | 9 | | W0734 | 8 | 9 | | W0734 | 9 | 9 | | W0628 | 1 | 13 | Scenario: left side of `&&' operator is a bitwise expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c, int d) { int r; r = (a << b) && (c == d); /* W0734 */ r = (a >> b) && (c = d); /* W0734 */ r = (a & b) && (c && d); /* W0734 */ r = (a ^ b) && (c < d); /* W0734 */ r = (a | b) && (c != d); /* W0734 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0570 | 5 | 12 | | C1000 | | | | C1006 | 1 | 22 | | W0572 | 5 | 12 | | W0794 | 5 | 12 | | W0571 | 6 | 12 | | W0572 | 6 | 12 | | W0572 | 7 | 12 | | W0572 | 8 | 12 | | W0572 | 9 | 12 | | W0104 | 1 | 22 | | W0104 | 1 | 29 | | W0104 | 1 | 43 | | W0629 | 1 | 13 | | W0734 | 5 | 9 | | W0508 | 6 | 18 | | W0734 | 6 | 9 | | W0734 | 7 | 9 | | W0734 | 8 | 9 | | W0734 | 9 | 9 | | W0108 | 6 | 24 | | W0628 | 1 | 13 | Scenario: left side of `||' operator is a bitwise expression Given a target source named "fixture.c" with: """ static void func(int a, int b, int c, int d) { int r; r = (a << b) || (c == d); /* W0734 */ r = (a >> b) || (c = d); /* W0734 */ r = (a & b) || (c && d); /* W0734 */ r = (a ^ b) || (c < d); /* W0734 */ r = (a | b) || (c != d); /* W0734 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0570 | 5 | 12 | | C1000 | | | | C1006 | 1 | 22 | | W0572 | 5 | 12 | | W0794 | 5 | 12 | | W0571 | 6 | 12 | | W0572 | 6 | 12 | | W0572 | 7 | 12 | | W0572 | 8 | 12 | | W0572 | 9 | 12 | | W0104 | 1 | 22 | | W0104 | 1 | 29 | | W0104 | 1 | 43 | | W0629 | 1 | 13 | | W0734 | 5 | 9 | | W0508 | 6 | 18 | | W0734 | 6 | 9 | | W0734 | 7 | 9 | | W0734 | 8 | 9 | | W0734 | 9 | 9 | | W0108 | 6 | 24 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0132.feature0000644000004100000410000000763512340630463021076 0ustar www-datawww-dataFeature: W0132 W0132 detects that `unsigned char' value is converted into `char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { char b = a; /* OK when char_as_unsigned_char: true */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { char b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { char b; b = a; /* OK when char_as_unsigned_char: true */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { char b; b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(unsigned char a) { bar(a); /* OK when char_as_unsigned_char: true */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(unsigned char a) { bar((char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ char foo(unsigned char a) { return a; /* OK when char_as_unsigned_char: true */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0268 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ char foo(unsigned char a) { return (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0233.feature0000644000004100000410000000764012340630463021074 0ustar www-datawww-dataFeature: W0233 W0233 detects that `long double' value is converted into `short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { short b = a; /* W0233 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0233 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { short b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { short b; b = a; /* W0233 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0233 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { short b; b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 22 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(long double a) { bar(a); /* W0233 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0233 | 5 | 9 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(long double a) { bar((short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ short foo(long double a) { return a; /* W0233 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0233 | 3 | 12 | | W0369 | 3 | 5 | | W0104 | 1 | 23 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ short foo(long double a) { return (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 23 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0221.feature0000644000004100000410000000754612340630463021076 0ustar www-datawww-dataFeature: W0221 W0221 detects that `double' value is converted into `char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { char b = a; /* W0221 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0221 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { char b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { char b; b = a; /* W0221 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0221 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { char b; b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(double a) { bar(a); /* W0221 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0221 | 5 | 9 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(double a) { bar((char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ char foo(double a) { return a; /* W0221 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0221 | 3 | 12 | | W0357 | 3 | 5 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ char foo(double a) { return (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0193.feature0000644000004100000410000001001312340630463021065 0ustar www-datawww-dataFeature: W0193 W0193 detects that `unsigned short' value is converted into `long double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { long double b = a; /* W0193 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0193 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { long double b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { long double b; b = a; /* W0193 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0193 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { long double b; b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(unsigned short a) { bar(a); /* W0193 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0193 | 5 | 9 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(unsigned short a) { bar((long double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(unsigned short a) { return a; /* W0193 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0193 | 3 | 12 | | W0329 | 3 | 5 | | W0104 | 1 | 32 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(unsigned short a) { return (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0104 | 1 | 32 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0585.feature0000644000004100000410000000740712340630463021107 0ustar www-datawww-dataFeature: W0585 W0585 detects that a controlling variable of for-statement is not updated in the 3rd part of for-statement. Scenario: the 3rd part of for-statement does not increment the controlling variable Given a target source named "fixture.c" with: """ static int bar(int *); static int foo(const int num) { int i, j = 0; for (i = 0; (bar(&i)) && (i < num); j++) { /* W0585 */ } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W0585 | 6 | 42 | | W0629 | 3 | 12 | | W0425 | 5 | 12 | | W0628 | 3 | 12 | Scenario: the 3rd part of for-statement is empty Given a target source named "fixture.c" with: """ static int bar(int *); static int foo(const int num) { int i, j = 0; for (i = 0; (bar(&i)) && (i < num); ) { /* OK */ j++; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W0629 | 3 | 12 | | W0425 | 5 | 12 | | W0628 | 3 | 12 | Scenario: the 3rd part of for-statement increments the controlling variable Given a target source named "fixture.c" with: """ static int bar(int *); static int foo(const int num) { int i, j = 0; for (i = 0; (bar(&i)) && (i < num); i++) { /* OK */ j++; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W0629 | 3 | 12 | | W0425 | 5 | 12 | | W0628 | 3 | 12 | Scenario: the 3rd part of c99-for-statement does not increment the controlling variable Given a target source named "fixture.c" with: """ static int bar(int *); static int foo(const int num) { int j = 0; for (int i = 0; (bar(&i)) && (i < num); j++) { /* W0585 */ } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W0585 | 6 | 46 | | W0629 | 3 | 12 | | W0628 | 3 | 12 | Scenario: the 3rd part of c99-for-statement is empty Given a target source named "fixture.c" with: """ static int bar(int *); static int foo(const int num) { int j = 0; for (int i = 0; (bar(&i)) && (i < num); ) { /* OK */ j++; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W0629 | 3 | 12 | | W0628 | 3 | 12 | Scenario: the 3rd part of for-statement increments the controlling variable Given a target source named "fixture.c" with: """ static int bar(int *); static int foo(const int num) { int j = 0; for (int i = 0; (bar(&i)) && (i < num); i++) { /* OK */ j++; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W0629 | 3 | 12 | | W0628 | 3 | 12 | adlint-3.2.14/features/code_check/W0732.feature0000644000004100000410000001222412340630463021072 0ustar www-datawww-dataFeature: W0732 W0732 detects that both sides of `&&' operator are bitwise expression or arithmetic expression. Scenario: both sides of `&&' operator are arithmetic expressions Given a target source named "fixture.c" with: """ static void func(int a, int b, int c, int d) { int r; r = (a + b) && (c + d); /* W0732 */ r = (a - b) && (c - d); /* W0732 */ r = (a * b) && (c * d); /* W0732 */ r = (a / b) && (c / d); /* W0732 */ r = (a % b) && (c % d); /* W0732 */ r = (a += b) && (c -= d); /* W0732 */ r = (a *= b) && (c /= d); /* W0732 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 5 | 12 | | W0723 | 5 | 23 | | W0723 | 6 | 12 | | W0723 | 6 | 23 | | W0723 | 7 | 12 | | W0723 | 7 | 23 | | W0093 | 8 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0093 | 8 | 23 | | C1000 | | | | C1006 | 1 | 43 | | W0093 | 9 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0093 | 9 | 23 | | C1000 | | | | C1006 | 1 | 43 | | W0093 | 12 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0093 | 12 | 24 | | C1000 | | | | C1006 | 1 | 43 | | W0104 | 1 | 29 | | W0104 | 1 | 43 | | W0629 | 1 | 13 | | W0732 | 5 | 17 | | W0732 | 6 | 17 | | W0732 | 7 | 17 | | W0732 | 8 | 17 | | W0732 | 9 | 17 | | W0508 | 11 | 18 | | W0732 | 11 | 18 | | W0508 | 12 | 18 | | W0732 | 12 | 18 | | W0108 | 11 | 12 | | W0108 | 11 | 24 | | W0108 | 12 | 12 | | W0108 | 12 | 24 | | W0628 | 1 | 13 | Scenario: both sides of `&&' operator are bitwise expressions Given a target source named "fixture.c" with: """ static void func(int a, int b, int c, int d) { int r; r = (a << b) && (c << d); /* W0732 */ r = (a >> b) && (c >> d); /* W0732 */ r = (a & b) && (c & d); /* W0732 */ r = (a ^ b) && (c ^ d); /* W0732 */ r = (a | b) && (c | d); /* W0732 */ r = (a &= b) && (c ^= d); /* W0732 */ r = (a <<= b) && (c >>= d); /* W0732 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0570 | 5 | 12 | | C1000 | | | | C1006 | 1 | 22 | | W0572 | 5 | 12 | | W0794 | 5 | 12 | | W0570 | 5 | 24 | | C1000 | | | | C1006 | 1 | 36 | | W0572 | 5 | 24 | | W0794 | 5 | 24 | | W0571 | 6 | 12 | | W0572 | 6 | 12 | | W0571 | 6 | 24 | | W0572 | 6 | 24 | | W0572 | 7 | 12 | | W0572 | 7 | 23 | | W0572 | 8 | 12 | | W0572 | 8 | 23 | | W0572 | 9 | 12 | | W0572 | 9 | 23 | | W0572 | 11 | 12 | | W0572 | 11 | 24 | | W0570 | 12 | 12 | | C1000 | | | | C1006 | 11 | 12 | | W0572 | 12 | 12 | | W0794 | 12 | 12 | | W0571 | 12 | 25 | | W0572 | 12 | 25 | | W0104 | 1 | 29 | | W0104 | 1 | 43 | | W0629 | 1 | 13 | | W0732 | 5 | 18 | | W0732 | 6 | 18 | | W0732 | 7 | 17 | | W0732 | 8 | 17 | | W0732 | 9 | 17 | | W0508 | 11 | 18 | | W0732 | 11 | 18 | | W0508 | 12 | 19 | | W0732 | 12 | 19 | | W0108 | 11 | 12 | | W0108 | 11 | 24 | | W0108 | 12 | 12 | | W0108 | 12 | 25 | | W0628 | 1 | 13 | Scenario: both sides of `&&' operator are neither arithmetic nor bitwise Given a target source named "fixture.c" with: """ static void func(int a, int b, int c, int d) { int r; /* equality expression */ r = (a == b) && (c != d); /* OK */ /* relational expression */ r = (a < b) && (c > d); /* OK */ r = (a <= b) && (c >= d); /* OK */ /* logical expression */ r = (a && b) && (c && d); /* OK */ r = (a || b) && (c || d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0104 | 1 | 22 | | W0104 | 1 | 29 | | W0104 | 1 | 36 | | W0104 | 1 | 43 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0140.feature0000644000004100000410000001100112340630463021053 0ustar www-datawww-dataFeature: W0140 W0140 detects that `long long' value is converted into `char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { char b = a; /* W0140 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0140 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { char b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 14 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 10 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { char b; b = a; /* W0140 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0140 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { char b; b = (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 10 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(long long a) { bar(a); /* W0140 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0140 | 5 | 9 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(char); void foo(long long a) { bar((char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 20 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ char foo(long long a) { return a; /* W0140 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0140 | 3 | 12 | | W0276 | 3 | 5 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ char foo(long long a) { return (char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 20 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W1058.feature0000644000004100000410000000552512340630463021102 0ustar www-datawww-dataFeature: W1058 W1058 detects that a function of enum return type is returning a value of inconsistently enum typed non-constant expression. Scenario: returning a value of the consistently enum typed constant expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; static enum Color foo(void) { return RED + 1; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 4 | 19 | | W9003 | 6 | 18 | | W0629 | 4 | 19 | | W0628 | 4 | 19 | Scenario: returning a value of the consistently enum typed non-constant expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; static enum Color foo(const enum Color c) { return c + 1; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 4 | 19 | | W9003 | 6 | 16 | | W0723 | 6 | 14 | | W0629 | 4 | 19 | | W0628 | 4 | 19 | Scenario: returning a value of the inconsistently enum typed constant expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; static enum Color foo(void) { return ORANGE + 1; /* OK but W0730 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 4 | 19 | | W9003 | 6 | 21 | | W0727 | 6 | 19 | | W9003 | 6 | 19 | | W0730 | 6 | 19 | | W0629 | 4 | 19 | | W0628 | 4 | 19 | Scenario: returning a value of the inconsistently enum typed non-constant expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; static enum Color foo(const enum Fruit f) { return f + 1; /* W1058 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 4 | 19 | | W9003 | 6 | 16 | | W0723 | 6 | 14 | | W0727 | 6 | 14 | | W9003 | 6 | 14 | | W1058 | 6 | 14 | | W1063 | 6 | 14 | | W0629 | 4 | 19 | | W0628 | 4 | 19 | adlint-3.2.14/features/code_check/W0694.feature0000644000004100000410000000735512340630463021112 0ustar www-datawww-dataFeature: W0694 W0694 detects that the function named `assert' is called because standard `assert' macro is undefined. Scenario: undefining `assert' macro and then declaring `assert' function Given a target source named "fixture.c" with: """ #undef assert extern void assert(int); void foo(void) { assert("should not be reached" == ""); /* W0694 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0695 | 1 | 8 | | W0118 | 2 | 13 | | W0117 | 4 | 6 | | W0027 | 6 | 36 | | W0610 | 6 | 36 | | W0694 | 6 | 11 | | W0947 | 6 | 12 | | W0947 | 6 | 39 | | W0628 | 4 | 6 | Scenario: declaring `assert' function and then undefining `assert' macro Given a target source named "fixture.c" with: """ extern void assert(int); #undef assert void foo(void) { assert("should not be reached" == ""); /* W0694 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0695 | 2 | 8 | | W0118 | 1 | 13 | | W0117 | 4 | 6 | | W0027 | 6 | 36 | | W0610 | 6 | 36 | | W0694 | 6 | 11 | | W0947 | 6 | 12 | | W0947 | 6 | 39 | | W0628 | 4 | 6 | Scenario: undefining `assert' macro in function and then declaring `assert' function Given a target source named "fixture.c" with: """ void foo(void) { #undef assert extern void assert(int); assert("should not be reached" == ""); /* W0694 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0695 | 3 | 8 | | W0117 | 1 | 6 | | W0118 | 4 | 17 | | W0622 | 4 | 17 | | W0027 | 5 | 36 | | W0610 | 5 | 36 | | W0694 | 5 | 11 | | W0624 | 3 | 1 | | W0947 | 5 | 12 | | W0947 | 5 | 39 | | W0628 | 1 | 6 | Scenario: declaring `assert' function and then undefining `assert' macro in function Given a target source named "fixture.c" with: """ extern void assert(int); void foo(void) { #undef assert assert("should not be reached" == ""); /* W0694 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0695 | 5 | 8 | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0027 | 6 | 36 | | W0610 | 6 | 36 | | W0694 | 6 | 11 | | W0624 | 5 | 1 | | W0947 | 6 | 12 | | W0947 | 6 | 39 | | W0628 | 3 | 6 | Scenario: `assert' function declared but calling `assert' macro Given a target source named "fixture.c" with: """ extern void assert(int); #define assert(expr) ((void *) 0) /* to simulate #include */ void foo(void) { assert("should not be reached" == ""); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 3 | 1 | | W0118 | 1 | 13 | | W0117 | 5 | 6 | | W0567 | 7 | 5 | | W0085 | 7 | 5 | | W0628 | 5 | 6 | adlint-3.2.14/features/code_check/W0154.feature0000644000004100000410000001110512340630463021065 0ustar www-datawww-dataFeature: W0154 W0154 detects that `unsigned long long' value is converted into `int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { int b = a; /* W0154 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0154 | 3 | 13 | | W0100 | 3 | 9 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { int b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 13 | | C1000 | | | | C1006 | 1 | 29 | | W0100 | 3 | 9 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { int b; b = a; /* W0154 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0154 | 4 | 9 | | W0100 | 3 | 9 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { int b; b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 29 | | W0100 | 3 | 9 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(unsigned long long a) { bar(a); /* W0154 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0154 | 5 | 9 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(unsigned long long a) { bar((int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 29 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ int foo(unsigned long long a) { return a; /* W0154 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0154 | 3 | 12 | | W0290 | 3 | 5 | | W0104 | 1 | 28 | | W0834 | 1 | 9 | | W0628 | 1 | 5 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ int foo(unsigned long long a) { return (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 28 | | W0104 | 1 | 28 | | W0834 | 1 | 9 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0143.feature0000644000004100000410000001061312340630463021066 0ustar www-datawww-dataFeature: W0143 W0143 detects that `unsigned short' value is converted into `signed char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { signed char b = a; /* W0143 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0143 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { signed char b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 21 | | C1000 | | | | C1006 | 1 | 25 | | W0100 | 3 | 17 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { signed char b; b = a; /* W0143 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0143 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { signed char b; b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 25 | | W0100 | 3 | 17 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(unsigned short a) { bar(a); /* W0143 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0143 | 5 | 9 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(unsigned short a) { bar((signed char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 25 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(unsigned short a) { return a; /* W0143 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0143 | 3 | 12 | | W0279 | 3 | 5 | | W0104 | 1 | 32 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(unsigned short a) { return (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 32 | | W0104 | 1 | 32 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0480.feature0000644000004100000410000000733612340630463021102 0ustar www-datawww-dataFeature: W0480 W0480 detects that the macro defines operator, punctuation character or control statements. Scenario: defines the operator Given a target source named "fixture.c" with: """ #define OP_1 + /* W0480 */ #define OP_2 * /* W0480 */ #define OP_3 ~ /* W0480 */ #define OP_4 -- /* W0480 */ #define OP_5 / /* W0480 */ #define OP_6 << /* W0480 */ #define OP_7 && /* W0480 */ #define OP_8 /= /* W0480 */ #define OP_9 ^= /* W0480 */ #define OP_0 : /* W0480 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0480 | 1 | 1 | | W0480 | 2 | 1 | | W0480 | 3 | 1 | | W0480 | 4 | 1 | | W0480 | 5 | 1 | | W0480 | 6 | 1 | | W0480 | 7 | 1 | | W0480 | 8 | 1 | | W0480 | 9 | 1 | | W0480 | 10 | 1 | Scenario: defines a punctuation character Given a target source named "fixture.c" with: """ #define PC_1 [ /* W0480 */ #define PC_2 ( /* W0480 */ #define PC_3 { /* W0480 */ #define PC_4 * /* W0480 */ #define PC_5 , /* W0480 */ #define PC_6 : /* W0480 */ #define PC_7 = /* W0480 */ #define PC_8 ; /* W0480 */ #define PC_9 ... /* W0480 */ #define PC_0 # /* W0480 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0477 | 1 | 1 | | W0477 | 2 | 1 | | W0477 | 3 | 1 | | W0480 | 1 | 1 | | W0480 | 2 | 1 | | W0480 | 3 | 1 | | W0480 | 4 | 1 | | W0480 | 5 | 1 | | W0480 | 6 | 1 | | W0480 | 7 | 1 | | W0480 | 8 | 1 | | W0480 | 9 | 1 | | W0480 | 10 | 1 | Scenario: defines a control statement Given a target source named "fixture.c" with: """ #define CS_01 if /* W0480 */ #define CS_02 else /* W0480 */ #define CS_03 switch /* W0480 */ #define CS_04 case /* W0480 */ #define CS_05 default /* W0480 */ #define CS_06 break /* W0480 */ #define CS_07 continue /* W0480 */ #define CS_08 while /* W0480 */ #define CS_09 do /* W0480 */ #define CS_10 for /* W0480 */ #define CS_11 goto /* W0480 */ #define CS_12 return /* W0480 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0480 | 1 | 1 | | W0480 | 2 | 1 | | W0480 | 3 | 1 | | W0480 | 4 | 1 | | W0480 | 5 | 1 | | W0480 | 6 | 1 | | W0480 | 7 | 1 | | W0480 | 8 | 1 | | W0480 | 9 | 1 | | W0480 | 10 | 1 | | W0480 | 11 | 1 | | W0480 | 12 | 1 | Scenario: defines the pair of punctuation character Given a target source named "fixture.c" with: """ #define PC_1 [] /* OK */ #define PC_2 () /* OK */ #define PC_3 {} /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | Scenario: defines operator and control statements Given a target source named "fixture.c" with: """ #define IF(x) if((x)==0)return 1; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0478 | 1 | 1 | adlint-3.2.14/features/code_check/W0582.feature0000644000004100000410000000424612340630463021102 0ustar www-datawww-dataFeature: W0582 W0582 detects that number or types of arguments of a function call does not conform with a prototype declaration of the function appears after the function call. Scenario: call with matched arguments Given a target source named "fixture.c" with: """ static void foo(int *p) { bar(NULL, *p); /* OK */ } static void bar(int *, int); """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0422 | 3 | 15 | | C1000 | | | | C1005 | 1 | 22 | | W0109 | 3 | 5 | | W0104 | 1 | 22 | | W0105 | 1 | 22 | | W1073 | 3 | 8 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: call with unmatched arguments Given a target source named "fixture.c" with: """ static void foo(int *p) { bar(NULL, p); /* W0582 */ } static void bar(int *, int); """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0109 | 3 | 5 | | W0104 | 1 | 22 | | W0105 | 1 | 22 | | W1073 | 3 | 8 | | W0582 | 3 | 8 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: call with unmatched constant pointer Given a target source named "fixture.c" with: """ static void foo(int *p) { bar(3, *p); /* W0582 */ } static void bar(int *, int); """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0422 | 3 | 12 | | C1000 | | | | C1005 | 1 | 22 | | W0109 | 3 | 5 | | W0104 | 1 | 22 | | W0105 | 1 | 22 | | W1073 | 3 | 8 | | W0582 | 3 | 8 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0781.feature0000644000004100000410000001000312340630463021067 0ustar www-datawww-dataFeature: W0781 W0781 detects that there is only one execution path in the switch-statement. Scenario: `switch' statement which has only one execution path Given a target source named "fixture.c" with: """ static int func(const int i) { switch (i) { /* W0781 */ default: return 8; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0629 | 1 | 12 | | W0781 | 3 | 5 | | W0628 | 1 | 12 | Scenario: `switch' statement which has three execution paths, but the control never reaches to only one of that paths Given a target source named "fixture.c" with: """ static int func(const int i) { if (i > 5) { switch (i) { /* W0781 */ case 0: return 1; case 5: return 2; default: return 3; } } return 10; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W9001 | 5 | 9 | | W9001 | 6 | 13 | | W9001 | 7 | 9 | | W9001 | 8 | 13 | | W0781 | 4 | 9 | | W0628 | 1 | 12 | Scenario: `switch' statement which has only two execution paths and the control never reaches to one of that paths Given a target source named "fixture.c" with: """ static int func(const int i) { if (i > 5) { return 0; } switch (i) { /* OK */ case 0: return 4; default: switch (i) { /* W0781 */ case 10: return 5; default: return 6; } } return 1; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W9001 | 12 | 9 | | W9001 | 13 | 13 | | W0781 | 11 | 9 | | W1070 | 11 | 9 | | W1070 | 7 | 5 | | W9001 | 18 | 5 | | W0628 | 1 | 12 | Scenario: `switch' statement which has only two execution paths and the control never reaches to one of that paths Given a target source named "fixture.c" with: """ static int func(const int i) { if (i > 5) { switch (i) { /* OK */ case 5: return 2; default: return 3; } } return 10; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W9001 | 5 | 9 | | W9001 | 6 | 13 | | W0781 | 4 | 9 | | W1070 | 4 | 9 | | W0628 | 1 | 12 | Scenario: `switch' statement which has several execution paths Given a target source named "fixture.c" with: """ static int func(const int i) { switch (i) { /* OK */ case 5: return 2; case 6: return 3; default: return 0; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0431.feature0000644000004100000410000000250612340630463021070 0ustar www-datawww-dataFeature: W0431 W0431 detects that start of this line is more indented than previous lines of the same indentation level. Scenario: function-like macro replacement Given a target source named "fixture.c" with: """ extern int foo(int, int); #define bar(a, b) ((a) > 0) ? (a) : (b) #define baz(a, b) \ ((a) > 0) ? \ (a) : (b) void qux(void) { int i = 0; i = foo(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1, /* OK */ 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2); /* OK */ i = bar(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1, /* OK */ 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2); /* OK */ i = baz(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1, /* OK */ 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 3 | 1 | | W0442 | 4 | 1 | | W0118 | 1 | 12 | | W0117 | 8 | 6 | | W0609 | 14 | 9 | | W0609 | 16 | 9 | | W0443 | 3 | 1 | | W0443 | 4 | 1 | | W0628 | 8 | 6 | adlint-3.2.14/features/code_check/W0131.feature0000644000004100000410000001061212340630463021062 0ustar www-datawww-dataFeature: W0131 W0131 detects that `char' value is converted into `unsigned long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { unsigned long long b = a; /* W0131 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0131 | 3 | 28 | | W0100 | 3 | 24 | | W0104 | 1 | 15 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { unsigned long long b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 24 | | W0104 | 1 | 15 | | W0834 | 3 | 29 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { unsigned long long b; b = a; /* W0131 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0131 | 4 | 9 | | W0100 | 3 | 24 | | W0104 | 1 | 15 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { unsigned long long b; b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 24 | | W0104 | 1 | 15 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(char a) { bar(a); /* W0131 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0131 | 5 | 9 | | W0104 | 3 | 15 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(char a) { bar((unsigned long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(char a) { return a; /* W0131 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0131 | 3 | 12 | | W0267 | 3 | 5 | | W0104 | 1 | 29 | | W0834 | 1 | 1 | | W0628 | 1 | 20 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(char a) { return (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0104 | 1 | 29 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 20 | adlint-3.2.14/features/code_check/W1040.feature0000644000004100000410000000433012340630463021062 0ustar www-datawww-dataFeature: W1040 W1040 detects that extra tokens after the preprocessing directive. Scenario: extra tokens after #endif directive Given a target source named "fixture.c" with: """ #define TEST #ifdef TEST #if defined(CASE_1) int i = 1; #elif defined(CASE_2) int i = 2; #endif CASE /* W1040 */ #else int i = 0; #endif TEST /* W1040 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1040 | 8 | 8 | | W1040 | 11 | 8 | Scenario: extra tokens after #endif directive in an invisible branch Given a target source named "fixture.c" with: """ #ifdef TEST #if defined(CASE_1) int i = 1; #elif defined(CASE_2) int i = 2; #endif CASE /* OK */ #else int i = 0; #endif TEST /* W1040 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1040 | 9 | 8 | | W0117 | 8 | 5 | Scenario: extra tokens after #else directive Given a target source named "fixture.c" with: """ #define TEST #ifdef TEST #if defined(CASE_1) int i = 1; #elif defined(CASE_2) int i = 2; #else CASE_X /* W1040 */ int i = 9; #endif #else int i = 0; #endif TEST /* W1040 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1040 | 8 | 7 | | W1040 | 13 | 8 | | W0117 | 9 | 5 | Scenario: extra tokens after #else directive in an invisible branch Given a target source named "fixture.c" with: """ #ifdef TEST #if defined(CASE_1) int i = 1; #elif defined(CASE_2) int i = 2; #else CASE_X /* OK */ int i = 9; #endif #else int i = 0; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 10 | 5 | adlint-3.2.14/features/code_check/W0754.feature0000644000004100000410000001034112340630463021074 0ustar www-datawww-dataFeature: W0754 W0754 detects that `long' value is converted into `short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { short b = a; /* W0754 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0754 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { short b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 15 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { short b; b = a; /* W0754 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0754 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { short b; b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(long a) { bar(a); /* W0754 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0754 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(long a) { bar((short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 15 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ short foo(long a) { return a; /* W0754 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0754 | 3 | 12 | | W0388 | 3 | 5 | | W0104 | 1 | 16 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ short foo(long a) { return (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 16 | | W0104 | 1 | 16 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0130.feature0000644000004100000410000001042512340630463021063 0ustar www-datawww-dataFeature: W0130 W0130 detects that `char' value is converted into `long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { long long b = a; /* W0130 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0130 | 3 | 19 | | W0100 | 3 | 15 | | W0104 | 1 | 15 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { long long b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 15 | | W0834 | 3 | 20 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { long long b; b = a; /* W0130 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0130 | 4 | 9 | | W0100 | 3 | 15 | | W0104 | 1 | 15 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { long long b; b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 15 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(char a) { bar(a); /* W0130 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0130 | 5 | 9 | | W0104 | 3 | 15 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(char a) { bar((long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(char a) { return a; /* W0130 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0130 | 3 | 12 | | W0266 | 3 | 5 | | W0104 | 1 | 20 | | W0834 | 1 | 1 | | W0628 | 1 | 11 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(char a) { return (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0104 | 1 | 20 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 11 | adlint-3.2.14/features/code_check/W0215.feature0000644000004100000410000000755212340630463021076 0ustar www-datawww-dataFeature: W0215 W0215 detects that `float' value is converted into `short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { short b = a; /* W0215 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0215 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { short b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { short b; b = a; /* W0215 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0215 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { short b; b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(float a) { bar(a); /* W0215 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0215 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(float a) { bar((short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ short foo(float a) { return a; /* W0215 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0215 | 3 | 12 | | W0351 | 3 | 5 | | W0104 | 1 | 17 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ short foo(float a) { return (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 17 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0217.feature0000644000004100000410000000752012340630463021073 0ustar www-datawww-dataFeature: W0217 W0217 detects that `float' value is converted into `int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { int b = a; /* W0217 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0217 | 3 | 13 | | W0100 | 3 | 9 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(float a) { int b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 9 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { int b; b = a; /* W0217 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0217 | 4 | 9 | | W0100 | 3 | 9 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(float a) { int b; b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 9 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(float a) { bar(a); /* W0217 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0217 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(float a) { bar((int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ int foo(float a) { return a; /* W0217 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0217 | 3 | 12 | | W0353 | 3 | 5 | | W0104 | 1 | 15 | | W0628 | 1 | 5 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ int foo(float a) { return (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0104 | 1 | 15 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0655.feature0000644000004100000410000000241612340630463021100 0ustar www-datawww-dataFeature: W0655 W0655 detects that a bit-field member appears as an operand of the sizeof-expression. Scenario: bit-field as an operand Given a target source named "fixture.c" with: """ extern struct Foo { unsigned int b1:1, b2:1; } foo; static unsigned long bar(void) { return sizeof(foo.b1); /* W0655 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 48 | | W1076 | 3 | 22 | | W0655 | 5 | 12 | | W0629 | 3 | 22 | | W0425 | 1 | 40 | | W0628 | 3 | 22 | Scenario: arithmetic expression of two bit-fields as an operand Given a target source named "fixture.c" with: """ extern struct Foo { unsigned int b1:1, b2:1; } foo; static unsigned long bar(void) { return sizeof(foo.b1 + foo.b2); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 48 | | W1076 | 3 | 22 | | W0629 | 3 | 22 | | W0425 | 1 | 40 | | W0628 | 3 | 22 | adlint-3.2.14/features/code_check/W0100.feature0000644000004100000410000000434512340630463021064 0ustar www-datawww-dataFeature: W0100 W0100 detects that a variable is not reassigned since the initial value is assigned. Scenario: reassigning value to an array element of the indefinite subscript Given a target source named "fixture.c" with: """ void foo(int i) { int a[3]; /* OK not W0100 */ a[i] = 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0705 | 4 | 7 | | C1000 | | | | C1006 | 1 | 14 | | W0104 | 1 | 14 | | W0950 | 3 | 11 | | W0628 | 1 | 6 | Scenario: reassigning value to a nested array element of the indefinite subscript Given a target source named "fixture.c" with: """ void foo(int i) { int a[3][3]; /* OK not W0100 */ a[i][i] = 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0705 | 4 | 7 | | C1000 | | | | C1006 | 1 | 14 | | W0705 | 4 | 10 | | C1000 | | | | C1006 | 1 | 14 | | W0104 | 1 | 14 | | W0950 | 3 | 14 | | W0950 | 3 | 11 | | W0628 | 1 | 6 | Scenario: only reference to a nested array element of the indefinite subscript Given a target source named "fixture.c" with: """ void foo(int i) { int a[3][3]; /* W0100 */ a[i][i]; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0705 | 4 | 7 | | C1000 | | | | C1006 | 1 | 14 | | W0705 | 4 | 10 | | C1000 | | | | C1006 | 1 | 14 | | W0100 | 3 | 9 | | W0104 | 1 | 14 | | W0950 | 3 | 14 | | W0950 | 3 | 11 | | W0085 | 4 | 5 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0643.feature0000644000004100000410000000464612340630463021104 0ustar www-datawww-dataFeature: W0643 W0643 detects that the last backslash of argument tokens will confuse the `#' operator in the function-like macro. Scenario: one backslash Given a target source named "fixture.c" with: """ #define MACRO(x) #x const char *str = MACRO(foo\); /* W0643 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0643 | 2 | 28 | | W0117 | 2 | 13 | Scenario: two backslashes Given a target source named "fixture.c" with: """ #define MACRO(x) #x const char *str = MACRO(foo\\); /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0117 | 2 | 13 | Scenario: three backslashes Given a target source named "fixture.c" with: """ #define MACRO(x) #x const char *str = MACRO(foo\\\); /* W0643 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0643 | 2 | 30 | | W0117 | 2 | 13 | Scenario: four backslashes Given a target source named "fixture.c" with: """ #define MACRO(x) #x const char *str = MACRO(foo\\\\); /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0117 | 2 | 13 | Scenario: no backslashes Given a target source named "fixture.c" with: """ #define MACRO(x) #x const char *str = MACRO(foo); /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0117 | 2 | 13 | Scenario: backslashes middle of argument tokens Given a target source named "fixture.c" with: """ #define MACRO(x) #x const char *str = MACRO(foo \ bar \\ baz); /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W0117 | 2 | 13 | adlint-3.2.14/features/code_check/W0723.feature0000644000004100000410000000310412340630463021067 0ustar www-datawww-dataFeature: W0723 W0723 detects that signed arithmetic-expression may overflow. Scenario: an arithmetic operation in initializer of a global variable Given a target source named "fixture.c" with: """ static int i = 5; static unsigned int j = (unsigned int) &i + 1; /* OK */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0567 | 2 | 25 | | W0167 | 2 | 45 | Scenario: multiplication of two arbitrary `signed short' values Given a target source named "fixture.c" with: """ static int foo(short a, short b) { return a * b; /* W0723 should not be output */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 22 | | W0104 | 1 | 31 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: multiplication of two arbitrary `signed int' values Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return a * b; /* W0723 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 14 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W1069.feature0000644000004100000410000001015312340630463021075 0ustar www-datawww-dataFeature: W1069 W1069 detects that no trailing `else' clause is found in this `if-else-if' statements chain. Scenario: no trailing `else' in `if-else-if' statements chain Given a target source named "fixture.c" with: """ static int func(int i) { if (i == 2) { /* W1069 */ return 0; } else if (i == 4) { return 1; } return 2; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 21 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W1069 | 3 | 5 | | W0628 | 1 | 12 | Scenario: no trailing `else' in `if-else-if-else-if' statements chain Given a target source named "fixture.c" with: """ static int func(int i) { if (i == 2) { /* W1069 */ return 0; } else if (i == 4) { return 1; } else if (i == 6) { return 2; } return 4; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 21 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W1069 | 3 | 5 | | W0628 | 1 | 12 | Scenario: `else' clause at the last of `if-else-if-else-if' statements chain Given a target source named "fixture.c" with: """ static int func(int i) { if (i == 2) { /* OK */ return 0; } else if (i == 4) { return 1; } else if (i == 6) { return 2; } else { return 3; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 21 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: standalone `if' statement Given a target source named "fixture.c" with: """ static int func(int i) { if (i == 2) { /* OK */ return 0; } return 10; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 21 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: `else' clause at the last of `if-else-if' statements chain Given a target source named "fixture.c" with: """ static int func(int i) { if (i == 2) { /* OK */ return 0; } else if (i == 4) { return 1; } else { return 2; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 21 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: incomplete `if-else-if' statement chain in a complete `if-else' statement Given a target source named "fixture.c" with: """ static void foo(int i) { if (i == 0) { return; } else { if (i == 1) { /* W1069 */ } else if (i == 2) { } } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0104 | 1 | 21 | | W1071 | 1 | 13 | | W0629 | 1 | 13 | | W1069 | 7 | 9 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0164.feature0000644000004100000410000001052212340630463021070 0ustar www-datawww-dataFeature: W0164 W0164 detects that `short' value is converted into `unsigned long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { unsigned long b = a; /* W0164 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0164 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { unsigned long b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 23 | | C1000 | | | | C1006 | 1 | 16 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { unsigned long b; b = a; /* W0164 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0164 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { unsigned long b; b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 16 | | W0100 | 3 | 19 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(short a) { bar(a); /* W0164 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0164 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(short a) { bar((unsigned long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 16 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(short a) { return a; /* W0164 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0164 | 3 | 12 | | W0300 | 3 | 5 | | W0104 | 1 | 25 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(short a) { return (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 25 | | W0104 | 1 | 25 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0176.feature0000644000004100000410000001141212340630463021072 0ustar www-datawww-dataFeature: W0176 W0176 detects that `long' value is converted into `unsigned long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { unsigned long long b = a; /* W0176 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0176 | 3 | 28 | | W0100 | 3 | 24 | | W0104 | 1 | 15 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { unsigned long long b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 28 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 24 | | W0104 | 1 | 15 | | W0834 | 3 | 29 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { unsigned long long b; b = a; /* W0176 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0176 | 4 | 9 | | W0100 | 3 | 24 | | W0104 | 1 | 15 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { unsigned long long b; b = (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 24 | | W0104 | 1 | 15 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(long a) { bar(a); /* W0176 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0176 | 5 | 9 | | W0104 | 3 | 15 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long long); void foo(long a) { bar((unsigned long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 15 | | W0104 | 3 | 15 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(long a) { return a; /* W0176 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0176 | 3 | 12 | | W0312 | 3 | 5 | | W0104 | 1 | 29 | | W0834 | 1 | 1 | | W0628 | 1 | 20 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long long foo(long a) { return (unsigned long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 20 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0104 | 1 | 29 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 20 | adlint-3.2.14/features/code_check/W0119.feature0000644000004100000410000001045712340630463021077 0ustar www-datawww-dataFeature: W0119 W0119 detects that `char' value is converted into `signed char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { signed char b = a; /* W0119 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0119 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { signed char b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 21 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { signed char b; b = a; /* W0119 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0119 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { signed char b; b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(char a) { bar(a); /* W0119 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0119 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(char a) { bar((signed char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 15 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(char a) { return a; /* W0119 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0119 | 3 | 12 | | W0255 | 3 | 5 | | W0104 | 1 | 22 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(char a) { return (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 22 | | W0104 | 1 | 22 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0150.feature0000644000004100000410000001043012340630463021061 0ustar www-datawww-dataFeature: W0150 W0150 detects that `unsigned long' value is converted into `int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { int b = a; /* W0150 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0150 | 3 | 13 | | W0100 | 3 | 9 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long a) { int b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 13 | | C1000 | | | | C1006 | 1 | 24 | | W0100 | 3 | 9 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { int b; b = a; /* W0150 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0150 | 4 | 9 | | W0100 | 3 | 9 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long a) { int b; b = (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 24 | | W0100 | 3 | 9 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(unsigned long a) { bar(a); /* W0150 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0150 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(int); void foo(unsigned long a) { bar((int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 24 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ int foo(unsigned long a) { return a; /* W0150 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0150 | 3 | 12 | | W0286 | 3 | 5 | | W0104 | 1 | 23 | | W0628 | 1 | 5 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ int foo(unsigned long a) { return (int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 23 | | W0104 | 1 | 23 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0126.feature0000644000004100000410000000771112340630463021074 0ustar www-datawww-dataFeature: W0126 W0126 detects that `char' value is converted into `unsigned long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { unsigned long b = a; /* W0126 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0126 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { unsigned long b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { unsigned long b; b = a; /* W0126 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0126 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { unsigned long b; b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(char a) { bar(a); /* W0126 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0126 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(char a) { bar((unsigned long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(char a) { return a; /* W0126 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0126 | 3 | 12 | | W0262 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(char a) { return (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0104 | 1 | 24 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W1065.feature0000644000004100000410000000423712340630463021077 0ustar www-datawww-dataFeature: W1065 W1065 detects that an enum type of the case-label's value is different from the enum type of controlling variable. Scenario: different enum types Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE, GRAPE }; static int foo(const enum Color c) { switch (c) { case RED: /* OK */ return 1; case ORANGE: /* W1065 */ return 2; default: return 0; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 4 | 12 | | W1065 | 9 | 10 | | W1071 | 4 | 12 | | W0629 | 4 | 12 | | W0628 | 4 | 12 | Scenario: same enum types Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; static int foo(const enum Color c) { switch (c) { case RED: /* OK */ return 1; case GREEN: /* OK */ return 2; default: return 0; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W1071 | 3 | 12 | | W0629 | 3 | 12 | | W0628 | 3 | 12 | Scenario: enum type and `int' Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; static int foo(const enum Color c) { switch (c) { case RED: /* OK */ return 1; case 1: /* OK but W1064 */ return 2; default: return 0; } } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W1064 | 8 | 10 | | W1071 | 3 | 12 | | W0629 | 3 | 12 | | W0628 | 3 | 12 | adlint-3.2.14/features/code_check/W0752.feature0000644000004100000410000001004012340630463021066 0ustar www-datawww-dataFeature: W0752 W0752 detects that `unsigned int' value is converted into `unsigned short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { unsigned short b = a; /* W0752 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0752 | 3 | 24 | | W0100 | 3 | 20 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { unsigned short b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 20 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { unsigned short b; b = a; /* W0752 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0752 | 4 | 9 | | W0100 | 3 | 20 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { unsigned short b; b = (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 20 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(unsigned int a) { bar(a); /* W0752 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0752 | 5 | 9 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned short); void foo(unsigned int a) { bar((unsigned short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(unsigned int a) { return a; /* W0752 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0752 | 3 | 12 | | W0386 | 3 | 5 | | W0104 | 1 | 33 | | W0628 | 1 | 16 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned short foo(unsigned int a) { return (unsigned short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 16 | | W0104 | 1 | 33 | | W0628 | 1 | 16 | adlint-3.2.14/features/code_check/W0253.feature0000644000004100000410000001053512340630463021073 0ustar www-datawww-dataFeature: W0253 W0253 detects that `unsigned int' value is converted into `long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { long long b = a; /* W0253 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0253 | 3 | 19 | | W0100 | 3 | 15 | | W0104 | 1 | 23 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { long long b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 23 | | W0834 | 3 | 20 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { long long b; b = a; /* W0253 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0253 | 4 | 9 | | W0100 | 3 | 15 | | W0104 | 1 | 23 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { long long b; b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 23 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(unsigned int a) { bar(a); /* W0253 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0253 | 5 | 9 | | W0104 | 3 | 23 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(unsigned int a) { bar((long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 23 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(unsigned int a) { return a; /* W0253 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0253 | 3 | 12 | | W0409 | 3 | 5 | | W0104 | 1 | 28 | | W0834 | 1 | 1 | | W0628 | 1 | 11 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(unsigned int a) { return (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0104 | 1 | 28 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 11 | adlint-3.2.14/features/code_check/W0786.feature0000644000004100000410000000224612340630463021106 0ustar www-datawww-dataFeature: W0786 W0786 detects that a bit-field whose base type is not in signed or unsigned `int' is declared. Scenario: typedefed `unsigned long' bit-field declaration Given a target source named "fixture.c" with: """ typedef unsigned long base_t; static struct { /* W0786 */ base_t :1; /* bit padding */ base_t foo:1; base_t :1; /* bit padding */ base_t bar:1; base_t :1; /* bit padding */ } bf; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0786 | 3 | 8 | Scenario: typedefed `unsigned int' bit-field declaration Given a target source named "fixture.c" with: """ typedef unsigned int base_t; static struct { /* OK */ base_t :1; /* bit padding */ base_t foo:1; base_t :1; /* bit padding */ base_t bar:1; base_t :1; /* bit padding */ } bf; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | adlint-3.2.14/features/code_check/W0229.feature0000644000004100000410000000773312340630463021104 0ustar www-datawww-dataFeature: W0229 W0229 detects that `double' value is converted into `unsigned long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { unsigned long b = a; /* W0229 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0229 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(double a) { unsigned long b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { unsigned long b; b = a; /* W0229 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0229 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(double a) { unsigned long b; b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 17 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(double a) { bar(a); /* W0229 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0229 | 5 | 9 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(double a) { bar((unsigned long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 17 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(double a) { return a; /* W0229 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0229 | 3 | 12 | | W0365 | 3 | 5 | | W0104 | 1 | 26 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(double a) { return (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0104 | 1 | 26 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W1052.feature0000644000004100000410000000405212340630463021066 0ustar www-datawww-dataFeature: W1052 W1052 detects that an arithmetic operation of unsigned values may be overflow. Scenario: multiplication of two arbitrary `unsigned char' values Given a target source named "fixture.c" with: """ static unsigned int foo(unsigned char a, unsigned char b) { return a * b; /* W1052 should not be output */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 21 | | W0246 | 3 | 12 | | W0246 | 3 | 16 | | W0167 | 3 | 14 | | W0303 | 3 | 5 | | W0104 | 1 | 39 | | W0104 | 1 | 56 | | W0629 | 1 | 21 | | W0628 | 1 | 21 | Scenario: multiplication of two arbitrary `unsigned short' values Given a target source named "fixture.c" with: """ static unsigned int foo(unsigned short a, unsigned short b) { return a * b; /* W1052 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 21 | | W0248 | 3 | 12 | | W0248 | 3 | 16 | | W1052 | 3 | 14 | | W0167 | 3 | 14 | | W0303 | 3 | 5 | | W0104 | 1 | 40 | | W0104 | 1 | 58 | | W0629 | 1 | 21 | | W0628 | 1 | 21 | Scenario: multiplication of two arbitrary `unsigned int' values Given a target source named "fixture.c" with: """ static unsigned int foo(unsigned int a, unsigned int b) { return a * b; /* W1052 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 21 | | W1052 | 3 | 14 | | W0104 | 1 | 38 | | W0104 | 1 | 54 | | W0629 | 1 | 21 | | W0628 | 1 | 21 | adlint-3.2.14/features/code_check/W0722.feature0000644000004100000410000000375112340630463021076 0ustar www-datawww-dataFeature: W0722 W0722 detects that signed arithmetic-expression must overflow. Scenario: additive-expression must not overflow Given a target source named "fixture.c" with: """ static int foo(int i, int j) { if ((i > -10) && (i < 10) && (j > -20) && (j < 20)) { return i + j; /* OK */ } return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: additive-expression may overflow Given a target source named "fixture.c" with: """ static int foo(int i, int j) { if ((i > -10) && (i < 10) && (j < 20)) { return i + j; /* OK but W0723 */ } return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 4 | 18 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: additive-expression must overflow Given a target source named "fixture.c" with: """ static int foo(int i, int j) { if ((i > 2000000000) && (j > 2000000000)) { return i + j; /* W0722 */ } return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0722 | 4 | 18 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0180.feature0000644000004100000410000001116612340630463021073 0ustar www-datawww-dataFeature: W0180 W0180 detects that `long long' value is converted into `unsigned long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned long b = a; /* W0180 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0180 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned long b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 23 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 19 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned long b; b = a; /* W0180 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0180 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned long b; b = (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 19 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(long long a) { bar(a); /* W0180 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0180 | 5 | 9 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned long); void foo(long long a) { bar((unsigned long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 20 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(long long a) { return a; /* W0180 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0180 | 3 | 12 | | W0316 | 3 | 5 | | W0104 | 1 | 29 | | W0834 | 1 | 19 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned long foo(long long a) { return (unsigned long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 29 | | W0104 | 1 | 29 | | W0834 | 1 | 19 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0120.feature0000644000004100000410000000760512340630463021070 0ustar www-datawww-dataFeature: W0120 W0120 detects that `char' value is converted into `unsigned char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { unsigned char b = a; /* OK when char_as_unsigned_char: true */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { unsigned char b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { unsigned char b; b = a; /* OK when char_as_unsigned_char: true */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { unsigned char b; b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(char a) { bar(a); /* W0120 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(char a) { bar((unsigned char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(char a) { return a; /* W0120 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0256 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(char a) { return (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0104 | 1 | 24 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0243.feature0000644000004100000410000001052412340630463021070 0ustar www-datawww-dataFeature: W0243 W0243 detects that `long double' value is converted into `long long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { long long b = a; /* W0243 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0243 | 3 | 19 | | W0100 | 3 | 15 | | W0104 | 1 | 22 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long double a) { long long b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 22 | | W0834 | 3 | 20 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { long long b; b = a; /* W0243 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0243 | 4 | 9 | | W0100 | 3 | 15 | | W0104 | 1 | 22 | | W0834 | 3 | 5 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long double a) { long long b; b = (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 15 | | W0104 | 1 | 22 | | W0834 | 3 | 5 | | W0834 | 4 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(long double a) { bar(a); /* W0243 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0243 | 5 | 9 | | W0104 | 3 | 22 | | W0834 | 1 | 17 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long long); void foo(long double a) { bar((long long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 22 | | W0834 | 1 | 17 | | W0834 | 5 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(long double a) { return a; /* W0243 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0243 | 3 | 12 | | W0379 | 3 | 5 | | W0104 | 1 | 27 | | W0834 | 1 | 1 | | W0628 | 1 | 11 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long long foo(long double a) { return (long long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 11 | | W0104 | 1 | 27 | | W0834 | 1 | 1 | | W0834 | 3 | 13 | | W0628 | 1 | 11 | adlint-3.2.14/features/code_check/W0247.feature0000644000004100000410000000764512340630463021106 0ustar www-datawww-dataFeature: W0247 W0247 detects that `unsigned char' value is converted into `long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { long b = a; /* W0247 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0247 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { long b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { long b; b = a; /* W0247 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0247 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { long b; b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 10 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(unsigned char a) { bar(a); /* W0247 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0247 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(unsigned char a) { bar((long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long foo(unsigned char a) { return a; /* W0247 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0247 | 3 | 12 | | W0403 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long foo(unsigned char a) { return (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0763.feature0000644000004100000410000001051112340630463021073 0ustar www-datawww-dataFeature: W0763 W0763 detects that `unsigned long long' value is converted into `unsigned char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned char b = a; /* W0763 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0763 | 3 | 23 | | W0100 | 3 | 19 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned char b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned char b; b = a; /* W0763 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0763 | 4 | 9 | | W0100 | 3 | 19 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { unsigned char b; b = (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 19 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(unsigned long long a) { bar(a); /* W0763 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0763 | 5 | 9 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned char); void foo(unsigned long long a) { bar((unsigned char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(unsigned long long a) { return a; /* W0763 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0763 | 3 | 12 | | W0397 | 3 | 5 | | W0104 | 1 | 38 | | W0834 | 1 | 19 | | W0628 | 1 | 15 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned char foo(unsigned long long a) { return (unsigned char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 15 | | W0104 | 1 | 38 | | W0834 | 1 | 19 | | W0628 | 1 | 15 | adlint-3.2.14/features/code_check/W0496.feature0000644000004100000410000000357112340630463021106 0ustar www-datawww-dataFeature: W0496 W0496 detects that multiple conditional-expressions appear in an expression without appropriate grouping. Scenario: without grouping Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return a < 0 ? a : b > 0 ? a + b : b; /* W0496 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 34 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0629 | 1 | 12 | | W0496 | 3 | 12 | | W0501 | 3 | 18 | | W0628 | 1 | 12 | Scenario: with appropriate grouping Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return a < 0 ? a : (b > 0 ? a + b : b); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 35 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0629 | 1 | 12 | | W0501 | 3 | 18 | | W0628 | 1 | 12 | Scenario: entirely grouped Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return (a < 0 ? a : b > 0 ? a + b : b); /* W0496 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 35 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0629 | 1 | 12 | | W0496 | 3 | 13 | | W0501 | 3 | 19 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0152.feature0000644000004100000410000001125712340630463021073 0ustar www-datawww-dataFeature: W0152 W0152 detects that `unsigned long long' value is converted into `signed char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { signed char b = a; /* W0152 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0152 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { signed char b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 21 | | C1000 | | | | C1006 | 1 | 29 | | W0100 | 3 | 17 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { signed char b; b = a; /* W0152 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0152 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { signed char b; b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 29 | | W0100 | 3 | 17 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(unsigned long long a) { bar(a); /* W0152 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0152 | 5 | 9 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(unsigned long long a) { bar((signed char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 29 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(unsigned long long a) { return a; /* W0152 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0152 | 3 | 12 | | W0288 | 3 | 5 | | W0104 | 1 | 36 | | W0834 | 1 | 17 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(unsigned long long a) { return (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 36 | | W0104 | 1 | 36 | | W0834 | 1 | 17 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0207.feature0000644000004100000410000001023312340630463021065 0ustar www-datawww-dataFeature: W0207 W0207 detects that `long long' value is converted into `double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { double b = a; /* W0207 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0207 | 3 | 16 | | W0100 | 3 | 12 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { double b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { double b; b = a; /* W0207 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0207 | 4 | 9 | | W0100 | 3 | 12 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { double b; b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(long long a) { bar(a); /* W0207 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0207 | 5 | 9 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(long long a) { bar((double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ double foo(long long a) { return a; /* W0207 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0207 | 3 | 12 | | W0343 | 3 | 5 | | W0104 | 1 | 22 | | W0834 | 1 | 12 | | W0628 | 1 | 8 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ double foo(long long a) { return (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0104 | 1 | 22 | | W0834 | 1 | 12 | | W0628 | 1 | 8 | adlint-3.2.14/features/code_check/W0700.feature0000644000004100000410000000314312340630463021065 0ustar www-datawww-dataFeature: W0700 W0700 detects that no `return' statements with expression is in the function which is implicitly declared to return `int' value. Scenario: no `return' statement in the implicitly typed function Given a target source named "fixture.c" with: """ extern func(void) /* W0700 */ { } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0697 | 1 | 8 | | W0700 | 1 | 8 | | W0457 | 1 | 8 | | W0628 | 1 | 8 | Scenario: a `return' statement without expression in the implicitly typed function Given a target source named "fixture.c" with: """ extern func(void) /* W0700 */ { return; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0700 | 1 | 8 | | W0457 | 1 | 8 | | W0699 | 3 | 5 | | W0628 | 1 | 8 | Scenario: a `return' statement with expression in the implicitly typed function Given a target source named "fixture.c" with: """ extern func(void) /* OK */ { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0457 | 1 | 8 | | W0628 | 1 | 8 | adlint-3.2.14/features/code_check/W0023.feature0000644000004100000410000001623212340630463021066 0ustar www-datawww-dataFeature: W0023 W0023 detects that a pointer variable appears in the arithmetic operation. Scenario: additive-expression with a pointer variable Given a target source named "fixture.c" with: """ long func(const int * const p) { const long r = p + 10L; /* W0023 */ return r; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W9003 | 3 | 24 | | W0023 | 3 | 22 | | W0424 | 3 | 20 | | C1000 | | | | C1005 | 1 | 29 | | W9003 | 3 | 22 | | W0628 | 1 | 6 | Scenario: multiplicative-expression with a pointer variable Given a target source named "fixture.c" with: """ long func(const int * const p) { const long r = p * 2L; /* W0023 */ return r; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W9003 | 3 | 24 | | W0023 | 3 | 22 | | W0424 | 3 | 20 | | C1000 | | | | C1005 | 1 | 29 | | W9003 | 3 | 22 | | W0628 | 1 | 6 | Scenario: additive-expression with pointer variables Given a target source named "fixture.c" with: """ long func(const int * const p, const int * const q) { const long r = p - q; /* W0023 */ return r; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0023 | 3 | 22 | | W0424 | 3 | 20 | | C1000 | | | | C1005 | 1 | 29 | | W0424 | 3 | 24 | | C1000 | | | | C1005 | 1 | 50 | | W1052 | 3 | 22 | | W9003 | 3 | 22 | | W0628 | 1 | 6 | Scenario: multiplicative-expression with pointer variables Given a target source named "fixture.c" with: """ long func(const int * const p, const int * const q) { const long r = p / q; /* W0023 */ return r; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0023 | 3 | 22 | | W0093 | 3 | 22 | | C1000 | | | | C1006 | 1 | 50 | | W0424 | 3 | 20 | | C1000 | | | | C1005 | 1 | 29 | | W0424 | 3 | 24 | | C1000 | | | | C1005 | 1 | 50 | | W9003 | 3 | 22 | | W0628 | 1 | 6 | Scenario: additive-expression and multiplicative-expression with pointer variables Given a target source named "fixture.c" with: """ long func(const int * const p, const int * const q, const int * const r) { const long s = (p + q) * r; /* W0023 */ return s; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0023 | 3 | 23 | | W0424 | 3 | 21 | | C1000 | | | | C1005 | 1 | 29 | | W0424 | 3 | 25 | | C1000 | | | | C1005 | 1 | 50 | | W1052 | 3 | 23 | | W0023 | 3 | 28 | | W0424 | 3 | 20 | | W0424 | 3 | 30 | | C1000 | | | | C1005 | 1 | 71 | | W1052 | 3 | 28 | | W9003 | 3 | 28 | | W0628 | 1 | 6 | Scenario: additive-expression and increment operation with pointer variables Given a target source named "fixture.c" with: """ long func(const int * const p, const int * const q) { const long r = q - p + 1; /* W0023 */ return r; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0023 | 3 | 22 | | W0424 | 3 | 20 | | C1000 | | | | C1005 | 1 | 50 | | W0424 | 3 | 24 | | C1000 | | | | C1005 | 1 | 29 | | W1052 | 3 | 22 | | W9003 | 3 | 28 | | W0024 | 3 | 26 | | W0424 | 3 | 22 | | W9003 | 3 | 26 | | W0498 | 3 | 20 | | W0628 | 1 | 6 | Scenario: additive-expression with an array vairable Given a target source named "fixture.c" with: """ long func(void) { const long a[] = { 0, 1, 2 }; const long r = a + 10L; /* W0023 */ return r; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W9003 | 4 | 24 | | W0023 | 4 | 22 | | W9003 | 4 | 22 | | W0628 | 1 | 6 | Scenario: shift-expression with pointer variables Given a target source named "fixture.c" with: """ long func(const int * const p, const int * const q) { const long r = p << q; /* OK */ return r; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0116 | 3 | 22 | | C1000 | | | | C1006 | 1 | 29 | | W0424 | 3 | 20 | | C1000 | | | | C1005 | 1 | 29 | | W0424 | 3 | 25 | | C1000 | | | | C1005 | 1 | 50 | | W9003 | 3 | 22 | | W0628 | 1 | 6 | Scenario: equality-expression with pointer variables Given a target source named "fixture.c" with: """ int func(const int * const p, const int * const q) { return p != q; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0027 | 3 | 14 | | W0628 | 1 | 5 | Scenario: assignment-expression with a pointer variable Given a target source named "fixture.c" with: """ long func(const int * const p) { long r = 0; r += p; /* OK */ return r; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W9003 | 4 | 5 | | W0023 | 4 | 7 | | W0424 | 4 | 10 | | C1000 | | | | C1005 | 1 | 29 | | W9003 | 4 | 5 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0179.feature0000644000004100000410000001115112340630463021075 0ustar www-datawww-dataFeature: W0179 W0179 detects that `long long' value is converted into `unsigned int' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned int b = a; /* W0179 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0179 | 3 | 22 | | W0100 | 3 | 18 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned int b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 3 | 22 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 18 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned int b; b = a; /* W0179 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0179 | 4 | 9 | | W0100 | 3 | 18 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { unsigned int b; b = (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0608 | 4 | 9 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 18 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(long long a) { bar(a); /* W0179 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0179 | 5 | 9 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(unsigned int); void foo(long long a) { bar((unsigned int) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0608 | 5 | 9 | | C1000 | | | | C1006 | 3 | 20 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(long long a) { return a; /* W0179 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0179 | 3 | 12 | | W0315 | 3 | 5 | | W0104 | 1 | 28 | | W0834 | 1 | 18 | | W0628 | 1 | 14 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ unsigned int foo(long long a) { return (unsigned int) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 14 | | W0608 | 3 | 12 | | C1000 | | | | C1006 | 1 | 28 | | W0104 | 1 | 28 | | W0834 | 1 | 18 | | W0628 | 1 | 14 | adlint-3.2.14/features/code_check/W0753.feature0000644000004100000410000001045712340630463021103 0ustar www-datawww-dataFeature: W0753 W0753 detects that `long' value is converted into `signed char' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { signed char b = a; /* W0753 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0753 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { signed char b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 21 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { signed char b; b = a; /* W0753 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0753 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { signed char b; b = (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 15 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(long a) { bar(a); /* W0753 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0753 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(signed char); void foo(long a) { bar((signed char) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 15 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(long a) { return a; /* W0753 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0753 | 3 | 12 | | W0387 | 3 | 5 | | W0104 | 1 | 22 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ signed char foo(long a) { return (signed char) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 22 | | W0104 | 1 | 22 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0707.feature0000644000004100000410000001500712340630463021076 0ustar www-datawww-dataFeature: W0707 W0707 detects that a constant-expression array subscript must cause out of bound access of the array object. Scenario: array-subscript-expression with constant subscript must cause OOB access in an initializer Given a target source named "fixture.c" with: """ extern int a[5]; int foo(void) { int i = a[5]; /* W0707 */ return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W0707 | 5 | 15 | | W0100 | 5 | 9 | | W0628 | 3 | 5 | Scenario: array-subscript-expression with constant subscript must cause OOB access in rhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; int foo(void) { int i = 0; i = a[-1]; /* W0707 */ return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W0707 | 6 | 11 | | W0628 | 3 | 5 | Scenario: array-subscript-expression with constant subscript must cause OOB access in lhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; void foo(int i) { a[5] = i; /* W0707 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 6 | | W0707 | 5 | 7 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: indirection-expression with constant subscript must cause OOB access in rhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; int foo(void) { int i = 0; i = *(a + 5 - 6); /* W0707 */ return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W9003 | 6 | 15 | | W0023 | 6 | 13 | | W9003 | 6 | 19 | | W0023 | 6 | 17 | | W0707 | 6 | 10 | | W0498 | 6 | 10 | | W0628 | 3 | 5 | Scenario: indirection-expression with constant subscript must cause OOB access in lhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; void foo(int i) { *(a - 1 + 6) = i; /* W0707 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 6 | | W9003 | 5 | 11 | | W0024 | 5 | 9 | | W9003 | 5 | 15 | | W0023 | 5 | 13 | | W0707 | 5 | 6 | | W0104 | 3 | 14 | | W0498 | 5 | 6 | | W0628 | 3 | 6 | Scenario: array-subscript-expression with constant subscript must not cause OOB access in an initializer Given a target source named "fixture.c" with: """ extern int a[5]; int foo(void) { int i = a[3]; /* OK */ return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W0100 | 5 | 9 | | W0628 | 3 | 5 | Scenario: array-subscript-expression with constant subscript must not cause OOB access in rhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; int foo(void) { int i = 0; i = a[0]; /* OK */ return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W0628 | 3 | 5 | Scenario: array-subscript-expression with constant subscript must not cause OOB access in lhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; void foo(int i) { a[4] = i; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 6 | | W0104 | 3 | 14 | | W0628 | 3 | 6 | Scenario: indirection-expression with constant subscript must not cause OOB access in rhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; int foo(void) { int i = 0; i = *(a - 2 + 3); /* OK */ return i; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 5 | | W9003 | 6 | 15 | | W0023 | 6 | 13 | | W9003 | 6 | 19 | | W0023 | 6 | 17 | | W0498 | 6 | 10 | | W0628 | 3 | 5 | Scenario: indirection-expression with constant subscript must not cause OOB access in lhs operand of an assignment-expression Given a target source named "fixture.c" with: """ extern int a[5]; void foo(int i) { *(a + 4 - 1) = i; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W0117 | 3 | 6 | | W9003 | 5 | 11 | | W0023 | 5 | 9 | | W9003 | 5 | 15 | | W0024 | 5 | 13 | | W0104 | 3 | 14 | | W0498 | 5 | 6 | | W0628 | 3 | 6 | adlint-3.2.14/features/code_check/W0762.feature0000644000004100000410000001100112340630463021065 0ustar www-datawww-dataFeature: W0762 W0762 detects that `long long' value is converted into `long' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { long b = a; /* W0762 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0762 | 3 | 14 | | W0100 | 3 | 10 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { long b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 14 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 10 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { long b; b = a; /* W0762 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0762 | 4 | 9 | | W0100 | 3 | 10 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { long b; b = (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 20 | | W0100 | 3 | 10 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(long long a) { bar(a); /* W0762 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0762 | 5 | 9 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long); void foo(long long a) { bar((long) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 20 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long foo(long long a) { return a; /* W0762 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0762 | 3 | 12 | | W0396 | 3 | 5 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long foo(long long a) { return (long) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 20 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | adlint-3.2.14/features/code_check/W0689.feature0000644000004100000410000000264312340630463021111 0ustar www-datawww-dataFeature: W0689 W0689 detects that the syntax of #line directive is illformed. Scenario: line number as an arithmetic-expression and no file name Given a target source named "fixture.c" with: """ #line 35 * 100 /* W0689 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0689 | 1 | 10 | Scenario: line number as an arithmetic-expression and valid file name Given a target source named "fixture.c" with: """ #line 35 * 100 "test.c" /* W0689 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0689 | 1 | 10 | Scenario: valid line number and invalid file name Given a target source named "fixture.c" with: """ #line 35 L"******.c" /* W0689 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0689 | 1 | 10 | Scenario: inverted arguments Given a target source named "fixture.c" with: """ #line __FILE__ 35 /* W0689 */ """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0689 | 1 | 16 | | W0690 | 1 | 7 | adlint-3.2.14/features/code_check/W0718.feature0000644000004100000410000000401012340630463021070 0ustar www-datawww-dataFeature: W0718 W0718 detects that operand of right side of bitwise expression or arithmetic expression is `effectively boolean'. Scenario: an arithmetic expression Given a target source named "fixture.c" with: """ static int func(int a, int b, int c) { return a + (b > c); /* W0718 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 14 | | W0104 | 1 | 21 | | W0104 | 1 | 28 | | W0104 | 1 | 35 | | W0629 | 1 | 12 | | W0718 | 3 | 16 | | W0628 | 1 | 12 | Scenario: a bitwise expression Given a target source named "fixture.c" with: """ static int func(int a, int b, int c) { return a ^ (b > c); /* W0718 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0572 | 3 | 14 | | W0104 | 1 | 21 | | W0104 | 1 | 28 | | W0104 | 1 | 35 | | W0629 | 1 | 12 | | W0718 | 3 | 16 | | W0628 | 1 | 12 | Scenario: a shift expression Given a target source named "fixture.c" with: """ static int func(int a, int b, int c) { return a << (b > c); /* W0718 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0570 | 3 | 14 | | C1000 | | | | C1006 | 1 | 21 | | W0572 | 3 | 14 | | W0794 | 3 | 14 | | W0104 | 1 | 21 | | W0104 | 1 | 28 | | W0104 | 1 | 35 | | W0629 | 1 | 12 | | W0718 | 3 | 17 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0200.feature0000644000004100000410000000754112340630463021066 0ustar www-datawww-dataFeature: W0200 W0200 detects that `long' value is converted into `float' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { float b = a; /* W0200 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0200 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { float b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { float b; b = a; /* W0200 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0200 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { float b; b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(long a) { bar(a); /* W0200 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0200 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(long a) { bar((float) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ float foo(long a) { return a; /* W0200 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0200 | 3 | 12 | | W0336 | 3 | 5 | | W0104 | 1 | 16 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ float foo(long a) { return (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 16 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0070.feature0000644000004100000410000000242112340630463021063 0ustar www-datawww-dataFeature: W0070 W0070 detects that contents of a header included by #include <...> directive are not referred by other files in a translation-unit. Scenario: a typedef in the header and no reference to it Given a target source named "fixture.c" with: """ #include /* W0070 */ int bar(void) { return 0; } """ And a target source named "test.h" with: """ #if !defined(TEST_H) #define TEST_H typedef int foo; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0070 | 1 | 1 | | W0628 | 3 | 5 | Scenario: a typedef in the header and reference to it in other file. Given a target source named "fixture.c" with: """ #include /* OK */ foo bar(void) { return 0; } """ And a target source named "test.h" with: """ #if !defined(TEST_H) #define TEST_H typedef int foo; #endif """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 5 | | W0628 | 3 | 5 | adlint-3.2.14/features/code_check/W0208.feature0000644000004100000410000001033412340630463021070 0ustar www-datawww-dataFeature: W0208 W0208 detects that `long long' value is converted into `long double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { long double b = a; /* W0208 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0208 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long long a) { long double b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { long double b; b = a; /* W0208 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0208 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long long a) { long double b; b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 20 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(long long a) { bar(a); /* W0208 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0208 | 5 | 9 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(long long a) { bar((long double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 20 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(long long a) { return a; /* W0208 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0208 | 3 | 12 | | W0344 | 3 | 5 | | W0104 | 1 | 27 | | W0834 | 1 | 17 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(long long a) { return (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0104 | 1 | 27 | | W0834 | 1 | 17 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0491.feature0000644000004100000410000000320012340630463021066 0ustar www-datawww-dataFeature: W0491 W0491 detects that the same name appears in different namespaces. Scenario: hard to parse Given a target source named "fixture.c" with: """ typedef struct named_ref { int id; } named_ref; /* W0491 */ typedef struct code_props { named_ref *named_ref; /* W0492 */ } code_props; /* W0491 */ void func(named_ref *named_ref); void bar(int, named_ref *, named_ref *); """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0491 | 3 | 3 | | C0001 | 1 | 16 | | W0492 | 6 | 16 | | C0001 | 3 | 3 | | C0001 | 1 | 16 | | W0491 | 7 | 3 | | C0001 | 5 | 16 | | W0118 | 9 | 6 | | W0118 | 10 | 6 | Scenario: hard to parse Given a target source named "fixture.c" with: """ #define RETSIGTYPE void typedef int sighandler_t; typedef RETSIGTYPE (*sighandler_t)(int); struct sighandler_t { RETSIGTYPE (*ptr)(int); }; typedef struct sighandler_t *(*sighandler_t)(struct sighandler_t *); """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0491 | 6 | 8 | | C0001 | 3 | 13 | | C0001 | 4 | 22 | | W0491 | 10 | 32 | | C0001 | 6 | 8 | | W0482 | 1 | 1 | | W0586 | 3 | 13 | | W0586 | 4 | 22 | | W0586 | 10 | 32 | adlint-3.2.14/features/code_check/E0008.feature0000644000004100000410000001772412340630463021056 0ustar www-datawww-dataFeature: E0008 E0008 detects that a syntax error occured. Scenario: statements in initializer Given a target source named "fixture.c" with: """ #ifdef FOOFOO void foo1(void); #endif void foo2(void); /* OK not E0008 */ /**/\ #define FOO 1 """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 5 | 6 | Scenario: repeated multiple typedefs in a typedef declaration Given a target source named "fixture.c" with: """ typedef int foo; typedef struct bar { foo f; } baz, *qux; typedef struct bar baz, *qux; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0425 | 2 | 37 | | W0425 | 3 | 26 | | W0586 | 2 | 31 | | W0586 | 3 | 20 | | W0586 | 2 | 37 | | W0586 | 3 | 26 | Scenario: repeated multiple typedefs in a typedef declaration Given a target source named "fixture.c" with: """ typedef enum foo { FOO } bar, *baz; typedef enum foo bar, *baz; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0425 | 1 | 32 | | W0425 | 2 | 24 | | W0586 | 1 | 26 | | W0586 | 2 | 18 | | W0586 | 1 | 32 | | W0586 | 2 | 24 | Scenario: repeated multiple typedefs in a typedef declaration Given a target source named "fixture.c" with: """ typedef struct foo { int i; } bar, *baz; typedef struct foo bar, *baz; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0425 | 1 | 37 | | W0425 | 2 | 26 | | W0586 | 1 | 31 | | W0586 | 2 | 20 | | W0586 | 1 | 37 | | W0586 | 2 | 26 | Scenario: repeated multiple typedefs in a typedef declaration Given a target source named "fixture.c" with: """ typedef struct foo { int i; } bar, *baz; typedef struct foo {} bar, *baz; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0703 | 2 | 16 | | C0001 | 1 | 16 | | W0785 | 2 | 16 | | W0801 | 1 | 16 | | W0801 | 2 | 16 | | W0425 | 1 | 37 | | W0425 | 2 | 29 | | W0586 | 1 | 31 | | W0586 | 2 | 23 | | W0586 | 1 | 37 | | W0586 | 2 | 29 | Scenario: repeated multiple typedefs in a typedef declaration Given a target source named "fixture.c" with: """ typedef struct foo { int i; } bar, *baz; typedef struct foo bar; typedef struct foo *baz; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0425 | 1 | 37 | | W0586 | 1 | 31 | | W0586 | 2 | 20 | | W0586 | 1 | 37 | | W0586 | 3 | 21 | Scenario: repeated multiple typedefs in a typedef declaration Given a target source named "fixture.c" with: """ typedef int foo, *bar; typedef int foo, *bar; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0425 | 1 | 19 | | W0425 | 2 | 19 | | W0586 | 1 | 13 | | W0586 | 2 | 13 | | W0586 | 1 | 19 | | W0586 | 2 | 19 | Scenario: repeated multiple typedefs in a typedef declaration Given a target source named "fixture.c" with: """ typedef int foo, *bar, **baz; typedef int foo, *bar, **baz; """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0425 | 1 | 19 | | W0425 | 1 | 26 | | W0425 | 2 | 19 | | W0425 | 2 | 26 | | W0586 | 1 | 13 | | W0586 | 2 | 13 | | W0586 | 1 | 19 | | W0586 | 2 | 19 | | W0586 | 1 | 26 | | W0586 | 2 | 26 | Scenario: concatenating hexadecimal prefix and number in function-form macro Given a target source named "fixture.c" with: """ #define HEX(num) 0x##num static void foo(void) { int i = HEX(123); /* should be replaced into "0x123" not "0 x123" */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W1076 | 3 | 13 | | W0076 | 5 | 13 | | W0100 | 5 | 9 | | W0629 | 3 | 13 | | W0628 | 3 | 13 | Scenario: concatenating hexadecimal prefix and number in function-form macro Given a target source named "fixture.c" with: """ #define HEX(num) 0x##num static void foo(void) { int i = HEX(AB123CD); /* should be replaced into "0xAB123CD" */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W1076 | 3 | 13 | | W0076 | 5 | 13 | | W0100 | 5 | 9 | | W0629 | 3 | 13 | | W0628 | 3 | 13 | Scenario: concatenating hexadecimal prefix and number in function-form macro Given a target source named "fixture.c" with: """ #define HEX(num) 0x##num static void foo(void) { int i = HEX(ABCD); /* should be replaced into "0xABCD" */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W1076 | 3 | 13 | | W0076 | 5 | 13 | | W0100 | 5 | 9 | | W0629 | 3 | 13 | | W0628 | 3 | 13 | Scenario: concatenating hexadecimal prefix and number in function-form macro Given a target source named "fixture.c" with: """ #define HEX(num) 0##num static void foo(void) { int i = HEX(x123); /* should be replaced into "0x123" not "0 x123" */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W1076 | 3 | 13 | | W0076 | 5 | 13 | | W0100 | 5 | 9 | | W0629 | 3 | 13 | | W0628 | 3 | 13 | Scenario: concatenating hexadecimal prefix and number in function-form macro Given a target source named "fixture.c" with: """ #define HEX(num) 0x0##num static void foo(void) { int i = HEX(123); /* should be replaced into "0x0123" */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0442 | 1 | 1 | | W1076 | 3 | 13 | | W0076 | 5 | 13 | | W0100 | 5 | 9 | | W0629 | 3 | 13 | | W0628 | 3 | 13 | Scenario: ill-formed standalone hexadecimal prefix Given a target source named "fixture.c" with: """ static void foo(void) { int i = 0x; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0100 | 3 | 9 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0202.feature0000644000004100000410000000765712340630463021100 0ustar www-datawww-dataFeature: W0202 W0202 detects that `long' value is converted into `long double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { long double b = a; /* W0202 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0202 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(long a) { long double b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { long double b; b = a; /* W0202 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0202 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(long a) { long double b; b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(long a) { bar(a); /* W0202 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0202 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(long a) { bar((long double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(long a) { return a; /* W0202 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0202 | 3 | 12 | | W0338 | 3 | 5 | | W0104 | 1 | 22 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(long a) { return (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0104 | 1 | 22 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0573.feature0000644000004100000410000000514012340630463021074 0ustar www-datawww-dataFeature: W0573 W0573 detects that `-' is included at `[]' scanset. Scenario: a `-' in scanset Given a target source named "fixture.c" with: """ #include void foo(void) { char c; int i = scanf("%[-]", &c); /* W0573 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0459 | 6 | 27 | | C1000 | | | | C1003 | 5 | 10 | | W0573 | 6 | 19 | | W0100 | 5 | 10 | | W0100 | 6 | 9 | | W0947 | 6 | 19 | | W0628 | 3 | 6 | Scenario: a `-' in scanset with other character Given a target source named "fixture.c" with: """ #include void foo(void) { char c; int i = scanf("%[a-z]", &c); /* W0573 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0459 | 6 | 29 | | C1000 | | | | C1003 | 5 | 10 | | W0573 | 6 | 19 | | W0100 | 5 | 10 | | W0100 | 6 | 9 | | W0947 | 6 | 19 | | W0628 | 3 | 6 | Scenario: a `-' in scanset with other character Given a target source named "fixture.c" with: """ #include void foo(void) { char c; int i = scanf("%[a,b]", &c); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0459 | 6 | 29 | | C1000 | | | | C1003 | 5 | 10 | | W0100 | 5 | 10 | | W0100 | 6 | 9 | | W0947 | 6 | 19 | | W0628 | 3 | 6 | Scenario: proper scanf Given a target source named "fixture.c" with: """ #include void foo(void) { char c; int i = scanf("%c", &c); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 3 | 6 | | W0459 | 6 | 25 | | C1000 | | | | C1003 | 5 | 10 | | W0100 | 5 | 10 | | W0100 | 6 | 9 | | W0947 | 6 | 19 | | W0628 | 3 | 6 | adlint-3.2.14/features/code_check/W0644.feature0000644000004100000410000003565412340630463021110 0ustar www-datawww-dataFeature: W0644 W0644 detects that an expression refers the value of a `void' expression. Scenario: casting value of the `void' function Given a target source named "fixture.c" with: """ extern void foo(void); int bar(void) { return (int) foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 12 | | W0628 | 3 | 5 | Scenario: referring value of the `void' function in array-subscript-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(int a[]) { return a[foo()]; /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 13 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: referring value of the `void' function in function-call-expression Given a target source named "fixture.c" with: """ extern void foo(void); extern void bar(int); void baz(void) { bar(foo()); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0118 | 2 | 13 | | W0117 | 4 | 6 | | W0644 | 6 | 12 | | W1026 | 6 | 12 | | W0628 | 4 | 6 | Scenario: referring value of the `void' function in multiplicative-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(int i) { return i * foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 14 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: referring two values of the `void' function in multiplicative-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(void) { return foo() / foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 18 | | W0628 | 3 | 5 | Scenario: referring value of the `void' function in additive-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(int i) { return i + foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 14 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: referring two values of the `void' function in additive-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(void) { return foo() + foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 18 | | W0628 | 3 | 5 | Scenario: referring value of the `void' function in shift-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(int i) { return i << foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 14 | | W0570 | 5 | 14 | | C1000 | | | | C1006 | 3 | 13 | | W0572 | 5 | 14 | | W0794 | 5 | 14 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: referring two values of the `void' function in shift-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(void) { return foo() << foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 18 | | W0628 | 3 | 5 | Scenario: referring value of the `void' function in relational-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(int i) { return i < foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 14 | | W0610 | 5 | 14 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: referring two values of the `void' function in relational-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(void) { return foo() > foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 18 | | W0628 | 3 | 5 | Scenario: referring value of the `void' function in equality-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(int i) { return i == foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 14 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: referring two values of the `void' function in relational-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(void) { return foo() != foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 18 | | W0628 | 3 | 5 | Scenario: referring value of the `void' function in and-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(int i) { return i & foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 14 | | W0572 | 5 | 14 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: referring two values of the `void' function in and-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(void) { return foo() & foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 18 | | W0628 | 3 | 5 | Scenario: referring value of the `void' function in exclusive-or-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(int i) { return i ^ foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 14 | | W0572 | 5 | 14 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: referring two values of the `void' function in exclusive-or-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(void) { return foo() ^ foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 18 | | W0628 | 3 | 5 | Scenario: referring value of the `void' function in inclusive-or-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(int i) { return i | foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 14 | | W0572 | 5 | 14 | | W0104 | 3 | 13 | | W0628 | 3 | 5 | Scenario: referring two values of the `void' function in inclusive-or-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(void) { return foo() | foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 18 | | W0628 | 3 | 5 | Scenario: referring value of the `void' function in logical-and-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(int i) { if (i && foo()) { /* W0644 */ return 0; } return i && foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 11 | | W0035 | 5 | 11 | | W0644 | 9 | 14 | | W0035 | 9 | 14 | | W0104 | 3 | 13 | | W1071 | 3 | 5 | | W0488 | 5 | 9 | | W0508 | 5 | 11 | | W0488 | 9 | 12 | | W0508 | 9 | 14 | | W0628 | 3 | 5 | Scenario: referring two values of the `void' function in exclusive-or-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(void) { if (foo() && foo()) { /* W0644 */ return 0; } return foo() && foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 15 | | W0035 | 5 | 15 | | W0644 | 9 | 18 | | W0035 | 9 | 18 | | W1071 | 3 | 5 | | W0488 | 5 | 9 | | W0508 | 5 | 15 | | W0488 | 9 | 12 | | W0508 | 9 | 18 | | W0628 | 3 | 5 | Scenario: referring value of the `void' function in logical-or-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(int i) { if (i || foo()) { /* W0644 */ return 0; } return i || foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 11 | | W0035 | 5 | 11 | | W0644 | 9 | 14 | | W0035 | 9 | 14 | | W0104 | 3 | 13 | | W1071 | 3 | 5 | | W0488 | 5 | 9 | | W0508 | 5 | 11 | | W0488 | 9 | 12 | | W0508 | 9 | 14 | | W0628 | 3 | 5 | Scenario: referring two values of the `void' function in exclusive-or-expression Given a target source named "fixture.c" with: """ extern void foo(void); int bar(void) { if (foo() || foo()) { /* W0644 */ return 0; } return foo() || foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 5 | | W0644 | 5 | 15 | | W0035 | 5 | 15 | | W0644 | 9 | 18 | | W0035 | 9 | 18 | | W1071 | 3 | 5 | | W0488 | 5 | 9 | | W0508 | 5 | 15 | | W0488 | 9 | 12 | | W0508 | 9 | 18 | | W0628 | 3 | 5 | Scenario: referring value of the `void' function in assignment-expression Given a target source named "fixture.c" with: """ extern void foo(void); void bar(int i) { i = foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0644 | 5 | 7 | | W0628 | 3 | 6 | Scenario: referring value of the `void' function in compound-assignment-expression Given a target source named "fixture.c" with: """ extern void foo(void); void bar(int i) { i += foo(); /* W0644 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0644 | 5 | 7 | | W0628 | 3 | 6 | adlint-3.2.14/features/code_check/W0189.feature0000644000004100000410000000756712340630463021116 0ustar www-datawww-dataFeature: W0189 W0189 detects that `short' value is converted into `double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { double b = a; /* W0189 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0189 | 3 | 16 | | W0100 | 3 | 12 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(short a) { double b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { double b; b = a; /* W0189 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0189 | 4 | 9 | | W0100 | 3 | 12 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(short a) { double b; b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 16 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(short a) { bar(a); /* W0189 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0189 | 5 | 9 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(short a) { bar((double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 16 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ double foo(short a) { return a; /* W0189 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0189 | 3 | 12 | | W0325 | 3 | 5 | | W0104 | 1 | 18 | | W0628 | 1 | 8 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ double foo(short a) { return (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0104 | 1 | 18 | | W0628 | 1 | 8 | adlint-3.2.14/features/code_check/W0067.feature0000644000004100000410000000374612340630463021104 0ustar www-datawww-dataFeature: W0067 W0067 detects that the nested member of a composite data type is accessed directly without parent member names. Scenario: no direct access Given a target source named "fixture.c" with: """ static int foo(void) { struct { int i; struct { int j; } baz; } bar = { 0, { 0 } }; return bar.i + bar.baz.j; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0100 | 8 | 7 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: direct access to nested member included in a named member Given a target source named "fixture.c" with: """ static int foo(void) { struct { int i; struct { int j; } baz; } bar = { 0, { 0 } }; return bar.i + bar.j; /* W0067 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0067 | 10 | 23 | | W0100 | 8 | 7 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: direct access to nested member included in an unnamed member Given a target source named "fixture.c" with: """ static int foo(void) { struct { int i; struct { int j; }; } bar = { 0, { 0 } }; return bar.i + bar.j; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0100 | 8 | 7 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0153.feature0000644000004100000410000001114112340630463021064 0ustar www-datawww-dataFeature: W0153 W0153 detects that `unsigned long long' value is converted into `short' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { short b = a; /* W0153 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0153 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { short b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 3 | 15 | | C1000 | | | | C1006 | 1 | 29 | | W0100 | 3 | 11 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { short b; b = a; /* W0153 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0153 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned long long a) { short b; b = (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W1049 | 4 | 9 | | C1000 | | | | C1006 | 1 | 29 | | W0100 | 3 | 11 | | W0104 | 1 | 29 | | W0834 | 1 | 10 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(unsigned long long a) { bar(a); /* W0153 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0153 | 5 | 9 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(short); void foo(unsigned long long a) { bar((short) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W1049 | 5 | 9 | | C1000 | | | | C1006 | 3 | 29 | | W0104 | 3 | 29 | | W0834 | 3 | 10 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ short foo(unsigned long long a) { return a; /* W0153 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0153 | 3 | 12 | | W0289 | 3 | 5 | | W0104 | 1 | 30 | | W0834 | 1 | 11 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ short foo(unsigned long long a) { return (short) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W1049 | 3 | 12 | | C1000 | | | | C1006 | 1 | 30 | | W0104 | 1 | 30 | | W0834 | 1 | 11 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0192.feature0000644000004100000410000000771012340630463021076 0ustar www-datawww-dataFeature: W0192 W0192 detects that `unsigned short' value is converted into `double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { double b = a; /* W0192 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0192 | 3 | 16 | | W0100 | 3 | 12 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned short a) { double b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { double b; b = a; /* W0192 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0192 | 4 | 9 | | W0100 | 3 | 12 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned short a) { double b; b = (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 12 | | W0104 | 1 | 25 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(unsigned short a) { bar(a); /* W0192 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0192 | 5 | 9 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(double); void foo(unsigned short a) { bar((double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 25 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ double foo(unsigned short a) { return a; /* W0192 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0192 | 3 | 12 | | W0328 | 3 | 5 | | W0104 | 1 | 27 | | W0628 | 1 | 8 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ double foo(unsigned short a) { return (double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 8 | | W0104 | 1 | 27 | | W0628 | 1 | 8 | adlint-3.2.14/features/code_check/W0197.feature0000644000004100000410000000765112340630463021107 0ustar www-datawww-dataFeature: W0197 W0197 detects that `unsigned int' value is converted into `float' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { float b = a; /* W0197 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0197 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned int a) { float b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { float b; b = a; /* W0197 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0197 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned int a) { float b; b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 23 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(unsigned int a) { bar(a); /* W0197 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0197 | 5 | 9 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(unsigned int a) { bar((float) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 23 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ float foo(unsigned int a) { return a; /* W0197 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0197 | 3 | 12 | | W0333 | 3 | 5 | | W0104 | 1 | 24 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ float foo(unsigned int a) { return (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 24 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0714.feature0000644000004100000410000000701612340630463021075 0ustar www-datawww-dataFeature: W0714 W0714 detects that operands of both sides of and-expression is `effectively boolean'. Scenario: relational expressions Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a > b) & (c > d); /* W0714 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0572 | 3 | 20 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0714 | 3 | 20 | | W0716 | 3 | 20 | | W0628 | 1 | 12 | Scenario: equality expressions Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a == b) & (c != d); /* W0714 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0572 | 3 | 21 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0714 | 3 | 21 | | W0716 | 3 | 21 | | W0628 | 1 | 12 | Scenario: logical expressions Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a && b) & (c || d); /* W0714 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0572 | 3 | 21 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0714 | 3 | 21 | | W0716 | 3 | 21 | | W0628 | 1 | 12 | Scenario: shift expressions Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a << b) & (c ^ d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0570 | 3 | 15 | | C1000 | | | | C1006 | 1 | 20 | | W0572 | 3 | 15 | | W0794 | 3 | 15 | | W0572 | 3 | 26 | | W0572 | 3 | 21 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: arithmetic expressions Given a target source named "fixture.c" with: """ static int foo(int a, int b, int c, int d) { return (a + b) & (c - d); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 15 | | W0723 | 3 | 25 | | W0572 | 3 | 20 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0104 | 1 | 34 | | W0104 | 1 | 41 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W1060.feature0000644000004100000410000000441412340630463021067 0ustar www-datawww-dataFeature: W1060 W1060 detects that a function of non-enum return type is returning a value of enum typed expression. Scenario: returning a value of the enum typed constant expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; static int bar(void) { return RED + 1; /* W1060 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W9003 | 5 | 18 | | W9003 | 5 | 16 | | W1060 | 5 | 16 | | W0629 | 3 | 12 | | W0628 | 3 | 12 | Scenario: returning a value of the enum typed non-constant expression Given a target source named "fixture.c" with: """ enum Color { RED, BLUE, GREEN }; static int bar(const enum Color c) { return c + 1; /* W1060 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 3 | 12 | | W9003 | 5 | 16 | | W0723 | 5 | 14 | | W9003 | 5 | 14 | | W1060 | 5 | 14 | | W0629 | 3 | 12 | | W0628 | 3 | 12 | Scenario: returning a value of consistently typed constant expression Given a target source named "fixture.c" with: """ static int foo(void) { return 1 + 1; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: returning a value of inconsistently typed constant expression Given a target source named "fixture.c" with: """ static int foo(void) { return 1.0 * .1; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0226 | 3 | 16 | | W0362 | 3 | 5 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0642.feature0000644000004100000410000000361612340630463021077 0ustar www-datawww-dataFeature: W0642 W0642 detects that an expression trys to derive address of the array declared as `register'. Scenario: register array passed as function parameter Given a target source named "fixture.c" with: """ extern void foo(char *); static void bar(void) { register char a[3]; foo(a); /* W0642 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W1076 | 3 | 13 | | W0642 | 6 | 9 | | W0100 | 5 | 19 | | W0629 | 3 | 13 | | W0950 | 5 | 21 | | W0628 | 3 | 13 | Scenario: register array designated in initializer Given a target source named "fixture.c" with: """ static void foo(void) { register char a[3]; char *p = a; /* W0642 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0642 | 4 | 15 | | W0100 | 3 | 19 | | W0100 | 4 | 11 | | W0629 | 1 | 13 | | W0950 | 3 | 21 | | W0628 | 1 | 13 | Scenario: register array designated in assignment Given a target source named "fixture.c" with: """ static void foo(void) { register char a[3]; char *p; p = a; /* W0642 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0642 | 5 | 9 | | W0100 | 3 | 19 | | W0100 | 4 | 11 | | W0629 | 1 | 13 | | W0950 | 3 | 21 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W1067.feature0000644000004100000410000000631212340630463021075 0ustar www-datawww-dataFeature: W1067 W1067 detects that a value of the `float' typed compound expression is explicitly converted into a `long double' value. Scenario: explicit conversion from `float' to `double' when the source value is derived from `+', `-', `*' or `/' expressions Given a target source named "fixture.c" with: """ static void func(float a, float b) { long double c; c = (long double) (a + b); /* W1067 */ c = (long double) (a - b); /* W1067 */ c = (long double) (a * b); /* W1067 */ c = (long double) (a / b); /* W1067 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 4 | 26 | | W1067 | 4 | 26 | | W0723 | 5 | 26 | | W1067 | 5 | 26 | | W0723 | 6 | 26 | | W1067 | 6 | 26 | | W0093 | 7 | 26 | | C1000 | | | | C1006 | 1 | 33 | | W1067 | 7 | 26 | | W0104 | 1 | 24 | | W0104 | 1 | 33 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: explicit conversion from `float' to `double' when the source value is not derived from `+', `-', `*' or `/' expressions Given a target source named "fixture.c" with: """ static void func(float a, float b) { long double c; c = (long double) (a % b); /* OK */ c = (long double) (a < b); /* OK */ c = (long double) (a << b); /* OK */ c = (long double) (a ^ b); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0093 | 4 | 26 | | C1000 | | | | C1006 | 1 | 33 | | W0570 | 6 | 26 | | C1000 | | | | C1006 | 1 | 24 | | W0572 | 6 | 26 | | W0794 | 6 | 26 | | W0572 | 7 | 26 | | W0104 | 1 | 24 | | W0104 | 1 | 33 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | Scenario: implicit conversion from `float' to `long double' Given a target source named "fixture.c" with: """ static void func(float a, float b) { long double c; c = a + b; /* W0778 */ c = a - b; /* W0778 */ c = a * b; /* W0778 */ c = a / b; /* W0778 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 13 | | W0723 | 4 | 11 | | W0778 | 4 | 11 | | W0723 | 5 | 11 | | W0778 | 5 | 11 | | W0723 | 6 | 11 | | W0778 | 6 | 11 | | W0093 | 7 | 11 | | C1000 | | | | C1006 | 1 | 33 | | W0778 | 7 | 11 | | W0104 | 1 | 24 | | W0104 | 1 | 33 | | W0629 | 1 | 13 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0182.feature0000644000004100000410000000766212340630463021103 0ustar www-datawww-dataFeature: W0182 W0182 detects that `unsigned char' value is converted into `float' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { float b = a; /* W0182 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0182 | 3 | 15 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(unsigned char a) { float b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { float b; b = a; /* W0182 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0182 | 4 | 9 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(unsigned char a) { float b; b = (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 11 | | W0104 | 1 | 24 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(unsigned char a) { bar(a); /* W0182 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0182 | 5 | 9 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(float); void foo(unsigned char a) { bar((float) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 24 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ float foo(unsigned char a) { return a; /* W0182 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0182 | 3 | 12 | | W0318 | 3 | 5 | | W0104 | 1 | 25 | | W0628 | 1 | 7 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ float foo(unsigned char a) { return (float) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 7 | | W0104 | 1 | 25 | | W0628 | 1 | 7 | adlint-3.2.14/features/code_check/W0495.feature0000644000004100000410000000336012340630463021101 0ustar www-datawww-dataFeature: W0495 W0495 detects that different arithmetic operators appear with modulo operator in an expression without appropriate grouping. Scenario: without grouping Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return a + b % 5; /* W0495 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 14 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0629 | 1 | 12 | | W0495 | 3 | 12 | | W0628 | 1 | 12 | Scenario: with appropriate grouping Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return (a + b) % 5; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 15 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: entirely grouped Given a target source named "fixture.c" with: """ static int foo(int a, int b) { return (a + b % 5); /* W0495 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0723 | 3 | 15 | | W0104 | 1 | 20 | | W0104 | 1 | 27 | | W0629 | 1 | 12 | | W0495 | 3 | 12 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_check/W0129.feature0000644000004100000410000000765712340630463021110 0ustar www-datawww-dataFeature: W0129 W0129 detects that `char' value is converted into `long double' value. Scenario: implicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { long double b = a; /* W0129 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0129 | 3 | 21 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in initialization Given a target source named "fixture.c" with: """ void foo(char a) { long double b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { long double b; b = a; /* W0129 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0129 | 4 | 9 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: explicit conversion in assignment Given a target source named "fixture.c" with: """ void foo(char a) { long double b; b = (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 6 | | W0100 | 3 | 17 | | W0104 | 1 | 15 | | W0628 | 1 | 6 | Scenario: implicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(char a) { bar(a); /* W0129 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0129 | 5 | 9 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: explicit conversion in function call Given a target source named "fixture.c" with: """ extern void bar(long double); void foo(char a) { bar((long double) a); /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 13 | | W0117 | 3 | 6 | | W0104 | 3 | 15 | | W0628 | 3 | 6 | Scenario: implicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(char a) { return a; /* W0129 */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0129 | 3 | 12 | | W0265 | 3 | 5 | | W0104 | 1 | 22 | | W0628 | 1 | 13 | Scenario: explicit conversion in function return Given a target source named "fixture.c" with: """ long double foo(char a) { return (long double) a; /* OK */ } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 13 | | W0104 | 1 | 22 | | W0628 | 1 | 13 | adlint-3.2.14/features/code_check/W0002.feature0000644000004100000410000000353112340630463021061 0ustar www-datawww-dataFeature: W0002 W0002 detects that an old style function-definition is found. Scenario: all arguments are type specified Given a target source named "fixture.c" with: """ int func(arg1, arg2) /* W0002 */ int arg1; char arg2; { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0031 | 2 | 5 | | W0031 | 3 | 6 | | W0104 | 2 | 5 | | W0104 | 3 | 6 | | W0002 | 1 | 5 | | W0628 | 1 | 5 | Scenario: no arguments are type specified Given a target source named "fixture.c" with: """ int func(arg1, arg2) /* W0002 */ { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0031 | 1 | 10 | | W0031 | 1 | 16 | | W0104 | 1 | 10 | | W0104 | 1 | 16 | | W0002 | 1 | 5 | | W0458 | 1 | 10 | | W0458 | 1 | 16 | | W0628 | 1 | 5 | Scenario: arguments are partly type specified Given a target source named "fixture.c" with: """ int func(arg1, arg2) /* W0002 */ char arg2; { return 0; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0117 | 1 | 5 | | W0031 | 1 | 10 | | W0031 | 2 | 6 | | W0104 | 1 | 10 | | W0104 | 2 | 6 | | W0002 | 1 | 5 | | W0458 | 1 | 10 | | W0628 | 1 | 5 | adlint-3.2.14/features/code_check/W0007.feature0000644000004100000410000001461112340630463021067 0ustar www-datawww-dataFeature: W0007 W0007 detects that the previous case or default clause does not have a jump-statement at the last statement. Scenario: no jump-statement in the previous case clause Given a target source named "fixture.c" with: """ static int foo(const int i) { int j; switch (i) { case 1: j = 1; break; case 2: j = 2; case 3: /* W0007 */ j = 3; break; default: j = 0; break; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0629 | 1 | 12 | | W0007 | 11 | 5 | | W0628 | 1 | 12 | Scenario: a break-statement at the middle of the previous case clause Given a target source named "fixture.c" with: """ extern int rand(void); static int foo(const int i) { int j; switch (i) { case 1: j = 1; break; case 2: if (rand() == 0) { j = -1; break; } j = 2; case 3: /* W0007 */ j = 3; break; default: j = 0; break; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1076 | 3 | 12 | | W0629 | 3 | 12 | | W0007 | 17 | 5 | | W0532 | 14 | 13 | | W0628 | 3 | 12 | Scenario: a break-statement at the bottom of the previous case clause Given a target source named "fixture.c" with: """ static int foo(const int i) { int j; switch (i) { case 1: j = 1; break; case 2: j = 2; break; case 3: /* OK */ j = 3; break; default: j = 0; break; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: a return-statement at the bottom of the previous case clause Given a target source named "fixture.c" with: """ static int foo(const int i) { int j; switch (i) { case 1: j = 1; break; case 2: j = 2; return j; case 3: /* OK */ j = 3; break; default: j = 0; break; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: no jump-statement in the previous default clause Given a target source named "fixture.c" with: """ static int foo(const int i) { int j; switch (i) { case 1: j = 1; break; default: j = 2; case 3: /* W0007 */ j = 3; break; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0629 | 1 | 12 | | W0007 | 11 | 5 | | W0538 | 9 | 5 | | W0628 | 1 | 12 | Scenario: a break-statement at the middle of the previous default clause Given a target source named "fixture.c" with: """ extern int rand(void); static int foo(const int i) { int j; switch (i) { case 1: j = 1; break; default: if (rand() == 0) { j = -1; break; } j = 2; case 3: /* W0007 */ j = 3; break; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W0118 | 1 | 12 | | W1076 | 3 | 12 | | W0629 | 3 | 12 | | W0007 | 17 | 5 | | W0532 | 14 | 13 | | W0538 | 11 | 5 | | W0628 | 3 | 12 | Scenario: a break-statement at the bottom of the previous default clause Given a target source named "fixture.c" with: """ static int foo(const int i) { int j; switch (i) { case 1: j = 1; break; case 2: j = 2; break; case 3: /* OK */ j = 3; break; default: j = 0; break; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W0629 | 1 | 12 | | W0628 | 1 | 12 | Scenario: a return-statement at the bottom of the previous default clause Given a target source named "fixture.c" with: """ static int foo(const int i) { int j; switch (i) { case 1: j = 1; break; default: j = 2; return j; case 3: /* OK */ j = 3; break; } return j; } """ When I successfully run `adlint fixture.c` on noarch Then the output should exactly match with: | mesg | line | column | | W1076 | 1 | 12 | | W1071 | 1 | 12 | | W0629 | 1 | 12 | | W0538 | 9 | 5 | | W0628 | 1 | 12 | adlint-3.2.14/features/code_extraction/0000755000004100000410000000000012340630463020075 5ustar www-datawww-dataadlint-3.2.14/features/code_extraction/TODO0000644000004100000410000000011012340630463020555 0ustar www-datawww-dataMust write functional specifications about the code extraction feature. adlint-3.2.14/features/support/0000755000004100000410000000000012340630463016437 5ustar www-datawww-dataadlint-3.2.14/features/support/env.rb0000644000004100000410000000760012340630463017557 0ustar www-datawww-dataNOARCH_TRAITS = <> stream xœ¼½i“eËuöýüŠÒ+úIF1çÁ¦ä % ²‰2 X’i 5JÑ%’  É´»s­µ3óܪ:·oõƒˆxèÌ:CÞ<™;÷°öÚ}üoO}ÄòrhO)äöœ}yúAH=<ýúOÿúé?þ ÿûõ¯ž~ïgîéWsçê_î ÿû“ŽþËhü³qó<þìϟܳ{úùáÝÓ¿xò%µçPÊS é©»çüôƒñÄq÷ŸÚÝãMøãçgç\H‰}»åK.ÏÎçòSuá9:W›úñËñ{¿üûÁ¸ôéÇ¿<þìÓÿúŸþñw!ú£ïBøô/ñ¯ã_üÃ?ù.8üËë¯òÝŸÿøŸôã=þPSä(ýxÁ“á£ã 5û9Nj»(õo1¼…Aq6 ØKœJþú#mU¾Y{n,¾5(÷Á•çÆÒ{`PÅ¿Y;y»ùv’Juk<%}p’JmŒçféŸÅË?z;?>Ö5žüÁñŒ1äGÆÃ%ü“5”?~;ŠàEFÑ>,{ÇímŠˆ{ãà7á×ù!Ã)Ùsu!qc«‘_ìƒû,6üš¯lK„ÙÇò¬o¥iŒ^Û,ŒÃ­}pEÇÖ6 c%~}¦ÞŠ./IûV–†Ö$Ly6}t1…Ö—0½{0ñíÿÔNüÞÙǶ]gdùðr ½ä‡ŽHÎ GòÇÉ»Óâcwß>->¹òÐ`özï”+áû ¡º‡¾ÌìtÈZ»?|;ŽÚOã(<#|scZ?\ƒ±“â͈Z-{DíÃ#jé¡ýäV-ypl½yñüjýƒcë­=46êœûÓQX¿³¹]î{SÕo*WêCëø¯ýÄIûClªI÷x# !R1&ˆÂïó˜†úì¾. ßW,ߦÇ5˜öa½Åw¬g2­”o°†Òvzú¯¤^ŸßJŠP¶+úÃ’=´u´];6?ýÝ×Ú{;ÒJW~‚_ó]âµüwÇ/.ã¿o'¼†ï3á­¯ývoÂõú· -¸øÍó=Dß×=ÜŸþÏO¯ç;•þÍïD°íw~÷úvú7\üê–úô÷ÞÈl›øÛ¾lÞÁ§»_öï!R÷öÃzG=ïÛ$¦w%= 2ÿþÛdÛ—aÕÛ'_ʽ¨êß‹9ÿ¾=M}ù3^b~Hxéõïì¥fVÔ·È‘ÐêúÞ×räÓÿøzÊ[Êßü™[u|å¼ùÊ!†ïñ•ǾX ûÞWþŽÆ¼ó‘[û¹ºþÐGþÁûsá¤oùéÍå‡Ö7ßýßÙÒ¦,~‹ûÄ»}8^;.>=¿œãt”à ׂ¢OË[r€òü݆›ÿ}ý»³ß ºs_ÁòkÉý{o$w-ßG ªÍ?´Ä~ï;ïÞ#µ›ò׿áLn~)µ^þäÿéÍg.Íö´ó^Ã"_óÜû¥ðúŸß¼Õå°âÆ÷%ÔüõèħßýÒéþ áãß¶—ýiûõ—ý}ž¿ÿÎ ¿²×R}haÍ׿¯òEoþ£ošt¿íš{!¡ß¿:#k·óʵo±ªNö…+We¼÷-g{ê›l¹î²åþÁÕoîæÛý– =>ƒ§Åë_Ü›û/=98î|åxñ‹‡I߼Ǽ‹ñ‘M¦—¿=&ƒoßGïöý1a¾þ®*í{ñêÖ2¿#Äÿ—7ß¼|ëyŒ8?`ZýÙ[?~» éÆýúKÿüߌ¬›ü-Þ;èÌó¥—Þ»OÿîÍKCþ>æE¨ ˜vwaý»¡Å÷6U(q‡9?®v·Öá2Š÷éÿz»¨ÌrÎí›Ôí¥ìç|©uþí›—Æð}”ü˜óŠüí˜êôÞî=~³Ò’_3}OéÕËÿöP`Ìßã;ÇS0îÎwþ¿ßze¾Ý_ΣËWþ?oÔ¿!Ý[ícºKxz95‡Vèr‡ßÿ9%tP󍿰Ïce Mª66<á_·îŽñèϧfõÏ=ùÓícUïG7wŒ«÷{ñÇ5*»õfÔŸw.¬5^n„?ûôWðæüÑÿ€ÿ¼ðxùÙw>£3|úoø3±Ù¿@ßÅ¿ö-£¯|ú›ï|:ø_<Â}úKüù?½Ù Ï5súžCâô[­8ü®˜ÆÏ‡®ÓŸcÇ5CØâ1Ç3Ó4~Ç8.Çìãy˜£'?·Ç`}ªî¾aL7nãÏÝQ0&“o*ŠCP=Äcõø6¾áçÛæû2¾ÈéÂ<äMwáxÞrLñSóùÙû:í_X‘nÜàýPÆ}ª¾Œáqçî©>áìͱCpT|ïã Æ ¦èæ[ïí ƒ'Tïžklc&™¶áoĪû¢‹ðÏê"/úòôÇ!A·òXå9Å4î…C¶†Š.ÁýXŒC}Åg)ÏÍeìðóWðã%½V|D€Æ7õæçUç‡Ü¾ó·Ÿšï5Ìq=]颭ãÆàs@lgÌs|Jãø„Ù îÙÅ|1G)ùçÒ;.‹Ï~Øñ/LÀÈÑÓ‘2îìcFŸM]ŭMÒX\c™j©Ö‚›Cë‹ó6æ"u$ÙŒ_ÚpMˆ¼5 3¥,±¡»ç:$ÆñîÈÂPtãøz¹aŒ™ÇÇÃô>û±_¿@¢åqÑøL5ÚÀNi¼lì—“$éí,µ†\¬c•ìŽaÊ Ýéj`Øsn]çnîÔõæØíUs]iŸ’žÇÇÚ§¸çfNã›ö†t"‡½ A€OZÒÍÞN˜F.ªþÜJ}Jn¯©^únsI[ïü;ì«ÒP4“‹ˆgè`ÀW éáÇ¡‹™ìì¿ØoÒ×MÃ.Ò÷;&`-é‚?|²€s××fC¼½âSÑÀe„¸|µ:5°ÇÜp1ŒK‡?Ö8OÊØ=e›ˆïjv]g'Ž¥Õæ¤œ[ïü{hdœ•Ùô5rû‰GöUë}u¸ÂMynÎÆqÓêc:ö…ðY6Êzɱ)}!åÅLüà˜Îôtd7Ê×XÔ}¬õ„I‚åkØ$Q>ÁRå¹{Ó0†æ1þˆ¼ñm6drRëB0 ƒ¥/ÆÜ¾/ aqàÛÕŽ­–Æ1ÓðâÑ3>Ôüš­ó+I…å½›@‰á€ˆ;bô8¨üÝñÏØn˜7ýÙyž§ÛWOn¼aµK•1APÃ|Á¡æçóûùç9¼u÷iø+-l0å=Ä[å ¨jÁ×uZÝTÄð£°ÉÊøW“‚5d]¬Ø*å$ÙZ>õØ1cíÃΖ›?ï–sþt1fhlã1oÈ›Ävã=§’ŸŽ±íüs A]Øï¯*^‡qtêÀÀ热¨;Çœ}±«<Ÿ&xЉõ€Ãb!t±»ÛãÔKq @ñ ^}¿Õr»?柡„×|º}÷tÇv»KÅ´GHðû &œ×ûÑ>×n¿ù®®qR.-þ.ªå3V—Î } …”K¶«õ4þóó¥¨rµý«j,ÿEõ0å–ë’÷üæ…X¹õ¹%Ú˜+,Úxî¡^GU~è~8ÉÆÒ‚.DüüøLûàýu sâ…CðÇÂCvèS)ÛÍ®C áuØücZ° l¡(C¦b¡œÚE_zHB˜#èãêfH³ñù©]jŒ­¡®: ó׳YñùVC_wÝ×Úé‘Mº Þw¨ã<@Ý{;äGWFßþ»  ›¿¼ýè¿4[ÆIMÛ¥ YßOØ.}oPÿ0uÔ:_ž€j,Pó‘䇪 OqçîµWº%Õt‡ãQŠ¡ O ÊHŽ<¾ûØ8Ã>èãIg; Èç‚q¨ùý™,{i}ˆ(67Ì Z µWêý%]y2,`/xêδ*Aܘj•ÁPyþÁ2¤-¹>¬™q&>ÞIÁŒxl3Ÿ‡Èèò€¥‘¨’¿àØFä(,œ–.F•‘iÞñh‡“sšÇWš“4úÂg…N}X'£Ö$4—ðªq 4Ú€²¬¥nvž?Çè˹îädgç¡“•ÌÛ Ký ñ­a¦WmÝa·Àþ¿0Ï7coe~hßL“¢9Ti¡yÇÅÓKG©]ÃdÂÒŽ6+ûñ´šN°Ÿ‘]’$C[sS‡žÔ1épQc³ùÚ¦«¹@`øsn?Î]*‚ÔdaZŽKŠŒ'„É–ßrhÀ`þŒ€RÖyŘÓ¬4Lì Ípè^‚Ìðü ØÐÄ ´ḭU ÇàÞ âm”2&—+i6.+aÌ\؄ҌèœäôlàpWÄ®JÿÄüži¬†T$fµã½ÃÉÏ:^̉_•[ÝCNbð¢â”€(¾T;Æ…ccù$-w15FH¨»}Q6Vû0&U ‡t D~ÉqüùLó˸=2ŒTè—gˆ›FTÓ>€à~h°b´ŠÆ¢‡q3V”¥Ç®è1°–ä*ãvÑÁÀq éª3¦¨‘3Æ…åIc:LVO/ 7ü¸bìŠ1Ü@Z Ží‹ƒÃ°Øeø]ü ޲µCGŒÁßY§˜vëâ[ÚBÆÍÝŽÏ1]ž3ØÇˆ#;ÆŽƒÿ¨§! Ä̘>œOChA²ô±çeõ`XÎN³H  !×;qÏ;z™+†?„@‡¯ ¾—f–‘–ýØ(ãÆWËY iL?ð´e¬Õ¡äjòÑÑB»Zö¸,y°ÊÓű†y''EWñé™WÍe•¨„pYÁ{ûÂÆQ.šë­á‚RŠߺ;OSs nLLS”ûªÎ$ï4(ç«cl>œnçæ{Æz¾ÒŽ#¢M¤²äeÌêìÐ9xnÙ¿skýtYS(Ž¿¦J}k(‡Z5΂÷ò{Œ·CÕ+L¾½{ºm\f™>£hŒÕÕ‰Æs*&ŽóETìŸ4þ$/£™Îøá£+òê¹ÑÆâ”UáyBc;ÀH ^1Ž•„=çpTdø‹«ç÷ä–Ñ2v‚ŽcŒÂ<ÀbŠe9Ò#\ů™v¹p¿Á=ä¡qm<ÎûC2¬A pð¹ vpWËu\—‡tâ‰ï("%P£OJáØ¹ôÇ¡oŒ~ÎÃ8{4™Ü% gº¦ oßX~¬É¦­ÍÇãúæàuEÓJßÀ˜GEÞ#&ÛÒ£$™Óªâp43\š\ÑgØ.x„/¤Ý˜ž!f.§!Ù ã-ž.çi—ð°M0Ô@›ßñˆŽ©eÊ“ò¾ÈéuûîáJßí¹æ#´WŽý;{ÖûåûžãÛ·ŸÁ£[É· X¼»•¸MþÛŠpÿütín4¹xñÞò÷ôäx$ªxZ!ô‘É`Ê‘¡oÆÉ\,ÌËHñPšegEº/­$\HG&Ú1ƒ˜ÙL h¹}ÑuŽÖˆsæxàÇgFÇ09¸Õ “_j Ї¨[œ´#ïb ã…öˆñ…ÓÝ«#K1šÍõéì~óéÇ´N/çŸ×àæí7ÃøËû¶w ¸úò”lüÊü×o–´ûäå~ÿk€2”“[Ñx\ËÆ¡tEyh#…dcèæ‰G0œ.Q¨$2—n<"°±ûj2÷GMCŒ•)}0»ÂÇæ.ÕL'ÊÃè80ÒK:fŸŸÊvo’S®šµÂ0培† CãèZož™aãtà'GhôЗ\8«Î8¼—^„ñ„É98RGÌÁO5Ó\(ÐèØ†³h,ò`V0‹ÆºG€6¬¤+Oä¶}Ñê¸Tk¬<éJ È<˜/ºhÒ¥­  œ§tÑ„º]4A._߸hÊÆ„Œ/)+mjIŽÚ3Ý%8s£‹SÚºJgÁî¡<=έôeÚ ÖØÐ!»ì ZRĹ]¢\x8  ŒKìâ^(E_tØŠc»ÂI‡uÌÂz;}ÀcJÇ8,¸=ðÍ5ï€è5褳ÇTäsó݆ð³U†¥?ù¸0¶<3ØgÀ Ã߀·/—ªn”t Ì€²‚“éGcRèÞ„ç®ÝDµz‰aØL:à)¬Œ]!>H ›C/ï æxÐ `‡›ù„°&² §ÔÏ? júîàÜÜ4ßkŸO"?ö„ r´½|`ˆYÃE„Ÿ„=t…êXì‡Síg)Ôn‰(hüPÍ 2EPnáôbçÜpÕ¹ÿÇÖc_ð ¡#VJÿIÁW<ñ$§Ùi¸÷ xÆhÑâGîk  âp÷§']MæÛ»dÌNœÎXk+PÀ7B…\Nš!ëäÞ4ã\Ã![憀±aÓb!–6%8ÒH™qáhÇž\q49è3ÉOØKÃêb5~(¸HÙˆ¥ÓŠÊýN@–W; N.{E!7Þ—<‡¢`òØð§àº7@“©W5ݹúJIñE"¯±f%ó~ÚÒ&ç™tè–HNZ72“y’1‚g û„j¤;جÓ%\üEΜ¤}±€µ³‰«*ËgÊÕuü¤¦àöà…L)f¶{˜ÕžÕ<¨¾¤Ó/:¤Î*Œ“¢:ðö¶dQiÅÚ¢üˆ¼»k!ðS¨Ä ˆÖ'À 2¼ë5Ðìþ1wÖŠvQæë^„áÎ ° NV&Ê_!ÄeL–â^¿KíÔÑšF­³9 ` wIí´µÏ4bNyDzØSŽÈ&¢r%¯ñ=OŒ Õð›NÒ›~Ý“lÊWG”› ~v“ªŠe­ãÚî×e2²Ùý§1âÛyâp]áŒÅp²û9õ)8ú¬…±a»ÓM+§!¿ÀŸ¶~Å‚ d°B˜ëáX·Yúy·¼l§y+ò³çCŽî`sÌn;ôQƒëL¸r'›û¾¹õ³åœîJÿé/ðדÑÿÚ[üûg\þSC£ÖåܶGða¿Yöþ¯ßq_âûÀi¦p{ˆ²¨Óñ”Òi¹¹2O¥œ-žbr÷vEó‹…OQ/£ÑŸ¦v"XþÜzïßG$o6W¦e´1 ÇYQ¡¨ÀÓ3Äe¹Ìº€ ùõ;qy/À¸Âæ žPÖ±.kžòHb.OjlÖ#€~MýÄç>OG}ö|<ô9àJ’{ ȳ8¿¨¹¢¶W‡Ž!Á?ygºÔºC¡å°íäVºo"K•élrZÇÍŸæ¿Í·V¡›wÌPݰ£m…"ET?£W’65Å>1÷[Ãßž%;ÿ‹9"s¿?†Šm“ £„œ}´ Ð!w+àcXÖè¡­PQ¹— -ÙuÀÂðéÅ\!v&~Gç$É ×Ê€H y{<Ä¥½0J]C£ë‚>2iA@ôSO²V‡3'}’¼²X ”øITºŒ¼Žr°ôjÀäÓ0Ò¾è:HMKòû'‹Þ™[øE®täøzÐËSNbœ*{…ÌqlQ®j^®u‚ T¨³„|á<8 )Þpb7BR…Ê(vŠ+†ò¾|ëˆì¸Õ B$–q¢ËÔOe2žÐE‘éåeúÃS¦a†íh·YúùÔR~ÛºLýq3c~ž¯#”gÅn;ôQ0Ÿ r]çÄ ™öÛ…›˜H ¯ÀÑ—eÓlÕqƒ1þóTk‘ï(‘`•Ê×ö'x*ˆ›ÂÂrp#Ãé©ë¬©Nâ ÒcÏcLæžÓè+wÚœGKŒº?^ùN6M/t‹3ßpM$6œi N7ÚøŠ—§é(†X*tÚOæJ¥oµ+ä’µÙšö§×ÿ^—=!c ¾¶l.Î<(´£Ù"ñà®Lë<»Ó8]H Á%L™ Õ j™To‘@7@/¸gÈ?:Ô/(M8ñWl@¾Éï?aT8(KˆæŸ&ó¥Åì|ñÈ’€æÜ°² 1ÆR#mþ=œýRÀã2F©à™yDÉ+0« ^‘Bîùe©“¢9õ_º¡R4ˆKš.RM J‘ZщnÙm:’­uÀIW6œtr*ðDÓ,ËË¥w ªÔ܈òm­qùbˆ^Óƒ„ôòkùŒ)‰jÿjN©ÓÖfžn©'߃ˆôŸñã!¹>oòDí¦ŸØ»^¬õèC.®õ^þq rÞzõã¸;ÿg!}[?_ ò¯°wÿyù©îJû+èò;U},ØÚ|eVfd뇴U0ŽZô°øgš.-³K_ÁÌ¿v4 øÌ0?mº.M¬)‹1K‹_þò¤K§ÞÐ}`Y²Z´,L¯b’c§züþ°ºwòy@O%V¸õ>˜ÏÌ|B¦á)RZ!‰®@A£Šù¢±3õEœ›étÍôW¤sž¢0cdD*B牿„–,Ú§’NºÊ]ö‡ÈX—úAƒæçР¡|ŽáAW wàѸŒšÂïŸû¦$’_äHµd$¾j‡èi`ÅF+JybcÙæâo©ƒa2txÚ±»­-&»i{iÏz)>,ÁˆÆ×îá˜x™<œ_ûåi wjé(?²™ðˆ[®š¡P¥ÑÏfIÄ£.dz#ã(/g$èhò4R„”“+’uy"Ùl'G$oïa?lU»Ä÷òsTóÖó¨÷A÷'+ÅÂ_,éòK8Ò§²Þâ–^iqÃê9Îß‘) Éã¬|œ—‰¨*Ì“',9‰á›1áJθÀ˜ìUÊ.@¬U yœÙ£•á¡æ T b‘±#Ñ ™¶'Ê`4~Ù¹ƒ›§3%LöWå²A&7Ÿ³Í2w|jæDHme«WJÍ`yß_”Ø Q,wc ;1°íq!Ë)¿$ÀÚˆTç0**BI$GT×Âe‚ý‹E|óLÉ_K™üEkøÕ €ürÕ:u·J&Û6ãT>Q,~VGjI¦âꨖh¸áP²`l¾’Ïõ[JD¬‹üb@_gJ€LJ@Ðõ%û%6¾âŒ*OØŸl§IA®ÃzˆIÌ-³wŽP˜>œM5éÎX“ˆ˜Œ&‘Ù¢¥˜·îޤŒ§ÙÌÙRœæízÛ£H%u¿·¤Ó¨æ­çQ? ‘í»®Ò= êCürfÜñ·)Nõ„òÿd££™.¢:™ðpй"W{dø!ÀdëܸâèÁ¾m؇õhxÉ=%ïäÁcT(㩎Ûk&ÒYF8éd S€˜9 1FHn Ö.êèø ½ÝÑ"É *ß'eÄÎ&úˆ'G˜·pzöd{Rƒ‘Yí”ø #€6*˜ŒX1ò:¥†^•ºœöW|†½ !ö"*C'6Û[®þèéœJðEå°Ç•ä ¸d×Fzdþ„T ˜¤(¯Z4Ö’ñc7˜,ï+:C$C0[ZaÂë7¾4qÇU’øØ¸9Ɖ`*9Ki1ý‚ãÃÁ0ø“è› Fsˆ4ֽ݇,! ñà4ˆ¿¬5âÁšI·à­dÞ¬ù¹\'ëâ²Bµ ¬Äí(6ÉðLï´òp þª6Æ”X˜6¬yðd-›˜,}ÖÙ0»M£Ÿ:(0fó€·B Œ MO„ JÞFǵaÇÊãK°vhÁä^ÔoübÏòA’q™vc³dI²jwÓ5½IÙÉ9, )‰0Èö|ÜÑÄ÷%hjëÖÝA¿ÍnKN]·3ëfê]Ižõõ^¥äبÂLL=úqÑ›Ý×)Êsï¯WFêÏLû“‘÷uöÞGM;®w|ZÐ*ÀÂljâÓnP¶Vq⌳ÝD$Âî’ìˆ) …˨³1¶âEHIM¬Á¿†S¦T“V–èæ àÂñ ®=èm´ízg –Uè–*ˆ2ÜõzX`è ˜"U%›xþO|§éàªÄq½Ò©â°¦`ƒ.Z9,eo9 ¢åÉA—„þ®tí]NF‘‘<–©aÁ8_5É2~×'8EæØ"¸.U*Ð!ÀY …ÚV<8S°ž.•†"ޤ4Û¸°¤Œý7›ê—ÎO á E…ÁDš±â}üèZ!‰á¾-á”™ÃåÔa Κ#žÐ6à2æR®v(&*¹Hî¸ôErë&ú²æ[ƒÃŠòñ"¸Ž¸øÓ©׿'á›Wk²Üƒü,óÒA~—b‹æàs`wݺ:D¿š‹ ÞN‰ùhe?ì÷’}Â5ï< ù)€«:Ùuˆ3±íçeÁüvNÞÆÌ°r—Lûöxšä‰%Ú]Æù½;Œó{wÜçü-‹æ-/Îï}ëâü¶ò%ûª¹R¼TæÞW3+„$ÎQIRŽAdÃA ‘ŠhGvbP¸”gîÓÞY°&ŠTP}Ñ誶u±){¥,ªh$¹ŽÅ4hÁ­¡èXÃ"éÌêÐê´æñ4óÉÇŠÀåIX]ꉵŽîauy|×ÈÚœ)ºs|ãÎâ¤HËž&Áèäœör|Qõ¯f0O¹CÇ/,ô”y~!Jdˆ—¨¬h¹M‚¸ Ö­«#ró®f’Ëpßp>ú(Y›w¾\£š·žGýx½Š¼¨¦ï•µÝ<Ÿ—Âû[xÞnÈ3"—ÛîjC~,7Q,~‘¶­ t~9r>¸!þ–»°ØΆwwC¡΀gcRîT¥LB¶!Ês…O[k¥‚H,tvgÕ‚""ÆE^€?5ŒpÖ¹)Äv)(@ÎTÇ*‚0ˆá¥ÑJYÒ¼Ôgr?9‚…çÀ!@2H–&§J%ÒŽxx1›aØ+ƳevhyZóxböj(¢™!sãX¸@,’“y!=Ôe3—üVHh â¹8îT¢¦­²”΀Ô(À®*ÓÌVSà#Ä _DQ‚2™£Ý¬Rå’" ”,üPóÎÙ'>5}6N»ÅÖ£ª´h{-Z{ˆvç͘'s©‹Òã^9¡/k“üj9ÿ7¦dûúǷmB²ªÃí‚9ïoQqãbá!¬1aŠ¢WeúŸ> –ò0’I‡ü%”?©(a 2L\”¬¨@U©"Œ!‹ˆ‘x~Ë})SÂzr½Íeå”jƒ}å£Gx~‰"Aâ¶3³ÆqåüSBšá`N©èlÂSáKÈç^/¼=½^ {wà2È wšöj!M,3/+ zÄŠ£æçï`é…„Õ‘©ƒžGüæ„¿Dz~õÙbÞ³ƒcšÍñKÆ‘žøÛ‘\5txL>o€ëRŸ>ÜÛç˜W8§J›Þ¦5@ÜYDÈŠ‡9Î~9ïu(?@ÔJ¼šÅ\F(9 ªî°P‘Äs²l£y¨Ú áEóÖÕQùéV³™·iÝ/ã|ôQ™Î°ßË4sTóÖó¨>wcÙs/Kÿ=¾ÛßQ_9ú?¦þ®ÉÍ}ž¶»K\ª»#cÙž1Ý=mA|éæuîöá!ÍÓVåÕöU³º ‹8`QdîþÕåÁG®ÅN1¸‹±ÛjñVWÀŸ9Þbß•À™Ì"åÑxš:‚üPÊw¾Ü¸¸L›/Ñ(Åæór¯Cykú)twºæ™Íâ= ë÷XUònpÅgòPV0ÌæûèØábCÐauh[ó`:iâjô Ä‘þ¿YµÝ  ×û6Yþ¦Ìôå5¾qgaª§žˆQ9;†¨¦`ÖZvRQ¬™ÜÖ—aÿ#ß$Tû‰<Ç£I}¹P€¯[WGvÒ—g³O}Ùn'Ž=úhF”3ßK5È>õå=êèË«ºcKÔÎØGð+Ðþëö!߯îû¤#תr"Þ÷‰Uˆ¹®jVŽu ‚˜…ŠðQ̰Ðk ´{õÒª‚‡}s‹n(c,¼Úg}/òü º’¡º° ´f }¶è·_è`Á¸LƒÏ‚Gú45øÄ£ õ@îkðж·\ÉýE¥ž§`/Kƒ·ä VYé`V<|åijÖ2!ƒx>BŽªt€;+w•ÄÜ'ñšü D&ì!ñÈäh%–°Õ;wU²³§Z éRàq7˜„:Ø9îqlì‡{[TBiŸ:¬þ‘?›á¾8tÓ¼å7…À@ÇWx,ãYçc™;½JÖþÝ¢FÑH‚L¾ŠYvê"T9úYŒSŽâ?جj N*, ’4"’`XÀDÆ9 kXÜÑ>ÌTgŠ8ÈXDú…8Í£ê_ô“_Úw•õA\0t£¡¡ûy2W ¦Ýè°ž=)dz¬M³ãÍþóÛÖçs»‰È,‚͘™Õø\ˆq¡;²DÕù5ËÖÉÏáŸ& §—hÑrR/ˆ¬,ƒD”–ý YPU/D Æ`™[V­ª`tÆVÃäJX£»§¤(vµsÇUËæjµAŒì5VAJ,Ò½0¸À¼˜ágñTW£„ë&‹Ó}FÂÛär‘ x³À¹×¼ÀÛÞ”ƒÑQ‘Øñ¤KÚV fº®+̱(ÆB*Jg¸™/ZžÄ;:DäË6Ã-šæáúT° ž{²}TÎ=«¨)}µ+S0‚ìp¤9E:ÞSãBbŠý MËÜE!wyŠ@@Ù^g'\(Œ4óž3ß‘sœøÉ×X“ˆ»g.€›Ž«–-€Õ&q%¸( G@},L@!„Ûnä¨ïå~ÖƒTàDÙ—Ööç eèÐ( (R²xí:êz¤ªºpB ¥z•¬˜ðà×Iâ_tG+ò¥@ø‘·±FëâØ ÝO(x_Zö‰ÜJIÞ'‰rKû¹Ûÿ8wT³Ò0]Ôf¦aKgmé»vZâSä4y¾Z—¥†ëÈONrÁ-Ña(’ú]â§¶›žNPaTË ðøjIȤ‚#º<\Vežxº}÷0ûÔ¶ïùËßo¨¦XÎ÷£}ß¼ýæ<¬ÿ¥ñêW3Ä.žö–ñÐÑà;6åa‘^HX×o–®ø—·¤¾T7Ì|°oD$re~hÏÕ÷¢ÀùZÈh-@‚ü™0’³N©\¬,Yú•PâÔwÎ!*¼ËJ؇s¬Ðœ(Lh€¨âµ3¬´’E.`ì¬_¤¼õ$ÍŠIuU‘ü¡ÍšF– ¾Éq¥“•< +˜‰dBÝA+¢!YYAŸ<×9: æ[9'@–ÿ‰ÈцôÁ€œÖ<Ï4R™. “… ½ãƒMgt‰ÉR C6·)œ¶á¸Î3"3úT¾qŽooµå*ß}Í|å»§š³üÔã”{5ÀªÀ”.t¯^P–¿iC7×Í6«øxžÀnEÈÖz’òžÀ‚ðrË_Ÿ@BÙ‡›u-Ø,¿uš@¸ìx2j DƳr/?xãt©-?®“æOëóH<¼­¿ëá5«t5×Õ‹6l•óú¹yç:ÃC^?· ‹4uô$îÕÙ ÈXÒ|VóM’êƒÌ…%/Çr­ïg]M¯D™{8î’ê±°¯.04Mä¯Ze‹9Þ’oϳd€R•ëÁ2«Fö â%ED I¦làÈ(=²h_9(ÔÛ˜ëK¢ ­ó"O?itÑèÄBrV-‘~í’TìÚÔ˜Ð(þc¤ •fãkýR#ª$•¦JA2ÃyëóJ"ÞÓÏðköÙ2o&/1ŠÚöìTÕÒiòP›ƒù±6y—²%Þsسò¢’Øzüž=AÉ¥4'yn]?¹Z×ÚKU$ké±60 ¨µôâ$BþÚÒ‹ "¤½¤0<óKéféEF“ò^¢§bÁÌ2c©×.øXÎâêo–=>ŽlwO+•XÌŵæ’鳕YÑ 06ßç‘݈Va¸Ñ7b Aë•æ «.^/£'žïÙÂEÅ1gLãF– ,éJ Ïâa„Z¯¤i‚28èå¿CÊr² lžþý,tšTá&õÙÿ««„Y Û¬Ú XJJ9Ñ›ùŒéÁê+\ÎÈñ$\A^’µ[îé\(\\é%!L4Ó°NÐßèw²:pæX¯UQ´æ™§G¡\¯*‚±oç’ •¤ƒ;«p•ZáèûÂF Mß%«²Ê_"¯Y¥üHªŒ¬±’—g¦%1pÛîvÓeǾÑ!«ÏOxÈì aâCfOwOXŒÎ­ Ý«¸´!"åöº9À¦rz¬;á´ÀéÍ¢6­ÊƒPMNO,’m§žÜdr¬Ž$}@i0Ö‰ƒÇ˜l8X„‘0—9 ¼ŽìfÜóøQk xZ<Ë=%+Ò¶d¤ÇoAB{6½!PU •ð ©q¦ØUe¢¡vP#d•Ã4X·®ŽÀe¼šÑ NëvŸ>ºjŒ¯÷âkTóÖó¨…ÅC…mú —ù¦óSáŠÊúÙ_¥„–ÍJÓT‘æqÔ5ÚP»¬ÍŒè.0Ä0iqû†M%c/ †FG]ƒCDa²ðÆ8% è©,»Ò€ð¿œÚV¾%½µª¿Ä: Œ*u<ÂŲ«¿Dòqž«¿œzXœe·W%${„UÙoÈÄí÷Þ¿Æ·o?ÿ‚‡qªrž½úËÏ—y¸Át?{c-ºûÈTÒùFrawã ‹tmáÄK–hk1®È”5E£ÇògÉ’z`.–7¨‘Ç6"˜Xb‘Q€ó=V¬&ÔÏ ›|y&L†XôªbGºm_µTrðô8òÖpÉDãˆF¦qÞpœ‘à Ѽü:£ó4SôBÕ+†~8Ýꃘt¸bÈ6€RÞe±LÂw‚î¦Á9#ká9¡=c·’¯B‚F0<ñb”B͈¸Ö­«ƒX»Ý4<ç¾»`>úÈÚ$ë½£¹Ge·ÞŒúáõ –I÷u,è·,ß›¢ô ï'Ì|YKÙØ„‘óβÇÚ$ch«E¸•i—%TZ¿Ï²˜m¶zXþòxÕqÙrs½"$ “`œ$JñØ=½Ó¥zn¾ßwÔjeXâI¯`õÊ<èYù €Â] ìÈ´«[³¢.ù3f¢zŽ9»‚sí$°“ b^ÖÑ©í-£H;r¸CÄ2ãM{ƪwø+Žœ|ºw¶EïlEËÊÔ½GóÁÇäp>½—vkÞ}3ò‡zÁ®Ÿ‚:\C»Þ+ÖôÓå(|` üå{:Mt´, j –,‰qǶäà ÎÌOö’ÀÝ4Z¿ 7)|ayKï0«GæhUÍ#‚tª¡€4{á!yø˜$3Z½] ìãX¨í@!ømÙQeFà*%xàr ¯;I™¢TÑq¸á)dŠ2 É­ÆX$g™´Ótr¨&¦O  fb%GåÔ3s@¬älÉPåAåíÕA•g6-sÙtQÕµ™¸€|ÇÒk3qáÊJæe‘:]¶’,{|pAÒ¦«š¥ù,¦„ä›ü€JÑÛMK´K ab’›˜CègŽ^BŽ#°1£ µ  hµrôVG7}p6ûTu;¹·æ£…^ïå÷ íÖó¨• ×üõ,½mOˆ¤˜¿ºÍÚi ¯bq?噺É%Ió‰wå¬G¾‘œ½Ê/È‘ŽØÞUäŽüÈ…?&Ô˜ƒÂðc9 ”½ã¾{ש}`AbµÀßY0וVK7_6¨„9T˜#Ÿ¦*gžÚiR¦`Á?É5Š—HÒ”À€5 7«œ<‚‰DdÌÛwé`Nm«~9!‡èqz×äéý5œÇ7o¿ù{WÀd4×{Å3/˦¾] WVÅÛÕÜ£~ÀS´Cç$@=ÙkÓ‘ƒ|l ±Lr_ùecBDò¥¡r G• ÷ªK,º4EËÆGP‹ÑQë1@̪Ò) ¼èóÔ#é¨/ôÎ[ýL”qŒs娽i_ìa8à€ØÝÙÐ9ªÞ©‘¹¬æ$sý1Ìf“'«dod.)©HÉ\b ¬ÄºîœmÑ'ÌÖ¤cY÷‚¬e=W¬¨û¥øãÒ¼õ<ä‡58±•Éår½¥pïHœüîsª–“êsCon¢S—ÄmK§CÝ „# M<ÎÌåBr¼|0sÎXê?à܆¯‡eŠUÃ0F9Xx‰u‹ð!YpûlW4°Ô‘ÁŽ«ÃCB†16¹×èÉAKJñ£L¼½/x;qµ­.Ô±æ(”£¾šë»¢2“—f{<€QnÅl  íœß¾:tîæTôívæ¡ÏGÛ¸Þ«?®AÚ­çQ?î>NôõËå·«zæç[æÙI½lesÇ#«N¥ß¨*‡»ñò1a6²"K—-á܆ö µ³_/ €°ñQG(´©u¤‰~± xê/»‰#‚¤D­€ÍÀ,—2 °¢Å“b! $˜Ñ·Æ:-žE0šÁö‚• •‹º~›Z¸a{Õ¦hÒ»•©‹(ØÇà1ØzH¶±IÜL TtÚ[d>ĸ¥L’!'f# È:~…ðòÂ9‚˜×rŠàXbHi«QëTEdö”U¶ ‚tÐKÉG[ìùÂUn[˜|íØ »'HÉß^;ÚZQ=È1¿E‘©dtû—žÕL~Ÿ0×ê(ä9ýyKEÑ'´yÄqê;§¶),‘L:ÈbƒBá;´‘ÌêÏQŒöí»‡êÈ©m Ë|„é;§7Xé™(Ê3&•¬f{Ÿž)‘Û6«úice­iϰé™F`’|ØöäŒñF:àAXœÜ I•€bn4ù¼P éÞ|ÞðºnÜ/Ù¡Ñ‚Áô|‚WÐã<~ ©yå)5Ù›ÜÂâ%û¤§´Îò Lò0ÖøIýòÀW”²©v K]}CŸüª )†'eÅk„îM`ÜÅ #·F…Qc&ï•V€QŒ-yzìPu9QpÇÂÜ(#rÉ9.³µ "‰†Ÿ 3ÐÁ¥á~ÁUŽò›Ò2/P/v‰8Ìf96+/ B½°nÒÑÁ¬¹IéëAòy6‹ ©‰°¤F*׿™û]•Õ˜CTo°º´ËYè„:„©z®â:Q~»€Ô'ž’qdÝÖÛƒŒÔÁ8`’¡¨„õàg¢‡“¬6û•ºƒœ”d¿Éwåf¡üQÔðk ¬ŠÝ…}9ßø?±[(6U 1°úћض¡ñä¥ãÌi°KÑðR¿žs\Èjyà9µôÏÎqœßÊsû‹Hެüxaš› þR€t9ÀÊÕœ‘dÓûFü°ÓRã³’==ÍÖD ù2y,©Ý’Þk|‰äôQã#R™Q9ü)fO£SIâìç’u¡Ù¡žŠ*BK5iÃl¦7Ì;LÝËÑå`€Ú`À”ŧ¤q†ÑÁ™ åɉ.x />k$:ˆÆè@£Hd;7”‹‹2àŽlá€BB¹·¥w=ºV,U‹J‰wPÓYâß–:GÊ«,>Ôí¼@= žh=F%AxÑ|óK \¶ b8²ì8MW 9<ð3†DÂIDE)a^¢ìöàæÒÃðÀ¾²†§º`|u–Pí‡h"Š´vCƒÀ£È¬Äw‚t†Å´ßu°† '©Ôè‰kwGu0¼‰Žvyq6(ý¸·ÅÍ 3¡uè3Þcg;ãÕŒ'²Mª&^˜_”ŠLTò ÊT)¡ñ¦ñ“T"€È1–ñ<é—Û§—*S8~à'­BâƒY~¼‡¶rŽ*çvpØ!Á¢-–*Š„ÚÉšÚ ö£Æø*C×ÍÚîÈ„ñóŒ`‹ÕÔ*Þg)ŒjÃSd:€×‘©ÇH à^ÃC4¶rx*ULÇ¿V„ù$»7GIK1œNtlyïu–`…<½¦vv~é«PD &‚œÊ áÔœ…}kÐ1‘¥‚êL‹k‘#Û™*“ÆJÖ™b1,³ÜÕšñ†C"X¡:Ô®sAP»±é·Ç™8 5vÛ…|]4—.ÛÊ>-Ù&rF°–¬¶ÖJgABè³ÔQâGP²fÈÑ"Ý\uåú„baµv3>‚9¼ 1¥±ñéC•4ig¥€•ù èáüÛY#¹{š. ‘yG³ f ŠK“)p ê¢ÂNô/ÊŠÃJ߆[Z³—‡d³:»==2@²Z=6«>£9t„ŒëÓ¡ƒ/Èt¾uûî‘Cg·§GÆ1:ë ¶e×ûéÐÙã›·ßü‚‡:°½Ü8ùµ…Þ ]²ý靨ºvFøMmð¯å¾“‚ ‹uÜ>F¨üZI™ÂÔ›%ûc±ËQC¿ËuéРâ2tªj™ÀKÚiŒƒÏÓérP,2/OÄ—–ÒnÖ™—t`p©Œmp»‰Àö[í°?‘:ìÛwOœdµm)¬Gp©Ìs%í÷óÏkxóîóðFŸÀûÈ:úÅ"püíæx ?ùØ‚ ÷˜®Ð­bRü™K¼(Ñ‚¾ƒÓ…šŸ\¡®Þ3ŠÆ…Ý´?×­„G@ÂaŸ écqÒaa[ç%’¡É2|_ Ä<Ö[œñŠ•Ô fT0IWÚ]ƒáÜÃØæqÛqÑjT vÓ5Ë_ï²r‘A]Œ@C8æ®A’Ìm®ó22^òNX5Ì‚ÃÌâ]Wí²Ê©Äg‡R­)‰eQ§l7,’PÐÕIÛ:÷Alì *(ˆ6cÏV«Á…bÚ0—äUTb\Çšã¨1hd#5í…ÃJÓׄƒ€ÚaHç …`%'ª¨.!g$)Ov(nF‡”,GðþÁ™°,-N˜:—ñw@.µò`ö˜²,„k°!ˆF¨ÜÚæ¶5É5Ó²Uà«Lnö‘¼ ]‹ON† @fn¯—ƒ£'žÞ .ÒævG’}â» ÖCÖD4ÛòýøÜœy !Tò”4蜺¨QÑãMg ´3Ê9Ìð §Pú•g v ½¨ §²¢È•f]€iÂ7h×Û÷¬¸K x€vÛ­ Ò™˜Ãƒ(l€tŽÉ¶Îj&‡ýHj…ëöÝãE³¶Û“›LÐÂ?öL—[ï¬Y¶Çkˆ ›_ððÑÒÚ6÷(öREù¦¬™võÕ¼²UM‡ª?ãQ“ή@J%po»±Ê£¶sàCŽnÂŒ‘·¾hzðàNAˆÁè”p'øKÿ®#ûøAÍç"íb&m ®“Òãú‰°4ü©ZH6Z²ÐäGæ‚í]žN/~ÍsY«Ã¬–©!ïÂ8ýØ#œÒ˜.^énÙe¢cÙmK$Ã3]ÐH)öñ,.îÄ ¸ó–q¨ìüÓͳ͜ÀÕ²œÁy³r ç£WÊáéÍøóÙ¼ýfìäöPÊáãHöi¬¾ƒK>ÄpyË×ÓQ¹š ½ë^˯X¨>j‚Y‹‘q-=S–Þ8ë¬Àg7Ì9TÒ$t¶’¾{¦7¢&ò¥g—1®šŒ/•lâå—WÝe^GÓ( o±Ù~D]YÊÍÕÎW¡x$¡EHú’©Gâ°?3rÎ…=oß=EåW»Î¤S)Ìqzƒ(aöûUUjŽoÞ~ó > :·uëÊWÞïHtîÌúKv5¾ËåÖ³ƒúÉßq2ã=æØyãÂgt¢{@ñM\ ÷rìˆpFštrúnÕÍIª;ß“U-¾ìPK'[ˆBº6C²O_{f »†Á—¦»ÐP8§†»3t<0¼W„À†¥rÞfÖw&Z!‘çeƒYI•tÁƒ7w9}% Gˆ¼|ò8Ä<ÙËgàÁ§ÀƒÅ_î•§Bx0 ÌáZš߯P˜ÓD&<Ø8Ì×@}X$æÝÑ/tðé@Ù#sĸ܋³ü#\KÆ#ÖvI<(" ÙpNþ§ö½3Î?É$à6fÊÉ£S¿A}¶ƒùB™HËÃ>*Ä©Œ£<—›d8Ù ˆšÅ@á÷féâ.÷qDA4&jT°á]F#¾|"\ :¹!è‚20ðJ¤[ ÐE† w–÷RH¤NvXv$ßC<„–czê]Á’ìp5ˆ¼¯m¤"™”V3tg6‧$«sa\ LÖ‘D©A¤Z·ÜÍde4S­ÈÜ®Æ)3:¤Æ KUÌV0CÆHe¥º+À‰ Ù1“ÔxŸÆNc}‘&,BþØÈA¼|iÒ]ÈÐβYz=jK+ÊYlF'l/XÙʉ¤^S\YžÓEÃý:Ŧ¨Xa5cÚ¯](T«ìÆe²0¾=¡lG&…ƒEß{±²*úAY²cœdKãï‰ö{È ŽŸ39y«ª¦ztpYûP½u#AkJÇFõF,¡bô:¬À}mëà:Á¤Ó$µ= 2“ÿù‹.#Ž€‡é®o@ï=ÖX—þ»šÍàý …cx¥Z‰µó2¶òƒ£y¨r5â•ëÖÕÑEÇfMN»k»Ÿ9~óáÇJù›¯ÖŸçÈöíç¡?|VS/7t¿N øÿà¨~G,ŒDy&´*}¿™@!ÔQB‘9:ZV¾ œ¢¸Évâ5+ã¸0+x ø”Š_R×+ÐU8‡ºÈü,,£j¹|ùLÏ$ë9%ê ´U´ ½LrRtÆÇ;B%ÆáÏ!ºØapPV"á²HPQTຒBYE°Q8Ù ³|`ˆ¬3`‰ÀøW„ª¹î"¹^¦ÝT’ÕhS“#Rt°a¥_Ù¨}3vvG Å¨x‹È:g…vù;òɔ⣂0_îü%V’ØoLC/MÌâÄÄa_ÀsCæHdd!øå/«#+C Æ:+!Â'‰C®ÇÀéÿ¢§qæ@n\7'*POç­U1FYj"Áò"ˆt‰ìIè)ùùì-jdÚŽK²JôIŸ}•9+»‡Ñ…Ûöl·Í±ßãùZæ.Âùƒ4ÐYß…‚„7@x‚ôéhÓ5®óTþè-WtQw -˜§%42B ž,’s²’Ø -¨W°‚9Äg€ ØcµBþPK£0¤OçÈÂÓ|R%gú¾á³€-¥HÐ3 V åD‡w—«Ò'Ã*"kÇÒh°ß‰~B_äç(ÈNý'„n‡¿~R–ÖÌħÜzŒ›Aˆ¬úh –$¢âÛ7?)‹ŽK£~Þäªj’­›ÌwêÅ»‚¡ 2IJCs=ž@ú[¡U1>^zÔÄœ¦ãMúVGÿ)>ÜPg2 s\“V"iGé†!M¡e , C‘€)¿ƒÃ0a¿@˜’2W©í\4K)…ü$8•Fe<„ùè@‘0hˆ0$ù@bX“\©Þ‰ÈiDäm ^ecÅe„D xWCe¸(˜ –áÂMñ›à—ãoªêÉŒ¼úQOñ˜%zÏ€ÐÒ" f.‘‡ú:{’±:¢]7C*ú=>˜Iª B¤p‚ï9p(Y·S¨~¶gLFc&a5mYBÕê+¤XÇ)nß= ©œÚ}ÆêùˆRYo°Êz?Úçñö¬?ý‚DëçÝÊ»ÑúíûÙJ»~…ý¸õïx+ŠtÓ®…ÛˬhÈ\6Ùj#@¨dňÈPà=¶û¾€.8^h™G)V=b:„(íp¼íî5Åzq‹n À àÂòEByl¶‰‘ó²—vS=âÛŽ‹–έՄÂE%xÑý¢Nž”oë4ÚHCø'àTƒ~¡)àPZ6«”éùõnÕlÆIùæÝ’o¨a ÜbÜ0 ÄòÌÕÔ,æS®ó1«ëD“ }êQ`èÔݾeyÛ=|U8fpD÷0,t™CÃëäîê³Zù¦ï³\9¯Sàß9ÃÈDa“g\èÔ³âbS±bF~ˆè=†Æ»Xçø˜f©žr¾}õDmïÕN³d£¡ÈÏqzC–~½?—óøæí7¿àqÇ:’œ }T¼Ùõpîñü[H?HÍð$¥—ÈY¸å“ó¸à —^òÀ'•÷ô´‹DæK¼nórÂ+  ?ó|ò–y>W4ŒGá^$˜íó èÈs ³¾Ø(é—ñ(há°ï7i€ÐC¶`3îéñ\¹ÑÓÃjs(Ï %ÛX|3!Œ \Y²Á õ’) e}ÁŸ@ ²¼dýMÃ#E\rçêƒE~'ø}(´"B¹ö¿iK¹Éå¹[à[„ïŧ¬Ú¹“;ÎÂÕ‡:‰u÷GÏØÏ™º0ÙÜ®f%‹T6%2Aݳx€·/À`Aáà gmV8úˆ‚ƒ?¼Iÿb2hd¸@¹>p›ôÎŒ@¦§óù¾Ðò®*óEaRŠq6AÓT °[ö1Z9À¦'$ ^Ë#¨&?8ÓŒ±L™-q¹öcŽIB h#ÈC5S®Hº* àøƒË& ª…'–yê—é׸,ÐÈ´ ¹+À^X ‡Å`'/YnÀ;êzã·4ñi¢d[¸¤VEsé/PðH³ qÙ ÖгöY]â̈à˜aì" 3‹…æysuD~!àPWnb ƒ¼^¨t§ˆ4 ²õÅjˆúHmaBaXãÚL;‹ÓpuYâìî°ÄÙÝq?q–tGn^çn¾gIª{¾jr‚te^¨ténZýQ2n`4z¬äC³ŠM^`–.ÄQ†]õtwd1»¬fŸ6»ìÒóÑVºt¿—\ƒ´[Ï£~œ¤>Tºt×*Ý…G/Ü}eÑæ½ëî»,@T… Ÿ”=/Úhp!Ç㊷ iˆ„NÈ´È$H¸€³/]7Y™lÈÐ'^d…`¤d”j'"‚³ÏYY@”ž‚´4©Õœ,PXó ¤²yø,&ô)SH Eâÿž÷­«£/N 5û¤±Ðí䙞Ró½úãdŸ e{Ô3`´ðÔ_-Äú¦*øÍ="¨”ÄßÝŠ}’ uc‘˜"–·@ŸN)qujGàÎQIºp5"ŒÞ LX'’K ÕËø‰ÝÆíÈM QThNõçÝR^0˜£Ò)¼¥¬tl“x¤~G½Ú(Ú”€=Ìš¶žiE¸_'xõ“Cyf”ÄÍÈlò?£¸"b¸ôðôˆk”ÎE\ðAä£"A ŠsßÕo|¥:ƒ-EýzoeÆ~3''*8õ5…Ý­‚MŸu䣥v4ÊfÖ‘'øS NÃë #–SŒ6á›ù(ðͽ’ëP0¶‘°º:‚ãþØîɸs¡W|† ±®“ÜPè\X“Hw꯫ö‚Z8|ºH¬TAa.[åßÑqXC<0á(Ý|t@iñÕ­øZWž*l;(z?|yÈ ‡Ú4>¢;«µ B`ÂSÍ– Ë~-Ô©ÂÜV»¡¥:ƒL½? í’ÚGNâºÈ$#ÂÉhY 3ô©§&ÃÅAh<ëD* ß÷´%ç_V!SzU%ܸ€RPÂòêŒü6úSš*gºŒˆªäÀ’o3«úê3á/XÐoî œn.k_°B»7¡ÍòÐ)¼ëçÑ‹øäö‚%ôÒŠÒAmêý–Œ6÷"C¨¼ŒÒ€ÀUƒ70æ›´’·“À—˜&G6±HÔð]ªÒÏ èß_̓“º>JË!Úå³À#Q›œà|ŒL< |Ðu ?—(˜•ÁòÄÏ=F‚).ý“)÷¨>gÞf¤Âåˆî¥ÍbÍY²ã§í†2†c¸ã3ëÛ-is•Ÿiu u—ôÔ|·ÁˆÅùJ|D꣨J–}¡ì;%O\²%ªlE¤ûÔý#¹«‹ Ì/¢Ù„ö_ê)U9ÂJ§8ŠÞâ/P('ãá%HlûdŒÑºZÄlŒ[úÅ HJW"¿ê°×C„U^˜ )X/<ó0€zlpuŒ+l‚UmÀ{úÕE±©RV}R˜ÐŸõJt×…¹ƒ²É,4¨Ö<23’‘Ž}ÑðYÁö²Œ¹—Ø”B(IJåBÓ•5äG`õ²ñ7U‡[*Äóf†ƒ{¼E›™éÇŒ¹#Y•é½·¿ªxWyPÀø”$"Á#×›¡¨Aõ‚u}$ï˃¢T "”=Z„ä"z Ó™lpüŠÀ’FÕ¨;",P#_vlF`xPà½â‚$…,DrÎÃ3@ª3F°@Ms šÍq“•©Áo„ù³ªÚ+p…Òoû¥¹Q%Rš:˜ `³f§#މƒ8z!Ô6Ê ‡9KІ¬Έ“I¬eS$‰¤e'mŒV©Ùä5J.€ÊÂIÀU¡´É‡Xd=«Ü%4¿dÄ‹Œb'r3ãôà=V‹Ïa‹"TåQ;ˆÖ$¨÷ ¹@!c›ëFdÃõs ìV¥Ú£X‡ã‚%Zq«ˆy+,Y·×%©rd0`Ù@I} ”B9`ét{9¿&]ç•xtb–‡±$ä ¨ygªÛ_Ds‡­ÈÔ핸JžÕµB‘„9£9*‚ž˜ìnŰ_«C­5'Ôs#µ'4hõÈÂ"³'¨á¸@ÇbO8Xþ+Æ ŒZŒJÐÿ¢‡aYÑÀÞ„Ò0c¨·ˆžj5e-%f.p:áI ;üSÎbßìbݺ:¼-_k†:é8ívÐÎGFˆ¼ÞË?ÎQÍ[Ï£~Øbåä¼÷×¾çß§´Ç£Øm¸‚±—¡ÛNsø¿ Që6Q<|;cÓ1Ö3>¦ÂØYÇ“Šl@”˜5èIH¾ÚC7ãõ§æ»fâùJJ3AÚm¢ý.n²j3i×üÕQÀ„é‘Da Ç#”ÙA»-gƒ,u¨˜Ø œžÙ,3‡†å:Gú‰öYtÄ)7š‡P0$Ö­«£ 6>›mæ¿ÌÛA·<}ؼ¯÷âkTóÖó¨Ç3Å%Šªww ¯x4U(ýËÕô*‹àUýøuÅbÊ/¬Ò/ÊÑЧ Xp8Ó[6V5•—º{ŽÚ1=w:·‰.® å;G€à”œJi­Ži•Mü¬,±ÓWcZeS³ ÔÝ„êSK‹Âý‘ÆuN#üŽ]æå¦aiv‚leq¥î 5´ºÍYI-²~nR (t&ùdsoÁêUGÀ~¿Ü¦Ö<žà.Åy3Q¸ “±9ÅLjEÚUw~®€žŽ8‹ghxdÑÔg£Æí'ƒ ”Uüæâ5(¦€šzfu þ_©:‰ÿü¦Lâin£â5$«Y} Š<ÂÀH$#ø'Lb|‰S˜…”œÒnføÇ’ý#ó÷ñY”¤ âTCà¨ABâ­ñ -ÀÐK4Õ0ש8<™#`ÉwpH±VvQ t…ðT\æ1ɳÚ\1Öž´ù-œ¶;¤yYs|tSA#<ÖPÞabÐÊA]÷®Ò9wp¼ ª1ønLÕ\ti2È'z]“4Á´=_È!(aV½‚Áã™þø¤L~Ëü2LÁðÓ/(§6¸êÆú=è‚bQùžE¸ Jbýeò5±îkTÂÉ"S;w"†:2ûù R¶Ò¸äÿ‡dÿaƒÜÁªÈc„ÆqîÂìóg`CÁ¢…¨‡š¹Æà*„ÇŒׇ!Ü Ø«¡Ìíí è÷ƒET}UÞY5}qêHLǦã f¬Ò‘šª„Éóböžùj€ñ‚϶€]‹¸`ØdëÖÙG>5ýÌt³Û+KËØ£ûhó½üãä¼õ<êÇq~åÈUw"÷ :Ò×5!8|žFí^‹Ä‘„Õlyoô€¡V“¥½ÑI„DL Ä^èB¹pYò2’µq2‘ƒÄϯ8,u®õgAaŽñ1 ‡f¹rp¥u¹„"h² OOv’åI³ÀD¥ó ƒçUd­Àf)Mkl-8_À¢Uò%¶{ ºO‰Ü&¶µ†–Pb7Ô7…h"*6¹ºÓa€¸¨Ù"q­b¨ã€yÒëM‹óòï­MkN¸°£·¢Xö~e Þþ˜.Ãõ¸ ˆ̘æøp'ÜÉ_tTm•ºDt4‹"f«f™ ÈZˆ-Hâhù\"‹ ton¡J`44‚uëêˆÚ]³™f"˼?Þ}˜‡u½—GÙÕ¼õ<êÔÆhÓ¤F™­ßá^|''æøxÝm"¢3ú´\ª€9¨kƒM$ 5¶4Ë'"ŽŒ´œÃNXõÕ~í 0À¯V¢Ö+4_&³ùe»ÀÇ¢g“˜Ê ›šT9/Ô|A^‹ÁDÕŽÊ ~¢b“ r½›ÄEJS!a¬«zUÙŽçUŒ‡—~f«€bÕ-.’Un”€VsBîô”å0aB@ðßI¢g‘8>¹ö¢ E­³žÉ¥.V&ŒePë £Âg_úUR@ììÆ0 yñx8?wsÖòFAE±g×)¬€¸ȨÃAHü¾ÏšªnYÿ{Þ‡òß둪þm¯;ôÇ5šyçy´gŸ¥‡ÊsŸüûE{¶óÐ~¶¶ÖEÚ¦”ãAÔ%-uÄ:P Û{²b":+Jçqô4w/‘î³ “”0_žŽ“0E³j!}]âVŠ XF*k†I¶$!€ñXªU…Öå­ED:äB‡'œ9„·\Ïþ(·P]€¥Ôà±ßÉkQ—t— fééûNTóQ¶ž9K*8•¹ö›U€} OÞL j|f…ûl2`£g#¾>3ôVàà~V:v硌˜h§ªdQK{>pâ­3G2íÆÝèpˆè0!g¼`“P•2Tž²ñ-ñZ˜K̼«AG(VµS•t œHHlWNrѹ颬ÆìErPêŸEåÄ,VáùqáUº¤öQq!|rgtCs€EÀ/º ¿sú†ŒÁ«uÕr+ÎO¼GoU™ñȼÎYÉ(䆋TªÒH&e&U±¹Ä¤"”ÄL„‰Îå‰wG—Ìê·…‚×íÐvÖ£ !·ÞË?îAÚ­çQ?ìµæì„܈Ižïé×[{ïs–Іc?+õ KÄèrÒ* ,è> @âz3aC¢ÕoÜMWxîR%®I !ÊïOÍôëù*Jîj¬Î@Û- ?)\ðŒ*sÜ?Dk5c Gª$N2¦ƒ&ÛH~,®°1É8ÎA4Ozç dÄÛẠJi½†?9ù—¦xÉ$“ù‡ñàRâ ‡Ú€ôªe¾I,‡‰Yþmx“Q,f+ž‚` W( јAù¬iYÃaHš8€"·&ð 5-ð>èQõ³ŽÊœ‘*jA/?!ü…D xã–¶9EKα*Z4))¯3Áþ«mNçsóÝÆ‚Í?.§sôÂÀM§3"½ˆ7ß÷9ÓA ‘³‚3´¼]Îýˆ.š[zN>k6Í4šº^W-©´œ¢³–9æá®¸_K*@ƒ@`|V‰âNHT v-©€t1‰•ç¼’ÁF°ü•sú­'S"8€-§‹9½‰>kЊÀªêXf…€²yÀðH8Œã?swŸÌ©æ‘›…<ƒ#T©à¥D‚ ™ ÓsJ«ª6e”²$Ðwâ\CqxKÌ3ò³\¬HàæþÏ–s^æJ2$€­$d¬ +Üþ"¶%uÆLí „²NÃg‹bÆcMì=µ*]2H*(0K¶pés%Z7¶ÊIÊŠ€I#¥T•0^Æ|cd4íÓk‹5$VŠÍ{–½W® 6c# X&,¾P§ÐȚųVõ k*´ÄŸ­j!z(µ‚Ap-3¶¯%Äô°:97×øpgQí]^…òní̸éc0Féê5/Ì2"'ù™ØX ÇS™(å?îæëEnÆÆÖˆ?äxÓTpÂŒO W0¦]C>謇Lõ6µ–Qá_Š×"®Ý¤9Âa¼#kÖiC¦^³ÀLððÜd«žÆüZlRdÓvV Cxn›²SÑÈ™"}ê³éSOš”Ó«ç~Ž4„n]è^½`åH{XÕ7×Ío ÖA² @ä©ÒœÃÌÏÎÂ^’š€æ 8¬ÒÎ̾…5կLJ|N–ÙR%He÷ãXjJˆ7À~QœÙáEàXÄýÜE®õb¬màÖaf-`“¨ZÁÔ2Þ8ç¶È¡aàÈrpQbð'PNx,à¤c5$^½ÜD¸Ž\R”¥$x mä…úÚˆg£fnäTÄUÕwìŸnä)]äIøfu–ó€Hâ⸣YbKEØ’ê³& in®ÅX—¤|LJ³I󹔪fŒ5‘ý,¸Œ¸Zãóâ¼áG‘'bìæ¬# ¦-Kà‘ç…‹¢Y±½°Âøbˆ SÇÎÖÝS†¨¼X/Bžé÷¤c ó`(‚ˆéxhCc¶ð¸`¸ÚâÊY¢x„NÈeì-o“„5ÐVÆ‚9T7ÅÃAl0Œ²ñ™à&.<ÓŠx8à±Ál‹\ÌkôØ^3¯Eª"½È–^É÷Zpܰ‹]U€¬J9æy’¹ƒ¾ƒ P|%r;b+Xõ«}Š(É"Jä'™70ãX/bý° Õ,üêQX¡[½S…\àÊU¸Ìê^eàžqV”“c£$ã£_=¬Žsœ:R |³:'‘3³–¿JÀÂé|=âu$¥Å2V˜ü4LHꮥmy•@_fžÏÊf8µg}@(;‹ÀçtböHÄÚì>‘¯óÄpêa˜üÔ¶ôþùc8½Aky¿goÝ~þ׈ñGoŸîú~µ8Ô§ï<éŽ ³Ä~Ê.–Wðd­òZ×~¯›úÇäÝëÆgž'ʹ˺ 3žtÜ9ßH–¤äb@JbP“(ŠÝ¦*µ„JþÒQÆëTð¯Ó§ /íÉ…G¯,¯cíKÐUo·ìøX*…)½“Xv'\ƒ¡(Sšd…ÌZN›s…lxF7î¤×gqãJeŸéõà«+ÍÊ6èy$s%Gè’?…UÜó¤>µË—Õ˜r†Ç½TEì3S&°j’àX·ïž¢ü³Õ6.ßù£>½¡©$Óz?Ô…=¾yûÍ/x|3ðøø:ð£›Á’‰Eóûèï´éÏï¹ÏO:¥Ùc<¿§ù¹ÏóëaѸu¡»}ÁæùõH黹n•ÑhFAX'f€“Ý£4)úˬ¡vŠ´ÝSLÕ_YyP¾øIþœ­ÌÛÐàT^å>‰&¯³Å8itOãÌ; çõòšEÓc鋿n&x : ÿv&ó© "²hzX'p„¬[WGײµæ¢Á\÷“&s>|±h®WëÏsdûöóÐ_æ9=¢ùÁUþv-g£Y™£‹ñtòc’Œ%3^ÔE ‹Ã Ñq±ŠÒe”®ø`|®Vô6¸ÕÒA ÅøæÇd4¸¼È·éÚ.W3Ô9¨ È4U¶XqÓTQÀÃÆé‚H™VBô¥©ûµÇy\WDú~_íbta2­M{ áFŠJ-Ÿ#‹Éu#tÄÑ’Y€‰gâ†óôÕtp_'œó°£fW[E¬ÐÛîôc’½X|Ÿ*È]I®­S·ªW_Ø~㢸(„¼XÝÜNàëre#qê ‹â†ÄÞí2qc¾ZõèSµ¿è²Ðìφ1ܷÔÛÕn“€Y@MëðtœÞÐÅõ²Þ¼òß¼ýæ<ž-SV¶Ì¸ñ æ aùÅÄ ¯˜%K¼ ¢’Yè“Õz555DÖ8i{Ꙝ=ô(¿#ÏãBgç­»£k3[s¨ë~¸óá›Õz¾Z¬Ösd›Õú<ôÇSM6CÛ½óxaƒ–­šÂ/k^¾jYÝŸúãþÜ£X7½Ò‘Œ vÒèŠâ¤‰Œ<’ü¬+y+ÒúDZÒiÖÖć‹Œ:¥ý:+JÍD¶’”€ ³ÎòÁ3 óOc€üñq–üµìaº´pº2±]]TÊN½¬ÁÜC‡D§Û ¶$iRHwÍd½à’g²·óò]!&Œk\W,*¡œ«”.¿yg©÷,’î¸IÎ{ÖìÀÝ烪Îï¸ÍÈÓ½:È×i…ìæ…’q§›«7‡¤åÀ®[5aœU°Œ$Úí0)£HPìAoNÅ´º‘À#ÎÓÁ£?;«X²nß=Q°½Ý6¢ {„VÖqzC²\ëùþ¹ m¼‹²êô —r1-C‚ÿ.gâ]~LÁ=¸ÕæWÕænvèÄQp[.é˜ÿßÖÎ-Ys\+Âïÿ(z„u³¥a0N@÷—3üe.ÉvU{÷&‚§*iÛþ}Ñe]re¾ÎÐÛNâJ˜û7ÝŠY­oïé´O²¥`fOÀƒ&2˜úcÐðšÕ÷û5¸Öq32?e_Ñl.&„XÑÐ-ò„V·x¦‹¨-yÚZÌìNPUê öŠÔq’g»h-¸:…ò†ŠŽLUM6ë;.D#"0 n›Æn¦1&`x)sA§·¼æwüCšØŒ„ñæÙ«G—ÿqo§PŽ+ä yÀ¸üÇÍׯûÏë^ÓÜ›n7ÿ}ûà\¨gŒ–}éËZÔŸ€ý— ðëBt¬•.ˆÖÿa`í›>vÞ"Û& +ûŠÜÔ‘ä! ^Nõ¿‚‰‹§’ñÜë»6s!*É4Kz,D,zlî™}¹*ÅzWäd(Fö´ŠßÀ)(»×ÕžÛ0D1´=‘û¾ï^*“s!*uÛŸ Ñ­§¿Äþ\ˆæ%æîuý‚w¯ë÷Ù½n÷;YòîOð}š¼<¾µý'#âFöû?ß4!äçWÀm•+´OžRPêîkáe«VŸü;¨zr`âÔð&–-*Z·#Ù\¹I~WáD©šè›P®¥éß Nz-mº•„È@OÁQ:LŽÔž’¤›ã%£•[jÙÖ„ãfIvÅɨÑ~, '„ÁJ¿1åwðPt Ö¡f$ÄNŸƒk)w²á ÖëJ€—YŒê=nø! “Wæ`é\ f=S [ÈõP/ùŠYø~!¹bê`@ð€圛Yò1Jå—^‹Èçzñ4FëÀ6G J4ån„5pÃýdÑ Œ—]ÍØþ¶"æàÜÍÙR0¼þ^ÄÌküš¤g‰7i[º€,Ü2x‚”ž®ìû'=m’r#$˜ÔÓUÎ{!aÆ¿Ìó°á-¶'m]º/ÓѨÒ>Z÷´y:¼+×èfF@‘±{›ÍÕø”h9Qøà`_¦2ç\þéiòÓ¨£eS…(”e3#‹©QœÄÓõlÛYò<Ä&áËjØYo›˜Ø¶¬¬Ú«¬ÝMQ–‚aÞÌq‡Ø*œäfz,.‰ZÀŒ»ÄÓÄ@Up0÷äïETSqÐ=çýÝ™;iãÝN¦PVã+ $BÙ…ø¼¡æ•ÈU‘¾É›¦¾„/©î¶ø IEXÅu'nAU‹S Eõ¸UX8%oîR¸n"½*½“@‘ešÄèU-y¥´¤Â·ÿä· zóðmËJjæ *–_þ1[̹Z|n^tí3Ín?‡§'.Z ‡·žÇe2Ëe¦ˆOéeŒb¯F¦{½ÞõÚ(gèdØ~©ãKN†f¥®šn–ÓL·©Fµ >@ð9Sèu«öÄK”¤“vxð.ÁéŽßÀR,1ipEš–çe„"û •%9Mu1¢hdõ$ažíÙú<›ÊbÜN&HZE¼QÅÚ«FsLÄŠ¾¾Z±’O‰x´Ð`FØä š1³¡IÌ'cšóðV&""*Ç›§W6}díá~äNÍ’çó?›JýÎ?Åv¡ZS©v¾}(Ùœ³Ëÿü´€Bs Ü"àXöõ²bëƒò‰üñ,6A¢@°ÚHL»Mj.'+`õÄ·i“WÄ_ãñçÕJ5·ÛÁ ‡}]‚;»u>©–ÇÌ‘¯Hü&ã„´©M³©þD1û4*î)A–ÜK¸MûV’>êžçÛë_ˆ9&‘RÕP ²†ÎUÁ“Þ²øÞSiSGÜ1 Hœçî&ĘÍE<–·I~º]Ü~j±Ö¨–t d£?'k \§_=Á>¶Ú‹~,.¡8à3'äí÷Å@6oo1Ýnÿû duUÄäüÙßV†þ¿—\à-ƒø'×Êfð·™|Š+Ž3Vpp ƒÀÚÕ·;¡Êvž™ˆ¦ª~ÙÄ0aÌÇ»v/$…âÑ#¼£° vUMbg›È4™–gú\,$,=$oJšQÈZÇ\+³&¢ÔÖüÁõÕ“Bæsu@zb«;y<)‹g²­ÒÁy‚ÇÁyb’ªë&·R/:lHœéÉzÒjJ%Õ¥ÜÚeŸ¤èØ"ÄX!¾ šZ?‚û{£ÞËFU^Âdóì«§qÞl·`ÙˆKÀŒ’õõ »ÉÂçϳù^w7Ï~Üÿ÷ݾ}¡W¤÷ÿ4ÒeK‡q:¹MJ~R^>T%Äå ô•<€ª¬Åœ¬6û:žyŽYÜp^ªŽ¢øüyn&äwóùø-íN¡¦_Ž—zà$4¹RqÍVüÊŸdëZ@¯žÓ¢Óp~t¼´N›åúj‹QBRªœ˜8Ÿ´cž–®µyà²}Ðôr6Á2`dÉ;5ƒܱNiÒC>¯"sèc ˆbœˆ\P„W l&šå$ß­ÐD vó?^vY±àWfš?ÄÞ!DV ŠÎ Ir½Þhð)Ô ÿÌ*’Œ´ó¯Š/‚ÇR¼^bZ Œþ.ʚ塀´àÁªQ@@AÞÈú]¸Z½œ#^N—Lçh!“¬¼DýíÊÌŠ`ój¢/æÇíÇWcWÝèj .YÚæ 2ÖFIˆ’$ŽƒÓsžPN¾“€N@ÂT-·%Ýc3ÌÅx«ŠÆ$œâ–¢ÉW‡•­Í?mœÖ•v†h¡] ¸®t°8 âï&¥˜¤§"/B5ßÐvWé~„M¤~œrãŸáïë³"Ú¦"ÿb ÄÓDòJh]¥ó [Á7…L´›bRàqåÁŽÔfÂqŽ/öÅ´ŒªfÃ'ÏÕN„zC­8é‘"ª¦ôÅ%ü·)†[”‰šÒaFm¦_&h·dVR)ò}çS %…ÐM±p£ß:˜Æ°˜ê`‘)ÝyÁ}ážn¨Y{ë;\{ëÙ÷lÈ7ŒÍûN¡ðÿÂÎl?ý@•¸ft¾7?¯PQlš ”çÍJ+Z Wª8=¾·|Å@‰¯§™˜$¡Àc%ìYÛ-Ñ´:vkÍ?k¬'þ&Í3J.vòqí=à\ÚÅŽ1^Ó¶"}`ÄÄà:YLœÑÆ<”®A.·ˆ¸¢:HŸx¦_ʘ‚|ý¨iÕcŠÀÕÉû±ï‘Í']øáÞC'3ì Vi#fŽ$6”Q<¢á™éBª°¶šœös_ÍQ·u+‰®uîf†¤Á’÷qu`…ÿ˜ÍOXå÷?ΉÃuàùˆYeã³,±¾âmÔ„^±Ÿìæ¥á_²Ÿ"†FׇÒ> ÓfݱòÆâÜ eeØ æYXâ‚EÈýßEh‚±ÅFe‘O¶Óâäg´ UV·€‹‰/ÜÿaP|röS$WÇmCù˜&B¢°x`Uİ¢ÔÑ€oz*c´|²qi‡D¶JÉÚÐgßͶÅèº7"! ¹—Ù²½Ì/×нz–UîŸë¥5ý«ÙÆaµ3åL•ü+Œ %»1¥ÛÛ2CͲö;œ+£àâж†oå|ÁyXÕn%‚±+Æ“‡ÀB¥ªfeJ®QzMNuo.$Il/òÇ{yBÇ2YE>,0‰vBú¤@¤¸HsÂA3 ÛUÕ*ìÝûÝ&bØöøÊ]GÝ&ƒ=¨‹´YåÞroÆÔÆq™Š>‡É1g2z¦+©XrèþMÜŽê¡e»HW‡¡¶cã6Åî6#\(>Ÿ±;}ÕKúR§ôâš§sõ=*ä³~PÝ]–k•§ÙÒªfVìNtœb¦iš]çaKS¼rÎ8¦]2€ÇŒÝ@V½ûžL‘ò³B$øÌ„?2¡.ûñqáòÁϤä-ï6¹ÚwCH[„y6i®ûk6jd¼DÂd*Lkû%ÃX(:R |€´¦Rп&@Âûý‘‡Jó)]kvgdÐ@Kõ»ÁÇ{ #ç"Bü‹@ÅÉôâb¤±r¸\l¾–Ÿ6ÓO™grÐt?§½H~£H)ªšù„T®JIè1­¶öHöNƒ&ñîT&¦òV†ÀÞK„Ï›½š ëÆiè3úGD¾EŽ!Ð6YyÉ*-rìÍ–+em€;º˜Ê#¡««ñˆâŒ…÷^ªx‹xi äHÌyº [DÍ+O²@^*¼Ëfù¨ƒøŸf»DÈv¹ý-zŠ;zº-¯²›»p+ O„¦)Ø“9¡¼+žï}íâϾ—JôÕቫg†'n=_‡' ºÛ:p{þÀž(8ôã–º¶sG. ¡ÈYû7(í¦Ýáñõ‚Â#×_x,ã‹U…æ±Ë(¥„«Õ^7h ýFƱøE[…ÎcâHñýk˜éº¤z›K pTÇ);Õþ[¼ƒ½¾@ˆ7Eªˆ-7—–÷c¦A%4âW#ËqÉÀì¥5&jB9 ~˜áuÛ±I"ØÒøTŽÈ„zÔž+;ˆ$CòV´`?iÂIÅ`õÔ¡èÁ£=[Ÿg“éý8_„[9B#gÿ=®ãëfÓ5€?®FâÍf*æLÑð bÒÅxjÀ!°¼úèÇ•Û,¨2@ùL›c>ȦÝMJ¨LeÜP%¬7ßÚ \e©\{Õät¼¶ê8Ç’‚kÒ â¼\üsÎ4ƒVà²rþç¥àÿˆ®B*«JÌ —ÃÉFS Àí#›`B¨ÌÔQãÕcåÑž­Ï³¹ ÝÕ†½?Q=b÷B&Ö|6ÕjaDï ÃCJf{(YQëMTÑ÷d£h7F~x!5ÆVê›FHn¥èÛÌUÂŽVÈŠ ¶tª´_“PÉõk¡ $§ÁÇW"!ø7P04÷’J½×ìÆ Î|&åœÈJmd5ë” ¡6\ØYB+ÙXj&ZcìŽþÜ»Ir®ÓWO³¬ÃÕžÂ!ó¹Iá¹MýÜfâõû´¯»³·ÿíl¦€¬‘Íl_èŽüD±þ÷a¿xh!§I‡³—+Íù™ùÊ_”ÄS”Šni>FÏ£¬ìù!±«=É ·[ϦMàêälËÖ7Î))L$´J+ã-.R žô«}L|̺IN5>F‡ £Ï¼ð1[1ò³ÚSô‚PÁº\Ó=9^“ m%HNXî‡QÏ×éWE3®ö”¾ˆK€ª}$Ç«}¥ë÷‰;\÷WgvüþßÏŽ_R¹~¡q•õýTM3™/îÉò]ŸÁàÿeü6aiJ^}‡ý¡{î[Ïž¿4%ÚoëÀí§0Õ!Ë#æÂã¸XYýÆSോ“uÈ+ -‹^FÏIûÐêÉRø<;^ZéÔþjï¢úÆ®ÁV ³¹†`AäV2¹mXÂým覭83x„ýáðZúRGHÈ—#¿E¨Õ—)Xñ·XÁŠ.®fUTPÛªü®P·€ªgË™ÔMN¿š,›·£ëì«gtÈl‡dÅu…¾­ËÜüqÿuþ¼nnž|¿ùïN—J$`N—ò…à…`ÿX%‹?¾,9›h‘Ý(“…ù<á"«ò×™ÒM¬ê(bÊBɉʋ(m4Kë¦'.5©¨„ ÝIññ¨T”®YúÊ©ukªdÜŠ&‡%3J¢L×n‹+|ôêÑA )y.‚Ä¢ÀJ´Á7±ý­' 펗–ò‡W“À!îù,ó×Ì4Ì#Ãü ɶ×Rˆó0K·;¡ò‡‡"Î ‰T®É³'«@¶nÚÕùèp¤oztsiröJiæ"qùæ—n`û­g>ú½ã­µ)o°Ú½ú(îù$È7‹ö³²lh{K÷ö[kzVe&¡!%'-Q†yЬÉUŽˆïÌ G\1¾5—Ú*¤†G–ܬ ¡¤|Á»Ìˆß¸b$L;gª¢À Žš[fWô''³ ˆód(]¹4p»Ùt8åÜ£M1ð[­Ç4m¢ ˆ)ÉΓ)McžJß”y’ /8žO*ï;Þ³ÒEôÙQzñ_Áw×:§£‹É¼Ë1Îçó4+d;á5½2'5„™SðŒÀ)LxEÒ†’dª9èïs‹H­è ÊàZ¡ʵ…m#2scì×͹ÇysoÀþÅ ¥$—lŽ%tãí’ÍýÏOo-ÃìnméÇëˆC•LP*z¾õz-èœbÕ¸ÔŠQ> >> /Font << /f-0-0 5 0 R >> >> endobj 6 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 4331 2564 ] /Contents 3 0 R /Group << /Type /Group /S /Transparency /I true /CS /DeviceRGB >> /Resources 2 0 R >> endobj 7 0 obj << /Length 8 0 R /Filter /FlateDecode /Length1 2616 /Length2 19963 /Length3 545 >> stream xœœ·eTœK×-Š»;!@ãîîÜÝ]w îÜ=X ¸»»; ÜíôÞïûídßó?—ƒî9WÕZsUͪ§›‚DI•AÄÌÁ(á`ïÊÀÂÈÌ P°²3qsQq°Spà‘cPZ¸@<'…š•«-ð€@¡tv±r°çýŸ¡¢Î@cW!fì š¡féq³X,l¼,ì¼ì<Vff®ÿèàÌ 0wv0A upôt¶²°tåüó@­®¢ICGGÿ›aááá˜xþO t±²°Pþ+ˆuÚ:8Úí]ù¢ ÚÖÖÊ`aëéhé063šý•CÃØh°²µrttpP‹Òü; H( è@htµô÷Ä¿–LÂÁÙøw/Ì\¬ljKWWG^&&sPÈü¯£‹9£=Е ”“BÜÞLÔÁî/5.M³rš‚š÷dú_ÖÜÆÞ᣽÷ÿ1·²7û«ÀÌÍ‘IÝÞÊÉ (-öŸñGG€¹±­ à Š"ü[]̬ÌÈ fö¶ž¿‡+ÛL¢ÆVÎû“™ùwðÀ7 '7€•›À j‡•àû¯D€ÿíIÉØê¿òþH)moîàùO åûo'&÷ÿ¸@ý—»iÿÎϤààje ç{ê1s0ƒœ zcù_mû¯ø?æýÿç׿r‰þ•é·Qÿ/…n¶¶¯%õìùÉØ²@ð—§lÿïIÆvV¶žÿ¯iÿ×pMàÎêÿ+´«1¨{ ÛÿYr“•‹„•ÐLÉÊÕÔò¿¶ýO@ÝÞ èlkeTrp±úë0°03ÿƒj–V¦6ö@³ÿŽíÍþ]–IÜÞÔÁÌÊÞÀÊÁ 0vv6öD`’•ƒàÍ$ ÇßgÀÄhïà šptsõ€Î.Â_`c0¶Ævñÿ¡¸LŽ@gSÐ&ýæ¸LÆv Öt€þaÙ™A#ö¶@óßcÙYþËþÇÿЬ .®@g+›ß$¨¼£-háÿ!ØL¦ ;Äø7Ã`²hÿ›âü[¡•ÃR@¢]l],ÿa@~arµt3 bæVîܳuø™ƒ”hgõo–Ô§í_»ðÊ tr3¶ýÍ€º³øë¦:ÿæ@õ@w“ËßÛû jGä7uòá75!úÔ‰ýF eâÿ ."‰ß$Gò7I‘ú@"¤#PuÙßT]î7U—ÿ@Õ~#PuÅ7¨ºÒoª§òê©þF íTû@ÕÕ#PußT]ó7U×ú@ÕµÿA< ê:¿¨wgcS ë¿\ÈÃöÿoò°ÿåCS++S+gS·ß¶ç‰sûë๘:8ÿöH×o3ò€t™üF ]¦ÿ ¿Î/“Ùð/“üAËdþé³ø‚TYþAb¬þ€ ¥²þ‚4ÙüA¢lÿ€ U¿Ûba©²ÿ‚T9üAªÿ€YöRåü©rù‚T¹þAªÜþ€ Uî¿!+H†Ç$Ãó’áõüïæÿµ¥, G“‰ñ‚X9þ;îß[ÌÂÊùß=vµ²5ûÏüëÖ4usÝO®?AWêÿ`s+ÐÕ zMÏÀRNöß_•|‰[ä{’£jRºÂ‡~© è"_¤²GÀh\ŸØÐÞ1zW§”õ ÿñT÷–ü¸û¯ÏSiŽšÖÙ•wì›ê1Ì)‡å,¾5sÇ €Ô»eâN,d’-"Äü­ìkü|>X?ø ‰+ý´|ŸÍ[úZcÄÖ»–ã’+ÛMÏBVñ!;N2yxã‹ }ã‰Ùój­†®ïLûWÊÏÜø}éb¢Àw¶ýÃc‹RU0†ºZ7vÊ3H;J9º$ DO; D,ïËU2úÒßAKn:°K>;¼°oÏfÏEï·ÂêÕi á mñC7é+Š”bó°ÈvÍ;ÅcOV´“/ !ɱöo¢lµ'˜ž£H`æt¼#œÍõ´©Ô°ñhK¹ßcU†Hb’q~á5ø5ðPO,¾wãùz{ áW%áÌÅ@‡Ó0ÍIòèû×ö¹×¬x^¼7“s£R ýØ2ƒIiØaÚãáCH:Çùm8AQJ©©®1@¢§ÔmÜ$=»Ö7&¶&åkĵ$4uñaE>ቿ)ÿ öcáò&Ü I¥Ö NHÖTGËS…NÿÉ|Vœ<жøæ«?ó\ïtŒÙM"u‚\u| 9à*tÜ^Ó¸?¼ØË8¢a”k…øR ÿ¦´?Ñ6çwKæ·‹ºUè}xâ‡ÛfXeÊ…é*´ôz¶½üŠ,þÓ§v¾“®vÇØÈD8Έ¬«±­£—²µ v{þ#p©_ž(žy ÕYwë0kçJ½ªIiYbz ]ƒí0²¸íÒÐ}õ}‰ßrÄ ó+]vùÁþ“«wTe´™ƒÄºÝ€+P~$eÉ©ïÚÔÉÑ´ÿb TíóíG*¢]—ÀÖÌÙ¼÷Ÿ:õîàz§‡<óßÜ…Ct{íà¶Âc«±R’wºÇ#UçfÆìÙU{õ«ÐCÞÛ… ÇÖnt|×D`†¨êíSDî™0­‰Þɳ]Œ‹¶§Q¦ùçz¥†Än‰»*Ö>°w¸88E¥C}ª=½=T¢˜t]ôL2è~Z;Ä\ì’l5ôλ„vÍ$ò`ö‚+æþÍ_4ñF5Œu91;iñw|Ëϳ0pÖ‹œ~fÂTL†¸8ÒPOnœ ÐBj×>PõèÓ¾S®$QAbø’õ‰ß ¯e£Xrø£3×HlÞî0¤ïùsð£é­±¡NSŸ‹°â†Oø¨˜ dßÕ<=a5W+¼J¨Ð¾KÂ/M»á÷4ÄX1 ×,/ëçŒjiùàÞ+žFGOZï¿.Nø™.ég¿‰¿ØDeÒØ@–…®”ñKrMªrÏFÇ€E6±ú¤%ßC¿™I#+償®Ü/ TKz–ô†¨Ó3v_òxs¦1ÅÔ%ôðÍ£|ñ§¬È‹‡ wi½ƒ+ÛßZüàbWqó-^ûuÜ^×"©öòÚ³[iËó ónEZ08l!PÞOþálâ?lßÛ󿍶 ¥‹Í°S§‰dÈŸÜÙð^ð‡c€¨T¦XÎsÍýhUf®­Ÿ?fkXw+!›Ü§i¡öh$:hr©¶7†)/¾á¦„¡»åú­àõÄÒÖ¼‡ýJ%½s|·ZÙA\+¡ÑÝ[±jÂÚ»JÈÁO€Ð´}©râ¨âu¢E÷ep1×Ǫ N É6,„L±ú‚k,»:Dƒàuóp–ÁÆì.:ÙŠ¬ˆy§«»ø†Yá3/¬é³vçkZÁ0Þ´ka”u EÛ©!›XŠBÛ¾Ñ"íÊN¾ÙÐúî{H“—»æ×ž/p·Øæ†ë²_~ô}áÀ÷'/pikíø°J VEëÅêzv:§÷e8ÀÊaW6!˜Ù¢‹ð¨Å—L J´@ÌípŽiÍ%ÿn–p¥vÂEq4>6›ê˜‹ƒA_ö:ÝG©“bÇ0ð€%æS,‚ÆŸ˜2\”Ï«OJû¾Ÿ1ÈWVÂáÛpUÏèûðY5¯¾sG7NŒ„çªH‰ÖYbO·äʱÁõò.g)ÊK#²e6¾NY™¬[ì3¡PòT7—]ðkïà–! }{Ïhn²ÄHGñ‰ØöÙ1…Ï5)âÌLì6ŒŸðû Þë•Â÷J”Êá|º³zÅœ(ðÆnš:ò5³63ô¹eõ®RK’G»x8EÙˆ>Ö‰€‘ª[sO3ï׌þ'ÍËÅÕeꜤf-è/µ…™0EŸ¿(á‹Y:î—,Ô<–Ö‘ÓÆøªœ(׆[X×ss\YhsGŸ‘Ì2˜màãéÊ:Û–tÙîT7ªqŠ«\ç—}vzâ)BFÀHacŠÃ{ŸTM‡{Ôõ÷-ÀË„­»Àf8ëO»=diø„øïó|NÉT %z ²YúVM·Ë¡%ve»P}$uï<0IùîÉíž[KÏÞåFJK|XçÁô3˽" #‘MÛÿ.?"BøÖ&XF“caÈû#þËÆ¶Ø³Iø7¶øRãÝ9Íjî  ¡”2N²‹äRµxNsIuÓ{Ì×7Dº^QÛÛ,Ù'ujÚC \ ÝôéAUÒ¾î¨B_ä¹­>ncìð¹Zø‚µÍ¡_ç²ôt’gþ¡¡hDia¬h×µù0L#×p¬6ÕƒtS®'Ú|wEªc|LµÊœáÚ¤®Ò”Ýe|ž§P:‡©ù6­åÚÍ‚|â¬UCÙ×ÇŸ<æ>ÂÌÉÙŸ×òC,0t¶¸Ü_mÚ¥òé0¥>AÄEÛêô˜‘¿¦¬'#Ø;YvJ¼…ÂÐϪT+•¾óˆ»'…È·ì €wÚÿåÒ*?ödŠŒ¬4R@‰ZúBËkµ.%4³57¹Éw"¨&POIïÁ}–aÄaH½Eû\ßò³¨9 Š!¥5´üä =fßÒÓ ‚f¡ª¢ñLahf/v¶˜_“¢'Ò`¹|¥}~º«»Èíõ’/k2F˜W†¿_doú•ý u~ÚqàjçÊY׬i„Œ«{Î ¾»ý#øñX@‰?š‰y*v×;åê÷‡x “À¤úï73Q·û”ÌøË•ïYóÅj¾ÄšÜ¾ã“nœæEά·’£!ý޾Þ(ÍEÝð¿oÈGþP™¸ø~ié+ÀCP¯«3di­ª€Ó¹N‡)ZzÁ<À!=J]W‡3ßû@y9ßÖÅ_¹žÈL@wعoF­5ά¦,·û1Ž_è3ÿJx'ê]NzAFŽéM$ jn]h¥f»N7x°xäÇÃW44f¨—ºz]øæ^Φmªr±U‰€"ì5ï'[_J Ö]š$Œ©` ³÷t5ƒ´z$–:7?ÓÏú§™pJ2w»«5¿ø]Þshb¤¥IÏëí–þØûQ¿,¡=ÓÌk‘€“Þù Ž–ƒ)Ýpèq>FšƒŠog‚ë,—@&xû㨵z‚Ú¶Ë::VB‚Iß¡õ¢yT§O²½‹Zø>0cí+Jq-¹XotOèN'¡;çâ“–¬©5KçÍäßü¡ o'³9:§öƒ,YiTc]‰Q^0û}­žrŽo ïc6Ö”Ÿ¸y/TpËd"oož!v»/ԯbXàË"íàÝRÅkA€ÞŸ”s2ÀÝÇ÷xðÂ-Ô%« «ÑÒ¹|!|p=³­‚ýZ•o4ªn\]yÁ”Ä!,ZlbyD|bd·(;wŽ’¦R2ò÷÷RsS`ÇSÖbS¬ðn¥¿”]vw²‡W!KO+§!3.š&E³ų́¢1qŽ›\môBâ3A1¦1›Ø/õOé`ØiÌýMT~Š Zò<,“¹Ðé@–ûáѱoˆ%ì˜ÇâêíÌc¨¥»XJä’ë)Þ7Iµç%Âg½O_!ÓŒ®!ññ5”ú߸´eÙ/,±>RDƒCÆõˆ<ŠçÌÏû° 5l®e=ñÌ–©…¬Î]ëW ¥y›\Ò¶èU/L4> DíÒ{“” »P¡ëûÔ8~üäN*DîÄjg¹ð¢âùf¸p¦âÞ>*‹aÆMˆ£ÏrÎSç©ñŽ–aø»ºIÛ,ge®zc-@ZVUwÌLð“­xWÈd!3’s ãý‰nti’šü¼ŒˆƵ²³ÿ™ËfMY>j[ˆÙYŠW]aß(n9k³A³#õ’“¢Ê¯ê:ÈVÍãÁ×aã½Ir1JrZYËÜGu¸ ñEÒ²lñ3»9ŽÊô‰å_É1Ñ,ÜbåÉVPÊwh r‘Å<ÅzÐrRPXYFJHñxi9@Ô©ÅÄoÙâðFmZ¯÷;!¸„&¾TÉj×–^DÆ~_¼><]Ml8‡Š°pú+§X\A¶!e°Ø‹(iÅ7±z¢ þ/.œ^ mD®.KòB •å¶éóÒQ½‚kÌ4Ï'¢ûÖ‰â\V]ÆRU$Ó§dª4–Í¥^œc¸7ÜGW=Wê¥Å5d¶ió¨ó±ØtʈÔÙÛ—&>¥ñ•r'ûìÏ£M¸‰.•§öŸÖŠ7˜nŽ«Ú¢Äß_Ô'ôJ)Q,$&£š[Îé¬Nóùiu:9WÔ>æÀo®ö.¸Cé ê_^Ƚž ƒS;[ƂѲºMn‚tkzµM’p ¶¢ý[Ç]¨¦âžŒÍ$ÌØm»YgŒº—ÀÆo+Ec¯hGÉZ4°¯YgÌ!nb”lmèI¿€×¸bŽ¥8o‡Ìúã”G¹è0¦wZ“¸j\Ëovì9,Ìœ…ð}øp^µ+Uðô)·ûË@~‹•DY,£v\öc·lì»çÄI 1Ý3ŽJdˆ´4†¸ú  ôèûÂʽ3ÔêøAŠ®Ùå"ØÑ/Ýí—§Þ¥‘Ôöhk{š¸%ƒUO>M·§ž¿ òPK Pq¬õºÒØ¼Žøswª¢â¹B©‰•pœfMÎc. ¶é±FuÝMÙX<ìzØ;Fo` W;¤‚a£EDngT†è",#Ÿô€!:&­›ï£Ìz^ŸÀ¿š,¨xwQd¨ ȱ)åÑRÙ¯î}÷3³p¿´W#ï;!¥:^yÏØÙpñi³L¼’hЇ8ÃÔ>…Ø+äWçs)#Õ#Õ8žÊ–š$¹®¨†XrÙí£ŸBNjãó/”èh–Í+áû ?ôyA*3²«qþâÑ9‡“±øÆ)â"TIò]¦–wrÚ;r²õUWÕš²,Á1“Î(C«´n+á‡qÖPJõUò¡¹ó§C}M|>âÕ$“/j²ÙN ái“!'–º³2“açc›™£æô g_"IRE#—={á6’c‘êN>" t‘?û_wïÔSº*'»É|8ªEÈÝ{(Т•l'éŒ=_Ûµé™(ùäšëH´åÉ ”Ë£üù•Õ!ÔvKÌ÷H­Qÿý Z–"Q€ˆ–¾½ªøæ‡æ[œ°VV%›àà]Í#5rÙ,ÂW3¬~QOOÙz!·¢$,?ÇÒÂGu‘÷0ÈŸ$ä ©Cš§×œ˜CnP~’eõ¢¬veš¯IÊ'/© œjr ðÇ“eDÌlµ÷$å„ÊO2E³Žu_¤ÛXÀÝPY‡ö¨Œ£s †,ÐFŠM¦,Î2“©“ùeÙÇuïöú¬Ì†SÝóª”Ë‹ê)!Ø'Ê(ûÚˆjÄ»V›Vºœ;„45ÏÓÝ!‰ŠÞ¿®OÄ…5>âìmB.‡Výé÷™µíuµ÷£œ„wþ@*¹Œ§r½pð¾¥$©øs…ÿI 1x–u{À® 'x¡n[ÄÜpëÞû7ߊ˜‡¢ Ñw²cÇpYÙ:Jç!á“õ‚]0Wé‘j¸~‰1z÷ª#*v÷¦=J‰¯¨LjPw„“ àý ‡|§g¦ÜSÁ ½³š(R`§‘ô¢]ƒ‘2¯È"3¤?³ÁÌN0d¨çòÐ]Á‚QŸE9ÑÞQw«GdB]Z‡ñ•ïÉu2!›Kìæ;¶!”lÍV³» Ü©Ž-'R.Êëù–%@AQ±Ð»öÙ×5D§,¦÷¾pd[tcÀ.Õ 1¹a/¿Íñ!; ØŒj¿p~'š»íxÆûѱ."úhÓiòéLÆñ†•Âå„vve¿Ùª|mÁ…tAí¢¢] ~úã¯*‘*¤D®¹¶Ô lõ¯›R?ÏZ¯ƒˆið°Õ7Å»°ÔƽØÊÎ"´¹Ž³a9öX~P}s:ð™ñ~;ð„„@Øvd_bã&Í—óN#Ù0÷öWCW¡¥ë¿Ä‡y|û²Yö·aÀˆ1…ŽxN̈¥ÁˆŽ5άÍÊ€SÁR«O ð^ðtr0Á2<@Š™dCa…[õL´áîö‰HTlöLLÖz|X?S¤½£;9\Ì-¸uB¶qºýGë¸ÊQºOHTÁ±W`€ÆŠ#G[c@°ab2Ï‘ÉQËÎìô¶ÕžÌW´6×¢jý:”õ”[D¶EÞÉÍ1Ít`óùScÚ^Pa { )ìr;íL–1¯™õÙÖÛ–yÚñÖ5%ԷѨn[¥­æõ“ouýíÑ‘|YºI ¸0æ< |Ô-eu)eÆ×wž7¡ûÇû8¢¢šòc¢‘FÈ‹ûRllWãËDw&bñTIƒ ÌÜziMyVd˜Iñ¯ƒÓíva«Rå«73S›h7Fà£ýÕ§>sèd¼„ ?K¨úàí®\Ü·ß™`ºl›‚þ‘C”2!_Ü¿˜áåÖùÛܧ®+[}="ehYÞW™JðÂK\Þû˜ë¤P’«³ûõQ†%(Œy±…‹æPi½¥Kêà3}µ¤uÁÃa®|f—N<å¤k‚LÂ¥D7Åú¼÷þÀ.ÔAaªt`Ìwc“õU£R¸QwÂ/ù¹ÂÇÛMûdêáŽÀYÆF.·’$ä±Ö½i\æÃ˜ᢧ^'B(—c…Gà tJŸÖâê6öŒDˆI‚8h†fÜÒ4Œg¾ž§GûFÅ"ÄRâ¥ÊßX! cØ9Š*<×mH½BIaøí^íÏgO.¸P¾Ii îœñ1Òô+|êô1tq±q‚ˆçÒ÷#‘JÎþ°AF‡1²"UJ‘rmŽ;ø ”èÏ•"ÓhZÃ:|‡“°òÅn_H ²#Xͤoul!X3˽òé«WçΑÍ7+Þ…ŽÔmÒæõ5o=°‘¯*•ò TÚ0‡ [ºFŸ%Dd“d©9¦KJ2ë™2 N;? »¼Þn@]cÇþ Ù”;|(¥ž<ØJ×óÇ‚#E$OÐÐÓ"9çp{1¡ã¸±w=6´#`žÓé©Öx_ЖL ix?u\ì@£ ôé B=›UÿÂ=Ú‚ºƒ$R®Ä×tÓÁ–mŠà“uÞž7‰ÎVºÌó£ÀþŒÔ‚ÖReK | ;±5êÖWSúá¥}!ǨÝx~ƒ=µNámýMC>N¿8­žRŸUÌgµ#Ò56/[2aIߣ,†¡, 9[ê¸ÏÓ=QA€&$ÎBSŠnå²¶½m-7ðîQÚªÅHmç€ÞÞŸ,Hoç;CšÀ]$Œ/ýøm:Š£ùi$+üO5 p‘pEœd¸å5¼½â#äLÈ™_O9S&–e©4 ì$¶ª*/œê»\¥ °Äõð/QlrÕÏõÔè{S4ñÚs€Æ{®(€a/ŠÓ¶9¤Ÿ#êñ&¾­,D¼ÝÉà!ú;qÚóŽߪ=yoÊkพȱßÁUìõq)¸Ìçôï1ƒTõIvý¸×°mpC„"N§f)éÔù’*wl±¥±™vˆ$5¿¾iC•ºz7ìo¿ÓÖFöçÁßÇY ©6ÖÀ2 ‚þ¨lãÜœ{•œ‡üÕãhm±1Ñ&Å9#ÖúE¸D &…ëù’ü'ù‘½H¾¢ð¨WºH~‘)”¸Nî ò2ö˜]Їsð6ýY‰>Q¿¢Ì|=º¦Î|††4j¶Oòé!¤WٰɤÂÓ•†±rJ}Øé­JlfûÙwoÌ·Ã /k.JR­ŠLaZµ}ò;»ð^@z‚gYïæù•ï£íÍë'6è=ƒ«¾ê2‚‰R7ZËË`—&¡‹ÎÆg;­ž,‚Œ°íÎ%ô`­Ñ–ÄO®²·Žø“,¿–ˆÙ‡õʸ'PÏ›Šš?å»»^¬Cº‹Ëdé5È'¾ T.òI¬E²cgX1ºè:Èéíƒ3”Þý*\bÔàÕk(§¥¯ÖˆIòݧtäÚ¸€œ2šÿ.Œq„¨¹?ð;w|žËÄÆ-g®¥†é/7E/:¦öƒ\_AĦWl¼ú\Ê2?c4@S´yõž¡†yáƒ\x3˜ùþm=Òçh¤A2õhAç‘Eãy®Ï¬3F[+¶Y“J4%ßc_¸0Ž /[¢Né*kÕÒܶ‹„Eé˜Þà¹:B-°×Õl¥Ödž‰¢el)Êã9.ÕDT¾}°ÓÕ½aÆ:/éÊß®m¬ÛÆaÄÝ’: Á×0Y׉è {¡Ôõô¶üЀ§Öå’Dboä`ag‡ˆCcQŠçô’4"î᪥™B{‘dÊ9í^À(UYc:ºñcôÙ•øþRÞkƒß½Æ¸ÄÞØ³Ì‡zÓ•”›,.0ø¡õ‘IÚéI3›„ ò”-ÖWJ~G!ð¦ô'™û3V‘U âúΆÒãl-ʺ88ýØOôÆWuU¨ãx$£x5?mŒøà®©ÒÞ^ºÙ  1jlݯË{} ý«½Æ3/ §£p«ô(E¥îÄ´þíàט0P÷Å&[A½ýoEÚOå?õŸÑcrRFûý ÐÒžùm _¢hiŸŽõœLÊ~Eìk Ý›?"È­´“ïÕØV§ŒpLµ¡&_®d)Œ·AÛPXC¥¹ýjô§¼UVchNyP‹+Šò”n€Å0ñ†Ä×àŽÕâ™y$Ûço%,9¯¸>R¥ Sj÷®`#kH­²£ f ‚e­[èh¢#á¹pŽÆ?~µT3ùÒŒYž¹c«;5G–‘fÍ×ëP%®À@|˜ÚQ¼d§ÞëQ¿V‹æ@jƒ‘NþÒŠ4`aø¾ú´ñs#hV`,b?gfù]/QFZFË7Ïw{dYrÌÆˆZ™ü¹‹ïúšAQ¤¸þÙ Êɘ!É¿æÓmv7 L‹Éè§r²øÉy­#îm¦j!ø‹2È?ʇfEYÒ ˆÇ1W†5Ÿ"FÏ\ ñ-­crÈçOv?]¢Er *¬Š Ñû¦Æ›¤<óœP"𿞙Y‹!ž’P·dê•9Ò÷î¬b=yëÊ÷} ܘx°a1ƒÚéR­Œ+Œ©8`ly³Ñ2"rDï{g¥aCþÖ^oŽ=†G­½^Ÿ B&Ç÷# ³æœô‹T.+rqS’´ slû•ømÁ=ºÛ’ü¹§ÄÌk^ö;÷ŠejþCT3 ÒÑï¾è 2rà-{Öªåùbðò.eÈÔ—ÌáŠn÷ØÂ?ŒžÝ ¿Æ[nô+ŽU²FzzÕ~7íuHe†È–æm¸ß6×XÿøB ÙNø*‰Þý|Å©6Þ¡‰¸Ã ¶}*0­ i¹üCÞ<`|ÉJèMqm=„hÀ48µ9ÚJõm³ÐLÒ‰¹Lî^°ÜÙŽ¨§FÖÝp·2@ë‹Ô=mUÏù1äÎÑ&õY«3JâʘËò–UÒ;äû·Úî „’[@î?2*Ï[­Dƒœ©å¶Iæ,[ˆbÝ@F$Æñt„_N[jfêgÕ °ü¸t«³yxå^¤†žöêù©>ýê ȸ8y˜] x>h)#0«¯C–©=âc÷@0ñýhH¸-:ÙiøLÕ&ÜC½‚`ä+‡Ö.Ë(Ù2õi|`Ô¼j;†Ô27ºd/ŽÊÚ¢4ž‰k¯]!íEŠð&¯ŠLpR‘ÌñäVBÇ\/§7dÖ÷Š~ î8î{8Ów¤Š—¾r3ð´.óæRØ‘ïß4 nLé<¥4J_½ú¥°Ek¡;®?^Pk~©—ùN‰!ü2ä©¿|؈ƒ¦A€´Àé†ÿ½Y–½„Ȝי•;#Q“f(Lºû¸ô—qôÌJ€Ç„Äv =Ý8qa‚,ÌjfïwDY¨\.µ+LSîÅLvƺGÈ\ùéæ…k%œï„ÒÔ3¯r¿¥–PßÍ~hõÄ)ÜÏAÌd ÏáÒVr}òýˆå-àò»;Ûźºp+ÉÚ‘K/ØV>¨:: ’MTxMx5ôu¼¿9).BÄÞ«%ŒP¬öÄä]ˆ‚on4^»m„¾}ãG4XL7CNm1obv°no–ž3{P>óýä-`…9ÌàÂÎû¾’ÜÉ’=§ˆgmëN;Ö³%Z ŒȾ¨Îú,Ç7:Vç% ù™Q‹Ùµ•sûÜÑâ—’ãó=‹¦½ŸO´ÔÈUí.®cq#Ëï=Wcm<ì+ýÕÎ/íR†×AþÃþ}ŽX·-ü•Ö›àý³_²’a‹fÖ2Ø)^ÕKåOel†Q훹l€îðÞ »æçëøñ!Q‘ý5h¿Ê„Ð^\åš^Ç›¶-ŠX Ȫ?cSV‰ô ¿Ö±).i‰ä…‚e%–õNq里»C/V.¬XýåŠî*ç (i•I•·âó¹-¦*Åd;ó’Ý«ø—ú¢ñx þ¨ùâ1¯ªædÐ$¦S||Ù¦š(&ÿU'ÝJÈ”`XPf;¯Ò%Ïhª¹ÝX0à&6çÖnB¯u¥Ä|؆(Ž uR4'c>V×–r¯/µâX¸ž°^˜#ÞÈý—5̦_©D¶pH·b"“S\»V]¿ëŒ´g6gӸЛâRá{ÆF[“8í±¶–Ç×iG:Ù2¹’»t¨]D=äLÓîÞª]_iOì;㌡-S Älg—÷–8Ei@h ,Å¡Uò\aá ~±Ë„u@æßµ±h ¾d¼ldM%ݺtZ±gp—‚ðÀ5éõ5gÆ&ÙîÕþ:˜›†ñõ®¶‚RØãö(¢æë¬¥æQò ä]åµ –ÕžýW͵¤wsÔh&Ÿ^e™´CYû±Šµ.:1)¶Ð j19øëðÉ>³Í›—rG^a׬ ³9og"¢{MŸûWÕ5n®tÎRßžÐ9 õ¡ø‰â+™«Ol I*:«=‚}:©UÅä´6ÛIxâÍ·H±O¾C§’Úê™lþd¡göÏi† )kÍyäIþ¬ü¦»ƒ*[Á4e39º Lk­S2];O©ñ£Å±«ÌÔ|›ÐDIŒ„"J±×.aäÛ»‚åí×i÷bÎmŒáGhç8 (ÕFÜ“FùK„þ¢ëïNã㵤™i«Ìh›í©ï*9j£³Ú<½‘R¤§V툙|¸íaèÃ5¯{4‚‘ú¾2º»˜~-([Ùе;' .[˜C!6Nx^n' ªý¥wc2!FuTÜfV¡à˜‰ÆEö‹Í}rí$^–s#‚:ó¬'=uÔòŠë¶Å{ó=îÚ$£\_'FQéúTÎz+ß7\(8^ê .¾®ÅÈ–/T”©ÒH¡ÛaŽ9¤ðT–‰ª­Žªøæ:!½ÿÐððZÖk2•«pP˜i;,i«êŽxa>‹I@G@TÚÎD“ý}ï|ad{§Ãóšg•i„'ð—‡FC½³!!!ÐaSòLWDáF¢ºA(~ÏÐ}ß>Ð'é­¹½ž*§ya]&N“~EõKJ ¹&1ø©$ÐX'‹© Q—äaë×÷Ï;Š<LÑ‚Ih×(Ÿ/8GøB¨p² ™ÓèÝ!ÕR?¯DVG=~THÁ¿ÅXÞИon¶4Qf¿oLã„ÁÍ·á­.T)šyæ—¶Pð¹'wöQë ÙÈù=ÕOd²\@^pNJ•ìJ'<¯„YnõÕ W‡NC˜º¡^KýÜ“”òétHèNóßH6C'«X†¾}¢Fi¼¦¬®zÞ:•؈5Åíi¶¨ ÀYõûRÎKS¯}±•ÀÔ>»ØÚŽUã”U=J¤™áåHµCØïÏ h}ª Ú‰ýù!˘±äSkbÚTÖ›Ï,Æï™—•öá'P•Ã:g#óS“¥’÷¡ª|dZ é#ûO3§Ê³qöTŠˆ+V=R&悬U»Ý‹Þ¿8LéË¥m´¢­Þ—Ñà.¹`O%’›¹Ö@³¨®ÍñœWFî@’Jê‡ñu&:&¿çœÂX†6*¦íÖ©nÃÇùD“Â.uôHà¡£‡ÚÏ*2ŠÖ™Õú=é§õeu&:GX›]¥¸4M¸ÃFÞÚ^œÎóks5€÷fÉ’AÏU™ûž·ÓøÌ?‰9+ÈJUs¢,Ä*$šgMræM¹ŠÄní\uzâQÊr|)S0Y‰Y3G¢ÂîM匩3–'m‰ä ŸsŽ4iûúEÆñØ5žÃ¼cϼO€Eã#>‚¾dE5GÒhK¤¯:æ2Ix,G^þ—n§¥Gmó¢Ò…#]'…³\ô« ,‰×15F¹­_ÑiZœ« ½SÔü˜ðj v代Érº«–Êš«—;y ¦&ÇMaJ„r‚P¼Í ¶¥¥g$ÛåÇ\º‡o- ¿UÊ!ôŠLSä²^rX†;aQ×{i7{Jú—™›ÞØÍœÒȦ©Z¼Ïzîy¨EÇö÷kFkm >‰ÏéÌ:ô¦î•t/c äW én°„¾§s:jéDÑ€îƒéo¦åµ5_×ý’5ù˜ùz³DŸŽ¹ü~`côòA0  ¿ñÂ:‡iœW'уˬ‹Ðøc›€Á{¿˜È“$Ê‚Š$‘\¶Ó1œ]”"‹úÑÌC'Ù˺ÍùÝÅðeØ*&wðcÓÞTû,JÂÅ/ á+_öQl$&žiUƒÙ¤sÓ˜#øÀO‰É©-­É§Ø1ë±Þ+½õRPB¼çûT"ÀÅ]±”†D.ÞÔ»>=z—É7¼,àå)ÿfá›sp¢;Ág¯4Q)~J§àö+;f—ë$û‘2S£9³6ðÜL–‹¸xšDpßK’ëNïI¨ì(Tê~ŽkKI×[í;ÂVžõÅ?{ÊÐM_@%IØÍÏö‹e©³[ˆ«PC¿IŒÜR¸{åÎ Î ÔÓŽB>nÊ"m7€©îO÷ þR4 £¬jtÁ@g€0‚Ýó¦Ï:°c¨~™—Glãù£d‹=O7_Üu±r')ÍØ€ÙJWVLbʘ"ïÄi°¥Ue‡FÕ×üýóHDÒ9žÎ|pH´õaG]]¡ZÒ˜´ÌþÑ%>zmâPS¸]3KÜÔÜDLw:œÕÆ@6ÙnÓJ‡Ç+]£n=bo˜FF²}ðÛŸQµùâ*GÉpÑ ×ü¾RÖKÚv¹ˆròd?ë5•ƒ[L’þê}Ï€0“~‡ ÷´6s3–×P^ËU1»B™žŽßzy=ÚS›ƒ*l{–çVù9ËW9ÉB¼à†í£°“H(sìä;utƒÅiYàmMW„_yi_#WÏçã¥bZEÿsêe>𯕿Dk) rªà–cN] !¤µöO¸SÍù¯ŠÇ$îÎ[%v#ø$¯é¥:£¥?Ÿ“4?áWñvŽT…鄯¸}âxyMO?s'¯+x Ê9%Ùw¡m f4FÕªíC…Ê…ý–dœ¼ŒOÞ“{PŠãžpíçƒg£' gS]ÿëûޮŕðRÍ¥ÒÆ&»où”Äóô^H@’vØéþ5´åsèÑ)6Ž$^X’5ì•áUÏÃÍ›`að×Àç/G”‚ÂÕù”²nI÷_#üh(%Üj¨¤3­šv`„ü~*m!ý,_ˆŸÏ„÷#µOÓe Ãc}AÝgÂTVBõrˆ?))šXËœº ²S{¦JÄ¿_†P¾”ébùéôbÀûèd-e™vrÆÆW4¼ññÖidX [*Öš8ßfq¬ÃÓ¿Ðçz t¥Ã"À„PCØ©¹}7™1¾zëûµ¯NF²õ`}_bäÐ+™Û¬Ó8±ã}1÷<£ð[mâ*àgIW¢çS`%£óðÅ«]}ʪUÄÛÏÁ˜1}Â;¦eïq=R ¢â‡qÚÑPDù„! H&Re`9 /žÞ¼¬þêÂD1¨;R¿¯’UðÜ‹¤MøÕ4‡g/pº5œZX{'ïH¹$%û?,ºùî—\Ó¼~á8Ç‹öœ - ‰ç<ÄYŽÊŒ÷súLUY ö²ÁPŽÖyËGÜZq4ïX‡kñ®&°J++î…‘;Y*˜h*.ú)-âŽGn­À¹PÿVÏÌ83ÙV¸÷ôtغÍÿÅt`/rÛ\ †e¡öc÷›Pò”nˆä<Î|ÿpž·Êj.–›÷§ÉI|Ô~ÛÖKéSs’‹¼Æ¬óœŒö‹@SÀ–›ÚnB'”¾s•=}jð tP©«¦µY#B-)ªMÖ/Eç'¡Ò4Biq4üPÒIÒHøê2¹‰† •èù¤‡—ÙsæB“nAƒ.(óOR”¾5Œä¥œúv TÏž̊5–xUí„ü¬!ñ_Júk|ë>¯hóÌ#2šÕ¯¶˜IJe²t5ÄŠÝê2W]Îpu±Îù÷‹N»Pd½Y‘…ŸÊOEh<¼¿ýþFg­Fn«ªz¼€ôC~Ôó¡F€&˜áÑz]Ôn7§B§ášå‰|òQoGÖþÓäðUÓWhe\YáV¦sKÁô\÷Ñþ&«±#ƒnÉÛ'2¾3bv\’ì­èg\ß¡}–F3¼ÃOÐˬhXEŸ¦1ãÉ„ñg¶ÉC»ò[ÄŠÖt²Ÿ&£¹9l7ÖÅfVgLfœ~øH­¨ê*3a9|GCGÛ4‘¡€å3ÿæ_&ß²GDf±Pò-‘Ÿ°~®$oæó‹XA„éTh_›YtÞö/̪¼›Á–r´†‘”ë‚ïšFôW;Kß¶æ£_ÔµÙPàe›FhÚ,}Ɉܔ¼FÒå8ËØ«Y§_?î•b‡ˆ… BªÓ=cݨ}o|}yŠ Ð»ÎIàÝ­ˆÛÅêd|½“Yv‡öHY¥ß"Ü=Éïà g>}¥­A°“Äã”i¨ +Û³ÿáÝ_”+¶tJùíÁ¨}è+ä½vçm…N ŒòƒM>±s Äc»0_ß«j¡_‡<wgœ-îg%Ó:îɃÀŠv~²ˆÚ·ÿŽóè; c Ó¡n%rc“â±­`¼Ž>±ÿ8‹ú|pP°¥µFÆ»b8Ääù ’¿CÁ¦{ö9‰É/ÿœÁ ™‚®+"n½û0FK±Ðàrä]Ú­þtÙ)·’_+¨›;n<9‚;m5Õeõâ=˜:áPnž/Ô­!Œ6ìSùr dÁE¾¥Ç ˜£Rº–%¯?G첟µY}&ƒH:­…‘C+8´Òãâù-kKå:.+LH[ÃæÞ¬b2Mærž’‚³wºƒrüVÅ–~h•KíÐBù^|S™ØS†|Çæ9&KãxK(fñCEš@†‡ÞGÅõ)3÷VgA—EXc†bD)ý×Õnçp ¦u/xgÞÖÞ!»üœssÅ#}–Çý±þg¨œ‹“8l?IN—vìæÐù®j¯ÞæYP„«½ÊÃØC¡W¨ž Œ5æ=«»A&`”t°4N9K;¡­mФ¸ŒúKÓX »°öõ¥ï)ÚÆRŠøËñSó5ñsG…~ :Ðù÷ÀȪ䮌¼ö#}”Å^· ÂAs•¿Uz扂 õ\æµMÕ¢ŽÑ‰>]LÀëf@Í B£×û ÷e“Æ7N6êØü;~G¿÷=i§+óÐÑŒ?786EùÖMµÐ²×ú!‚:«¾Fð·0eµÓ¯¯|¬¶bÉýîõ’Ÿ—N’yFƒ=ýµÏ¦P;”³Y±á”39I— J»í™W…Í+É5õ»“ô…5æÓ«»°l‘CÅàÍIõ_¦Ã¤/Hì×,<…É+ª§ø,û*¶ÜŠ}©Â&¤ŒdSõÁl²EÆ3;_×~}ëŒXPA&™Ïh¢S…6ÌÈK®£ºƒiiWÕÐÄlúô 3ë0T §Ojï¼GæÝ \57/î½øÞˆEëŒÄ¹$žœ® f¤mãKïX$¶¯ÜŸãRî›ö¯Ï[?–X—2«$ß‚“¯ðâ½®¤ºÈ G:0‹Biï•:ÔæüüDŽëï‘Ý ,¾ú¾jÅõ3a( ·'…WŨus¥F-—¦'„s†:`Dbƒ,ê«ö2ñ•}pncÖªÕ£½Äá»w4èÞÉI]Ú5¿Ô‹¸Déͳ§ù/<}Jxù@ò$ó:t¡>-ßÓ—×¼™ƒGûÝZS’Û„:…Ún5g˜…l#”üÓ¹~á>î×"ÔѬ‘p#…W„lŽÂiŠš"_çMD¢‡ ;C2+Jø·o%Y«™8ÝyÝŒƒhÍÏñN-m{Á H²Z•:Ï/<й½:æ—ù h8Õž°›«?S1 gâYœ%ÓÁkAÌ(³žHo*`qÔO²Àã ñoȈŸ. `É&f<쬦Š_«2fñǤ$Áï…Ôcé” û.°ë-«ð5ÖošyÖø-™ÆÓŠ¡Åâ÷?Ͱ¯|%%b÷k¤Ú’šjiñ° ‘ Vñ‘ŸcûM‰ººë3~Á%Úðdê‘,½M â~Úc»hvÿüË]LE¿‘2ĈM%ãï|ÛeÖZøåÚ›à‰O—ì‘ØÃß>"RwÁd=\ð»ò74m[¾6´ðæè#¯¾Ï‘̨=÷|+î7—\3úZXÖ$¨}툇 uR×|ZåOêb#þëeØš‚ñÙ`:ýwËk£¡‰1ޱiD÷áÄnW„žò ÷ÅŠ×/&‚ÐÔ‡Ê{Ž~‚Ð¥ $i´f&^™Qf¦²Œß[3ëX„<+Î[òí›eLQ/LÇÇæéI¤ÙôðYÔÕ‹´Z`YàÆ†¹Â¹mn(í0" ½ß c¢È3ªz·ÜÈJåE 8§u™gÓ|x~(×gÂÝxk”¿)Åy~&¼O;”’ ÁªWã(UØ>(pàƒµ ˆQ–Û—ÆÈì?—º¡òI #‚÷¹—Æãç=ŽÜñiEsMš]–8݈XÎÛáìtGåFØ9´ˆ›¦ge<á7½EÐhB¤ŒÇ&{2[ÍþŸvîúpü¸æÄéÓ]'N3Íéš6Ý]Ónbì´ã1L÷ÔtŽ™šÚ&w˜6ÍÉ1|ß¿áûÛçñyýÏ?ᕦͽÖl»ÛÑçCm´KÞþ™s˜q5é˜;oé#ÀÅŸsÿ¡Slùv¼,~2`‡‚Ò.q æàâ¯Ëá]«=BP¾ÖyF©æ­ŠVwªGÆUŸÑ_+É®õsÛ^i3ÛeÍ»þã·»ª g§ŽÁœ_Àîˆ-6_¡>[?-—Ô„ój¾®% åöàÉÈÞÊ:5ʯÆÄV_¥2ÅXB¼*óŸ^1kÍ‘d MÀC0ɾ«UŒ),:{ƒE‘ý¡4Öö0¥3Y?®Ü×sÝ%öØëx=•‹÷¸$×.Sí/ò­_œrí LŽÑîÎ-ú¯«¸Ìþ›!wò¥eÙ~‘ý®”-(—!˜¶­Ø솋u™j!~³ËW/Q¸fä¶Æ¢&ç,е“T:ìwy_ð íwÂ.üÖ¼O3›Þ6+ÍL{ßìS š«k:q>ï÷Ã'@¦VÉ{”v3êÞ ˜ƒP›T–£Ä¨™â2£ÊšO ÉÖ^¾BÞ‡ýÍLÑQÂמÀÚ„ÑrŠÐDüoóœ»,Ê„Œ%·2Šûëç¨vJÏz,Šþã¤îûxÿݾ>¥¦1>º=zuÅ›ŸZE…>ŸA¾C²Ìm‡Švh?Ûu­º}ûvAçÝ e/Á€e×Ñå:΋x¦`HTg7F“wq+çè¥Â†Ê×ùùm74”ü¿ˆ4ñ?Ý‘é2d¿Öæ) ¬äŸè±‰ª€öGÔ¦·FÊàÖâg+î­5l·ÿÂ\^‘THäcå(´müèu‹[äðm\ê\YC%ì ¬8qŒü<æW ûÊúmÀ†EëbTHÁ¥!À6¬÷LËMZñEíÌ£¾Ô3%Î1 Á ¼ ñ¹j¡¼Z橎M¢{ÕšUaEÈ€ÞÑ“$úWDÒ)ÍÒœšƒ÷œÝNWÔÎŽûOð•gOª>â¼%YÿQ‡¦_ÖÄGwD¦N¤Ò¯¥blÒK{Ôx&Ùó½ähº“Xäæ+ å•[¨±ñ_÷«ïmÕå¢Çí$»‚VoM]¸¯Ÿ*$+G6Ú“§uÀ'a²¾µX™…ï%ì\Y!¼$ëè³þ7wŽR{’'RÅiî‰e,ê Óé¬Ü;AqEj¢ Ò·rAÅv~Ù—Á©Ìq×:w»õRsµ2R¥jÏ’±­Éù¼¶g´í‹>:‹ymÏÎì-¢Ì£?Òt:¢æÇ"!3BÚ&Åb«HHÓ ¯ÏK*^)©óÞ« Qf7äWV«‹ò©õF ¡Û­Ú?59™ѬŠ)õã6°v_BÛ²TÐ2Õ<ðRžÖŸ|Pi'9b×ãðcÌZy»·)Þ6òMêIî¡ý¨jÿb"yè&àk•G+VÆæ›€HFýäR,×çóSoð Bz²ìZúÖw¤•`*Ñäu]ý*¨x‰LiÚ¸pL(ƾL–€=×[ÿ`‰³?Yò4¯^J‡¥rxh.f'$?Ét $oZF;J$ëL¿±W£±W[ÓV ³TaõÀÆn})‹ ÙªÖ@~à™b'ù‘‚û"ðG çØš€¬kAíKééÅ‘ÞÕP•Nç&K¿qëi‚¿1¤Ò3Ìt¼%ÎàtŸÉñä±Ò¸#zF<ò%ÎU%¿WmaS‡Âì€)%¾›9–ooCž d½û”ð¬Ôqoïz,%£úüÙ Œôz·Ñ O¥D ÉR}¹ø¿”é 1¢Ì½[df>ÊqòñÓ,Κ,a<Úìaz^¼¾àg¤ˆ—vá/n(¢Q²qÃÍ^\#î ,Risž{Çžþt_H’ŸÌ¨M'æ‚)c‹;-,2¸œ­±õŠž Þº ’ü¢ØöéPÔ¢U£·ÝÑD(9×B~½1¦M84)wøºe–sÅ\rV“¾~XNMT!»Ø°Ë!uœS§ÄÀ ¬ü%QŸ(}Ù {y¡nFÊ`J‡Åû¾U!‹H»ú¹7ÀZ½ _°ƒûÛ,“ ²ÁõòfxrU°€eq¨¬g3*pÏVò›LÉ(m{¨Ä@ìg§¥À1Õ’–©bãåj#Yèó»š _™a/9vÆÞž nBûûÃÖ{x~²»!äÖG9íšÙ˜L ŽÞµ|î#<3ÑÀh';¦Ï݈bÉ” N‚èJ6…ÌLã²™–ñe黤|a4_&Mêlðã+¼i™ª„9%o¬®ÚË™`Yb9FB®Üå(’Ó#jY6ÌKh¾¦ÒDê´þ­'ƒÒáC¿\tiM€Ã;«Š|~!_øÎ•=ËÊ/ÙØæw¨"³ÿNbã è-Ü#{7éè BºªbF"L ¥jŸó§ïÆ}±8×qaæ _ûp+nv˽ڱk¥Ð^1‚$¸6¸†š4%•þ¨ž„È]T3#¿«ÿî±Â 5ÖvBJ $S‡H1«þ%Do•Ä4keÝdîH%׫Yy7ó¼¹a„´t†À…Ú‘Ûº`èëE„\õò%w™™½ŠÆ¢I6óhÿð°}༬©3.––¼TŒ<ÀÄòA§ýØ;;MâœÁ¢Q¶÷6Ф~–ºU“.„TŠ„¢³ƒß§<—½™Ru)bY4Ãm¢]e—Ü—«c½ÌÔÏbÎ.ü}rurE|/¸ˆzªþêðB%Î $Fõü0¼ß‚ÔŽ,í÷~×vTAzŠàâüú3!GçƒDàÜÔëa%f€I¬À£Eï´-ࢯdÕÛëTÆ(IÚ⤧©Ìi|R°p°õW˜i§Rydö÷ð¬UçíâL÷½6 tÌáCñÖ&X•ÏÍÞ†gfsúSÅBÒüSÞŽ0²û¼àÉA§}¦QéÙ¶ Vps°„kâ®Å"ù²À“ôˆ.þ~}ì‘è÷ë~UGæH\óWÝjó?µìÓôÛ«úÊ‹¸…’‘9í59$ë5i~±=Ä+ªtxóú÷ìV'ošÂz#Ôe —Ìb~Y¹dêöÜ©Býƒªèkÿ,¼iÙ«·í¢;$(}4@g—ÃÏú¶¬“dhÌÏånvï0|´èü›ÃòLã‹ô©Gž_CM¬a©ï INãû@IŒkæÑi•#aÌÅh S¬aÌ;´ä.ànÏë9ŸÚ¤ˆpOÅi¤æóÛýÐ\>¹I‡0¡óŸ¶[ïi'\4l7R¤¹rë}ÖìÝQÊ)M~¬ßïFì ëÆøí_zϯÓλÀbž“^éAñHxMØ#ºoÇB8IûóôÞG6jààºF_Z+ªB‰ÔéÇÑGŸØÚ6~C^·Iè^\ŒçóÔ¦ÖºüÔ?}_9[D†äÿ2Ž¢ïÜS˜¨¶FzszÅÝoºÙÌÞn6stC–`†ÔïË:Yc/Ë ŠãWƹ §û›ÿéISö¤OµÂ+¿ˆîñ ™Ò¾™ üâ-Š4w‰ÄdÌî;fûPÕÎ éî`@b¯â‚]ÇLâ2þ_•èñÚíj3˜¹«éª®@x6<Ìð1›mž–IÞrᵞ2ÌV¶Á³Æ…è½á[¸†›}Üe4LÖ¡”<ûl#~èøP]@ŽÂìŠvîökç³ûUt’áO°óˬ–ÒÐì¶XTÚиh.M\û$»\ß=b b=].¡iÆðï|'¸›D7ÿ»˜yð!œ”¯ÐèoUÆb¼euª¤Ø^?]*îš*PљիÍ^¢#1îÛ¶ZäŠá5:îC¨šºÀ‚%OL_–¦ÎmÒFˆPxºòÓ#ûù÷AÁï8ü”ÔtæÝ¶½Áh¾gªKåBúåþÐå¡Ëø‘Y  2û°. ë5C.àõ6㳫âß…D@Ñ)áÝZ2 *~v£vžw 0,LNT^`Ü©íM…Ë Bº¨UvWZµïJÛcÅ’`ÞPÀO³¾[+ÉñÓô¶T ¯*¹ùdfBDZ°ú)íéUUp'÷ á7‚êv±C `¥ì"3ßhñ ‹²" ôíú§o–ä{Œp˜ÅVÈ#þ$x%Ázb|¥ožAè;ÒÖëÑ;Oøv|úÁJòÁñ›5vKP»VB‚™îñ'7×Ú,µðMÅ’?Ô[bpÙ¿±‘Ä´eÏÂl¸OLµ§~ ÊßU"ä¹Bø²Dv§ÖV_౿ísL/:¥—YÍÅYˆ®hö(¸+Q¦”iÝ]Kw/œƒf€´r"QÈ ˆæGØ3V`kb"lÃ-½¼¤³Lè…3íb CaŠz 0óà}ì¿•Ï £ÎíXRÿÙKÙ¾9<Ö£ZˆìCÉ'@¢¢\«¹Îˆ;kjIe25•üÞN±t®ç±#Ü÷ÇŽbÄA¡_(æyOÐÁáÇN|®ÎÉ6Öëý_üQ ‚û¤†3_ Ú–¥È±—sÕQÎt¸ýo÷SWt¸ 㜗pÖûWB”+ƒB,¨Œ}\&űïYÊ®Ÿ)ŧ<£ÒÍJL1n¼šTOðš™ùQÏGjð–…„…arDéïà¯{|ÏÒø’ÀÑB`ý›ˆ¬a¨—À÷_]ž,–¥Ð_FÄ9Än07`‡˜>ñ,ô_¾÷A`yë£jhª˜Ê† PëõÚÑÝ硟ÚÜé]‰ê‹±‰iÄÜg–}[#H®çH©ÕÃnÆWöXuÄzßOŒ/B=€rdb8;µHZmÞÑá€cî:T³›]ÂÄ ÿ#J6™ú6ØP‹âxªÙ1kʘ¤eмի†”³aÖ±p}zŠ êÛxêtS“*1¢U¨¡¡7÷ܼ®Hæ2p8VtÐÈ’û/©¼Èï#YµÑèz…íñA­OsìíWïŠ?\MR÷W&§†oÉÞמôU½5¥‘0ç‹Õɶ €‚3ÓÉ£EdåÅj6ì&vÝÕâc.Ýâÿzo:Ôú™êgÚ†;žU²u^ê‡iLÄŽ³ÊóÂåxÁå®UR‰Ô=M5ÿˆÔcÓK=_ósÆ÷#r# æg´ s‰eÁsÙPL‰yrÞzAÌŸQgÖnk¼Ü³y ¸ƒˆ†1R²È íRß¹ŠÉÏÊ)Ù¢†‹ê±ïþ•Ì®óš=2ÓžD:Á…ÿ?#ü?ààäíâäëãàEàäðÿNÀ„„ÿ”Üdä endstream endobj 8 0 obj 21486 endobj 9 0 obj << /Length 10 0 R /Filter /FlateDecode >> stream xœ]TËŽ›@¼ósÜVà¦{#!KÑæâCŠ“à18H1 ŒþûLM­6R6ES]S] S¾ž>Ÿæiwå÷méÏqwã4[¼-÷­®‹—i.↩ßßîòm×¢LÍçÇm×Ó<.EÓ¸òGzxÛ·‡{ú4,]üP8çÊoÛ·i¾¸§_¯g–Î÷uý¯qÞ]Unˆc’ûÒ®_Ûkten~> éù´?žSÛ?ÆÏÇäû-õËokÛÇ­/±hªêèšq<qþ{fÊ–nì·[ÑÔµªÒ%ᚸÄ8Ç„9!s”uE]X`jh†Š¸‰GôØ{ˆ`OìɯÁ¬‡\7Ö ¸'îÁiÉi_ˆ_€9Kȳ°^£^Ós=s–g¡~Èú9]ÂBÏÏžž=< õúž>=|zÖ=êB}¾ÐƒÀƒ0+AVBÿÿÂu%¯Ë3 ׬ëù^<Þ‹KÆÌM›§¦‡¦§¦‡¦§¦‡¦'ßçœÉ à®°V ~€¾‘càu :F¾oä[æsö€1sCæÊÙ³+{½Êœ99–9ÌS‘§1CC†ÆÌ ™+gQÌ¢ô ð ä(8FƒŽr?+ö³°ò})Þ—r?(öƒr^Íó2[C¶J?šý°×ÐkœÅ0‹rvͳ³Ws/óL|°o_&>]œ1ïgBß¶täƒ(Ÿ8¦9¾ŸUë²¢+ÿþž) endstream endobj 10 0 obj 557 endobj 11 0 obj << /Type /FontDescriptor /FontName /ZIANTU+NimbusRomNo9L-Regu /Flags 4 /FontBBox [ -168 -281 1031 924 ] /ItalicAngle 0 /Ascent 924 /Descent -281 /CapHeight 924 /StemV 80 /StemH 80 /FontFile 7 0 R >> endobj 5 0 obj << /Type /Font /Subtype /Type1 /BaseFont /ZIANTU+NimbusRomNo9L-Regu /FirstChar 32 /LastChar 126 /FontDescriptor 11 0 R /Encoding /WinAnsiEncoding /Widths [ 0 333 0 0 0 833 778 0 333 333 500 564 250 333 250 278 0 0 0 500 0 500 0 0 0 0 278 278 564 564 564 444 0 722 667 667 722 611 556 722 722 333 0 722 611 889 722 722 556 0 667 556 611 722 722 944 722 722 611 333 0 333 469 500 0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 0 500 500 444 480 200 480 541 ] /ToUnicode 9 0 R >> endobj 1 0 obj << /Type /Pages /Kids [ 6 0 R ] /Count 1 >> endobj 12 0 obj << /Creator (cairo 1.12.16 (http://cairographics.org)) /Producer (cairo 1.12.16 (http://cairographics.org)) >> endobj 13 0 obj << /Type /Catalog /Pages 1 0 R >> endobj xref 0 14 0000000000 65535 f 0000058812 00000 n 0000035386 00000 n 0000000015 00000 n 0000035362 00000 n 0000058252 00000 n 0000035495 00000 n 0000035711 00000 n 0000057325 00000 n 0000057349 00000 n 0000057984 00000 n 0000058007 00000 n 0000058877 00000 n 0000059007 00000 n trailer << /Size 14 /Root 13 0 R /Info 12 0 R >> startxref 59060 %%EOF adlint-3.2.14/share/doc/users_guide_en.texi0000644000004100000410000454120312340630463020660 0ustar www-datawww-data\input texinfo @setfilename users_guide_en.info @documentlanguage en @documentencoding utf-8 @settitle AdLint 3.2.14 User's Guide @copying Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. @end copying @titlepage @page @vskip 0pt plus 1filll @insertcopying @end titlepage @ifnottex @node Top @top Overview @end ifnottex @unnumberedsec AdLint is AdLint is an open source and free source code static analyzer. It can point out insecure or nonportable code fragments, and can measure various quality metrics of the source code. For a part of utilization examples, see @ref{Screen Shot, screenshots}. It (currently) can analyze source code compliant with ANSI C89 / ISO C90 and partly ISO C99. AdLint is written in @uref{http://www.ruby-lang.org/, Ruby}. So, it is available for Windows, Mac OS X, GNU/Linux, FreeBSD and any other platforms supported by Ruby. @unnumberedsec License 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 <@uref{http://www.gnu.org/licenses/}>. @unnumberedsec Index @menu * Installation:Installation. * Sample session:Sample Session. * Command specification:Command. * Input specification:Input. * Output specification:Output. * Message list:Messages. * Metrics list:Metrics. * Code structure information list:CodeStructures. * Appendix:Appendix. * Index:Index. @end menu @node Installation @chapter Installation @menu * Operation Requirements:Requirements. * Hardware environment:Hardware Environment. * Install on Windows:Install on Windows. * Install on Unix:Install on Unix. * Evaluation test and trial use AdLint:Evaluation. @end menu @node Requirements @section Operation requirements AdLint requires installation of Ruby version 1.9.3-p0 or later. And it recommended to install @uref{http://www.gnu.org/software/make/make.html, GNU Make} version 3 or later to enable to auto analyze by using the @file{GNUmakefile} which created by @ref{AdLintize Command, @command{adlintize}} command. @node Hardware Environment @section Hardware environment For the recommended hardware environment, it can't be completely defined because it depends on the size of software. The following is the test environment of AdLint and the analysis time. @subsection MS Windows @itemize @item Environment @itemize @minus @item OS : MS Windows XP (SP3) @item CPU : Intel Core i5 3.33GHz (660) @item Memory : 2 GB @end itemize @item Tested code : Ruby 1.9.3-p0 (lines of code : 620,000) @itemize @minus @item serial analysis : about 7.9 hour @item run 3 parallel to single module analysis : about 3.7 hour @end itemize @end itemize @subsection GNU/Linux @itemize @item Environment @itemize @minus @item OS : Fedora 14 @item CPU : Intel Core i5 3.33GHz (660) @item Memory : 2 GB @end itemize @item Tested code : Ruby 1.9.3-p0 (lines of code : 620,000) @itemize @minus @item serial analysis : about 6.5 hour @item run 2 parallel to single module analysis : about 4.2 hour @end itemize @end itemize @node Install on Windows @section Installation instructions for MS Windows environment @anchor{install_rubyinstaller} @subsection Install Ruby Get the @uref{http://rubyinstaller.org/, RubyInstaller for Windows} 1.9.3-p0 or later from the @uref{http://rubyinstaller.org/downloads/, download page}. Execute RubyInstaller and install ruby with the instructions in the installer. @anchor{install_devkit} @subsection Install DEVELOPMENT KIT (DevKit) Recommend to install DEVELOPMENT KIT (DevKit) including @uref{http://www.gnu.org/software/make/make.html, GNU Make}. Get the DEVELOPMENT KIT (DevKit) from @uref{http://rubyinstaller.org/downloads/, download page} distributed in @uref{http://rubyinstaller.org/, RubyInstaller for Windows} When user execute the @file{DevKit-*.exe} ,DEVELOPMENT KIT will expand to the specified directory. @subsection Set @code{PATH} environment variable Append the following path to @code{PATH} environment variable : @file{bin} of Ruby directory where @ref{install_rubyinstaller, Install ruby}, @file{bin} @file{mingw\bin} of DevKit directory where @ref{install_devkit, Install DEVELOPMENT KIT (DevKit)} @subsection Install AdLint Start command prompt, and download and install the latest AdLint by the following command. @verbatim > gem install adlint @end verbatim If you have to use HTTP proxy, set @option{--http-proxy http://user name:password@@proxy host:port number} to @command{gem} command as follows. @verbatim > gem install adlint --http-proxy http://user:passwd@proxy:3128 @end verbatim @node Install on Unix @section Installation instructions on Unix environment Install Ruby interpreter by following @uref{http://www.ruby-lang.org/en/downloads/, Download Ruby}. And download and install the latest version of AdLint. @verbatim % gem install adlint @end verbatim or @verbatim % sudo gem install adlint @end verbatim If you have to use HTTP proxy, set @option{--http-proxy http://user name:password@@proxy host:port number} to @command{gem} command. @node Evaluation @section Evaluation test and trial use AdLint AdLint provided with small sample C language projects. Evaluation test can be execute with @code{intro_demo} project by the following procedure. Copy @code{intro_demo} project to user's workspace. @verbatim % cp -r `adlint --prefix`/share/demo/intro_demo . @end verbatim Generate the setting file for static analysis by @ref{AdLintize Command, @command{adlintize}} command @verbatim % cd intro_demo % adlintize @end verbatim The following files will be generated. @itemize @item @file{GNUmakefile} --- Make file for GNU make describing the analysis procedure @item @file{adlint_traits.yml} --- Traits file for customize AdLint analysis behavior @item @file{adlint_pinit.h} --- Initial header file of specific project @item @file{adlint_cinit.h} --- Initial header file of compiler @item @file{adlint_all.sh} --- Shell script describing the analysis procedure @item @file{adlint_all.bat} --- Windows batch file describing the analysis procedure @item @file{adlint_files.txt} --- Analyzed file list for shell script and batch file @end itemize If GNU Make version 3 or later installed, it can analyze by the following commands. @verbatim % 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 @end verbatim If GNU Make doesn't installed, use @ref{AdLint Command,@command{adlint}} command directly as follows. @verbatim % 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 @end verbatim When the analysis process is finished with no errors, the following file will be generated. @itemize @item @file{intro_demo.i} --- Source files with pre-processed. @item @file{intro_demo.c.met.csv} --- Code information of single module analysis and metric information @item @file{intro_demo.c.msg.csv} --- Warning message list of single module analysis @item @file{intro_demo.met.csv} --- Metric information of cross module analysis @item @file{intro_demo.msg.csv} --- Warning message list of cross module analysis @end itemize The body of @file{intro_demo.c.msg.csv} ,"doesn't reach the control " "divided by zero ". @node Sample Session @chapter Sample session @menu * Analyze GNU Screen:Analyzing Screen. * Distributed parallel analysis with distmake:Dist Analyzing Screen. @end menu @node Analyzing Screen @section Analyze GNU Screen @subsection Preparation for project Download @uref{ftp://ftp.gnu.org/gnu/screen/screen-4.0.3.tar.gz}, unpack the appropriate directory. @verbatim % 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 @end verbatim @anchor{screen_exam} @subsection Investigate project Confirm how to build in analysis runtime environment by building GNU Screen. @verbatim % 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 @end verbatim @anchor{screen_prepare} @subsection Preparation static analysis Generate the file template of static analysis by using @ref{AdLintize Command, @command{adlintize}} command. Edit setting file depending on the analyzed project. Investigate computer environment, compiler environment of project build. @verbatim % 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. @end verbatim Shows the preset build environment which supports @ref{AdLintize Command, @command{adlintize}} command. Select near the build environment. In this session, GCC 4.5.1 on GNU/Linux i686 architecture is using.So select @code{i686-linux-gcc_4.5.1} . @verbatim % 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 @end verbatim Generate file template which required static analysis by using @ref{AdLintize Command, @command{adlintize}} command. @verbatim % 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 @end verbatim Compare @file{make.log} file which generated at @ref{screen_exam, Project investigation} and @code{SOURCES} list in @file{GNUmakefile} which generated by @ref{AdLintize Command, @command{adlintize}}, edit equally. @verbatim % 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 \ @end verbatim Then find project specific include path from @file{make.log} file which generated @ref{screen_exam, project investigation}. Edit the path to @file{adlint_traits.yml}. @verbatim % 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 @end verbatim @subsection Execute the static analysis Execute static analysis by using @file{GNUmakefile} which generated @ref{screen_prepare, Preparation static analysis}. @verbatim % 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 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 @end verbatim @node Dist Analyzing Screen @section Distributed parallel analysis with distmake @node Command @chapter Command specification @menu * @command{adlintize} command:AdLintize Command. * @command{adlint} command:AdLint Command. * @command{adlint_sma} command:AdLint SMA Command. * @command{adlint_cma} command:AdLint CMA Command. * @command{adlint_chk} command:AdLint CHK Command. @end menu @node AdLintize Command @section @command{adlintize} command @subsection Function Generate the following files which required static analysis by AdLint. @itemize @item @file{GNUmakefile} --- Make file for GNU make describing the analysis procedure @item @file{adlint_traits.yml} --- Traits file for customize AdLint analysis behavior @item @file{adlint_pinit.h} --- Initial header file of specific project @item @file{adlint_cinit.h} --- Initial header file of compiler @item @file{adlint_all.sh} --- Shell script describing the analysis procedure @item @file{adlint_all.bat} --- Windows batch file describing the analysis procedure @item @file{adlint_files.txt} --- Analyzed file list for shell script and batch file @end itemize When it run a @command{adlintize} command, all @file{*.c} files under the directory will set to @code{SOURCES} variable in @file{GNUmakefile}. @subsection How to use When it run a @command{adlintize} command at the root directory of analyzed project, generate required files for static analysis to @file{adlint} directory. @verbatim % 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 @end verbatim @command{adlintize} command provides some preset build environment. To specify the preset build environment, more information can set automatically to the file templates. @option{-L} option shows the list of preset build environment. @verbatim % 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 @end verbatim @option{-e} option can set the preset build environment. @verbatim % 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 @end verbatim @subsection Help message @verbatim 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 @end verbatim @node AdLint Command @section @command{adlint} command @subsection Function Run both single module analysis ( correspond to the compile phase ) and cross module analysis ( correspond to the link phase ) at once. It supports the following method to specify the analyzed source code : from command line and set to the list file. Its activity is same as the following steps. Run a single module analysis by using @ref{AdLint SMA Command, @command{adlint_sma}} command with specify all analyzed source file. Then run a cross module analysis by using @ref{AdLint CMA Command, @command{adlint_cma}}. The result of single module analysis, the following files will be generated for each source files. @itemize @item @file{*.i} --- The result of preprocessed. @item @file{*.c.msg.csv} --- Output message of single module analysis. @item @file{*.c.met.csv} --- Metric measurement result by single module analysis. @item @file{*.c.log} --- Log message of single module analysis. @end itemize The result of cross module analysis, the following files will be generated. @itemize @item @file{project_name.msg.csv} --- Output message of cross module analysis for whole project. @item @file{project_name.met.csv} --- Metric measurement result by cross module analysis for whole project. @item @file{project_name.log} --- Log message of cross module analysis for whole project. @end itemize @subsection How to use When it run a @command{adlint} command as follows at the directory which generated the template of setting files by @ref{AdLintize Command, @command{adlintize}}, run a single module analysis and cross module analysis at once. @verbatim % 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 @end verbatim When it collaborate with text editor or integrated development environment, the message can output to stderr without display the progress by not specifying the @option{-v,--verbose} option. @verbatim % adlint -t adlint_traits.yml -o . -p 1 -l adlint_files.txt ../intro_demo.c:6:9:warning:c_builtin:W0492:UNC:X99:The same identifier name `i' is also used in the member of structure/union, label, tag or normal identifier. ../intro_demo.c:12:13:warning:c_builtin:W0027:UNC:X99:Comparison operation is being made by pointer variable. ../intro_demo.c:16:14:warning:c_builtin:W0422:UNC:X99:Value of the dereferencing pointer may be NULL. ../intro_demo.c:31:13:warning:c_builtin:W0613:UNC:X99:This controlling expression always makes false. ...snip... ../intro_demo.c:55:9:warning:c_builtin:W9001:UNC:X99:Control never reaches to this statement. ../intro_demo.c:2:1:warning:c_builtin:W0071:UNC:X99:Included "../useless_header.h" is not referenced in the translation unit. It can be removed. ../intro_demo.c:61:19:warning:c_builtin:W0628:UNC:X99:A function `int bar(void)' is defined, but this is not used in this project. @end verbatim @subsection Help message @verbatim 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 @end verbatim @node AdLint SMA Command @section @command{adlint_sma} command @subsection Function Execute only single module analysis (correspond to the compile phase) which specified by command line. @* For the result of single module analysis, generate the following files for each source file. @itemize @item @file{*.i} --- The result of preprocessed. @item @file{*.c.msg.csv} --- Output message of single module analysis. @item @file{*.c.met.csv} --- Metric measurement result by single module analysis. @item @file{*.c.log} --- Log message of single module analysis. @end itemize @subsection How to use When it run a @command{adlint_sma} command as follows at the directory which generated the template of setting files by @ref{AdLintize Command, @command{adlintize}}, run only single module analysis. @verbatim % 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 @end verbatim When it collaborate with text editor or integrated development environment, the message can output to stderr without display the progress by not specifying the @option{-v,--verbose} option. @verbatim % adlint_sma -t adlint_traits.yml -o . -p 1 ../intro_demo.c ../intro_demo.c:6:9:warning:c_builtin:W0492:UNC:X99:The same identifier name `i' is also used in the member of structure/union, label, tag or normal identifier. ../intro_demo.c:12:13:warning:c_builtin:W0027:UNC:X99:Comparison operation is being made by pointer variable. ../intro_demo.c:16:14:warning:c_builtin:W0422:UNC:X99:Value of the dereferencing pointer may be NULL. ../intro_demo.c:31:13:warning:c_builtin:W0613:UNC:X99:This controlling expression always makes false. ...snip... ../intro_demo.c:55:9:warning:c_builtin:W9001:UNC:X99:Control never reaches to this statement. ../intro_demo.c:2:1:warning:c_builtin:W0071:UNC:X99:Included "../useless_header.h" is not referenced in the translation unit. It can be removed. ../intro_demo.c:61:19:warning:c_builtin:W0628:UNC:X99:A function `int bar(void)' is defined, but this is not used in this project. @end verbatim @subsection Help message @verbatim 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 @end verbatim @node AdLint CMA Command @section @command{adlint_cma} command @subsection Function Execute only cross module analysis (correspond to the link phase) which specified by command line. @* For the result of cross module analysis, generate the following files. @itemize @item @file{project_name.msg.csv} --- Output message of cross module analysis for whole project. @item @file{project_name.met.csv} --- Metric measurement result by cross module analysis for whole project. @item @file{project_name.log} --- Log message of cross module analysis for whole project. @end itemize @subsection How to use When it run a @command{adlint_cma} command as follows after finished the single module analysis by @ref{AdLint SMA Command, @command{adlint_sma}} command at the directory which generated the template of setting files by @ref{AdLintize Command, @command{adlintize}}, run only cross module analysis. @verbatim % 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 @end verbatim When it collaborate with text editor or integrated development environment, the message can output to stderr without display the progress by not specifying the @option{-v,--verbose} option. @verbatim % adlint_cma -t adlint_traits.yml -o . intro_demo.c.met.csv ../intro_demo.c:61:19:warning:c_builtin:W0628:UNC:X99:A function `int bar(void)' is defined, but this is not used in this project. @end verbatim @subsection Help message @verbatim 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 @end verbatim @node AdLint CHK Command @section @command{adlint_chk} command @subsection Function It can validate the body of @ref{Traits, traits file} by execute only preprocessing to analyzed source file which set by command line. @subsection How to use Create the template of setting file by @ref{AdLintize Command, @command{adlintize}}, and edit the @ref{Traits, traits file}. Then run a @command{adlint_chk} command as follows. It can validate the body of @ref{Traits, traits file} by execute preprocessing. @verbatim % 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 @end verbatim If the include path of header file doesn't set properly,the error occurs as follows. It can check which header file doesn't included by referring the @file{*.c.msg.csv} file which correspond to the source file. @verbatim % 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,A header file of doesn't found. X,../intro_demo.c,1,1,X0003,Analysis processing has been stopped due to unrecoverable error. For the details, refer to `intro_demo.c.msg.csv' and `intro_demo.c.log'. @end verbatim @subsection Help message @verbatim 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 @end verbatim @node Input @chapter Input specification @menu * Input file:Input Files. * Traits file:Traits. * Message definition file:Message Definition. * Source code annotation:Source Code Annotation. @end menu @node Input Files @section Input files Analysis action can set the following two kind of files. @table @var @itemx @ref{Traits, traits file} Describe how to process the analysis. Edit by @uref{http://yaml.org/, YAML style}. @itemx @ref{Message Definition, Message definition file} Describe the message catalog.Edit by @uref{http://yaml.org/, YAML style}. @end table Traits file sets the path by the command option @option{--traits} of @ref{AdLint Command, @command{adlint}} , @ref{AdLint SMA Command, @command{adlint_sma}} , @ref{AdLint CMA Command, @command{adlint_cma}}. Message definition file is installed in @file{etc/mesg.d} at AdLint install path. @ref{AdLint Command, @command{adlint}} , @ref{AdLint SMA Command,@command{adlint_sma}} , @ref{AdLint CMA Command, @command{adlint_cma}} command selects the appropriate the message definition file by following the language which specified in @ref{message_traits:language, @code{language}} of @ref{Message Traits, message traits}. @node Traits @section Traits file @menu * Global Traits:Global Traits. * Project Traits:Project Traits. * Compiler Traits:Compiler Traits. * Linker Traits:Linker Traits. * Message Traits:Message Traits. @end menu Describe @ref{Project Traits, Project Traits} , @ref{Compiler Traits, Compiler Traits} , @ref{Linker Traits, Linker Traits} , @ref{Message Traits, Message Traits} to a single @uref{http://yaml.org/, YAML format} setting file ( @ref{Traits Sample, sample} ). When it run a @command{adlintize} command at the root directory of analyzed project, generate the template of traits file for the project, @file{GNUmakefile} and shell script. @verbatim % 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 @end verbatim You can specify environment variable as items in the traits file to be described. For example, specify the environment variable @code{ENV_VAR} as the item @code{item} like below; @verbatim item: $ENV_VAR @end verbatim And embed environment variables in a string value like below; @verbatim item: "prefix${ENV_VAR}suffix" @end verbatim You can also specify multiple values of directory pathname list item by one environment variable like below; @verbatim % export ENV_VAR="/usr/local/include:/usr/include" @end verbatim @verbatim include_path: - $ENV_VAR @end verbatim @node Global Traits @subsection Global Traits @cindex global_traits Global Traits can be configured by root items in traits file. @multitable @columnfractions .01 .3 .1 @headitem No. @tab Items @tab Styles @tab Contents @item 1 @cindex version @anchor{global_traits:version} @tab @code{version} @tab string @tab This item represents the format version of this traits file. You should not edit this item manually. @item 2 @cindex exam_packages @anchor{global_traits:exam_packages} @tab @code{exam_packages} @tab array of string @tab This item represents list of the source code examination package names to be used by AdLint. @code{"c_builtin"} is a builtin examination package name bundled with AdLint core. New optional source code examination packages will be released in the future. For example, If you install @code{adlint-exam-c_ansi} optional examination package which checks whether the source code complies with ANSI C, you can edit @code{exam_packages} item as below; In this case, only ANSI C compliance check will be run. @example exam_packages: - "c_ansi" @end example In this case, both AdLint builtin check and ANSI C compliance check will be run. @example exam_packages: - "c_builtin" - "c_ansi" @end example @end multitable @node Project Traits @subsection Project Traits @cindex project_traits Project Traits can set under the @code{project_traits} in traits file. @multitable @columnfractions .01 .3 .1 @headitem No. @tab Items @tab Styles @tab Contents @item 1 @cindex project_traits:project_name @anchor{project_traits:project_name} @tab @code{project_name} @tab string @tab Set project name. @item 2 @cindex project_traits:project_root @anchor{project_traits:project_root} @tab @code{project_root} @tab string @tab Set pathname of the project root directory. @item 3 @cindex project_traits:target_files:inclusion_paths @anchor{project_traits:target_files:inclusion_paths} @tab @code{target_files:inclusion_paths} @tab array of string @tab Specify directory paths which contain analysis target source files. An entry can have multiple pathnames with @code{`:'} (or @code{`;'} on windows) separators. @item 4 @cindex project_traits:target_files:exclusion_paths @anchor{project_traits:target_files:exclusion_paths} @tab @code{target_files:exclusion_paths} @tab array of string @tab Specify directory paths to eliminate analysis target source files under the directory. If omitted, AdLint will check all the files included by the target source files such as 3rd-party library headers under @ref{project_traits:target_files:inclusion_paths, @code{target_files:inclusion_paths}}. An entry can have multiple pathnames with @code{`:'} (or @code{`;'} on windows) separators. @item 5 @cindex project_traits:initial_header @anchor{project_traits:initial_header} @tab @code{initial_header} @tab string @tab Set the header files which is included at the top of specified source files. For example, project specific macro definition will be described in this file. @item 6 @cindex project_traits:file_search_paths @anchor{project_traits:file_search_paths} @tab @code{file_search_paths} @tab array of string @tab Set project specific include-file search paths. An entry can have multiple pathnames with @code{`:'} (or @code{`;'} on windows) separators. @item 7 @cindex project_traits:coding_style:indent_style @anchor{project_traits:coding_style:indent_style} @tab @code{coding_style:indent_style} @tab string @tab Indent style which is a convention governing the identation of blocks. Select from @code{"K&R"}, @code{"Allman"} and @code{"GNU"}. @code{"K&R"} style is @example int foo(int i) @{ if (i == 0) @{ return 0; @} return i; @} @end example @code{"Allman"} style is @example int foo(int i) @{ if (i == 0) @{ return 0; @} return i; @} @end example @code{"GNU"} style is @example int foo(int i) @{ if (i == 0) @{ return 0; @} return i; @} @end example @item 8 @cindex project_traits:coding_style:tab_width @anchor{project_traits:coding_style:tab_width} @tab @code{coding_style:tab_width} @tab integer value @tab Set the appearance number of digits of tab character @item 9 @cindex project_traits:coding_style:indent_width @anchor{project_traits:coding_style:indent_width} @tab @code{coding_style:indent_width} @tab integer value @tab Set the appearance number of digits of indent @item 10 @cindex project_traits:file_encoding @anchor{project_traits:file_encoding} @tab @code{file_encoding} @tab string @tab Set the character encoding. If the value is not set, process as "ASCII-8BIT". @end multitable @node Compiler Traits @subsection Compiler Traits @cindex compiler_traits Compiler Traits can set under the @code{compiler_traits} in traits file. @multitable @columnfractions .01 .3 .1 @headitem No. @tab Items @tab Styles @tab Contents @item 1 @cindex compiler_traits:initial_header @anchor{compiler_traits:initial_header} @tab @code{initial_header} @tab string @tab Set the header files which is included at the top of specified source files and automatically included before project specific @code{initial_header}. This file describes compiler specific macro, type definition and others. @item 2 @cindex compiler_traits:file_search_paths @anchor{compiler_traits:file_search_paths} @tab @code{file_search_paths} @tab array of string @tab Set the compiler specific include-file search paths. An entry can have multiple pathnames with @code{`:'} (or @code{`;'} on windows) separators. @item 3 @cindex compiler_traits:standard_types:char_size @anchor{compiler_traits:standard_types:char_size} @tab @code{standard_types:char_size} @tab integer value @tab Set the size of @code{char} type family by bit quantities. @item 4 @cindex compiler_traits:standard_types:char_alignment @anchor{compiler_traits:standard_types:char_alignment} @tab @code{standard_types:char_alignment} @tab integer value @tab Set the memory alignment of @code{char} type family by bit quantities. @item 5 @cindex compiler_traits:standard_types:short_size @anchor{compiler_traits:standard_types:short_size} @tab @code{standard_types:short_size} @tab integer value @tab Set the size of @code{short} type family by bit quantities. @item 6 @cindex compiler_traits:standard_types:short_alignment @anchor{compiler_traits:standard_types:short_alignment} @tab @code{standard_types:short_alignment} @tab integer value @tab Set the memory alignment of @code{short} family by bit quantities. @item 7 @cindex compiler_traits:standard_types:int_size @anchor{compiler_traits:standard_types:int_size} @tab @code{standard_types:int_size} @tab integer value @tab Set the size of @code{int} type family by bit quantities. @item 8 @cindex compiler_traits:standard_types:int_alignment @anchor{compiler_traits:standard_types:int_alignment} @tab @code{standard_types:int_alignment} @tab integer value @tab Set the memory alignment of @code{int} type family by bit quantities. @item 9 @cindex compiler_traits:standard_types:long_size @anchor{compiler_traits:standard_types:long_size} @tab @code{standard_types:long_size} @tab integer value @tab Set the size of @code{long int} type family by bit quantities. @item 10 @cindex compiler_traits:standard_types:long_alignment @anchor{compiler_traits:standard_types:long_alignment} @tab @code{standard_types:long_alignment} @tab integer value @tab Set the memory alignment of @code{long int} type family by bit quantities. @item 11 @cindex compiler_traits:standard_types:long_long_size @anchor{compiler_traits:standard_types:long_long_size} @tab @code{standard_types:long_long_size} @tab integer value @tab Set the size of @code{long long int} type family by bit quantities. @item 12 @cindex compiler_traits:standard_types:long_long_alignment @anchor{compiler_traits:standard_types:long_long_alignment} @tab @code{standard_types:long_long_alignment} @tab integer value @tab Set the memory alignment of @code{long long int} type family by bit quantities. @item 13 @cindex compiler_traits:standard_types:float_size @anchor{compiler_traits:standard_types:float_size} @tab @code{standard_types:float_size} @tab integer value @tab Set the size of @code{float} type family by bit quantities. @item 14 @cindex compiler_traits:standard_types:float_alignment @anchor{compiler_traits:standard_types:float_alignment} @tab @code{standard_types:float_alignment} @tab integer value @tab Set the memory alignment of @code{float} type family by bit quantities. @item 15 @cindex compiler_traits:standard_types:double_size @anchor{compiler_traits:standard_types:double_size} @tab @code{standard_types:double_size} @tab integer value @tab Set the size of @code{double} type family by bit quantities. @item 16 @cindex compiler_traits:standard_types:double_alignment @anchor{compiler_traits:standard_types:double_alignment} @tab @code{standard_types:double_alignment} @tab integer value @tab Set the memory alignment of @code{double} type family by bit quantities. @item 17 @cindex compiler_traits:standard_types:long_double_size @anchor{compiler_traits:standard_types:long_double_size} @tab @code{standard_types:long_double_size} @tab integer value @tab Set the size of @code{long double} type family by bit quantities. @item 18 @cindex compiler_traits:standard_types:long_double_alignment @anchor{compiler_traits:standard_types:long_double_alignment} @tab @code{standard_types:long_double_alignment} @tab integer value @tab Set the memory alignment of @code{long double} type family by bit quantities. @item 19 @cindex compiler_traits:standard_types:code_ptr_size @anchor{compiler_traits:standard_types:code_ptr_size} @tab @code{standard_types:code_ptr_size} @tab integer value @tab Set the size of function pointer by bit quantities. @item 20 @cindex compiler_traits:standard_types:code_ptr_alignment @anchor{compiler_traits:standard_types:code_ptr_alignment} @tab @code{standard_types:code_ptr_alignment} @tab integer value @tab Set the memory alignment of function pointer by bit quantities. @item 21 @cindex compiler_traits:standard_types:data_ptr_size @anchor{compiler_traits:standard_types:data_ptr_size} @tab @code{standard_types:data_ptr_size} @tab integer value @tab Set the size of data pointer by bit quantities. @item 22 @cindex compiler_traits:standard_types:data_ptr_alignment @anchor{compiler_traits:standard_types:data_ptr_alignment} @tab @code{standard_types:data_ptr_alignment} @tab integer value @tab Set the memory alignment of data pointer by bit quantities. @item 23 @cindex compiler_traits:standard_types:char_as_unsigned_char @anchor{compiler_traits:standard_types:char_as_unsigned_char} @tab @code{standard_types:char_as_unsigned_char} @tab boolean value @tab If @code{`char'} type treat as @code{`unsigned char'}, set true. @item 24 @cindex compiler_traits:arithmetic:logical_right_shift @anchor{compiler_traits:arithmetic:logical_right_shift} @tab @code{arithmetic:logical_right_shift} @tab boolean value @tab If right shift expression @code{`>>'} treat as logical shift instead of arithmetic shift, set true. @item 25 @cindex compiler_traits:identifier_max @anchor{compiler_traits:identifier_max} @tab @code{identifier_max} @tab integer value @tab Set the maximum number of length which compiler can identifier. @item 26 @cindex compiler_traits:extension_substitutions @anchor{compiler_traits:extension_substitutions} @tab @code{extension_substitutions} @tab map of string @tab Set the token replacement pattern to adjust compiler specific extension. AdLint puts the warning message @ref{W0061} all uses of this extension. If @code{`__attribute__ ( arbitrary token row )'} delete after pre-process and puts the warning @ref{W0061}, set as follows. @example extension_substitutions: "__attribute__(__adlint__any)": "" @end example And if the token @code{`__restrict'} replaces @code{`restrict'} and put the warning @ref{W0061}, set as follows. @example extension_substitutions: "__restrict": "restrict" @end example @item 27 @cindex compiler_traits:arbitrary_substitutions @anchor{compiler_traits:arbitrary_substitutions} @tab @code{arbitrary_substitutions} @tab map of string @tab Same as @ref{compiler_traits:extension_substitutions, @code{extension_substitutions}}, replace the token after pre-process, the difference is doesn't put the warning @ref{W0061}. @end multitable @node Linker Traits @subsection Linker Traits @cindex linker_traits Linker Traits sets under @code{linker_traits} items. @multitable @columnfractions .01 .3 .1 @headitem No. @tab Items @tab Styles @tab Contents @item 1 @cindex linker_traits:identifier_max @anchor{linker_traits:identifier_max} @tab @code{identifier_max} @tab integer value @tab Set the maximum number of length which linker can identifier. @item 2 @cindex linker_traits:identifier_ignore_case @anchor{linker_traits:identifier_ignore_case} @tab @code{identifier_ignore_case} @tab boolean value @tab Set whether check case sensitive by linker when identifier external symbol. @end multitable @node Message Traits @subsection Message Traits @cindex message_traits Message Traits can set under the @code{message_traits} in traits file. . @multitable @columnfractions .01 .3 .1 @headitem No. @tab Items @tab Styles @tab Contents @item 1 @cindex message_traits:language @anchor{message_traits:language} @tab @code{language} @tab string @tab Set the language of message body.(Currently) it available @code{"en_US"} or @code{"ja_JP"}. @item 2 @cindex message_traits:individual_suppression @anchor{message_traits:individual_suppression} @tab @code{individual_suppression} @tab boolean @tab This item enables message suppression by @ref{Source Code Annotation, source code annotations}. In case of @code{true}, message suppression by annotations will be enabled. @item 3 @cindex message_traits:exclusion:categories @anchor{message_traits:exclusion:categories} @tab @code{exclusion:categories} @tab array of string @tab This item represents excluding code checks by its message categories. @item 4 @cindex message_traits:exclusion:severities @anchor{message_traits:exclusion:severities} @tab @code{exclusion:severities} @tab regexp string @tab This item represents excluding code checks by its message severities. @item 5 @cindex message_traits:exclusion:messages @anchor{message_traits:exclusion:messages} @tab @code{exclusion:messages} @tab map of Message ID and string @tab This item represents excluding code checks by its message ID. Because a message ID is not unique in multiple examination packages, you should also specify the name of the examination package including the message. @item 6 @cindex message_traits:inclusion:messages @anchor{message_traits:inclusion:messages} @tab @code{inclusion:messages} @tab map of Message ID and string @tab This item represents messages which is excluded by settings of @code{exclusion} section but will be used by AdLint. For example, you can bring back the specified code checks which is excluded by @ref{message_traits:exclusion:categories, exclusion:categories}. @item 7 @cindex message_traits:change_list @anchor{message_traits:change_list} @tab @code{change_list} @tab map of Message ID and changed contents @tab This item represents overriding contents of existing one in the message definition. For example, you can change contents of @code{W9999} message in @code{"c_builtin"} examination package as below; @example change_list: W9999: package: "c_builtin" classes: - ":" - ":" format: "new message format of this message." @end example @end multitable @node Message Definition @section Message Definition file. Describe all error and warning message to setting file by @uref{http://yaml.org/, format}. Normally this file doesn't edit directly. If it need to change the message body, set the changes to @ref{message_traits:change_list, @code{change_list}} in traits file. @node Source Code Annotation @section Source Code Annotation You can write an annotation which controls AdLint's analysis behavior as an ordinary comment of the programming language. @subsection Warning message suppression annotation An annotation starts with @code{ADLINT:SF} in an ordinary comment specifies that messages listed in the annotation of the annotated file will be suppressed. An annotation starts with @code{ADLINT:SL} in an ordinary comment specifies that messages listed in the annotation of the annotated line will be suppressed. The following describes format and usage of the annotation. @subheading @bullet{ Common definitions} @example @anchor{message_specifier_list} message_specifier_list : @ref{qualified_message_specifier} | @ref{unqualified_message_specifier} | @ref{message_specifier_list} @ref{qualified_message_specifier} | @ref{message_specifier_list} @ref{unqualified_message_specifier} @anchor{qualified_message_specifier} qualified_message_specifier : ':' @ref{package_name} @ref{unqualified_message_specifier} @anchor{unqualified_message_specifier} unqualified_message_specifier : ':' '[' @ref{message_name_list} ']' @anchor{message_name_list} message_name_list : @ref{message_name} | @ref{message_name_list} ',' @ref{message_name} @anchor{message_name} message_name : 'W' [0-9]@{4@} @anchor{package_name} package_name : any string specified in @ref{global_traits:exam_packages, @code{exam_packages}} of the traits file. @end example @subheading @bullet{ File-wise message suppressor} @example @anchor{file_wise_suppressor_annotation} file_wise_suppressor_annotation : "/*" @ref{file_wise_suppressor_head} @ref{message_specifier_list} "*/" | "//" @ref{file_wise_suppressor_head} @ref{message_specifier_list} @anchor{file_wise_suppressor_head} file_wise_suppressor_head : "ADLINT:SF" @end example @subheading @bullet{ Line-wise message suppressor} @example @anchor{line_wise_suppressor_annotation} line_wise_suppressor_annotation : "/*" @ref{line_wise_suppressor_head} @ref{message_specifier_list} "*/" | "//" @ref{line_wise_suppressor_head} @ref{message_specifier_list} @anchor{line_wise_suppressor_head} line_wise_suppressor_head : "ADLINT:SL" @end example @subheading @bullet{ Sample code} @verbatim /* ADLINT:SF:[W0001,W0002] (to suppress W0001 and W0002 of all exam-packages in this file.) */ #include 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); } @end verbatim @node Output @chapter Output specification @menu * Output file:Output Files. * Common definition:Common. * Metrics file:Metrics File. * Message file:Message File. @end menu @node Output Files @section Output files Print the result of single module analysis to the following four different files. @multitable @columnfractions .01 .2 .2 .3 @headitem No. @tab Name @tab File name @tab Contents @item 1 @tab Preprocessed source @tab @file{.i} @tab The line beginning with # is line marker. @item 2 @tab @ref{Metrics File, metrics file} @tab @file{.met.csv} @tab Print the metrics and the code information by CSV format. @item 3 @tab @ref{Message File, message file} @tab @file{.msg.csv} @tab Print the error and the warning message by CSV format. @item 4 @tab Log file @tab @file{.log} @tab Print the log of single module analysis. @end multitable Print the result of cross module analysis to the following three different files. @multitable @columnfractions .01 .2 .2 .3 @headitem No. @tab Name @tab File name @tab Contents @item 1 @tab @ref{Metrics File, metrics file} @tab @file{.met.csv} @tab Print the metrics information by CSV format. @item 2 @tab @ref{Message File, message file} @tab @file{.msg.csv} @tab Print the warning message by CSV format. @item 3 @tab Log file @tab @file{.log} @tab Print the log of cross module analysis. @end multitable @node Common @section Common definition @example @anchor{version_number} version_number : @ref{major_version} '.' @ref{minor_version} '.' @ref{patch_level} @anchor{major_version} major_version : integer value @anchor{minor_version} minor_version : integer value @anchor{patch_level} patch_level : integer value @anchor{exec_timestamp} exec_timestamp : Year '-' Month '-' Day ' ' Hour ':' Minute ':' Second ':' Time zone @anchor{exec_working_directory} exec_working_directory : Full path name of run the analysis. @anchor{new_line} new_line : line feed string depends on runtime environment. @anchor{file_path} file_path : file path name depends on runtime environment. @anchor{line_no} line_no : integer value @anchor{lines} lines : integer value @anchor{column_no} column_no : integer value @anchor{location} location : @ref{file_path} ',' @ref{line_no} ',' @ref{column_no} @anchor{function_identifier} function_identifier : @ref{function_name} ',' @ref{function_signature} @anchor{function_name} function_name : c_identifier @anchor{function_signature} function_signature : c_declaration_specifiers c_declarator @anchor{function_linkage_type} function_linkage_type : 'I' <- Internal | 'X' <- eXternal @anchor{function_scope_type} function_scope_type : 'F' <- File | 'B' <- Block @anchor{function_declaration_type} function_declaration_type : 'E' <- Explicit | 'I' <- Implicit @anchor{type_name} type_name : c_identifier @anchor{type_rep} type_rep : c_declaration @anchor{variable_name} variable_name : c_identifier @anchor{initializer_rep} initializer_rep : c_initializer @anchor{assignment_rep} assignment_rep : c_assignment_operator c_assignment_expression @anchor{macro_name} macro_name : c_identifier @anchor{macro_value} macro_value : | @ref{pp_tokens} @anchor{pp_tokens} pp_tokens : c_pp_tokens @anchor{exam_package_name} exam_package_name : arbitrary string @anchor{message_id} message_id : 'W' [0-9]@{4@} | 'E' [0-9]@{4@} | 'C' [0-9]@{4@} @anchor{message_category} message_category : [A-Z]@{3@} @anchor{message_severity} message_severity : [A-Z][0-9]@{2@} @anchor{message_text} message_text : arbitrary string @end example @node Metrics File @section metrics file @itemize @item @ref{Output_Metrics_Ver, Version records} @item @ref{Output_Metrics_Dcl, Declaration records} @item @ref{Output_Metrics_Def, Type definition records} @item @ref{Output_Metrics_Ini, Initialize records} @item @ref{Output_Metrics_Asn, Assignment records} @item @ref{Output_Metrics_Dep, Dependency records} @item @ref{Output_Metrics_Lit, Literal records} @item @ref{Output_Metrics_Pre, Preprocess records} @item @ref{Output_Metrics_Met, Metirc value records} @end itemize @anchor{Output_Metrics_Ver} @subsection Version records @example @anchor{metrics_version_record} metrics_version_record : @ref{metrics_version_head} ',' @ref{version_number} ',' @ref{exec_timestamp} ',' @ref{exec_working_directory} @anchor{metrics_version_head} metrics_version_head : "VER" @end example @anchor{Output_Metrics_Ver_Sample} @subheading @bullet{ Output example} @example VER,0.6.4,2012-02-16 14:10:59 +0900,/home/yanoh/intro_demo @end example @anchor{Output_Metrics_Dcl} @subsection Declaration records @example @anchor{declaration_record} declaration_record : @ref{declaration_head} ',' @ref{location} ',' @ref{typedcl_record_body} | @ref{declaration_head} ',' @ref{location} ',' @ref{gvardcl_record_body} | @ref{declaration_head} ',' @ref{location} ',' @ref{funcdcl_record_body} @anchor{declaration_head} declaration_head : "DCL" @end example @subheading @bullet{ Type definition records} @example @anchor{typedcl_record_body} typedcl_record_body : 'T' ',' @ref{typedcl_type} ',' @ref{type_name} ',' @ref{type_rep} @anchor{typedcl_type} typedcl_type : 'T' <- typedef | 'S' <- struct | 'U' <- union | 'E' <- enum @end example @subheading @bullet{ Global variable declaration Record} @example @anchor{gvardcl_record_body} gvardcl_record_body : 'V' ',' @ref{variable_name} ',' @ref{type_rep} @end example @subheading @bullet{ Function declaration record} @example @anchor{funcdcl_record_body} funcdcl_record_body : 'F' ',' @ref{function_linkage_type} ',' @ref{function_scope_type} ',' @ref{function_declaration_type} ',' @ref{function_identifier} @end example @anchor{Output_Metrics_Dcl_Sample} @subheading @bullet{ Output example} @verbatim 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); @end verbatim @example 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) @end example @anchor{Output_Metrics_Def} @subsection Declaration records @example @anchor{definition_record} definition_record : @ref{definition_head} ',' @ref{location} ',' @ref{vardef_record_body} | @ref{definition_head} ',' @ref{location} ',' @ref{fundef_record_body} | @ref{definition_head} ',' @ref{location} ',' @ref{macrodef_record_body} | @ref{definition_head} ',' @ref{location} ',' @ref{labeldef_record_body} @anchor{definition_head} definition_head : "DEF" @end example @subheading @bullet{ Variable declaration records} @example @anchor{vardef_record_body} vardef_record_body : 'V' ',' @ref{variable_linkage_type} ',' @ref{variable_scope_type} ',' @ref{storage_class_type} ',' @ref{variable_name} ',' @ref{type_rep} @anchor{variable_linkage_type} variable_linkage_type : 'I' <- Internal | 'X' <- eXternal | 'N' <- None @anchor{variable_scope_type} variable_scope_type : 'F' <- File | 'B' <- Block | 'P' <- Parameter @anchor{storage_class_type} storage_class_type : 'A' <- Auto | 'R' <- Register | 'S' <- Static | 'N' <- None @end example @subheading @bullet{ Function definition records} @example @anchor{fundef_record_body} fundef_record_body : 'F' ',' @ref{function_linkage_type} ',' @ref{function_scope_type} ',' @ref{function_identifier} ',' @ref{lines} @end example @subheading @bullet{ Macro definition records} @example @anchor{macrodef_record_body} macrodef_record_body : 'M' ',' @ref{macro_name} ',' @ref{macro_form_type} @anchor{macro_form_type} macro_form_type : 'O' <- Object | 'F' <- Function @end example @subheading @bullet{ Label definition record} @example @anchor{labeldef_record_body} labeldef_record_body : 'L' ',' @ref{label_name} @anchor{label_name} label_name : c_identifier @end example @anchor{Output_Metrics_Def_Sample} @subheading @bullet{ Output example} @verbatim 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)) @end verbatim @example 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 @end example @anchor{Output_Metrics_Ini} @subsection Initialization record @example @anchor{initialization_record} initialization_record : @ref{initialization_head} ',' @ref{location} ',' @ref{variable_name} ',' @ref{initializer_rep} @anchor{initialization_head} initialization_head : "INI" @end example @anchor{Output_Metrics_Ini_Sample} @subheading @bullet{ Output example} @verbatim 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: } @end verbatim @example 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 @end example @anchor{Output_Metrics_Asn} @subsection Assignment records @example @anchor{assignment_record} assignment_record : @ref{assignment_head} ',' @ref{location} ',' @ref{variable_name} ',' @ref{assignment_rep} @anchor{assignment_head} assignment_head : "ASN" @end example @anchor{Output_Metrics_Asn_Sample} @subheading @bullet{ Output example} @verbatim 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: } @end verbatim @example ASN,test.c,5,12,i,= 0 ASN,test.c,7,15,i,+= 1 @end example @anchor{Output_Metrics_Dep} @subsection Dependency records @example @anchor{dependency_record} dependency_record : @ref{dependency_head} ',' @ref{location} ',' @ref{include_record_body} | @ref{dependency_head} ',' @ref{location} ',' @ref{call_record_body} | @ref{dependency_head} ',' @ref{location} ',' @ref{xref_record_body} @anchor{dependency_head} dependency_head : "DEP" @end example @subheading @bullet{ Include records} @example @anchor{include_record_body} include_record_body : 'I' ',' @ref{included_fpath} @anchor{included_fpath} included_fpath : '<' @ref{file_path} '>' | '"' @ref{file_path} '"' @end example @subheading @bullet{ Caller function records} @example @anchor{call_record_body} call_record_body : 'C' ',' @ref{caller_function} ',' @ref{callee_function} @anchor{caller_function} caller_function : @ref{function_identifier} @anchor{callee_function} callee_function : @ref{function_identifier} @end example @subheading @bullet{ external reference records} @example @anchor{xref_record_body} xref_record_body : 'X' ',' xref_variable_record_body | 'X' ',' xref_function_record_body @anchor{xref_variable_record_body} xref_variable_record_body : 'V' ',' @ref{accessor_function} ',' @ref{access_type} ',' @ref{accessee_variable} @anchor{xref_function_record_body} xref_function_record_body : 'F' ',' @ref{accessor_function} ',' @ref{access_type} ',' @ref{accessee_function} @anchor{accessor_function} accessor_function : @ref{function_identifier} @anchor{access_type} access_type : 'R' | 'W' @anchor{accessee_variable} accessee_variable : @ref{variable_name} @anchor{accessee_function} accessee_function : @ref{function_identifier} @end example @anchor{Output_Metrics_Dep_Sample} @subheading @bullet{ Output example} @verbatim 1: #include 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: } @end verbatim @example DEP,test.c,1,1,I, 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 @end example @anchor{Output_Metrics_Lit} @subsection Literal records @example @anchor{literal_record} literal_record : @ref{literal_head} ',' @ref{location} ',' @ref{literal_type} ',' @ref{literal_prefix} ',' @ref{literal_suffix} ',' @ref{literal_value} @anchor{literal_head} literal_head : "LIT" @anchor{literal_type} 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 @anchor{literal_prefix} literal_prefix : | 'l' | 'L' | '0' | '0x' | '0X' | '0b' | '0B' @anchor{literal_suffix} literal_suffix : | 'u' | 'U' | 'l' | 'L' | 'ul' | 'Ul' | 'uL' | 'UL' | 'ull' | 'Ull' | 'uLL' | 'ULL' | 'll' | 'LL' | 'f' | 'F' @anchor{literal_value} literal_value : c_constant | c_string_literal @end example @anchor{Output_Metrics_Lit_Sample} @subheading @bullet{ Output example} @verbatim 1: unsigned int i = 0xFFU; 2: 3: int foo(long l) 4: { 5: const wchar_t *s = L"foobar"; 6: 7: return 0; 8: } @end verbatim @example LIT,test.c,1,18,HN,0x,U,0xFFU LIT,test.c,5,24,SW,L,,"L""foobar""" @end example @anchor{Output_Metrics_Pre} @subsection Preprocess record @example @anchor{preprocess_record} preprocess_record : @ref{preprocess_head} ',' @ref{location} ',' @ref{pp_directive} ',' @ref{pp_tokens} @anchor{preprocess_head} preprocess_head : "PRE" @anchor{pp_directive} pp_directive : "#if" | "#ifdef" | "#ifndef" | "#elif" | "#else" | "#endif" | "#include" | "#define" | "#undef" | "#line" | "#error" | "#pragma" | "#" @end example @anchor{Output_Metrics_Pre_Sample} @subheading @bullet{ Output example} @verbatim 1: #pragma once 2: 3: #if defined(NDEBUG) 4: void debug(const char *msg) {} 5: #else 6: #include 7: void debug(const char *msg) 8: { 9: puts(msg); 10: } 11: #endif @end verbatim @example 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, PRE,test.c,11,1,#endif, @end example @anchor{Output_Metrics_Met} @subsection Metric value records @example @anchor{metric_record} metric_record : @ref{metric_head} ',' @ref{file_metric_record_body} | @ref{metric_head} ',' @ref{func_metric_record_body} @anchor{metric_head} metric_head : "MET" @anchor{file_metric_record_body} file_metric_record_body : @ref{file_metric_name} ',' @ref{file_path} ',' @ref{metric_value} @anchor{func_metric_record_body} func_metric_record_body : @ref{func_metric_name} ',' @ref{function_identifier} ',' @ref{location} ',' @ref{metric_value} @anchor{file_metric_name} file_metric_name : "FL_STMT" <- Number of statements | "FL_FUNC" <- Number of functions @anchor{func_metric_name} func_metric_name : "FN_STMT" <- Number of statements | "FN_UNRC" <- Number of unreached statements | "FN_LINE" <- Number of lines | "FN_PARA" <- Number of parameters | "FN_UNUV" <- Number of not use /not reuse variables | "FN_CSUB" <- Location number of call function | "FN_CALL" <- Location number of called from function | "FN_GOTO" <- Number of goto statement | "FN_RETN" <- Number of return point in a function | "FN_UELS" <- Number of 'if' statement unless 'else' | "FN_NEST" <- Maximum number of nest of control flow graph | "FN_PATH" <- Presumed number of static path | "FN_CYCM" <- Cyclomatic complexity @anchor{metric_value} metric_value : integer value @end example @node Message File @section message file @example @anchor{message_file} message_file : @ref{message_version_record} | @ref{message_version_record} @ref{new_line} @ref{message_list} @anchor{message_version_record} message_version_record : 'V' ',' @ref{version_number} ',' @ref{exec_timestamp} ',' @ref{exec_working_directory} @anchor{message_list} message_list : @ref{error_record} | @ref{warning_record} | @ref{message_list} @ref{new_line} @ref{error_record} | @ref{message_list} @ref{new_line} @ref{warning_record} @anchor{error_record} error_record : @ref{error_line} @ref{new_line} @ref{context_line_list} @anchor{error_line} error_line : 'E' ',' @ref{file_path} ',' @ref{line_no} ',' @ref{column_no} ',' @ref{exam_package_name} ',' @ref{message_id} ',' @ref{message_category} ',' @ref{message_severity} ',' @ref{message_text} @anchor{warning_record} warning_record : @ref{warning_line} @ref{new_line} @ref{context_line_list} @anchor{warning_line} warning_line : 'W' ',' @ref{file_path} ',' @ref{line_no} ',' @ref{column_no} ',' @ref{exam_package_name} ',' @ref{message_id} ',' @ref{message_category} ',' @ref{message_severity} ',' @ref{message_text} @anchor{context_line_list} context_line_list : | @ref{context_line} @ref{new_line} @ref{context_line_list} @anchor{context_line} context_line : 'C' ',' @ref{file_path} ',' @ref{line_no} ',' @ref{column_no} ',' @ref{exam_package_name} ',' @ref{message_id} ',' @ref{message_category} ',' @ref{message_severity} ',' @ref{message_text} @end example @node Messages @chapter Message list @menu * X0001::An unknown exception `%s' is found. * X0002::An illegal message ID `%s' is found. * X0003::Analysis processing has been stopped due to unrecoverable error. For the details, refer to `%s' and `%s'. * X0004::An illegal message format `%s' is found. * E0004::Corresponding #endif doesn't found. * E0007::Syntax error is found in conditional expression token `%s'. Conditional expression evaluate as false. * E0008::Syntax error is found in token `%s'. * E0009::A header file of <%s> doesn't found. * E0010::A header file of "%s" doesn't found. * E0013::Statement cannot include in syntax. * E0014::'&&' monadic operator to get a label address is GCC original add-on. * E0015::'goto' statement with specified label address is GCC original add-on. * E0016::Unfinished comment block is found. * E0018::Extra semicolon appears in the global scope. * W0001::Nesting depth of round bracket `()' exceed 32. This program doesn't meet the strict ISO C90 standards of the term. * W0002::Identifier and declaration of formal argument described separately in the definition of function `%s()' is old style. * W0003::This switch statement doesn't have default label. * W0007::'break' or 'return' statement doesn't found in the last 'case' or 'default' section. * W0010::There is a side-effect in this ternary operator (conditional operator). * W0013::'continue' statement is used in repetition statement. * W0016::The field width of conversion specifier exceeds 509 characters in 'printf' function. * W0017::The field width of conversion specifier exceeds 509 characters in 'scanf' function. * W0018::This accuracy width of conversion specifier exceeds 509 characters. * W0019::This pointer cast is danger because it delete const qualifier. * W0021::This pointer cast is danger because it delete volatile qualifier. * W0023::Arithmetic operation is being made by pointer variable. * W0024::Increment or decrement is being made by pointer variable. * W0025::`%s' is already included by this file directly. * W0026::`%s' is already included by this file indirectly. * W0027::Comparison operation is being made by pointer variable. * W0028::Dereferencing a pointer constant of NULL. * W0030::Arithmetic operation is being made by NULL pointer. * W0031::A formal argument `%s' is not used in this function. * W0033::A label of `%s:' is not used in this function. It might be removed. * W0035::Right operand of ``&&' or `||' must arithmetic type or pointer type. * W0036::The number of qualification operator exceeds 12.This program doesn't meet the strict ISO C90 standards of the term. * W0037::Nest of structure or union exceeds 15. This program doesn't meet the strict ISO C90 standards of the term. * W0038::The size of object `%s' exceeds 32767 bytes. This program doesn't meet the strict ISO C90 standards of the term. * W0039::The number of local identifier in the block exceeds 127. This program doesn't meet the strict ISO C90 standards of the term. * W0040::A bit field is declared without 'signed' or 'unsigned'. * W0041::The number of member of structure or union exceeds 127.This program doesn't meet the strict ISO C90 standards of the term. * W0042::The number of enumeration literal exceeds 127. This program doesn't meet the strict ISO C90 standards of the term. * W0043::The initial value of the array is short of declared array's size. The residual array will be initialized by zero. * W0049::Nest of control structure exceeds 15. This program doesn't meet the strict ISO C90 standards of the term. * W0050::The number of 'case' label exceeds 257. This program doesn't meet the strict ISO C90 standards of the term. * W0051::An external identifier `%s' cannot distinguish other identifier name from the range of number of characters defined in linker property. * W0052::An identifier `%s' cannot distinguish other identifier name from the range of number of characters defined in compile property. * W0053::Nest of `#include "%s"' exceeds 8.This program doesn't meet the strict ISO C90 standards of the term. * W0054::The maximum number of `#if...' nest exceeds 8. This program doesn't meet the strict ISO C90 standards of the term. * W0055::The number of macro definition exceeds 1024. This program doesn't meet the strict ISO C90 standards of the term. * W0056::The number of formal argument of function-like macro exceeds 31.This program doesn't meet the strict ISO C90 standards of the term. * W0057::The number of actual argument of function-like macro exceeds 31.This program doesn't meet the strict ISO C90 standards of the term. * W0058::The number of characters of string literal exceeds 509.This program doesn't meet the strict ISO C90 standards of the term. * W0059::Ctrl-M(^M) control character is found at the end of line. * W0060::Ctrl-Z(^Z) control character is found in this file. * W0061::`%s' is not actual reserved keyword. It will be considered as language extension and ignored. * W0062::`__typeof__' is not supported ISO C standards. It will be considered as language extension. * W0063::`__alignof__'is not supported ISO C standards. It will be considered as language extension.. * W0064::A binary integer literal is used. This is the language extension. * W0065::Must not cast left operand of assignment operator. * W0066::`main()' function must `int (void)' or `int (int, char *[])'. * W0067::Directly access to the member of nested structure. This is the language extension. * W0068::`.' is used to get access to bit. This is the language extension. * W0069::`/*' is found in the beginning with `/*' comments. Nested comment doesn't allowed in ISO C standards. * W0070::Included <%s> is not referenced in the translation unit. It can be removed. * W0071::Included "%s" is not referenced in the translation unit. It can be removed. * W0072::A character except for basic source character is used in header file name. * W0073::No include guard in this include file. * W0076::Hexadecimal constant without `U' or `u' suffix. * W0077::Lower case `l' is added to integer or floating-point number. * W0078::A function is declared without list of formal argument. * W0079::This array cannot keep final character `\0' which initial value of string literal. * W0080::A global object which const qualified is defined without explicitly initialized. * W0081::A monadic operator `-' becomes unsigned type if it use 'unsigned int' type, 'unsigned long' type or 'unsigned long' type operand. * W0082::Unary operator `-' is applied to an operand whose underlying type `%s' is unsigned. * W0084::Left operand of this comma operator `,' doesn't described the statement which has side-effects. * W0085::This statement doesn't have side-effects. It is highly possible that it having error. * W0086::Second or third operand is verbose statement which doesn't have side-effects in ternary operator (conditional operator). * W0087::The right side statement of comma operator is verbose statement which doesn't have side-effects. * W0088::The right side statement of logical operator is verbose statement which doesn't have side-effects. * W0093::This expression may cause division-by-zero. * W0096::It divided by a constant expression which definitely zero. * W0097::This expression must cause division-by-zero. * W0100::The variable `%s' has not been reassigned since the initial value is assigned. It may be able to be defined as `const' with an initial value. * W0101::An address of auto variable is substituted for a pointer which has a longer life. This program is danger. * W0102::An address of auto variable is returned via formal argument to functions. This program is danger. * W0103::An address of auto variable is returned as return value from a function. This program is danger. * W0104::The value of formal argument `%s' is not change. It can be declarable with 'const'. * W0105::The object which points the formal argument `%s' is not change. It can be declaring as pointer type which points const object. * W0107::An address of auto variable is substituted for local pointer with 'static' option. This program is danger. * W0108::An assignment-expression appears in the logical expression. * W0109::The definition of this function doesn't found. It consider it was omitted, and insert `extern int %s()'. * W0110::A variable number with floating-point type is used by loop counter in for statement. * W0112::The statement of floating-point compares by equivalent operator. * W0114::This control expression is not explicit logical operation. * W0115::Unsigned left shift operator `<<' drop the high-order bit. * W0116::Unsigned left shift operator `<<' can be drop high-order bit. * W0117::`%s' has external-linkage without any prototype declarations. * W0118::`%s' has external-linkage, but no prototype declaration is in header files. * W0119::An implicit type conversion from char to signed char. * W0120::An implicit type conversion from char to unsigned char. * W0121::An implicit type conversion from char to signed short. * W0122::An implicit type conversion from char to unsigned short. * W0123::An implicit type conversion from char to signed int. * W0124::An implicit type conversion from char to unsigned int. * W0125::An implicit type conversion from char to signed long. * W0126::An implicit type conversion from char to unsigned long. * W0127::An implicit type conversion from char to float. * W0128::An implicit type conversion from char to double. * W0129::An implicit type conversion from char to long double. * W0130::An implicit type conversion from char to signed long long. * W0131::An implicit type conversion from char to unsigned long long. * W0132::An implicit type conversion from unsigned char to char. * W0133::An implicit type conversion from signed char to char. * W0134::An implicit type conversion from signed short to char. * W0135::An implicit type conversion from unsigned short to char. * W0136::An implicit type conversion from signed int to char. * W0137::An implicit type conversion from unsigned int to char. * W0138::An implicit type conversion from signed long to char. * W0139::An implicit type conversion from unsigned long to char. * W0140::An implicit type conversion from signed long long to char. * W0141::An implicit type conversion from unsigned long long to char. * W0142::An implicit type conversion from unsigned char to signed char. * W0143::An implicit type conversion from unsigned short to signed char. * W0144::An implicit type conversion from unsigned short to signed short. * W0145::An implicit type conversion from unsigned int to signed char. * W0146::An implicit type conversion from unsigned int to signed short. * W0147::An implicit type conversion from unsigned int to signed int. * W0148::An implicit type conversion from unsigned long to signed char. * W0149::An implicit type conversion from unsigned long to signed short. * W0150::An implicit type conversion from unsigned long to signed int. * W0151::An implicit type conversion from unsigned long to signed long. * W0152::An implicit type conversion from unsigned long long to signed char. * W0153::An implicit type conversion from unsigned long long to signed short. * W0154::An implicit type conversion from unsigned long long to signed int. * W0155::An implicit type conversion from unsigned long long to signed long. * W0156::An implicit type conversion from unsigned long long to signed long long. * W0157::An implicit type conversion from signed char to unsigned char. * W0158::An implicit type conversion from signed char to unsigned short. * W0159::An implicit type conversion from signed char to unsigned int. * W0160::An implicit type conversion from signed char to unsigned long. * W0161::An implicit type conversion from signed short to unsigned char. * W0162::An implicit type conversion from signed short to unsigned short. * W0163::An implicit type conversion from signed short to unsigned int. * W0164::An implicit type conversion from signed short to unsigned long. * W0165::Implicit conversion from `signed int' to `unsigned char'. * W0166::An implicit type conversion from signed int to unsigned short. * W0167::Implicit conversion from `signed int' to `unsigned int'. * W0168::An implicit type conversion from signed int to unsigned long. * W0169::An implicit type conversion from signed long to unsigned char. * W0170::An implicit type conversion from signed long to unsigned short. * W0171::An implicit type conversion from signed long to unsigned int. * W0172::An implicit type conversion from signed long to unsigned long. * W0173::An implicit type conversion from signed char to unsigned long long. * W0174::An implicit type conversion from signed short to unsigned long long. * W0175::An implicit type conversion from signed int to unsigned long long. * W0176::An implicit type conversion from signed long to unsigned long long. * W0177::An implicit type conversion from signed long long to unsigned char. * W0178::An implicit type conversion from signed long long to unsigned short. * W0179::An implicit type conversion from signed long long to unsigned int. * W0180::An implicit type conversion from signed long long to unsigned long. * W0181::An implicit type conversion from signed long long to unsigned long long. * W0182::An implicit type conversion from unsigned char to float. * W0183::An implicit type conversion from unsigned char to double. * W0184::An implicit type conversion from unsigned char to long double. * W0185::An implicit type conversion from signed char to float. * W0186::An implicit type conversion from signed char to double. * W0187::An implicit type conversion from signed char to long double. * W0188::An implicit type conversion from signed short to float. * W0189::An implicit type conversion from signed short to double. * W0190::An implicit type conversion from signed short to long double. * W0191::An implicit type conversion from unsigned short to float. * W0192::An implicit type conversion from unsigned short to double. * W0193::An implicit type conversion from unsigned short to long double. * W0194::An implicit type conversion from signed int to float. * W0195::An implicit type conversion from signed int to double. * W0196::An implicit type conversion from signed int to long double. * W0197::An implicit type conversion from unsigned int to float. * W0198::An implicit type conversion from unsigned int to double. * W0199::An implicit type conversion from unsigned int to long double. * W0200::An implicit type conversion from signed long to float. * W0201::An implicit type conversion from signed long to double. * W0202::An implicit type conversion from signed long to long double. * W0203::An implicit type conversion from unsigned long to float. * W0204::An implicit type conversion from unsigned long to double. * W0205::An implicit type conversion from unsigned long to long double. * W0206::An implicit type conversion from signed long long to float. * W0207::An implicit type conversion from signed long long to double. * W0208::An implicit type conversion from signed long long to long double. * W0209::An implicit type conversion from unsigned long long to float. * W0210::An implicit type conversion from unsigned long long to double. * W0211::An implicit type conversion from unsigned long long to long double. * W0212::An implicit type conversion from float to char. * W0213::An implicit type conversion from float to signed char. * W0214::An implicit type conversion from float to unsigned char. * W0215::An implicit type conversion from float to signed short. * W0216::An implicit type conversion from float to unsigned short. * W0217::An implicit type conversion from float to signed int. * W0218::An implicit type conversion from float to unsigned int. * W0219::An implicit type conversion from float to signed long. * W0220::An implicit type conversion from float to unsigned long. * W0221::An implicit type conversion from double to char. * W0222::An implicit type conversion from double to signed char. * W0223::An implicit type conversion from double to unsigned char. * W0224::An implicit type conversion from double to signed short. * W0225::An implicit type conversion from double to unsigned short. * W0226::An implicit type conversion from double to signed int. * W0227::An implicit type conversion from double to unsigned int. * W0228::An implicit type conversion from double to signed long. * W0229::An implicit type conversion from double to unsigned long. * W0230::An implicit type conversion from long double to char. * W0231::An implicit type conversion from long double to signed char. * W0232::An implicit type conversion from long double to unsigned char. * W0233::An implicit type conversion from long double to signed short. * W0234::An implicit type conversion from long double to unsigned short. * W0235::An implicit type conversion from long double to signed int. * W0236::An implicit type conversion from long double to unsigned int. * W0237::An implicit type conversion from long double to signed long. * W0238::An implicit type conversion from long double to unsigned long. * W0239::An implicit type conversion from float to signed long long. * W0240::An implicit type conversion from float to unsigned long long. * W0241::An implicit type conversion from double to signed long long. * W0242::An implicit type conversion from double to unsigned long long. * W0243::An implicit type conversion from long double to signed long long. * W0244::An implicit type conversion from long double to unsigned long long. * W0245::An implicit type conversion from unsigned char to signed short. * W0246::Implicit conversion from `unsigned char' to `signed int'. * W0247::An implicit type conversion from unsigned char to signed long. * W0248::An implicit type conversion from unsigned short to signed int. * W0249::An implicit type conversion from unsigned short to signed long. * W0250::An implicit type conversion from unsigned int to signed long. * W0251::An implicit type conversion from unsigned char to signed long long. * W0252::An implicit type conversion from unsigned short to signed long long. * W0253::An implicit type conversion from unsigned int to signed long long. * W0254::An implicit type conversion from unsigned long to signed long long. * W0255::A value of char type is returned from `signed char %s()' function. * W0256::A value of char type is returned from `unsigned char %s()' function. * W0257::A value of char type is returned from `signed short %s()' function. * W0258::A value of char type is returned from `unsigned short %s()' function. * W0259::A value of char type is returned from `signed int %s()' function. * W0260::A value of char type is returned from `unsigned int %s()' function. * W0261::A value of char type is returned from `signed long %s()' function. * W0262::A value of char type is returned from `unsigned long %s()' function. * W0263::A value of char type is returned from `float %s()' function. * W0264::A value of char type is returned from `double %s()' function. * W0265::A value of char type is returned from `long double %s()' function. * W0266::A value of char type is returned from `signed long long %s()' function. * W0267::A value of char type is returned from `unsigned long long %s()' function. * W0268::A value of unsigned char type is returned from `char %s()' function. * W0269::A value of signed char type is returned from `char %s()' function. * W0270::A value of signed short type is returned from `char %s()' function. * W0271::A value of unsigned short type is returned from `char %s()' function. * W0272::A value of signed int type is returned from `char %s()' function. * W0273::A value of unsigned int type is returned from `char %s()' function. * W0274::A value of signed long type is returned from `char %s()' function. * W0275::A value of unsigned long type is returned from `char %s()' function. * W0276::A value of signed long long type is returned from `char %s()' function. * W0277::A value of unsigned long long type is returned from `char %s()' function. * W0278::A value of unsigned char type is returned from `signed char %s()' function. * W0279::A value of unsigned short type is returned from `signed char %s()' function. * W0280::A value of unsigned short type is returned from `signed short %s()' function. * W0281::A value of unsigned int type is returned from `signed char %s()' function. * W0282::A value of unsigned int type is returned from `signed short %s()' function. * W0283::A value of unsigned int type is returned from `signed int %s()' function. * W0284::A value of unsigned long type is returned from `signed char %s()' function. * W0285::A value of unsigned long type is returned from `signed short %s()' function. * W0286::A value of unsigned long type is returned from `signed int %s()' function. * W0287::A value of unsigned long type is returned from `signed long %s()' function. * W0288::A value of unsigned long long type is returned from `signed char %s()' function. * W0289::A value of unsigned long long type is returned from `signed short %s()' function. * W0290::A value of unsigned long long type is returned from `signed int %s()' function. * W0291::A value of unsigned long long type is returned from `signed long %s()' function. * W0292::A value of unsigned long long type is returned from `signed long long %s()' function. * W0293::A value of signed char type is returned from `unsigned char %s()' function. * W0294::A value of signed char type is returned from `unsigned short %s()' function. * W0295::A value of signed char type is returned from `unsigned int %s()' function. * W0296::A value of signed char type is returned from `unsigned long %s()' function. * W0297::A value of signed short type is returned from `unsigned char %s()' function. * W0298::A value of signed short type is returned from `unsigned short %s()' function. * W0299::A value of signed short type is returned from `unsigned int %s()' function. * W0300::A value of signed short type is returned from `unsigned long %s()' function. * W0301::A value of signed int type is returned from `unsigned char %s()' function. * W0302::A value of signed int type is returned from `unsigned short %s()' function. * W0303::A value of signed int type is returned from `unsigned int %s()' function. * W0304::A value of signed int type is returned from `unsigned long %s()' function. * W0305::A value of signed long type is returned from `unsigned char %s()' function. * W0306::A value of signed long type is returned from `unsigned short %s()' function. * W0307::A value of signed long type is returned from `unsigned int %s()' function. * W0308::A value of signed long type is returned from `unsigned long %s()' function. * W0309::A value of signed char type is returned from `unsigned long long %s()' function. * W0310::A value of signed short type is returned from `unsigned long long %s()' function. * W0311::A value of signed int type is returned from `unsigned long long %s()' function. * W0312::A value of signed long type is returned from `unsigned long long %s()' function. * W0313::A value of signed long long type is returned from `unsigned char %s()' function. * W0314::A value of signed long long type is returned from `unsigned short %s()' function. * W0315::A value of signed long long type is returned from `unsigned int %s()' function. * W0316::A value of signed long long type is returned from `unsigned long %s()' function. * W0317::A value of signed long long type is returned from `unsigned long long %s()' function. * W0318::A value of unsigned char type is returned from `float %s()' function. * W0319::A value of unsigned char type is returned from `double %s()' function. * W0320::A value of unsigned char type is returned from `long double %s()' function. * W0321::A value of signed char type is returned from `float %s()' function. * W0322::A value of signed char type is returned from `double %s()' function. * W0323::A value of signed char type is returned from `long double %s()' function. * W0324::A value of signed short type is returned from `float %s()' function. * W0325::A value of signed short type is returned from `double %s()' function. * W0326::A value of signed short type is returned from `long double %s()' function. * W0327::A value of unsigned short type is returned from `float %s()' function. * W0328::A value of unsigned short type is returned from `double %s()' function. * W0329::A value of unsigned short type is returned from `long double %s()' function. * W0330::A value of signed int type is returned from `float %s()' function. * W0331::A value of signed int type is returned from `double %s()' function. * W0332::A value of signed int type is returned from `long double %s()' function. * W0333::A value of unsigned int type is returned from `float %s()' function. * W0334::A value of unsigned int type is returned from `double %s()' function. * W0335::A value of unsigned int type is returned from `long double %s()' function. * W0336::A value of signed long type is returned from `float %s()' function. * W0337::A value of signed long type is returned from `double %s()' function. * W0338::A value of signed long type is returned from `long double %s()' function. * W0339::A value of unsigned long type is returned from `float %s()' function. * W0340::A value of unsigned long type is returned from `double %s()' function. * W0341::A value of unsigned long type is returned from `long double %s()' function. * W0342::A value of signed long long type is returned from `float %s()' function. * W0343::A value of signed long long type is returned from `double %s()' function. * W0344::A value of signed long long type is returned from `long double %s()' function. * W0345::A value of unsigned long long type is returned from `float %s()' function. * W0346::A value of unsigned long long type is returned from `double %s()' function. * W0347::A value of unsigned long long type is returned from `long double %s()' function. * W0348::A value of float type is returned from `char %s()' function. * W0349::A value of float type is returned from `signed char %s()' function. * W0350::A value of float type is returned from `unsigned char %s()' function. * W0351::A value of float type is returned from `signed short %s()' function. * W0352::A value of float type is returned from `unsigned short %s()' function. * W0353::A value of float type is returned from `signed int %s()' function. * W0354::A value of float type is returned from `unsigned int %s()' function. * W0355::A value of float type is returned from `signed long %s()' function. * W0356::A value of float type is returned from `unsigned long %s()' function. * W0357::A value of double type is returned from `char %s()' function. * W0358::A value of double type is returned from `signed char %s()' function. * W0359::A value of double type is returned from `unsigned char %s()' function. * W0360::A value of double type is returned from `signed short %s()' function. * W0361::A value of double type is returned from `unsigned short %s()' function. * W0362::A value of double type is returned from `signed int %s()' function. * W0363::A value of double type is returned from `unsigned int %s()' function. * W0364::A value of double type is returned from `signed long %s()' function. * W0365::A value of double type is returned from `unsigned long %s()' function. * W0366::A value of long double type is returned from `char %s()' function. * W0367::A value of long double type is returned from `signed char %s()' function. * W0368::A value of long double type is returned from `unsigned char %s()' function. * W0369::A value of long double type is returned from `signed short %s()' function. * W0370::A value of long double type is returned from `unsigned short %s()' function. * W0371::A value of long double type is returned from `signed int %s()' function. * W0372::A value of long double type is returned from `unsigned int %s()' function. * W0373::A value of long double type is returned from `signed long %s()' function. * W0374::A value of long double type is returned from `unsigned long %s()' function. * W0375::A value of float type is returned from `signed long long %s()' function. * W0376::A value of float type is returned from `unsigned long long %s()' function. * W0377::A value of double type is returned from `signed long long %s()' function. * W0378::A value of double type is returned from `unsigned long long %s()' function. * W0379::A value of long double type is returned from `signed long long %s()' function. * W0380::A value of long double type is returned from `unsigned long long %s()' function. * W0381::A value of signed short type is returned from `signed char %s()' function. * W0382::A value of unsigned short type is returned from `unsigned char %s()' function. * W0383::A value of signed int type is returned from `signed char %s()' function. * W0384::A value of signed int type is returned from `signed short %s()' function. * W0385::A value of unsigned int type is returned from `unsigned char %s()' function. * W0386::A value of unsigned int type is returned from `unsigned short %s()' function. * W0387::A value of signed long type is returned from `signed char %s()' function. * W0388::A value of signed long type is returned from `signed short %s()' function. * W0389::A value of signed long type is returned from `signed int %s()' function. * W0390::A value of unsigned long type is returned from `unsigned char %s()' function. * W0391::A value of unsigned long type is returned from `unsigned short %s()' function. * W0392::A value of unsigned long type is returned from `unsigned int %s()' function. * W0393::A value of signed long long type is returned from `signed char %s()' function. * W0394::A value of signed long long type is returned from `signed short %s()' function. * W0395::A value of signed long long type is returned from `signed int %s()' function. * W0396::A value of signed long long type is returned from `signed long %s()' function. * W0397::A value of unsigned long long type is returned from `unsigned char %s()' function. * W0398::A value of unsigned long long type is returned from `unsigned short %s()' function. * W0399::A value of unsigned long long type is returned from `unsigned int %s()' function. * W0400::A value of unsigned long long type is returned from `unsigned long %s()' function. * W0401::A value of unsigned char type is returned from `signed short %s()' function. * W0402::A value of unsigned char type is returned from `signed int %s()' function. * W0403::A value of unsigned char type is returned from `signed long %s()' function. * W0404::A value of unsigned short type is returned from `signed int %s()' function. * W0405::A value of unsigned short type is returned from `signed long %s()' function. * W0406::A value of unsigned int type is returned from `signed long %s()' function. * W0407::A value of unsigned char type is returned from `signed long long %s()' function. * W0408::A value of unsigned short type is returned from `signed long long %s()' function. * W0409::A value of unsigned int type is returned from `signed long long %s()' function. * W0410::A value of unsigned long type is returned from `signed long long %s()' function. * W0411::The initialization of enumeration should be only the starting, whole or not at all. * W0413::The body of control statement is unenclosed by curly brace `@{@}' block. * W0414::Body of the controlling statement in a line is not enclosed by `@{@}'. * W0421::Value of the dereferencing pointer must be NULL. * W0422::Value of the dereferencing pointer may be NULL. * W0423::Arithmetic operation is being made to the pointer which its value will be NULL. * W0424::Arithmetic operation is being made to the pointer which its value might be NULL. * W0425::There are several definitions or statements in a line. * W0431::This line begins at more left than previous lines of the same indentation level. * W0432::Indentation of this line does not comply with the project's indent style. * W0440::An indent of this close bracket `@}' is not correspond to the open bracket `@{'. * W0441::The type of integer literal which doesn't have a suffix is not int type. * W0442::A function-like macro is defined. * W0443::This function-like macro might be replaced with a function. * W0444::`#'operator and `##'operator is used in a macro definition. * W0445::Multiple `##'operator is used in a macro definition. * W0446::The result value of assignment operation is used. * W0447::A comma operator is used except 'for' statement. * W0456::An object or a function `%s which has external coupling is defined in a header file. * W0457::The return value doesn't define explicitly in the function declaration or definition. It defined as 'int' implicitly. * W0458::The type doesn't define explicitly in the object declaration or definition. It defined as 'int' implicitly. * W0459::A value of variable `%s' doesn't set when this expression is evaluated. This program is danger. * W0460::A value of variable `%s' wouldn't set when this expression is evaluated. * W0461::A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger. * W0462::A pointer which the value will probably not set is used for the actual argument of the function. * W0477::There are unpaired `[]',`()',`@{@}' in macro definition. * W0478::This macro defines scraps of unrecognized codes. * W0479::This macro definition might be replaced with 'typedef' declaration. * W0480::This macro defines keyword of control statement or punctuator. * W0481::This macro defines the block around by `@{@}'. * W0482::This macro defines either type specifier. * W0483::This macro defines the pair of storage class specifier and type specifier. * W0488::A function call `()', array's index operation `[]', or structure/union operation `->' or `.' are used with && or ||. It had better clear the coupling by using `()'. * W0489::A monadic operator is used with `&&' or `||'. It had better clear the coupling by using `()'. * W0490::A binary operator is used with `&&' or `||'. It had better clear the coupling by using `()'. * W0491::The same identifier name `%s' is also used in the declaration of other namespace. * W0492::The same identifier name `%s' is also used in the member of structure/union, label, tag or normal identifier. * W0493::The value of structure or union is passed as the actual argument of the function. * W0495::operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'. * W0496::A ternary operator is used several times. It had better clear the coupling by using `()'. * W0497::Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'. * W0498::The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'. * W0499::The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'. * W0500::The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'. * W0501::A ternary operator is used with binary operator. It had better clear the coupling by using `()'. * W0502::A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping. * W0508::There's a side effect at the right operand of `&&' or `||'operator. * W0511::C++ style comment of `//' is used. * W0512::The result of `++' or `--' operator is used in the statement. * W0525::A field named 1bit is declared by signed type. * W0528::This macro defines octal constant value. * W0529::An octal literal is used. * W0530::An octal escape sequence is used in a character constant or a string literal. * W0532::'break' statement is used to exits 'case' or 'default' section, but it's not described at the end of 'case' section. * W0534::A control variable `%s' is not initialized in this 'for' statement. * W0535::A comma operator is used in a 'for' statement. * W0538::This 'default' label is not final label in this 'switch' statement. * W0540::A function which the blank formal argument list is declared. `void' is omitted. * W0541::Inline assembly code should be encapsulated by macro. * W0542::There are identifiers in the part of formal argument in a function declaration. * W0543::The identifier of formal argument in this function declaration is different from the past declaration of it. * W0544::The identifier of formal argument in the function declaration is different from the declaration of function pointer. * W0546::There is 'case' or 'default' label of switch statement in a nested block. * W0549::A formal argument of macro doesn't enclosed by `()'. * W0551::An union type specifier is defined. * W0552::An union type object is defined. * W0553::A pointer points to the function cast to other function pointer type. * W0554::An actual argument `%s' in `#pragma' is unrecognized. This `#pragma' command will be ignored. * W0555::This function is called recursive with indirectly. * W0556::The function which includes this call is called recursively. * W0559::The operand of `!' operator is the expression of bit operation or arithmetic operation. * W0560::The operand of `~' operator is boolean type expression. * W0561::The meaning of `*p++' is `*(p++)'. It is not `(*p)++'. `*' operator is verbose. * W0562::There are verbose `@{@}' in the initializer. * W0563::If it jumps from outside of this block to `%s' label,the local variable will not be initialized. * W0564::If this 'goto' statement jumps to `%s' label,local variable will not be initialized. * W0565::A volatile integer type cast to volatile pointer type and vice versa. * W0566::A volatile integer type cast to function pointer type and vice versa. * W0567::A volatile integer type cast to pointer to object and vice versa. * W0568::The result of left shift operation against the signed constant expression value is undefined. * W0569::The result of left shift operation against the signed expression value is undefined. * W0570::This signed left shift operation may make undefined value. * W0571::The result of right shift operation against the signed data is a possibility the both logical shift and arithmetic shift by implementation. * W0572::Bitwise operation of signed value causes implementation-defined behavior. * W0573::A `-' character in scanset in `[]' is implementation defined. * W0574::The character except for basic source character is used in the character constant. * W0575::The character except for basic source character is used in the string literal. * W0576::The character except for basic source character is used in the comment of source file `%s'. * W0577::The character except for basic source character is used in preprocessing directive of source file `%s'. * W0578::A generic integer value of the compound expression typed `%s' is implicitly converted into a new value of bigger type `%s'. * W0579::A generic integer value of the compound expression typed `%s' is explicitly converted into a new value of bigger type `%s'. * W0580::An address of local static variable is substituted for a pointer which has a wider scope. * W0581::The number or type of actual argument is different from the past. * W0582::The number or type of actual argument is different from the function prototype declaration at the following. * W0583::The number or type of actual argument is different from the function declaration at the following. * W0584::The type of %s actual argument is different from the type of formal argument in function definition. * W0585::A control variable `%s' doesn't appear increment expression. * W0586::A typedef `%s' is declared in more than one place. * W0589::An object `%s' is only referenced by function `%s' in the defined translation unit. * W0591::A function `%s' is only referenced by the defined translation unit. * W0593::An object `%s' is only referenced by the defined translation unit. * W0597::`%s' is modified more than once between the side-effects completion point. The evaluation order is undefined. * W0598::`%s' might be modified more than once between the side-effects completion point. The evaluation order is undefined. * W0599::`%s' is modified and referenced between the side-effects completion point. The evaluation order is undefined. * W0600::`%s' is modified and might be referenced between the side-effects completion point. The evaluation order is undefined. * W0605::Multiple break-statements appear to break the same iteration. * W0606::An union has a member which type is floating-point. * W0607::An integer expression which the value which the value is minus converted to unsigned type. * W0608::An integer expression which the value might be minus converted to unsigned type. * W0609::This logical expression always makes true. * W0610::This logical expression always makes false. * W0611::The value of this 'for' control expression is always true. * W0612::The value of this 'if' conditional expression is always true. * W0613::This controlling expression always makes false. * W0614::The value of this "do-while" control expression is always false. The body of repetition statement executed only once. * W0622::A function is declared in the block scope. * W0623::An external coupling object is declared in the block scope. * W0624::There is '#define' or '#undef' in a block. * W0625::`%s' is using in the declaration or definition of external coupling. But its 'typedef' doesn't declare in the header file. * W0626::A wide character or wide string literal is used. * W0627::There is a dead letter (only `;') in the following other code. * W0628::A function `%s' is defined, but this is not used in this project. * W0629::`%s()' has internal-linkage, but it is never called in this translation-unit. * W0632::Using ' or " characters in `#include <%s>' directive makes undefined behavior. * W0633::Using ' character in `#include "%s"' directive makes undefined behavior. * W0634::`\' is used in `#include' line. `/' is recommended for the path delimiter. * W0635::The type doesn't match with %sth conversion specifier and the corresponding actual argument. * W0636::An actual argument doesn't exist correspond to %sth conversion specifier. * W0637::There is more actual argument than the number of conversion specifier in function call. * W0638::This function call requiring at least one actual argument. * W0639::%sth conversion specifier doesn't match with corresponding type of actual argument. * W0640::The actual argument of scanf function have to pass the object pointer to store the data. * W0641::Floating-point number type cast to pointer to object and vice versa. * W0642::Address derivation from the object declared as `register' is prohibited. * W0643::This string literal constituted by a macro is illegal form unenclosed by `"'. `#'operator may apply to actual argument which has '\' at the end. * W0644::A value in void statement is going to use. 'void' statement doesn't have a value. * W0645::'void' type cannot use in the type of formal argument. * W0646::A normal string literal and a wide string literal are contiguous. * W0649::A right operand value of shift operand is negative constant value. This result is undefined. * W0650::A value of the right operand in a shift expression is bigger than the bit size of the left operand type `%s'. This result is undefined. * W0653::The initial value of an array, structure or union is not enclosed by `@{@}'. * W0654::The initializer of structure or union must the value of the same structure type or union type. * W0655::This is bit field statement which the size is undefined. * W0656::%sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. * W0657::An invalid flag is used in %sth conversion specifier of `i' or 'd'. * W0658::An invalid flag is used in %sth conversion specifier of `o'. * W0659::An invalid flag is used in %sth conversion specifier of `u'. * W0660::An invalid flag is used in %sth conversion specifier of `x'. * W0661::An invalid flag is used in %sth conversion specifier of `X'. * W0662::An invalid flag is used in %sth conversion specifier of `f'. * W0663::An invalid flag is used in %sth conversion specifier of `e'. * W0664::An invalid flag is used in %sth conversion specifier of `E'. * W0665::An invalid flag is used in %sth conversion specifier of `g'. * W0666::An invalid flag is used in %sth conversion specifier of `G'. * W0667::An invalid flag is used in %sth conversion specifier of `c'. * W0668::An invalid flag is used in %sth conversion specifier of `%%'. * W0669::An invalid flag is used in %sth conversion specifier of `s'. * W0670::An invalid flag is used in %sth conversion specifier of `n'. * W0671::An invalid flag is used in %sth conversion specifier of `p'. * W0672::An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. * W0673::%sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. * W0674::An invalid flag is used in %sth conversion specifier of `d/i/n'. * W0675::An invalid flag is used in %sth conversion specifier of `o'. * W0676::An invalid flag is used in %sth conversion specifier of `u'. * W0677::An invalid flag is used in %sth conversion specifier of `x/X'. * W0678::An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. * W0679::An invalid flag is used in %sth conversion specifier of `s'. * W0680::An invalid flag is used in %sth conversion specifier of `p'. * W0681::An invalid flag is used in %sth conversion specifier of `%%'. * W0682::An invalid flag is used in %sth conversion specifier of `['. * W0683::An invalid flag is used in %sth conversion specifier of `c'. * W0684::An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. * W0685::A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. * W0686::The same characters are described in scanset (characters enclosed by `[]'). * W0687::#undef is using to delete #defined operator. * W0688::There is no line number in 1 to 32767 ranges after #line directive. * W0689::#line directive syntax doesn't match `#line integer constant \"string\"'. * W0690::No line number after #line directive. * W0691::The result of `##' operator is not valid preprocessing token. * W0692::A function-like macro `%s' doesn't given an actual argument. * W0693::A function-like macro is called by actual argument which its definition is smaller. * W0694::'assert' macro is inhibited to call the function named `assert'. This result is undefined. * W0695::If #undef the 'assert' macro, and enable to call its name function, the result is undefined. * W0696::This macro using in `#if...' is undefined. * W0697::There is a path with exits with an implicit `return;' statement in a function `%s' which has a return value. * W0698::A `return;' statement is found in a function `%s' which has a return value. * W0699::The return value of function `%s()' is unspecified. The return value is implicitly int. There is no expression to set the value to 'return' statement. * W0700::The return value of function `%s()' is unspecified. The return value is implicitly int. There is no 'return' statement to return value. * W0703::The tag `%s' hides the declaration of same identifier which has wider scope. * W0704::This `%s' declaration hides the declaration of same identifier which has wider scope. * W0705::This non-constant array subscript may cause out-of-range access. * W0707::This constant array subscript must cause out-of-range access. * W0708::A value of control variable `%s' in 'for' statement is changed in the body of repetition. * W0711::Right operand of relational operator is a substantive 'boolean' expression. * W0712::Left operand of relational operator is a substantive 'boolean' expression. * W0713::Both sides of relational operator is substantive 'boolean' expressions. * W0714::Both sides of `&' operator is substantive 'boolean' expressions. * W0715::Both sides of `|' operator is substantive 'boolean' expressions. * W0716::A bit operator or both sides operand of arithmetic operator is a substantive 'boolean' expression. * W0717::A bit operator or left side operand of arithmetic operator is a substantive 'boolean' expression. * W0718::A bit operator or right side operand of arithmetic operator is a substantive 'boolean' expression. * W0719::A value of the right operand in a shift expression is bigger than the bit size of the left operand underlying type `%s'. * W0720::The value with floating-point type doesn't fit in the range of converted type. * W0721::This volatile integer type doesn't have enough size to keep pointer value. * W0722::A value of signed statement is overflow. * W0723::A value of signed statement might be overflow. * W0724::An unrecognized preprocessing directive is ignored by conditional include directive. * W0726::A function `%s()' which return value is declared as qualified void type, `return expression;' is found. * W0727::The value not part of the enumeration type is used. * W0728::Other enumeration literal of enumeration type is passed to enumeration literal of formal argument as actual argument. * W0729::An enumeration literal of the other enumeration type is substituted for enumeration type object. * W0730::A function declared return value to enumeration type returned an enumeration literal of the other enumeration type. * W0731::The value of `%s' in 'case' label of 'switch' statement doesn't belong enumeration type of the control statement. * W0732::Both operand of `&&'operator is bit operator or arithmetic operator. * W0733::Both operand of `||'operator is bit operator or arithmetic operator. * W0734::A left operand of logical operator is bit operator or arithmetic operator. * W0735::A right operand of logical operator is the expression of bit operator or arithmetic operator. * W0736::A static variable `%s' which declared in file scope is read and write in one function only. * W0737::The content of `enum %s' is unknown. The enumeration tag is declared without define the content. * W0738::An implicit type conversion from positive integer constant expression to smaller unsigned type. The value is rounded. * W0739::The result of unsigned subtraction in constant expression is minus. * W0740::The result of unsigned addition in constant expression beyond the maximum. * W0741::The result of unsigned multiplication in constant expression beyond the maximum. * W0742::A negative integer constant expression converted to unsigned type. * W0743::The value of integer constant expression beyond the range of might be expressed with converted signed type. * W0744::The value of this control expression is constant value to be false. This control statement is not run. * W0745::This non-constant array subscript may cause out-of-range access. * W0747::An implicit type conversion from signed short to signed char. * W0748::An implicit type conversion from unsigned short to unsigned char. * W0749::An implicit type conversion from signed int to signed char. * W0750::An implicit type conversion from signed int to signed short. * W0751::An implicit type conversion from unsigned int to unsigned char. * W0752::An implicit type conversion from unsigned int to unsigned short. * W0753::An implicit type conversion from signed long to signed char. * W0754::An implicit type conversion from signed long to signed short. * W0755::An implicit type conversion from signed long to signed int. * W0756::An implicit type conversion from unsigned long to unsigned char. * W0757::An implicit type conversion from unsigned long to unsigned short. * W0758::An implicit type conversion from unsigned long to unsigned int. * W0759::An implicit type conversion from signed long long to signed char. * W0760::An implicit type conversion from signed long long to signed short. * W0761::An implicit type conversion from signed long long to singed int. * W0762::An implicit type conversion from signed long long to signed long. * W0763::An implicit type conversion from unsigned long long to unsigned char. * W0764::An implicit type conversion from unsigned long long to unsigned short. * W0765::An implicit type conversion from unsigned long long to unsigned int. * W0766::An implicit type conversion from unsigned long long to unsigned long. * W0767::An implicit type conversion from double to float. * W0768::An implicit type conversion from long double to float. * W0769::An implicit type conversion from long double to double. * W0770::A declaration of identifier `%s' which has external coupling exists more than one. * W0771::A global identifier `%s' is declared in more than one file. * W0774::A value of double type is returned from `float %s()'function. * W0775::A value of long double type is returned from `float %s()' function. * W0776::A value of long double type is returned from `double %s()'function. * W0777::An implicit type conversion from compound expression of float to double. * W0778::An implicit type conversion from compound expression of float to long double. * W0779::An implicit type conversion from compound expression of to long double. * W0780::Unsigned left shift operator `<<' in constant expression truncate non-zero high-order bit. * W0781::This 'switch' statement have only one path. It's verbose. * W0783::Cast is being made including the pointer point to incomplete type. This program is not portable. * W0784::The nonstandard escape sequence is used. * W0785::This declaration of `%s' is different from a former declaration. * W0786::A bit field which having the type of except 'int', 'signed int' or 'unsigned int' doesn't support in ISO C standards. * W0787::A type of `%s' is different from the past declaration in the different scope. * W0788::A type of `%s' is different from the past declaration in the same scope. * W0789::A type of `%s' is different from the past declaration in the wider scope. * W0790::An global object or a function `%s' is declared in more than one file. * W0791::An global object or a function `%s' is declared in more than one file. * W0792::A floating point type object cast to function pointer and vice versa. * W0793::A function pointer cast to pointer to point an object and vice versa. * W0794::Left shift operation of signed value causes implementation-defined behavior. * W0795::The number of an actual argument in function call is smaller than the number of a formal argument in the function prototype declaration. * W0796::The number of an actual argument in function call is bigger than the number of a formal argument in the function prototype declaration. * W0797::The number of an actual argument in function call is different from the number of a formal argument in the function declaration. * W0798::Must not use the value with incomplete union object. * W0799::Must not use the value with incomplete structure object. * W0800::`%s' is incomplete type which doesn't have a linkage.This is undefined. * W0801::This structure or union doesn't have a named member. * W0802::A form of after `#include' preprocessing directive is not nor "file name". * W0803::A preprocessing directive is described in actual argument of function-like macro. * W0804::The 'defined' syntax is not `defined (identifier)' nor `defined identifier'. * W0805::An identifier to be actual argument doesn't find in `defined'. * W0806::It is trying to define a macro named `defined'. * W0807::It is trying to delete pre-defined macro `%s'. * W0808::It is trying to redefine pre-defined macro `%s'. * W0809::An identifier `%s' is reserved by the library. * W0810::`@{@}' is required to clarify this structure of `if-if-else' statement. * W0811::The `defined' token which the expanded result of this macro doesn't allowed. * W0827::An initial value of nested structure's element doesn't enclosed in curly brace `@{ @}'. * W0828::An initial value of nested array's element doesn't enclosed in curly brace `@{ @}'. * W0830::There is comma `,' at the end of the enumerator list. * W0831::This is language extension for inline assembly. It will be ignored between #asm and #endasm. * W0832::An inline assembly syntax is using. This is the language extension. This code will be ignored. * W0833::A suffix 'LL' is using. * W0834::A long long type is using. * W0835::A macro which receives variable argument is defined. * W0947::String literal is specified directly. * W0948::Character constant %s is specified directly. * W0949::A value `%s' is used directly for size definition of bit field. * W0950::Integer constant `%s' is specified directly as an array size. * W1026::%sth actual argument is not object type. * W1027::A base type of array is function type. This is meaningless. * W1028::A base type of array is an array with unknown size. Incomplete type of array will not build. * W1029::A base type of array is an obscure structure or union. Incomplete type of array will not build. * W1030::A label `%s' is used more than two times in this function. * W1031::An Object `%s' is declared both external coupling and internal coupling. This action is undefined. * W1032::A tentative definition of variable '%s' which has internal linkage must not incomplete type. * W1033::A 'volatile' or 'const' qualifier is used for the type of function return value. This action is undefined. * W1034::It is declared at function `%s()' with static storage class specifier in block scope. This usage is meaningless. * W1035::`%s' declared typedef. It cannot be redeclared inside an inner scope without using explicit type. * W1036::`%s' declared typedef. It cannot be redeclared as a member of structure or union without using explicit type. * W1037::`%s' which has external coupling is declared more than one, this is incompatible. * W1039::`ll' is used in %sth conversion specifier. * W1040::An unrecognizable string is described after preprocessing directive. * W1041::`%s' is not official preprocessing directive of ISO C standards. * W1042::'sizeof' operator is using in preprocessing directive. This is the language extension. * W1043::`@@ address' is not supported ISO C standards. It will be considered as language extension. * W1045::This `@@ word' syntax will be ignored. * W1046::A space character is ignored between `\' and line feed. * W1047::The struct, union or array's initializer is not literal. * W1048::The multi byte string literal is an implementation defined value. * W1049::The result of conversion to signed integer type in integer expression might not be expressed by a signed type. * W1050::The result of conversion to signed integer type in integer expression is not express by a signed type. * W1051::The result of unsigned arithmetic expression typed `%s' is going around 0 by overflow. * W1052::The result of unsigned arithmetic expression typed `%s' can be going around by overflow. * W1053::A numeric constants is passed to an actual argument which formal argument is enumeration type. * W1054::A non enumeration type expression is substituted for the enumeration type. * W1055::A non enumeration type expression is returned from the function which return value is enumeration type. * W1056::An object of actual argument is different enumeration type which formal argument is enumeration type. * W1057::An enumeration value is substituted for different enumeration type object. * W1058::A different enumeration type of value is returned from a function which return value is enumeration type. * W1059::An enumeration value is passed to actual argument which formal argument is not enumeration type. * W1060::An enumeration value is returned from a function which return value is not enumeration type . * W1061::Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type. * W1062::Non constant expression is substituted for the enumeration type object. * W1063::The return value returned from enumeration type function to non constant expression. * W1064::A integer constant is used in switch statement where case label is enumeration type. * W1065::A value of different enumeration type is used in switch statement where case label is an enumeration type. * W1066::A value of the `float' typed compound expression is explicitly converted into a `double' value. * W1067::A value of the `float' typed compound expression is explicitly converted into a `long double' value. * W1068::A value of the `double' typed compound expression is explicitly converted into a `long double' value. * W1069::No trailing `else' clause is found in this `if-else-if' statements chain. * W1070::This `switch' statement can be translated into `if-else' statement because there are only 2 execution paths. * W1071::Function `%s' has multiple termination points. * W1072::`A `goto' statement is found. * W1073::Return value of the function `%s' is discarded. * W1074::Side-effects in `sizeof' operand will not be recorded because the operand will not be executed actually. * W1075::This declaration has no `static' storage-class-specifier while the declaring object has internal-linkage. * W1076::`%s' has internal-linkage without any prototype declarations. * W1077::Declaring array object without a size. * W9001::Control never reaches to this statement. * W9002::There is no line feed character at the end of file. * W9003::An object typed `%s' is implicitly converted into an object of type `%s'. * C0001::A warning is detected as a pair of this identifier `%s'. * C1000::Warning above is detected in the following context. * C1001::This controlling-expression is evaluated to be true. * C1002::This controlling-expression is evaluated to be false. * C1003::The problematic variable is defined here without initializer. * C1004::NULL value is assigned to the the problematic variable. * C1005::A value possibly be NULL is assigned to the problematic variable. * C1006::New value is assigned to the problematic variable. @end menu @node X0001 @section X0001 @cindex X0001 @subsection Message body An unknown exception `%s' is found. @subsection Content If you find this message, please send appropriate source file, @ref{Traits, traits file}, @ref{Message File, message file} and log file to AdLint development team. It will lead to improve quality of AdLint. @subsection Sample code None. @subsection Related message None. @subsection Since 1.0.0 @node X0002 @section X0002 @cindex X0002 @subsection Message body An illegal message ID `%s' is found. @subsection Content There's a possibility that the message catalog which AdLint using in internal is broken. Please reinstall AdLint. If you still cannot solve this issue, please report it to AdLint development team. @subsection Sample code None. @subsection Related message None. @subsection Since 1.0.0 @node X0003 @section X0003 @cindex X0003 @subsection Message body Analysis processing has been stopped due to unrecoverable error. For the details, refer to `%s' and `%s'. @subsection Content AdLint cannot process the analysis. This error occurred because it cannot find header file or it cannot parse the source file. This error can be solve by reviewing the @ref{Traits, traits file}. @subsection Sample code None. @subsection Related message None. @subsection Since 1.0.0 @node X0004 @section X0004 @cindex X0004 @subsection Message body An illegal message format `%s' is found. @subsection Content There's a possibility that the message catalog which AdLint using in internal is broken. Please reinstall AdLint. If you still cannot solve this issue, please report it to AdLint development team. @subsection Sample code None. @subsection Related message None. @subsection Since 1.0.0 @node E0004 @section E0004 @cindex E0004 @subsection Message body Corresponding #endif doesn't found. @subsection Content This error occurred when it cannot find @code{#endif} directive correspond to @code{#if}, @code{#ifdef}, @code{#ifndef} directive. @subsection Sample code @verbatim #if DEBUG int i = 0; #else int i = 1; @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node E0007 @section E0007 @cindex E0007 @subsection Message body Syntax error is found in conditional expression token `%s'. Conditional expression evaluate as false. @subsection Content This message will be output when it find syntax error while evaluating the conditional expression of @code{#if}, @code{#elif} directive. @subsection Sample code None. @subsection Related message None. @subsection Since 1.0.0 @node E0008 @section E0008 @cindex E0008 @subsection Message body Syntax error is found in token `%s'. @subsection Content This message will be output when it cannot parse preprocessed source file. If you use compiler specific extension to build, it can be solve by deleting specific token row in @ref{Traits, traits file}. @subsection Sample code None. @subsection Related message None. @subsection Since 1.0.0 @node E0009 @section E0009 @cindex E0009 @subsection Message body A header file of <%s> doesn't found. @subsection Content It includes header file in @code{#include <...>} directive, but it doesn't exist at the include path specified at @ref{Traits, traits file}. This error can be solve by reviewing the setting of include path in @ref{Traits, traits file}. @subsection Sample code None. @subsection Related message None. @subsection Since 1.0.0 @node E0010 @section E0010 @cindex E0010 @subsection Message body A header file of \%s\ doesn't found. @subsection Content It includes header file in @code{#include "..."} directive, but it doesn't exist at the include path specified at @ref{Traits, traits file}. This error can be solve by reviewing the setting of include path in @ref{Traits, traits file}. @subsection Sample code None. @subsection Related message None. @subsection Since 1.0.0 @node E0013 @section E0013 @cindex E0013 @subsection Message body Statement cannot include in syntax. @subsection Content This message will be output when GCC extension (Statement Exprs) is using. @subsection Sample code @verbatim #define maxint(a, b) ({int _a = (a), _b = (b); _a > _b ? _a : _b; }) int i = maxint(1, 2); /* E0013 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node E0014 @section E0014 @cindex E0014 @subsection Message body '&&' monadic operator to get a label address is GCC original add-on. @subsection Content This message will be output when GCC extension (Labels as Values) is using. @subsection Sample code @verbatim void *label_ptr = &&foo; /* E0014 */ goto *label_ptr; /* E0015 */ foo:; @end verbatim @subsection Related message @itemize @item @ref{E0015} 'goto' statement with specified label address is GCC original add-on. @end itemize @subsection Since 1.0.0 @node E0015 @section E0015 @cindex E0015 @subsection Message body 'goto' statement with specified label address is GCC original add-on. @subsection Content This message will be output when GCC extension (Labels as Values) is using. @subsection Sample code @verbatim void *label_ptr = &&foo; /* E0014 */ goto *label_ptr; /* E0015 */ foo:; @end verbatim @subsection Related message @itemize @item @ref{E0014} '&&' monadic operator to get a label address is GCC original add-on. @end itemize @subsection Since 1.0.0 @node E0016 @section E0016 @cindex E0016 @subsection Message body Unfinished comment block is found. @subsection Content This message will be output when the block comment begging with @code{/*} is not finished by @code{*/}. @subsection Sample code None. @subsection Related message None. @subsection Since 1.0.0 @node E0018 @section E0018 @cindex E0018 @subsection Message body Extra semicolon appears in the global scope. @subsection Content This message indicates that a standalone semicolon appears in the global scope. @subsection Sample code @verbatim int foo(int i) { return i + 1; }; /* E0018 */ @end verbatim @subsection Related message None. @subsection Since 3.2.6 @node W0001 @section W0001 @cindex W0001 @subsection Message body Nesting depth of round bracket `()' exceed 32. This program doesn't meet the strict ISO C90 standards of the term. @subsection Content Under construction. @subsection Sample code @verbatim int a = 10; int b = 20; int c = (((((((((((((((((((((((((((((((((a + b))))))))))))))))))))))))))))))))); /* W0001 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0002 @section W0002 @cindex W0002 @subsection Message body Identifier and declaration of formal argument described separately in the definition of function `%s()' is old style. @subsection Content Under construction. @subsection Sample code @verbatim /* function definition in K&R style */ int func(arg) /* W0002 */ char arg; { return 0; } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0003 @section W0003 @cindex W0003 @subsection Message body This switch statement doesn't have default label. @subsection Content Under construction. @subsection Sample code @verbatim int value; int number; switch(number) { case 1: value = 1; break; case 2: value = 2; break; case 3: value = 3; break; /* W0003 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0007 @section W0007 @cindex W0007 @subsection Message body 'break' or 'return' statement doesn't found in the last 'case' or 'default' section. @subsection Content Under construction. @subsection Sample code @verbatim 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; } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0010 @section W0010 @cindex W0010 @subsection Message body There is a side-effect in this ternary operator (conditional operator). @subsection Content Under construction. @subsection Sample code @verbatim x = (a > 0) ? b++ : b--; /* W0010 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0013 @section W0013 @cindex W0013 @subsection Message body 'continue' statement is used in repetition statement. @subsection Content Under construction. @subsection Sample code @verbatim 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 */ } } } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0016 @section W0016 @cindex W0016 @subsection Message body The field width of conversion specifier exceeds 509 characters in 'printf' function. @subsection Content Under construction. @subsection Sample code @verbatim printf("%510d\n", a); /* W0016 */ @end verbatim @subsection Related message @itemize @item @ref{W0017} The field width of conversion specifier exceeds 509 characters in 'scanf' function. @end itemize @subsection Since 1.0.0 @node W0017 @section W0017 @cindex W0017 @subsection Message body The field width of conversion specifier exceeds 509 characters in 'scanf' function. @subsection Content Under construction. @subsection Sample code @verbatim scanf("%510d", &a); /* W0017 */ @end verbatim @subsection Related message @itemize @item @ref{W0016} The field width of conversion specifier exceeds 509 characters in 'printf' function. @end itemize @subsection Since 1.0.0 @node W0018 @section W0018 @cindex W0018 @subsection Message body This accuracy width of conversion specifier exceeds 509 characters. @subsection Content Under construction. @subsection Sample code @verbatim printf("%.510f\n", a); /* W0018 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0019 @section W0019 @cindex W0019 @subsection Message body This pointer cast is danger because it delete const qualifier. @subsection Content Under construction. @subsection Sample code @verbatim int *pa; const int *pb; pa = (int *) pb; /* W0019 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0021 @section W0021 @cindex W0021 @subsection Message body This pointer cast is danger because it delete volatile qualifier. @subsection Content Under construction. @subsection Sample code @verbatim int *pa; volatile int *pb; pa = (int *) pb; /* W0021 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0023 @section W0023 @cindex W0023 @subsection Message body Arithmetic operation is being made by pointer variable. @subsection Content Under construction. @subsection Sample code @verbatim int *p; int *q; long r = p + r; /* W0023 */ @end verbatim @subsection Related message @itemize @item @ref{W0024} Increment or decrement is being made by pointer variable. @end itemize @subsection Since 1.0.0 @node W0024 @section W0024 @cindex W0024 @subsection Message body Increment or decrement is being made by pointer variable. @subsection Content Under construction. @subsection Sample code @verbatim int *p; p++; /* W0024 */ @end verbatim @subsection Related message @itemize @item @ref{W0023} Arithmetic operation is being made by pointer variable. @end itemize @subsection Since 1.0.0 @node W0025 @section W0025 @cindex W0025 @subsection Message body `%s' is already included by this file directly. @subsection Content Under construction. @subsection Sample code @verbatim #include "test.h" #include "test2.h" #include "test.h" /* W0025 */ @end verbatim @subsection Related message @itemize @item @ref{W0026} `%s' is already included by this file indirectly. @end itemize @subsection Since 1.0.0 @node W0026 @section W0026 @cindex W0026 @subsection Message body `%s' is already included by this file indirectly. @subsection Content Under construction. @subsection Sample code @file{test.h} @verbatim #include "test2.h" @end verbatim @file{test.c} @verbatim #include "test.h" #include "test2.h" /* W0026 */ @end verbatim @subsection Related message @itemize @item @ref{W0025} `%s' is already included by this file directly. @end itemize @subsection Since 1.0.0 @node W0027 @section W0027 @cindex W0027 @subsection Message body Comparison operation is being made by pointer variable. @subsection Content Under construction. @subsection Sample code @verbatim int *p; int *q; if (p < q) { /* W0027 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0028 @section W0028 @cindex W0028 @subsection Message body Dereferencing a pointer constant of NULL. @subsection Content Under construction. @subsection Sample code @verbatim int i = *(int *) NULL; /* W0028 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0030 @section W0030 @cindex W0030 @subsection Message body Arithmetic operation is being made by NULL pointer. @subsection Content Under construction. @subsection Sample code @verbatim int *p; p = (int *) NULL + 1; /* W0030 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0031 @section W0031 @cindex W0031 @subsection Message body A formal argument `%s' is not used in this function. @subsection Content Under construction. @subsection Sample code @verbatim int func(int num) /* W0031 */ { return 0; } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0033 @section W0033 @cindex W0033 @subsection Message body A label of `%s:' is not used in this function. It might be removed. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { int num = 0; for (int i =0; i < 10; i++) { num++; } ERROR: /* W0033 */ num = 0; } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0035 @section W0035 @cindex W0035 @subsection Message body Right operand of ``&&' or `||' must arithmetic type or pointer type. @subsection Content Under construction. @subsection Sample code @verbatim struct STR { int x; int y; }; extern struct STR str; void func(void) { int x; int y; x = y && str; /* W0035 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0036 @section W0036 @cindex W0036 @subsection Message body The number of qualification operator exceeds 12.This program doesn't meet the strict ISO C90 standards of the term. @subsection Content Under construction. @subsection Sample code @verbatim int num[1][2][3][4][5][6][7][8][9][10][11][12][13]; /* W0036 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0037 @section W0037 @cindex W0037 @subsection Message body Nest of structure or union exceeds 15. This program doesn't meet the strict ISO C90 standards of the term. @subsection Content Under construction. @subsection Sample code @verbatim 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; }; @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0038 @section W0038 @cindex W0038 @subsection Message body The size of object `%s' exceeds 32767 bytes. This program doesn't meet the strict ISO C90 standards of the term. @subsection Content Under construction. @subsection Sample code @verbatim int num[100][330]; /* W0038 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0039 @section W0039 @subsection Message body The number of local identifier in the block exceeds 127. This program doesn't meet the strict ISO C90 standards of the term. @subsection Content Under construction. @subsection Sample code @verbatim 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 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0040 @section W0040 @cindex W0040 @subsection Message body A bit field is declared without 'signed' or 'unsigned'. @subsection Content Under construction. @subsection Sample code @verbatim struct STR { /* W0040 */ int a:5; }; @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0041 @section W0041 @cindex W0041 @subsection Message body The number of member of structure or union exceeds 127.This program doesn't meet the strict ISO C90 standards of the term. @subsection Content Under construction. @subsection Sample code @verbatim struct STR { int num1; int num2; int num3; int num4; int num5; ...snip... int num125; int num126; int num127; int num128; /* W0041 */ }; @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0042 @section W0042 @cindex W0042 @subsection Message body The number of enumeration literal exceeds 127. This program doesn't meet the strict ISO C90 standards of the term. @subsection Content Under construction. @subsection Sample code @verbatim 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 */ }; @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0043 @section W0043 @cindex W0043 @subsection Message body The initial value of the array is short of declared array's size. The residual array will be initialized by zero. @subsection Content Under construction. @subsection Sample code @verbatim int array[5] = { 1, 2, 3 }; /* W0043 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0049 @section W0049 @cindex W0049 @subsection Message body Nest of control structure exceeds 15. This program doesn't meet the strict ISO C90 standards of the term. @subsection Content Under construction. @subsection Sample code @verbatim 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 */ ; } } } } } } } } } } } } } } } } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0050 @section W0050 @cindex W0050 @subsection Message body The number of 'case' label exceeds 257. This program doesn't meet the strict ISO C90 standards of the term. @subsection Content Under construction. @subsection Sample code @verbatim switch (num) { case 1: break; case 2: break; case 3: break; ...snip... case 257: break; case 258: /* W0050 */ break; } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0051 @section W0051 @cindex W0051 @subsection Message body An external identifier `%s' cannot distinguish other identifier name from the range of number of characters defined in linker property. @subsection Content Under construction. @subsection Sample code @verbatim extern int very_long_long_long_ ...snip... _long_external_symbol; /* W0051 */ @end verbatim @subsection Related message @itemize @item @ref{C0001} A warning is detected as a pair of this identifier `%s'. @end itemize @subsection Since 1.0.0 @node W0052 @section W0052 @cindex W0052 @subsection Message body An identifier `%s' cannot distinguish other identifier name from the range of number of characters defined in compile property. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { int very_long_long_long_long_long_ ...snip... _long_symbol; /* W0052 */ } @end verbatim @subsection Related message @itemize @item @ref{C0001} A warning is detected as a pair of this identifier `%s'. @end itemize @subsection Since 1.0.0 @node W0053 @section W0053 @cindex W0053 @subsection Message body Nest of `#include \%s\' exceeds 8.This program doesn't meet the strict ISO C90 standards of the term. @subsection Content Under construction. @subsection Sample code @file{test.c} @verbatim #include "test1.h" @end verbatim @file{test1.h} @verbatim #include "test2.h" @end verbatim @file{test2.h} @verbatim #include "test3.h" @end verbatim @file{test3.h} @verbatim #include "test4.h" @end verbatim @file{test4.h} @verbatim #include "test5.h" @end verbatim @file{test5.h} @verbatim #include "test6.h" @end verbatim @file{test6.h} @verbatim #include "test7.h" @end verbatim @file{test7.h} @verbatim #include "test8.h" @end verbatim @file{test8.h} @verbatim #include "test9.h" @end verbatim @file{test9.h} @verbatim #include "test10.h" /* W0053 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0054 @section W0054 @cindex W0054 @subsection Message body The maximum number of `#if...' nest exceeds 8. This program doesn't meet the strict ISO C90 standards of the term. @subsection Content Under construction. @subsection Sample code @verbatim #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 @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0055 @section W0055 @cindex W0055 @subsection Message body The number of macro definition exceeds 1024. This program doesn't meet the strict ISO C90 standards of the term. @subsection Content Under construction. @subsection Sample code @verbatim #define MACRO_1 #define MACRO_2 #define MACRO_3 ...snip... #define MACRO_1023 #define MACRO_1024 #define MACRO_1025 /* W0055 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0056 @section W0056 @cindex W0056 @subsection Message body The number of formal argument of function-like macro exceeds 31.This program doesn't meet the strict ISO C90 standards of the term. @subsection Content Under construction. @subsection Sample code @verbatim #define MACRO(a1, a2, a3, ...snip... a30, a31, a32) /* W0056 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0057 @section W0057 @cindex W0057 @subsection Message body The number of actual argument of function-like macro exceeds 31.This program doesn't meet the strict ISO C90 standards of the term. @subsection Content Under construction. @subsection Sample code @verbatim int i = MACRO(1, 2, 3 ...snip... 30, 31, 32); /* W0057 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0058 @section W0058 @cindex W0058 @subsection Message body The number of characters of string literal exceeds 509.This program doesn't meet the strict ISO C90 standards of the term. @subsection Content Under construction. @subsection Sample code @verbatim char buf[] = "very long long long ...snip... long string literal"; /* W0058 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0059 @section W0059 @cindex W0059 @subsection Message body Ctrl-M(^M) control character is found at the end of line. @subsection Content Under construction. @subsection Sample code None. @subsection Related message @itemize @item @ref{W0060} Ctrl-Z(^Z) control character is found in this file. @end itemize @subsection Since 1.0.0 @node W0060 @section W0060 @cindex W0060 @subsection Message body Ctrl-Z(^Z) control character is found in this file. @subsection Content Under construction. @subsection Sample code None. @subsection Related message @itemize @item @ref{W0059} Ctrl-M(^M) control character is found at the end of line. @end itemize @subsection Since 1.0.0 @node W0061 @section W0061 @cindex W0061 @subsection Message body `%s' is not actual reserved keyword. It will be considered as language extension and ignored. @subsection Content Under construction. @subsection Sample code @verbatim extern int func(void) __attribute__ ((__const__)); /* W0061 */ @end verbatim @subsection Related message @itemize @item @ref{W0062} `__typeof__' is not supported ISO C standards. It will be considered as language extension. @item @ref{W0063} `__alignof__'is not supported ISO C standards. It will be considered as language extension.. @end itemize @subsection Since 1.0.0 @node W0062 @section W0062 @cindex W0062 @subsection Message body `__typeof__' is not supported ISO C standards. It will be considered as language extension. @subsection Content Under construction. @subsection Sample code @verbatim #define DEF_FUNPTR(func) __typeof__(func) *ptr_##func = 0 DEF_FUNPTR(main); /* W0062 */ @end verbatim @subsection Related message @itemize @item @ref{W0061} `%s' is not actual reserved keyword. It will be considered as language extension and ignored. @item @ref{W0063} `__alignof__'is not supported ISO C standards. It will be considered as language extension.. @end itemize @subsection Since 1.0.0 @node W0063 @section W0063 @cindex W0063 @subsection Message body `__alignof__'is not supported ISO C standards. It will be considered as language extension.. @subsection Content Under construction. @subsection Sample code @verbatim int a = __alignof__(struct sockaddr *) /* W0063 */ @end verbatim @subsection Related message @itemize @item @ref{W0061} `%s' is not actual reserved keyword. It will be considered as language extension and ignored. @item @ref{W0062} `__typeof__' is not supported ISO C standards. It will be considered as language extension. @end itemize @subsection Since 1.0.0 @node W0064 @section W0064 @cindex W0064 @subsection Message body A binary integer literal is used. This is the language extension. @subsection Content Under construction. @subsection Sample code @verbatim unsigned char c = 0b00000001; /* W0064 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0065 @section W0065 @cindex W0065 @subsection Message body Must not cast left operand of assignment operator. @subsection Content Under construction. @subsection Sample code @verbatim void func(int num) { (unsigned short) num = 100U; /* W0065 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0066 @section W0066 @cindex W0066 @subsection Message body `main()' function must `int (void)' or `int (int, char *[])'. @subsection Content Under construction. @subsection Sample code @verbatim void main(void) {} /* W0066 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0067 @section W0067 @cindex W0067 @subsection Message body Directly access to the member of nested structure. This is the language extension. @subsection Content Under construction. @subsection Sample code @verbatim struct BBB { int mb; struct AAA { int ma; }; } bbb; bbb.ma = 1; /* W0067 */ @end verbatim @subsection Related message @itemize @item @ref{W0068} `.' is used to get access to bit. This is the language extension. @end itemize @subsection Since 1.0.0 @node W0068 @section W0068 @cindex W0068 @subsection Message body `.' is used to get access to bit. This is the language extension. @subsection Content Under construction. @subsection Sample code @verbatim unsigned short a; a.2 = 0; /* W0068 */ @end verbatim @subsection Related message @itemize @item @ref{W0067} Directly access to the member of nested structure. This is the language extension. @end itemize @subsection Since 1.0.0 @node W0069 @section W0069 @cindex W0069 @subsection Message body `/*' is found in the beginning with `/*' comments. Nested comment doesn't allowed in ISO C standards. @subsection Content Under construction. @subsection Sample code @verbatim /* /* W0069 */ */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0070 @section W0070 @cindex W0070 @subsection Message body Included <%s> is not referenced in the translation unit. It can be removed. @subsection Content Under construction. @subsection Sample code None. @subsection Related message @itemize @item @ref{W0071} Included "%s" is not referenced in the translation unit. It can be removed. @end itemize @subsection Since 1.0.0 @node W0071 @section W0071 @cindex W0071 @subsection Message body Included \%s\ is not referenced in the translation unit. It can be removed. @subsection Content Under construction. @subsection Sample code None. @subsection Related message @itemize @item @ref{W0070} Included <%s> is not referenced in the translation unit. It can be removed. @end itemize @subsection Since 1.0.0 @node W0072 @section W0072 @cindex W0072 @subsection Message body A character except for basic source character is used in header file name. @subsection Content Under construction. @subsection Sample code @verbatim #include /* W0072 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0073 @section W0073 @cindex W0073 @subsection Message body No include guard in this include file. @subsection Content Under construction. @subsection Sample code None. @subsection Related message None. @subsection Since 1.0.0 @node W0076 @section W0076 @cindex W0076 @subsection Message body Hexadecimal constant without `U' or `u' suffix. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int num = 0x1234; /* W0076 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0077 @section W0077 @cindex W0077 @subsection Message body Lower case `l' is added to integer or floating-point number. @subsection Content Under construction. @subsection Sample code @verbatim long a = 0x1000l; /* W0077 */ long b = 0x1000L; /* OK */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0078 @section W0078 @cindex W0078 @subsection Message body A function is declared without list of formal argument. @subsection Content Under construction. @subsection Sample code @verbatim int sample() /* W0078 */ { return 0; } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0079 @section W0079 @cindex W0079 @subsection Message body This array cannot keep final character `\0' which initial value of string literal. @subsection Content Under construction. @subsection Sample code @verbatim char text[3] = "ABC"; /* W0079 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0080 @section W0080 @cindex W0080 @subsection Message body A global object which const qualified is defined without explicitly initialized. @subsection Content Under construction. @subsection Sample code @verbatim const int num; /* W0080 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0081 @section W0081 @cindex W0081 @subsection Message body A monadic operator `-' becomes unsigned type if it use 'unsigned int' type, 'unsigned long' type or 'unsigned long' type operand. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long num = 0; long val = -num; /* W0081 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0082 @section W0082 @cindex W0082 @subsection Message body Unary operator `-' is applied to an operand whose underlying type `%s' is unsigned. @subsection Content Under construction. @subsection Sample code @verbatim unsigned short num = 20; int val = -num; /* W0082 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0084 @section W0084 @cindex W0084 @subsection Message body Left operand of this comma operator `,' doesn't described the statement which has side-effects. @subsection Content Under construction. @subsection Sample code @verbatim int a = 0; int b = 1; a, b++; /* W0084 */ @end verbatim @subsection Related message @itemize @item @ref{W0085} This statement doesn't have side-effects. It is highly possible that it having error. @item @ref{W0086} Second or third operand is verbose statement which doesn't have side-effects in ternary operator (conditional operator). @item @ref{W0087} The right side statement of comma operator is verbose statement which doesn't have side-effects. @item @ref{W0088} The right side statement of logical operator is verbose statement which doesn't have side-effects. @end itemize @subsection Since 1.0.0 @node W0085 @section W0085 @cindex W0085 @subsection Message body This statement doesn't have side-effects. It is highly possible that it having error. @subsection Content Under construction. @subsection Sample code @verbatim a; /* W0085 */ @end verbatim @subsection Related message @itemize @item @ref{W0084} Left operand of this comma operator `,' doesn't described the statement which has side-effects. @item @ref{W0086} Second or third operand is verbose statement which doesn't have side-effects in ternary operator (conditional operator). @item @ref{W0087} The right side statement of comma operator is verbose statement which doesn't have side-effects. @item @ref{W0088} The right side statement of logical operator is verbose statement which doesn't have side-effects. @end itemize @subsection Since 1.0.0 @node W0086 @section W0086 @cindex W0086 @subsection Message body Second or third operand is verbose statement which doesn't have side-effects in ternary operator (conditional operator). @subsection Content Under construction. @subsection Sample code @verbatim int a; int b; (a < 0) ? b : b++; /* W0086 */ @end verbatim @subsection Related message @itemize @item @ref{W0084} Left operand of this comma operator `,' doesn't described the statement which has side-effects. @item @ref{W0085} This statement doesn't have side-effects. It is highly possible that it having error. @item @ref{W0087} The right side statement of comma operator is verbose statement which doesn't have side-effects. @item @ref{W0088} The right side statement of logical operator is verbose statement which doesn't have side-effects. @end itemize @subsection Since 1.0.0 @node W0087 @section W0087 @cindex W0087 @subsection Message body The right side statement of comma operator is verbose statement which doesn't have side-effects. @subsection Content Under construction. @subsection Sample code @verbatim int a = 0; int b = 1; a++, b; /* W0087 */ @end verbatim @subsection Related message @itemize @item @ref{W0084} Left operand of this comma operator `,' doesn't described the statement which has side-effects. @item @ref{W0085} This statement doesn't have side-effects. It is highly possible that it having error. @item @ref{W0086} Second or third operand is verbose statement which doesn't have side-effects in ternary operator (conditional operator). @item @ref{W0088} The right side statement of logical operator is verbose statement which doesn't have side-effects. @end itemize @subsection Since 1.0.0 @node W0088 @section W0088 @cindex W0088 @subsection Message body The right side statement of logical operator is verbose statement which doesn't have side-effects. @subsection Content Under construction. @subsection Sample code @verbatim (a < 0) && func(a) && func(b) && c; /* W0088 */ @end verbatim @subsection Related message @itemize @item @ref{W0084} Left operand of this comma operator `,' doesn't described the statement which has side-effects. @item @ref{W0085} This statement doesn't have side-effects. It is highly possible that it having error. @item @ref{W0086} Second or third operand is verbose statement which doesn't have side-effects in ternary operator (conditional operator). @item @ref{W0087} The right side statement of comma operator is verbose statement which doesn't have side-effects. @end itemize @subsection Since 1.0.0 @node W0093 @section W0093 @cindex W0093 @subsection Message body This expression may cause division-by-zero. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a, int b) { if (b > 0) { return a / b; /* OK */ } return a / b; /* W0093 */ } @end verbatim @subsection Related message @itemize @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W0096 @section W0096 @cindex W0096 @subsection Message body It divided by a constant expression which definitely zero. @subsection Content Under construction. @subsection Sample code @verbatim #define A (0) int b = 10 / A; /* W0096 */ @end verbatim @subsection Related message @itemize @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W0097 @section W0097 @cindex W0097 @subsection Message body This expression may cause division-by-zero. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a, int b) { if (a < 0) { ...snip... } else { ...snip... if (a < 1) { return b / a; /* W0097 */ } } } @end verbatim @subsection Related message @itemize @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W0100 @section W0100 @cindex W0100 @subsection Message body The variable `%s' has not been reassigned since the initial value is assigned. It may be able to be defined as `const' with an initial value. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a) { int b = a; /* W0100 */ return b; } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0101 @section W0101 @cindex W0101 @subsection Message body An address of auto variable is substituted for a pointer which has a longer life. This program is danger. @subsection Content Under construction. @subsection Sample code @verbatim extern long *ptr; void func() { long value = 0; ptr = &value; /* W0101 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0102 @section W0102 @cindex W0102 @subsection Message body An address of auto variable is returned via formal argument to functions. This program is danger. @subsection Content Under construction. @subsection Sample code @verbatim void func(int **ptr) { int num; *ptr = # /* W0102 */ } @end verbatim @subsection Related message @itemize @item @ref{W0103} An address of auto variable is returned as return value from a function. This program is danger. @end itemize @subsection Since 1.0.0 @node W0103 @section W0103 @cindex W0103 @subsection Message body An address of auto variable is returned as return value from a function. This program is danger. @subsection Content Under construction. @subsection Sample code @verbatim char *foo1(void) { char a[3]; return a; /* W0103 */ } @end verbatim @subsection Related message @itemize @item @ref{W0102} An address of auto variable is returned via formal argument to functions. This program is danger. @end itemize @subsection Since 1.0.0 @node W0104 @section W0104 @cindex W0104 @subsection Message body The value of formal argument `%s' is not change. It can be declarable with 'const'. @subsection Content Under construction. @subsection Sample code @verbatim void func(int val) /* W0104 */ { const int num = val + 1; } @end verbatim @subsection Related message @itemize @item @ref{W0105} The object which points the formal argument `%s' is not change. It can be declaring as pointer type which points const object. @end itemize @subsection Since 1.0.0 @node W0105 @section W0105 @cindex W0105 @subsection Message body The object which points the formal argument `%s' is not change. It can be declaring as pointer type which points const object. @subsection Content Under construction. @subsection Sample code @verbatim void func(int *val) /* W0105 */ { const int num = *val; } @end verbatim @subsection Related message @itemize @item @ref{W0104} The value of formal argument `%s' is not change. It can be declarable with 'const'. @end itemize @subsection Since 1.0.0 @node W0107 @section W0107 @cindex W0107 @subsection Message body An address of auto variable is substituted for local pointer with 'static' option. This program is danger. @subsection Content Under construction. @subsection Sample code @verbatim void foo() { static int *p; int b = 100; p = &b; /* W0107 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0108 @section W0108 @cindex W0108 @subsection Message body An assignment-expression appears in the logical expression. @subsection Content Under construction. @subsection Sample code @verbatim int a; int b; if (a = b) { /* W0108 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0109 @section W0109 @subsection Message body The definition of this function doesn't found. It consider it was omitted, and insert `extern int %s()'. @subsection Content Under construction. @subsection Sample code @verbatim void func() { foo(); /* W0109 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0110 @section W0110 @cindex W0110 @subsection Message body A variable number with floating-point type is used by loop counter in for statement. @subsection Content Under construction. @subsection Sample code @verbatim double d; for (d = 0.0; d != 1.0; d += 0.1) { /* W0110 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0112 @section W0112 @cindex W0112 @subsection Message body The statement of floating-point compares by equivalent operator. @subsection Content Under construction. @subsection Sample code @verbatim double a = 0.1; a = (a + 0.1) * 5.0; if (a == 1.0) { /* W0112 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0114 @section W0114 @cindex W0114 @subsection Message body This control expression is not explicit logical operation. @subsection Content Under construction. @subsection Sample code @verbatim int a; if (a != 0) { /* OK */ } if (a) { /* W0114 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0115 @section W0115 @cindex W0115 @subsection Message body Unsigned left shift operator `<<' drop the high-order bit. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int func(unsigned int a) { if (a > 0x40000000U) { return a << 2; /* W0115 */ } } @end verbatim @subsection Related message @itemize @item @ref{W0116} Unsigned left shift operator `<<' can be drop high-order bit. @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W0116 @section W0116 @cindex W0116 @subsection Message body Unsigned left shift operator `<<' can be drop high-order bit. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int func(unsigned int a) { if (a > 0x40000000U) { return a << 1; /* W0116 */ } } @end verbatim @subsection Related message @itemize @item @ref{W0115} Unsigned left shift operator `<<' drop the high-order bit. @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W0117 @section W0117 @cindex W0117 @subsection Message body `%s' has external-linkage without any prototype declarations. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) /* W0117 */ { ...snip... } @end verbatim @subsection Related message @itemize @item @ref{W0118} `%s' has external-linkage, but no prototype declaration is in header files. @end itemize @subsection Since 1.0.0 @node W0118 @section W0118 @cindex W0118 @subsection Message body `%s' has external-linkage, but no prototype declaration is in header files. @subsection Content Under construction. @subsection Sample code @file{test.c} @verbatim extern int val; /* W0118 */ @end verbatim @subsection Related message @itemize @item @ref{W0117} `%s' has external-linkage without any prototype declarations. @end itemize @subsection Since 1.0.0 @node W0119 @section W0119 @cindex W0119 @subsection Message body An implicit type conversion from char to signed char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(signed char a); void bar(char a) { signed char b = a; /* W0119 */ foo(a); /* W0119 */ } @end verbatim @subsection Related message @itemize @item @ref{W0120} An implicit type conversion from char to unsigned char. @item @ref{W0121} An implicit type conversion from char to signed short. @item @ref{W0122} An implicit type conversion from char to unsigned short. @item @ref{W0123} An implicit type conversion from char to signed int. @item @ref{W0124} An implicit type conversion from char to unsigned int. @item @ref{W0125} An implicit type conversion from char to signed long. @item @ref{W0126} An implicit type conversion from char to unsigned long. @item @ref{W0127} An implicit type conversion from char to float. @item @ref{W0128} An implicit type conversion from char to double. @item @ref{W0129} An implicit type conversion from char to long double. @item @ref{W0130} An implicit type conversion from char to signed long long. @item @ref{W0131} An implicit type conversion from char to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0120 @section W0120 @cindex W0120 @subsection Message body An implicit type conversion from char to unsigned char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned char a); void bar(char a) { unsigned char b = a; /* W0120 */ foo(a); /* W0120 */ } @end verbatim @subsection Related message @itemize @item @ref{W0119} An implicit type conversion from char to signed char. @item @ref{W0121} An implicit type conversion from char to signed short. @item @ref{W0122} An implicit type conversion from char to unsigned short. @item @ref{W0123} An implicit type conversion from char to signed int. @item @ref{W0124} An implicit type conversion from char to unsigned int. @item @ref{W0125} An implicit type conversion from char to signed long. @item @ref{W0126} An implicit type conversion from char to unsigned long. @item @ref{W0127} An implicit type conversion from char to float. @item @ref{W0128} An implicit type conversion from char to double. @item @ref{W0129} An implicit type conversion from char to long double. @item @ref{W0130} An implicit type conversion from char to signed long long. @item @ref{W0131} An implicit type conversion from char to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0121 @section W0121 @cindex W0121 @subsection Message body An implicit type conversion from char to signed short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(short a); void bar(char a) { short b = a; /* W0121 */ foo(a); /* W0121 */ } @end verbatim @subsection Related message @itemize @item @ref{W0119} An implicit type conversion from char to signed char. @item @ref{W0120} An implicit type conversion from char to unsigned char. @item @ref{W0122} An implicit type conversion from char to unsigned short. @item @ref{W0123} An implicit type conversion from char to signed int. @item @ref{W0124} An implicit type conversion from char to unsigned int. @item @ref{W0125} An implicit type conversion from char to signed long. @item @ref{W0126} An implicit type conversion from char to unsigned long. @item @ref{W0127} An implicit type conversion from char to float. @item @ref{W0128} An implicit type conversion from char to double. @item @ref{W0129} An implicit type conversion from char to long double. @item @ref{W0130} An implicit type conversion from char to signed long long. @item @ref{W0131} An implicit type conversion from char to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0122 @section W0122 @cindex W0122 @subsection Message body An implicit type conversion from char to unsigned short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned short a); void bar(char a) { unsigned short b = a; /* W0122 */ foo(a); /* W0122 */ } @end verbatim @subsection Related message @itemize @item @ref{W0119} An implicit type conversion from char to signed char. @item @ref{W0120} An implicit type conversion from char to unsigned char. @item @ref{W0121} An implicit type conversion from char to signed short. @item @ref{W0123} An implicit type conversion from char to signed int. @item @ref{W0124} An implicit type conversion from char to unsigned int. @item @ref{W0125} An implicit type conversion from char to signed long. @item @ref{W0126} An implicit type conversion from char to unsigned long. @item @ref{W0127} An implicit type conversion from char to float. @item @ref{W0128} An implicit type conversion from char to double. @item @ref{W0129} An implicit type conversion from char to long double. @item @ref{W0130} An implicit type conversion from char to signed long long. @item @ref{W0131} An implicit type conversion from char to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0123 @section W0123 @cindex W0123 @subsection Message body An implicit type conversion from char to signed int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(int a); void bar(char a) { int b = a; /* W0123 */ foo(a); /* W0123 */ } @end verbatim @subsection Related message @itemize @item @ref{W0119} An implicit type conversion from char to signed char. @item @ref{W0120} An implicit type conversion from char to unsigned char. @item @ref{W0121} An implicit type conversion from char to signed short. @item @ref{W0122} An implicit type conversion from char to unsigned short. @item @ref{W0124} An implicit type conversion from char to unsigned int. @item @ref{W0125} An implicit type conversion from char to signed long. @item @ref{W0126} An implicit type conversion from char to unsigned long. @item @ref{W0127} An implicit type conversion from char to float. @item @ref{W0128} An implicit type conversion from char to double. @item @ref{W0129} An implicit type conversion from char to long double. @item @ref{W0130} An implicit type conversion from char to signed long long. @item @ref{W0131} An implicit type conversion from char to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0124 @section W0124 @cindex W0124 @subsection Message body An implicit type conversion from char to unsigned int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned int a); void bar(char a) { unsigned int b = a; /* W0124 */ foo(a); /* W0124 */ } @end verbatim @subsection Related message @itemize @item @ref{W0119} An implicit type conversion from char to signed char. @item @ref{W0120} An implicit type conversion from char to unsigned char. @item @ref{W0121} An implicit type conversion from char to signed short. @item @ref{W0122} An implicit type conversion from char to unsigned short. @item @ref{W0123} An implicit type conversion from char to signed int. @item @ref{W0125} An implicit type conversion from char to signed long. @item @ref{W0126} An implicit type conversion from char to unsigned long. @item @ref{W0127} An implicit type conversion from char to float. @item @ref{W0128} An implicit type conversion from char to double. @item @ref{W0129} An implicit type conversion from char to long double. @item @ref{W0130} An implicit type conversion from char to signed long long. @item @ref{W0131} An implicit type conversion from char to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0125 @section W0125 @cindex W0125 @subsection Message body An implicit type conversion from char to signed long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long a); void bar(char a) { long b = a; /* W0125 */ foo(a); /* W0125 */ } @end verbatim @subsection Related message @itemize @item @ref{W0119} An implicit type conversion from char to signed char. @item @ref{W0120} An implicit type conversion from char to unsigned char. @item @ref{W0121} An implicit type conversion from char to signed short. @item @ref{W0122} An implicit type conversion from char to unsigned short. @item @ref{W0123} An implicit type conversion from char to signed int. @item @ref{W0124} An implicit type conversion from char to unsigned int. @item @ref{W0126} An implicit type conversion from char to unsigned long. @item @ref{W0127} An implicit type conversion from char to float. @item @ref{W0128} An implicit type conversion from char to double. @item @ref{W0129} An implicit type conversion from char to long double. @item @ref{W0130} An implicit type conversion from char to signed long long. @item @ref{W0131} An implicit type conversion from char to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0126 @section W0126 @cindex W0126 @subsection Message body An implicit type conversion from char to unsigned long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long a); void bar(char a) { unsigned long b = a; /* W0126 */ foo(a); /* W0126 */ } @end verbatim @subsection Related message @itemize @item @ref{W0119} An implicit type conversion from char to signed char. @item @ref{W0120} An implicit type conversion from char to unsigned char. @item @ref{W0121} An implicit type conversion from char to signed short. @item @ref{W0122} An implicit type conversion from char to unsigned short. @item @ref{W0123} An implicit type conversion from char to signed int. @item @ref{W0124} An implicit type conversion from char to unsigned int. @item @ref{W0125} An implicit type conversion from char to signed long. @item @ref{W0127} An implicit type conversion from char to float. @item @ref{W0128} An implicit type conversion from char to double. @item @ref{W0129} An implicit type conversion from char to long double. @item @ref{W0130} An implicit type conversion from char to signed long long. @item @ref{W0131} An implicit type conversion from char to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0127 @section W0127 @cindex W0127 @subsection Message body An implicit type conversion from char to float. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(float a); void bar(char a) { float b = a; /* W0127 */ foo(a); /* W0127 */ } @end verbatim @subsection Related message @itemize @item @ref{W0119} An implicit type conversion from char to signed char. @item @ref{W0120} An implicit type conversion from char to unsigned char. @item @ref{W0121} An implicit type conversion from char to signed short. @item @ref{W0122} An implicit type conversion from char to unsigned short. @item @ref{W0123} An implicit type conversion from char to signed int. @item @ref{W0124} An implicit type conversion from char to unsigned int. @item @ref{W0125} An implicit type conversion from char to signed long. @item @ref{W0126} An implicit type conversion from char to unsigned long. @item @ref{W0128} An implicit type conversion from char to double. @item @ref{W0129} An implicit type conversion from char to long double. @item @ref{W0130} An implicit type conversion from char to signed long long. @item @ref{W0131} An implicit type conversion from char to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0128 @section W0128 @cindex W0128 @subsection Message body An implicit type conversion from char to double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(double a); void bar(char a) { double b = a; /* W0128 */ foo(a); /* W0128 */ } @end verbatim @subsection Related message @itemize @item @ref{W0119} An implicit type conversion from char to signed char. @item @ref{W0120} An implicit type conversion from char to unsigned char. @item @ref{W0121} An implicit type conversion from char to signed short. @item @ref{W0122} An implicit type conversion from char to unsigned short. @item @ref{W0123} An implicit type conversion from char to signed int. @item @ref{W0124} An implicit type conversion from char to unsigned int. @item @ref{W0125} An implicit type conversion from char to signed long. @item @ref{W0126} An implicit type conversion from char to unsigned long. @item @ref{W0127} An implicit type conversion from char to float. @item @ref{W0129} An implicit type conversion from char to long double. @item @ref{W0130} An implicit type conversion from char to signed long long. @item @ref{W0131} An implicit type conversion from char to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0129 @section W0129 @cindex W0129 @subsection Message body An implicit type conversion from char to long double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long double a); void bar(char a) { long double b = a; /* W0129 */ foo(a); /* W0129 */ } @end verbatim @subsection Related message @itemize @item @ref{W0119} An implicit type conversion from char to signed char. @item @ref{W0120} An implicit type conversion from char to unsigned char. @item @ref{W0121} An implicit type conversion from char to signed short. @item @ref{W0122} An implicit type conversion from char to unsigned short. @item @ref{W0123} An implicit type conversion from char to signed int. @item @ref{W0124} An implicit type conversion from char to unsigned int. @item @ref{W0125} An implicit type conversion from char to signed long. @item @ref{W0126} An implicit type conversion from char to unsigned long. @item @ref{W0127} An implicit type conversion from char to float. @item @ref{W0128} An implicit type conversion from char to double. @item @ref{W0130} An implicit type conversion from char to signed long long. @item @ref{W0131} An implicit type conversion from char to unsigned long long. @end itemize Under construction. @subsection Since 1.0.0 @node W0130 @section W0130 @cindex W0130 @subsection Message body An implicit type conversion from char to signed long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long long a); void bar(char a) { long long b = a; /* W0130 */ foo(a); /* W0130 */ } @end verbatim @subsection Related message @itemize @item @ref{W0119} An implicit type conversion from char to signed char. @item @ref{W0120} An implicit type conversion from char to unsigned char. @item @ref{W0121} An implicit type conversion from char to signed short. @item @ref{W0122} An implicit type conversion from char to unsigned short. @item @ref{W0123} An implicit type conversion from char to signed int. @item @ref{W0124} An implicit type conversion from char to unsigned int. @item @ref{W0125} An implicit type conversion from char to signed long. @item @ref{W0126} An implicit type conversion from char to unsigned long. @item @ref{W0127} An implicit type conversion from char to float. @item @ref{W0128} An implicit type conversion from char to double. @item @ref{W0129} An implicit type conversion from char to long double. @item @ref{W0131} An implicit type conversion from char to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0131 @section W0131 @cindex W0131 @subsection Message body An implicit type conversion from char to unsigned long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long long a); void bar(char a) { unsigned long long b = a; /* W0131 */ foo(a); /* W0131 */ } @end verbatim @subsection Related message @itemize @item @ref{W0119} An implicit type conversion from char to signed char. @item @ref{W0120} An implicit type conversion from char to unsigned char. @item @ref{W0121} An implicit type conversion from char to signed short. @item @ref{W0122} An implicit type conversion from char to unsigned short. @item @ref{W0123} An implicit type conversion from char to signed int. @item @ref{W0124} An implicit type conversion from char to unsigned int. @item @ref{W0125} An implicit type conversion from char to signed long. @item @ref{W0126} An implicit type conversion from char to unsigned long. @item @ref{W0127} An implicit type conversion from char to float. @item @ref{W0128} An implicit type conversion from char to double. @item @ref{W0129} An implicit type conversion from char to long double. @item @ref{W0130} An implicit type conversion from char to signed long long. @end itemize @subsection Since 1.0.0 @node W0132 @section W0132 @cindex W0132 @subsection Message body An implicit type conversion from unsigned char to char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(char a); void bar(unsigned char a) { char b = a; /* W0132 */ foo(a); /* W0132 */ } @end verbatim @subsection Related message @itemize @item @ref{W0133} An implicit type conversion from signed char to char. @item @ref{W0134} An implicit type conversion from signed short to char. @item @ref{W0135} An implicit type conversion from unsigned short to char. @item @ref{W0136} An implicit type conversion from signed int to char. @item @ref{W0137} An implicit type conversion from unsigned int to char. @item @ref{W0138} An implicit type conversion from signed long to char. @item @ref{W0139} An implicit type conversion from unsigned long to char. @item @ref{W0140} An implicit type conversion from signed long long to char. @item @ref{W0141} An implicit type conversion from unsigned long long to char. @end itemize @subsection Since 1.0.0 @node W0133 @section W0133 @cindex W0133 @subsection Message body An implicit type conversion from signed char to char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(char a); void bar(signed char a) { char b = a; /* W0133 */ foo(a); /* W0133 */ } @end verbatim @subsection Related message @itemize @item @ref{W0132} An implicit type conversion from unsigned char to char. @item @ref{W0134} An implicit type conversion from signed short to char. @item @ref{W0135} An implicit type conversion from unsigned short to char. @item @ref{W0136} An implicit type conversion from signed int to char. @item @ref{W0137} An implicit type conversion from unsigned int to char. @item @ref{W0138} An implicit type conversion from signed long to char. @item @ref{W0139} An implicit type conversion from unsigned long to char. @item @ref{W0140} An implicit type conversion from signed long long to char. @item @ref{W0141} An implicit type conversion from unsigned long long to char. @end itemize @subsection Since 1.0.0 @node W0134 @section W0134 @cindex W0134 @subsection Message body An implicit type conversion from signed short to char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(char a); void bar(short a) { char b = a; /* W0134 */ foo(a); /* W0134 */ } @end verbatim @subsection Related message @itemize @item @ref{W0132} An implicit type conversion from unsigned char to char. @item @ref{W0133} An implicit type conversion from signed char to char. @item @ref{W0135} An implicit type conversion from unsigned short to char. @item @ref{W0136} An implicit type conversion from signed int to char. @item @ref{W0137} An implicit type conversion from unsigned int to char. @item @ref{W0138} An implicit type conversion from signed long to char. @item @ref{W0139} An implicit type conversion from unsigned long to char. @item @ref{W0140} An implicit type conversion from signed long long to char. @item @ref{W0141} An implicit type conversion from unsigned long long to char. @end itemize @subsection Since 1.0.0 @node W0135 @section W0135 @cindex W0135 @subsection Message body An implicit type conversion from unsigned short to char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(char a); void bar(unsigned short a) { char b = a; /* W0135 */ foo(a); /* W0135 */ } @end verbatim @subsection Related message @itemize @item @ref{W0132} An implicit type conversion from unsigned char to char. @item @ref{W0133} An implicit type conversion from signed char to char. @item @ref{W0134} An implicit type conversion from signed short to char. @item @ref{W0136} An implicit type conversion from signed int to char. @item @ref{W0137} An implicit type conversion from unsigned int to char. @item @ref{W0138} An implicit type conversion from signed long to char. @item @ref{W0139} An implicit type conversion from unsigned long to char. @item @ref{W0140} An implicit type conversion from signed long long to char. @item @ref{W0141} An implicit type conversion from unsigned long long to char. @end itemize @subsection Since 1.0.0 @node W0136 @section W0136 @cindex W0136 @subsection Message body An implicit type conversion from signed int to char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(char a); void bar(int a) { char b = a; /* W0136 */ foo(a); /* W0136 */ } @end verbatim @subsection Related message @itemize @item @ref{W0132} An implicit type conversion from unsigned char to char. @item @ref{W0133} An implicit type conversion from signed char to char. @item @ref{W0134} An implicit type conversion from signed short to char. @item @ref{W0135} An implicit type conversion from unsigned short to char. @item @ref{W0137} An implicit type conversion from unsigned int to char. @item @ref{W0138} An implicit type conversion from signed long to char. @item @ref{W0139} An implicit type conversion from unsigned long to char. @item @ref{W0140} An implicit type conversion from signed long long to char. @item @ref{W0141} An implicit type conversion from unsigned long long to char. @end itemize @subsection Since 1.0.0 @node W0137 @section W0137 @cindex W0137 @subsection Message body An implicit type conversion from unsigned int to char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(char a); void bar(unsigned int a) { char b = a; /* W0137 */ foo(a); /* W0137 */ } @end verbatim @subsection Related message @itemize @item @ref{W0132} An implicit type conversion from unsigned char to char. @item @ref{W0133} An implicit type conversion from signed char to char. @item @ref{W0134} An implicit type conversion from signed short to char. @item @ref{W0135} An implicit type conversion from unsigned short to char. @item @ref{W0136} An implicit type conversion from signed int to char. @item @ref{W0138} An implicit type conversion from signed long to char. @item @ref{W0139} An implicit type conversion from unsigned long to char. @item @ref{W0140} An implicit type conversion from signed long long to char. @item @ref{W0141} An implicit type conversion from unsigned long long to char. @end itemize @subsection Since 1.0.0 @node W0138 @section W0138 @cindex W0138 @subsection Message body An implicit type conversion from signed long to char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(char a); void bar(long a) { char b = a; /* W0138 */ foo(a); /* W0138 */ } @end verbatim @subsection Related message @itemize @item @ref{W0132} An implicit type conversion from unsigned char to char. @item @ref{W0133} An implicit type conversion from signed char to char. @item @ref{W0134} An implicit type conversion from signed short to char. @item @ref{W0135} An implicit type conversion from unsigned short to char. @item @ref{W0136} An implicit type conversion from signed int to char. @item @ref{W0137} An implicit type conversion from unsigned int to char. @item @ref{W0139} An implicit type conversion from unsigned long to char. @item @ref{W0140} An implicit type conversion from signed long long to char. @item @ref{W0141} An implicit type conversion from unsigned long long to char. @end itemize @subsection Since 1.0.0 @node W0139 @section W0139 @cindex W0139 @subsection Message body An implicit type conversion from unsigned long to char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(char a); void bar(unsigned long a) { char b = a; /* W0139 */ foo(a); /* W0139 */ } @end verbatim @subsection Related message @itemize @item @ref{W0132} An implicit type conversion from unsigned char to char. @item @ref{W0133} An implicit type conversion from signed char to char. @item @ref{W0134} An implicit type conversion from signed short to char. @item @ref{W0135} An implicit type conversion from unsigned short to char. @item @ref{W0136} An implicit type conversion from signed int to char. @item @ref{W0137} An implicit type conversion from unsigned int to char. @item @ref{W0138} An implicit type conversion from signed long to char. @item @ref{W0140} An implicit type conversion from signed long long to char. @item @ref{W0141} An implicit type conversion from unsigned long long to char. @end itemize @subsection Since 1.0.0 @node W0140 @section W0140 @cindex W0140 @subsection Message body An implicit type conversion from signed long long to char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(char a); void bar(long long a) { char b = a; /* W0140 */ foo(a); /* W0140 */ } @end verbatim @subsection Related message @itemize @item @ref{W0132} An implicit type conversion from unsigned char to char. @item @ref{W0133} An implicit type conversion from signed char to char. @item @ref{W0134} An implicit type conversion from signed short to char. @item @ref{W0135} An implicit type conversion from unsigned short to char. @item @ref{W0136} An implicit type conversion from signed int to char. @item @ref{W0137} An implicit type conversion from unsigned int to char. @item @ref{W0138} An implicit type conversion from signed long to char. @item @ref{W0139} An implicit type conversion from unsigned long to char. @item @ref{W0141} An implicit type conversion from unsigned long long to char. @end itemize @subsection Since 1.0.0 @node W0141 @section W0141 @cindex W0141 @subsection Message body An implicit type conversion from unsigned long long to char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(char a); void bar(unsigned long long a) { char b = a; /* W0141 */ foo(a); /* W0141 */ } @end verbatim @subsection Related message @itemize @item @ref{W0132} An implicit type conversion from unsigned char to char. @item @ref{W0133} An implicit type conversion from signed char to char. @item @ref{W0134} An implicit type conversion from signed short to char. @item @ref{W0135} An implicit type conversion from unsigned short to char. @item @ref{W0136} An implicit type conversion from signed int to char. @item @ref{W0137} An implicit type conversion from unsigned int to char. @item @ref{W0138} An implicit type conversion from signed long to char. @item @ref{W0139} An implicit type conversion from unsigned long to char. @item @ref{W0140} An implicit type conversion from signed long long to char. @end itemize @subsection Since 1.0.0 @node W0142 @section W0142 @cindex W0142 @subsection Message body An implicit type conversion from unsigned char to signed char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(signed char a); void bar(unsigned char a) { signed char b = a; /* W0142 */ foo(a); /* W0142 */ } @end verbatim @subsection Related message @itemize @item @ref{W0143} An implicit type conversion from unsigned short to signed char. @item @ref{W0144} An implicit type conversion from unsigned short to signed short. @item @ref{W0145} An implicit type conversion from unsigned int to signed char. @item @ref{W0146} An implicit type conversion from unsigned int to signed short. @item @ref{W0147} An implicit type conversion from unsigned int to signed int. @item @ref{W0148} An implicit type conversion from unsigned long to signed char. @item @ref{W0149} An implicit type conversion from unsigned long to signed short. @item @ref{W0150} An implicit type conversion from unsigned long to signed int. @item @ref{W0151} An implicit type conversion from unsigned long to signed long. @item @ref{W0152} An implicit type conversion from unsigned long long to signed char. @item @ref{W0153} An implicit type conversion from unsigned long long to signed short. @item @ref{W0154} An implicit type conversion from unsigned long long to signed int. @item @ref{W0155} An implicit type conversion from unsigned long long to signed long. @item @ref{W0156} An implicit type conversion from unsigned long long to signed long long. @end itemize @subsection Since 1.0.0 @node W0143 @section W0143 @cindex W0143 @subsection Message body An implicit type conversion from unsigned short to signed char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(signed char a); void bar(unsigned short a) { signed char b = a; /* W0143 */ foo(a); /* W0143 */ } @end verbatim @subsection Related message @itemize @item @ref{W0142} An implicit type conversion from unsigned char to signed char. @item @ref{W0144} An implicit type conversion from unsigned short to signed short. @item @ref{W0145} An implicit type conversion from unsigned int to signed char. @item @ref{W0146} An implicit type conversion from unsigned int to signed short. @item @ref{W0147} An implicit type conversion from unsigned int to signed int. @item @ref{W0148} An implicit type conversion from unsigned long to signed char. @item @ref{W0149} An implicit type conversion from unsigned long to signed short. @item @ref{W0150} An implicit type conversion from unsigned long to signed int. @item @ref{W0151} An implicit type conversion from unsigned long to signed long. @item @ref{W0152} An implicit type conversion from unsigned long long to signed char. @item @ref{W0153} An implicit type conversion from unsigned long long to signed short. @item @ref{W0154} An implicit type conversion from unsigned long long to signed int. @item @ref{W0155} An implicit type conversion from unsigned long long to signed long. @item @ref{W0156} An implicit type conversion from unsigned long long to signed long long. @end itemize @subsection Since 1.0.0 @node W0144 @section W0144 @cindex W0144 @subsection Message body An implicit type conversion from unsigned short to signed short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(short a); void bar(unsigned short a) { short b = a; /* W0144 */ foo(a); /* W0144 */ } @end verbatim @subsection Related message @itemize @item @ref{W0142} An implicit type conversion from unsigned char to signed char. @item @ref{W0143} An implicit type conversion from unsigned short to signed char. @item @ref{W0145} An implicit type conversion from unsigned int to signed char. @item @ref{W0146} An implicit type conversion from unsigned int to signed short. @item @ref{W0147} An implicit type conversion from unsigned int to signed int. @item @ref{W0148} An implicit type conversion from unsigned long to signed char. @item @ref{W0149} An implicit type conversion from unsigned long to signed short. @item @ref{W0150} An implicit type conversion from unsigned long to signed int. @item @ref{W0151} An implicit type conversion from unsigned long to signed long. @item @ref{W0152} An implicit type conversion from unsigned long long to signed char. @item @ref{W0153} An implicit type conversion from unsigned long long to signed short. @item @ref{W0154} An implicit type conversion from unsigned long long to signed int. @item @ref{W0155} An implicit type conversion from unsigned long long to signed long. @item @ref{W0156} An implicit type conversion from unsigned long long to signed long long. @end itemize @subsection Since 1.0.0 @node W0145 @section W0145 @cindex W0145 @subsection Message body An implicit type conversion from unsigned int to signed char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(signed char a); void bar(unsigned int a) { signed char b = a; /* W0145 */ foo(a); /* W0145 */ } @end verbatim @subsection Related message @itemize @item @ref{W0142} An implicit type conversion from unsigned char to signed char. @item @ref{W0143} An implicit type conversion from unsigned short to signed char. @item @ref{W0144} An implicit type conversion from unsigned short to signed short. @item @ref{W0146} An implicit type conversion from unsigned int to signed short. @item @ref{W0147} An implicit type conversion from unsigned int to signed int. @item @ref{W0148} An implicit type conversion from unsigned long to signed char. @item @ref{W0149} An implicit type conversion from unsigned long to signed short. @item @ref{W0150} An implicit type conversion from unsigned long to signed int. @item @ref{W0151} An implicit type conversion from unsigned long to signed long. @item @ref{W0152} An implicit type conversion from unsigned long long to signed char. @item @ref{W0153} An implicit type conversion from unsigned long long to signed short. @item @ref{W0154} An implicit type conversion from unsigned long long to signed int. @item @ref{W0155} An implicit type conversion from unsigned long long to signed long. @item @ref{W0156} An implicit type conversion from unsigned long long to signed long long. @end itemize @subsection Since 1.0.0 @node W0146 @section W0146 @cindex W0146 @subsection Message body An implicit type conversion from unsigned int to signed short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(short a); void bar(unsigned int a) { short b = a; /* W0146 */ foo(a); /* W0146 */ } @end verbatim @subsection Related message @itemize @item @ref{W0142} An implicit type conversion from unsigned char to signed char. @item @ref{W0143} An implicit type conversion from unsigned short to signed char. @item @ref{W0144} An implicit type conversion from unsigned short to signed short. @item @ref{W0145} An implicit type conversion from unsigned int to signed char. @item @ref{W0147} An implicit type conversion from unsigned int to signed int. @item @ref{W0148} An implicit type conversion from unsigned long to signed char. @item @ref{W0149} An implicit type conversion from unsigned long to signed short. @item @ref{W0150} An implicit type conversion from unsigned long to signed int. @item @ref{W0151} An implicit type conversion from unsigned long to signed long. @item @ref{W0152} An implicit type conversion from unsigned long long to signed char. @item @ref{W0153} An implicit type conversion from unsigned long long to signed short. @item @ref{W0154} An implicit type conversion from unsigned long long to signed int. @item @ref{W0155} An implicit type conversion from unsigned long long to signed long. @item @ref{W0156} An implicit type conversion from unsigned long long to signed long long. @end itemize @subsection Since 1.0.0 @node W0147 @section W0147 @cindex W0147 @subsection Message body An implicit type conversion from unsigned int to signed int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(int a); void bar(unsigned int a) { int b = a; /* W0147 */ foo(a); /* W0147 */ } @end verbatim @subsection Related message @itemize @item @ref{W0142} An implicit type conversion from unsigned char to signed char. @item @ref{W0143} An implicit type conversion from unsigned short to signed char. @item @ref{W0144} An implicit type conversion from unsigned short to signed short. @item @ref{W0145} An implicit type conversion from unsigned int to signed char. @item @ref{W0146} An implicit type conversion from unsigned int to signed short. @item @ref{W0148} An implicit type conversion from unsigned long to signed char. @item @ref{W0149} An implicit type conversion from unsigned long to signed short. @item @ref{W0150} An implicit type conversion from unsigned long to signed int. @item @ref{W0151} An implicit type conversion from unsigned long to signed long. @item @ref{W0152} An implicit type conversion from unsigned long long to signed char. @item @ref{W0153} An implicit type conversion from unsigned long long to signed short. @item @ref{W0154} An implicit type conversion from unsigned long long to signed int. @item @ref{W0155} An implicit type conversion from unsigned long long to signed long. @item @ref{W0156} An implicit type conversion from unsigned long long to signed long long. @end itemize @subsection Since 1.0.0 @node W0148 @section W0148 @cindex W0148 @subsection Message body An implicit type conversion from unsigned long to signed char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(signed char a); void bar(unsigned long a) { signed char b = a; /* W0148 */ foo(a); /* W0148 */ } @end verbatim @subsection Related message @itemize @item @ref{W0142} An implicit type conversion from unsigned char to signed char. @item @ref{W0143} An implicit type conversion from unsigned short to signed char. @item @ref{W0144} An implicit type conversion from unsigned short to signed short. @item @ref{W0145} An implicit type conversion from unsigned int to signed char. @item @ref{W0146} An implicit type conversion from unsigned int to signed short. @item @ref{W0147} An implicit type conversion from unsigned int to signed int. @item @ref{W0149} An implicit type conversion from unsigned long to signed short. @item @ref{W0150} An implicit type conversion from unsigned long to signed int. @item @ref{W0151} An implicit type conversion from unsigned long to signed long. @item @ref{W0152} An implicit type conversion from unsigned long long to signed char. @item @ref{W0153} An implicit type conversion from unsigned long long to signed short. @item @ref{W0154} An implicit type conversion from unsigned long long to signed int. @item @ref{W0155} An implicit type conversion from unsigned long long to signed long. @item @ref{W0156} An implicit type conversion from unsigned long long to signed long long. @end itemize @subsection Since 1.0.0 @node W0149 @section W0149 @cindex W0149 @subsection Message body An implicit type conversion from unsigned long to signed short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(short a); void bar(unsigned long a) { short b = a; /* W0149 */ foo(a); /* W0149 */ } @end verbatim @subsection Related message @itemize @item @ref{W0142} An implicit type conversion from unsigned char to signed char. @item @ref{W0143} An implicit type conversion from unsigned short to signed char. @item @ref{W0144} An implicit type conversion from unsigned short to signed short. @item @ref{W0145} An implicit type conversion from unsigned int to signed char. @item @ref{W0146} An implicit type conversion from unsigned int to signed short. @item @ref{W0147} An implicit type conversion from unsigned int to signed int. @item @ref{W0148} An implicit type conversion from unsigned long to signed char. @item @ref{W0150} An implicit type conversion from unsigned long to signed int. @item @ref{W0151} An implicit type conversion from unsigned long to signed long. @item @ref{W0152} An implicit type conversion from unsigned long long to signed char. @item @ref{W0153} An implicit type conversion from unsigned long long to signed short. @item @ref{W0154} An implicit type conversion from unsigned long long to signed int. @item @ref{W0155} An implicit type conversion from unsigned long long to signed long. @item @ref{W0156} An implicit type conversion from unsigned long long to signed long long. @end itemize @subsection Since 1.0.0 @node W0150 @section W0150 @cindex W0150 @subsection Message body An implicit type conversion from unsigned long to signed int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(int a); void bar(unsigned long a) { int b = a; /* W0150 */ foo(a); /* W0150 */ } @end verbatim @subsection Related message @itemize @item @ref{W0142} An implicit type conversion from unsigned char to signed char. @item @ref{W0143} An implicit type conversion from unsigned short to signed char. @item @ref{W0144} An implicit type conversion from unsigned short to signed short. @item @ref{W0145} An implicit type conversion from unsigned int to signed char. @item @ref{W0146} An implicit type conversion from unsigned int to signed short. @item @ref{W0147} An implicit type conversion from unsigned int to signed int. @item @ref{W0148} An implicit type conversion from unsigned long to signed char. @item @ref{W0149} An implicit type conversion from unsigned long to signed short. @item @ref{W0151} An implicit type conversion from unsigned long to signed long. @item @ref{W0152} An implicit type conversion from unsigned long long to signed char. @item @ref{W0153} An implicit type conversion from unsigned long long to signed short. @item @ref{W0154} An implicit type conversion from unsigned long long to signed int. @item @ref{W0155} An implicit type conversion from unsigned long long to signed long. @item @ref{W0156} An implicit type conversion from unsigned long long to signed long long. @end itemize @subsection Since 1.0.0 @node W0151 @section W0151 @cindex W0151 @subsection Message body An implicit type conversion from unsigned long to signed long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long a); void bar(unsigned long a) { long b = a; /* W0151 */ foo(a); /* W0151 */ } @end verbatim @subsection Related message @itemize @item @ref{W0142} An implicit type conversion from unsigned char to signed char. @item @ref{W0143} An implicit type conversion from unsigned short to signed char. @item @ref{W0144} An implicit type conversion from unsigned short to signed short. @item @ref{W0145} An implicit type conversion from unsigned int to signed char. @item @ref{W0146} An implicit type conversion from unsigned int to signed short. @item @ref{W0147} An implicit type conversion from unsigned int to signed int. @item @ref{W0148} An implicit type conversion from unsigned long to signed char. @item @ref{W0149} An implicit type conversion from unsigned long to signed short. @item @ref{W0150} An implicit type conversion from unsigned long to signed int. @item @ref{W0152} An implicit type conversion from unsigned long long to signed char. @item @ref{W0153} An implicit type conversion from unsigned long long to signed short. @item @ref{W0154} An implicit type conversion from unsigned long long to signed int. @item @ref{W0155} An implicit type conversion from unsigned long long to signed long. @item @ref{W0156} An implicit type conversion from unsigned long long to signed long long. @end itemize @subsection Since 1.0.0 @node W0152 @section W0152 @cindex W0152 @subsection Message body An implicit type conversion from unsigned long long to signed char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(signed char a); void bar(unsigned long long a) { signed char b = a; /* W0152 */ foo(a); /* W0152 */ } @end verbatim. @subsection Related message @itemize @item @ref{W0142} An implicit type conversion from unsigned char to signed char. @item @ref{W0143} An implicit type conversion from unsigned short to signed char. @item @ref{W0144} An implicit type conversion from unsigned short to signed short. @item @ref{W0145} An implicit type conversion from unsigned int to signed char. @item @ref{W0146} An implicit type conversion from unsigned int to signed short. @item @ref{W0147} An implicit type conversion from unsigned int to signed int. @item @ref{W0148} An implicit type conversion from unsigned long to signed char. @item @ref{W0149} An implicit type conversion from unsigned long to signed short. @item @ref{W0150} An implicit type conversion from unsigned long to signed int. @item @ref{W0151} An implicit type conversion from unsigned long to signed long. @item @ref{W0153} An implicit type conversion from unsigned long long to signed short. @item @ref{W0154} An implicit type conversion from unsigned long long to signed int. @item @ref{W0155} An implicit type conversion from unsigned long long to signed long. @item @ref{W0156} An implicit type conversion from unsigned long long to signed long long. @end itemize @subsection Since 1.0.0 @node W0153 @section W0153 @cindex W0153 @subsection Message body An implicit type conversion from unsigned long long to signed short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(short a); void bar(unsigned long long a) { short b = a; /* W0153 */ foo(a); /* W0153 */ } @end verbatim @subsection Related message @itemize @item @ref{W0142} An implicit type conversion from unsigned char to signed char. @item @ref{W0143} An implicit type conversion from unsigned short to signed char. @item @ref{W0144} An implicit type conversion from unsigned short to signed short. @item @ref{W0145} An implicit type conversion from unsigned int to signed char. @item @ref{W0146} An implicit type conversion from unsigned int to signed short. @item @ref{W0147} An implicit type conversion from unsigned int to signed int. @item @ref{W0148} An implicit type conversion from unsigned long to signed char. @item @ref{W0149} An implicit type conversion from unsigned long to signed short. @item @ref{W0150} An implicit type conversion from unsigned long to signed int. @item @ref{W0151} An implicit type conversion from unsigned long to signed long. @item @ref{W0152} An implicit type conversion from unsigned long long to signed char. @item @ref{W0154} An implicit type conversion from unsigned long long to signed int. @item @ref{W0155} An implicit type conversion from unsigned long long to signed long. @item @ref{W0156} An implicit type conversion from unsigned long long to signed long long. @end itemize @subsection Since 1.0.0 @node W0154 @section W0154 @cindex W0154 @subsection Message body An implicit type conversion from unsigned long long to signed int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(int a); void bar(unsigned long long a) { int b = a; /* W0154 */ foo(a); /* W0154 */ } @end verbatim @subsection Related message @itemize @item @ref{W0142} An implicit type conversion from unsigned char to signed char. @item @ref{W0143} An implicit type conversion from unsigned short to signed char. @item @ref{W0144} An implicit type conversion from unsigned short to signed short. @item @ref{W0145} An implicit type conversion from unsigned int to signed char. @item @ref{W0146} An implicit type conversion from unsigned int to signed short. @item @ref{W0147} An implicit type conversion from unsigned int to signed int. @item @ref{W0148} An implicit type conversion from unsigned long to signed char. @item @ref{W0149} An implicit type conversion from unsigned long to signed short. @item @ref{W0150} An implicit type conversion from unsigned long to signed int. @item @ref{W0151} An implicit type conversion from unsigned long to signed long. @item @ref{W0152} An implicit type conversion from unsigned long long to signed char. @item @ref{W0153} An implicit type conversion from unsigned long long to signed short. @item @ref{W0155} An implicit type conversion from unsigned long long to signed long. @item @ref{W0156} An implicit type conversion from unsigned long long to signed long long. @end itemize @subsection Since 1.0.0 @node W0155 @section W0155 @cindex W0155 @subsection Message body An implicit type conversion from unsigned long long to signed long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long a); void bar(unsigned long long a) { long b = a; /* W0155 */ foo(a); /* W0155 */ } @end verbatim @subsection Related message @itemize @item @ref{W0142} An implicit type conversion from unsigned char to signed char. @item @ref{W0143} An implicit type conversion from unsigned short to signed char. @item @ref{W0144} An implicit type conversion from unsigned short to signed short. @item @ref{W0145} An implicit type conversion from unsigned int to signed char. @item @ref{W0146} An implicit type conversion from unsigned int to signed short. @item @ref{W0147} An implicit type conversion from unsigned int to signed int. @item @ref{W0148} An implicit type conversion from unsigned long to signed char. @item @ref{W0149} An implicit type conversion from unsigned long to signed short. @item @ref{W0150} An implicit type conversion from unsigned long to signed int. @item @ref{W0151} An implicit type conversion from unsigned long to signed long. @item @ref{W0152} An implicit type conversion from unsigned long long to signed char. @item @ref{W0153} An implicit type conversion from unsigned long long to signed short. @item @ref{W0154} An implicit type conversion from unsigned long long to signed int. @item @ref{W0156} An implicit type conversion from unsigned long long to signed long long. @end itemize @subsection Since 1.0.0 @node W0156 @section W0156 @cindex W0156 @subsection Message body An implicit type conversion from unsigned long long to signed long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long long a); void bar(unsigned long long a) { long long b = a; /* W0156 */ foo(a); /* W0156 */ } @end verbatim @subsection Related message @itemize @item @ref{W0142} An implicit type conversion from unsigned char to signed char. @item @ref{W0143} An implicit type conversion from unsigned short to signed char. @item @ref{W0144} An implicit type conversion from unsigned short to signed short. @item @ref{W0145} An implicit type conversion from unsigned int to signed char. @item @ref{W0146} An implicit type conversion from unsigned int to signed short. @item @ref{W0147} An implicit type conversion from unsigned int to signed int. @item @ref{W0148} An implicit type conversion from unsigned long to signed char. @item @ref{W0149} An implicit type conversion from unsigned long to signed short. @item @ref{W0150} An implicit type conversion from unsigned long to signed int. @item @ref{W0151} An implicit type conversion from unsigned long to signed long. @item @ref{W0152} An implicit type conversion from unsigned long long to signed char. @item @ref{W0153} An implicit type conversion from unsigned long long to signed short. @item @ref{W0154} An implicit type conversion from unsigned long long to signed int. @item @ref{W0155} An implicit type conversion from unsigned long long to signed long. @end itemize @subsection Since 1.0.0 @node W0157 @section W0157 @cindex W0157 @subsection Message body An implicit type conversion from signed char to unsigned char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned char a); void bar(signed char a) { unsigned char b = a; /* W0157 */ foo(a); /* W0157 */ } @end verbatim @subsection Related message @itemize @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0158 @section W0158 @cindex W0158 @subsection Message body An implicit type conversion from signed char to unsigned short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned short a); void bar(signed char a) { unsigned short b = a; /* W0158 */ foo(a); /* W0158 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize Under construction. @subsection Since 1.0.0 @node W0159 @section W0159 @cindex W0159 @subsection Message body An implicit type conversion from signed char to unsigned int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned int a); void bar(signed char a) { unsigned int b = a; /* W0159 */ foo(a); /* W0159 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0160 @section W0160 @cindex W0160 @subsection Message body An implicit type conversion from signed char to unsigned long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long a); void bar(signed char a) { unsigned long b = a; /* W0160 */ foo(a); /* W0160 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0161 @section W0161 @cindex W0161 @subsection Message body An implicit type conversion from signed short to unsigned char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned char a); void bar(short a) { unsigned char b = a; /* W0161 */ foo(a); /* W0161 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0162 @section W0162 @cindex W0162 @subsection Message body An implicit type conversion from signed short to unsigned short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned short a); void bar(short a) { unsigned short b = a; /* W0162 */ foo(a); /* W0162 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0163 @section W0163 @cindex W0163 @subsection Message body An implicit type conversion from signed short to unsigned int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned int a); void bar(short a) { unsigned int b = a; /* W0163 */ foo(a); /* W0163 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0164 @section W0164 @cindex W0164 @subsection Message body An implicit type conversion from signed short to unsigned long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long a); void bar(short a) { unsigned long b = a; /* W0164 */ foo(a); /* W0164 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0165 @section W0165 @cindex W0165 @subsection Message body Implicit conversion from `signed int' to `unsigned char'. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned char a); void bar(int a) { unsigned char b = a; /* W0165 */ foo(a); /* W0165 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0166 @section W0166 @cindex W0166 @subsection Message body An implicit type conversion from signed int to unsigned short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned short a); void bar(int a) { unsigned short b = a; /* W0166 */ foo(a); /* W0166 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0167 @section W0167 @cindex W0167 @subsection Message body Implicit conversion from `signed int' to `unsigned int'. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned int a); void bar(int a) { unsigned int b = a; /* W0167 */ foo(a); /* W0167 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0168 @section W0168 @cindex W0168 @subsection Message body An implicit type conversion from signed int to unsigned long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long a); void bar(int a) { unsigned long b = a; /* W0168 */ foo(a); /* W0168 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0169 @section W0169 @cindex W0169 @subsection Message body An implicit type conversion from signed long to unsigned char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned char a); void bar(long a) { unsigned char b = a; /* W0169 */ foo(a); /* W0169 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0170 @section W0170 @cindex W0170 @subsection Message body An implicit type conversion from signed long to unsigned short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned short a); void bar(long a) { unsigned short b = a; /* W0170 */ foo(a); /* W0170 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0171 @section W0171 @cindex W0171 @subsection Message body An implicit type conversion from signed long to unsigned int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned int a); void bar(long a) { unsigned int b = a; /* W0171 */ foo(a); /* W0171 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0172 @section W0172 @cindex W0172 @subsection Message body An implicit type conversion from signed long to unsigned long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long a); void bar(long a) { unsigned long b = a; /* W0172 */ foo(a); /* W0172 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0173 @section W0173 @cindex W0173 @subsection Message body An implicit type conversion from signed char to unsigned long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long long a); void bar(signed char a) { unsigned long long b = a; /* W0173 */ foo(a); /* W0173 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0174 @section W0174 @cindex W0174 @subsection Message body An implicit type conversion from signed short to unsigned long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long long a); void bar(short a) { unsigned long long b = a; /* W0174 */ foo(a); /* W0174 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0175 @section W0175 @cindex W0175 @subsection Message body An implicit type conversion from signed int to unsigned long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long long a); void bar(int a) { unsigned long long b = a; /* W0175 */ foo(a); /* W0175 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0176 @section W0176 @cindex W0176 @subsection Message body An implicit type conversion from signed long to unsigned long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long long a); void bar(long a) { unsigned long long b = a; /* W0176 */ foo(a); /* W0176 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0177 @section W0177 @cindex W0177 @subsection Message body An implicit type conversion from signed long long to unsigned char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned char a); void bar(long long a) { unsigned char b = a; /* W0177 */ foo(a); /* W0177 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0178 @section W0178 @cindex W0178 @subsection Message body An implicit type conversion from signed long long to unsigned short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned short a); void bar(long long a) { unsigned short b = a; /* W0178 */ foo(a); /* W0178 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0179 @section W0179 @cindex W0179 @subsection Message body An implicit type conversion from signed long long to unsigned int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned int a); void bar(long long a) { unsigned int b = a; /* W0179 */ foo(a); /* W0179 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0180 @section W0180 @cindex W0180 @subsection Message body An implicit type conversion from signed long long to unsigned long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long a); void bar(long long a) { unsigned long b = a; /* W0180 */ foo(a); /* W0180 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0181} An implicit type conversion from signed long long to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0181 @section W0181 @cindex W0181 @subsection Message body An implicit type conversion from signed long long to unsigned long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long long a); void bar(long long a) { unsigned long long b = a; /* W0181 */ foo(a); /* W0181 */ } @end verbatim @subsection Related message @itemize @item @ref{W0157} An implicit type conversion from signed char to unsigned char. @item @ref{W0158} An implicit type conversion from signed char to unsigned short. @item @ref{W0159} An implicit type conversion from signed char to unsigned int. @item @ref{W0160} An implicit type conversion from signed char to unsigned long. @item @ref{W0161} An implicit type conversion from signed short to unsigned char. @item @ref{W0162} An implicit type conversion from signed short to unsigned short. @item @ref{W0163} An implicit type conversion from signed short to unsigned int. @item @ref{W0164} An implicit type conversion from signed short to unsigned long. @item @ref{W0165} Implicit conversion from `signed int' to `unsigned char'. @item @ref{W0166} An implicit type conversion from signed int to unsigned short. @item @ref{W0167} Implicit conversion from `signed int' to `unsigned int'. @item @ref{W0168} An implicit type conversion from signed int to unsigned long. @item @ref{W0169} An implicit type conversion from signed long to unsigned char. @item @ref{W0170} An implicit type conversion from signed long to unsigned short. @item @ref{W0171} An implicit type conversion from signed long to unsigned int. @item @ref{W0172} An implicit type conversion from signed long to unsigned long. @item @ref{W0173} An implicit type conversion from signed char to unsigned long long. @item @ref{W0174} An implicit type conversion from signed short to unsigned long long. @item @ref{W0175} An implicit type conversion from signed int to unsigned long long. @item @ref{W0176} An implicit type conversion from signed long to unsigned long long. @item @ref{W0177} An implicit type conversion from signed long long to unsigned char. @item @ref{W0178} An implicit type conversion from signed long long to unsigned short. @item @ref{W0179} An implicit type conversion from signed long long to unsigned int. @item @ref{W0180} An implicit type conversion from signed long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0182 @section W0182 @cindex W0182 @subsection Message body An implicit type conversion from unsigned char to float. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(float a); void bar(unsigned char a) { float b = a; /* W0182 */ foo(a); /* W0182 */ } @end verbatim @subsection Related message @itemize @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0183 @section W0183 @cindex W0183 @subsection Message body An implicit type conversion from unsigned char to double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(double a); void bar(unsigned char a) { double b = a; /* W0183 */ foo(a); /* W0183 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0184 @section W0184 @cindex W0184 @subsection Message body An implicit type conversion from unsigned char to long double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long double a); void bar(unsigned char a) { long double b = a; /* W0184 */ foo(a); /* W0184 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0185 @section W0185 @cindex W0185 @subsection Message body An implicit type conversion from signed char to float. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(float a); void bar(signed char a) { float b = a; /* W0185 */ foo(a); /* W0185 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0186 @section W0186 @cindex W0186 @subsection Message body An implicit type conversion from signed char to double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(double a); void bar(signed char a) { double b = a; /* W0186 */ foo(a); /* W0186 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0187 @section W0187 @cindex W0187 @subsection Message body An implicit type conversion from signed char to long double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long double a); void bar(signed char a) { long double b = a; /* W0187 */ foo(a); /* W0187 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0188 @section W0188 @cindex W0188 @subsection Message body An implicit type conversion from signed short to float. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(float a); void bar(short a) { float b = a; /* W0188 */ foo(a); /* W0188 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0189 @section W0189 @cindex W0189 @subsection Message body An implicit type conversion from signed short to double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(double a); void bar(short a) { double b = a; /* W0189 */ foo(a); /* W0189 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0190 @section W0190 @cindex W0190 @subsection Message body An implicit type conversion from signed short to long double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long double a); void bar(short a) { long double b = a; /* W0190 */ foo(a); /* W0190 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0191 @section W0191 @cindex W0191 @subsection Message body An implicit type conversion from unsigned short to float. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(float a); void bar(unsigned short a) { float b = a; /* W0191 */ foo(a); /* W0191 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0192 @section W0192 @cindex W0192 @subsection Message body An implicit type conversion from unsigned short to double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(double a); void bar(unsigned short a) { double b = a; /* W0192 */ foo(a); /* W0192 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0193 @section W0193 @cindex W0193 @subsection Message body An implicit type conversion from unsigned short to long double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long double a); void bar(unsigned short a) { long double b = a; /* W0193 */ foo(a); /* W0193 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0194 @section W0194 @cindex W0194 @subsection Message body An implicit type conversion from signed int to float. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(float a); void bar(int a) { float b = a; /* W0194 */ foo(a); /* W0194 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0195 @section W0195 @cindex W0195 @subsection Message body An implicit type conversion from signed int to double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(double a); void bar(int a) { double b = a; /* W0195 */ foo(a); /* W0195 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0196 @section W0196 @cindex W0196 @subsection Message body An implicit type conversion from signed int to long double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long double a); void bar(int a) { long double b = a; /* W0196 */ foo(a); /* W0196 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0197 @section W0197 @cindex W0197 @subsection Message body An implicit type conversion from unsigned int to float. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(float a); void bar(unsigned int a) { float b = a; /* W0197 */ foo(a); /* W0197 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0198 @section W0198 @cindex W0198 @subsection Message body An implicit type conversion from unsigned int to double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(double a); void bar(unsigned int a) { double b = a; /* W0198 */ foo(a); /* W0198 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0199 @section W0199 @cindex W0199 @subsection Message body An implicit type conversion from unsigned int to long double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long double a); void bar(unsigned int a) { long double b = a; /* W0199 */ foo(a); /* W0199 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0200 @section W0200 @cindex W0200 @subsection Message body An implicit type conversion from signed long to float. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(float a); void bar(long a) { float b = a; /* W0200 */ foo(a); /* W0200 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0201 @section W0201 @cindex W0201 @subsection Message body An implicit type conversion from signed long to double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(double a); void bar(long a) { double b = a; /* W0201 */ foo(a); /* W0201 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0202 @section W0202 @cindex W0202 @subsection Message body An implicit type conversion from signed long to long double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long double a); void bar(long a) { long double b = a; /* W0202 */ foo(a); /* W0202 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0203 @section W0203 @cindex W0203 @subsection Message body An implicit type conversion from unsigned long to float. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(float a); void bar(unsigned long a) { float b = a; /* W0203 */ foo(a); /* W0203 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0204 @section W0204 @cindex W0204 @subsection Message body An implicit type conversion from unsigned long to double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(double a); void bar(unsigned long a) { double b = a; /* W0204 */ foo(a); /* W0204 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0205 @section W0205 @cindex W0205 @subsection Message body An implicit type conversion from unsigned long to long double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long double a); void bar(unsigned long a) { long double b = a; /* W0205 */ foo(a); /* W0205 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0206 @section W0206 @cindex W0206 @subsection Message body An implicit type conversion from signed long long to float. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(float a); void bar(long long a) { float b = a; /* W0206 */ foo(a); /* W0206 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0207 @section W0207 @cindex W0207 @subsection Message body An implicit type conversion from signed long long to double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(double a); void bar(long long a) { double b = a; /* W0207 */ foo(a); /* W0207 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0208 @section W0208 @cindex W0208 @subsection Message body An implicit type conversion from signed long long to long double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long double a); void bar(long long a) { long double b = a; /* W0208 */ foo(a); /* W0208 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0209 @section W0209 @cindex W0209 @subsection Message body An implicit type conversion from unsigned long long to float. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(float a); void bar(unsigned long long a) { float b = a; /* W0209 */ foo(a); /* W0209 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0210 @section W0210 @cindex W0210 @subsection Message body An implicit type conversion from unsigned long long to double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(double a); void bar(unsigned long long a) { double b = a; /* W0210 */ foo(a); /* W0210 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0211} An implicit type conversion from unsigned long long to long double. @end itemize @subsection Since 1.0.0 @node W0211 @section W0211 @cindex W0211 @subsection Message body An implicit type conversion from unsigned long long to long double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long double a); void bar(unsigned long long a) { long double b = a; /* W0211 */ foo(a); /* W0211 */ } @end verbatim @subsection Related message @itemize @item @ref{W0182} An implicit type conversion from unsigned char to float. @item @ref{W0183} An implicit type conversion from unsigned char to double. @item @ref{W0184} An implicit type conversion from unsigned char to long double. @item @ref{W0185} An implicit type conversion from signed char to float. @item @ref{W0186} An implicit type conversion from signed char to double. @item @ref{W0187} An implicit type conversion from signed char to long double. @item @ref{W0188} An implicit type conversion from signed short to float. @item @ref{W0189} An implicit type conversion from signed short to double. @item @ref{W0190} An implicit type conversion from signed short to long double. @item @ref{W0191} An implicit type conversion from unsigned short to float. @item @ref{W0192} An implicit type conversion from unsigned short to double. @item @ref{W0193} An implicit type conversion from unsigned short to long double. @item @ref{W0194} An implicit type conversion from signed int to float. @item @ref{W0195} An implicit type conversion from signed int to double. @item @ref{W0196} An implicit type conversion from signed int to long double. @item @ref{W0197} An implicit type conversion from unsigned int to float. @item @ref{W0198} An implicit type conversion from unsigned int to double. @item @ref{W0199} An implicit type conversion from unsigned int to long double. @item @ref{W0200} An implicit type conversion from signed long to float. @item @ref{W0201} An implicit type conversion from signed long to double. @item @ref{W0202} An implicit type conversion from signed long to long double. @item @ref{W0203} An implicit type conversion from unsigned long to float. @item @ref{W0204} An implicit type conversion from unsigned long to double. @item @ref{W0205} An implicit type conversion from unsigned long to long double. @item @ref{W0206} An implicit type conversion from signed long long to float. @item @ref{W0207} An implicit type conversion from signed long long to double. @item @ref{W0208} An implicit type conversion from signed long long to long double. @item @ref{W0209} An implicit type conversion from unsigned long long to float. @item @ref{W0210} An implicit type conversion from unsigned long long to double. @end itemize @subsection Since 1.0.0 @node W0212 @section W0212 @cindex W0212 @subsection Message body An implicit type conversion from unsigned long long to long double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(char a); void bar(float a) { char b = a; /* W0212 */ foo(a); /* W0212 */ } @end verbatim @subsection Related message @itemize @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0213 @section W0213 @cindex W0213 @subsection Message body An implicit type conversion from float to signed char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(signed char a); void bar(float a) { signed char b = a; /* W0213 */ foo(a); /* W0213 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0214 @section W0214 @cindex W0214 @subsection Message body An implicit type conversion from float to unsigned char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned char a); void bar(float a) { unsigned char b = a; /* W0214 */ foo(a); /* W0214 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0215 @section W0215 @cindex W0215 @subsection Message body An implicit type conversion from float to signed short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(short a); void bar(float a) { short b = a; /* W0215 */ foo(a); /* W0215 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0216 @section W0216 @cindex W0216 @subsection Message body An implicit type conversion from float to unsigned short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned short a); void bar(float a) { unsigned short b = a; /* W0216 */ foo(a); /* W0216 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0217 @section W0217 @cindex W0217 @subsection Message body An implicit type conversion from float to signed int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(int a); void bar(float a) { int b = a; /* W0217 */ foo(a); /* W0217 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0218 @section W0218 @cindex W0218 @subsection Message body An implicit type conversion from float to unsigned int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned int a); void bar(float a) { unsigned int b = a; /* W0218 */ foo(a); /* W0218 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0219 @section W0219 @cindex W0219 @subsection Message body An implicit type conversion from float to signed long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long a); void bar(float a) { long b = a; /* W0219 */ foo(a); /* W0219 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0220 @section W0220 @cindex W0220 @subsection Message body An implicit type conversion from float to unsigned long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long a); void bar(float a) { unsigned long b = a; /* W0220 */ foo(a); /* W0220 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0221 @section W0221 @cindex W0221 @subsection Message body An implicit type conversion from double to char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(char a); void bar(double a) { char b = a; /* W0221 */ foo(a); /* W0221 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0222 @section W0222 @cindex W0222 @subsection Message body An implicit type conversion from double to signed char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(signed char a); void bar(double a) { signed char b = a; /* W0222 */ foo(a); /* W0222 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0223 @section W0223 @cindex W0223 @subsection Message body An implicit type conversion from double to unsigned char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned char a); void bar(double a) { unsigned char b = a; /* W0223 */ foo(a); /* W0223 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0224 @section W0224 @cindex W0224 @subsection Message body An implicit type conversion from double to signed short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(short a); void bar(double a) { short b = a; /* W0224 */ foo(a); /* W0224 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0225 @section W0225 @cindex W0225 @subsection Message body An implicit type conversion from double to unsigned short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned short a); void bar(double a) { unsigned short b = a; /* W0225 */ foo(a); /* W0225 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0226 @section W0226 @cindex W0226 @subsection Message body An implicit type conversion from double to signed int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(int a); void bar(double a) { int b = a; /* W0226 */ foo(a); /* W0226 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0227 @section W0227 @cindex W0227 @subsection Message body An implicit type conversion from double to unsigned int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned int a); void bar(double a) { unsigned int b = a; /* W0227 */ foo(a); /* W0227 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0228 @section W0228 @cindex W0228 @subsection Message body An implicit type conversion from double to signed long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long a); void bar(double a) { long b = a; /* W0228 */ foo(a); /* W0228 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0229 @section W0229 @cindex W0229 @subsection Message body An implicit type conversion from double to unsigned long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long a); void bar(double a) { unsigned long b = a; /* W0229 */ foo(a); /* W0229 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0230 @section W0230 @cindex W0230 @subsection Message body An implicit type conversion from long double to char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(char a); void bar(long double a) { char b = a; /* W0230 */ foo(a); /* W0230 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0231 @section W0231 @cindex W0231 @subsection Message body An implicit type conversion from long double to signed char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(signed char a); void bar(long double a) { signed char b = a; /* W0231 */ foo(a); /* W0231 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0232 @section W0232 @cindex W0232 @subsection Message body An implicit type conversion from long double to unsigned char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned char a); void bar(long double a) { unsigned char b = a; /* W0232 */ foo(a); /* W0232 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0233 @section W0233 @cindex W0233 @subsection Message body An implicit type conversion from long double to signed short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(short a); void bar(long double a) { short b = a; /* W0233 */ foo(a); /* W0233 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0234 @section W0234 @cindex W0234 @subsection Message body An implicit type conversion from long double to unsigned short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned short a); void bar(long double a) { unsigned short b = a; /* W0234 */ foo(a); /* W0234 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0235 @section W0235 @cindex W0235 @subsection Message body An implicit type conversion from long double to signed int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(int a); void bar(long double a) { int b = a; /* W0235 */ foo(a); /* W0235 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0236 @section W0236 @cindex W0236 @subsection Message body An implicit type conversion from long double to unsigned int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned int a); void bar(long double a) { unsigned int b = a; /* W0236 */ foo(a); /* W0236 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0237 @section W0237 @cindex W0237 @subsection Message body An implicit type conversion from long double to signed long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long a); void bar(long double a) { long b = a; /* W0237 */ foo(a); /* W0237 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0238 @section W0238 @cindex W0238 @subsection Message body An implicit type conversion from long double to unsigned long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long a); void bar(long double a) { unsigned long b = a; /* W0238 */ foo(a); /* W0238 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0239 @section W0239 @cindex W0239 @subsection Message body An implicit type conversion from float to signed long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long long a); void bar(float a) { long long b = a; /* W0239 */ foo(a); /* W0239 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0240 @section W0240 @cindex W0240 @subsection Message body An implicit type conversion from float to unsigned long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long long a); void bar(float a) { unsigned long long b = a; /* W0240 */ foo(a); /* W0240 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0241 @section W0241 @cindex W0241 @subsection Message body An implicit type conversion from double to signed long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long long a); void bar(double a) { long long b = a; /* W0241 */ foo(a); /* W0241 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0242 @section W0242 @cindex W0242 @subsection Message body An implicit type conversion from double to unsigned long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long long a); void bar(double a) { unsigned long long b = a; /* W0242 */ foo(a); /* W0242 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0243 @section W0243 @cindex W0243 @subsection Message body An implicit type conversion from long double to signed long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long long a); void bar(long double a) { long long b = a; /* W0243 */ foo(a); /* W0243 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0244} An implicit type conversion from long double to unsigned long long. @end itemize @subsection Since 1.0.0 @node W0244 @section W0244 @cindex W0244 @subsection Message body An implicit type conversion from long double to unsigned long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long long a); void bar(long double a) { unsigned long long b = a; /* W0244 */ foo(a); /* W0244 */ } @end verbatim @subsection Related message @itemize @item @ref{W0212} An implicit type conversion from float to char. @item @ref{W0213} An implicit type conversion from float to signed char. @item @ref{W0214} An implicit type conversion from float to unsigned char. @item @ref{W0215} An implicit type conversion from float to signed short. @item @ref{W0216} An implicit type conversion from float to unsigned short. @item @ref{W0217} An implicit type conversion from float to signed int. @item @ref{W0218} An implicit type conversion from float to unsigned int. @item @ref{W0219} An implicit type conversion from float to signed long. @item @ref{W0220} An implicit type conversion from float to unsigned long. @item @ref{W0221} An implicit type conversion from double to char. @item @ref{W0222} An implicit type conversion from double to signed char. @item @ref{W0223} An implicit type conversion from double to unsigned char. @item @ref{W0224} An implicit type conversion from double to signed short. @item @ref{W0225} An implicit type conversion from double to unsigned short. @item @ref{W0226} An implicit type conversion from double to signed int. @item @ref{W0227} An implicit type conversion from double to unsigned int. @item @ref{W0228} An implicit type conversion from double to signed long. @item @ref{W0229} An implicit type conversion from double to unsigned long. @item @ref{W0230} An implicit type conversion from long double to char. @item @ref{W0231} An implicit type conversion from long double to signed char. @item @ref{W0232} An implicit type conversion from long double to unsigned char. @item @ref{W0233} An implicit type conversion from long double to signed short. @item @ref{W0234} An implicit type conversion from long double to unsigned short. @item @ref{W0235} An implicit type conversion from long double to signed int. @item @ref{W0236} An implicit type conversion from long double to unsigned int. @item @ref{W0237} An implicit type conversion from long double to signed long. @item @ref{W0238} An implicit type conversion from long double to unsigned long. @item @ref{W0239} An implicit type conversion from float to signed long long. @item @ref{W0240} An implicit type conversion from float to unsigned long long. @item @ref{W0241} An implicit type conversion from double to signed long long. @item @ref{W0242} An implicit type conversion from double to unsigned long long. @item @ref{W0243} An implicit type conversion from long double to signed long long. @end itemize @subsection Since 1.0.0 @node W0245 @section W0245 @cindex W0245 @subsection Message body An implicit type conversion from unsigned char to signed short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(short a); void bar(unsigned char a) { short b = a; /* W0245 */ foo(a); /* W0245 */ } @end verbatim @subsection Related message @itemize @item @ref{W0246} Implicit conversion from `unsigned char' to `signed int'. @item @ref{W0247} An implicit type conversion from unsigned char to signed long. @item @ref{W0248} An implicit type conversion from unsigned short to signed int. @item @ref{W0249} An implicit type conversion from unsigned short to signed long. @item @ref{W0250} An implicit type conversion from unsigned int to signed long. @item @ref{W0251} An implicit type conversion from unsigned char to signed long long. @item @ref{W0252} An implicit type conversion from unsigned short to signed long long. @item @ref{W0253} An implicit type conversion from unsigned int to signed long long. @item @ref{W0254} An implicit type conversion from unsigned long to signed long long. @end itemize @subsection Since 1.0.0 @node W0246 @section W0246 @cindex W0246 @subsection Message body Implicit conversion from `unsigned char' to `signed int'. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(int a); void bar(unsigned char a) { int b = a; /* W0246 */ foo(a); /* W0246 */ } @end verbatim @subsection Related message @itemize @item @ref{W0245} An implicit type conversion from unsigned char to signed short. @item @ref{W0247} An implicit type conversion from unsigned char to signed long. @item @ref{W0248} An implicit type conversion from unsigned short to signed int. @item @ref{W0249} An implicit type conversion from unsigned short to signed long. @item @ref{W0250} An implicit type conversion from unsigned int to signed long. @item @ref{W0251} An implicit type conversion from unsigned char to signed long long. @item @ref{W0252} An implicit type conversion from unsigned short to signed long long. @item @ref{W0253} An implicit type conversion from unsigned int to signed long long. @item @ref{W0254} An implicit type conversion from unsigned long to signed long long. @end itemize @subsection Since 1.0.0 @node W0247 @section W0247 @cindex W0247 @subsection Message body An implicit type conversion from unsigned char to signed long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long a); void bar(unsigned char a) { long b = a; /* W0247 */ foo(a); /* W0247 */ } @end verbatim @subsection Related message @itemize @item @ref{W0245} An implicit type conversion from unsigned char to signed short. @item @ref{W0246} Implicit conversion from `unsigned char' to `signed int'. @item @ref{W0248} An implicit type conversion from unsigned short to signed int. @item @ref{W0249} An implicit type conversion from unsigned short to signed long. @item @ref{W0250} An implicit type conversion from unsigned int to signed long. @item @ref{W0251} An implicit type conversion from unsigned char to signed long long. @item @ref{W0252} An implicit type conversion from unsigned short to signed long long. @item @ref{W0253} An implicit type conversion from unsigned int to signed long long. @item @ref{W0254} An implicit type conversion from unsigned long to signed long long. @end itemize @subsection Since 1.0.0 @node W0248 @section W0248 @cindex W0248 @subsection Message body An implicit type conversion from unsigned short to signed int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(int a); void bar(unsigned short a) { int b = a; /* W0248 */ foo(a); /* W0248 */ } @end verbatim @subsection Related message @itemize @item @ref{W0245} An implicit type conversion from unsigned char to signed short. @item @ref{W0246} Implicit conversion from `unsigned char' to `signed int'. @item @ref{W0247} An implicit type conversion from unsigned char to signed long. @item @ref{W0249} An implicit type conversion from unsigned short to signed long. @item @ref{W0250} An implicit type conversion from unsigned int to signed long. @item @ref{W0251} An implicit type conversion from unsigned char to signed long long. @item @ref{W0252} An implicit type conversion from unsigned short to signed long long. @item @ref{W0253} An implicit type conversion from unsigned int to signed long long. @item @ref{W0254} An implicit type conversion from unsigned long to signed long long. @end itemize @subsection Since 1.0.0 @node W0249 @section W0249 @cindex W0249 @subsection Message body An implicit type conversion from unsigned short to signed long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long a); void bar(unsigned short a) { long b = a; /* W0249 */ foo(a); /* W0249 */ } @end verbatim @subsection Related message @itemize @item @ref{W0245} An implicit type conversion from unsigned char to signed short. @item @ref{W0246} Implicit conversion from `unsigned char' to `signed int'. @item @ref{W0247} An implicit type conversion from unsigned char to signed long. @item @ref{W0248} An implicit type conversion from unsigned short to signed int. @item @ref{W0249} An implicit type conversion from unsigned short to signed long. @item @ref{W0251} An implicit type conversion from unsigned char to signed long long. @item @ref{W0252} An implicit type conversion from unsigned short to signed long long. @item @ref{W0253} An implicit type conversion from unsigned int to signed long long. @item @ref{W0254} An implicit type conversion from unsigned long to signed long long. @end itemize @subsection Since 1.0.0 @node W0250 @section W0250 @cindex W0250 @subsection Message body An implicit type conversion from unsigned int to signed long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long a); void bar(unsigned int a) { long b = a; /* W0250 */ foo(a); /* W0250 */ } @end verbatim @subsection Related message @itemize @item @ref{W0245} An implicit type conversion from unsigned char to signed short. @item @ref{W0246} Implicit conversion from `unsigned char' to `signed int'. @item @ref{W0247} An implicit type conversion from unsigned char to signed long. @item @ref{W0248} An implicit type conversion from unsigned short to signed int. @item @ref{W0249} An implicit type conversion from unsigned short to signed long. @item @ref{W0251} An implicit type conversion from unsigned char to signed long long. @item @ref{W0252} An implicit type conversion from unsigned short to signed long long. @item @ref{W0253} An implicit type conversion from unsigned int to signed long long. @item @ref{W0254} An implicit type conversion from unsigned long to signed long long. @end itemize @subsection Since 1.0.0 @node W0251 @section W0251 @cindex W0251 @subsection Message body An implicit type conversion from unsigned char to signed long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long long a); void bar(unsigned char a) { long long b = a; /* W0251 */ foo(a); /* W0251 */ } @end verbatim @subsection Related message @itemize @item @ref{W0245} An implicit type conversion from unsigned char to signed short. @item @ref{W0246} Implicit conversion from `unsigned char' to `signed int'. @item @ref{W0247} An implicit type conversion from unsigned char to signed long. @item @ref{W0248} An implicit type conversion from unsigned short to signed int. @item @ref{W0249} An implicit type conversion from unsigned short to signed long. @item @ref{W0250} An implicit type conversion from unsigned int to signed long. @item @ref{W0252} An implicit type conversion from unsigned short to signed long long. @item @ref{W0253} An implicit type conversion from unsigned int to signed long long. @item @ref{W0254} An implicit type conversion from unsigned long to signed long long. @end itemize @subsection Since 1.0.0 @node W0252 @section W0252 @cindex W0252 @subsection Message body An implicit type conversion from unsigned short to signed long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long long a); void bar(unsigned short a) { long long b = a; /* W0252 */ foo(a); /* W0252 */ } @end verbatim @subsection Related message @itemize @item @ref{W0245} An implicit type conversion from unsigned char to signed short. @item @ref{W0246} Implicit conversion from `unsigned char' to `signed int'. @item @ref{W0247} An implicit type conversion from unsigned char to signed long. @item @ref{W0248} An implicit type conversion from unsigned short to signed int. @item @ref{W0249} An implicit type conversion from unsigned short to signed long. @item @ref{W0250} An implicit type conversion from unsigned int to signed long. @item @ref{W0251} An implicit type conversion from unsigned char to signed long long. @item @ref{W0253} An implicit type conversion from unsigned int to signed long long. @item @ref{W0254} An implicit type conversion from unsigned long to signed long long. @end itemize @subsection Since 1.0.0 @node W0253 @section W0253 @cindex W0253 @subsection Message body An implicit type conversion from unsigned int to signed long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long long a); void bar(unsigned int a) { long long b = a; /* W0253 */ foo(a); /* W0253 */ } @end verbatim @subsection Related message @itemize @item @ref{W0245} An implicit type conversion from unsigned char to signed short. @item @ref{W0246} Implicit conversion from `unsigned char' to `signed int'. @item @ref{W0247} An implicit type conversion from unsigned char to signed long. @item @ref{W0248} An implicit type conversion from unsigned short to signed int. @item @ref{W0249} An implicit type conversion from unsigned short to signed long. @item @ref{W0250} An implicit type conversion from unsigned int to signed long. @item @ref{W0251} An implicit type conversion from unsigned char to signed long long. @item @ref{W0252} An implicit type conversion from unsigned short to signed long long. @item @ref{W0254} An implicit type conversion from unsigned long to signed long long. @end itemize @subsection Since 1.0.0 @node W0254 @section W0254 @cindex W0254 @subsection Message body An implicit type conversion from unsigned long to signed long long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long long a); void bar(unsigned long a) { long long b = a; /* W0254 */ foo(a); /* W0254 */ } @end verbatim @subsection Related message @itemize @item @ref{W0245} An implicit type conversion from unsigned char to signed short. @item @ref{W0246} Implicit conversion from `unsigned char' to `signed int'. @item @ref{W0247} An implicit type conversion from unsigned char to signed long. @item @ref{W0248} An implicit type conversion from unsigned short to signed int. @item @ref{W0249} An implicit type conversion from unsigned short to signed long. @item @ref{W0250} An implicit type conversion from unsigned int to signed long. @item @ref{W0251} An implicit type conversion from unsigned char to signed long long. @item @ref{W0252} An implicit type conversion from unsigned short to signed long long. @item @ref{W0253} An implicit type conversion from unsigned int to signed long long. @end itemize @subsection Since 1.0.0 @node W0255 @section W0255 @cindex W0255 @subsection Message body A value of char type is returned from `signed char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim signed char func(void) { char a = 0; return a; /* W0255 */ } @end verbatim @subsection Related message @itemize @item @ref{W0256} A value of char type is returned from `unsigned char %s()' function. @item @ref{W0257} A value of char type is returned from `signed short %s()' function. @item @ref{W0258} A value of char type is returned from `unsigned short %s()' function. @item @ref{W0259} A value of char type is returned from `signed int %s()' function. @item @ref{W0260} A value of char type is returned from `unsigned int %s()' function. @item @ref{W0261} A value of char type is returned from `signed long %s()' function. @item @ref{W0262} A value of char type is returned from `unsigned long %s()' function. @item @ref{W0263} A value of char type is returned from `float %s()' function. @item @ref{W0264} A value of char type is returned from `double %s()' function. @item @ref{W0265} A value of char type is returned from `long double %s()' function. @item @ref{W0266} A value of char type is returned from `signed long long %s()' function. @item @ref{W0267} A value of char type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0256 @section W0256 @cindex W0256 @subsection Message body A value of char type is returned from `unsigned char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned char func(void) { char a = 0; return a; /* W0256 */ } @end verbatim @subsection Related message @itemize @item @ref{W0255} A value of char type is returned from `signed char %s()' function. @item @ref{W0257} A value of char type is returned from `signed short %s()' function. @item @ref{W0258} A value of char type is returned from `unsigned short %s()' function. @item @ref{W0259} A value of char type is returned from `signed int %s()' function. @item @ref{W0260} A value of char type is returned from `unsigned int %s()' function. @item @ref{W0261} A value of char type is returned from `signed long %s()' function. @item @ref{W0262} A value of char type is returned from `unsigned long %s()' function. @item @ref{W0263} A value of char type is returned from `float %s()' function. @item @ref{W0264} A value of char type is returned from `double %s()' function. @item @ref{W0265} A value of char type is returned from `long double %s()' function. @item @ref{W0266} A value of char type is returned from `signed long long %s()' function. @item @ref{W0267} A value of char type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0257 @section W0257 @cindex W0257 @subsection Message body A value of char type is returned from `signed short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim short func(void) { char a = 0; return a; /* W0257 */ } @end verbatim @subsection Related message @itemize @item @ref{W0255} A value of char type is returned from `signed char %s()' function. @item @ref{W0256} A value of char type is returned from `unsigned char %s()' function. @item @ref{W0258} A value of char type is returned from `unsigned short %s()' function. @item @ref{W0259} A value of char type is returned from `signed int %s()' function. @item @ref{W0260} A value of char type is returned from `unsigned int %s()' function. @item @ref{W0261} A value of char type is returned from `signed long %s()' function. @item @ref{W0262} A value of char type is returned from `unsigned long %s()' function. @item @ref{W0263} A value of char type is returned from `float %s()' function. @item @ref{W0264} A value of char type is returned from `double %s()' function. @item @ref{W0265} A value of char type is returned from `long double %s()' function. @item @ref{W0266} A value of char type is returned from `signed long long %s()' function. @item @ref{W0267} A value of char type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0258 @section W0258 @cindex W0258 @subsection Message body A value of char type is returned from `unsigned short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned short func(void) { char a = 0; return a; /* W0258 */ } @end verbatim @subsection Related message @itemize @item @ref{W0255} A value of char type is returned from `signed char %s()' function. @item @ref{W0256} A value of char type is returned from `unsigned char %s()' function. @item @ref{W0257} A value of char type is returned from `signed short %s()' function. @item @ref{W0259} A value of char type is returned from `signed int %s()' function. @item @ref{W0260} A value of char type is returned from `unsigned int %s()' function. @item @ref{W0261} A value of char type is returned from `signed long %s()' function. @item @ref{W0262} A value of char type is returned from `unsigned long %s()' function. @item @ref{W0263} A value of char type is returned from `float %s()' function. @item @ref{W0264} A value of char type is returned from `double %s()' function. @item @ref{W0265} A value of char type is returned from `long double %s()' function. @item @ref{W0266} A value of char type is returned from `signed long long %s()' function. @item @ref{W0267} A value of char type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0259 @section W0259 @cindex W0259 @subsection Message body A value of char type is returned from `signed int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim int func(void) { char a = 0; return a; /* W0259 */ } @end verbatim @subsection Related message @itemize @item @ref{W0255} A value of char type is returned from `signed char %s()' function. @item @ref{W0256} A value of char type is returned from `unsigned char %s()' function. @item @ref{W0257} A value of char type is returned from `signed short %s()' function. @item @ref{W0258} A value of char type is returned from `unsigned short %s()' function. @item @ref{W0260} A value of char type is returned from `unsigned int %s()' function. @item @ref{W0261} A value of char type is returned from `signed long %s()' function. @item @ref{W0262} A value of char type is returned from `unsigned long %s()' function. @item @ref{W0263} A value of char type is returned from `float %s()' function. @item @ref{W0264} A value of char type is returned from `double %s()' function. @item @ref{W0265} A value of char type is returned from `long double %s()' function. @item @ref{W0266} A value of char type is returned from `signed long long %s()' function. @item @ref{W0267} A value of char type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0260 @section W0260 @cindex W0260 @subsection Message body A value of char type is returned from `unsigned int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int func(void) { char a = 0; return a; /* W0260 */ } @end verbatim @subsection Related message @itemize @item @ref{W0255} A value of char type is returned from `signed char %s()' function. @item @ref{W0256} A value of char type is returned from `unsigned char %s()' function. @item @ref{W0257} A value of char type is returned from `signed short %s()' function. @item @ref{W0258} A value of char type is returned from `unsigned short %s()' function. @item @ref{W0259} A value of char type is returned from `signed int %s()' function. @item @ref{W0261} A value of char type is returned from `signed long %s()' function. @item @ref{W0262} A value of char type is returned from `unsigned long %s()' function. @item @ref{W0263} A value of char type is returned from `float %s()' function. @item @ref{W0264} A value of char type is returned from `double %s()' function. @item @ref{W0265} A value of char type is returned from `long double %s()' function. @item @ref{W0266} A value of char type is returned from `signed long long %s()' function. @item @ref{W0267} A value of char type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0261 @section W0261 @cindex W0261 @subsection Message body A value of char type is returned from `signed long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long func(void) { char a = 0; return a; /* W0261 */ } @end verbatim @subsection Related message @itemize @item @ref{W0255} A value of char type is returned from `signed char %s()' function. @item @ref{W0256} A value of char type is returned from `unsigned char %s()' function. @item @ref{W0257} A value of char type is returned from `signed short %s()' function. @item @ref{W0258} A value of char type is returned from `unsigned short %s()' function. @item @ref{W0259} A value of char type is returned from `signed int %s()' function. @item @ref{W0260} A value of char type is returned from `unsigned int %s()' function. @item @ref{W0262} A value of char type is returned from `unsigned long %s()' function. @item @ref{W0263} A value of char type is returned from `float %s()' function. @item @ref{W0264} A value of char type is returned from `double %s()' function. @item @ref{W0265} A value of char type is returned from `long double %s()' function. @item @ref{W0266} A value of char type is returned from `signed long long %s()' function. @item @ref{W0267} A value of char type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0262 @section W0262 @cindex W0262 @subsection Message body A value of char type is returned from `unsigned long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long func(void) { char a = 0; return a; /* W0262 */ } @end verbatim @subsection Related message @itemize @item @ref{W0255} A value of char type is returned from `signed char %s()' function. @item @ref{W0256} A value of char type is returned from `unsigned char %s()' function. @item @ref{W0257} A value of char type is returned from `signed short %s()' function. @item @ref{W0258} A value of char type is returned from `unsigned short %s()' function. @item @ref{W0259} A value of char type is returned from `signed int %s()' function. @item @ref{W0260} A value of char type is returned from `unsigned int %s()' function. @item @ref{W0261} A value of char type is returned from `signed long %s()' function. @item @ref{W0263} A value of char type is returned from `float %s()' function. @item @ref{W0264} A value of char type is returned from `double %s()' function. @item @ref{W0265} A value of char type is returned from `long double %s()' function. @item @ref{W0266} A value of char type is returned from `signed long long %s()' function. @item @ref{W0267} A value of char type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0263 @section W0263 @cindex W0263 @subsection Message body A value of char type is returned from `float %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim float func(void) { char a = 0; return a; /* W0263 */ } @end verbatim @subsection Related message @itemize @item @ref{W0255} A value of char type is returned from `signed char %s()' function. @item @ref{W0256} A value of char type is returned from `unsigned char %s()' function. @item @ref{W0257} A value of char type is returned from `signed short %s()' function. @item @ref{W0258} A value of char type is returned from `unsigned short %s()' function. @item @ref{W0259} A value of char type is returned from `signed int %s()' function. @item @ref{W0260} A value of char type is returned from `unsigned int %s()' function. @item @ref{W0261} A value of char type is returned from `signed long %s()' function. @item @ref{W0262} A value of char type is returned from `unsigned long %s()' function. @item @ref{W0264} A value of char type is returned from `double %s()' function. @item @ref{W0265} A value of char type is returned from `long double %s()' function. @item @ref{W0266} A value of char type is returned from `signed long long %s()' function. @item @ref{W0267} A value of char type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0264 @section W0264 @cindex W0264 @subsection Message body A value of char type is returned from `double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim double func(void) { char a = 0; return a; /* W0264 */ } @end verbatim @subsection Related message @itemize @item @ref{W0255} A value of char type is returned from `signed char %s()' function. @item @ref{W0256} A value of char type is returned from `unsigned char %s()' function. @item @ref{W0257} A value of char type is returned from `signed short %s()' function. @item @ref{W0258} A value of char type is returned from `unsigned short %s()' function. @item @ref{W0259} A value of char type is returned from `signed int %s()' function. @item @ref{W0260} A value of char type is returned from `unsigned int %s()' function. @item @ref{W0261} A value of char type is returned from `signed long %s()' function. @item @ref{W0262} A value of char type is returned from `unsigned long %s()' function. @item @ref{W0263} A value of char type is returned from `float %s()' function. @item @ref{W0265} A value of char type is returned from `long double %s()' function. @item @ref{W0266} A value of char type is returned from `signed long long %s()' function. @item @ref{W0267} A value of char type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0265 @section W0265 @cindex W0265 @subsection Message body A value of char type is returned from `long double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long double func(void) { char a = 0; return a; /* W0265 */ } @end verbatim @subsection Related message @itemize @item @ref{W0255} A value of char type is returned from `signed char %s()' function. @item @ref{W0256} A value of char type is returned from `unsigned char %s()' function. @item @ref{W0257} A value of char type is returned from `signed short %s()' function. @item @ref{W0258} A value of char type is returned from `unsigned short %s()' function. @item @ref{W0259} A value of char type is returned from `signed int %s()' function. @item @ref{W0260} A value of char type is returned from `unsigned int %s()' function. @item @ref{W0261} A value of char type is returned from `signed long %s()' function. @item @ref{W0262} A value of char type is returned from `unsigned long %s()' function. @item @ref{W0263} A value of char type is returned from `float %s()' function. @item @ref{W0264} A value of char type is returned from `double %s()' function. @item @ref{W0266} A value of char type is returned from `signed long long %s()' function. @item @ref{W0267} A value of char type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0266 @section W0266 @cindex W0266 @subsection Message body A value of char type is returned from `signed long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long long func(void) { char a = 0; return a; /* W0266 */ } @end verbatim @subsection Related message @itemize @item @ref{W0255} A value of char type is returned from `signed char %s()' function. @item @ref{W0256} A value of char type is returned from `unsigned char %s()' function. @item @ref{W0257} A value of char type is returned from `signed short %s()' function. @item @ref{W0258} A value of char type is returned from `unsigned short %s()' function. @item @ref{W0259} A value of char type is returned from `signed int %s()' function. @item @ref{W0260} A value of char type is returned from `unsigned int %s()' function. @item @ref{W0261} A value of char type is returned from `signed long %s()' function. @item @ref{W0262} A value of char type is returned from `unsigned long %s()' function. @item @ref{W0263} A value of char type is returned from `float %s()' function. @item @ref{W0264} A value of char type is returned from `double %s()' function. @item @ref{W0265} A value of char type is returned from `long double %s()' function. @item @ref{W0267} A value of char type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0267 @section W0267 @cindex W0267 @subsection Message body A value of char type is returned from `unsigned long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long long func(void) { char a = 0; return a; /* W0267 */ } @end verbatim @subsection Related message @itemize @item @ref{W0255} A value of char type is returned from `signed char %s()' function. @item @ref{W0256} A value of char type is returned from `unsigned char %s()' function. @item @ref{W0257} A value of char type is returned from `signed short %s()' function. @item @ref{W0258} A value of char type is returned from `unsigned short %s()' function. @item @ref{W0259} A value of char type is returned from `signed int %s()' function. @item @ref{W0260} A value of char type is returned from `unsigned int %s()' function. @item @ref{W0261} A value of char type is returned from `signed long %s()' function. @item @ref{W0262} A value of char type is returned from `unsigned long %s()' function. @item @ref{W0263} A value of char type is returned from `float %s()' function. @item @ref{W0264} A value of char type is returned from `double %s()' function. @item @ref{W0265} A value of char type is returned from `long double %s()' function. @item @ref{W0266} A value of char type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0268 @section W0268 @cindex W0268 @subsection Message body A value of unsigned char type is returned from `char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim char func(void) { unsigned char a = 0; return a; /* W0268 */ } @end verbatim @subsection Related message @itemize @item @ref{W0269} A value of signed char type is returned from `char %s()' function. @item @ref{W0270} A value of signed short type is returned from `char %s()' function. @item @ref{W0271} A value of unsigned short type is returned from `char %s()' function. @item @ref{W0272} A value of signed int type is returned from `char %s()' function. @item @ref{W0273} A value of unsigned int type is returned from `char %s()' function. @item @ref{W0274} A value of signed long type is returned from `char %s()' function. @item @ref{W0275} A value of unsigned long type is returned from `char %s()' function. @item @ref{W0276} A value of signed long long type is returned from `char %s()' function. @item @ref{W0277} A value of unsigned long long type is returned from `char %s()' function. @end itemize @subsection Since 1.0.0 @node W0269 @section W0269 @cindex W0269 @subsection Message body A value of signed char type is returned from `char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim char func(void) { signed char a = 0; return a; /* W0269 */ } @end verbatim @subsection Related message @itemize @item @ref{W0268} A value of unsigned char type is returned from `char %s()' function. @item @ref{W0270} A value of signed short type is returned from `char %s()' function. @item @ref{W0271} A value of unsigned short type is returned from `char %s()' function. @item @ref{W0272} A value of signed int type is returned from `char %s()' function. @item @ref{W0273} A value of unsigned int type is returned from `char %s()' function. @item @ref{W0274} A value of signed long type is returned from `char %s()' function. @item @ref{W0275} A value of unsigned long type is returned from `char %s()' function. @item @ref{W0276} A value of signed long long type is returned from `char %s()' function. @item @ref{W0277} A value of unsigned long long type is returned from `char %s()' function. @end itemize @subsection Since 1.0.0 @node W0270 @section W0270 @cindex W0270 @subsection Message body A value of signed short type is returned from `char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim char func(void) { short a = 0; return a; /* W0270 */ } @end verbatim @subsection Related message @itemize @item @ref{W0268} A value of unsigned char type is returned from `char %s()' function. @item @ref{W0269} A value of signed char type is returned from `char %s()' function. @item @ref{W0271} A value of unsigned short type is returned from `char %s()' function. @item @ref{W0272} A value of signed int type is returned from `char %s()' function. @item @ref{W0273} A value of unsigned int type is returned from `char %s()' function. @item @ref{W0274} A value of signed long type is returned from `char %s()' function. @item @ref{W0275} A value of unsigned long type is returned from `char %s()' function. @item @ref{W0276} A value of signed long long type is returned from `char %s()' function. @item @ref{W0277} A value of unsigned long long type is returned from `char %s()' function. @end itemize @subsection Since 1.0.0 @node W0271 @section W0271 @cindex W0271 @subsection Message body A value of unsigned short type is returned from `char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim char func(void) { unsigned short a = 0; return a; /* W0271 */ } @end verbatim @subsection Related message @itemize @item @ref{W0268} A value of unsigned char type is returned from `char %s()' function. @item @ref{W0269} A value of signed char type is returned from `char %s()' function. @item @ref{W0270} A value of signed short type is returned from `char %s()' function. @item @ref{W0272} A value of signed int type is returned from `char %s()' function. @item @ref{W0273} A value of unsigned int type is returned from `char %s()' function. @item @ref{W0274} A value of signed long type is returned from `char %s()' function. @item @ref{W0275} A value of unsigned long type is returned from `char %s()' function. @item @ref{W0276} A value of signed long long type is returned from `char %s()' function. @item @ref{W0277} A value of unsigned long long type is returned from `char %s()' function. @end itemize @subsection Since 1.0.0 @node W0272 @section W0272 @cindex W0272 @subsection Message body A value of signed int type is returned from `char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim char func(void) { int a = 0; return a; /* W0272 */ } @end verbatim @subsection Related message @itemize @item @ref{W0268} A value of unsigned char type is returned from `char %s()' function. @item @ref{W0269} A value of signed char type is returned from `char %s()' function. @item @ref{W0270} A value of signed short type is returned from `char %s()' function. @item @ref{W0271} A value of unsigned short type is returned from `char %s()' function. @item @ref{W0273} A value of unsigned int type is returned from `char %s()' function. @item @ref{W0274} A value of signed long type is returned from `char %s()' function. @item @ref{W0275} A value of unsigned long type is returned from `char %s()' function. @item @ref{W0276} A value of signed long long type is returned from `char %s()' function. @item @ref{W0277} A value of unsigned long long type is returned from `char %s()' function. @end itemize @subsection Since 1.0.0 @node W0273 @section W0273 @cindex W0273 @subsection Message body A value of unsigned int type is returned from `char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim char func(void) { unsigned int a = 0; return a; /* W0273 */ } @end verbatim @subsection Related message @itemize @item @ref{W0268} A value of unsigned char type is returned from `char %s()' function. @item @ref{W0269} A value of signed char type is returned from `char %s()' function. @item @ref{W0270} A value of signed short type is returned from `char %s()' function. @item @ref{W0271} A value of unsigned short type is returned from `char %s()' function. @item @ref{W0272} A value of signed int type is returned from `char %s()' function. @item @ref{W0274} A value of signed long type is returned from `char %s()' function. @item @ref{W0275} A value of unsigned long type is returned from `char %s()' function. @item @ref{W0276} A value of signed long long type is returned from `char %s()' function. @item @ref{W0277} A value of unsigned long long type is returned from `char %s()' function. @end itemize @subsection Since 1.0.0 @node W0274 @section W0274 @cindex W0274 @subsection Message body A value of signed long type is returned from `char %s()' function. @subsection Content @subsection Sample code @verbatim char func(void) { long a = 0; return a; /* W0274 */ } @end verbatim @subsection Related message @itemize @item @ref{W0268} A value of unsigned char type is returned from `char %s()' function. @item @ref{W0269} A value of signed char type is returned from `char %s()' function. @item @ref{W0270} A value of signed short type is returned from `char %s()' function. @item @ref{W0271} A value of unsigned short type is returned from `char %s()' function. @item @ref{W0272} A value of signed int type is returned from `char %s()' function. @item @ref{W0273} A value of unsigned int type is returned from `char %s()' function. @item @ref{W0275} A value of unsigned long type is returned from `char %s()' function. @item @ref{W0276} A value of signed long long type is returned from `char %s()' function. @item @ref{W0277} A value of unsigned long long type is returned from `char %s()' function. @end itemize @subsection Since 1.0.0 @node W0275 @section W0275 @cindex W0275 @subsection Message body A value of unsigned long type is returned from `char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim char func(void) { unsigned long a = 0; return a; /* W0275 */ } @end verbatim @subsection Related message @itemize @item @ref{W0268} A value of unsigned char type is returned from `char %s()' function. @item @ref{W0269} A value of signed char type is returned from `char %s()' function. @item @ref{W0270} A value of signed short type is returned from `char %s()' function. @item @ref{W0271} A value of unsigned short type is returned from `char %s()' function. @item @ref{W0272} A value of signed int type is returned from `char %s()' function. @item @ref{W0273} A value of unsigned int type is returned from `char %s()' function. @item @ref{W0274} A value of signed long type is returned from `char %s()' function. @item @ref{W0276} A value of signed long long type is returned from `char %s()' function. @item @ref{W0277} A value of unsigned long long type is returned from `char %s()' function. @end itemize @subsection Since 1.0.0 @node W0276 @section W0276 @cindex W0276 @subsection Message body A value of signed long long type is returned from `char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim char func(void) { long long a = 0; return a; /* W0276 */ } @end verbatim @subsection Related message @itemize @item @ref{W0268} A value of unsigned char type is returned from `char %s()' function. @item @ref{W0269} A value of signed char type is returned from `char %s()' function. @item @ref{W0270} A value of signed short type is returned from `char %s()' function. @item @ref{W0271} A value of unsigned short type is returned from `char %s()' function. @item @ref{W0272} A value of signed int type is returned from `char %s()' function. @item @ref{W0273} A value of unsigned int type is returned from `char %s()' function. @item @ref{W0274} A value of signed long type is returned from `char %s()' function. @item @ref{W0275} A value of unsigned long type is returned from `char %s()' function. @item @ref{W0277} A value of unsigned long long type is returned from `char %s()' function. @end itemize @subsection Since 1.0.0 @node W0277 @section W0277 @cindex W0277 @subsection Message body A value of unsigned long long type is returned from `char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim char func(void) { unsigned long long a = 0; return a; /* W0277 */ } @end verbatim @subsection Related message @itemize @item @ref{W0268} A value of unsigned char type is returned from `char %s()' function. @item @ref{W0269} A value of signed char type is returned from `char %s()' function. @item @ref{W0270} A value of signed short type is returned from `char %s()' function. @item @ref{W0271} A value of unsigned short type is returned from `char %s()' function. @item @ref{W0272} A value of signed int type is returned from `char %s()' function. @item @ref{W0273} A value of unsigned int type is returned from `char %s()' function. @item @ref{W0274} A value of signed long type is returned from `char %s()' function. @item @ref{W0275} A value of unsigned long type is returned from `char %s()' function. @item @ref{W0276} A value of signed long long type is returned from `char %s()' function. @end itemize @subsection Since 1.0.0 @node W0278 @section W0278 @cindex W0278 @subsection Message body A value of unsigned char type is returned from `signed char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim signed char func(void) { unsigned char a = 0; return a; /* W0278 */ } @end verbatim @subsection Related message @itemize @item @ref{W0279} A value of unsigned short type is returned from `signed char %s()' function. @item @ref{W0280} A value of unsigned short type is returned from `signed short %s()' function. @item @ref{W0281} A value of unsigned int type is returned from `signed char %s()' function. @item @ref{W0282} A value of unsigned int type is returned from `signed short %s()' function. @item @ref{W0283} A value of unsigned int type is returned from `signed int %s()' function. @item @ref{W0284} A value of unsigned long type is returned from `signed char %s()' function. @item @ref{W0285} A value of unsigned long type is returned from `signed short %s()' function. @item @ref{W0286} A value of unsigned long type is returned from `signed int %s()' function. @item @ref{W0287} A value of unsigned long type is returned from `signed long %s()' function. @item @ref{W0288} A value of unsigned long long type is returned from `signed char %s()' function. @item @ref{W0289} A value of unsigned long long type is returned from `signed short %s()' function. @item @ref{W0290} A value of unsigned long long type is returned from `signed int %s()' function. @item @ref{W0291} A value of unsigned long long type is returned from `signed long %s()' function. @item @ref{W0292} A value of unsigned long long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0279 @section W0279 @cindex W0279 @subsection Message body A value of unsigned short type is returned from `signed char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim signed char func(void) { unsigned short a = 0; return a; /* W0279 */ } @end verbatim @subsection Related message @itemize @item @ref{W0278} A value of unsigned char type is returned from `signed char %s()' function. @item @ref{W0280} A value of unsigned short type is returned from `signed short %s()' function. @item @ref{W0281} A value of unsigned int type is returned from `signed char %s()' function. @item @ref{W0282} A value of unsigned int type is returned from `signed short %s()' function. @item @ref{W0283} A value of unsigned int type is returned from `signed int %s()' function. @item @ref{W0284} A value of unsigned long type is returned from `signed char %s()' function. @item @ref{W0285} A value of unsigned long type is returned from `signed short %s()' function. @item @ref{W0286} A value of unsigned long type is returned from `signed int %s()' function. @item @ref{W0287} A value of unsigned long type is returned from `signed long %s()' function. @item @ref{W0288} A value of unsigned long long type is returned from `signed char %s()' function. @item @ref{W0289} A value of unsigned long long type is returned from `signed short %s()' function. @item @ref{W0290} A value of unsigned long long type is returned from `signed int %s()' function. @item @ref{W0291} A value of unsigned long long type is returned from `signed long %s()' function. @item @ref{W0292} A value of unsigned long long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0280 @section W0280 @cindex W0280 @subsection Message body A value of unsigned short type is returned from `signed short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim short func(void) { unsigned short a = 0; return a; /* W0280 */ } @end verbatim @subsection Related message @itemize @item @ref{W0278} A value of unsigned char type is returned from `signed char %s()' function. @item @ref{W0279} A value of unsigned short type is returned from `signed char %s()' function. @item @ref{W0281} A value of unsigned int type is returned from `signed char %s()' function. @item @ref{W0282} A value of unsigned int type is returned from `signed short %s()' function. @item @ref{W0283} A value of unsigned int type is returned from `signed int %s()' function. @item @ref{W0284} A value of unsigned long type is returned from `signed char %s()' function. @item @ref{W0285} A value of unsigned long type is returned from `signed short %s()' function. @item @ref{W0286} A value of unsigned long type is returned from `signed int %s()' function. @item @ref{W0287} A value of unsigned long type is returned from `signed long %s()' function. @item @ref{W0288} A value of unsigned long long type is returned from `signed char %s()' function. @item @ref{W0289} A value of unsigned long long type is returned from `signed short %s()' function. @item @ref{W0290} A value of unsigned long long type is returned from `signed int %s()' function. @item @ref{W0291} A value of unsigned long long type is returned from `signed long %s()' function. @item @ref{W0292} A value of unsigned long long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0281 @section W0281 @cindex W0281 @subsection Message body A value of unsigned int type is returned from `signed char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim signed char func(void) { unsigned int a = 0; return a; /* W0281 */ } @end verbatim @subsection Related message @itemize @item @ref{W0278} A value of unsigned char type is returned from `signed char %s()' function. @item @ref{W0279} A value of unsigned short type is returned from `signed char %s()' function. @item @ref{W0280} A value of unsigned short type is returned from `signed short %s()' function. @item @ref{W0282} A value of unsigned int type is returned from `signed short %s()' function. @item @ref{W0283} A value of unsigned int type is returned from `signed int %s()' function. @item @ref{W0284} A value of unsigned long type is returned from `signed char %s()' function. @item @ref{W0285} A value of unsigned long type is returned from `signed short %s()' function. @item @ref{W0286} A value of unsigned long type is returned from `signed int %s()' function. @item @ref{W0287} A value of unsigned long type is returned from `signed long %s()' function. @item @ref{W0288} A value of unsigned long long type is returned from `signed char %s()' function. @item @ref{W0289} A value of unsigned long long type is returned from `signed short %s()' function. @item @ref{W0290} A value of unsigned long long type is returned from `signed int %s()' function. @item @ref{W0291} A value of unsigned long long type is returned from `signed long %s()' function. @item @ref{W0292} A value of unsigned long long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0282 @section W0282 @cindex W0282 @subsection Message body A value of unsigned int type is returned from `signed short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim short func(void) { unsigned int a = 0; return a; /* W0282 */ } @end verbatim @subsection Related message @itemize @item @ref{W0278} A value of unsigned char type is returned from `signed char %s()' function. @item @ref{W0279} A value of unsigned short type is returned from `signed char %s()' function. @item @ref{W0280} A value of unsigned short type is returned from `signed short %s()' function. @item @ref{W0281} A value of unsigned int type is returned from `signed char %s()' function. @item @ref{W0283} A value of unsigned int type is returned from `signed int %s()' function. @item @ref{W0284} A value of unsigned long type is returned from `signed char %s()' function. @item @ref{W0285} A value of unsigned long type is returned from `signed short %s()' function. @item @ref{W0286} A value of unsigned long type is returned from `signed int %s()' function. @item @ref{W0287} A value of unsigned long type is returned from `signed long %s()' function. @item @ref{W0288} A value of unsigned long long type is returned from `signed char %s()' function. @item @ref{W0289} A value of unsigned long long type is returned from `signed short %s()' function. @item @ref{W0290} A value of unsigned long long type is returned from `signed int %s()' function. @item @ref{W0291} A value of unsigned long long type is returned from `signed long %s()' function. @item @ref{W0292} A value of unsigned long long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0283 @section W0283 @cindex W0283 @subsection Message body A value of unsigned int type is returned from `signed int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim int func(void) { unsigned int a = 0; return a; /* W0283 */ } @end verbatim @subsection Related message @itemize @item @ref{W0278} A value of unsigned char type is returned from `signed char %s()' function. @item @ref{W0279} A value of unsigned short type is returned from `signed char %s()' function. @item @ref{W0280} A value of unsigned short type is returned from `signed short %s()' function. @item @ref{W0281} A value of unsigned int type is returned from `signed char %s()' function. @item @ref{W0282} A value of unsigned int type is returned from `signed short %s()' function. @item @ref{W0284} A value of unsigned long type is returned from `signed char %s()' function. @item @ref{W0285} A value of unsigned long type is returned from `signed short %s()' function. @item @ref{W0286} A value of unsigned long type is returned from `signed int %s()' function. @item @ref{W0287} A value of unsigned long type is returned from `signed long %s()' function. @item @ref{W0288} A value of unsigned long long type is returned from `signed char %s()' function. @item @ref{W0289} A value of unsigned long long type is returned from `signed short %s()' function. @item @ref{W0290} A value of unsigned long long type is returned from `signed int %s()' function. @item @ref{W0291} A value of unsigned long long type is returned from `signed long %s()' function. @item @ref{W0292} A value of unsigned long long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0284 @section W0284 @cindex W0284 @subsection Message body A value of unsigned long type is returned from `signed char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim signed char func(void) { unsigned long a = 0; return a; /* W0284 */ } @end verbatim @subsection Related message @itemize @item @ref{W0278} A value of unsigned char type is returned from `signed char %s()' function. @item @ref{W0279} A value of unsigned short type is returned from `signed char %s()' function. @item @ref{W0280} A value of unsigned short type is returned from `signed short %s()' function. @item @ref{W0281} A value of unsigned int type is returned from `signed char %s()' function. @item @ref{W0282} A value of unsigned int type is returned from `signed short %s()' function. @item @ref{W0283} A value of unsigned int type is returned from `signed int %s()' function. @item @ref{W0285} A value of unsigned long type is returned from `signed short %s()' function. @item @ref{W0286} A value of unsigned long type is returned from `signed int %s()' function. @item @ref{W0287} A value of unsigned long type is returned from `signed long %s()' function. @item @ref{W0288} A value of unsigned long long type is returned from `signed char %s()' function. @item @ref{W0289} A value of unsigned long long type is returned from `signed short %s()' function. @item @ref{W0290} A value of unsigned long long type is returned from `signed int %s()' function. @item @ref{W0291} A value of unsigned long long type is returned from `signed long %s()' function. @item @ref{W0292} A value of unsigned long long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0285 @section W0285 @cindex W0285 @subsection Message body A value of unsigned long type is returned from `signed short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim short func(void) { unsigned long a = 0; return a; /* W0285 */ } @end verbatim @subsection Related message @itemize @item @ref{W0278} A value of unsigned char type is returned from `signed char %s()' function. @item @ref{W0279} A value of unsigned short type is returned from `signed char %s()' function. @item @ref{W0280} A value of unsigned short type is returned from `signed short %s()' function. @item @ref{W0281} A value of unsigned int type is returned from `signed char %s()' function. @item @ref{W0282} A value of unsigned int type is returned from `signed short %s()' function. @item @ref{W0283} A value of unsigned int type is returned from `signed int %s()' function. @item @ref{W0284} A value of unsigned long type is returned from `signed char %s()' function. @item @ref{W0286} A value of unsigned long type is returned from `signed int %s()' function. @item @ref{W0287} A value of unsigned long type is returned from `signed long %s()' function. @item @ref{W0288} A value of unsigned long long type is returned from `signed char %s()' function. @item @ref{W0289} A value of unsigned long long type is returned from `signed short %s()' function. @item @ref{W0290} A value of unsigned long long type is returned from `signed int %s()' function. @item @ref{W0291} A value of unsigned long long type is returned from `signed long %s()' function. @item @ref{W0292} A value of unsigned long long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0286 @section W0286 @cindex W0286 @subsection Message body A value of unsigned long type is returned from `signed int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim int func(void) { unsigned long a = 0; return a; /* W0286 */ } @end verbatim @subsection Related message @itemize @item @ref{W0278} A value of unsigned char type is returned from `signed char %s()' function. @item @ref{W0279} A value of unsigned short type is returned from `signed char %s()' function. @item @ref{W0280} A value of unsigned short type is returned from `signed short %s()' function. @item @ref{W0281} A value of unsigned int type is returned from `signed char %s()' function. @item @ref{W0282} A value of unsigned int type is returned from `signed short %s()' function. @item @ref{W0283} A value of unsigned int type is returned from `signed int %s()' function. @item @ref{W0284} A value of unsigned long type is returned from `signed char %s()' function. @item @ref{W0285} A value of unsigned long type is returned from `signed short %s()' function. @item @ref{W0287} A value of unsigned long type is returned from `signed long %s()' function. @item @ref{W0288} A value of unsigned long long type is returned from `signed char %s()' function. @item @ref{W0289} A value of unsigned long long type is returned from `signed short %s()' function. @item @ref{W0290} A value of unsigned long long type is returned from `signed int %s()' function. @item @ref{W0291} A value of unsigned long long type is returned from `signed long %s()' function. @item @ref{W0292} A value of unsigned long long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0287 @section W0287 @cindex W0287 @subsection Message body A value of unsigned long type is returned from `signed long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long func(void) { unsigned long a = 0; return a; /* W0287 */ } @end verbatim @subsection Related message @itemize @item @ref{W0278} A value of unsigned char type is returned from `signed char %s()' function. @item @ref{W0279} A value of unsigned short type is returned from `signed char %s()' function. @item @ref{W0280} A value of unsigned short type is returned from `signed short %s()' function. @item @ref{W0281} A value of unsigned int type is returned from `signed char %s()' function. @item @ref{W0282} A value of unsigned int type is returned from `signed short %s()' function. @item @ref{W0283} A value of unsigned int type is returned from `signed int %s()' function. @item @ref{W0284} A value of unsigned long type is returned from `signed char %s()' function. @item @ref{W0285} A value of unsigned long type is returned from `signed short %s()' function. @item @ref{W0286} A value of unsigned long type is returned from `signed int %s()' function. @item @ref{W0288} A value of unsigned long long type is returned from `signed char %s()' function. @item @ref{W0289} A value of unsigned long long type is returned from `signed short %s()' function. @item @ref{W0290} A value of unsigned long long type is returned from `signed int %s()' function. @item @ref{W0291} A value of unsigned long long type is returned from `signed long %s()' function. @item @ref{W0292} A value of unsigned long long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0288 @section W0288 @cindex W0288 @subsection Message body A value of unsigned long long type is returned from `signed char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim signed char func(void) { unsigned long long a = 0; return a; /* W0288 */ } @end verbatim @subsection Related message @itemize @item @ref{W0278} A value of unsigned char type is returned from `signed char %s()' function. @item @ref{W0279} A value of unsigned short type is returned from `signed char %s()' function. @item @ref{W0280} A value of unsigned short type is returned from `signed short %s()' function. @item @ref{W0281} A value of unsigned int type is returned from `signed char %s()' function. @item @ref{W0282} A value of unsigned int type is returned from `signed short %s()' function. @item @ref{W0283} A value of unsigned int type is returned from `signed int %s()' function. @item @ref{W0284} A value of unsigned long type is returned from `signed char %s()' function. @item @ref{W0285} A value of unsigned long type is returned from `signed short %s()' function. @item @ref{W0286} A value of unsigned long type is returned from `signed int %s()' function. @item @ref{W0287} A value of unsigned long type is returned from `signed long %s()' function. @item @ref{W0289} A value of unsigned long long type is returned from `signed short %s()' function. @item @ref{W0290} A value of unsigned long long type is returned from `signed int %s()' function. @item @ref{W0291} A value of unsigned long long type is returned from `signed long %s()' function. @item @ref{W0292} A value of unsigned long long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0289 @section W0289 @cindex W0289 @subsection Message body A value of unsigned long long type is returned from `short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim short func(void) { unsigned long long a = 0; return a; /* W0289 */ } @end verbatim @subsection Related message @itemize @item @ref{W0278} A value of unsigned char type is returned from `signed char %s()' function. @item @ref{W0279} A value of unsigned short type is returned from `signed char %s()' function. @item @ref{W0280} A value of unsigned short type is returned from `signed short %s()' function. @item @ref{W0281} A value of unsigned int type is returned from `signed char %s()' function. @item @ref{W0282} A value of unsigned int type is returned from `signed short %s()' function. @item @ref{W0283} A value of unsigned int type is returned from `signed int %s()' function. @item @ref{W0284} A value of unsigned long type is returned from `signed char %s()' function. @item @ref{W0285} A value of unsigned long type is returned from `signed short %s()' function. @item @ref{W0286} A value of unsigned long type is returned from `signed int %s()' function. @item @ref{W0287} A value of unsigned long type is returned from `signed long %s()' function. @item @ref{W0288} A value of unsigned long long type is returned from `signed char %s()' function. @item @ref{W0290} A value of unsigned long long type is returned from `signed int %s()' function. @item @ref{W0291} A value of unsigned long long type is returned from `signed long %s()' function. @item @ref{W0292} A value of unsigned long long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0290 @section W0290 @cindex W0290 @subsection Message body A value of unsigned long long type is returned from `signed int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim int func(void) { unsigned long long a = 0; return a; /* W0290 */ } @end verbatim @subsection Related message @itemize @item @ref{W0278} A value of unsigned char type is returned from `signed char %s()' function. @item @ref{W0279} A value of unsigned short type is returned from `signed char %s()' function. @item @ref{W0280} A value of unsigned short type is returned from `signed short %s()' function. @item @ref{W0281} A value of unsigned int type is returned from `signed char %s()' function. @item @ref{W0282} A value of unsigned int type is returned from `signed short %s()' function. @item @ref{W0283} A value of unsigned int type is returned from `signed int %s()' function. @item @ref{W0284} A value of unsigned long type is returned from `signed char %s()' function. @item @ref{W0285} A value of unsigned long type is returned from `signed short %s()' function. @item @ref{W0286} A value of unsigned long type is returned from `signed int %s()' function. @item @ref{W0287} A value of unsigned long type is returned from `signed long %s()' function. @item @ref{W0288} A value of unsigned long long type is returned from `signed char %s()' function. @item @ref{W0289} A value of unsigned long long type is returned from `signed short %s()' function. @item @ref{W0291} A value of unsigned long long type is returned from `signed long %s()' function. @item @ref{W0292} A value of unsigned long long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0291 @section W0291 @cindex W0291 @subsection Message body A value of unsigned long long type is returned from `signed long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long func(void) { unsigned long long a = 0; return a; /* W0291 */ } @end verbatim @subsection Related message @itemize @item @ref{W0278} A value of unsigned char type is returned from `signed char %s()' function. @item @ref{W0279} A value of unsigned short type is returned from `signed char %s()' function. @item @ref{W0280} A value of unsigned short type is returned from `signed short %s()' function. @item @ref{W0281} A value of unsigned int type is returned from `signed char %s()' function. @item @ref{W0282} A value of unsigned int type is returned from `signed short %s()' function. @item @ref{W0283} A value of unsigned int type is returned from `signed int %s()' function. @item @ref{W0284} A value of unsigned long type is returned from `signed char %s()' function. @item @ref{W0285} A value of unsigned long type is returned from `signed short %s()' function. @item @ref{W0286} A value of unsigned long type is returned from `signed int %s()' function. @item @ref{W0287} A value of unsigned long type is returned from `signed long %s()' function. @item @ref{W0288} A value of unsigned long long type is returned from `signed char %s()' function. @item @ref{W0289} A value of unsigned long long type is returned from `signed short %s()' function. @item @ref{W0290} A value of unsigned long long type is returned from `signed int %s()' function. @item @ref{W0292} A value of unsigned long long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0292 @section W0292 @cindex W0292 @subsection Message body A value of unsigned long long type is returned from `signed long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long long func(void) { unsigned long long a = 0; return a; /* W0292 */ } @end verbatim @subsection Related message @itemize @item @ref{W0278} A value of unsigned char type is returned from `signed char %s()' function. @item @ref{W0279} A value of unsigned short type is returned from `signed char %s()' function. @item @ref{W0280} A value of unsigned short type is returned from `signed short %s()' function. @item @ref{W0281} A value of unsigned int type is returned from `signed char %s()' function. @item @ref{W0282} A value of unsigned int type is returned from `signed short %s()' function. @item @ref{W0283} A value of unsigned int type is returned from `signed int %s()' function. @item @ref{W0284} A value of unsigned long type is returned from `signed char %s()' function. @item @ref{W0285} A value of unsigned long type is returned from `signed short %s()' function. @item @ref{W0286} A value of unsigned long type is returned from `signed int %s()' function. @item @ref{W0287} A value of unsigned long type is returned from `signed long %s()' function. @item @ref{W0288} A value of unsigned long long type is returned from `signed char %s()' function. @item @ref{W0289} A value of unsigned long long type is returned from `signed short %s()' function. @item @ref{W0290} A value of unsigned long long type is returned from `signed int %s()' function. @item @ref{W0291} A value of unsigned long long type is returned from `signed long %s()' function. @end itemize @subsection Since 1.0.0 @node W0293 @section W0293 @cindex W0293 @subsection Message body A value of signed char type is returned from `unsigned char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned char func(void) { signed char a = 0; return a; /* W0293 */ } @end verbatim @subsection Related message @itemize @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0294 @section W0294 @cindex W0294 @subsection Message body A value of signed char type is returned from `unsigned short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned short func(void) { signed char a = 0; return a; /* W0294 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0295 @section W0295 @cindex W0295 @subsection Message body A value of signed char type is returned from `unsigned int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int func(void) { signed char a = 0; return a; /* W0295 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0296 @section W0296 @cindex W0296 @subsection Message body A value of signed char type is returned from `unsigned long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long func(void) { signed char a = 0; return a; /* W0296 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0297 @section W0297 @cindex W0297 @subsection Message body A value of signed short type is returned from `unsigned char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned char func(void) { short a = 0; return a; /* W0297 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0298 @section W0298 @cindex W0298 @subsection Message body A value of short type is returned from `unsigned short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned short func(void) { short a = 0; return a; /* W0298 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0299 @section W0299 @cindex W0299 @subsection Message body A value of signed short type is returned from `unsigned int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int func(void) { short a = 0; return a; /* W0299 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0300 @section W0300 @cindex W0300 @subsection Message body A value of signed short type is returned from `unsigned long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long func(void) { short a = 0; return a; /* W0300 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0301 @section W0301 @cindex W0301 @subsection Message body A value of signed int type is returned from `unsigned char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned char func(void) { int a = 0; return a; /* W0301 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0302 @section W0302 @cindex W0302 @subsection Message body A value of signed int type is returned from `unsigned short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned short func(void) { int a = 0; return a; /* W0302 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0303 @section W0303 @cindex W0303 @subsection Message body A value of signed int type is returned from `unsigned int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int func(void) { int a = 0; return a; /* W0303 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0304 @section W0304 @cindex W0304 @subsection Message body A value of signed int type is returned from `unsigned long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long func(void) { int a = 0; return a; /* W0304 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0305 @section W0305 @cindex W0305 @subsection Message body A value of signed long type is returned from `unsigned char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned char func(void) { long a = 0; return a; /* W0305 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0306 @section W0306 @cindex W0306 @subsection Message body A value of signed long type is returned from `unsigned short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned short func(void) { long a = 0; return a; /* W0306 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0307 @section W0307 @cindex W0307 @subsection Message body A value of signed long type is returned from `unsigned int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int func(void) { long a = 0; return a; /* W0307 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0308 @section W0308 @cindex W0308 @subsection Message body A value of signed long type is returned from `unsigned long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long func(void) { long a = 0; return a; /* W0308 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0309 @section W0309 @cindex W0309 @subsection Message body A value of signed char type is returned from `unsigned long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long long func(void) { signed char a = 0; return a; /* W0309 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0310 @section W0310 @cindex W0310 @subsection Message body A value of signed short type is returned from `unsigned long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long long func(void) { short a = 0; return a; /* W0310 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0311 @section W0311 @cindex W0311 @subsection Message body A value of signed int type is returned from `unsigned long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long long func(void) { int a = 0; return a; /* W0311 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0312 @section W0312 @cindex W0312 @subsection Message body A value of signed long type is returned from `unsigned long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long long func(void) { long a = 0; return a; /* W0312 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0313 @section W0313 @cindex W0313 @subsection Message body A value of signed long long type is returned from `unsigned char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned char func(void) { long long a = 0; return a; /* W0313 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0314 @section W0314 @cindex W0314 @subsection Message body A value of signed long long type is returned from `unsigned short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned short func(void) { long long a = 0; return a; /* W0314 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0315 @section W0315 @cindex W0315 @subsection Message body A value of signed long long type is returned from `unsigned int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int func(void) { long long a = 0; return a; /* W0315 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0316 @section W0316 @cindex W0316 @subsection Message body A value of signed long long type is returned from `unsigned long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long func(void) { long long a = 0; return a; /* W0316 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0317} A value of signed long long type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0317 @section W0317 @cindex W0317 @subsection Message body A value of signed long long type is returned from `unsigned long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long long func(void) { long long a = 0; return a; /* W0317 */ } @end verbatim @subsection Related message @itemize @item @ref{W0293} A value of signed char type is returned from `unsigned char %s()' function. @item @ref{W0294} A value of signed char type is returned from `unsigned short %s()' function. @item @ref{W0295} A value of signed char type is returned from `unsigned int %s()' function. @item @ref{W0296} A value of signed char type is returned from `unsigned long %s()' function. @item @ref{W0297} A value of signed short type is returned from `unsigned char %s()' function. @item @ref{W0298} A value of signed short type is returned from `unsigned short %s()' function. @item @ref{W0299} A value of signed short type is returned from `unsigned int %s()' function. @item @ref{W0300} A value of signed short type is returned from `unsigned long %s()' function. @item @ref{W0301} A value of signed int type is returned from `unsigned char %s()' function. @item @ref{W0302} A value of signed int type is returned from `unsigned short %s()' function. @item @ref{W0303} A value of signed int type is returned from `unsigned int %s()' function. @item @ref{W0304} A value of signed int type is returned from `unsigned long %s()' function. @item @ref{W0305} A value of signed long type is returned from `unsigned char %s()' function. @item @ref{W0306} A value of signed long type is returned from `unsigned short %s()' function. @item @ref{W0307} A value of signed long type is returned from `unsigned int %s()' function. @item @ref{W0308} A value of signed long type is returned from `unsigned long %s()' function. @item @ref{W0309} A value of signed char type is returned from `unsigned long long %s()' function. @item @ref{W0310} A value of signed short type is returned from `unsigned long long %s()' function. @item @ref{W0311} A value of signed int type is returned from `unsigned long long %s()' function. @item @ref{W0312} A value of signed long type is returned from `unsigned long long %s()' function. @item @ref{W0313} A value of signed long long type is returned from `unsigned char %s()' function. @item @ref{W0314} A value of signed long long type is returned from `unsigned short %s()' function. @item @ref{W0315} A value of signed long long type is returned from `unsigned int %s()' function. @item @ref{W0316} A value of signed long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0318 @section W0318 @cindex W0318 @subsection Message body A value of unsigned char type is returned from `float %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim float func(void) { unsigned char a = 0; return a; /* W0318 */ } @end verbatim @subsection Related message @itemize @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0319 @section W0319 @cindex W0319 @subsection Message body A value of unsigned char type is returned from `double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim double func(void) { unsigned char a = 0; return a; /* W0319 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0320 @section W0320 @cindex W0320 @subsection Message body A value of unsigned char type is returned from `long double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long double func(void) { unsigned char a = 0; return a; /* W0320 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0321 @section W0321 @cindex W0321 @subsection Message body A value of signed char type is returned from `float %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim float func(void) { unsigned char a = 0; return a; /* W0321 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0322 @section W0322 @cindex W0322 @subsection Message body A value of signed char type is returned from `double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim double func(void) { unsigned char a = 0; return a; /* W0322 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0323 @section W0323 @cindex W0323 @subsection Message body A value of signed char type is returned from `long double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long double func(void) { unsigned char a = 0; return a; /* W0323 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0324 @section W0324 @cindex W0324 @subsection Message body A value of signed short type is returned from `float %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim float func(void) { short a = 0; return a; /* W0324 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0325 @section W0325 @cindex W0325 @subsection Message body A value of signed short type is returned from `double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim double func(void) { short a = 0; return a; /* W0325 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0326 @section W0326 @cindex W0326 @subsection Message body A value of signed short type is returned from `long double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long double func(void) { short a = 0; return a; /* W0326 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0327 @section W0327 @cindex W0327 @subsection Message body A value of unsigned short type is returned from `float %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim float func(void) { unsigned short a = 0; return a; /* W0327 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0328 @section W0328 @cindex W0328 @subsection Message body A value of unsigned short type is returned from `double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim double func(void) { unsigned short a = 0; return a; /* W0328 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0329 @section W0329 @cindex W0329 @subsection Message body A value of unsigned short type is returned from `long double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long double func(void) { unsigned short a = 0; return a; /* W0329 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0330 @section W0330 @cindex W0330 @subsection Message body A value of signed int type is returned from `float %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim float func(void) { int a = 0; return a; /* W0330 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0331 @section W0331 @cindex W0331 @subsection Message body A value of signed int type is returned from `double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim double func(void) { int a = 0; return a; /* W0331 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0332 @section W0332 @cindex W0332 @subsection Message body A value of signed int type is returned from `long double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long double func(void) { int a = 0; return a; /* W0332 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0333 @section W0333 @cindex W0333 @subsection Message body A value of unsigned int type is returned from `float %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim float func(void) { unsigned int a = 0; return a; /* W0333 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0334 @section W0334 @cindex W0334 @subsection Message body A value of unsigned int type is returned from `double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim double func(void) { unsigned int a = 0; return a; /* W0334 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0335 @section W0335 @cindex W0335 @subsection Message body A value of unsigned int type is returned from `long double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long double func(void) { unsigned int a = 0; return a; /* W0335 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0336 @section W0336 @cindex W0336 @subsection Message body A value of signed long type is returned from `float %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim float func(void) { long a = 0; return a; /* W0336 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0337 @section W0337 @cindex W0337 @subsection Message body A value of signed long type is returned from `double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim double func(void) { long a = 0; return a; /* W0337 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0338 @section W0338 @cindex W0338 @subsection Message body A value of signed long type is returned from `long double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long double func(void) { long a = 0; return a; /* W0338 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0339 @section W0339 @cindex W0339 @subsection Message body A value of unsigned long type is returned from `float %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim float func(void) { unsigned long a = 0; return a; /* W0339 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0340 @section W0340 @cindex W0340 @subsection Message body A value of unsigned long type is returned from `double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim double func(void) { unsigned long a = 0; return a; /* W0340 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0341 @section W0341 @cindex W0341 @subsection Message body A value of unsigned long type is returned from `long double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long double func(void) { unsigned long a = 0; return a; /* W0341 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0342 @section W0342 @cindex W0342 @subsection Message body A value of signed long long type is returned from `float %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim float func(void) { long long a = 0; return a; /* W0342 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0343 @section W0343 @cindex W0343 @subsection Message body A value of signed long long type is returned from `double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim double func(void) { long long a = 0; return a; /* W0343 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0344 @section W0344 @cindex W0344 @subsection Message body A value of signed long long type is returned from `long double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long double func(void) { long long a = 0; return a; /* W0344 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0345 @section W0345 @cindex W0345 @subsection Message body A value of unsigned long long type is returned from `float %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim float func(void) { unsigned long long a = 0; return a; /* W0345 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0346 @section W0346 @cindex W0346 @subsection Message body A value of unsigned long long type is returned from `double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim double func(void) { unsigned long long a = 0; return a; /* W0346 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0347} A value of unsigned long long type is returned from `long double %s()' function. @end itemize @subsection Since 1.0.0 @node W0347 @section W0347 @subsection Message body A value of unsigned long long type is returned from `long double %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long double func(void) { unsigned long long a = 0; return a; /* W0347 */ } @end verbatim @subsection Related message @itemize @item @ref{W0318} A value of unsigned char type is returned from `float %s()' function. @item @ref{W0319} A value of unsigned char type is returned from `double %s()' function. @item @ref{W0320} A value of unsigned char type is returned from `long double %s()' function. @item @ref{W0321} A value of signed char type is returned from `float %s()' function. @item @ref{W0322} A value of signed char type is returned from `double %s()' function. @item @ref{W0323} A value of signed char type is returned from `long double %s()' function. @item @ref{W0324} A value of signed short type is returned from `float %s()' function. @item @ref{W0325} A value of signed short type is returned from `double %s()' function. @item @ref{W0326} A value of signed short type is returned from `long double %s()' function. @item @ref{W0327} A value of unsigned short type is returned from `float %s()' function. @item @ref{W0328} A value of unsigned short type is returned from `double %s()' function. @item @ref{W0329} A value of unsigned short type is returned from `long double %s()' function. @item @ref{W0330} A value of signed int type is returned from `float %s()' function. @item @ref{W0331} A value of signed int type is returned from `double %s()' function. @item @ref{W0332} A value of signed int type is returned from `long double %s()' function. @item @ref{W0333} A value of unsigned int type is returned from `float %s()' function. @item @ref{W0334} A value of unsigned int type is returned from `double %s()' function. @item @ref{W0335} A value of unsigned int type is returned from `long double %s()' function. @item @ref{W0336} A value of signed long type is returned from `float %s()' function. @item @ref{W0337} A value of signed long type is returned from `double %s()' function. @item @ref{W0338} A value of signed long type is returned from `long double %s()' function. @item @ref{W0339} A value of unsigned long type is returned from `float %s()' function. @item @ref{W0340} A value of unsigned long type is returned from `double %s()' function. @item @ref{W0341} A value of unsigned long type is returned from `long double %s()' function. @item @ref{W0342} A value of signed long long type is returned from `float %s()' function. @item @ref{W0343} A value of signed long long type is returned from `double %s()' function. @item @ref{W0344} A value of signed long long type is returned from `long double %s()' function. @item @ref{W0345} A value of unsigned long long type is returned from `float %s()' function. @item @ref{W0346} A value of unsigned long long type is returned from `double %s()' function. @end itemize @subsection Since 1.0.0 @node W0348 @section W0348 @cindex W0348 @subsection Message body A value of float type is returned from `char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim char func(void) { float a = 0; return a; /* W0348 */ } @end verbatim @subsection Related message @itemize @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0349 @section W0349 @cindex W0349 @subsection Message body A value of float type is returned from `signed char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim signed char func(void) { float a = 0; return a; /* W0349 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0350 @section W0350 @cindex W0350 @subsection Message body A value of float type is returned from `unsigned char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned char func(void) { float a = 0; return a; /* W0350 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0351 @section W0351 @cindex W0351 @subsection Message body A value of float type is returned from `signed short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim short func(void) { float a = 0; return a; /* W0351 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0352 @section W0352 @cindex W0352 @subsection Message body A value of float type is returned from `unsigned short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned short func(void) { float a = 0; return a; /* W0352 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0353 @section W0353 @cindex W0353 @subsection Message body A value of float type is returned from `signed int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim int func(void) { float a = 0; return a; /* W0353 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0354 @section W0354 @cindex W0354 @subsection Message body A value of float type is returned from `unsigned int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int func(void) { float a = 0; return a; /* W0354 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0355 @section W0355 @cindex W0355 @subsection Message body A value of float type is returned from `signed long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long func(void) { float a = 0; return a; /* W0355 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0356 @section W0356 @cindex W0356 @subsection Message body A value of float type is returned from `unsigned long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long func(void) { float a = 0; return a; /* W0356 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0357 @section W0357 @cindex W0357 @subsection Message body A value of double type is returned from `char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim char func(void) { double a = 0; return a; /* W0357 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0358 @section W0358 @cindex W0358 @subsection Message body A value of double type is returned from `signed char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim signed char func(void) { double a = 0; return a; /* W0358 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0359 @section W0359 @cindex W0359 @subsection Message body A value of double type is returned from `unsigned char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned char func(void) { double a = 0; return a; /* W0359 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0360 @section W0360 @cindex W0360 @subsection Message body A value of double type is returned from `short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim short func(void) { double a = 0; return a; /* W0360 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0361 @section W0361 @cindex W0361 @subsection Message body A value of double type is returned from `unsigned short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned short func(void) { double a = 0; return a; /* W0361 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0362 @section W0362 @cindex W0362 @subsection Message body A value of double type is returned from `signed int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim int func(void) { double a = 0; return a; /* W0362 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0363 @section W0363 @cindex W0363 @subsection Message body A value of double type is returned from `unsigned int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int func(void) { double a = 0; return a; /* W0363 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0364 @section W0364 @cindex W0364 @subsection Message body A value of double type is returned from `signed long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long func(void) { double a = 0; return a; /* W0364 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0365 @section W0365 @cindex W0365 @subsection Message body A value of double type is returned from `unsigned long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long func(void) { double a = 0; return a; /* W0365 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0366 @section W0366 @cindex W0366 @subsection Message body A value of long double type is returned from `char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim char func(void) { long double a = 0; return a; /* W0366 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0367 @section W0367 @cindex W0367 @subsection Message body A value of long double type is returned from `signed char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim signed char func(void) { long double a = 0; return a; /* W0367 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0368 @section W0368 @cindex W0368 @subsection Message body A value of long double type is returned from `signed char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned char func(void) { long double a = 0; return a; /* W0368 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0369 @section W0369 @cindex W0369 @subsection Message body A value of long double type is returned from `signed short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim short func(void) { long double a = 0; return a; /* W0369 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0370 @section W0370 @cindex W0370 @subsection Message body A value of long double type is returned from `unsigned short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned short func(void) { long double a = 0; return a; /* W0370 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0371 @section W0371 @cindex W0371 @subsection Message body A value of long double type is returned from `signed int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim int func(void) { long double a = 0; return a; /* W0371 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0372 @section W0372 @cindex W0372 @subsection Message body A value of long double type is returned from `unsigned int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int func(void) { long double a = 0; return a; /* W0372 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0373 @section W0373 @cindex W0373 @subsection Message body A value of long double type is returned from `signed long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long func(void) { long double a = 0; return a; /* W0373 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0374 @section W0374 @cindex W0374 @subsection Message body A value of long double type is returned from `unsigned long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long func(void) { long double a = 0; return a; /* W0374 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0375 @section W0375 @cindex W0375 @subsection Message body A value of float type is returned from `signed long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long long func(void) { float a = 0; return a; /* W0375 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0376 @section W0376 @cindex W0376 @subsection Message body A value of float type is returned from `unsigned long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long long func(void) { float a = 0; return a; /* W0376 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0377 @section W0377 @cindex W0377 @subsection Message body A value of double type is returned from `signed long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long long func(void) { double a = 0; return a; /* W0377 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0378 @section W0378 @cindex W0378 @subsection Message body A value of double type is returned from `unsigned long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long long func(void) { double a = 0; return a; /* W0378 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0379 @section W0379 @cindex W0379 @subsection Message body A value of long double type is returned from `signed long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long long func(void) { long double a = 0; return a; /* W0379 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0380} A value of long double type is returned from `unsigned long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0380 @section W0380 @cindex W0380 @subsection Message body A value of long double type is returned from `unsigned long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long long func(void) { long double a = 0; return a; /* W0380 */ } @end verbatim @subsection Related message @itemize @item @ref{W0348} A value of float type is returned from `char %s()' function. @item @ref{W0349} A value of float type is returned from `signed char %s()' function. @item @ref{W0350} A value of float type is returned from `unsigned char %s()' function. @item @ref{W0351} A value of float type is returned from `signed short %s()' function. @item @ref{W0352} A value of float type is returned from `unsigned short %s()' function. @item @ref{W0353} A value of float type is returned from `signed int %s()' function. @item @ref{W0354} A value of float type is returned from `unsigned int %s()' function. @item @ref{W0355} A value of float type is returned from `signed long %s()' function. @item @ref{W0356} A value of float type is returned from `unsigned long %s()' function. @item @ref{W0357} A value of double type is returned from `char %s()' function. @item @ref{W0358} A value of double type is returned from `signed char %s()' function. @item @ref{W0359} A value of double type is returned from `unsigned char %s()' function. @item @ref{W0360} A value of double type is returned from `signed short %s()' function. @item @ref{W0361} A value of double type is returned from `unsigned short %s()' function. @item @ref{W0362} A value of double type is returned from `signed int %s()' function. @item @ref{W0363} A value of double type is returned from `unsigned int %s()' function. @item @ref{W0364} A value of double type is returned from `signed long %s()' function. @item @ref{W0365} A value of double type is returned from `unsigned long %s()' function. @item @ref{W0366} A value of long double type is returned from `char %s()' function. @item @ref{W0367} A value of long double type is returned from `signed char %s()' function. @item @ref{W0368} A value of long double type is returned from `unsigned char %s()' function. @item @ref{W0369} A value of long double type is returned from `signed short %s()' function. @item @ref{W0370} A value of long double type is returned from `unsigned short %s()' function. @item @ref{W0371} A value of long double type is returned from `signed int %s()' function. @item @ref{W0372} A value of long double type is returned from `unsigned int %s()' function. @item @ref{W0373} A value of long double type is returned from `signed long %s()' function. @item @ref{W0374} A value of long double type is returned from `unsigned long %s()' function. @item @ref{W0375} A value of float type is returned from `signed long long %s()' function. @item @ref{W0376} A value of float type is returned from `unsigned long long %s()' function. @item @ref{W0377} A value of double type is returned from `signed long long %s()' function. @item @ref{W0378} A value of double type is returned from `unsigned long long %s()' function. @item @ref{W0379} A value of long double type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0381 @section W0381 @cindex W0381 @subsection Message body A value of signed short type is returned from `signed char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim signed char func(void) { short a = 0; return a; /* W0381 */ } @end verbatim @subsection Related message @itemize @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0382 @section W0382 @cindex W0382 @subsection Message body A value of unsigned short type is returned from `unsigned char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned char func(void) { unsigned short a = 0; return a; /* W0382 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0383 @section W0383 @cindex W0383 @subsection Message body A value of signed int type is returned from `signed char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim signed char func(void) { int a = 0; return a; /* W0383 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0384 @section W0384 @cindex W0384 @subsection Message body A value of signed int type is returned from `signed short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim short func(void) { int a = 0; return a; /* W0384 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0385 @section W0385 @cindex W0385 @subsection Message body A value of unsigned int type is returned from `unsigned char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned char func(void) { unsigned int a = 0; return a; /* W0385 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0386 @section W0386 @cindex W0386 @subsection Message body A value of unsigned int type is returned from `unsigned short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned short func(void) { unsigned int a = 0; return a; /* W0386 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0387 @section W0387 @cindex W0387 @subsection Message body A value of signed long type is returned from `signed char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim signed char func(void) { long a = 0; return a; /* W0387 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0388 @section W0388 @cindex W0388 @subsection Message body A value of signed long type is returned from `signed short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim short func(void) { long a = 0; return a; /* W0388 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0389 @section W0389 @cindex W0389 @subsection Message body A value of signed long type is returned from `signed int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim int func(void) { long a = 0; return a; /* W0389 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0390 @section W0390 @cindex W0390 @subsection Message body A value of unsigned long type is returned from `unsigned char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned char func(void) { unsigned long a = 0; return a; /* W0390 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0391 @section W0391 @cindex W0391 @subsection Message body A value of unsigned long type is returned from `unsigned short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned short func(void) { unsigned long a = 0; return a; /* W0391 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0392 @section W0392 @cindex W0392 @subsection Message body A value of unsigned long type is returned from `unsigned int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int func(void) { unsigned long a = 0; return a; /* W0392 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0393 @section W0393 @cindex W0393 @subsection Message body A value of signed long long type is returned from `signed char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim signed char func(void) { long long a = 0; return a; /* W0393 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0394 @section W0394 @cindex W0394 @subsection Message body A value of signed long long type is returned from `signed short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim short func(void) { long long a = 0; return a; /* W0394 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0395 @section W0395 @cindex W0395 @subsection Message body A value of signed long long type is returned from `signed int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim int func(void) { long long a = 0; return a; /* W0395 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0396 @section W0396 @cindex W0396 @subsection Message body A value of signed long long type is returned from `signed long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long func(void) { long long a = 0; return a; /* W0396 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0397 @section W0397 @cindex W0397 @subsection Message body A value of unsigned long long type is returned from `unsigned char %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned char func(void) { unsigned long long a = 0; return a; /* W0397 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0398 @section W0398 @cindex W0398 @subsection Message body A value of unsigned long long type is returned from `unsigned short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned short func(void) { unsigned long long a = 0; return a; /* W0398 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0399 @section W0399 @cindex W0399 @subsection Message body A value of unsigned long long type is returned from `unsigned int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int func(void) { unsigned long long a = 0; return a; /* W0399 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0400} A value of unsigned long long type is returned from `unsigned long %s()' function. @end itemize @subsection Since 1.0.0 @node W0400 @section W0400 @cindex W0400 @subsection Message body A value of unsigned long long type is returned from `unsigned long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim unsigned long func(void) { unsigned long long a = 0; return a; /* W0400 */ } @end verbatim @subsection Related message @itemize @item @ref{W0381} A value of signed short type is returned from `signed char %s()' function. @item @ref{W0382} A value of unsigned short type is returned from `unsigned char %s()' function. @item @ref{W0383} A value of signed int type is returned from `signed char %s()' function. @item @ref{W0384} A value of signed int type is returned from `signed short %s()' function. @item @ref{W0385} A value of unsigned int type is returned from `unsigned char %s()' function. @item @ref{W0386} A value of unsigned int type is returned from `unsigned short %s()' function. @item @ref{W0387} A value of signed long type is returned from `signed char %s()' function. @item @ref{W0388} A value of signed long type is returned from `signed short %s()' function. @item @ref{W0389} A value of signed long type is returned from `signed int %s()' function. @item @ref{W0390} A value of unsigned long type is returned from `unsigned char %s()' function. @item @ref{W0391} A value of unsigned long type is returned from `unsigned short %s()' function. @item @ref{W0392} A value of unsigned long type is returned from `unsigned int %s()' function. @item @ref{W0393} A value of signed long long type is returned from `signed char %s()' function. @item @ref{W0394} A value of signed long long type is returned from `signed short %s()' function. @item @ref{W0395} A value of signed long long type is returned from `signed int %s()' function. @item @ref{W0396} A value of signed long long type is returned from `signed long %s()' function. @item @ref{W0397} A value of unsigned long long type is returned from `unsigned char %s()' function. @item @ref{W0398} A value of unsigned long long type is returned from `unsigned short %s()' function. @item @ref{W0399} A value of unsigned long long type is returned from `unsigned int %s()' function. @end itemize @subsection Since 1.0.0 @node W0401 @section W0401 @cindex W0401 @subsection Message body A value of unsigned char type is returned from `signed short %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim short func(void) { unsigned char a = 0; return a; /* W0401 */ } @end verbatim @subsection Related message @itemize @item @ref{W0402} A value of unsigned char type is returned from `signed int %s()' function. @item @ref{W0403} A value of unsigned char type is returned from `signed long %s()' function. @item @ref{W0404} A value of unsigned short type is returned from `signed int %s()' function. @item @ref{W0405} A value of unsigned short type is returned from `signed long %s()' function. @item @ref{W0406} A value of unsigned int type is returned from `signed long %s()' function. @item @ref{W0407} A value of unsigned char type is returned from `signed long long %s()' function. @item @ref{W0408} A value of unsigned short type is returned from `signed long long %s()' function. @item @ref{W0409} A value of unsigned int type is returned from `signed long long %s()' function. @item @ref{W0410} A value of unsigned long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0402 @section W0402 @cindex W0402 @subsection Message body A value of unsigned char type is returned from `signed int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim int func(void) { unsigned char a = 0; return a; /* W0402 */ } @end verbatim @subsection Related message @itemize @item @ref{W0401} A value of unsigned char type is returned from `signed short %s()' function. @item @ref{W0403} A value of unsigned char type is returned from `signed long %s()' function. @item @ref{W0404} A value of unsigned short type is returned from `signed int %s()' function. @item @ref{W0405} A value of unsigned short type is returned from `signed long %s()' function. @item @ref{W0406} A value of unsigned int type is returned from `signed long %s()' function. @item @ref{W0407} A value of unsigned char type is returned from `signed long long %s()' function. @item @ref{W0408} A value of unsigned short type is returned from `signed long long %s()' function. @item @ref{W0409} A value of unsigned int type is returned from `signed long long %s()' function. @item @ref{W0410} A value of unsigned long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0403 @section W0403 @cindex W0403 @subsection Message body A value of unsigned char type is returned from `signed long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long func(void) { unsigned char a = 0; return a; /* W0403 */ } @end verbatim @subsection Related message @itemize @item @ref{W0401} A value of unsigned char type is returned from `signed short %s()' function. @item @ref{W0402} A value of unsigned char type is returned from `signed int %s()' function. @item @ref{W0404} A value of unsigned short type is returned from `signed int %s()' function. @item @ref{W0405} A value of unsigned short type is returned from `signed long %s()' function. @item @ref{W0406} A value of unsigned int type is returned from `signed long %s()' function. @item @ref{W0407} A value of unsigned char type is returned from `signed long long %s()' function. @item @ref{W0408} A value of unsigned short type is returned from `signed long long %s()' function. @item @ref{W0409} A value of unsigned int type is returned from `signed long long %s()' function. @item @ref{W0410} A value of unsigned long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0404 @section W0404 @cindex W0404 @subsection Message body A value of unsigned short type is returned from `signed int %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim int func(void) { unsigned short a = 0; return a; /* W0404 */ } @end verbatim @subsection Related message @itemize @item @ref{W0401} A value of unsigned char type is returned from `signed short %s()' function. @item @ref{W0402} A value of unsigned char type is returned from `signed int %s()' function. @item @ref{W0403} A value of unsigned char type is returned from `signed long %s()' function. @item @ref{W0405} A value of unsigned short type is returned from `signed long %s()' function. @item @ref{W0406} A value of unsigned int type is returned from `signed long %s()' function. @item @ref{W0407} A value of unsigned char type is returned from `signed long long %s()' function. @item @ref{W0408} A value of unsigned short type is returned from `signed long long %s()' function. @item @ref{W0409} A value of unsigned int type is returned from `signed long long %s()' function. @item @ref{W0410} A value of unsigned long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0405 @section W0405 @cindex W0405 @subsection Message body A value of unsigned short type is returned from `signed long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long func(void) { unsigned short a = 0; return a; /* W0405 */ } @end verbatim @subsection Related message @itemize @item @ref{W0401} A value of unsigned char type is returned from `signed short %s()' function. @item @ref{W0402} A value of unsigned char type is returned from `signed int %s()' function. @item @ref{W0403} A value of unsigned char type is returned from `signed long %s()' function. @item @ref{W0404} A value of unsigned short type is returned from `signed int %s()' function. @item @ref{W0406} A value of unsigned int type is returned from `signed long %s()' function. @item @ref{W0407} A value of unsigned char type is returned from `signed long long %s()' function. @item @ref{W0408} A value of unsigned short type is returned from `signed long long %s()' function. @item @ref{W0409} A value of unsigned int type is returned from `signed long long %s()' function. @item @ref{W0410} A value of unsigned long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0406 @section W0406 @cindex W0406 @subsection Message body A value of unsigned int type is returned from `signed long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long func(void) { unsigned int a = 0; return a; /* W0406 */ } @end verbatim @subsection Related message @itemize @item @ref{W0401} A value of unsigned char type is returned from `signed short %s()' function. @item @ref{W0402} A value of unsigned char type is returned from `signed int %s()' function. @item @ref{W0403} A value of unsigned char type is returned from `signed long %s()' function. @item @ref{W0404} A value of unsigned short type is returned from `signed int %s()' function. @item @ref{W0405} A value of unsigned short type is returned from `signed long %s()' function. @item @ref{W0407} A value of unsigned char type is returned from `signed long long %s()' function. @item @ref{W0408} A value of unsigned short type is returned from `signed long long %s()' function. @item @ref{W0409} A value of unsigned int type is returned from `signed long long %s()' function. @item @ref{W0410} A value of unsigned long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0407 @section W0407 @cindex W0407 @subsection Message body A value of unsigned char type is returned from `signed long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long long func(void) { unsigned char a = 0; return a; /* W0407 */ } @end verbatim @subsection Related message @itemize @item @ref{W0401} A value of unsigned char type is returned from `signed short %s()' function. @item @ref{W0402} A value of unsigned char type is returned from `signed int %s()' function. @item @ref{W0403} A value of unsigned char type is returned from `signed long %s()' function. @item @ref{W0404} A value of unsigned short type is returned from `signed int %s()' function. @item @ref{W0405} A value of unsigned short type is returned from `signed long %s()' function. @item @ref{W0406} A value of unsigned int type is returned from `signed long %s()' function. @item @ref{W0408} A value of unsigned short type is returned from `signed long long %s()' function. @item @ref{W0409} A value of unsigned int type is returned from `signed long long %s()' function. @item @ref{W0410} A value of unsigned long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0408 @section W0408 @cindex W0408 @subsection Message body A value of unsigned short type is returned from `signed long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long long func(void) { unsigned short a = 0; return a; /* W0408 */ } @end verbatim @subsection Related message @itemize @item @ref{W0401} A value of unsigned char type is returned from `signed short %s()' function. @item @ref{W0402} A value of unsigned char type is returned from `signed int %s()' function. @item @ref{W0403} A value of unsigned char type is returned from `signed long %s()' function. @item @ref{W0404} A value of unsigned short type is returned from `signed int %s()' function. @item @ref{W0405} A value of unsigned short type is returned from `signed long %s()' function. @item @ref{W0406} A value of unsigned int type is returned from `signed long %s()' function. @item @ref{W0407} A value of unsigned char type is returned from `signed long long %s()' function. @item @ref{W0409} A value of unsigned int type is returned from `signed long long %s()' function. @item @ref{W0410} A value of unsigned long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0409 @section W0409 @cindex W0409 @subsection Message body A value of unsigned int type is returned from `signed long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long long func(void) { unsigned int a = 0; return a; /* W0409 */ } @end verbatim @subsection Related message @itemize @item @ref{W0401} A value of unsigned char type is returned from `signed short %s()' function. @item @ref{W0402} A value of unsigned char type is returned from `signed int %s()' function. @item @ref{W0403} A value of unsigned char type is returned from `signed long %s()' function. @item @ref{W0404} A value of unsigned short type is returned from `signed int %s()' function. @item @ref{W0405} A value of unsigned short type is returned from `signed long %s()' function. @item @ref{W0406} A value of unsigned int type is returned from `signed long %s()' function. @item @ref{W0407} A value of unsigned char type is returned from `signed long long %s()' function. @item @ref{W0408} A value of unsigned short type is returned from `signed long long %s()' function. @item @ref{W0410} A value of unsigned long type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0410 @section W0410 @cindex W0410 @subsection Message body A value of unsigned long type is returned from `signed long long %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim long long func(void) { unsigned long a = 0; return a; /* W0410 */ } @end verbatim @subsection Related message @itemize @item @ref{W0401} A value of unsigned char type is returned from `signed short %s()' function. @item @ref{W0402} A value of unsigned char type is returned from `signed int %s()' function. @item @ref{W0403} A value of unsigned char type is returned from `signed long %s()' function. @item @ref{W0404} A value of unsigned short type is returned from `signed int %s()' function. @item @ref{W0405} A value of unsigned short type is returned from `signed long %s()' function. @item @ref{W0406} A value of unsigned int type is returned from `signed long %s()' function. @item @ref{W0407} A value of unsigned char type is returned from `signed long long %s()' function. @item @ref{W0408} A value of unsigned short type is returned from `signed long long %s()' function. @item @ref{W0409} A value of unsigned int type is returned from `signed long long %s()' function. @end itemize @subsection Since 1.0.0 @node W0411 @section W0411 @cindex W0411 @subsection Message body The initialization of enumeration should be only the starting, whole or not at all. @subsection Content Under construction. @subsection Sample code @verbatim enum SEASON1 { /* W0411 */ SPRING, SUMMER = 4, AUTUMN = 8, WINTER }; enum SEASON2 { /* OK */ SPRING, SUMMER, AUTUMN, WINTER }; enum SEASON3 { /* OK */ SPRING = 0, SUMMER = 1, AUTUMN = 2, WINTER = 3 }; enum SEASON4 { /* OK */ SPRING = 1, SUMMER, AUTUMN, WINTER }; @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0413 @section W0413 @cindex W0413 @subsection Message body The body of control statement is unenclosed by curly brace `@{@}' block. @subsection Content Under construction. @subsection Sample code @verbatim if (x > 0) x++; /* W0413 */ @end verbatim @subsection Related message @itemize @item @ref{W0414} Body of the controlling statement in a line is not enclosed by `@{@}'. @end itemize @subsection Since 1.0.0 @node W0414 @section W0414 @cindex W0414 @subsection Message body Body of the controlling statement in a line is not enclosed by `@{@}'. @subsection Content Under construction. @subsection Sample code @verbatim if (x > 0) x++; /* W0414 */ @end verbatim @subsection Related message @itemize @item @ref{W0413} The body of control statement is unenclosed by curly brace `@{@}' block. @end itemize @subsection Since 1.0.0 @node W0421 @section W0421 @cindex W0421 @subsection Message body Value of the dereferencing pointer must be NULL. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a, int *p) { int b; if (p) { b = *p; /* OK */ } else { b = *p; /* W0421 */ } } @end verbatim @subsection Related message @itemize @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1004} NULL value is assigned to the the problematic variable. @item @ref{C1005} A value possibly be NULL is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W0422 @section W0422 @cindex W0422 @subsection Message body Value of the dereferencing pointer may be NULL. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a, int *p) { int b; if (p) { b = *p; /* OK */ } b = *p; /* W0422 */ } @end verbatim @subsection Related message @itemize @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1004} NULL value is assigned to the the problematic variable. @item @ref{C1005} A value possibly be NULL is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W0423 @section W0423 @cindex W0423 @subsection Message body Arithmetic operation is being made to the pointer which its value will be NULL. @subsection Content Under construction. @subsection Sample code @verbatim int *func(int *p) { if (p) { return p + 1; /* OK */ } else { return p + 1; /* W0423 */ } } @end verbatim @subsection Related message @itemize @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1004} NULL value is assigned to the the problematic variable. @item @ref{C1005} A value possibly be NULL is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W0424 @section W0424 @cindex W0424 @subsection Message body Arithmetic operation is being made to the pointer which its value might be NULL. @subsection Content Under construction. @subsection Sample code @verbatim int *func(int *p) { int a; if (p) { a = *(p + 1); /* OK */ } return p + 1; /* W0424 */ } @end verbatim @subsection Related message @itemize @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1004} NULL value is assigned to the the problematic variable. @item @ref{C1005} A value possibly be NULL is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W0425 @section W0425 @cindex W0425 @subsection Message body There are several definitions or statements in a line. @subsection Content Under construction. @subsection Sample code @verbatim int a, b; /* W0425 */ int a; int b; /* W0425 */ struct C { int i; } c = { 0 }; c.i = a; /* W0425 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0431 @section W0431 @cindex W0431 @subsection Message body This line begins at more left than previous lines of the same indentation level. @subsection Content Under construction. @subsection Sample code @verbatim void func() { int a; int b; /* W0431 */ a = var(); } @end verbatim @subsection Related message @itemize @item @ref{W0432} Indentation of this line does not comply with the project's indent style. @end itemize @subsection Since 1.0.0 @node W0432 @section W0432 @cindex W0432 @subsection Message body Indentation of this line does not comply with the project's indent style. @subsection Content Under construction. @subsection Sample code @verbatim void func() { int a; int b; /* W0432 */ a = var(); } @end verbatim @subsection Related message @itemize @item @ref{W0431} This line begins at more left than previous lines of the same indentation level. @end itemize @subsection Since 1.0.0 @node W0440 @section W0440 @cindex W0440 @subsection Message body An indent of this close bracket `@}' is not correspond to the open bracket `@{'. @subsection Content Under construction. @subsection Sample code @verbatim void func() { if (x == 0) { if (y == 0) { ...snip... } /* W0440 */ } /* W0440 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0441 @section W0441 @cindex W0441 @subsection Message body The type of integer literal which doesn't have a suffix is not int type. @subsection Content Under construction. @subsection Sample code @verbatim int i = 0x1234; /* W0441 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0442 @section W0442 @cindex W0442 @subsection Message body A function-like macro is defined. @subsection Content Under construction. @subsection Sample code @verbatim #define MAX(a, b) (a < b ? b : a) /* W0442 */ @end verbatim @subsection Related message @itemize @item @ref{W0443} This function-like macro might be replaced with a function. @end itemize @subsection Since 1.0.0 @node W0443 @section W0443 @cindex W0443 @subsection Message body This function-like macro might be replaced with a function. @subsection Content Under construction. @subsection Sample code @verbatim #define MACRO(a, b) (a * b) /* W0443 */ @end verbatim @subsection Related message @itemize @item @ref{W0442} A function-like macro is defined. @end itemize @subsection Since 1.0.0 @node W0444 @section W0444 @cindex W0444 @subsection Message body `#'operator and `##'operator is used in a macro definition. @subsection Content Under construction. @subsection Sample code @verbatim #define MACRO(a) L ## #a /* W0444 */ @end verbatim @subsection Related message @itemize @item @ref{W0445} Multiple `##'operator is used in a macro definition. @end itemize @subsection Since 1.0.0 @node W0445 @section W0445 @cindex W0445 @subsection Message body Multiple `##'operator is used in a macro definition. @subsection Content Under construction. @subsection Sample code @verbatim #define MACRO(prefix, name, suffix) int i = prefix##name##suffix /* W0445 */ @end verbatim @subsection Related message @itemize @item @ref{W0444} `#'operator and `##'operator is used in a macro definition. @end itemize @subsection Since 1.0.0 @node W0446 @section W0446 @cindex W0446 @subsection Message body The result value of assignment operation is used. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { int a; int b; a = b += 3; /* W0446 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0447 @section W0447 @cindex W0447 @subsection Message body A comma operator is used except 'for' statement. @subsection Content Under construction. @subsection Sample code @verbatim int a = 1; int b = 0; int c = (b = a, a); /* W0447 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0456 @section W0456 @cindex W0456 @subsection Message body An object or a function `%s which has external coupling is defined in a header file. @subsection Content Under construction. @subsection Sample code @file{test.h} @verbatim int num = 1; /* W0456 */ int func(void) /* W0456 */ { return num; } @end verbatim @file{test.c} @verbatim #include "test.h" @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0457 @section W0457 @cindex W0457 @subsection Message body The return value doesn't define explicitly in the function declaration or definition. It defined as 'int' implicitly. @subsection Content Under construction. @subsection Sample code @verbatim func1(void); /* W0457 */ func2(void) /* W0457 */ { return 0; } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0458 @section W0458 @cindex W0458 @subsection Message body The type doesn't define explicitly in the object declaration or definition. It defined as 'int' implicitly. @subsection Content Under construction. @subsection Sample code @verbatim a; /* W0458 */ b = 0; /* W0458 */ extern c; /* W0458 */ static d; /* W0458 */ int func(e) /* W0458 */ { const f = e; /* W0458 */ return f; } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0459 @section W0459 @cindex W0459 @subsection Message body A value of variable `%s' doesn't set when this expression is evaluated. This program is danger. @subsection Content Under construction. @subsection Sample code @verbatim int a; if(a > 0) { /* W0459 */ } @end verbatim @subsection Related message @itemize @item @ref{W0460} A value of variable `%s' wouldn't set when this expression is evaluated. @item @ref{W0461} A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger. @item @ref{W0462} A pointer which the value will probably not set is used for the actual argument of the function. @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1003} The problematic variable is defined here without initializer. @end itemize @subsection Since 1.0.0 @node W0460 @section W0460 @cindex W0460 @subsection Message body A value of variable `%s' wouldn't set when this expression is evaluated. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a) { int b; if (a == 0) { b = 1; } if (b > 0) { /* W0460 */ } } @end verbatim @subsection Related message @itemize @item @ref{W0459} A value of variable `%s' doesn't set when this expression is evaluated. This program is danger. @item @ref{W0461} A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger. @item @ref{W0462} A pointer which the value will probably not set is used for the actual argument of the function. @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1003} The problematic variable is defined here without initializer. @end itemize @subsection Since 1.0.0 @node W0461 @section W0461 @subsection Message body A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger. @subsection Content Under construction. @subsection Sample code @verbatim extern int func1(const int *); void func2(int a) { int b; func1(&a); /* OK */ func1(&b); /* W0461 */ } @end verbatim @subsection Related message @itemize @item @ref{W0459} A value of variable `%s' doesn't set when this expression is evaluated. This program is danger. @item @ref{W0460} A value of variable `%s' wouldn't set when this expression is evaluated. @item @ref{W0462} A pointer which the value will probably not set is used for the actual argument of the function. @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1003} The problematic variable is defined here without initializer. @end itemize @subsection Since 1.0.0 @node W0462 @section W0462 @cindex W0462 @subsection Message body A pointer which the value will probably not set is used for the actual argument of the function. @subsection Content Under construction. @subsection Sample code @verbatim extern int func1(const int *); int func2(int a) { int b; if (a > 10) { b = a + 10; } func1(&b); /* W0462 */ } @end verbatim @subsection Related message @itemize @item @ref{W0459} A value of variable `%s' doesn't set when this expression is evaluated. This program is danger. @item @ref{W0460} A value of variable `%s' wouldn't set when this expression is evaluated. @item @ref{W0461} A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger. @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1003} The problematic variable is defined here without initializer. @end itemize @subsection Since 1.0.0 @node W0477 @section W0477 @cindex W0477 @subsection Message body There are unpaired `[]',`()',`@{@}' in macro definition. @subsection Content Under construction. @subsection Sample code @verbatim #define BEGIN { /* W0477 */ #define END } /* W0477 */ void func() BEGIN ...snip... END @end verbatim @subsection Related message @itemize @item @ref{W0478} This macro defines scraps of unrecognized codes. @item @ref{W0479} This macro definition might be replaced with 'typedef' declaration. @item @ref{W0480} This macro defines keyword of control statement or punctuator. @item @ref{W0481} This macro defines the block around by `@{@}'. @item @ref{W0482} This macro defines either type specifier. @item @ref{W0483} This macro defines the pair of storage class specifier and type specifier. @end itemize @subsection Since 1.0.0 @node W0478 @section W0478 @cindex W0478 @subsection Message body This macro defines scraps of unrecognized codes. @subsection Content Under construction. @subsection Sample code @verbatim #define MALLOC_OR_DIE(ptr, size) ptr = malloc(size); if (!ptr) exit(1); /* W0478 */ @end verbatim @subsection Related message @itemize @item @ref{W0477} There are unpaired `[]',`()',`@{@}' in macro definition. @item @ref{W0479} This macro definition might be replaced with 'typedef' declaration. @item @ref{W0480} This macro defines keyword of control statement or punctuator. @item @ref{W0481} This macro defines the block around by `@{@}'. @item @ref{W0482} This macro defines either type specifier. @item @ref{W0483} This macro defines the pair of storage class specifier and type specifier. @end itemize @subsection Since 1.0.0 @node W0479 @section W0479 @cindex W0479 @subsection Message body This macro definition might be replaced with 'typedef' declaration. @subsection Content Under construction. @subsection Sample code @verbatim #define foo unsigned int /* W0479 */ @end verbatim @subsection Related message @itemize @item @ref{W0477} There are unpaired `[]',`()',`@{@}' in macro definition. @item @ref{W0478} This macro defines scraps of unrecognized codes. @item @ref{W0480} This macro defines keyword of control statement or punctuator. @item @ref{W0481} This macro defines the block around by `@{@}'. @item @ref{W0482} This macro defines either type specifier. @item @ref{W0483} This macro defines the pair of storage class specifier and type specifier. @end itemize @subsection Since 1.0.0 @node W0480 @section W0480 @cindex W0480 @subsection Message body This macro defines keyword of control statement or punctuator. @subsection Content Under construction. @subsection Sample code @verbatim #define PLUS + /* W0480 */ #define LOOP while /* W0480 */ @end verbatim @subsection Related message @itemize @item @ref{W0477} There are unpaired `[]',`()',`@{@}' in macro definition. @item @ref{W0478} This macro defines scraps of unrecognized codes. @item @ref{W0479} This macro definition might be replaced with 'typedef' declaration. @item @ref{W0481} This macro defines the block around by `@{@}'. @item @ref{W0482} This macro defines either type specifier. @item @ref{W0483} This macro defines the pair of storage class specifier and type specifier. @end itemize @subsection Since 1.0.0 @node W0481 @section W0481 @cindex W0481 @subsection Message body This macro defines the block around by `@{@}'. @subsection Content Under construction. @subsection Sample code @verbatim #define SETUP(a, b) /* W0481 */ \ { \ if (a) \ b = 0; \ else \ b = 1; \ } @end verbatim @subsection Related message @itemize @item @ref{W0477} There are unpaired `[]',`()',`@{@}' in macro definition. @item @ref{W0478} This macro defines scraps of unrecognized codes. @item @ref{W0479} This macro definition might be replaced with 'typedef' declaration. @item @ref{W0480} This macro defines keyword of control statement or punctuator. @item @ref{W0482} This macro defines either type specifier. @item @ref{W0483} This macro defines the pair of storage class specifier and type specifier. @end itemize @subsection Since 1.0.0 @node W0482 @section W0482 @cindex W0482 @subsection Message body This macro defines either type specifier. @subsection Content Under construction. @subsection Sample code @verbatim #define COMPOSITE struct /* W0482 */ @end verbatim @subsection Related message @itemize @item @ref{W0477} There are unpaired `[]',`()',`@{@}' in macro definition. @item @ref{W0478} This macro defines scraps of unrecognized codes. @item @ref{W0479} This macro definition might be replaced with 'typedef' declaration. @item @ref{W0480} This macro defines keyword of control statement or punctuator. @item @ref{W0481} This macro defines the block around by `@{@}'. @item @ref{W0483} This macro defines the pair of storage class specifier and type specifier. @end itemize @subsection Since 1.0.0 @node W0483 @section W0483 @cindex W0483 @subsection Message body This macro defines the pair of storage class specifier and type specifier. @subsection Content Under construction. @subsection Sample code @verbatim #define PRIVATE_FINAL static const /* W0483 */ @end verbatim @subsection Related message @itemize @item @ref{W0477} There are unpaired `[]',`()',`@{@}' in macro definition. @item @ref{W0478} This macro defines scraps of unrecognized codes. @item @ref{W0479} This macro definition might be replaced with 'typedef' declaration. @item @ref{W0480} This macro defines keyword of control statement or punctuator. @item @ref{W0481} This macro defines the block around by `@{@}'. @item @ref{W0482} This macro defines either type specifier. @end itemize @subsection Since 1.0.0 @node W0488 @section W0488 @cindex W0488 @subsection Message body A function call `()', array's index operation `[]', or structure/union operation `->' or `.' are used with && or ||. It had better clear the coupling by using `()'. @subsection Content Under construction. @subsection Sample code @verbatim while (func(&a, &b) < 0 && i > 0) { /* W0488 */ ...snip... } @end verbatim @subsection Related message @itemize @item @ref{W0489} A monadic operator is used with `&&' or `||'. It had better clear the coupling by using `()'. @item @ref{W0490} A binary operator is used with `&&' or `||'. It had better clear the coupling by using `()'. @end itemize @subsection Since 1.0.0 @node W0489 @section W0489 @cindex W0489 @subsection Message body A monadic operator is used with `&&' or `||'. It had better clear the coupling by using `()'. @subsection Content Under construction. @subsection Sample code @verbatim void func(unsigned int a, unsigned int b) { unsigned int c = !a && b; /* W0489 */ } @end verbatim @subsection Related message @itemize @item @ref{W0488} A function call `()', array's index operation `[]', or structure/union operation `->' or `.' are used with && or ||. It had better clear the coupling by using `()'. @item @ref{W0490} A binary operator is used with `&&' or `||'. It had better clear the coupling by using `()'. @end itemize @subsection Since 1.0.0 @node W0490 @section W0490 @cindex W0490 @subsection Message body A binary operator is used with `&&' or `||'. It had better clear the coupling by using `()'. @subsection Content Under construction. @subsection Sample code @verbatim void func(unsigned int a, unsigned int b, unsigned int c) { unsigned int d = a && b || c; /* W0490 */ } @end verbatim @subsection Related message @itemize @item @ref{W0488} A function call `()', array's index operation `[]', or structure/union operation `->' or `.' are used with && or ||. It had better clear the coupling by using `()'. @item @ref{W0489} A monadic operator is used with `&&' or `||'. It had better clear the coupling by using `()'. @end itemize @subsection Since 1.0.0 @node W0491 @section W0491 @cindex W0491 @subsection Message body The same identifier name `%s' is also used in the declaration of other namespace. @subsection Content Under construction. @subsection Sample code @verbatim extern int foo; struct foo { /* W0491 */ int a; int b; }; @end verbatim @subsection Related message @itemize @item @ref{W0492} The same identifier name `%s' is also used in the member of structure/union, label, tag or normal identifier. @end itemize @subsection Since 1.0.0 @node W0492 @section W0492 @cindex W0492 @subsection Message body The same identifier name `%s' is also used in the member of structure/union, label, tag or normal identifier. @subsection Content Under construction. @subsection Sample code @verbatim extern int foo; struct a { int foo; /* W0492 */ int b; }; void func(void) { struct a a; int b; /* W0492 */ } @end verbatim @subsection Related message @itemize @item @ref{W0491} The same identifier name `%s' is also used in the declaration of other namespace. @end itemize @subsection Since 1.0.0 @node W0493 @section W0493 @cindex W0493 @subsection Message body The value of structure or union is passed as the actual argument of the function. @subsection Content Under construction. @subsection Sample code @verbatim struct STR { long a; long b; }; extern int foo(struct STR s); void func(void) { struct STR s = { 0 }; foo(s); /* W0493 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0495 @section W0495 @cindex W0495 @subsection Message body operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a, int b, int c) { int x = a % b * c; /* W0495 */ } @end verbatim @subsection Related message @itemize @item @ref{W0496} A ternary operator is used several times. It had better clear the coupling by using `()'. @item @ref{W0497} Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'. @item @ref{W0498} The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0499} The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0500} The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0501} A ternary operator is used with binary operator. It had better clear the coupling by using `()'. @item @ref{W0502} A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping. @end itemize @subsection Since 1.0.0 @node W0496 @section W0496 @cindex W0496 @subsection Message body A ternary operator is used several times. It had better clear the coupling by using `()'. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a, int b, int c, int d, int e) { int f = a ? b : c ? d : e; /* W0496 */ } @end verbatim @subsection Related message @itemize @item @ref{W0495} operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'. @item @ref{W0497} Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'. @item @ref{W0498} The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0499} The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0500} The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0501} A ternary operator is used with binary operator. It had better clear the coupling by using `()'. @item @ref{W0502} A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping. @end itemize @subsection Since 1.0.0 @node W0497 @section W0497 @cindex W0497 @subsection Message body Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a, int b, int c) { int d = a << b << c; /* W0497 */ } @end verbatim @subsection Related message @itemize @item @ref{W0495} operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'. @item @ref{W0496} A ternary operator is used several times. It had better clear the coupling by using `()'. @item @ref{W0498} The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0499} The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0500} The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0501} A ternary operator is used with binary operator. It had better clear the coupling by using `()'. @item @ref{W0502} A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping. @end itemize @subsection Since 1.0.0 @node W0498 @section W0498 @cindex W0498 @subsection Message body The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a, int b, int c) { int d = a - b + c; /* W0498 */ } @end verbatim @subsection Related message @itemize @item @ref{W0495} operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'. @item @ref{W0496} A ternary operator is used several times. It had better clear the coupling by using `()'. @item @ref{W0497} Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'. @item @ref{W0499} The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0500} The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0501} A ternary operator is used with binary operator. It had better clear the coupling by using `()'. @item @ref{W0502} A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping. @end itemize @subsection Since 1.0.0 @node W0499 @section W0499 @cindex W0499 @subsection Message body The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a, int b, int c) { int d = a << b >> c; /* W0499 */ } @end verbatim @subsection Related message @itemize @item @ref{W0495} operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'. @item @ref{W0496} A ternary operator is used several times. It had better clear the coupling by using `()'. @item @ref{W0497} Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'. @item @ref{W0498} The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0500} The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0501} A ternary operator is used with binary operator. It had better clear the coupling by using `()'. @item @ref{W0502} A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping. @end itemize @subsection Since 1.0.0 @node W0500 @section W0500 @cindex W0500 @subsection Message body The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a, int b, int c) { int d = a * b + c; /* W0500 */ } @end verbatim @subsection Related message @itemize @item @ref{W0495} operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'. @item @ref{W0496} A ternary operator is used several times. It had better clear the coupling by using `()'. @item @ref{W0497} Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'. @item @ref{W0498} The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0499} The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0501} A ternary operator is used with binary operator. It had better clear the coupling by using `()'. @item @ref{W0502} A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping. @end itemize @subsection Since 1.0.0 @node W0501 @section W0501 @cindex W0501 @subsection Message body A ternary operator is used with binary operator. It had better clear the coupling by using `()'. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a, int b, int c) { int d = a ? a : a + c; /* W0501 */ } @end verbatim @subsection Related message @itemize @item @ref{W0495} operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'. @item @ref{W0496} A ternary operator is used several times. It had better clear the coupling by using `()'. @item @ref{W0497} Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'. @item @ref{W0498} The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0499} The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0500} The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0502} A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping. @end itemize @subsection Since 1.0.0 @node W0502 @section W0502 @cindex W0502 @subsection Message body A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a, int b, int c) { int d = a != b << c; /* W0502 */ } @end verbatim @subsection Related message @itemize @item @ref{W0495} operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'. @item @ref{W0496} A ternary operator is used several times. It had better clear the coupling by using `()'. @item @ref{W0497} Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'. @item @ref{W0498} The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0499} The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0500} The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'. @item @ref{W0501} A ternary operator is used with binary operator. It had better clear the coupling by using `()'. @end itemize @subsection Since 1.0.0 @node W0508 @section W0508 @cindex W0508 @subsection Message body There's a side effect at the right operand of `&&' or `||'operator. @subsection Content Under construction. @subsection Sample code @verbatim if ((a == b) && ((c = func()) == d)) /* W0508 */ @end verbatim if @code{a==b} is true, the return value of @code{func()} is substituted for the @code{c}. @subsection Related message None. @subsection Since 1.0.0 @node W0511 @section W0511 @cindex W0511 @subsection Message body C++ style comment of `//' is used. @subsection Content Under construction. @subsection Sample code @verbatim // W0511 @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0512 @section W0512 @cindex W0512 @subsection Message body The result of `++' or `--' operator is used in the statement. @subsection Content Under construction. @subsection Sample code @verbatim a = b++ + --c + d++; /* W0512 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0525 @section W0525 @cindex W0525 @subsection Message body A field named 1bit is declared by signed type. @subsection Content Under construction. @subsection Sample code @verbatim struct ST { int bit:1; /* W0525 */ }; @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0528 @section W0528 @cindex W0528 @subsection Message body This macro defines octal constant value. @subsection Content Under construction. @subsection Sample code @verbatim #define MACRO 0123 /* W0528 */ @end verbatim @subsection Related message @itemize @item @ref{W0529} An octal literal is used. @item @ref{W0530} An octal escape sequence is used in a character constant or a string literal. @end itemize @subsection Since 1.0.0 @node W0529 @section W0529 @cindex W0529 @subsection Message body An octal literal is used. @subsection Content Under construction. @subsection Sample code @verbatim #define MACRO 0123 int a = 0123; /* W0529 */ int b = MACRO; /* W0529 */ @end verbatim @subsection Related message @itemize @item @ref{W0528} This macro defines octal constant value. @item @ref{W0530} An octal escape sequence is used in a character constant or a string literal. @end itemize @subsection Since 1.0.0 @node W0530 @section W0530 @cindex W0530 @subsection Message body An octal escape sequence is used in a character constant or a string literal. @subsection Content Under construction. @subsection Sample code @verbatim char *s = "\012"; /* W0530 */ @end verbatim @subsection Related message @itemize @item @ref{W0528} This macro defines octal constant value. @item @ref{W0529} An octal literal is used. @end itemize @subsection Since 1.0.0 @node W0532 @section W0532 @cindex W0532 @subsection Message body 'break' statement is used to exits 'case' or 'default' section, but it's not described at the end of 'case' section. @subsection Content Under construction. @subsection Sample code @verbatim switch (x) { case 1: if (y == 0) { break; /* W0532 */ } ...snip... break; case 2: ...snip... break; } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0534 @section W0534 @cindex W0534 @subsection Message body A control variable `%s' is not initialized in this 'for' statement. @subsection Content Under construction. @subsection Sample code @verbatim int i = 0; int j; for (; i < 10; i++) { /* W0534 */ } for (j = 0; i < 20; i++) { /* W0534 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0535 @section W0535 @cindex W0535 @subsection Message body A comma operator is used in a 'for' statement. @subsection Content Under construction. @subsection Sample code @verbatim int i, j, k = 0; for (i = 0, j = 0; i < 10; i++, j++, k--) { /* W0535 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0538 @section W0538 @cindex W0538 @subsection Message body This 'default' label is not final label in this 'switch' statement. @subsection Content Under construction. @subsection Sample code @verbatim switch (x) { default: /* W0538 */ ...snip... case 1: ...snip... } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0540 @section W0540 @cindex W0540 @subsection Message body A function which the blank formal argument list is declared. `void' is omitted. @subsection Content Under construction. @subsection Sample code @verbatim void func() /* W0540 */ { ...snip... } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0541 @section W0541 @cindex W0541 @subsection Message body Inline assembly code should be encapsulated by macro. @subsection Content Under construction. @subsection Sample code @verbatim #define ASM_CODE asm("movl %ecx, %eax") void foo(int arg1, int *arg2, int arg3) { asm("movl %ecx, %eax"); /* W0541 */ __asm__("movl %ecx, (%eax)"); /* W0541 */ asm { /* W0541 */ xorl eax, eax } ASM_CODE; /* OK */ __asm__ volatile ( /* W0541 */ "int $0x80" : "=a" (r) "+b" (arg1), "+c" (arg2), "+d" (arg3) : "a" (128) : "memory", "cc"); } @end verbatim @subsection Related message None. @subsection Since 1.6.0 @node W0542 @section W0542 @cindex W0542 @subsection Message body There are identifiers in the part of formal argument in a function declaration. @subsection Content Under construction. @subsection Sample code @verbatim void func(int i, char, int, char c); /* W0542 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0543 @section W0543 @cindex W0543 @subsection Message body The identifier of formal argument in this function declaration is different from the past declaration of it. @subsection Content Under construction. @subsection Sample code @verbatim void func(int i1, int i2); void func(int i2, int i1) /* W0543 */ { ...snip... } @end verbatim @subsection Related message @itemize @item @ref{W0544} The identifier of formal argument in the function declaration is different from the declaration of function pointer. @end itemize @subsection Since 1.0.0 @node W0544 @section W0544 @cindex W0544 @subsection Message body The identifier of formal argument in the function declaration is different from the declaration of function pointer. @subsection Content Under construction. @subsection Sample code @verbatim void func(int i1, int i2); void (*p)(int i2, int i1) = &func; /* W0544 */ @end verbatim @subsection Related message @itemize @item @ref{W0543} The identifier of formal argument in this function declaration is different from the past declaration of it. @end itemize @subsection Since 1.0.0 @node W0546 @section W0546 @cindex W0546 @subsection Message body There is 'case' or 'default' label of switch statement in a nested block. @subsection Content Under construction. @subsection Sample code @verbatim switch (x) { case 1: if (y > 0) { case 2: /* W0546 */ break; } ...snip... break; default: ...snip... } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0549 @section W0549 @cindex W0549 @subsection Message body A formal argument of macro doesn't enclosed by `()'. @subsection Content Under construction. @subsection Sample code @verbatim #define ADD(a, b) a + b /* W0549 */ int x = 3 * ADD(1, 2); @end verbatim @code{(3 * 1) + 2 = 5} is substituted for the @code{x} instead of @code{3 * (1 + 2) = 9}. @subsection Related message None. @subsection Since 1.0.0 @node W0551 @section W0551 @cindex W0551 @subsection Message body An union type specifier is defined. @subsection Content Under construction. @subsection Sample code @verbatim union UNI { /* W0551 */ int a; short b; long c; }; @end verbatim @subsection Related message @itemize @item @ref{W0552} An union type object is defined. @end itemize @subsection Since 1.0.0 @node W0552 @section W0552 @cindex W0552 @subsection Message body An union type object is defined. @subsection Content Under construction. @subsection Sample code @verbatim union UNI { int a; short b; long c; }; union UNI u; /* W0552 */ @end verbatim @subsection Related message @itemize @item @ref{W0551} An union type specifier is defined. @end itemize @subsection Since 1.0.0 @node W0553 @section W0553 @cindex W0553 @subsection Message body A pointer points to the function cast to other function pointer type. @subsection Content Under construction. @subsection Sample code @verbatim extern int func(void); void (*p)(int) = (void (*)(int)) &func; /* W0553 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0554 @section W0554 @cindex W0554 @subsection Message body An actual argument `%s' in `#pragma' is unrecognized. This `#pragma' command will be ignored. @subsection Content Under construction. @subsection Sample code @verbatim #pragma SystemSpecificPragmaName 5 /* W0544 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0555 @section W0555 @cindex W0555 @subsection Message body This function is called recursive with indirectly. @subsection Content Under construction. @subsection Sample code @file{test1.c} @verbatim int func1(int i) /* W0555 */ { if (i < 10) { return i + 1; } else { return func3(i); } } @end verbatim @file{test2.c} @verbatim int func2(int i) /* W0555 */ { return func1(i) + 2; } @end verbatim @file{test3.c} @verbatim int func3(int i) /* W0555 */ { return func2(i) + 3; } @end verbatim @subsection Related message @itemize @item @ref{W0556} The function which includes this call is called recursively. @end itemize @subsection Since 1.0.0 @node W0556 @section W0556 @cindex W0556 @subsection Message body The function which includes this call is called recursively. @subsection Content Under construction. @subsection Sample code @verbatim int func(int i) { if (i == 0) { return 0; } else { return func(i - 1); /* W0556 */ } } @end verbatim @subsection Related message @itemize @item @ref{W0555} This function is called recursive with indirectly. @end itemize @subsection Since 1.0.0 @node W0559 @section W0559 @cindex W0559 @subsection Message body The operand of `!' operator is the expression of bit operation or arithmetic operation. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a, int b) { if (!(a || b)) { return 0; } else { return !(a & b); /* W0559 */ } } @end verbatim @subsection Related message @itemize @item @ref{W0559} The operand of `!' operator is the expression of bit operation or arithmetic operation. @end itemize @subsection Since 1.0.0 @node W0560 @section W0560 @cindex W0560 @subsection Message body The operand of `~' operator is boolean type expression. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a, int b) { return ~((a < b) && (b > 0)); /* W0560 */ } @end verbatim @subsection Related message @itemize @item @ref{W0560} The operand of `~' operator is boolean type expression. @end itemize @subsection Since 1.0.0 @node W0561 @section W0561 @cindex W0561 @subsection Message body The meaning of `*p++' is `*(p++)'. It is not `(*p)++'. `*' operator is verbose. @subsection Content Under construction. @subsection Sample code @verbatim *p++; /* W0561 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0562 @section W0562 @cindex W0562 @subsection Message body There are verbose `@{@}' in the initializer. @subsection Content Under construction. @subsection Sample code @verbatim int ng[3][2] = { { {1, 2}, { 3, 4}, { 5, 6 } } }; /* W0562 */ int ok[3][2] = { { 1, 2 }, { 3, 4 }, { 5, 6 } }; /* OK */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0563 @section W0563 @cindex W0563 @subsection Message body If it jumps from outside of this block to `%s' label,the local variable will not be initialized. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a, int b) { if (a == 0) { if (b != 0) { goto ERR; } } else { int c = 0; ERR: /* W0563 */ b = c; } } @end verbatim @subsection Related message @itemize @item @ref{W0564} If this 'goto' statement jumps to `%s' label,local variable will not be initialized. @end itemize @subsection Since 1.0.0 @node W0564 @section W0564 @cindex W0564 @subsection Message body If this 'goto' statement jumps to `%s' label,local variable will not be initialized. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a, int b) { if (a == 0) { int c = 0; RETRY: b = c; } if (b != 0) { goto RETRY; /* W0564 */ } } @end verbatim @subsection Related message @itemize @item @ref{W0563} If it jumps from outside of this block to `%s' label,the local variable will not be initialized. @end itemize @subsection Since 1.0.0 @node W0565 @section W0565 @cindex W0565 @subsection Message body A volatile integer type cast to volatile pointer type and vice versa. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int a = 0xFFFFU; volatile unsigned int *b = (volatile unsigned int *) a; /* W0565 */ unsigned int c = (unsigned int) b; /* W0565 */ @end verbatim @subsection Related message @itemize @item @ref{W0566} A volatile integer type cast to function pointer type and vice versa. @item @ref{W0567} A volatile integer type cast to pointer to object and vice versa. @end itemize @subsection Since 1.0.0 @node W0566 @section W0566 @cindex W0566 @subsection Message body A volatile integer type cast to function pointer type and vice versa. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int addr = 0xFFFFFFFFU; void (*p)(int, long) = (void (*)(int, long)) addr; /* W0566 */ int i = (int) p; /* W0566 */ @end verbatim @subsection Related message @itemize @item @ref{W0565} A volatile integer type cast to volatile pointer type and vice versa. @item @ref{W0567} A volatile integer type cast to pointer to object and vice versa. @end itemize @subsection Since 1.0.0 @node W0567 @section W0567 @cindex W0567 @subsection Message body A volatile integer type cast to pointer to object and vice versa. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int addr = 0xFFFFFFFFU; void (*p)(int, long) = (void (*)(int, long)) addr; /* W0567 */ int i = (int) p; /* W0567 */ @end verbatim @subsection Related message @itemize @item @ref{W0565} A volatile integer type cast to volatile pointer type and vice versa. @item @ref{W0566} A volatile integer type cast to function pointer type and vice versa. @end itemize @subsection Since 1.0.0 @node W0568 @section W0568 @cindex W0568 @subsection Message body The result of left shift operation against the signed constant expression value is undefined. @subsection Content Under construction. @subsection Sample code @verbatim int a = 0x7FFFFFFF << 1; /* W0568 */ int b = -5 << 1; /* W0568 */ @end verbatim @subsection Related message @itemize @item @ref{W0569} The result of left shift operation against the signed expression value is undefined. @item @ref{W0570} This signed left shift operation may make undefined value. @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W0569 @section W0569 @cindex W0569 @subsection Message body The result of left shift operation against the signed expression value is undefined. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a) { if (a >= 0x40000000) { return a << 1; /* W0569 */ } if (a < 0) { return a << 1; /* W0569 */ } return a << 1; } @end verbatim @subsection Related message @itemize @item @ref{W0568} The result of left shift operation against the signed constant expression value is undefined. @item @ref{W0570} This signed left shift operation may make undefined value. @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W0570 @section W0570 @cindex W0570 @subsection Message body This signed left shift operation may make undefined value. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a) { if (a >= 0x10000000) { return a << 1; /* W0570 */ } if (a < 10) { return a << 1; /* W0570 */ } return a << 1; } @end verbatim @subsection Related message @itemize @item @ref{W0568} The result of left shift operation against the signed constant expression value is undefined. @item @ref{W0569} The result of left shift operation against the signed expression value is undefined. @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W0571 @section W0571 @cindex W0571 @subsection Message body The result of right shift operation against the signed data is a possibility the both logical shift and arithmetic shift by implementation. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a) { return a >> 3; /* W0571 */ } @end verbatim @subsection Related message @itemize @item @ref{W0572} Bitwise operation of signed value causes implementation-defined behavior. @end itemize @subsection Since 1.0.0 @node W0572 @section W0572 @cindex W0572 @subsection Message body Bitwise operation of signed value causes implementation-defined behavior. @subsection Content Under construction. @subsection Sample code @verbatim void func(short a) { short b; b = a >> 8; /* W0572 */ b <<= 1; /* W0572 */ b = a & 15; /* W0572 */ b = a | 15; /* W0572 */ b = a ^ 15; /* W0572 */ b = ~a; /* W0572 */ } @end verbatim @subsection Related message @itemize @item @ref{W0571} The result of right shift operation against the signed data is a possibility the both logical shift and arithmetic shift by implementation. @end itemize @subsection Since 1.0.0 @node W0573 @section W0573 @cindex W0573 @subsection Message body A `-' character in scanset in `[]' is implementation defined. @subsection Content Under construction. @subsection Sample code @verbatim char c; scanf("%[a-z]", &c); /* W0573 */ @end verbatim @subsection Related message None. @subsection Since 1.6.0 @node W0574 @section W0574 @cindex W0574 @subsection Message body The character except for basic source character is used in the character constant. @subsection Content Under construction. @subsection Sample code @verbatim const char c = '$'; /* W0574 */ @end verbatim @subsection Related message @itemize @item @ref{W0575} The character except for basic source character is used in the string literal. @item @ref{W0576} The character except for basic source character is used in the comment of source file `%s'. @item @ref{W0577} The character except for basic source character is used in preprocessing directive of source file `%s'. @end itemize @subsection Since 1.0.0 @node W0575 @section W0575 @cindex W0575 @subsection Message body The character except for basic source character is used in the string literal. @subsection Content Under construction. @subsection Sample code @verbatim const char *str = "@$"; /* W0575 */ @end verbatim @subsection Related message @itemize @item @ref{W0574} The character except for basic source character is used in the character constant. @item @ref{W0576} The character except for basic source character is used in the comment of source file `%s'. @item @ref{W0577} The character except for basic source character is used in preprocessing directive of source file `%s'. @end itemize @subsection Since 1.0.0 @node W0576 @section W0576 @cindex W0576 @subsection Message body The character except for basic source character is used in the comment of source file `%s'. @subsection Content Under construction. @subsection Sample code @verbatim /* $ W0576 */ @end verbatim @subsection Related message @itemize @item @ref{W0574} The character except for basic source character is used in the character constant. @item @ref{W0575} The character except for basic source character is used in the string literal. @item @ref{W0577} The character except for basic source character is used in preprocessing directive of source file `%s'. @end itemize @subsection Since 1.0.0 @node W0577 @section W0577 @cindex W0577 @subsection Message body The character except for basic source character is used in preprocessing directive of source file `%s'. @subsection Content Under construction. @subsection Sample code @verbatim #define MACRO $ /* W0577 */ @end verbatim @subsection Related message @itemize @item @ref{W0574} The character except for basic source character is used in the character constant. @item @ref{W0575} The character except for basic source character is used in the string literal. @item @ref{W0576} The character except for basic source character is used in the comment of source file `%s'. @end itemize @subsection Since 1.0.0 @node W0578 @section W0578 @cindex W0578 @subsection Message body A generic integer value of the compound expression typed `%s' is implicitly converted into a new value of bigger type `%s'. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a) { long b = a * a; /* W0578 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0579 @section W0579 @cindex W0579 @subsection Message body A generic integer value of the compound expression typed `%s' is explicitly converted into a new value of bigger type `%s'. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a) { long b = (long) (a * a); /* W0579 */ } @end verbatim @subsection Related message None. @subsection Since 1.6.0 @node W0580 @section W0580 @cindex W0580 @subsection Message body An address of local static variable is substituted for a pointer which has a wider scope. @subsection Content Under construction. @subsection Sample code @verbatim int *p; void func(void) { static int i = 0; p = &i; /* W0580 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0581 @section W0581 @cindex W0581 @subsection Message body The number or type of actual argument is different from the past. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a, short b, long c) { switch (a) { case 0: return foo(a, b, c); case 1: return foo(a, c, b); /* W0581 */ default: return foo(b, c); /* W0581 */ } } @end verbatim @subsection Related message @itemize @item @ref{W0582} The number or type of actual argument is different from the function prototype declaration at the following. @item @ref{W0583} The number or type of actual argument is different from the function declaration at the following. @item @ref{W0584} The type of %s actual argument is different from the type of formal argument in function definition. @end itemize @subsection Since 1.0.0 @node W0582 @section W0582 @cindex W0582 @subsection Message body The number or type of actual argument is different from the function prototype declaration at the following. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a, short b, long c) { switch (a) { case 0: return foo(a, b, c); case 1: return foo(a, c, b); /* W0582 */ default: return foo(b, c); /* W0582 */ } } extern int foo(int, short, long); @end verbatim @subsection Related message @itemize @item @ref{W0581} The number or type of actual argument is different from the past. @item @ref{W0583} The number or type of actual argument is different from the function declaration at the following. @item @ref{W0584} The type of %s actual argument is different from the type of formal argument in function definition. @end itemize @subsection Since 1.0.0 @node W0583 @section W0583 @cindex W0583 @subsection Message body The number or type of actual argument is different from the function declaration at the following. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a, short b, long c) { switch (a) { case 0: return foo(a, b, c); case 1: return foo(a, c, b); /* W0583 */ default: return foo(b, c); /* W0583 */ } } int foo(int a, short b, long c) { return a + b + c; } @end verbatim @subsection Related message @itemize @item @ref{W0581} The number or type of actual argument is different from the past. @item @ref{W0582} The number or type of actual argument is different from the function prototype declaration at the following. @item @ref{W0584} The type of %s actual argument is different from the type of formal argument in function definition. @end itemize @subsection Since 1.0.0 @node W0584 @section W0584 @cindex W0584 @subsection Message body The type of %s actual argument is different from the type of formal argument in function definition. @subsection Content Under construction. @subsection Sample code @verbatim extern void func1(a, b) long a; double b; { ...snip... } void func2(void) { int a = 0; long b = 0; func1(a, b); /* W0584 */ } @end verbatim @subsection Related message @itemize @item @ref{W0581} The number or type of actual argument is different from the past. @item @ref{W0582} The number or type of actual argument is different from the function prototype declaration at the following. @item @ref{W0583} The number or type of actual argument is different from the function declaration at the following. @end itemize @subsection Since 1.0.0 @node W0585 @section W0585 @cindex W0585 @subsection Message body A control variable `%s' doesn't appear increment expression. @subsection Content Under construction. @subsection Sample code @verbatim int i, j; for (i = j = 0; i < 10; j++) { /* W0585 */ i++; } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0586 @section W0586 @cindex W0586 @subsection Message body A typedef `%s' is declared in more than one place. @subsection Content Under construction. @subsection Sample code @file{test1.c} @verbatim typedef int *INT_PTR; /* W0586 */ void func1(INT_PTR) { ...snip... } @end verbatim @file{test2.c} @verbatim typedef int *INT_PTR; /* W0586 */ void func2(INT_PTR) { ...snip... } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0589 @section W0589 @cindex W0589 @subsection Message body An object `%s' is only referenced by function `%s' in the defined translation unit. @subsection Content Under construction. @subsection Sample code @file{test1.c} @verbatim void func1(void) /* W0589 & W0591 */ { ...snip... } void func2(void) { func1(); } @end verbatim @file{test2.c} @verbatim extern void func2(void); void func3(void) { func2(); } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0591 @section W0591 @cindex W0591 @subsection Message body A function `%s' is only referenced by the defined translation unit. @subsection Content Under construction. @subsection Sample code @file{test1.c} @verbatim void func1(void) /* W0589 & W0591 */ { ...snip... } void func2(void) { func1(); } @end verbatim @file{test2.c} @verbatim extern void func2(void); void func3(void) { func2(); } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0593 @section W0593 @cindex W0593 @subsection Message body An object `%s' is only referenced by the defined translation unit. @subsection Content Under construction. @subsection Sample code @file{test1.c} @verbatim int a = 100; /* W0593 */ void func1(void) { a += 1; } void func2(void) { func1(); a += 2; } @end verbatim @file{test2.c} @verbatim extern void func2(void); void func3(void) { func2(); } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0597 @section W0597 @cindex W0597 @subsection Message body `%s' is modified more than once between the side-effects completion point. The evaluation order is undefined. @subsection Content Under construction. @subsection Sample code @verbatim extern int bar(int *); extern int baz(const int *); void foo(int a, int b) { a = b * a++; /* W0597 */ a = bar(&a) * a++; /* W0597 */ b = bar(&a) * (a++ + --a); /* W0597, W0599 */ } @end verbatim @subsection Related message @itemize @item @ref{W0598} `%s' might be modified more than once between the side-effects completion point. The evaluation order is undefined. @item @ref{W0599} `%s' is modified and referenced between the side-effects completion point. The evaluation order is undefined. @item @ref{W0600} `%s' is modified and might be referenced between the side-effects completion point. The evaluation order is undefined. @end itemize @subsection Since 1.2.0 @node W0598 @section W0598 @cindex W0598 @subsection Message body `%s' might be modified more than once between the side-effects completion point. The evaluation order is undefined. @subsection Content Under construction. @subsection Sample code @verbatim extern int bar(int *); extern int baz(const int *); void foo(int a, int b) { b = bar(&a) * a++; /* W0598 */ b = bar(&a) + bar(&a); /* W0598 */ b = bar(&a) + baz(&a); /* W0600 */ b = baz(&a) + baz(&a); } @end verbatim @subsection Related message @itemize @item @ref{W0597} `%s' is modified more than once between the side-effects completion point. The evaluation order is undefined. @item @ref{W0599} `%s' is modified and referenced between the side-effects completion point. The evaluation order is undefined. @item @ref{W0600} `%s' is modified and might be referenced between the side-effects completion point. The evaluation order is undefined. @end itemize @subsection Since 1.2.0 @node W0599 @section W0599 @cindex W0599 @subsection Message body `%s' is modified and referenced between the side-effects completion point. The evaluation order is undefined. @subsection Content Under construction. @subsection Sample code @verbatim extern void bar(int, int, int); void foo(int a, int b, int *c) { b = (a + 1) + a++; /* W0599 */ b = c[a] + c[++a]; /* W0599 */ bar(a, a++, c[a]); /* W0599 */ bar(a, a, c[a++]); /* W0599 */ a = a + b; c[a] = a++ + b; /* W0599 */ } @end verbatim @subsection Related message @itemize @item @ref{W0597} `%s' is modified more than once between the side-effects completion point. The evaluation order is undefined. @item @ref{W0598} `%s' might be modified more than once between the side-effects completion point. The evaluation order is undefined. @item @ref{W0600} `%s' is modified and might be referenced between the side-effects completion point. The evaluation order is undefined. @end itemize @subsection Since 1.2.0 @node W0600 @section W0600 @cindex W0600 @subsection Message body `%s' is modified and might be referenced between the side-effects completion point. The evaluation order is undefined. @subsection Content Under construction. @subsection Sample code @verbatim extern int bar(int *); extern int baz(const int *); void foo(int a, int b) { b = bar(&a) * a; /* W0600 */ b = baz(&a) * a; } @end verbatim @subsection Related message @itemize @item @ref{W0597} `%s' is modified more than once between the side-effects completion point. The evaluation order is undefined. @item @ref{W0598} `%s' might be modified more than once between the side-effects completion point. The evaluation order is undefined. @item @ref{W0599} `%s' is modified and referenced between the side-effects completion point. The evaluation order is undefined. @end itemize @subsection Since 1.2.0 @node W0605 @section W0605 @cindex W0605 @subsection Message body Multiple break-statements appear to break the same iteration. @subsection Content Under construction. @subsection Sample code @verbatim while (n > 0) { if (n == 1) { break; } if (n == 2) { break; /* W0605 */ } } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0606 @section W0606 @cindex W0606 @subsection Message body An union has a member which type is floating-point. @subsection Content Under construction. @subsection Sample code @verbatim union UNI { /* W0606 */ float a; int b; }; @end verbatim @subsection Related message None. @subsection Since 1.4.0 @node W0607 @section W0607 @cindex W0607 @subsection Message body An integer expression which the value which the value is minus converted to unsigned type. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a) { if (a < 0) { unsigned int b = (unsigned int) a; /* W0607 */ } } @end verbatim @subsection Related message @itemize @item @ref{W0608} An integer expression which the value might be minus converted to unsigned type. @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.8.0 @node W0608 @section W0608 @cindex W0608 @subsection Message body An integer expression which the value might be minus converted to unsigned type. @subsection Content Under construction. @subsection Sample code @verbatim void fuu(int a) { unsigned char b; if (a < 256) { b = (unsigned char) a; /* W0608 */ } } @end verbatim @subsection Related message @itemize @item @ref{W0607} An integer expression which the value which the value is minus converted to unsigned type. @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.8.0 @node W0609 @section W0609 @cindex W0609 @subsection Message body This logical expression always makes true. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a) { if (a < 0) { if (a != 0) { /* W0609 */ ...snip... } } } @end verbatim @subsection Related message @itemize @item @ref{W0610} This logical expression always makes false. @item @ref{W0611} The value of this 'for' control expression is always true. @item @ref{W0612} The value of this 'if' conditional expression is always true. @item @ref{W0613} This controlling expression always makes false. @item @ref{W0614} The value of this "do-while" control expression is always false. The body of repetition statement executed only once. @end itemize @subsection Since 1.0.0 @node W0610 @section W0610 @cindex W0610 @subsection Message body This logical expression always makes false. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a) { if (a < 0) { if (a == 0) { /* W0610 */ } } } @end verbatim @subsection Related message @itemize @item @ref{W0609} This logical expression always makes true. @item @ref{W0611} The value of this 'for' control expression is always true. @item @ref{W0612} The value of this 'if' conditional expression is always true. @item @ref{W0613} This controlling expression always makes false. @item @ref{W0614} The value of this "do-while" control expression is always false. The body of repetition statement executed only once. @end itemize @subsection Since 1.0.0 @node W0611 @section W0611 @cindex W0611 @subsection Message body The value of this 'for' control expression is always true. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a) { if ( a > 0 ) { while (a != 0) { /* W0611 */ ...snip... } } } @end verbatim @subsection Related message @itemize @item @ref{W0609} This logical expression always makes true. @item @ref{W0610} This logical expression always makes false. @item @ref{W0612} The value of this 'if' conditional expression is always true. @item @ref{W0613} This controlling expression always makes false. @item @ref{W0614} The value of this "do-while" control expression is always false. The body of repetition statement executed only once. @end itemize @subsection Since 1.0.0 @node W0612 @section W0612 @cindex W0612 @subsection Message body The value of this 'if' conditional expression is always true. @subsection Content Under construction. @subsection Sample code @verbatim int i; for (i = 0; i < 10; i++) { if (i < 20) { /* W0612 */ ...snip... } } @end verbatim @subsection Related message @itemize @item @ref{W0609} This logical expression always makes true. @item @ref{W0610} This logical expression always makes false. @item @ref{W0611} The value of this 'for' control expression is always true. @item @ref{W0613} This controlling expression always makes false. @item @ref{W0614} The value of this "do-while" control expression is always false. The body of repetition statement executed only once. @end itemize @subsection Since 1.0.0 @node W0613 @section W0613 @cindex W0613 @subsection Message body This controlling expression always makes false. @subsection Content Under construction. @subsection Sample code @verbatim int i; for (i = 0; i < 10; i++) { if (i > 10) { /* W0613 */ ...snip... } } @end verbatim @subsection Related message @itemize @item @ref{W0609} This logical expression always makes true. @item @ref{W0610} This logical expression always makes false. @item @ref{W0611} The value of this 'for' control expression is always true. @item @ref{W0612} The value of this 'if' conditional expression is always true. @item @ref{W0614} The value of this "do-while" control expression is always false. The body of repetition statement executed only once. @end itemize @subsection Since 1.0.0 @node W0614 @section W0614 @cindex W0614 @subsection Message body The value of this \"do-while\" control expression is always false. The body of repetition statement executed only once. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a) { if (a == 0) { do { } while (a > 0); /* W0614 */ } } @end verbatim @subsection Related message @itemize @item @ref{W0609} This logical expression always makes true. @item @ref{W0610} This logical expression always makes false. @item @ref{W0611} The value of this 'for' control expression is always true. @item @ref{W0612} The value of this 'if' conditional expression is always true. @item @ref{W0613} This controlling expression always makes false. @end itemize @subsection Since 1.0.0 @node W0622 @section W0622 @cindex W0622 @subsection Message body A function is declared in the block scope. @subsection Content Under construction. @subsection Sample code @verbatim int func1(void) { extern int func2(void); /* W0622 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0623 @section W0623 @cindex W0623 @subsection Message body An external coupling object is declared in the block scope. @subsection Content Under construction. @subsection Sample code @verbatim int func(void) { extern int i; /* W0623 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0624 @section W0624 @cindex W0624 @subsection Message body There is '#define' or '#undef' in a block. @subsection Content Under construction. @subsection Sample code @verbatim #define MACRO 0 int foo(void) { #if defined(MACRO) #undef MACRO /* W0624 */ #define MACRO 1 /* W0624 */ #endif return MACRO; } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0625 @section W0625 @cindex W0625 @subsection Message body `%s' is using in the declaration or definition of external coupling. But its 'typedef' doesn't declare in the header file. @subsection Content Under construction. @subsection Sample code @verbatim typedef int *INT_PTR; /* W0625 */ extern INT_PTR func(void); INT_PTR func(void) { return 0; } @end verbatim @subsection Related message None. @subsection Since 1.8.0 @node W0626 @section W0626 @cindex W0626 @subsection Message body A wide character or wide string literal is used. @subsection Content Under construction. @subsection Sample code @verbatim const wchar_t a = L'ã‚'; /* W0626 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0627 @section W0627 @cindex W0627 @subsection Message body There is a dead letter (only `;') in the following other code. @subsection Content Under construction. @subsection Sample code @verbatim if (0); /* W0627 */ { ...snip... } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0628 @section W0628 @cindex W0628 @subsection Message body A function `%s' is defined, but this is not used in this project. @subsection Content Under construction. @subsection Sample code @file{test1.c} @verbatim int func1(void) { return 0; } void func2(void) /* W0628 */ { ...snip... } @end verbatim @file{test2.c} @verbatim extern int func1(void); int main(void) { return func1(); } @end verbatim @subsection Related message @itemize @item @ref{W0629} `%s()' has internal-linkage, but it is never called in this translation-unit. @end itemize @subsection Since 1.0.0 @node W0629 @section W0629 @cindex W0629 @subsection Message body `%s()' has internal-linkage, but it is never called in this translation-unit. @subsection Content Under construction. @subsection Sample code @verbatim static int func1(void) /* W0629 */ { return 1; } int func2(void) { return 1; } @end verbatim @subsection Related message @itemize @item @ref{W0628} A function `%s' is defined, but this is not used in this project. @end itemize @subsection Since 1.0.0 @node W0632 @section W0632 @cindex W0632 @subsection Message body Using ' or " characters in `@code{#include <%s>}' directive makes undefined behavior. @subsection Content Under construction. @subsection Sample code @verbatim #include /* W0632 */ @end verbatim @subsection Related message @itemize @item @ref{W0633} Using ' character in `#include "%s"' directive makes undefined behavior. @item @ref{W0634} `\' is used in `#include' line. `/' is recommended for the path delimiter. @end itemize @subsection Since 1.8.0 @node W0633 @section W0633 @cindex W0633 @subsection Message body Using ' character in `@code{#include "%s"}' directive makes undefined behavior. @subsection Content Under construction. @subsection Sample code @verbatim #include "NG'_header.h" /* W0633 */ @end verbatim @subsection Related message @itemize @item @ref{W0632} Using ' or " characters in `#include <%s>' directive makes undefined behavior. @item @ref{W0634} `\' is used in `#include' line. `/' is recommended for the path delimiter. @end itemize @subsection Since 1.8.0 @node W0634 @section W0634 @cindex W0634 @subsection Message body `\' is used in `#include' line. `/' is recommended for the path delimiter. @subsection Content Under construction. @subsection Sample code @verbatim #include "..\ng\header.h" /* W0634 */ #include "..\\ng\\header.h" /* W0634 */ @end verbatim @subsection Related message @itemize @item @ref{W0632} Using ' or " characters in `#include <%s>' directive makes undefined behavior. @item @ref{W0633} Using ' character in `#include "%s"' directive makes undefined behavior. @end itemize @subsection Since 1.8.0 @node W0635 @section W0635 @cindex W0635 @subsection Message body The type doesn't match with %sth conversion specifier and the corresponding actual argument. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a) { printf("Apple %f\n", a); /* W0635 */ } @end verbatim @subsection Related message @itemize @item @ref{W0636} An actual argument doesn't exist correspond to %sth conversion specifier. @item @ref{W0637} There is more actual argument than the number of conversion specifier in function call. @item @ref{W0638} This function call requiring at least one actual argument. @item @ref{W0639} %sth conversion specifier doesn't match with corresponding type of actual argument. @item @ref{W0640} The actual argument of scanf function have to pass the object pointer to store the data. @end itemize @subsection Since 1.0.0 @node W0636 @section W0636 @cindex W0636 @subsection Message body An actual argument doesn't exist correspond to %sth conversion specifier. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a, int b, int c) { printf("Banana %d, %d, %d\n", a, b); /* W0636 */ } @end verbatim @subsection Related message @itemize @item @ref{W0635} The type doesn't match with %sth conversion specifier and the corresponding actual argument. @item @ref{W0637} There is more actual argument than the number of conversion specifier in function call. @item @ref{W0638} This function call requiring at least one actual argument. @item @ref{W0639} %sth conversion specifier doesn't match with corresponding type of actual argument. @item @ref{W0640} The actual argument of scanf function have to pass the object pointer to store the data. @end itemize @subsection Since 1.0.0 @node W0637 @section W0637 @cindex W0637 @subsection Message body There is more actual argument than the number of conversion specifier in function call. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a, int b) { printf("Orange %d\n", a, b); /* W0637 */ } @end verbatim @subsection Related message @itemize @item @ref{W0635} The type doesn't match with %sth conversion specifier and the corresponding actual argument. @item @ref{W0636} An actual argument doesn't exist correspond to %sth conversion specifier. @item @ref{W0638} This function call requiring at least one actual argument. @item @ref{W0639} %sth conversion specifier doesn't match with corresponding type of actual argument. @item @ref{W0640} The actual argument of scanf function have to pass the object pointer to store the data. @end itemize @subsection Since 1.0.0 @node W0638 @section W0638 @cindex W0638 @subsection Message body This function call requiring at least one actual argument. @subsection Content Under construction. @subsection Sample code @verbatim printf(); /* W0638 */ @end verbatim @subsection Related message @itemize @item @ref{W0635} The type doesn't match with %sth conversion specifier and the corresponding actual argument. @item @ref{W0636} An actual argument doesn't exist correspond to %sth conversion specifier. @item @ref{W0637} There is more actual argument than the number of conversion specifier in function call. @item @ref{W0639} %sth conversion specifier doesn't match with corresponding type of actual argument. @item @ref{W0640} The actual argument of scanf function have to pass the object pointer to store the data. @end itemize @subsection Since 1.0.0 @node W0639 @section W0639 @cindex W0639 @subsection Message body %sth conversion specifier doesn't match with corresponding type of actual argument. @subsection Content Under construction. @subsection Sample code @verbatim int a; scanf("%f", &a); /* W0639 */ @end verbatim @subsection Related message @itemize @item @ref{W0635} The type doesn't match with %sth conversion specifier and the corresponding actual argument. @item @ref{W0636} An actual argument doesn't exist correspond to %sth conversion specifier. @item @ref{W0637} There is more actual argument than the number of conversion specifier in function call. @item @ref{W0638} This function call requiring at least one actual argument. @item @ref{W0640} The actual argument of scanf function have to pass the object pointer to store the data. @end itemize @subsection Since 1.0.0 @node W0640 @section W0640 @cindex W0640 @subsection Message body %sth conversion specifier doesn't match with corresponding type of actual argument. @subsection Content Under construction. @subsection Sample code @verbatim int a; fscanf(stdin, "%d", a); /* W0640 */ @end verbatim @subsection Related message @itemize @item @ref{W0635} The type doesn't match with %sth conversion specifier and the corresponding actual argument. @item @ref{W0636} An actual argument doesn't exist correspond to %sth conversion specifier. @item @ref{W0637} There is more actual argument than the number of conversion specifier in function call. @item @ref{W0638} This function call requiring at least one actual argument. @item @ref{W0639} %sth conversion specifier doesn't match with corresponding type of actual argument. @end itemize @subsection Since 1.0.0 @node W0641 @section W0641 @cindex W0641 @subsection Message body Floating-point number type cast to pointer to object and vice versa. @subsection Content Under construction. @subsection Sample code @verbatim int *foo(const float f) { return (int *) f; /* W0641 */ } @end verbatim @subsection Related message None. @subsection Since 1.18.0 @node W0642 @section W0642 @cindex W0642 @subsection Message body Address derivation from the object declared as `register' is prohibited. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { register int a[3]; int *p1 = a; /* W0642 */ int *p2 = &a[1]; /* W0642 */ } @end verbatim @subsection Related message @itemize @item @ref{W0643} This string literal constituted by a macro is illegal form unenclosed by `"'. `#'operator may apply to actual argument which has '\' at the end. @item @ref{W0644} A value in void statement is going to use. 'void' statement doesn't have a value. @item @ref{W0645} 'void' type cannot use in the type of formal argument. @item @ref{W0646} A normal string literal and a wide string literal are contiguous. @end itemize @subsection Since 1.8.0 @node W0643 @section W0643 @cindex W0643 @subsection Message body This string literal constituted by a macro is illegal form unenclosed by `\"'. `#'operator may apply to actual argument which has '\' at the end. @subsection Content Under construction. @subsection Sample code @verbatim #define MACRO(x) #x const char *str = MACRO(foo\); /* W0643 */ @end verbatim @subsection Related message @itemize @item @ref{W0642} Address derivation from the object declared as `register' is prohibited. @item @ref{W0644} A value in void statement is going to use. 'void' statement doesn't have a value. @item @ref{W0645} 'void' type cannot use in the type of formal argument. @item @ref{W0646} A normal string literal and a wide string literal are contiguous. @end itemize @subsection Since 1.16.0 @node W0644 @section W0644 @cindex W0644 @subsection Message body A value in void statement is going to use. 'void' statement doesn't have a value. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(void); int bar(void) { return (int) foo(); /* W0644 */ } @end verbatim @subsection Related message @itemize @item @ref{W0642} Address derivation from the object declared as `register' is prohibited. @item @ref{W0643} This string literal constituted by a macro is illegal form unenclosed by `"'. `#'operator may apply to actual argument which has '\' at the end. @item @ref{W0645} 'void' type cannot use in the type of formal argument. @item @ref{W0646} A normal string literal and a wide string literal are contiguous. @end itemize @subsection Since 1.18.0 @node W0645 @section W0645 @cindex W0645 @subsection Message body `void' cannot be used as the parameter type. @subsection Content Under construction. @subsection Sample code @verbatim extern void func(a) /* W0645 */ void a; { } @end verbatim @subsection Related message @itemize @item @ref{W0642} Address derivation from the object declared as `register' is prohibited. @item @ref{W0643} This string literal constituted by a macro is illegal form unenclosed by `"'. `#'operator may apply to actual argument which has '\' at the end. @item @ref{W0644} A value in void statement is going to use. 'void' statement doesn't have a value. @item @ref{W0646} A normal string literal and a wide string literal are contiguous. @end itemize @subsection Since 1.14.0 @node W0646 @section W0646 @cindex W0646 @subsection Message body A normal string literal and a wide string literal are contiguous. @subsection Content Under construction. @subsection Sample code @verbatim static const char *str = "foo" L"bar"; /* W0646 */ @end verbatim @subsection Related message @itemize @item @ref{W0642} Address derivation from the object declared as `register' is prohibited. @item @ref{W0643} This string literal constituted by a macro is illegal form unenclosed by `"'. `#'operator may apply to actual argument which has '\' at the end. @item @ref{W0644} A value in void statement is going to use. 'void' statement doesn't have a value. @item @ref{W0645} 'void' type cannot use in the type of formal argument. @end itemize @subsection Since 1.16.0 @node W0649 @section W0649 @cindex W0649 @subsection Message body A right operand value of shift operand is negative constant value. This result is undefined. @subsection Content Under construction. @subsection Sample code @verbatim int foo(int i) { return i << -1; /* W0649 */ } @end verbatim @subsection Related message @itemize @item @ref{W0650} A value of the right operand in a shift expression is bigger than the bit size of the left operand type `%s'. This result is undefined. @end itemize @subsection Since 1.18.0 @node W0650 @section W0650 @cindex W0650 @subsection Message body A value of the right operand in a shift expression is bigger than the bit size of the left operand type `%s'. This result is undefined. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int foo(unsigned int i) { return i << 32; /* W0650 */ } @end verbatim @subsection Related message @itemize @item @ref{W0649} A right operand value of shift operand is negative constant value. This result is undefined. @end itemize @subsection Since 1.18.0 @node W0653 @section W0653 @subsection Message body The initial value of an array, structure or union is not enclosed by `@{@}'. @subsection Content Under construction. @subsection Sample code @verbatim struct ST { int i; }; int a[3] = 0; /* W0653 */ struct ST s = 0; /* W0653 */ @end verbatim @subsection Related message @itemize @item @ref{W0654} The initializer of structure or union must the value of the same structure type or union type. @end itemize @subsection Since 1.0.0 @node W0654 @section W0654 @cindex W0654 @subsection Message body The initializer of structure or union must the value of the same structure type or union type. @subsection Content Under construction. @subsection Sample code @verbatim struct A { int i; }; struct B { int j; }; struct A a = { 0 }; struct B b = a; /* W0654 */ @end verbatim @subsection Related message @itemize @item @ref{W0653} The initial value of an array, structure or union is not enclosed by `@{@}'. @end itemize @subsection Since 1.0.0 @node W0655 @section W0655 @cindex W0655 @subsection Message body This is bit field statement which the size is undefined. @subsection Content Under construction. @subsection Sample code @verbatim struct ST { unsigned int a:2; unsigned int b:4; }; void func(void) { struct ST s = { 0 }; int i = sizeof(s.a); /* W0655 */ } @end verbatim @subsection Related message @itemize @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0656 @section W0656 @cindex W0656 @subsection Message body %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @subsection Content Under construction. @subsection Sample code @verbatim void func(int count) { printf("There are %Ld apples\n", count); /* W0656 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0657 @section W0657 @cindex W0657 @subsection Message body An invalid flag is used in %sth conversion specifier of `i' or 'd'. @subsection Content Under construction. @subsection Sample code @verbatim void func(int count) { printf("There are %Ld apples\n", count); /* W0657 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0658 @section W0658 @cindex W0658 @subsection Message body An invalid flag is used in %sth conversion specifier of `o'. @subsection Content Under construction. @subsection Sample code @verbatim void func(unsigned int count) { printf("There are %Lo apples\n", count); /* W0658 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0659 @section W0659 @cindex W0659 @subsection Message body An invalid flag is used in %sth conversion specifier of `u'. @subsection Content Under construction. @subsection Sample code @verbatim void func(unsigned int count) { printf("There are %Lu apples\n", count); /* W0659 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0660 @section W0660 @cindex W0660 @subsection Message body An invalid flag is used in %sth conversion specifier of `x'. @subsection Content Under construction. @subsection Sample code @verbatim void func(unsigned int count) { printf("There are %Lx apples\n", count); /* W0660 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0661 @section W0661 @cindex W0661 @subsection Message body An invalid flag is used in %sth conversion specifier of `X'. @subsection Content Under construction. @subsection Sample code @verbatim void func(unsigned int count) { printf("There are %LX apples\n", count); /* W0661 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0662 @section W0662 @cindex W0662 @subsection Message body An invalid flag is used in %sth conversion specifier of `f'. @subsection Content Under construction. @subsection Sample code @verbatim void func(double count) { printf("There are %lf apples\n", count); /* W0662 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0663 @section W0663 @cindex W0663 @subsection Message body An invalid flag is used in %sth conversion specifier of `e'. @subsection Content Under construction. @subsection Sample code @verbatim void func(double count) { printf("There are %le apples\n", count); /* W0663 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0664 @section W0664 @cindex W0664 @subsection Message body An invalid flag is used in %sth conversion specifier of `E'. @subsection Content Under construction. @subsection Sample code @verbatim void func(double count) { printf("There are %lE apples\n", count); /* W0664 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0665 @section W0665 @cindex W0665 @subsection Message body An invalid flag is used in %sth conversion specifier of `g'. @subsection Content Under construction. @subsection Sample code @verbatim void func(double count) { printf("There are %lg apples\n", count); /* W0665 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0666 @section W0666 @cindex W0666 @subsection Message body An invalid flag is used in %sth conversion specifier of `G'. @subsection Content Under construction. @subsection Sample code @verbatim void func(double count) { printf("There are %lG apples\n", count); /* W0666 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0667 @section W0667 @cindex W0667 @subsection Message body An invalid flag is used in %sth conversion specifier of `c'. @subsection Content Under construction. @subsection Sample code @verbatim void func(char count) { printf("There are %hc apples\n", count); /* W0667 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0668 @section W0668 @cindex W0668 @subsection Message body An invalid flag is used in %sth conversion specifier of `%%'. @subsection Content Under construction. @subsection Sample code @verbatim void func(double percent) { printf("There is %f%l% apple juice\n", percent); /* W0668 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0669 @section W0669 @cindex W0669 @subsection Message body An invalid flag is used in %sth conversion specifier of `s'. @subsection Content Under construction. @subsection Sample code @verbatim void func(char *s) { printf("There are %hs apples\n", s); /* W0669 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0670 @section W0670 @cindex W0670 @subsection Message body An invalid flag is used in %sth conversion specifier of `n'. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { int n; printf("There are %Ln apples\n", &n); /* W0670 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0671 @section W0671 @cindex W0671 @subsection Message body An invalid flag is used in %sth conversion specifier of `p'. @subsection Content Under construction. @subsection Sample code @verbatim void func(char *p) { printf("p points to %lp\n", p); /* W0671 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0672 @section W0672 @cindex W0672 @subsection Message body An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { int a; printf("%0", &a); /* W0672 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0673 @section W0673 @cindex W0673 @subsection Message body %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { int a; scanf("%y", &a); /* W0673 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0674 @section W0674 @cindex W0674 @subsection Message body An invalid flag is used in %sth conversion specifier of `d/i/n'. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { int a; scanf("%Ld", &a); /* W0674 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0675 @section W0675 @cindex W0675 @subsection Message body An invalid flag is used in %sth conversion specifier of `o'. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { int a; scanf("%Lo", &a); /* W0675 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0676 @section W0676 @cindex W0676 @subsection Message body An invalid flag is used in %sth conversion specifier of `u'. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { int a; scanf("%Lu", &a); /* W0676 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0677 @section W0677 @cindex W0677 @subsection Message body An invalid flag is used in %sth conversion specifier of `x/X.' @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { int a; scanf("%Lx", &a); /* W0677 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0678 @section W0678 @cindex W0678 @subsection Message body An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { double a; scanf("%lle", &a); /* W0678 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0679 @section W0679 @cindex W0679 @subsection Message body An invalid flag is used in %sth conversion specifier of `s'. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { char a[256]; scanf("%lls", a); /* W0679 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0680 @section W0680 @cindex W0680 @subsection Message body An invalid flag is used in %sth conversion specifier of `p'. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { void *a; scanf("%lp", &a); /* W0680 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0681 @section W0681 @cindex W0681 @subsection Message body An invalid flag is used in %sth conversion specifier of `%%'. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { int a; scanf("%d%l%", &a); /* W0681 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0682 @section W0682 @cindex W0682 @subsection Message body An invalid flag is used in %sth conversion specifier of `['. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { char buf[256]; scanf("%L[0-9]", buf); /* W0682 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0683 @section W0683 @cindex W0683 @subsection Message body An invalid flag is used in %sth conversion specifier of `c'. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { char a; scanf("%Lc", &a); /* W0683 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0684 @section W0684 @cindex W0684 @subsection Message body An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @subsection Content Under construction. @subsection Sample code @verbatim void func(void) { long a; scanf("%l", &a); /* W0684 */ } @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.0.0 @node W0685 @section W0685 @cindex W0685 @subsection Message body A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @subsection Content Under construction. @subsection Sample code @verbatim char c; scanf("%[z-a]", &c); /* W0685 */ @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0686} The same characters are described in scanset (characters enclosed by `[]'). @end itemize @subsection Since 1.6.0 @node W0686 @section W0686 @cindex W0686 @subsection Message body The same characters are described in scanset (characters enclosed by `[]'). @subsection Content Under construction. @subsection Sample code @verbatim char c; scanf("%[abcda]", &c); /* W0686 */ @end verbatim @subsection Related message @itemize @item @ref{W0655} This is bit field statement which the size is undefined. @item @ref{W0656} %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards. @item @ref{W0657} An invalid flag is used in %sth conversion specifier of `i' or 'd'. @item @ref{W0658} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0659} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0660} An invalid flag is used in %sth conversion specifier of `x'. @item @ref{W0661} An invalid flag is used in %sth conversion specifier of `X'. @item @ref{W0662} An invalid flag is used in %sth conversion specifier of `f'. @item @ref{W0663} An invalid flag is used in %sth conversion specifier of `e'. @item @ref{W0664} An invalid flag is used in %sth conversion specifier of `E'. @item @ref{W0665} An invalid flag is used in %sth conversion specifier of `g'. @item @ref{W0666} An invalid flag is used in %sth conversion specifier of `G'. @item @ref{W0667} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0668} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0669} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0670} An invalid flag is used in %sth conversion specifier of `n'. @item @ref{W0671} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0672} An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf. @item @ref{W0673} %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards. @item @ref{W0674} An invalid flag is used in %sth conversion specifier of `d/i/n'. @item @ref{W0675} An invalid flag is used in %sth conversion specifier of `o'. @item @ref{W0676} An invalid flag is used in %sth conversion specifier of `u'. @item @ref{W0677} An invalid flag is used in %sth conversion specifier of `x/X'. @item @ref{W0678} An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'. @item @ref{W0679} An invalid flag is used in %sth conversion specifier of `s'. @item @ref{W0680} An invalid flag is used in %sth conversion specifier of `p'. @item @ref{W0681} An invalid flag is used in %sth conversion specifier of `%%'. @item @ref{W0682} An invalid flag is used in %sth conversion specifier of `['. @item @ref{W0683} An invalid flag is used in %sth conversion specifier of `c'. @item @ref{W0684} An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf. @item @ref{W0685} A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'. @end itemize @subsection Since 1.6.0 @node W0687 @section W0687 @cindex W0687 @subsection Message body #undef is using to delete #defined operator. @subsection Content Under construction. @subsection Sample code @verbatim #undef defined /* W0687 */ @end verbatim @subsection Related message @itemize @item @ref{W0688} There is no line number in 1 to 32767 ranges after #line directive. @item @ref{W0689} #line directive syntax doesn't match `#line integer constant \"string\"'. @item @ref{W0690} No line number after #line directive. @item @ref{W0691} The result of `##' operator is not valid preprocessing token. @end itemize @subsection Since 1.4.0 @node W0688 @section W0688 @cindex W0688 @subsection Message body There is no line number in 1 to 32767 ranges after #line directive. @subsection Content Under construction. @subsection Sample code @verbatim #line 35000 "test.c" /* W0688 */ @end verbatim @subsection Related message @itemize @item @ref{W0687} #undef is using to delete #defined operator. @item @ref{W0689} #line directive syntax doesn't match `#line integer constant \"string\"'. @item @ref{W0690} No line number after #line directive. @item @ref{W0691} The result of `##' operator is not valid preprocessing token. @end itemize @subsection Since 1.2.0 @node W0689 @section W0689 @cindex W0689 @subsection Message body #line directive syntax doesn't match `#line integer constant \"string\"'. @subsection Content Under construction. @subsection Sample code @verbatim #line 35 * 100 /* W0689 */ #line 35 * 100 "test.c" /* W0689 */ #line 35 L"ã‚ã„ã†.c" /* W0689 */ #line __FILE__ 35 /* W0689 */ @end verbatim @subsection Related message @itemize @item @ref{W0687} #undef is using to delete #defined operator. @item @ref{W0688} There is no line number in 1 to 32767 ranges after #line directive. @item @ref{W0690} No line number after #line directive. @item @ref{W0691} The result of `##' operator is not valid preprocessing token. @end itemize @subsection Since 1.2.0 @node W0690 @section W0690 @cindex W0690 @subsection Message body No line number after #line directive. @subsection Content Under construction. @subsection Sample code @verbatim #line LINE1000 /* W0690 */ #line __FILE__ 35 /* W0690 */ @end verbatim @subsection Related message @itemize @item @ref{W0687} #undef is using to delete #defined operator. @item @ref{W0688} There is no line number in 1 to 32767 ranges after #line directive. @item @ref{W0689} #line directive syntax doesn't match `#line integer constant \"string\"'. @item @ref{W0691} The result of `##' operator is not valid preprocessing token. @end itemize @subsection Since 1.2.0 @node W0691 @section W0691 @cindex W0691 @subsection Message body The result of `##' operator is not valid preprocessing token. @subsection Content Under construction. @subsection Sample code @verbatim #define MACRO(a, b) a ## b double d = (double) MACRO(-, 123); /* W0691 */ @end verbatim @subsection Related message @itemize @item @ref{W0687} #undef is using to delete #defined operator. @item @ref{W0688} There is no line number in 1 to 32767 ranges after #line directive. @item @ref{W0689} #line directive syntax doesn't match `#line integer constant \"string\"'. @item @ref{W0690} No line number after #line directive. @end itemize @subsection Since 1.16.0 @node W0692 @section W0692 @cindex W0692 @subsection Message body A function-like macro `%s' doesn't given an actual argument. @subsection Content Under construction. @subsection Sample code @verbatim #define MACRO(a) #a const char *s = (char *) MACRO(); /* W0692 */ @end verbatim @subsection Related message @itemize @item @ref{W0693} A function-like macro is called by actual argument which its definition is smaller. @end itemize @subsection Since 1.16.0 @node W0693 @section W0693 @cindex W0693 @subsection Message body A function-like macro is called by actual argument which its definition is smaller. @subsection Content @b{This message will be supported after AdLint 2.0.0} Under construction. @subsection Sample code @verbatim /* will be added */ @end verbatim @subsection Related message @itemize @item @ref{W0692} A function-like macro `%s' doesn't given an actual argument. @end itemize @subsection Since After 2.0.0 (planned) @node W0694 @section W0694 @cindex W0694 @subsection Message body 'assert' macro is inhibited to call the function named `assert'. This result is undefined. @subsection Content Under construction. @subsection Sample code @verbatim #undef assert extern void assert(int); void foo(void) { assert("should not be reached" == ""); /* W0694 */ } @end verbatim @subsection Related message None. @subsection Since 1.16.0 @node W0695 @section W0695 @cindex W0695 @subsection Message body If #undef the 'assert' macro, and enable to call its name function, the result is undefined. @subsection Content Under construction. @subsection Sample code @verbatim #undef assert /* W0695 */ extern void assert(int a); @end verbatim @subsection Related message None. @subsection Since 1.4.0 @node W0696 @section W0696 @cindex W0696 @subsection Message body This macro using in `#if...' is undefined. @subsection Content Under construction. @subsection Sample code @verbatim #define MACRO (1) #if MACRO == 1 ...snip... #endif #undef MACRO #if MACRO == 2 /* W0696 */ ...snip... #endif @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0697 @section W0697 @cindex W0697 @subsection Message body There is a path with exits with an implicit `return;' statement in a function `%s' which has a return value. @subsection Content Under construction. @subsection Sample code @verbatim int func(int value) /* W0697 */ { if (value == 0) { return 0; } /* No return statement at the end of this function. */ } @end verbatim @subsection Related message @itemize @item @ref{W0698} A `return;' statement is found in a function `%s' which has a return value. @item @ref{W0699} The return value of function `%s()' is unspecified. The return value is implicitly int. There is no expression to set the value to 'return' statement. @item @ref{W0700} The return value of function `%s()' is unspecified. The return value is implicitly int. There is no 'return' statement to return value. @end itemize @subsection Since 1.14.0 @node W0698 @section W0698 @cindex W0698 @subsection Message body A `return;' statement is found in a function `%s' which has a return value. @subsection Content Under construction. @subsection Sample code @verbatim int func(void) { return; /* W0698 */ } @end verbatim @subsection Related message @itemize @item @ref{W0698} A `return;' statement is found in a function `%s' which has a return value. @item @ref{W0699} The return value of function `%s()' is unspecified. The return value is implicitly int. There is no expression to set the value to 'return' statement. @item @ref{W0700} The return value of function `%s()' is unspecified. The return value is implicitly int. There is no 'return' statement to return value. @end itemize @subsection Since 1.4.0 @node W0699 @section W0699 @cindex W0699 @subsection Message body The return value of function `%s()' is unspecified. The return value is implicitly int. There is no expression to set the value to 'return' statement. @subsection Content Under construction. @subsection Sample code @verbatim extern func(void) { return; /* W0699 */ } @end verbatim @subsection Related message @itemize @item @ref{W0697} There is a path with exits with an implicit `return;' statement in a function `%s' which has a return value. @item @ref{W0698} A `return;' statement is found in a function `%s' which has a return value. @item @ref{W0700} The return value of function `%s()' is unspecified. The return value is implicitly int. There is no 'return' statement to return value. @end itemize @subsection Since 1.4.0 @node W0700 @section W0700 @cindex W0700 @subsection Message body The return value of function `%s()' is unspecified. The return value is implicitly int. There is no 'return' statement to return value. @subsection Content Under construction. @subsection Sample code @verbatim extern func(void) /* W0700 */ { } @end verbatim @subsection Related message @itemize @item @ref{W0697} There is a path with exits with an implicit `return;' statement in a function `%s' which has a return value. @item @ref{W0698} A `return;' statement is found in a function `%s' which has a return value. @item @ref{W0699} The return value of function `%s()' is unspecified. The return value is implicitly int. There is no expression to set the value to 'return' statement. @end itemize @subsection Since 1.14.0 @node W0703 @section W0703 @cindex W0703 @subsection Message body The tag `%s' hides the declaration of same identifier which has wider scope. @subsection Content Under construction. @subsection Sample code @verbatim union FOO { ...snip... }; void func(void) { struct FOO { /* W0703 */ ...snip... }; } @end verbatim @subsection Related message @itemize @item @ref{W0704} This `%s' declaration hides the declaration of same identifier which has wider scope. @end itemize @subsection Since 1.0.0 @node W0704 @section W0704 @cindex W0704 @subsection Message body This `%s' declaration hides the declaration of same identifier which has wider scope. @subsection Content Under construction. @subsection Sample code @verbatim int a; void func(void) { double a; /* W0704 */ } @end verbatim @subsection Related message @itemize @item @ref{W0703} The tag `%s' hides the declaration of same identifier which has wider scope. @end itemize @subsection Since 1.0.0 @node W0705 @section W0705 @cindex W0705 @subsection Message body This non-constant array subscript may cause out-of-range access. @subsection Content Under construction. @subsection Sample code @verbatim void func(unsigned int a) { int buf[10]; if (a < 10) { buf[a] = 0; } ...snip... buf[a] = 5; /* W0705 */ } @end verbatim @subsection Related message @itemize @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W0707 @section W0707 @cindex W0707 @subsection Message body This constant array subscript must cause out-of-range access. @subsection Content Under construction. @subsection Sample code @verbatim extern int a[5]; int foo(void) { int i = a[5]; /* W0707 */ return i; } @end verbatim @subsection Related message @itemize @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.18.0 @node W0708 @section W0708 @cindex W0708 @subsection Message body A value of control variable `%s' in 'for' statement is changed in the body of repetition. @subsection Content Under construction. @subsection Sample code @verbatim int i, j; for (i = j = 0; i < 10; j++) { i++; /* W0708 */ } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0711 @section W0711 @cindex W0711 @subsection Message body Right operand of relational operator is a substantive 'boolean' expression. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a, int b, int c, int d) { return (a + b) > (c > d); /* W0711 */ } @end verbatim @subsection Related message @itemize @item @ref{W0712} Left operand of relational operator is a substantive 'boolean' expression. @item @ref{W0713} Both sides of relational operator is substantive 'boolean' expressions. @end itemize @subsection Since 1.8.0 @node W0712 @section W0712 @cindex W0712 @subsection Message body Left operand of relational operator is a substantive 'boolean' expression. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a, int b, int c, int d) { return (a > b) > (c + d); /* W0712 */ } @end verbatim @subsection Related message @itemize @item @ref{W0711} Right operand of relational operator is a substantive 'boolean' expression. @item @ref{W0713} Both sides of relational operator is substantive 'boolean' expressions. @end itemize @subsection Since 1.8.0 @node W0713 @section W0713 @cindex W0713 @subsection Message body Both sides of relational operator is substantive 'boolean' expressions. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a, int b, int c, int d) { return (a > b) > (c > d); /* W0713 */ } @end verbatim @subsection Related message @itemize @item @ref{W0711} Right operand of relational operator is a substantive 'boolean' expression. @item @ref{W0712} Left operand of relational operator is a substantive 'boolean' expression. @end itemize @subsection Since 1.8.0 @node W0714 @section W0714 @cindex W0714 @subsection Message body Both sides of `&' operator is substantive 'boolean' expressions. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a, int b, int c, int d) { return (a > b) & (c > d); /* W0714 */ } @end verbatim @subsection Related message @itemize @item @ref{W0715} Both sides of `|' operator is substantive 'boolean' expressions. @item @ref{W0716} A bit operator or both sides operand of arithmetic operator is a substantive 'boolean' expression. @item @ref{W0717} A bit operator or left side operand of arithmetic operator is a substantive 'boolean' expression. @item @ref{W0718} A bit operator or right side operand of arithmetic operator is a substantive 'boolean' expression. @end itemize @subsection Since 1.8.0 @node W0715 @section W0715 @cindex W0715 @subsection Message body Both sides of `|' operator is substantive 'boolean' expressions. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a, int b, int c, int d) { return (a > b) | (c > d); /* W0715 */ } @end verbatim @subsection Related message @itemize @item @ref{W0714} Both sides of `&' operator is substantive 'boolean' expressions. @item @ref{W0716} A bit operator or both sides operand of arithmetic operator is a substantive 'boolean' expression. @item @ref{W0717} A bit operator or left side operand of arithmetic operator is a substantive 'boolean' expression. @item @ref{W0718} A bit operator or right side operand of arithmetic operator is a substantive 'boolean' expression. @end itemize @subsection Since 1.8.0 @node W0716 @section W0716 @cindex W0716 @subsection Message body A bit operator or both sides operand of arithmetic operator is a substantive 'boolean' expression. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a, int b, int c, int d) { return (a > b) + (c > d); /* W0716 */ } @end verbatim @subsection Related message @itemize @item @ref{W0714} Both sides of `&' operator is substantive 'boolean' expressions. @item @ref{W0715} Both sides of `|' operator is substantive 'boolean' expressions. @item @ref{W0717} A bit operator or left side operand of arithmetic operator is a substantive 'boolean' expression. @item @ref{W0718} A bit operator or right side operand of arithmetic operator is a substantive 'boolean' expression. @end itemize @subsection Since 1.10.0 @node W0717 @section W0717 @cindex W0717 @subsection Message body A bit operator or left side operand of arithmetic operator is a substantive 'boolean' expression. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a, int b, int c) { return (a > b) + c; /* W0717 */ } @end verbatim @subsection Related message @itemize @item @ref{W0714} Both sides of `&' operator is substantive 'boolean' expressions. @item @ref{W0715} Both sides of `|' operator is substantive 'boolean' expressions. @item @ref{W0716} A bit operator or both sides operand of arithmetic operator is a substantive 'boolean' expression. @item @ref{W0717} A bit operator or left side operand of arithmetic operator is a substantive 'boolean' expression. @end itemize @subsection Since 1.10.0 @node W0718 @section W0718 @cindex W0718 @subsection Message body A bit operator or right side operand of arithmetic operator is a substantive 'boolean' expression. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a, int b, int c) { return a + (b > c); /* W0718 */ } @end verbatim @subsection Related message @itemize @item @ref{W0714} Both sides of `&' operator is substantive 'boolean' expressions. @item @ref{W0715} Both sides of `|' operator is substantive 'boolean' expressions. @item @ref{W0716} A bit operator or both sides operand of arithmetic operator is a substantive 'boolean' expression. @item @ref{W0717} A bit operator or left side operand of arithmetic operator is a substantive 'boolean' expression. @end itemize @subsection Since 1.10.0 @node W0719 @section W0719 @cindex W0719 @subsection Message body A value of the right operand in a shift expression is bigger than the bit size of the left operand underlying type `%s'. @subsection Content Under construction. @subsection Sample code @verbatim int foo(char c) { return c << 31; /* W0719 */ } @end verbatim @subsection Related message None. @subsection Since 1.18.0 @node W0720 @section W0720 @cindex W0720 @subsection Message body The value with floating-point type doesn't fit in the range of converted type. @subsection Content Under construction. @subsection Sample code @verbatim signed char sc1 = (signed char) 127.5; /* OK */ signed char sc2 = (signed char) 128.5; /* W0720 */ signed char sc3 = (signed char) -128.5; /* OK */ signed char sc4 = (signed char) -129.5; /* W0720 */ @end verbatim @subsection Related message @itemize @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.4.0 @node W0721 @section W0721 @cindex W0721 @subsection Message body This volatile integer type doesn't have enough size to keep pointer value. @subsection Content Under construction. @subsection Sample code @verbatim void func(int *p) { /* when short is 16 bit long and pointer is 32 bit long */ unsigned short us = (unsigned short) p; /* W0721 */ } @end verbatim @subsection Related message None. @subsection Since 1.4.0 @node W0722 @section W0722 @cindex W0722 @subsection Message body A value of signed statement is overflow. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a) { /* when int is 32 bit long */ if (a < 0) { return a + 1; /* OK */ } else if (a < 2147483647) { return a + 1; /* OK */ } return a + 1; /* W0722 */ } @end verbatim @subsection Related message @itemize @item @ref{W0723} A value of signed statement might be overflow. @end itemize @subsection Since 1.4.0 @node W0723 @section W0723 @cindex W0723 @subsection Message body A value of signed statement might be overflow. @subsection Content Under construction. @subsection Sample code @verbatim int func(int a) { /* when int is 32 bit long */ if (a < 0) { return a + 1; /* OK */ } else if (a < 2000000000) { return a + 1; /* OK */ } return a + 1; /* W0723 */ } @end verbatim @subsection Related message @itemize @item @ref{W0722} A value of signed statement is overflow. @end itemize @subsection Since 1.4.0 @node W0724 @section W0724 @cindex W0724 @subsection Message body An unrecognized preprocessing directive is ignored by conditional include directive. @subsection Content @b{This message will be supported after AdLint 2.0.0} Under construction. @subsection Sample code @verbatim /* will be added */ @end verbatim @subsection Related message None. @subsection Since After 2.0.0 (planned) @node W0726 @section W0726 @cindex W0726 @subsection Message body A function `%s()' which return value is declared as qualified void type, `return expression;' is found. @subsection Content Under construction. @subsection Sample code @verbatim const void func(int a) { if (a == 0) { return 0; /* W0726 */ } } @end verbatim @subsection Related message None. @subsection Since 1.4.0 @node W0727 @section W0727 @cindex W0727 @subsection Message body The value not part of the enumeration type is used. @subsection Content Under construction. @subsection Sample code @verbatim enum Fruits { APPLE = 1, BANANA, ORANGE }; enum Fruits fruit = 5; /* W0727 */ @end verbatim @subsection Related message @itemize @item @ref{W0728} Other enumeration literal of enumeration type is passed to enumeration literal of formal argument as actual argument. @item @ref{W0729} An enumeration literal of the other enumeration type is substituted for enumeration type object. @item @ref{W0730} A function declared return value to enumeration type returned an enumeration literal of the other enumeration type. @item @ref{W0731} The value of `%s' in 'case' label of 'switch' statement doesn't belong enumeration type of the control statement. @end itemize @subsection Since 1.4.0 @node W0728 @section W0728 @cindex W0728 @subsection Message body Other enumeration literal of enumeration type is passed to enumeration literal of formal argument as actual argument. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED, BLUE, GREEN }; enum Fruits { APPLE, BANANA, ORANGE }; extern void func1(enum Color); void func2(void) { func1(ORANGE); /* W0728 */ } @end verbatim @subsection Related message @itemize @item @ref{W0727} The value not part of the enumeration type is used. @item @ref{W0729} An enumeration literal of the other enumeration type is substituted for enumeration type object. @item @ref{W0730} A function declared return value to enumeration type returned an enumeration literal of the other enumeration type. @item @ref{W0731} The value of `%s' in 'case' label of 'switch' statement doesn't belong enumeration type of the control statement. @end itemize @subsection Since 1.4.0 @node W0729 @section W0729 @cindex W0729 @subsection Message body An enumeration literal of the other enumeration type is substituted for enumeration type object. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED, BLUE, GREEN }; enum Fruits { APPLE, BANANA, ORANGE }; void func(void) { enum Color c; c = ORANGE; /* W0729 */ } @end verbatim @subsection Related message @itemize @item @ref{W0727} The value not part of the enumeration type is used. @item @ref{W0728} Other enumeration literal of enumeration type is passed to enumeration literal of formal argument as actual argument. @item @ref{W0730} A function declared return value to enumeration type returned an enumeration literal of the other enumeration type. @item @ref{W0731} The value of `%s' in 'case' label of 'switch' statement doesn't belong enumeration type of the control statement. @end itemize @subsection Since 1.4.0 @node W0730 @section W0730 @cindex W0730 @subsection Message body A function declared return value to enumeration type returned an enumeration literal of the other enumeration type. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED, BLUE, GREEN }; enum Fruits { APPLE, BANANA, ORANGE }; enum Color func(void) { return ORANGE; /* W0730 */ } @end verbatim @subsection Related message @itemize @item @ref{W0727} The value not part of the enumeration type is used. @item @ref{W0728} Other enumeration literal of enumeration type is passed to enumeration literal of formal argument as actual argument. @item @ref{W0729} An enumeration literal of the other enumeration type is substituted for enumeration type object. @item @ref{W0731} The value of `%s' in 'case' label of 'switch' statement doesn't belong enumeration type of the control statement. @end itemize @subsection Since 1.4.0 @node W0731 @section W0731 @cindex W0731 @subsection Message body The value of `%s' in 'case' label of 'switch' statement doesn't belong enumeration type of the control statement. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED, BLUE, GREEN }; enum Fruits { APPLE, BANANA, ORANGE, GRAPE }; int func(enum Color c) { switch (c) { case RED: return 1; case GRAPE: /* W0731 */ return 2; } return 0; } @end verbatim @subsection Related message @itemize @item @ref{W0727} The value not part of the enumeration type is used. @item @ref{W0728} Other enumeration literal of enumeration type is passed to enumeration literal of formal argument as actual argument. @item @ref{W0729} An enumeration literal of the other enumeration type is substituted for enumeration type object. @item @ref{W0730} A function declared return value to enumeration type returned an enumeration literal of the other enumeration type. @end itemize @subsection Since 1.4.0 @node W0732 @section W0732 @cindex W0732 @subsection Message body Both operand of `&&'operator is bit operator or arithmetic operator. @subsection Content Under construction. @subsection Sample code @verbatim extern void func(unsigned int a, unsigned int b,unsigned int c, unsigned int d) { int r; r = (a + b) && (c - d); /* W0732 */ r = (a * b) && (c / d); /* W0732 */ r = (a << b) && (c << d); /* W0732 */ r = (a >> b) && (c >> d); /* W0732 */ } @end verbatim @subsection Related message @itemize @item @ref{W0733} Both operand of `||'operator is bit operator or arithmetic operator. @item @ref{W0734} A left operand of logical operator is bit operator or arithmetic operator. @item @ref{W0735} A right operand of logical operator is the expression of bit operator or arithmetic operator. @end itemize @subsection Since 1.12.0 @node W0733 @section W0733 @cindex W0733 @subsection Message body Both operand of `||'operator is bit operator or arithmetic operator. @subsection Content Under construction. @subsection Sample code @verbatim extern void func(unsigned int a, unsigned int b,unsigned int c, unsigned int d) { int r; r = (a + b) || (c - d); /* W0733 */ r = (a * b) || (c / d); /* W0733 */ r = (a << b) || (c << d); /* W0733 */ r = (a >> b) || (c >> d); /* W0733 */ } @end verbatim @subsection Related message @itemize @item @ref{W0732} Both operand of `&&'operator is bit operator or arithmetic operator. @item @ref{W0734} A left operand of logical operator is bit operator or arithmetic operator. @item @ref{W0735} A right operand of logical operator is the expression of bit operator or arithmetic operator. @end itemize @subsection Since 1.12.0 @node W0734 @section W0734 @cindex W0734 @subsection Message body A left operand of logical operator is bit operator or arithmetic operator. @subsection Content Under construction. @subsection Sample code @verbatim extern void func(unsigned int a, unsigned int b, unsigned int c) { int r; r = (a + b) && c; /* W0734 */ r = (a - b) && c; /* W0734 */ r = (a << b) || c; /* W0734 */ r = (a >> b) || c; /* W0734 */ } @end verbatim @subsection Related message @itemize @item @ref{W0732} Both operand of `&&'operator is bit operator or arithmetic operator. @item @ref{W0733} Both operand of `||'operator is bit operator or arithmetic operator. @item @ref{W0735} A right operand of logical operator is the expression of bit operator or arithmetic operator. @end itemize @subsection Since 1.12.0 @node W0735 @section W0735 @cindex W0735 @subsection Message body A right operand of logical operator is the expression of bit operator or arithmetic operator. @subsection Content Under construction. @subsection Sample code @verbatim extern void func(unsigned int a, unsigned int b, unsigned int c) { int r; r = a && (b + c); /* W0735 */ r = a && (b - c); /* W0735 */ r = a || (b >> c); /* W0735 */ r = a || (b << c); /* W0735 */ } @end verbatim @subsection Related message @itemize @item @ref{W0732} Both operand of `&&'operator is bit operator or arithmetic operator. @item @ref{W0733} Both operand of `||'operator is bit operator or arithmetic operator. @item @ref{W0734} A left operand of logical operator is bit operator or arithmetic operator. @end itemize @subsection Since 1.12.0 @node W0736 @section W0736 @cindex W0736 @subsection Message body A static variable `%s' which declared in file scope is read and write in one function only. @subsection Content Under construction. @subsection Sample code @verbatim static int a = 10; /* W0736 */ int func1(void) { return 0; } int func2(void) { return ++a; } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0737 @section W0737 @cindex W0737 @subsection Message body The content of `enum %s' is unknown. The enumeration tag is declared without define the content. @subsection Content Under construction. @subsection Sample code @verbatim extern enum Foo foo; /* W0737 */ @end verbatim @subsection Related message None. @subsection Since 1.4.0 @node W0738 @section W0738 @cindex W0738 @subsection Message body An implicit type conversion from positive integer constant expression to smaller unsigned type. The value is rounded. @subsection Content Under construction. @subsection Sample code @verbatim /* when char is 8 bit long */ const unsigned char uc1 = 255; /* OK */ const unsigned char uc2 = 256; /* W0738 */ /* when int is 32 bit long */ const unsigned int ui1 = 4294967295; /* OK */ const unsigned int ui2 = 4294967296; /* W0738 */ @end verbatim @subsection Related message None. @subsection Since 1.4.0 @node W0739 @section W0739 @cindex W0739 @subsection Message body The result of unsigned subtraction in constant expression is minus. @subsection Content Under construction. @subsection Sample code @verbatim const unsigned int ui1 = 3U - 3U; /* OK */ const unsigned int ui2 = 3U - 5U; /* W0739 */ @end verbatim @subsection Related message @itemize @item @ref{W0740} The result of unsigned addition in constant expression beyond the maximum. @item @ref{W0741} The result of unsigned multiplication in constant expression beyond the maximum. @end itemize @subsection Since 1.4.0 @node W0740 @section W0740 @cindex W0740 @subsection Message body The result of unsigned addition in constant expression beyond the maximum. @subsection Content Under construction. @subsection Sample code @verbatim /* when int is 32 bit long */ const unsigned int ui1 = 4294967294U + 1U; /* OK */ const unsigned int ui2 = 4294967295U + 1U; /* W0740 */ @end verbatim @subsection Related message @itemize @item @ref{W0739} The result of unsigned subtraction in constant expression is minus. @item @ref{W0741} The result of unsigned multiplication in constant expression beyond the maximum. @end itemize @subsection Since 1.4.0 @node W0741 @section W0741 @cindex W0741 @subsection Message body The result of unsigned multiplication in constant expression beyond the maximum. @subsection Content Under construction. @subsection Sample code @verbatim /* when int is 32 bit long */ const unsigned int ui1 = 2000000000U * 2U; /* OK */ const unsigned int ui2 = 3000000000U * 2U; /* W0741 */ @end verbatim @subsection Related message @itemize @item @ref{W0739} The result of unsigned subtraction in constant expression is minus. @item @ref{W0740} The result of unsigned addition in constant expression beyond the maximum. @end itemize @subsection Since 1.4.0 @node W0742 @section W0742 @cindex W0742 @subsection Message body A negative integer constant expression converted to unsigned type. @subsection Content Under construction. @subsection Sample code @verbatim #define MACRO (50) unsigned int ui; ui = MACRO - 100; /* W0742 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0743 @section W0743 @cindex W0743 @subsection Message body The value of integer constant expression beyond the range of might be expressed with converted signed type. @subsection Content Under construction. @subsection Sample code @verbatim /* when char is 8 bit long */ const signed char sc1 = 127; /* OK */ const signed char sc2 = 128; /* W0743 */ /* when int is 32 bit long */ const int si1 = 2147483647; /* OK */ const int si2 = 2147483648; /* W0743 */ @end verbatim @subsection Related message None. @subsection Since 1.4.0 @node W0744 @section W0744 @cindex W0744 @subsection Message body The value of this control expression is constant value to be false. This control statement is not run. @subsection Content Under construction. @subsection Sample code @verbatim #define MACRO1 (0) #define MACRO2 (1) if (MACRO1 == MACRO2) { /* W0744 */ ...snip... } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0745 @section W0745 @cindex W0745 @subsection Message body This non-constant array subscript may cause out-of-range access. @subsection Content Under construction. @subsection Sample code @verbatim void func(unsigned int a) { int buf[10]; if (a > 5 && a < 10) { buf[a + 5] = 0; /* W0745 */ } } @end verbatim @subsection Related message @itemize @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W0747 @section W0747 @cindex W0747 @subsection Message body An implicit type conversion from signed short to signed char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(signed char a); void bar(short a) { signed char b = a; /* W0747 */ foo(a); /* W0747 */ } @end verbatim @subsection Related message @itemize @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0748 @section W0748 @cindex W0748 @subsection Message body An implicit type conversion from unsigned short to unsigned char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned char a); void bar(unsigned short a) { unsigned char b = a; /* W0748 */ foo(a); /* W0748 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0749 @section W0749 @cindex W0749 @subsection Message body An implicit type conversion from signed int to signed char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(signed char a); void bar(int a) { signed char b = a; /* W0749 */ foo(a); /* W0749 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0750 @section W0750 @cindex W0750 @subsection Message body An implicit type conversion from signed int to signed short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(short a); void bar(int a) { short b = a; /* W0750 */ foo(a); /* W0750 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0751 @section W0751 @cindex W0751 @subsection Message body An implicit type conversion from unsigned int to unsigned char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned char a); void bar(unsigned int a) { unsigned char b = a; /* W0751 */ foo(a); /* W0751 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0752 @section W0752 @cindex W0752 @subsection Message body An implicit type conversion from unsigned int to unsigned short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned short a); void bar(unsigned int a) { unsigned short b = a; /* W0752 */ foo(a); /* W0752 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0753 @section W0753 @cindex W0753 @subsection Message body An implicit type conversion from signed long to signed char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(signed char a); void bar(long a) { signed char b = a; /* W0753 */ foo(a); /* W0753 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0754 @section W0754 @cindex W0754 @subsection Message body An implicit type conversion from signed long to signed short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(short a); void bar(long a) { short b = a; /* W0754 */ foo(a); /* W0754 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0755 @section W0755 @cindex W0755 @subsection Message body An implicit type conversion from signed long to signed int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(int a); void bar(long a) { int b = a; /* W0755 */ foo(a); /* W0755 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0756 @section W0756 @cindex W0756 @subsection Message body An implicit type conversion from unsigned long to unsigned char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned char a); void bar(unsigned long a) { unsigned char b = a; /* W0756 */ foo(a); /* W0756 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0757 @section W0757 @cindex W0757 @subsection Message body An implicit type conversion from unsigned long to unsigned short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned short a); void bar(unsigned long a) { unsigned short b = a; /* W0757 */ foo(a); /* W0757 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0758 @section W0758 @cindex W0758 @subsection Message body An implicit type conversion from unsigned long to unsigned int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned int a); void bar(unsigned long a) { unsigned int b = a; /* W0758 */ foo(a); /* W0758 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0759 @section W0759 @cindex W0759 @subsection Message body An implicit type conversion from signed long long to signed char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(signed char a); void bar(long long a) { signed char b = a; /* W0759 */ foo(a); /* W0759 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0760 @section W0760 @cindex W0760 @subsection Message body An implicit type conversion from signed long long to signed short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(short a); void bar(long long a) { short b = a; /* W0760 */ foo(a); /* W0760 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0761 @section W0761 @cindex W0761 @subsection Message body An implicit type conversion from signed long long to singed int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(int a); void bar(long long a) { int b = a; /* W0761 */ foo(a); /* W0761 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0762 @section W0762 @cindex W0762 @subsection Message body An implicit type conversion from signed long long to signed long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(long a); void bar(long long a) { long b = a; /* W0762 */ foo(a); /* W0762 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0763 @section W0763 @cindex W0763 @subsection Message body An implicit type conversion from unsigned long long to unsigned char. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned char a); void bar(unsigned long long a) { unsigned char b = a; /* W0763 */ foo(a); /* W0763 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0764 @section W0764 @cindex W0764 @subsection Message body An implicit type conversion from unsigned long long to unsigned short. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned short a); void bar(unsigned long long a) { unsigned short b = a; /* W0764 */ foo(a); /* W0764 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0765 @section W0765 @cindex W0765 @subsection Message body An implicit type conversion from unsigned long long to unsigned int. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned int a); void bar(unsigned long long a) { unsigned int b = a; /* W0765 */ foo(a); /* W0765 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0766} An implicit type conversion from unsigned long long to unsigned long. @end itemize @subsection Since 1.0.0 @node W0766 @section W0766 @cindex W0766 @subsection Message body An implicit type conversion from unsigned long long to unsigned long. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(unsigned long a); void bar(unsigned long long a) { unsigned long b = a; /* W0766 */ foo(a); /* W0766 */ } @end verbatim @subsection Related message @itemize @item @ref{W0747} An implicit type conversion from signed short to signed char. @item @ref{W0748} An implicit type conversion from unsigned short to unsigned char. @item @ref{W0749} An implicit type conversion from signed int to signed char. @item @ref{W0750} An implicit type conversion from signed int to signed short. @item @ref{W0751} An implicit type conversion from unsigned int to unsigned char. @item @ref{W0752} An implicit type conversion from unsigned int to unsigned short. @item @ref{W0753} An implicit type conversion from signed long to signed char. @item @ref{W0754} An implicit type conversion from signed long to signed short. @item @ref{W0755} An implicit type conversion from signed long to signed int. @item @ref{W0756} An implicit type conversion from unsigned long to unsigned char. @item @ref{W0757} An implicit type conversion from unsigned long to unsigned short. @item @ref{W0758} An implicit type conversion from unsigned long to unsigned int. @item @ref{W0759} An implicit type conversion from signed long long to signed char. @item @ref{W0760} An implicit type conversion from signed long long to signed short. @item @ref{W0761} An implicit type conversion from signed long long to singed int. @item @ref{W0762} An implicit type conversion from signed long long to signed long. @item @ref{W0763} An implicit type conversion from unsigned long long to unsigned char. @item @ref{W0764} An implicit type conversion from unsigned long long to unsigned short. @item @ref{W0765} An implicit type conversion from unsigned long long to unsigned int. @end itemize @subsection Since 1.0.0 @node W0767 @section W0767 @cindex W0767 @subsection Message body An implicit type conversion from double to float. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(float a); void bar(double a) { float b = a; /* W0767 */ foo(a); /* W0767 */ } @end verbatim @subsection Related message @itemize @item @ref{W0768} An implicit type conversion from long double to float. @item @ref{W0769} An implicit type conversion from long double to double. @end itemize @subsection Since 1.0.0 @node W0768 @section W0768 @cindex W0768 @subsection Message body An implicit type conversion from long double to float. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(float a); void bar(long double a) { float b = a; /* W0768 */ foo(a); /* W0768 */ } @end verbatim @subsection Related message @itemize @item @ref{W0767} An implicit type conversion from double to float. @item @ref{W0769} An implicit type conversion from long double to double. @end itemize @subsection Since 1.0.0 @node W0769 @section W0769 @cindex W0769 @subsection Message body An implicit type conversion from long double to double. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(double a); void bar(long double a) { double b = a; /* W0769 */ foo(a); /* W0769 */ } @end verbatim @subsection Related message @itemize @item @ref{W0767} An implicit type conversion from double to float. @item @ref{W0768} An implicit type conversion from long double to float. @end itemize @subsection Since 1.0.0 @node W0770 @section W0770 @cindex W0770 @subsection Message body A declaration of identifier `%s' which has external coupling exists more than one. @subsection Content Under construction. @subsection Sample code @file{test1.h} @verbatim extern int func(void); /* W0770 */ @end verbatim @file{test2.h} @verbatim extern int func(void); /* W0770 */ @end verbatim @file{test.c} @verbatim #include "test1.h" #include "test2.h" int func(void) { return 0; } @end verbatim @subsection Related message @itemize @item @ref{W0771} A global identifier `%s' is declared in more than one file. @end itemize @subsection Since 1.0.0 @node W0771 @section W0771 @cindex W0771 @subsection Message body A global identifier `%s' is declared in more than one file. @subsection Content Under construction. @subsection Sample code @file{test1.h} @verbatim extern int func(void); /* W0771 */ extern int a; /* W0771 */ @end verbatim @file{test2.h} @verbatim extern int func(void); /* W0771 */ extern int a; /* W0771 */ @end verbatim @file{test.c} @verbatim #include "test1.h" #include "test2.h" @end verbatim @subsection Related message @itemize @item @ref{W0770} A declaration of identifier `%s' which has external coupling exists more than one. @end itemize @subsection Since 1.0.0 @node W0774 @section W0774 @cindex W0774 @subsection Message body A value of double type is returned from `float %s()'function. @subsection Content Under construction. @subsection Sample code @verbatim extern double foo(void); float bar(void) { return foo(); /* W0774 */ } @end verbatim @subsection Related message @itemize @item @ref{W0775} A value of long double type is returned from `float %s()' function. @item @ref{W0776} A value of long double type is returned from `double %s()'function. @end itemize @subsection Since 1.0.0 @node W0775 @section W0775 @cindex W0775 @subsection Message body A value of long double type is returned from `float %s()' function. @subsection Content Under construction. @subsection Sample code @verbatim extern long double foo(void); float bar(void) { return foo(); /* W0775 */ } @end verbatim @subsection Related message @itemize @item @ref{W0774} A value of double type is returned from `float %s()'function. @item @ref{W0776} A value of long double type is returned from `double %s()'function. @end itemize @subsection Since 1.0.0 @node W0776 @section W0776 @cindex W0776 @subsection Message body A value of long double type is returned from `double %s()'function. @subsection Content Under construction. @subsection Sample code @verbatim extern long double foo(void); double bar(void) { return foo(); /* W0776 */ } @end verbatim @subsection Related message @itemize @item @ref{W0774} A value of double type is returned from `float %s()'function. @item @ref{W0775} A value of long double type is returned from `float %s()' function. @end itemize @subsection Since 1.0.0 @node W0777 @section W0777 @cindex W0777 @subsection Message body An implicit type conversion from compound expression of float to double. @subsection Content Under construction. @subsection Sample code @verbatim void func(float a, float b) { double c = a + b; /* W0777 */ } @end verbatim @subsection Related message @itemize @item @ref{W0778} An implicit type conversion from compound expression of float to long double. @item @ref{W0779} An implicit type conversion from compound expression of to long double. @end itemize @subsection Since 1.0.0 @node W0778 @section W0778 @cindex W0778 @subsection Message body An implicit type conversion from compound expression of float to long double. @subsection Content Under construction. @subsection Sample code @verbatim void func(float a, float b) { long double c = a + b; /* W0778 */ } @end verbatim @subsection Related message @itemize @item @ref{W0777} An implicit type conversion from compound expression of float to double. @item @ref{W0779} An implicit type conversion from compound expression of to long double. @end itemize @subsection Since 1.0.0 @node W0779 @section W0779 @cindex W0779 @subsection Message body An implicit type conversion from compound expression of to long double. @subsection Content Under construction. @subsection Sample code @verbatim void func(double a, double b) { long double c = a + b; /* W0779 */ } @end verbatim @subsection Related message @itemize @item @ref{W0777} An implicit type conversion from compound expression of float to double. @item @ref{W0778} An implicit type conversion from compound expression of float to long double. @end itemize @subsection Since 1.0.0 @node W0780 @section W0780 @cindex W0780 @subsection Message body Unsigned left shift operator `<<' in constant expression truncate non-zero high-order bit. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int foo(void) { return 0x08000000U << 5; /* W0780 */ } @end verbatim @subsection Related message None. @subsection Since 1.18.0 @node W0781 @section W0781 @cindex W0781 @subsection Message body This 'switch' statement have only one path. It's verbose. @subsection Content Under construction. @subsection Sample code @verbatim int foo(const int i) { if (i > 5) { switch (i) { /* W0781 */ case 0: return 1; case 5: return 2; default: return 3; } } switch (i) { /* OK */ case 0: return 4; default: switch (i) { /* W0781 */ case 10: return 5; default: return 6; } } } @end verbatim @subsection Related message None. @subsection Since 1.6.0 @node W0783 @section W0783 @cindex W0783 @subsection Message body Cast is being made including the pointer point to incomplete type. This program is not portable. @subsection Content Under construction. @subsection Sample code @verbatim extern struct Foo *gp; void foo(int *p) { gp = (struct Foo *) p; /* W0783 */ } @end verbatim @subsection Related message None. @subsection Since 1.18.0 @node W0784 @section W0784 @cindex W0784 @subsection Message body The nonstandard escape sequence is used. @subsection Content @b{This message will be supported after AdLint 2.0.0} Under construction. @subsection Sample code @verbatim /* will be added */ @end verbatim @subsection Related message None. @subsection Since After 2.0.0 (planned) @node W0785 @section W0785 @cindex W0785 @subsection Message body This declaration of `%s' is different from a former declaration @subsection Content Under construction. @subsection Sample code @verbatim struct AAA { int a; }; union AAA { /* W0785 */ long a; int b; }; @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0786 @section W0786 @cindex W0786 @subsection Message body A bit field which having the type of except 'int', 'signed int' or 'unsigned int' doesn't support in ISO C standards @subsection Content Under construction. @subsection Sample code @verbatim struct ST { /* W0786 */ unsigned int a:3; unsigned long b:1; }; @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0787 @section W0787 @cindex W0787 @subsection Message body A type of `%s' is different from the past declaration in the different scope. @subsection Content Under construction. @subsection Sample code @verbatim void func1(void) { extern int num; extern void func3(void); } void func2(void) { extern double num; /* W0787 */ extern void func3(int); /* W0787 */ } @end verbatim @subsection Related message @itemize @item @ref{W0788} A type of `%s' is different from the past declaration in the same scope. @item @ref{W0789} A type of `%s' is different from the past declaration in the wider scope. @end itemize @subsection Since 1.6.0 @node W0788 @section W0788 @cindex W0788 @subsection Message body A type of `%s' is different from the past declaration in the same scope. @subsection Content Under construction. @subsection Sample code @verbatim extern int func(void); void func(void) /* W0788 */ { typedef int num; double num; /* W0788 */ } @end verbatim @subsection Related message @itemize @item @ref{W0787} A type of `%s' is different from the past declaration in the different scope. @item @ref{W0789} A type of `%s' is different from the past declaration in the wider scope. @end itemize @subsection Since 1.6.0 @node W0789 @section W0789 @cindex W0789 @subsection Message body A type of `%s' is different from the past declaration in the wider scope. @subsection Content Under construction. @subsection Sample code @verbatim int num = 0; extern int func1(void); void func2(void) { extern double num; /* W0789 */ extern void func1(void); /* W0789 */ } @end verbatim @subsection Related message @itemize @item @ref{W0788} A type of `%s' is different from the past declaration in the same scope. @item @ref{W0789} A type of `%s' is different from the past declaration in the wider scope. @end itemize @subsection Since 1.6.0 @node W0790 @section W0790 @cindex W0790 @subsection Message body An global object or a function `%s' is declared in more than one file. @subsection Content Under construction. @subsection Sample code @verbatim int func(void) { return 0; } int a = 0; int func(void) /* W0790 */ { return 1; } int a = 1; /* W0790 */ @end verbatim @subsection Related message @itemize @item @ref{W0791} An global object or a function `%s' is declared in more than one file. @end itemize @subsection Since 1.0.0 @node W0791 @section W0791 @cindex W0791 @subsection Message body An global object or a function `%s' is declared in more than one file. @subsection Content Under construction. @subsection Sample code @file{test1.c} @verbatim int func(void) /* W0791 */ { return 0; } int a = 0; /* W0791 */ @end verbatim @file{test2.c} @verbatim int func(void) /* W0791 */ { return 1; } int a = 1; /* W0791 */ @end verbatim @subsection Related message @itemize @item @ref{W0790} An global object or a function `%s' is declared in more than one file. @end itemize @subsection Since 1.0.0 @node W0792 @section W0792 @cindex W0792 @subsection Message body A floating point type object cast to function pointer and vice versa. @subsection Content Under construction. @subsection Sample code @verbatim int (*foo(const float f))(void) { return (int (*)(void)) f; /* W0792 */ } @end verbatim @subsection Related message None. @subsection Since 1.18.0 @node W0793 @section W0793 @cindex W0793 @subsection Message body A function pointer cast to pointer to point an object and vice versa. @subsection Content Under construction. @subsection Sample code @verbatim typedef int (*funptr_t)(void); funptr_t foo(float *p) { return (funptr_t) p; /* W0793 */ } @end verbatim @subsection Related message None. @subsection Since 1.18.0 @node W0794 @section W0794 @cindex W0794 @subsection Message body Left shift operation of signed value causes implementation-defined behavior. @subsection Content Under construction. @subsection Sample code @verbatim int func(int i) { return i << 1; /* W0794 */ } @end verbatim @subsection Related message None. @subsection Since 1.18.0 @node W0795 @section W0795 @cindex W0795 @subsection Message body The number of an actual argument in function call is smaller than the number of a formal argument in the function prototype declaration. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(int, int, int); static void bar(void) { foo(1, 2); /* W0795 */ } @end verbatim @subsection Related message @itemize @item @ref{W0796} The number of an actual argument in function call is bigger than the number of a formal argument in the function prototype declaration. @item @ref{W0797} The number of an actual argument in function call is different from the number of a formal argument in the function declaration. @end itemize @subsection Since 1.0.0 @node W0796 @section W0796 @cindex W0796 @subsection Message body The number of an actual argument in function call is bigger than the number of a formal argument in the function prototype declaration. @subsection Content Under construction. @subsection Sample code @verbatim extern void foo(int, int); static void bar(void) { foo(1, 2, 3); /* W0796 */ } @end verbatim @subsection Related message @itemize @item @ref{W0795} The number of an actual argument in function call is smaller than the number of a formal argument in the function prototype declaration. @item @ref{W0797} The number of an actual argument in function call is different from the number of a formal argument in the function declaration. @end itemize @subsection Since 1.0.0 @node W0797 @section W0797 @cindex W0797 @subsection Message body The number of an actual argument in function call is different from the number of a formal argument in the function declaration. @subsection Content Under construction. @subsection Sample code @verbatim static int foo(int, int); static int bar(void) { int a = foo(1); /* W0795 */ int b = foo(1, 2); int c = foo(1, 2, 3); /* W0795 */ } static int foo(int a, int b) { return a + b; } @end verbatim @subsection Related message @itemize @item @ref{W0795} The number of an actual argument in function call is smaller than the number of a formal argument in the function prototype declaration. @item @ref{W0796} The number of an actual argument in function call is bigger than the number of a formal argument in the function prototype declaration. @end itemize @subsection Since 1.0.0 @node W0798 @section W0798 @cindex W0798 @subsection Message body Must not use the value with incomplete union object. @subsection Content Under construction. @subsection Sample code @verbatim extern union UN *p; void func(void) { int i = 0; if (p) { i = p->i; /* W0798 */ } } @end verbatim @subsection Related message @itemize @item @ref{W0799} Must not use the value with incomplete structure object. @item @ref{W0800} `%s' is incomplete type which doesn't have a linkage.This is undefined. @end itemize @subsection Since 1.0.0 @node W0799 @section W0799 @cindex W0799 @subsection Message body Must not use the value with incomplete structure object. @subsection Content Under construction. @subsection Sample code @verbatim extern struct ST *p; void func(void) { int i = 0; if (p) { i = p->i; /* W0799 */ } } @end verbatim @subsection Related message @itemize @item @ref{W0798} Must not use the value with incomplete union object. @item @ref{W0800} `%s' is incomplete type which doesn't have a linkage.This is undefined. @end itemize @subsection Since 1.0.0 @node W0800 @section W0800 @cindex W0800 @subsection Message body `%s' is incomplete type which doesn't have a linkage.This is undefined. @subsection Content Under construction. @subsection Sample code @verbatim int a[]; /* W0800 */ struct ST s = { 0 }; /* W0800 */ @end verbatim @subsection Related message @itemize @item @ref{W0798} Must not use the value with incomplete union object. @item @ref{W0799} Must not use the value with incomplete structure object. @end itemize @subsection Since 1.0.0 @node W0801 @section W0801 @cindex W0801 @subsection Message body This structure or union doesn't have a named member. @subsection Content Under construction. @subsection Sample code @verbatim struct foo { /* W0801 */ }; struct bar { /* W0801 */ int; int :1; long; double; }; @end verbatim @subsection Related message None. @subsection Since 1.4.0 @node W0802 @section W0802 @cindex W0802 @subsection Message body A form of after `#include' preprocessing directive is not nor \"file name\". @subsection Content @b{This message will be supported after AdLint 2.0.0} Under construction. @subsection Sample code @verbatim #include fruits.h /* W0802 */ #define MACRO 1 #include MACRO /* W0802 */ @end verbatim @subsection Related message None. @subsection Since After 2.0.0 (planned) @node W0803 @section W0803 @cindex W0803 @subsection Message body A preprocessing directive is described in actual argument of function-like macro. @subsection Content @b{This message will be supported after AdLint 2.0.0} Under construction. @subsection Sample code @verbatim /* will be added */ @end verbatim @subsection Related message None. @subsection Since After 2.0.0 (planned) @node W0804 @section W0804 @cindex W0804 @subsection Message body The 'defined' syntax is not `defined (identifier)' nor `defined identifier'. @subsection Content Under construction. @subsection Sample code @verbatim #if defined "MACRO" /* W0804 */ #endif @end verbatim @subsection Related message @itemize @item @ref{W0805} An identifier to be actual argument doesn't find in `defined'. @end itemize @subsection Since 1.0.0 @node W0805 @section W0805 @cindex W0805 @subsection Message body An identifier to be actual argument doesn't find in `defined'. @subsection Content Under construction. @subsection Sample code @verbatim #if defined "foo" /* W0805 */ int i = 0; #endif @end verbatim @subsection Related message @itemize @item @ref{W0804} The 'defined' syntax is not `defined (identifier)' nor `defined identifier'. @end itemize @subsection Since 1.16.0 @node W0806 @section W0806 @cindex W0806 @subsection Message body It is trying to define a macro named `defined'. @subsection Content Under construction. @subsection Sample code @verbatim #define defined !defined /* W0806 */ @end verbatim @subsection Related message @itemize @item @ref{W0807} It is trying to delete pre-defined macro `%s'. @item @ref{W0808} It is trying to redefine pre-defined macro `%s'. @end itemize @subsection Since 1.4.0 @node W0807 @section W0807 @cindex W0807 @subsection Message body It is trying to delete pre-defined macro `%s'. @subsection Content Under construction. @subsection Sample code @verbatim #undef __STDC_VERSION__ /* W0807 */ @end verbatim @subsection Related message @itemize @item @ref{W0806} It is trying to define a macro named `defined'. @item @ref{W0808} It is trying to redefine pre-defined macro `%s'. @end itemize @subsection Since 1.6.0 @node W0808 @section W0808 @cindex W0808 @subsection Message body It is trying to redefine pre-defined macro `%s'. @subsection Content Under construction. @subsection Sample code @verbatim #define __FILE__ "test.c" /* W0808 */ @end verbatim @subsection Related message @itemize @item @ref{W0806} It is trying to define a macro named `defined'. @item @ref{W0807} It is trying to delete pre-defined macro `%s'. @end itemize @subsection Since 1.6.0 @node W0809 @section W0809 @cindex W0809 @subsection Message body An identifier `%s' is reserved by the library. @subsection Content Under construction. @subsection Sample code @verbatim extern int __value; /* W0809 */ int _VAL = 10; /* W0809 */ static void _func(void); /* W0809 */ @end verbatim @subsection Related message None. @subsection Since 1.6.0 @node W0810 @section W0810 @cindex W0810 @subsection Message body `@{@}' is required to clarify this structure of `if-if-else' statement. @subsection Content Under construction. @subsection Sample code @verbatim int foo(int i, int j) { if (i < 0) /* W0810 */ if (j > 0) { return 0; } else { return 1; } if (i > 0) /* W0810 */ if (j < 0) { return 2; } else { return 3; } return 4; } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W0811 @section W0811 @cindex W0811 @subsection Message body The `defined' token which the expanded result of this macro doesn't allowed. @subsection Content Under construction. @subsection Sample code @verbatim #define COND defined(FOO) #if COND /* W0811 */ int i = 0; #endif @end verbatim @subsection Related message None. @subsection Since 1.16.0 @node W0827 @section W0827 @cindex W0827 @subsection Message body An initial value of nested structure's element doesn't enclosed in curly brace `@{@}'. @subsection Content Under construction. @subsection Sample code @verbatim struct ST { int i; int j; }; struct ST a[2] = { 10, 20, 30, 40 }; /* W0827 */ @end verbatim @subsection Related message @itemize @item @ref{W0828} An initial value of nested array's element doesn't enclosed in curly brace `@{ @}'. @end itemize @subsection Since 1.0.0 @node W0828 @section W0828 @cindex W0828 @subsection Message body An initial value of nested array's element doesn't enclosed in curly brace `@{@}'. @subsection Content Under construction. @subsection Sample code @verbatim int a[3][2] = { {1, 2}, {3, 4}, {5, 6} }; int b[3][2] = { 1, 2, 3, 4, 5, 6 }; /* W0828 */ @end verbatim @subsection Related message @itemize @item @ref{W0827} An initial value of nested structure's element doesn't enclosed in curly brace `@{ @}'. @end itemize @subsection Since 1.0.0 @node W0830 @section W0830 @cindex W0830 @subsection Message body There is comma `,' at the end of the enumerator list. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { Red, Green, Blue, }; /* W0830 */ @end verbatim @subsection Related message None. @subsection Since 1.18.0 @node W0831 @section W0831 @cindex W0831 @subsection Message body This is language extension for inline assembly. It will be ignored between #asm and #endasm. @subsection Content Under construction. @subsection Sample code @verbatim /* will be added */ @end verbatim @subsection Related message @itemize @item @ref{W0832} An inline assembly syntax is using. This is the language extension. This code will be ignored. @end itemize @subsection Since 1.0.0 @node W0832 @section W0832 @cindex W0832 @subsection Message body An inline assembly syntax is using. This is the language extension. This code will be ignored. @subsection Content Under construction. @subsection Sample code @verbatim #define ASM_CODE asm("movl %ecx, %eax") void foo(int arg1, int *arg2, int arg3) { asm("movl %ecx, %eax"); /* W0832 */ __asm__("movl %ecx, (%eax)"); /* W0832 */ asm { /* W0832 */ xorl eax, eax } ASM_CODE; /* W0832 */ __asm__ volatile ( /* W0832 */ "int $0x80" : "=a" (r) "+b" (arg1), "+c" (arg2), "+d" (arg3) : "a" (128) : "memory", "cc"); } @end verbatim @subsection Related message @itemize @item @ref{W0831} This is language extension for inline assembly. It will be ignored between #asm and #endasm. @end itemize @subsection Since 1.8.0 @node W0833 @section W0833 @cindex W0833 @subsection Message body A suffix 'LL' is using. @subsection Content Under construction. @subsection Sample code @verbatim long long ll = 123LL; /* W0833 */ @end verbatim @subsection Related message @itemize @item @ref{W0834} A long long type is using. @end itemize @subsection Since 1.18.0 @node W0834 @section W0834 @cindex W0834 @subsection Message body A long long type is using. @subsection Content Under construction. @subsection Sample code @verbatim extern long long ll; /* W0834 */ @end verbatim @subsection Related message @itemize @item @ref{W0833} A suffix 'LL' is using. @end itemize @subsection Since 1.18.0 @node W0835 @section W0835 @cindex W0835 @subsection Message body A macro which receives variable argument is defined. @subsection Content @b{This message will be supported after AdLint 2.0.0} Under construction. @subsection Sample code @verbatim /* will be added */ @end verbatim @subsection Related message None. @subsection Since After 2.0.0 (planned) @node W0947 @section W0947 @cindex W0947 @subsection Message body String literal is specified directly. @subsection Content Under construction. @subsection Sample code @verbatim func("Apple, Banana, Chocolate"); /* W0947 */ @end verbatim @subsection Related message @itemize @item @ref{W0948} Character constant %s is specified directly. @item @ref{W0949} A value `%s' is used directly for size definition of bit field. @item @ref{W0950} Integer constant `%s' is specified directly as an array size. @end itemize @subsection Since 1.0.0 @node W0948 @section W0948 @cindex W0948 @subsection Message body Character constant %s is specified directly. @subsection Content Under construction. @subsection Sample code @verbatim func('a'); /* W0948 */ @end verbatim @subsection Related message @itemize @item @ref{W0947} String literal is specified directly. @item @ref{W0949} A value `%s' is used directly for size definition of bit field. @item @ref{W0950} Integer constant `%s' is specified directly as an array size. @end itemize @subsection Since 1.0.0 @node W0949 @section W0949 @cindex W0949 @subsection Message body A value `%s' is used directly for size definition of bit field. @subsection Content Under construction. @subsection Sample code @verbatim struct ST { unsigned int a:1; unsigned int a:2; /* W0949 */ unsigned int a:3; /* W0949 */ }; @end verbatim @subsection Related message @itemize @item @ref{W0947} String literal is specified directly. @item @ref{W0948} Character constant %s is specified directly. @item @ref{W0950} Integer constant `%s' is specified directly as an array size. @end itemize @subsection Since 1.0.0 @node W0950 @section W0950 @cindex W0950 @subsection Message body Integer constant `%s' is specified directly as an array size. @subsection Content Under construction. @subsection Sample code @verbatim int a[10]; /* W0950 */ @end verbatim @subsection Related message @itemize @item @ref{W0947} String literal is specified directly. @item @ref{W0948} Character constant %s is specified directly. @item @ref{W0949} A value `%s' is used directly for size definition of bit field. @end itemize @subsection Since 1.0.0 @node W1026 @section W1026 @cindex W1026 @subsection Message body %sth actual argument is not object type. @subsection Content Under construction. @subsection Sample code @verbatim extern struct st s; extern void foo(struct st); void bar(void) { foo(s); /* W1026 */ } @end verbatim @subsection Related message None. @subsection Since 1.18.0 @node W1027 @section W1027 @cindex W1027 @subsection Message body A base type of array is function type. This is meaningless. @subsection Content Under construction. @subsection Sample code @verbatim int (fun_tbl[20])(void); /* W1027 */ @end verbatim @subsection Related message @itemize @item @ref{W1028} A base type of array is an array with unknown size. Incomplete type of array will not build. @item @ref{W1029} A base type of array is an obscure structure or union. Incomplete type of array will not build. @end itemize @subsection Since 1.0.0 @node W1028 @section W1028 @cindex W1028 @subsection Message body A base type of array is an array with unknown size. Incomplete type of array will not build. @subsection Content Under construction. @subsection Sample code @verbatim int a[4][]; /* W1028 */ @end verbatim @subsection Related message @itemize @item @ref{W1027} A base type of array is function type. This is meaningless. @item @ref{W1029} A base type of array is an obscure structure or union. Incomplete type of array will not build. @end itemize @subsection Since 1.0.0 @node W1029 @section W1029 @cindex W1029 @subsection Message body A base type of array is an obscure structure or union. Incomplete type of array will not build. @subsection Content Under construction. @subsection Sample code @verbatim struct ST a[5]; /* W1029 */ @end verbatim @subsection Related message @itemize @item @ref{W1027} A base type of array is function type. This is meaningless. @item @ref{W1028} A base type of array is an array with unknown size. Incomplete type of array will not build. @end itemize @subsection Since 1.0.0 @node W1030 @section W1030 @cindex W1030 @subsection Message body A label `%s' is used more than two times in this function. @subsection Content Under construction. @subsection Sample code @verbatim void func(int a, int b) { if (a == 0) { int c = 0; RETRY: b = 10; } if (b != 0) { goto RETRY; } RETRY: /* W1030 */ b = 1; ...snip... } @end verbatim @subsection Related message None. @subsection Since 1.6.0 @node W1031 @section W1031 @cindex W1031 @subsection Message body An Object `%s' is declared both external coupling and internal coupling. This action is undefined. @subsection Content Under construction. @subsection Sample code @file{test.h} @verbatim extern int a; @end verbatim @file{test.c} @verbatim #include "test.h" static int a; /* W1031 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W1032 @section W1032 @cindex W1032 @subsection Message body A tentative definition of variable '%s' which has internal linkage must not incomplete type. @subsection Content Under construction. @subsection Sample code @verbatim static struct ST a[3]; /* W1032 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W1033 @section W1033 @cindex W1033 @subsection Message body A 'volatile' or 'const' qualifier is used for the type of function return value. This action is undefined. @subsection Content Under construction. @subsection Sample code @verbatim extern const int func1(int); /* W1033 */ const int func2(int i) /* W1033 */ { return i + 1; } const int *func3(int i) /* OK */ { static int j; j = i; return &j; } @end verbatim @subsection Related message None. @subsection Since 1.4.0 @node W1034 @section W1034 @cindex W1034 @subsection Message body It is declared at function `%s()' with static storage class specifier in block scope. This usage is meaningless. @subsection Content Under construction. @subsection Sample code @verbatim int func(void) { static int func1(void); /* W1034 */ extern int func2(void); } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W1035 @section W1035 @cindex W1035 @subsection Message body `%s' declared typedef. It cannot be redeclared inside an inner scope without using explicit type. @subsection Content @b{This message will be supported after AdLint 2.0.0} Under construction. @subsection Sample code @verbatim /* will be added */ @end verbatim @subsection Related message @itemize @item @ref{W1036} `%s' declared typedef. It cannot be redeclared as a member of structure or union without using explicit type. @end itemize @subsection Since After 2.0.0 (planned) @node W1036 @section W1036 @cindex W1036 @subsection Message body `%s' declared typedef. It cannot be redeclared as a member of structure or union without using explicit type. @subsection Content @b{This message will be supported after AdLint 2.0.0} Under construction. @subsection Sample code @verbatim /* will be added */ @end verbatim @subsection Related message @itemize @item @ref{W1035} `%s' declared typedef. It cannot be redeclared inside an inner scope without using explicit type. @end itemize @subsection Since After 2.0.0 (planned) @node W1037 @section W1037 @cindex W1037 @subsection Message body `%s' which has external coupling is declared more than one, this is incompatible. @subsection Content Under construction. @subsection Sample code @file{test1.c} @verbatim extern void func(void); /* W1037 */ extern int a; /* W1037 */ @end verbatim @file{test2.c} @verbatim extern int func(int); /* W1037 */ extern long a; /* W1037 */ @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W1039 @section W1039 @cindex W1039 @subsection Message body `ll' is used in %sth conversion specifier. @subsection Content Under construction. @subsection Sample code @verbatim extern int printf(const char *, ...); void foo(long long ll) { printf("%lld", ll); /* W1039 */ } @end verbatim @subsection Related message None. @subsection Since 1.18.0 @node W1040 @section W1040 @cindex W1040 @subsection Message body An unrecognizable string is described after preprocessing directive. @subsection Content Under construction. @subsection Sample code @verbatim #define TEST #ifdef TEST #if defined(CASE_1) int i = 1; #elif defined(CASE_2) int i = 2; #endif CASE /* W1040 */ #else int i = 0; #endif TEST /* W1040 */ @end verbatim @subsection Related message @itemize @item @ref{W1041} `%s' is not official preprocessing directive of ISO C standards. @item @ref{W1042} 'sizeof' operator is using in preprocessing directive. This is the language extension. @end itemize @subsection Since 1.16.0 @node W1041 @section W1041 @cindex W1041 @subsection Message body `%s' is not official preprocessing directive of ISO C standards. @subsection Content Under construction. @subsection Sample code @verbatim #compiler_specific_extension 1 2.3 "4" /* W1041 */ @end verbatim @subsection Related message @itemize @item @ref{W1040} An unrecognizable string is described after preprocessing directive. @item @ref{W1042} 'sizeof' operator is using in preprocessing directive. This is the language extension. @end itemize @subsection Since 1.16.0 @node W1042 @section W1042 @cindex W1042 @subsection Message body 'sizeof' operator is using in preprocessing directive. This is the language extension. @subsection Content @b{This message will be supported after AdLint 2.0.0} Under construction. @subsection Sample code @verbatim /* will be added */ @end verbatim @subsection Related message @itemize @item @ref{W1040} An unrecognizable string is described after preprocessing directive. @item @ref{W1041} `%s' is not official preprocessing directive of ISO C standards. @end itemize @subsection Since After 2.0.0 (planned) @node W1043 @section W1043 @cindex W1043 @subsection Message body `@@ address' is not supported ISO C standards. It will be considered as language extension. @subsection Content @b{This message will be supported after AdLint 2.0.0} Under construction. @subsection Sample code @verbatim /* will be added */ @end verbatim @subsection Related message @itemize @item @ref{W1045} This `@@ word' syntax will be ignored. @end itemize @subsection Since After 2.0.0 (planned) @node W1045 @section W1045 @cindex W1045 @subsection Message body This `@@ word' syntax will be ignored. @subsection Content @b{This message will be supported after AdLint 2.0.0} Under construction. @subsection Sample code @verbatim /* will be added */ @end verbatim @subsection Related message @itemize @item @ref{W1043} `@@ address' is not supported ISO C standards. It will be considered as language extension. @end itemize @subsection Since After 2.0.0 (planned) @node W1046 @section W1046 @cindex W1046 @subsection Message body A space character is ignored between `\' and line feed. @subsection Content Under construction. @subsection Sample code @verbatim #define FOO(a, b) /* OK */ \ ( /* W1046 */ \ (a) + (b) /* W1046 */ \ ) @end verbatim @subsection Related message None. @subsection Since 1.16.0 @node W1047 @section W1047 @cindex W1047 @subsection Message body The struct, union or array's initializer is not literal. @subsection Content Under construction. @subsection Sample code @verbatim int foo(int i, int j) { int a[] = { 0, i, j }; /* W1047 */ return a[1]; } @end verbatim @subsection Related message None. @subsection Since 1.18.0 @node W1048 @section W1048 @cindex W1048 @subsection Message body The multi byte string literal is an implementation defined value. @subsection Content @b{This message will be supported after AdLint 2.0.0} Under construction. @subsection Sample code @verbatim /* will be added */ @end verbatim @subsection Related message None. @subsection Since After 2.0.0 (planned) @node W1049 @section W1049 @cindex W1049 @subsection Message body The result of conversion to signed integer type in integer expression might not be expressed by a signed type. @subsection Content Under construction. @subsection Sample code example 1 @verbatim void func1(signed int si) { signed char sc = (signed char) si + 10; /* W1049 */ } @end verbatim example 2 @verbatim void func(unsigned int ui) { unsigned int a = ui * ui; } @end verbatim @subsection Related message @itemize @item @ref{W1050} The result of conversion to signed integer type in integer expression is not express by a signed type. @item @ref{W1051} The result of unsigned arithmetic expression typed `%s' is going around 0 by overflow. @item @ref{W1052} The result of unsigned arithmetic expression typed `%s' can be going around by overflow. @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W1050 @section W1050 @cindex W1050 @subsection Message body The result of conversion to signed integer type in integer expression is not express by a signed type. @subsection Content Under construction. @subsection Sample code example 1 @verbatim void func(signed int si) { signed char sc = 0; if (si > 127) { sc = (signed char) si + 1; /* W1050 */ } } @end verbatim example 2 @verbatim void func(unsigned int ui) { unsigned int a = ui * ui; } @end verbatim @subsection Related message @itemize @item @ref{W1049} The result of conversion to signed integer type in integer expression might not be expressed by a signed type. @item @ref{W1051} The result of unsigned arithmetic expression typed `%s' is going around 0 by overflow. @item @ref{W1052} The result of unsigned arithmetic expression typed `%s' can be going around by overflow. @item @ref{C1000} Warning above is detected in the following context. @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 1.0.0 @node W1051 @section W1051 @cindex W1051 @subsection Message body The result of unsigned arithmetic expression typed `%s' is going around 0 by overflow. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int func(unsigned int ui) { if (ui > 0xEFFFFFFFU) { return ui + 0x10000000U; /* W1051 */ } return 0U; } @end verbatim @subsection Related message @itemize @item @ref{W1049} The result of conversion to signed integer type in integer expression might not be expressed by a signed type. @item @ref{W1050} The result of conversion to signed integer type in integer expression is not express by a signed type. @item @ref{W1052} The result of unsigned arithmetic expression typed `%s' can be going around by overflow. @end itemize @subsection Since 1.0.0 @node W1052 @section W1052 @cindex W1052 @subsection Message body The result of unsigned arithmetic expression typed `%s' can be going around by overflow. @subsection Content Under construction. @subsection Sample code @verbatim unsigned int func(unsigned int a, unsigned int b) { if (a > 0xEFFFFFFFU && b < 0x20000000U) { return a + b; /* W1052 */ } return 0U; } @end verbatim @subsection Related message @itemize @item @ref{W1049} The result of conversion to signed integer type in integer expression might not be expressed by a signed type. @item @ref{W1050} The result of conversion to signed integer type in integer expression is not express by a signed type. @item @ref{W1051} The result of unsigned arithmetic expression typed `%s' is going around 0 by overflow. @end itemize @subsection Since 1.0.0 @node W1053 @section W1053 @cindex W1053 @subsection Message body A numeric constants is passed to an actual argument which formal argument is enumeration type. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; extern void func1(enum Color); void func2(void) { func1(4); /* W1053 */ } @end verbatim @subsection Related message @itemize @item @ref{W1054} A non enumeration type expression is substituted for the enumeration type. @item @ref{W1055} A non enumeration type expression is returned from the function which return value is enumeration type. @item @ref{W1056} An object of actual argument is different enumeration type which formal argument is enumeration type. @item @ref{W1057} An enumeration value is substituted for different enumeration type object. @item @ref{W1058} A different enumeration type of value is returned from a function which return value is enumeration type. @item @ref{W1059} An enumeration value is passed to actual argument which formal argument is not enumeration type. @item @ref{W1060} An enumeration value is returned from a function which return value is not enumeration type . @item @ref{W1061} Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type. @item @ref{W1062} Non constant expression is substituted for the enumeration type object. @item @ref{W1063} The return value returned from enumeration type function to non constant expression. @item @ref{W1064} A integer constant is used in switch statement where case label is enumeration type. @item @ref{W1065} A value of different enumeration type is used in switch statement where case label is an enumeration type. @end itemize @subsection Since 1.6.0 @node W1054 @section W1054 @cindex W1054 @subsection Message body A non enumeration type expression is substituted for the enumeration type. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; extern enum Color col; void func2(void) { col = 4; /* W1054 */ } @end verbatim @subsection Related message @itemize @item @ref{W1053} A numeric constants is passed to an actual argument which formal argument is enumeration type. @item @ref{W1055} A non enumeration type expression is returned from the function which return value is enumeration type. @item @ref{W1056} An object of actual argument is different enumeration type which formal argument is enumeration type. @item @ref{W1057} An enumeration value is substituted for different enumeration type object. @item @ref{W1058} A different enumeration type of value is returned from a function which return value is enumeration type. @item @ref{W1059} An enumeration value is passed to actual argument which formal argument is not enumeration type. @item @ref{W1060} An enumeration value is returned from a function which return value is not enumeration type . @item @ref{W1061} Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type. @item @ref{W1062} Non constant expression is substituted for the enumeration type object. @item @ref{W1063} The return value returned from enumeration type function to non constant expression. @item @ref{W1064} A integer constant is used in switch statement where case label is enumeration type. @item @ref{W1065} A value of different enumeration type is used in switch statement where case label is an enumeration type. @end itemize @subsection Since 1.6.0 @node W1055 @section W1055 @cindex W1055 @subsection Message body A non enumeration type expression is returned from the function which return value is enumeration type. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; enum Color func(void) { return 4; /* W1055 */ } @end verbatim @subsection Related message @itemize @item @ref{W1053} A numeric constants is passed to an actual argument which formal argument is enumeration type. @item @ref{W1054} A non enumeration type expression is substituted for the enumeration type. @item @ref{W1056} An object of actual argument is different enumeration type which formal argument is enumeration type. @item @ref{W1057} An enumeration value is substituted for different enumeration type object. @item @ref{W1058} A different enumeration type of value is returned from a function which return value is enumeration type. @item @ref{W1059} An enumeration value is passed to actual argument which formal argument is not enumeration type. @item @ref{W1060} An enumeration value is returned from a function which return value is not enumeration type . @item @ref{W1061} Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type. @item @ref{W1062} Non constant expression is substituted for the enumeration type object. @item @ref{W1063} The return value returned from enumeration type function to non constant expression. @item @ref{W1064} A integer constant is used in switch statement where case label is enumeration type. @item @ref{W1065} A value of different enumeration type is used in switch statement where case label is an enumeration type. @end itemize @subsection Since 1.6.0 @node W1056 @section W1056 @cindex W1056 @subsection Message body An object of actual argument is different enumeration type which formal argument is enumeration type. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED = 1, GREEN= 2, BLUE = 4 }; enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER }; extern void func1(enum Color); void func2(enum Season ssn) { func1(ssn); /* W1056 */ } @end verbatim @subsection Related message @itemize @item @ref{W1053} A numeric constants is passed to an actual argument which formal argument is enumeration type. @item @ref{W1054} A non enumeration type expression is substituted for the enumeration type. @item @ref{W1055} A non enumeration type expression is returned from the function which return value is enumeration type. @item @ref{W1057} An enumeration value is substituted for different enumeration type object. @item @ref{W1058} A different enumeration type of value is returned from a function which return value is enumeration type. @item @ref{W1059} An enumeration value is passed to actual argument which formal argument is not enumeration type. @item @ref{W1060} An enumeration value is returned from a function which return value is not enumeration type . @item @ref{W1061} Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type. @item @ref{W1062} Non constant expression is substituted for the enumeration type object. @item @ref{W1063} The return value returned from enumeration type function to non constant expression. @item @ref{W1064} A integer constant is used in switch statement where case label is enumeration type. @item @ref{W1065} A value of different enumeration type is used in switch statement where case label is an enumeration type. @end itemize @subsection Since 1.6.0 @node W1057 @section W1057 @cindex W1057 @subsection Message body An enumeration value is substituted for different enumeration type object. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER }; extern enum Color col; void func(enum Season ssn) { col = ssn; /* W1057 */ } @end verbatim @subsection Related message @itemize @item @ref{W1053} A numeric constants is passed to an actual argument which formal argument is enumeration type. @item @ref{W1054} A non enumeration type expression is substituted for the enumeration type. @item @ref{W1055} A non enumeration type expression is returned from the function which return value is enumeration type. @item @ref{W1056} An object of actual argument is different enumeration type which formal argument is enumeration type. @item @ref{W1058} A different enumeration type of value is returned from a function which return value is enumeration type. @item @ref{W1059} An enumeration value is passed to actual argument which formal argument is not enumeration type. @item @ref{W1060} An enumeration value is returned from a function which return value is not enumeration type . @item @ref{W1061} Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type. @item @ref{W1062} Non constant expression is substituted for the enumeration type object. @item @ref{W1063} The return value returned from enumeration type function to non constant expression. @item @ref{W1064} A integer constant is used in switch statement where case label is enumeration type. @item @ref{W1065} A value of different enumeration type is used in switch statement where case label is an enumeration type. @end itemize @subsection Since 1.6.0 @node W1058 @section W1058 @cindex W1058 @subsection Message body A different enumeration type of value is returned from a function which return value is enumeration type. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER }; enum Color func(enum Season ssn) { return ssn; /* W1058 */ } @end verbatim @subsection Related message @itemize @item @ref{W1053} A numeric constants is passed to an actual argument which formal argument is enumeration type. @item @ref{W1054} A non enumeration type expression is substituted for the enumeration type. @item @ref{W1055} A non enumeration type expression is returned from the function which return value is enumeration type. @item @ref{W1056} An object of actual argument is different enumeration type which formal argument is enumeration type. @item @ref{W1057} An enumeration value is substituted for different enumeration type object. @item @ref{W1059} An enumeration value is passed to actual argument which formal argument is not enumeration type. @item @ref{W1060} An enumeration value is returned from a function which return value is not enumeration type . @item @ref{W1061} Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type. @item @ref{W1062} Non constant expression is substituted for the enumeration type object. @item @ref{W1063} The return value returned from enumeration type function to non constant expression. @item @ref{W1064} A integer constant is used in switch statement where case label is enumeration type. @item @ref{W1065} A value of different enumeration type is used in switch statement where case label is an enumeration type. @end itemize @subsection Since 1.6.0 @node W1059 @section W1059 @cindex W1059 @subsection Message body An enumeration value is passed to actual argument which formal argument is not enumeration type. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; extern void func1(int num); void func2(enum Color col) { func1(col); /* W1059 */ } @end verbatim @subsection Related message @itemize @item @ref{W1053} A numeric constants is passed to an actual argument which formal argument is enumeration type. @item @ref{W1054} A non enumeration type expression is substituted for the enumeration type. @item @ref{W1055} A non enumeration type expression is returned from the function which return value is enumeration type. @item @ref{W1056} An object of actual argument is different enumeration type which formal argument is enumeration type. @item @ref{W1057} An enumeration value is substituted for different enumeration type object. @item @ref{W1058} A different enumeration type of value is returned from a function which return value is enumeration type. @item @ref{W1060} An enumeration value is returned from a function which return value is not enumeration type . @item @ref{W1061} Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type. @item @ref{W1062} Non constant expression is substituted for the enumeration type object. @item @ref{W1063} The return value returned from enumeration type function to non constant expression. @item @ref{W1064} A integer constant is used in switch statement where case label is enumeration type. @item @ref{W1065} A value of different enumeration type is used in switch statement where case label is an enumeration type. @end itemize @subsection Since 1.6.0 @node W1060 @section W1060 @cindex W1060 @subsection Message body An enumeration value is returned from a function which return value is not enumeration type . @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; int func2(enum Color col) { return col; /* W1060 */ } @end verbatim @subsection Related message @itemize @item @ref{W1053} A numeric constants is passed to an actual argument which formal argument is enumeration type. @item @ref{W1054} A non enumeration type expression is substituted for the enumeration type. @item @ref{W1055} A non enumeration type expression is returned from the function which return value is enumeration type. @item @ref{W1056} An object of actual argument is different enumeration type which formal argument is enumeration type. @item @ref{W1057} An enumeration value is substituted for different enumeration type object. @item @ref{W1058} A different enumeration type of value is returned from a function which return value is enumeration type. @item @ref{W1059} An enumeration value is passed to actual argument which formal argument is not enumeration type. @item @ref{W1061} Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type. @item @ref{W1062} Non constant expression is substituted for the enumeration type object. @item @ref{W1063} The return value returned from enumeration type function to non constant expression. @item @ref{W1064} A integer constant is used in switch statement where case label is enumeration type. @item @ref{W1065} A value of different enumeration type is used in switch statement where case label is an enumeration type. @end itemize @subsection Since 1.6.0 @node W1061 @section W1061 @cindex W1061 @subsection Message body Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; extern void func1(enum Color); void func2(int num) { func1(num); /* W1061 */ } @end verbatim @subsection Related message @itemize @item @ref{W1053} A numeric constants is passed to an actual argument which formal argument is enumeration type. @item @ref{W1054} A non enumeration type expression is substituted for the enumeration type. @item @ref{W1055} A non enumeration type expression is returned from the function which return value is enumeration type. @item @ref{W1056} An object of actual argument is different enumeration type which formal argument is enumeration type. @item @ref{W1057} An enumeration value is substituted for different enumeration type object. @item @ref{W1058} A different enumeration type of value is returned from a function which return value is enumeration type. @item @ref{W1059} An enumeration value is passed to actual argument which formal argument is not enumeration type. @item @ref{W1060} An enumeration value is returned from a function which return value is not enumeration type . @item @ref{W1062} Non constant expression is substituted for the enumeration type object. @item @ref{W1063} The return value returned from enumeration type function to non constant expression. @item @ref{W1064} A integer constant is used in switch statement where case label is enumeration type. @item @ref{W1065} A value of different enumeration type is used in switch statement where case label is an enumeration type. @end itemize @subsection Since 1.6.0 @node W1062 @section W1062 @cindex W1062 @subsection Message body Non constant expression is substituted for the enumeration type object. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; extern enum Color col; void func(int num) { col = num + 1; /* W1062 */ } @end verbatim @subsection Related message @itemize @item @ref{W1053} A numeric constants is passed to an actual argument which formal argument is enumeration type. @item @ref{W1054} A non enumeration type expression is substituted for the enumeration type. @item @ref{W1055} A non enumeration type expression is returned from the function which return value is enumeration type. @item @ref{W1056} An object of actual argument is different enumeration type which formal argument is enumeration type. @item @ref{W1057} An enumeration value is substituted for different enumeration type object. @item @ref{W1058} A different enumeration type of value is returned from a function which return value is enumeration type. @item @ref{W1059} An enumeration value is passed to actual argument which formal argument is not enumeration type. @item @ref{W1060} An enumeration value is returned from a function which return value is not enumeration type . @item @ref{W1061} Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type. @item @ref{W1063} The return value returned from enumeration type function to non constant expression. @item @ref{W1064} A integer constant is used in switch statement where case label is enumeration type. @item @ref{W1065} A value of different enumeration type is used in switch statement where case label is an enumeration type. @end itemize @subsection Since 1.6.0 @node W1063 @section W1063 @cindex W1063 @subsection Message body The return value returned from enumeration type function to non constant expression. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; enum Color func(int num) { return num / 2; /* W1063 */ } @end verbatim @subsection Related message @itemize @item @ref{W1053} A numeric constants is passed to an actual argument which formal argument is enumeration type. @item @ref{W1054} A non enumeration type expression is substituted for the enumeration type. @item @ref{W1055} A non enumeration type expression is returned from the function which return value is enumeration type. @item @ref{W1056} An object of actual argument is different enumeration type which formal argument is enumeration type. @item @ref{W1057} An enumeration value is substituted for different enumeration type object. @item @ref{W1058} A different enumeration type of value is returned from a function which return value is enumeration type. @item @ref{W1059} An enumeration value is passed to actual argument which formal argument is not enumeration type. @item @ref{W1060} An enumeration value is returned from a function which return value is not enumeration type . @item @ref{W1061} Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type. @item @ref{W1062} Non constant expression is substituted for the enumeration type object. @item @ref{W1064} A integer constant is used in switch statement where case label is enumeration type. @item @ref{W1065} A value of different enumeration type is used in switch statement where case label is an enumeration type. @end itemize @subsection Since 1.6.0 @node W1064 @section W1064 @cindex W1064 @subsection Message body A integer constant is used in switch statement where case label is enumeration type. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED, BLUE, GREEN }; int func(enum Color c) { switch (c) { case RED: /* OK */ return 1; case 1: /* W1064 */ return 2; } return 0; } @end verbatim @subsection Related message @itemize @item @ref{W1053} A numeric constants is passed to an actual argument which formal argument is enumeration type. @item @ref{W1054} A non enumeration type expression is substituted for the enumeration type. @item @ref{W1055} A non enumeration type expression is returned from the function which return value is enumeration type. @item @ref{W1056} An object of actual argument is different enumeration type which formal argument is enumeration type. @item @ref{W1057} An enumeration value is substituted for different enumeration type object. @item @ref{W1058} A different enumeration type of value is returned from a function which return value is enumeration type. @item @ref{W1059} An enumeration value is passed to actual argument which formal argument is not enumeration type. @item @ref{W1060} An enumeration value is returned from a function which return value is not enumeration type . @item @ref{W1061} Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type. @item @ref{W1062} Non constant expression is substituted for the enumeration type object. @item @ref{W1063} The return value returned from enumeration type function to non constant expression. @item @ref{W1065} A value of different enumeration type is used in switch statement where case label is an enumeration type. @end itemize @subsection Since 1.4.0 @node W1065 @section W1065 @cindex W1065 @subsection Message body A value of different enumeration type is used in switch statement where case label is an enumeration type. @subsection Content Under construction. @subsection Sample code @verbatim enum Color { RED, BLUE, GREEN }; enum Fruits { APPLE, BANANA, ORANGE, GRAPE }; int func(enum Color c) { switch (c) { case RED: /* OK */ return 1; case ORANGE: /* W1065 */ return 2; } return 0; } @end verbatim @subsection Related message @itemize @item @ref{W1053} A numeric constants is passed to an actual argument which formal argument is enumeration type. @item @ref{W1054} A non enumeration type expression is substituted for the enumeration type. @item @ref{W1055} A non enumeration type expression is returned from the function which return value is enumeration type. @item @ref{W1056} An object of actual argument is different enumeration type which formal argument is enumeration type. @item @ref{W1057} An enumeration value is substituted for different enumeration type object. @item @ref{W1058} A different enumeration type of value is returned from a function which return value is enumeration type. @item @ref{W1059} An enumeration value is passed to actual argument which formal argument is not enumeration type. @item @ref{W1060} An enumeration value is returned from a function which return value is not enumeration type . @item @ref{W1061} Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type. @item @ref{W1062} Non constant expression is substituted for the enumeration type object. @item @ref{W1063} The return value returned from enumeration type function to non constant expression. @item @ref{W1064} A integer constant is used in switch statement where case label is enumeration type. @end itemize @subsection Since 1.4.0 @node W1066 @section W1066 @cindex W1066 @subsection Message body A value of the `float' typed compound expression is explicitly converted into a `double' value. @subsection Content Under construction. @subsection Sample code @verbatim void func(float a) { double b = (double) (a * a); } @end verbatim @subsection Related message @itemize @item @ref{W1067} A value of the `float' typed compound expression is explicitly converted into a `long double' value. @item @ref{W1068} A value of the `double' typed compound expression is explicitly converted into a `long double' value. @end itemize @subsection Since 1.14.0 @node W1067 @section W1067 @cindex W1067 @subsection Message body A value of the `float' typed compound expression is explicitly converted into a `long double' value. @subsection Content Under construction. @subsection Sample code @verbatim void func(float a) { long double b = (long double) (a * a); } @end verbatim @subsection Related message @itemize @item @ref{W1066} A value of the `float' typed compound expression is explicitly converted into a `double' value. @item @ref{W1068} A value of the `double' typed compound expression is explicitly converted into a `long double' value. @end itemize @subsection Since 1.14.0 @node W1068 @section W1068 @cindex W1068 @subsection Message body A value of the `double' typed compound expression is explicitly converted into a `long double' value. @subsection Content Under construction. @subsection Sample code @verbatim void func(double a) { long double b = (long double) (a * a); } @end verbatim @subsection Related message @itemize @item @ref{W1066} A value of the `float' typed compound expression is explicitly converted into a `double' value. @item @ref{W1067} A value of the `float' typed compound expression is explicitly converted into a `long double' value. @end itemize @subsection Since 1.14.0 @node W1069 @section W1069 @cindex W1069 @subsection Message body No trailing `else' clause is found in this `if-else-if' statements chain. @subsection Content Under construction. @subsection Sample code @verbatim static int func(int i) { if (i == 2) { /* W1069 */ return 0; } else if (i == 4) { return 1; } return 2; } @end verbatim @subsection Related message None. @subsection Since 1.14.0 @node W1070 @section W1070 @cindex W1070 @subsection Message body This `switch' statement can be translated into `if-else' statement because there are only 2 execution paths. @subsection Content Under construction. @subsection Sample code @verbatim switch (x) { case 1: ... break; default: ... } @end verbatim @subsection Related message None. @subsection Since 1.14.0 @node W1071 @section W1071 @cindex W1071 @subsection Message body Function `%s' has multiple termination points. @subsection Content Under construction. @subsection Sample code @verbatim void foo(int i) /* W1071 */ { if (i == 0) { return; } } @end verbatim @subsection Related message None. @subsection Since 1.18.0 @node W1072 @section W1072 @cindex W1072 @subsection Message body `A `goto' statement is found. @subsection Content Under construction. @subsection Sample code @verbatim static int func(int i) { if (i == 1) { goto Label1; /* W1072 */ } goto Label2; /* W1072 */ Label1: i = 10; Label2: i = 20; return i; } @end verbatim @subsection Related message None. @subsection Since 1.14.0 @node W1073 @section W1073 @cindex W1073 @subsection Message body Return value of the function `%s' is discarded. @subsection Content Under construction. @subsection Sample code @verbatim extern int bar(void); static void foo(void) { int i; int j; for (i = 0, bar(); i < 10; i++) { /* W1073 */ j = bar(); /* OK */ } } @end verbatim @subsection Related message None. @subsection Since 1.16.0 @node W1074 @section W1074 @cindex W1074 @subsection Message body Side-effects in `sizeof' operand will not be recorded because the operand will not be executed actually. @subsection Content Under construction. @subsection Sample code @verbatim static int foo(void) { int i = 0; if (sizeof(i++) == 4) { /* W1074 */ return 0; } else { return 1; } } @end verbatim @subsection Related message None. @subsection Since 1.16.0 @node W1075 @section W1075 @cindex W1075 @subsection Message body This declaration has no `static' storage-class-specifier while the declaring object has internal-linkage. @subsection Content Under construction. @subsection Sample code @verbatim static int func(void); int func(void) /* W1075 */ { ... } @end verbatim @subsection Related message None. @subsection Since 1.16.0 @node W1076 @section W1076 @cindex W1076 @subsection Message body `%s' has internal-linkage without any prototype declarations. @subsection Content Under construction. @subsection Sample code @verbatim static int func(void) /* W1076 */ { return 0; } @end verbatim @subsection Related message None. @subsection Since 1.16.0 @node W1077 @section W1077 @cindex W1077 @subsection Message body Declaring array object without a size. @subsection Content Under construction. @subsection Sample code @verbatim extern int a[]; /* W1077 */ @end verbatim @subsection Related message None. @subsection Since 1.16.0 @node W9001 @section W9001 @subsection Message body Control never reaches to this statement. @subsection Content Under construction. @subsection Sample code @verbatim extern int all_possible_values_of_int(void); extern unsigned int zero_if_succeeded(void); void func(void) { int i = all_possible_values_of_int(); if (i < 0) { unsigned int ui = zero_if_succeeded(); if (ui > 0) { return; } /* "ui" is equal to zero at this point */ /* Always be true? No, it'll be false all the time */ if (i < ui) { return; /* W9001: Control never reaches here! */ } /* * ISO standard says; * Usual Arithmetic Conversion performed before evaluating * the expression "i < ui". * Usual Arithmetic Conversion makes "i < ui" into * "(unsigned int) i < ui" and then the value of "i" which * is less than 0 will be converted into a new value which * is greater than 0 because of the wrap-around. * So, the expression ("a value greater than 0" < 0) makes * always false. */ } } @end verbatim @subsection Related message None. @subsection Since 1.0.0 @node W9002 @section W9002 @cindex W9002 @subsection Message body There is no line feed character at the end of file. @subsection Content Under construction. @subsection Sample code Under construction. @subsection Related message None. @subsection Since 1.0.0 @node W9003 @section W9003 @cindex W9003 @subsection Message body An object typed `%s' is implicitly converted into an object of type `%s'. @subsection Content This message indicates that an implicit conversion from or to an object of the non-standard type will occur. @subsection Sample code @verbatim enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE }; extern void foo(enum Color); static void bar(void) { int i = RED; /* W9003 */ foo(ORANGE); /* W9003 */ } @end verbatim @subsection Related message None. @subsection Since 1.12.0 @node C0001 @section C0001 @cindex C0001 @subsection Message body A warning is detected as a pair of this identifier `%s'. @subsection Content Under construction. @subsection Sample code @verbatim int very_long_long_long_long_long_long_long_identifier_1 = 0; /* C0001 */ int very_long_long_long_long_long_long_long_identifier_2 = 1; /* W0052 */ @end verbatim @subsection Related message @itemize @item @ref{W0051} An external identifier `%s' cannot distinguish other identifier name from the range of number of characters defined in linker property. @item @ref{W0052} An identifier `%s' cannot distinguish other identifier name from the range of number of characters defined in compile property. @end itemize @subsection Since 1.0.0 @node C1000 @section C1000 @cindex C1000 @subsection Message body Warning above is detected in the following context. @subsection Content This message indicates that the above @ref{W0093,W0093}, @ref{W0096,W0096}, @ref{W0097,W0097}, @ref{W0115,W0115}, @ref{W0116,W0116}, @ref{W0421,W0421}, @ref{W0422,W0422}, @ref{W0423,W0423}, @ref{W0424,W0424}, @ref{W0459,W0459}, @ref{W0460,W0460}, @ref{W0461,W0461}, @ref{W0462,W0462}, @ref{W0568,W0568}, @ref{W0569,W0569}, @ref{W0570,W0570}, @ref{W0607,W0607}, @ref{W0608,W0608}, @ref{W0705,W0705}, @ref{W0707,W0707}, @ref{W0720,W0720}, @ref{W0745,W0745}, @ref{W1049,W1049} and @ref{W1050,W1050} warnings are detected in the context described by the following messages. @subsection Sample code @verbatim 1: int foo(int i) 2: { 3: int j; /* C1003 */ 4: 5: if (i < 0) { /* C1001 */ 6: if (i < -10) { /* C1002 */ 7: j = 2; 8: } 9: else if (i < -5) { /* C1002 */ 10: j = 3; 11: } 12: } 13: else { 14: j = 1; 15: } 16: 17: return j; /* W0460 */ 18: } a.c:17:12:warning:c_builtin:W0460:UNC:X99:A value of variable `j' wouldn't set when this expression is evaluated. :::context:c_builtin:C1000:INF:X99:Warning above is detected in the following context. a.c:3:9:context:c_builtin:C1003:INF:X99:The problematic variable is defined here without initializer. a.c:5:11:context:c_builtin:C1001:INF:X99:This controlling-expression is evaluated to be true. a.c:6:15:context:c_builtin:C1002:INF:X99:This controlling-expression is evaluated to be false. a.c:9:20:context:c_builtin:C1002:INF:X99:This controlling-expression is evaluated to be false. @end verbatim @subsection Related message @itemize @item @ref{C1001} This controlling-expression is evaluated to be true. @item @ref{C1002} This controlling-expression is evaluated to be false. @item @ref{C1003} The problematic variable is defined here without initializer. @item @ref{C1004} NULL value is assigned to the the problematic variable. @item @ref{C1005} A value possibly be NULL is assigned to the problematic variable. @item @ref{C1006} New value is assigned to the problematic variable. @end itemize @subsection Since 3.2.0 @node C1001 @section C1001 @cindex C1001 @subsection Message body This controlling-expression is evaluated to be true. @subsection Content This message indicates that the controlling-expression was evaluated as true in the context of detecting @ref{W0093,W0093}, @ref{W0096,W0096}, @ref{W0097,W0097}, @ref{W0115,W0115}, @ref{W0116,W0116}, @ref{W0421,W0421}, @ref{W0422,W0422}, @ref{W0423,W0423}, @ref{W0424,W0424}, @ref{W0459,W0459}, @ref{W0460,W0460}, @ref{W0461,W0461}, @ref{W0462,W0462}, @ref{W0568,W0568}, @ref{W0569,W0569}, @ref{W0570,W0570}, @ref{W0607,W0607}, @ref{W0608,W0608}, @ref{W0705,W0705}, @ref{W0707,W0707}, @ref{W0720,W0720}, @ref{W0745,W0745}, @ref{W1049,W1049} and @ref{W1050,W1050} warnings. @subsection Sample code @verbatim int foo(int i) { int j; /* C1003 */ if (i < 0) { /* C1001 */ if (i < -10) { /* C1002 */ j = 2; } else if (i < -5) { /* C1002 */ j = 3; } } else { j = 1; } return j; /* W0460 */ } @end verbatim @subsection Related message @itemize @item @ref{W0093} This expression may cause division-by-zero. @item @ref{W0096} It divided by a constant expression which definitely zero. @item @ref{W0097} This expression must cause division-by-zero. @item @ref{W0115} Unsigned left shift operator `<<' drop the high-order bit. @item @ref{W0116} Unsigned left shift operator `<<' can be drop high-order bit. @item @ref{W0421} Value of the dereferencing pointer must be NULL. @item @ref{W0422} Value of the dereferencing pointer may be NULL. @item @ref{W0423} Arithmetic operation is being made to the pointer which its value will be NULL. @item @ref{W0424} Arithmetic operation is being made to the pointer which its value might be NULL. @item @ref{W0459} A value of variable `%s' doesn't set when this expression is evaluated. This program is danger. @item @ref{W0460} A value of variable `%s' wouldn't set when this expression is evaluated. @item @ref{W0461} A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger. @item @ref{W0462} A pointer which the value will probably not set is used for the actual argument of the function. @item @ref{W0568} The result of left shift operation against the signed constant expression value is undefined. @item @ref{W0569} The result of left shift operation against the signed expression value is undefined. @item @ref{W0570} This signed left shift operation may make undefined value. @item @ref{W0607} An integer expression which the value which the value is minus converted to unsigned type. @item @ref{W0608} An integer expression which the value might be minus converted to unsigned type. @item @ref{W0705} This non-constant array subscript may cause out-of-range access. @item @ref{W0707} This constant array subscript must cause out-of-range access. @item @ref{W0720} The value with floating-point type doesn't fit in the range of converted type. @item @ref{W0745} This non-constant array subscript may cause out-of-range access. @item @ref{W1049} The result of conversion to signed integer type in integer expression might not be expressed by a signed type. @item @ref{W1050} The result of conversion to signed integer type in integer expression is not express by a signed type. @end itemize @subsection Since 3.2.0 @node C1002 @section C1002 @cindex C1002 @subsection Message body This controlling-expression is evaluated to be false. @subsection Content This message indicates that the controlling-expression was evaluated as false in the context of detecting @ref{W0093,W0093}, @ref{W0096,W0096}, @ref{W0097,W0097}, @ref{W0115,W0115}, @ref{W0116,W0116}, @ref{W0421,W0421}, @ref{W0422,W0422}, @ref{W0423,W0423}, @ref{W0424,W0424}, @ref{W0459,W0459}, @ref{W0460,W0460}, @ref{W0461,W0461}, @ref{W0462,W0462}, @ref{W0568,W0568}, @ref{W0569,W0569}, @ref{W0570,W0570}, @ref{W0607,W0607}, @ref{W0608,W0608}, @ref{W0705,W0705}, @ref{W0707,W0707}, @ref{W0720,W0720}, @ref{W0745,W0745}, @ref{W1049,W1049} and @ref{W1050,W1050} warnings. @subsection Sample code @verbatim int foo(int i) { int j; /* C1003 */ if (i < 0) { /* C1001 */ if (i < -10) { /* C1002 */ j = 2; } else if (i < -5) { /* C1002 */ j = 3; } } else { j = 1; } return j; /* W0460 */ } @end verbatim @subsection Related message @itemize @item @ref{W0093} This expression may cause division-by-zero. @item @ref{W0096} It divided by a constant expression which definitely zero. @item @ref{W0097} This expression must cause division-by-zero. @item @ref{W0115} Unsigned left shift operator `<<' drop the high-order bit. @item @ref{W0116} Unsigned left shift operator `<<' can be drop high-order bit. @item @ref{W0421} Value of the dereferencing pointer must be NULL. @item @ref{W0422} Value of the dereferencing pointer may be NULL. @item @ref{W0423} Arithmetic operation is being made to the pointer which its value will be NULL. @item @ref{W0424} Arithmetic operation is being made to the pointer which its value might be NULL. @item @ref{W0459} A value of variable `%s' doesn't set when this expression is evaluated. This program is danger. @item @ref{W0460} A value of variable `%s' wouldn't set when this expression is evaluated. @item @ref{W0461} A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger. @item @ref{W0462} A pointer which the value will probably not set is used for the actual argument of the function. @item @ref{W0568} The result of left shift operation against the signed constant expression value is undefined. @item @ref{W0569} The result of left shift operation against the signed expression value is undefined. @item @ref{W0570} This signed left shift operation may make undefined value. @item @ref{W0607} An integer expression which the value which the value is minus converted to unsigned type. @item @ref{W0608} An integer expression which the value might be minus converted to unsigned type. @item @ref{W0705} This non-constant array subscript may cause out-of-range access. @item @ref{W0707} This constant array subscript must cause out-of-range access. @item @ref{W0720} The value with floating-point type doesn't fit in the range of converted type. @item @ref{W0745} This non-constant array subscript may cause out-of-range access. @item @ref{W1049} The result of conversion to signed integer type in integer expression might not be expressed by a signed type. @item @ref{W1050} The result of conversion to signed integer type in integer expression is not express by a signed type. @end itemize @subsection Since 3.2.0 @node C1003 @section C1003 @cindex C1003 @subsection Message body The problematic variable is defined here without initializer. @subsection Content This message indicates where the problematic variable is defined in the context of detecting @ref{W0459,W0459}, @ref{W0460,W0460}, @ref{W0461,W0461} and @ref{W0462,W0462} warnings. @subsection Sample code @verbatim int foo(int i) { int j; /* C1003 */ if (i < 0) { /* C1001 */ if (i < -10) { /* C1002 */ j = 2; } else if (i < -5) { /* C1002 */ j = 3; } } else { j = 1; } return j; /* W0460 */ } @end verbatim @subsection Related message @itemize @item @ref{W0459} A value of variable `%s' doesn't set when this expression is evaluated. This program is danger. @item @ref{W0460} A value of variable `%s' wouldn't set when this expression is evaluated. @item @ref{W0461} A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger. @item @ref{W0462} A pointer which the value will probably not set is used for the actual argument of the function. @end itemize @subsection Since 3.2.0 @node C1004 @section C1004 @cindex C1004 @subsection Message body NULL value is assigned to the the problematic variable. @subsection Content This message indicates where the NULL value was assigned to the problematic variable in the context of detecting @ref{W0421,W0421}, @ref{W0422,W0422}, @ref{W0423,W0423} and @ref{W0424,W0424} warnings. @subsection Sample code @verbatim extern int *bar(void); extern int *baz(void); void foo(int i) { int *p = NULL; /* C1004 */ if (i < 0) { /* C1002 */ p = bar(); if (!p) { return; } } else { p = baz(); /* C1005 */ } *p += 2; /* W0422 */ } @end verbatim @subsection Related message @itemize @item @ref{W0421} Value of the dereferencing pointer must be NULL. @item @ref{W0422} Value of the dereferencing pointer may be NULL. @item @ref{W0423} Arithmetic operation is being made to the pointer which its value will be NULL. @item @ref{W0424} Arithmetic operation is being made to the pointer which its value might be NULL. @end itemize @subsection Since 3.2.0 @node C1005 @section C1005 @cindex C1005 @subsection Message body A value possibly be NULL is assigned to the problematic variable. @subsection Content This message indicates where the value possibly be NULL was assigned to the problematic variable in the context of detecting @ref{W0421,W0421}, @ref{W0422,W0422}, @ref{W0423,W0423} and @ref{W0424,W0424} warnings. @subsection Sample code @verbatim extern int *bar(void); extern int *baz(void); void foo(int i) { int *p = NULL; /* C1004 */ if (i < 0) { /* C1002 */ p = bar(); if (!p) { return; } } else { p = baz(); /* C1005 */ } *p += 2; /* W0422 */ } @end verbatim @subsection Related message @itemize @item @ref{W0421} Value of the dereferencing pointer must be NULL. @item @ref{W0422} Value of the dereferencing pointer may be NULL. @item @ref{W0423} Arithmetic operation is being made to the pointer which its value will be NULL. @item @ref{W0424} Arithmetic operation is being made to the pointer which its value might be NULL. @end itemize @subsection Since 3.2.0 @node C1006 @section C1006 @cindex C1006 @subsection Message body New value is assigned to the problematic variable. @subsection Content This message indicates where a value was assigned to the problematic variable in the context of detecting @ref{W0093,W0093}, @ref{W0096,W0096}, @ref{W0097,W0097}, @ref{W0115,W0115}, @ref{W0116,W0116}, @ref{W0568,W0568}, @ref{W0569,W0569}, @ref{W0570,W0570}, @ref{W0607,W0607}, @ref{W0608,W0608}, @ref{W0705,W0705}, @ref{W0707,W0707}, @ref{W0720,W0720}, @ref{W0745,W0745}, @ref{W1049,W1049} and @ref{W1050,W1050} warnings. @subsection Sample code @verbatim int foo(int i) { int j = 0; /* C1006 */ if (i < 0) { /* C1002 */ j = -i; } else if (i > 0) { /* C1002 */ j = i; } return 5 / j; /* W0093 */ } @end verbatim @subsection Related message @itemize @item @ref{W0093} This expression may cause division-by-zero. @item @ref{W0096} It divided by a constant expression which definitely zero. @item @ref{W0097} This expression must cause division-by-zero. @item @ref{W0115} Unsigned left shift operator `<<' drop the high-order bit. @item @ref{W0116} Unsigned left shift operator `<<' can be drop high-order bit. @item @ref{W0568} The result of left shift operation against the signed constant expression value is undefined. @item @ref{W0569} The result of left shift operation against the signed expression value is undefined. @item @ref{W0570} This signed left shift operation may make undefined value. @item @ref{W0607} An integer expression which the value which the value is minus converted to unsigned type. @item @ref{W0608} An integer expression which the value might be minus converted to unsigned type. @item @ref{W0705} This non-constant array subscript may cause out-of-range access. @item @ref{W0707} This constant array subscript must cause out-of-range access. @item @ref{W0720} The value with floating-point type doesn't fit in the range of converted type. @item @ref{W0745} This non-constant array subscript may cause out-of-range access. @item @ref{W1049} The result of conversion to signed integer type in integer expression might not be expressed by a signed type. @item @ref{W1050} The result of conversion to signed integer type in integer expression is not express by a signed type. @end itemize @subsection Since 3.2.0 @node Metrics @chapter Metrics List @menu * FL_STMT::Number of statements * FL_FUNC::Number of functions * FN_STMT::Number of statements * FN_UNRC::Number of unreached statements * FN_LINE::Number of lines * FN_PARA::Number of parameters * FN_UNUV::Number of not use /not reuse variables * FN_CSUB::Location number of call function * FN_CALL::Location number of called from function * FN_GOTO::Number of goto statement * FN_RETN::Number of return point in a function * FN_UELS::Number of 'if' statement unless 'else' * FN_NEST::Maximum number of nest of control flow graph * FN_PATH::Presumed number of static path * FN_CYCM::Cyclomatic complexity @end menu @node FL_STMT @section FL_STMT @cindex FL_STMT @subsection Metric name Number of statements @subsection Content The number which it recognized as statements by syntax rule in a file. @subsection Sample code @verbatim int foo(int a) { int i = 0; /* A declaration is not a statement */ if (a > 0) { /* An if-else-statement makes FL_STMT += 1 */ i = a + 1; /* An expression-statement makes FL_STMT += 1 */ } else { ; /* An empty expression-statement makes FL_STMT += 1 */ } return i; /* A jump-statement makes FL_STMT += 1 */ } /* Now, FL_STMT == 4 */ void bar(int a) { struct { /* A declaration is not a statement */ int i; } s; /* A for-statement which has 2 expression-statements (`s.i=0;' and `s.i 0) { /* An if-else-statement makes foo's FN_STMT += 1 */ i = a + 1; /* An expression-statement makes foo's FN_STMT += 1 */ } else { ; /* An empty expression-statement makes foo's FN_STMT += 1 */ } return i; /* A jump-statement makes foo's FN_STMT += 1 */ /* foo's FN_STMT == 4 */ } void bar(int a) { struct { /* A declaration is not a statement */ int i; } s; /* A for-statement which has 2 expression-statements (`s.i=0;' and * `s.i int foo(int i) { unsigned int ui; if (i < 0) { switch (i) { case -3: ui = 0; break; /* Control never reaches to this "case 3:" clause because "i" is less than 0 at this point */ case 3: /* This label is part of an unreachable labeled-statement, but it makes foo's FN_UNRC += 1 */ ui = 1; /* An unreachable labeled expression-statement makes FN_UNRC += 1 */ break; /* An unreachable jump-statement makes FN_UNRC += 1 */ default: ui = 0; } /* "ui" is equal to 0 at this point */ /* * The usual-arithmetic-conversion makes "i < ui" into "(unsigned int) i < ui". * Then, the value of "i" which is less than 0 will be converted into the new value which is greater than 0 * because of the wrap-around. * So, "(value which is greater than 0) < 0" makes false at all times. */ if (i < ui) { exit(0); /* An unreachable expression-statement makes FN_UNRC += 1 */ } } else { /* "i" is greater than or equal to 0 at this point */ abort(); /* The abort() standard function terminates this execution path */ } /* "i" is less than 0 at this point */ if (i == 3) { /* "(value which is less than 0) == 3" makes false at all times */ return -1; /* An unreachable jump-statement makes FN_UNRC += 1 */ } return 0; /* foo's FN_UNRC == 5 */ } @end verbatim @example MET,FN_UNRC,foo,int foo(int),test.c,3,5,5 @end example @subsection Since 1.0.0 @node FN_LINE @section FN_LINE @cindex FN_LINE @subsection Metric name Number of lines @subsection Content Physical lines from the beginning of a line to the end of a line in a function definition. @subsection Sample code @verbatim int foo(void) /* foo's function definition starts here */ { return 0; } /* foo's function definition ends here */ /* foo's FN_LINE == 3 */ int bar /* bar's function definition starts here */ (void) { return 0; } /* bar's function definition ends here */ /* bar's FN_LINE == 5 */ int baz /* baz's old style function definition starts here */ (a) int a; { return 0; } /* baz's old style function definition ends here */ /* baz's FN_LINE == 6 */ @end verbatim @example MET,FN_LINE,foo,int foo(void),test.c,1,5,3 MET,FN_LINE,bar,int bar(void),test.c,8,1,5 MET,FN_LINE,baz,int baz(int),test.c,17,1,6 @end example @subsection Since 1.0.0 @node FN_PARA @section FN_PARA @cindex FN_PARA @subsection Metric name Number of parameters @subsection Content The number of formal arguments in the argument list of function declaration. @subsection Sample code @verbatim int foo(int a, long b, char *p) { return 0; } /* foo's FN_PARA == 3 */ int bar(a, b, p) /* An old style function definition */ long b; /* A type-specifier of "a" is omitted */ char *p; { return 0; } /* bar's FN_PARA == 3 */ @end verbatim @example MET,FN_PARA,foo,"int foo(int,long,char *)",test.c,1,5,3 MET,FN_PARA,bar,"int bar(int,long,char *)",test.c,6,5,3 @end example @subsection Since 1.0.0 @node FN_UNUV @section FN_UNUV @cindex FN_UNUV @subsection Metric name Number of not use /not reuse variables @subsection Content The number of not used function and variables which assigned the value. @subsection Sample code @verbatim void foo(int i, int j) /* A useless declaration of "j" makes FN_UNUV += 1 */ { int a; int b; int c = 0; /* A useless declaration of "c" makes FN_UNUV += 1 */ if (i < 0) { a = -i; } else { a = i; } b = a * 2; /* A useless assignment to "b" makes FN_UNUV += 1 */ printf("%d\n", a); /* foo's FN_UNUV == 3 */ } @end verbatim @example MET,FN_UNUV,foo,"void foo(int,int)",test.c,1,6,3 @end example @subsection Since 1.0.0 @node FN_CSUB @section FN_CSUB @cindex FN_CSUB @subsection Metric name Location number of call function @subsection Content The number of calling other function in a function, @subsection Sample code @verbatim extern int foo(int); static int bar(int); int baz(int i) { int j = foo(i); /* A function-call-expression makes baz's FN_CSUB += 1 */ return foo(bar(j)); /* 2 function-call-expressions makes baz's FN_CSUB += 2 */ /* baz's FN_CSUB == 3 */ } @end verbatim @example MET,FN_CSUB,baz,int baz(int),test.c,5,5,3 @end example @subsection Since 1.0.0 @node FN_CALL @section FN_CALL @subsection Metric name Location number of called from function @subsection Content The number of called from other function of the project. @subsection Sample code @file{test1.c} @verbatim int foo(int i) { return i + 1; } int bar(int i) { return foo(i) + 1; /* A function-call-expression makes foo's FN_CALL += 1 */ } @end verbatim @file{test2.c} @verbatim extern int bar(int); static void baz(void) { int i = bar(0); /* A function-call-expression makes bar's FN_CALL += 1 and foo's FN_CALL += 1 */ } @end verbatim @file{project-name.met.csv} @example MET,FN_CALL,foo,int foo(int),test1.c,1,5,2 MET,FN_CALL,bar,int bar(int),test1.c,3,5,1 MET,FN_CALL,baz,void baz(void),test2.c,3,13,0 @end example @subsection Since 1.0.0 @node FN_GOTO @section FN_GOTO @cindex FN_GOTO @subsection Metric name Number of @code{goto} statement @subsection Content The number of @code{goto} statement in a function. @subsection Sample code @verbatim int foo(int i) { switch (i) { case 0: goto ZERO; /* A goto-statement makes foo's FN_GOTO += 1 */ case 1: goto ONE; /* A goto-statement makes foo's FN_GOTO += 1 */ default: return 0; } ZERO: return 1; ONE: return 2; /* foo's FN_GOTO == 2 */ } @end verbatim @example MET,FN_GOTO,foo,int foo(int),test.c,1,5,2 @end example @subsection Since 1.0.0 @node FN_RETN @section FN_RETN @cindex FN_RETN @subsection Metric name Number of return point in a function @subsection Content The number of executable return-statements and implicit return-statements at the end of a function. @subsection Sample code @verbatim void foo(int i) { if (i < 0) { return; /* A return-statement makes foo's FN_RETN += 1 */ } if (i >= 10) { return; /* A return-statement makes foo's FN_RETN += 1 */ } else { for (; i < 10; i++) { printf("%d\n", i); } } /* An implicit return from the function whose return type is void makes foo's FN_RETN * += 1 */ /* foo's FN_RETN == 3 */ } int bar(int i) { if (i < 0) { return -1; /* A return-statement makes bar's FN_RETN += 1 */ } if (i >= 10) { return -1; /* A return-statement makes bar's FN_RETN += 1 */ } else { for (; i < 10; i++) { printf("%d\n", i); } } return 0; /* A return-statement makes bar's FN_RETN += 1 */ /* bar's FN_RETN == 3 */ } @end verbatim @example MET,FN_RETN,foo,void foo(int),test.c,1,6,3 MET,FN_RETN,bar,int bar(int),test.c,20,5,3 @end example @subsection Since 1.0.0 @node FN_UELS @section FN_UELS @cindex FN_UELS @subsection Metric name Number of if-statement without else-clause @subsection Content The number of if-statements which have no explicit else-clause. @subsection Sample code @verbatim int foo(int i) { int j; if (i < 0) { return -1; } else { j = i + 1; } if (j % 2) { return -1; } /* A standalone if-statement does nothing to the FN_UELS metric */ if (i == 2) { return 0; } else if (i == 4) { return 1; } /* An implicit else clause makes foo's FN_UELS += 1 */ return 5; /* foo's FN_UELS == 1 */ } @end verbatim @example MET,FN_UELS,foo,int foo(int),test.c,1,5,1 @end example @subsection Since 1.0.0 @node FN_NEST @section FN_NEST @cindex FN_NEST @subsection Metric name Maximum number of nest of control flow graph @subsection Content The deepest nesting of control structure in a function. @subsection Sample code @verbatim void foo(int i) { /* Nesting level == 0 */ if (i < 0) { /* Nesting level == 1 */ switch (i) { /* Nesting level == 2 */ case -1: return; case -2: puts("A\n"); break; } /* Nesting level == 1 */ } else { /* Nesting level == 1 */ int j; int k; for (j = 0; j < i; j++) { /* Nesting level == 2 */ for (k = 0; k < 10; k++) { /* Nesting level == 3 */ if (j == k) { /* Nesting level == 4 */ puts("B\n"); } } } } /* foo's FN_NEST == 4 */ } @end verbatim @example MET,FN_NEST,foo,void foo(int),test.c,1,6,4 @end example @subsection Since 1.0.0 @node FN_PATH @section FN_PATH @cindex FN_PATH @subsection Metric name Presumed number of static path @subsection Content The number of possible execute paths in a function. @subsection Sample code @verbatim static int foo(int i) { /* A */ if (i == 0) { /* B */ i = 0; } else { /* C */ i = 1; } /* D */ return i; /* Possible execute paths A->B->D and A->C->D makes foo's FN_PATH = 2 */ } static int bar(int i) { /* A */ if (i == 0) { /* B */ i = 0; } /* C */ if (i == 1) { /* D */ i = 1; } /* E */ if (i == 2) { /* F */ i = 2; } /* G */ return i; /* Possible execute paths A->B->C->D->E->F->G, A->B->C->D->E->G, A->B->C->E->F->G, A->B->C->E->G, A->C->D->E->F->G, A->C->D->E->G, A->C->E->F->G, A->C->E->G makes bar's FN_PATH = 8 */ } static int baz(int i) { /* A */ switch (i) { case 0: /* B */ if (rand()) { /* C */ i = 0; } else { /* D */ i = 0; } /* E */ i = 0; break; default: /* F */ if (rand()) { /* G */ i = 1; } else { /* H */ i = 1; } /* I */ i = 1; break; } /* J */ return i; /* Possible execute paths A->B->C->E->J, A->B->D->E->J, A->F->G->I->J, A->F->H->I->J makes baz's FN_PATH = 4 */ } static int qux(int i) { /* A */ while (i < 5) { /* B */ if (i == 0) { /* C */ return 0; } /* D */ if (i == 1) { /* E */ return 1; } } /* F */ if (i == 2) { /* G */ return 2; } /* H */ return 3; /* Possible execute paths A->B->C, A->B->D->E, A->B->D->F->G, A->B->D->F->H, A->F->G, A->F->H makes qux's FN_PATH = 6 */ } @end verbatim @example MET,FN_PATH,foo,int foo(int),test.c,1,12,2 MET,FN_PATH,bar,int bar(int),test.c,18,12,8 MET,FN_PATH,baz,int baz(int),test.c,42,12,4 MET,FN_PATH,qux,int qux(int),test.c,80,12,6 @end example @subsection Since 1.0.0 @node FN_CYCM @section FN_CYCM @cindex FN_CYCM @subsection Metric name Cyclomatic complexity @subsection Content The number of linearly independent paths through a program's source code. It was developed by McCabe. @* calculating formula is @verb{.(the number of edges of the graph) - (the number of nodes of the graph) + 2.}. It equals the number of branch in a function + 1. @subsection Sample code @verbatim static int foo(int i) { if (i == 0) { /* Complexity += 1 */ i = 0; } else { /* An else branch does not grow the complexity */ i = 1; } return i; /* foo's FN_CYCM == 2 */ } static int bar(int i) { if (i == 0) { /* Complexity += 1 */ i = 0; } if (i == 1) { /* Complexity += 1 */ i = 1; } if (i == 2) { /* Complexity += 1 */ i = 2; } return i; /* bar's FN_CYCM == 4 */ } static int baz(int i) { switch (i) { case 0: /* Complexity += 1 */ if (rand()) { /* Complexity += 1 */ i = 0; } else { /* An else branch does not grow the complexity */ i = 0; } i = 0; break; default: /* A default clause does not grow the complexity */ if (rand()) { /* Complexity += 1 */ i = 1; } else { /* An else branch does not grow the complexity */ i = 1; } i = 1; break; } return i; /* baz's FN_CYCM == 4 */ } static int qux(int i) { while (i < 5) { /* An iteration does not grow the complexity */ if (i == 0) { /* Complexity += 1 */ return 0; } if (i == 1) { /* Complexity += 1 */ return 1; } } if (i == 2) { /* Complexity += 1 */ return 2; } return 3; /* qux's FN_CYCM == 4 */ } @end verbatim @example MET,FN_CYCM,foo,int foo(int),test.c,1,12,2 MET,FN_CYCM,bar,int bar(int),test.c,13,12,4 MET,FN_CYCM,baz,int baz(int),test.c,28,12,4 MET,FN_CYCM,qux,int qux(int),test.c,54,12,4 @end example @subsection Since 1.0.0 @node CodeStructures @chapter Code structure list @menu * VER::Version records * DCL(T)::Type declaration records * DCL(V)::Global variable declaration records * DCL(F)::Function declaration records * DEF(V)::Variable definition records * DEF(F)::Function definition records * DEF(M)::Macro definition records * DEF(L)::Label definition records * INI::Initialize records * ASN::Assignment records * DEP(I)::Include records * DEP(C)::Caller records * DEP(X)::Dependency records * LIT::Literal records * PRE::Preprocess records @end menu @node VER @section VER @cindex VER @subsection Code structure information name Version Records @subsection Content Under construction. @subsection Sample code Refer to @ref{Output_Metrics_Ver_Sample,output example of Version Records.} @subsection Since 1.0.0 @node DCL(T) @section DCL(T) @cindex DCL(T) @subsection Code structure information name Type declaration records @subsection Content Under construction. @subsection Sample code Refer to @ref{Output_Metrics_Dcl_Sample,output example of Type declaration records}. @subsection Since 1.0.0 @node DCL(V) @section DCL(V) @cindex DCL(V) @subsection Code structure information name Variable declaration records @subsection Content Under construction. @subsection Sample code Refer to @ref{Output_Metrics_Dcl_Sample,output example of Variable declaration records}. @subsection Since 1.0.0 @node DCL(F) @section DCL(F) @cindex DCL(F) @subsection Code structure information name Function declaration records @subsection Content Under construction. @subsection Sample code Refer to @ref{Output_Metrics_Dcl_Sample,output example of Function declaration records}. @subsection Since 1.0.0 @node DEF(V) @section DEF(V) @cindex DEF(V) @subsection Code structure information name Variable definition records @subsection Content Under construction. @subsection Sample code Refer to @ref{Output_Metrics_Def_Sample,output example of Variable definition records}. @subsection Since 1.0.0 @node DEF(F) @section DEF(F) @cindex DEF(F) @subsection Code structure information name Function definition records @subsection Content Under construction. @subsection Sample code Refer to @ref{Output_Metrics_Def_Sample,output example of Function definition records}. @subsection Since 1.0.0 @node DEF(M) @section DEF(M) @cindex DEF(M) @subsection Code structure information name Macro definition records @subsection Content Under construction. @subsection Sample code Refer to @ref{Output_Metrics_Def_Sample,Macro definition records}. @subsection Since 1.0.0 @node DEF(L) @section DEF(L) @cindex DEF(L) @subsection Code structure information name Label definition records @subsection Content Under construction. @subsection Sample code Refer to @ref{Output_Metrics_Def_Sample,output example of Lael definition records}. @subsection Since 1.0.0 @node INI @section INI @cindex INI @subsection Code structure information name Initialize records @subsection Content Under construction. @subsection Sample code Refer to @ref{Output_Metrics_Ini_Sample,output example of Initialize records}. @subsection Since 1.0.0 @node ASN @section ASN @cindex ASN @subsection Code structure information name Assignment records @subsection Content Under construction. @subsection Sample code Refer to @ref{Output_Metrics_Asn_Sample,output example of Assignment records}. @subsection Since 1.0.0 @node DEP(I) @section DEP(I) @cindex DEP(I) @subsection Code structure information name Include record @subsection Content Under construction. @subsection Sample code Refer to @ref{Output_Metrics_Dep_Sample,output example of include records}. @subsection Since 1.0.0 @node DEP(C) @section DEP(C) @cindex DEP(C) @subsection Code structure information name Caller function records @subsection Content Under construction. @subsection Sample code Refer to @ref{Output_Metrics_Dep_Sample, output example of caller records}. @subsection Since 1.0.0 @node DEP(X) @section DEP(X) @cindex DEP(X) @subsection Code structure information name ... @subsection Content Under construction. @subsection Sample code Refer to @ref{Output_Metrics_Dep_Sample,output example of Dependency records}. @subsection Since 1.0.0 @node LIT @section LIT @cindex LIT @subsection Code structure information name ... @subsection Content Under construction. @subsection Sample code Refer to @ref{Output_Metrics_Lit_Sample, output example of Literal records}. @subsection Since 1.0.0 @node PRE @section PRE @cindex PRE @subsection Code structure information name ... @subsection Content Under construction. @subsection Sample code Refer to @ref{Output_Metrics_Pre_Sample, output example of preprocessed records}. @subsection Since 1.0.0 @node Appendix @appendix Appendix @anchor{Screen Shot} @section Screen shot @subsection Collaboration with Adqua Static analysis result of AdLint can use measure the source quality by processing @uref{http://www.ogis-ri.co.jp/product/b-08-000001A6.html, Adqua}. (Adqua supports only Japanese) @image{adlint_on_adqua,,,,png} @subsection Collaboration with Vim - text editor Adlint p The format of AdLint's warning message is same as the standard compiler, so it's easy to collaborate with text editor. It will be able to check easily the code quality during development. @image{adlint_on_vim_en,,,,png} @subsection Collaborate with Eclipse - integrated development environment The format of AdLint's warning message is same as the standard compiler, so it's easy to collaborate with integrated development environment. It will be able to check easily the code quality during development. @image{adlint_on_eclipse_en,,,,png} @anchor{Traits Sample} @section Sample of traits file @verbatiminclude samples/adlint_traits.yml @anchor{GNUmakefile Sample} @section Sample of analysis order of @file{GNUmakefile} @verbatiminclude samples/GNUmakefile @node Index @unnumbered Index @printindex cp @bye @c vim:sw=2:sts=2:et:tw=79:fo+=mM: adlint-3.2.14/share/doc/adlint_on_adqua.png0000644000004100000410000072726612340630463020630 0ustar www-datawww-data‰PNG  IHDRè0³ÎJ¦bKGDþþþëÔ‚ pHYsHHFÉk> vpAgè0-¶Ñ€IDATxÚìu|×½·Ÿe^튙ÑÌcrС6i’r’Þ¾)Ü[HS¾½…”Ó{›¸I›4Lvì€;‰™Ù–d‹™µÒ2ϼ¬¼¶,™R¼·ó|>²¬Ù³gÏœ™™ïùÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈüS ¸È6Åy~ËÈÈÈÈÈÈÈÈÈÈÈÈÈÈ\Òy~Hªs+Þxã}éééé§ÿþG^FFFFFFFFFFFFFæ;’$±nݺ—ü㋸0Ïú‘Î褧§§O›>=û=x™ÿ+„C!>üðÃÀÄ€èÈïÓ?â.I’Âëõþ£Ç.#############ó†X4 q#¹ž¸8Œü@Ü‚>ÖÅ@ÅôØeddddþÉE·Û^¯G«Õ^°m @’$ ‘H„îînl6‹å½+ÿ4ø|>ÈÈÈ@£ÑŒy= Ñëõ(•JÂá0.—‹¤¤$T*ÕGøÄ¿Ñh”h4ŠV«E¡P‹ÅˆD"h4AøÈýÆb1”J% >|˜3fPPPðÛW™¿’”ðb7a΄”Ÿvw{we.##ó”‡z¯×ËO~òÇ?z8ÿP\.Ï?ÿ<555ˆ¢H(B©TŽjc³ÙøØÇ>ÆäÉ“éïïçÁD§Ó‘’’2¦?‡ÃÁC=„N§ãwÞáØ±c<ðÀ$''ÓÚÚÊo~ón¿ývæÎ›xÏñãÇyòÉ'éïïÓŸÑhäöÛogÙ²e—´?@ÊÊÊ0lëv»ÇÝ®ÑhÐét‰¿ý~?]]]§o¨  YYYèõú1}ìÚµ ›ÍFeeåÇpzNöíÛÇŠ+xä‘GP(F§~9yò$kÖ¬áÞ{ïeòäÉìÚµ‹µk×òÍo~sÜc0ƒƒƒø|>RRRÆïÆyíµ×ðûý£¶gddð裎šß 6ÐßßOww7F£‘ììl¼^/]]]L›6ûᅦÃËåâÔ©S”””””tIã <öØc8–/_Î÷¿ÿ}, ä»ßýî¸ ç#²{÷n†††X¾|yb¡èŸ•G}”-[¶ðä“ORSSÃÏþsþíßþ™3grß}÷±hÑ">ÿùÏ_ô¼¾[¶láÑGå _øW^yåe-¦ø|>ž~úiÞ}÷]233ùò—¿LIIÉ?zêddddþWqŽ@?}Nˆs :®sD>ܲFx‰Qéã‚Á ‹.D­Vÿ£÷YFFæ_I’Æœ³éíëc÷îÝX­V¬˘kÝ¥"Š"¿þõ¯Ùðæ›444pÓM7ño»Ý>¦íÀÀ¿ýíoÙ´y3¡Pˆ9sæðƒï»}ôâ@4åÝïò›ßþ–žž$Iâ†nàÿ}ñ‹$''_ÖôôôðçgŸeÆ ¸\.n¼ñF¾ôÐCc„ROw7x½^$QÄç÷“ŸŸOkk+}}},Y²„ááaÌf’(òÚk¯áäÊ+¯dËÖ­„B¡ÄuÙÒ¥deg xø›ßäè±c¼õÖ[Äb1n·›>ø½^Ͻ÷ÜÃý÷ßÏáC‡8vô(«V­¢³«“­[·±bÅ 2ÒÓùÓOrçw\Òqêëëãé§Ÿfß¾}ˆ¢Èâ+®à¡‡"++ ·ÇC4I¯×ËÒ¥KG½? ùâ¿}‘|pd.EvìØÎ·¿ý1Ýápð³Ÿþ”ªªªQÛÝn7ÿñÿÁW¾òe*+*Æ=w\.›6mâø“§Láþû?Ïã?ÁÐÐÿþÕ¯’––†R©$ ²víZhmmÅï÷óÆoÐØØHmm- ¤¥¥QxŽuY’$úûûÙøî»¬]û:ÇŽG§Óa·ÛY½z5Ÿ¸ûîĹ J"Û¶nÅåæ–[V'Û‹/¾ˆÓéLÌ},ã¹çžcݺuH’DVf&ƒN'Û¶mK,V( bÑ(’(rèàA~ûØcüð‡? Éf÷˜Åb1†‡‡ñù| »\ìØ±ƒóçóö[o1<4D~^¢$¢„Ëú¾zÜnÖ¯_Or²ƒ+W,ÿÈßõ³éîîâ–Õ·ÒÛÛË}÷ÝËÃß|˜˜ã‡?üOž|òI&NœÈ~ô#¦Lž|Yý”J%ééXÌfŽ?ÎáÇÑiµ´¶¶°wï^¦O›†^¯»¤ýhooçÊ•+ ‰ï§ÕjeÏîÝ„‚ARR’ÉÌÈ@P0ª¿‹]?_yùe~ýë_sÕUW±òÊ+IOKû«Ì«ŒŒŒÌßI’øàÃÑé´€bäz¥£a—,^Œ 466ÒÑÕ‰J©iÏ(é+ÆbdddPR\Œ„Ä\zߣÆ7„Ÿ芑îOÇŸGÅ8t QmAWkÔL6 ·Ë}f”#0™ÍÔTW#J1DI‰ŒŒŒÌß‹Su§èèèÀždÇãñššJ8fxx˜ ª°%%ñÁû`±X˜>}:ÍÍMJKKØ·>Ÿââ"rrrèëëçøñãL˜8Œô º»»9zô(ÅÅE¡Pœ¹Àú~”*%&L ºº»= ³Å4æÚ þüQÖ®]ÇwÞßïçÕW_£¨¨‡zhTËp$ŒBP°rå•èt:ž~úÞ|óMæÍ›ËÊ•+Gµrrüø Ôj5‚ Àãñ’——GAA>ÁPˆß>ö[Ö¯ßÀÕ×\M_?Ï?ÿüðCn»í6®½öŒFwÞy;?ûÙÏikkã«_ý Ó§O§¦¶†7Þx‡ÃÁSO=Ekk+˜L&~ðƒ`4¹þ†ëÉÏÏõ9üò—¿¤»§‡•+WÒÚÚÆ¿øo¨T*žzꤥ¥rË-7£Tª¢³«“)S¦°hÑ H4Â+¯¾BUU%¢$"Š"`ÏžÝL›>£GŽÐÜÒB$añ’Å:x³ÅLEE­šp4LíÉZ’’l$';Æù^Ävó‡'ÿÀ¶mÛâß+¿Ÿ¦¦f††‡Ðiu„B!º{{øÖãçíg<Ü7íííLœ8VsYï=uõu ã÷û©¯¯ghØImíI^zé%‚Á V«[’Qill¤­­h4BJJ*•••„BA<ˆßâ^äçç3}ú4æÏŸG è§¥¥…ŒÌ ,V 555˜L&2³³ðù|œ?øÁùõ¯MEe .ä…^ ²eËVNž|˜Ì¬L&N˜È5×\ƒJ¥¡®®ž÷ßÿ€ï|ç;Äï“j•†ª‘s&²ió&öïßÏç??•UUˆ¢„(Š<±æ ÂáðyϿ‚B®\y%uÜõº««‹×^{{ÙL[{;H‘™RP†8|ä’$QZZJOO?üáb·Û1›ÍL›6ÔÔTZZZÉÉÉå¿ü%6›_üò„‚!~ö³Ÿ((,àsŸû3gÎÄl29?žyæÏô÷ðíG¾MSSƒk¯½½AOMM-ûàšk®Å`PÒÓÓËð°‹}ûöÓÝÝ ‡ÂÔ×ÕóÉû>‰(Jx}>Þ|ë-:;»È/(Àb±b±X0è D£Q&MœÄõ×_Ä-§NÕ‘žžÙbMŒ/rìø1tZeeeèu®¹æZ²³s°Ûí466ò‹/ð¹Ï}Žp(Laa!999dddÒÚÖF{[ûy…¶Éh¢¸¤ÓˆXõx¼477³{÷Lf3“&N"7/÷/ˆõõ„B!¦L™BWw7ûöà¹çž£°°ÁÁAÒÒÓH²ÙÙ·o?>ú(]]]D" F_û¯QXXÈã¯ÁétÒØØH0äŸø+W®äßøÓ¦Mãë_ÿ:­­­defa4š¨­=è™™œ8QÍO<Ë墻» ‰o}ë[,_¾•òÌã\míIDQ$55•ü¼|–-_ÆÀ€“Ÿüä§x<~þóŸóÊ+¯°fͪªªP«Õ¬ZµŠÆÆfžyæ|>ÃÃ䤤ðÝï}—íÛ¶³{÷ ¯½ö:@P8Ä[o¾…$I pÕUWñàdïÞýüô§?åsŸÿ’(ñꫯrÏ=÷0iÒdPÊÕ{eddþ>H’8TWWyýtš“@íkjj £Úêt:ÊËË9­“GDöyû®¨¨ÑÇ"çV-¹'*-qa®ù[ɈËû%Ç Kçqc’Fn–ÒÈŒŒŒÌß‹ÚÚZŒ#K—.eîܹ¤§§ó»ßýŽ‚‚§N 77¥RIss3@€Ù³f³råJž|òIÞ{÷=zÿ£‡ÃÃá ³³“ö¶vÖ¾¾–iÓ¦Q\\Ì“x’¾¾>’““Y½zuÂUúĉX­V²2³Î{ýËÎÊæøñã|óߤ»»›ááa zøíOÖžäÑG¥±±¿ßÏí·ßŽAoà©§ž¢«« ›ÍÆí·ßNWW.—‹«¯¾š{^xgŸ}–¦Æ&ššâ^•••Øívúûû­V;ê3#‘N§¯Ç‹(ŠD£QìIö„Û±J¥bêÔ©¤§§³ní:6¾³‡ÃA$aöìÙÔÖÖróÍ7ÓÑÑÁÊ•+9vìf³™W_y•÷ߟP(„(Š8N ¨¨¨ bÄå»  €p8L[[ƒNGKK ˜ÍfºººˆÅbLŸ>`0ˆR©D¡Ppíµ×RRR2fîTJ3fÌ@§ÓÑØØHKK w7ü÷3iÒ¤kÞè÷ƒAÞ~ûmž~úin»í6V¬XRÜí; Ñ×Û—èÃÃÃlÞ¼™eË–%ÜÃÓRÓc"¢RD’$6lØÀÊ•+‰„#lX¿ááa¾ð…/`4ÑëôÜvëmÜxÃôõõÑÐÐÀSO=ÅÂ… ãOIIA£ÑðÇ?þ‘Ûw°téRvkÖ¬!33“ÚÚZ ò hokçÊW¢R©FíWoo/7nä;ßùÙÙÙ¬Y³†3f`µZãÖŽp8L$aÿþý|ðÁ˜L&Ün7ápQééé!;;›Ã‡“ŸŸOvv6Ó¦NcýëÙ¿oÿ¨ät{÷îE«Õ’———Çéc{å•W¢”ˆb|~êêêxì·qÓM7QRR‚J¥"°cÇ>õ©OQWWGFzùyù<õÔSÌš5‹ììl"‘ï½ûk×®=ï÷¬²²’/}éKô†D˜G(b``€ÿùïÿA§Ó1a–-[ÆôéÓÇÄrƒAêëë‰F£( rrrÆä¨hll$síµ×òüóÏóøããt:YµjGŽ!#=¿ßÏ/~ñ š››ùÞ÷¾Gww7=öÏ?ÿ<=ö_ÿú×ùàƒX³f •••ÜyçTWW'¼|>­­­Ìœ9£ÑHmm-f³™ÌŒLl6ŸÿüçÑjµìܹ“_þò—œ8~‚E !èÎ,<ÔÖÖ …غu+»wïF§Ó1uêT4 ---Lš4 “ÉDMM :Ž… ²dÉt:<ð&“‰/}éKÔÔÔðøã³}Ûv*++ÉÌÌ$))‰‡~˜êêj~÷»ß±jÕ*n¼ñF~ÿûßóî»ï²`Á®»î:^xážüÓX,®¿þzV¯^B¡ŸeddþnœÖ®ç»îHR\”Ÿ~ýìÿÇé{Ùéß§Æïû,}Œ8¦âª]8ëg”Š¿$~áœÙ9ùÂ+##ó÷"‹QWWǤI“¸å–[HOOg``€öövfΜ‰ÃáàÝwßEŠŠŠˆF£´µµ …¸ï¾ûHOOçÍ7ß$‹¡P(°X,ÒÒÒÂ3ÏÉ|@(Jd+w»Ý8NAÀçóÑÖÖFYY™™™Üwß}èõú1÷FÃäÉ“©ªª" "I@€?ýéOœ:uŠßüæ7¨ÕêQ7a—ËÅ3Ï<óÏ>‹B¡`ÆŒ£Ä®J¥â‹_übâÞ·aÃ<È#<’È`¯V«ïihh`Ó¦MÜqǘL&$IB£Ñ°cÇî½÷ÞDr¶¾¾>{ì1z{{ñx<´µµñÒK/±qãFrrrøö·¿ÑhD¥R±hÑ"222xöÙg©««cñâÅ8p€Ù³góÖ[o±téRŠŠŠFÍÅñãljÅbÌœ9“£GRS÷‚E‘¾¾>ZZZ˜?>’$±víZŽ=Jyy9õõõäååÑØØHRRZ­–_|‘¥K—’ŸŸŸÈÜŸ‘‘1*‘ $ItttPXX˜˜;¿ßOOO¹¹¹‰m}}}üêW¿Âb±0uêT ¼üòË$%%‘MMM yyydffâr¹Ø·oßHx‰‚믿žÅ‹Ÿ÷z ÓéßQ©­­¥²²’Gy¥RÉÞ½{Çð›ßü&sæÌõþ“'Oò½ï}·ÛÙl桇bÑ¢E‰×íí툢ÈܹsÙ¸q#û÷ïçë_ÿúHž3YYY;vŒÚÚZ-ZÄÒ¥KÙ·oz½ž@ €J¥¢££ƒuëÖQXXÈ£>Jnn.›7oÆårQ^^ŽÛí¦««‹¬¬¬Ä‚Sff&ÉÉÉìÞ½›—_~™ÎÎN|>^¯—¤¤¤QÂ÷ôw&))‰5kÖàp8¬¬,Nž ?þ8eåå\y啸}>"‘7ß|3---lݺ•¼¼<®½öZª««Ù¼y3W]uÅ%%TŸ8ÙlF¡P`³ÙNÇܹsyó­·Ÿïr¹èêê"ÒßßÏÁƒÙ¶m“&O“ÉDldŒ{÷îåÃ?¤¼¼œ ŒºF·¶¶òì³ÏÒÞÞÎðð0k×®¥´´”5kÖPSSÃ÷¾÷=¬6*eܺqãFtz=j ’““©­­¥°°ææfòòò0™Lœ8qßÈ~§¦¦â÷ûY·nzƒ½{öðýï?nLNæ;ßùŸüä'yíµ×xó­·r:IMMå–[naõêÕ¤¥¥¡R©ˆF£‰…†òŠŠ±÷#I"‹ ðx<455ñꫯÒ×ßÏw¾ó2³²% Iv¹¨­©áw¿ûZ­–þð‡¬_¿ž‡~˜ßýîw$Ÿ•Ý`0 ‡©­‰Ç‚¯^½û9VÕX,Æàà`b¦´´”ÆÆ¸+´ ôôôÐÐЀc$ÑŸÍfã–[nÁç÷³kçNÔj5wÜqv»‹ÕŠÉlF”$>ó™Ï°zõjÚÛÛilläŠ+®`Æ víÚÅØ´iYYYhÎ*y)VWWÇ+¯¼Â¤I“çÿo¼A `Ö¬YDc1¸å–[¸é曹uõj’““©««ã«_ý*]]]?~œââbDQ¤ººšp8œ(¯ñ˜P(„Ñh¤¸¤$q~ÕÖÖ¢V«IKK£»»›¦¦&~ùË_’––ƾðRÓÒˆF£¬_¿žööv¾ùÍo&¬Å÷Üsiéé”””°uëVn¿ã¬6Öó$›;qä\8qâyyyäååBAvN7Ýt­N7æyeÂĉ¼òê«cú:MGGýýýäåå‘“ÃÜyóÈËËãꫯæ[ßú6›¼¼<†‡‡E‘`0HsK ~ø!N§“{ï½—õë×ó£ýˆììlþã?þN‡Û•7›ÍdffrðàAÔj5™™™tvvÈÊÊâøñãüøÇ?&55•¯|å+¼÷Þ{¼óÎ;äää T*cmiiIä…˜6mŠÓɉF<N‹õ®în¼^/&L #3Q’ðûýèt:®¹æ–-[F,Ãï÷³déR¶|ø!}}}”——£P(Þƒƒœ:uŠM›6QRRBAAo½õo¼ñ466RW_O"ø”ß“‘‘‘¹\ÎÖ¨z]E‚/@~-+IqÇvQ’ 2/Ú÷YmÏzñ¢c_ Ô!µí"î1QDç}2222 Nž<‰F£!???qͲÙl$''³cÇœCCœ:u FC^^ ‘‘‘ÁOö3†††‡Ã<øàƒôzA ''‡®®.4 ŸúÔ§€±×Ãþþ~Ö¬YÃî={ðx<466òãÿ˜|FÃo~óîºë.®\±‚“'Oò£ý^Ïðð0“‰‡~µZÍûï¿ÏOz{z˜5kûØÇHOOGŒÅˆD£ôôôpÍ5×ÐÜÒÂÎ]»âVäŠ ÄXŒÙ³g³{÷îqŸG.F4¡¹¥…©S§Žùþ˜Íæq¿×£³«‹¡¡!&NœˆA¯çî»îB’$, õõõ$%%‘‘‘AVV³gÏf×®]´¶¶¸êª«¸âŠ+¸ýöÛéïïÇb±ð«_ýŠüü|>÷¹ÏÑÝÝM~~>jµšS§N‘””„Ãá ¡¡I’(((@©Tb4ñùý;vŒêêjÒÓÓÇX¦[ZZðx<Ìš5+þ|6²Ÿ’$Q{ò$v»ä”êë‘$)¾3ÒfæÌ™”–”°ÿþ„ŒÁ`àºë®£³³€ììlt:‹/æÐ¡C<öÛß"i©©ÜqÇtuwó‹_ü‚9sæpóÍ7óÈ#°yÓ&¦LžŒíXddddþZ\\ ŸqYWŒ,â_T ‹bâšy)Öy1ûHÕ.ÆèÒ¹.îH  Î)å`±˜ã7vQó>™¿|ík_cæÌ™‰kONNßýîwq:dgg³l¤”–Íj% rï½÷b6› ƒx<JKK™0a‚"^"Ãjµb4Y¾|9åeeã^ÓÔj5S§N%--o¸“ÉDZZ±XŒGy„‰& ‰"Y™™|ìcÃívc³Z©¬ª¢  I’˜>}:?ü0eee‚À§?ýiúûû‰ÅbX,&N˜@qqñ˜1 9ôâ˗㢠 €)“'£Q«©ª¬ä{ßû ¨Õj***ã9MLnò@€ùóç£Q©èîî¦g$ó·Z­N¼§®®µJE0Àb6c·ÛQ(˜Ífü~?ƒ>ééé¸].–-[Æ¡C‡¸âÆ9rô(@€£G"IÕÕÕ£V©8qâ ÜpýõÌ›7ßþö·dgg'â“_yåöïßϤ‰ѨÕÜ}÷ÝL¨ª÷˜ ÑØÐ€ÅbañâÅTTTPXXˆN«…³n ÑH„¢ÂB–.Y”)S $Q$?//éKœ:u*.ªÏrËnkkãúë¯gÁ‚Øíö1Ÿ¯ š0eÊt:ƒ‹Å‚ÙlÆfµ²{Ï’““‰„Ã9|˜7$âó!^pz>Wßr ÉG!55•ï|÷»¤¤¤àfçÎ|ò“ŸdÑÂ…x}>Ô*ZfÔ˜ÒRSùÿw::;™‚Á éééL›:ƒÑȧ?ýéQsééé˜L&n¾ùfÔj5V«•ùóæQVVFeEn·›¯|å+L›6¬¬,þýßÿöövÒÓÓ©¨¨H„¨œ½ùùùüÛ¿ý[baê40oî\JŠ‹©ª¬Äãñð•¯|…©S§&Úåæäðï~—ššB¡&“‰²‘±Y³fa·Û),,D)\±h‹…––T*ªª(.)áèÑ£Üu×],^¼›ÍÆÃ?L$I|×ddddþ^œ¶ˆMÆq5ìé ¢(ÆŸGÚggç‹EGµU*•gÅ•‹‰Äìãø}›LÆ3nñç^ûO–yn ÕîÝ»[RSÓ²ÎÞ¸ÿ¾1 UÎÆçó1eÊ4Ôj2222ÿÛˆD¢lÙò!o¾¹ÚÚZ~ò“Ÿ2eÊ” ÖþG±uëVþýß¿Ê]wÝÍg?û¹‘œ—‡(ŠqksOiiièõÒÓÓñû}œ:uŠœœ’“S÷ÞÞ^º»»Ñjuhµš„â Á\.¹¹yh4j</--Íàr¹‰Åb#Iõ$Q©Ôäädãv{ˆF£8”J††FA12ÀˆEW$å,—óó‡ñùü z4Íy[,/"Ê1÷GQ”…‚‰Xq€@ H àÇjµ¡TŽïž×[ç¯ct&,“ã¡R)IMMÃd2ÒÕÕEooS§NIŒåر£TVVa6›¸üþx=ì³ïÑCCô¶¶’’’L   ¡×ëˆD"X­6°ÙldddÐÕ_ÌINN!%%9QÓ5 ­­üü<’GÜøãÇ=ŠN§G§ÓŽ©{6Ñh¯×›p•7™.o߯ï3FWW©©)ètº¿¸?™ÿ}H’Äþýû.x_ñz½Ì˜1 APÐÞÞ†ÓéD­VÛ6b³ÙÈÍÍC’`ÿþ½—Ð÷Ìqï/¿üÒæo|㿼#?î‘ß>À?®@ONN%ÐOÇ›]ˆ³]ìddddþ7áñx¸ûî»ÑétÜsÏ=,_¾ü¼è$’$ñî»ïòÃþGy„+V\Pü\¬/`Œ°<¸î/ç%-Ë\&ò¼ÊÈÈÈÈÈ\:—£a/%á¹ ‰ç®ª ¯¼òÊú%©jY|ËÈÈü_Æl6³nݺô0.ŠB¡àª«®âª«®ú«ôu9Û/¯ï¿ûÔüK Ï«ŒŒŒŒŒÌ¥s9ölñý×îû²Ç}î† ¼ËÈÈÈÈÈÈÈÈÈÈÈÈÈÈümWúû¼Þô¸ddddddddddddddþÏ ¼Ëû˜†´ôt¬Vë?zü22222222222222ÿë‘$ §ÓyQ÷ø1¯ ‚€ÑhÀ`0ü£÷AFFFFFFFFFFFFFæ=’$ ø/šï磥ÿ•‘‘‘‘‘‘‘‘‘‘‘¹DD9Ç•Ìe I§K™þë! t .¤ƒ‘Qñ¯£ŽûÝ´9½<¿¯ØY}xƒÓýè÷yù@»{ D.\ËŽr¬ÃI›óL®¦7{šúF9‰±µ¾€!ˆoê®!:†|—<·=n?Ç:œ£~:†|‰ŒãN¢¢„/åhÇਾûãc:{±#‰²mdLN_ˆA_]N:‡/mLg3è ýME±+æåMl«ïÆŠŒÛ&&J4xøàT'G;‰ÆÄËü”K#*J´ z.º¿N_èᄌ$×O“‘‘‘‘‘‘‘‘‘‘!*JìmîãÃS]¥˜¹~r>Fͥ˅µ‡›ÙÓÜGqŠ…i¹)Lα3ä±¹¶O0¾–>æ¦ðµûXs÷¢¿xÌ-ƒú=£Å¾$Au—£NÅ©ÞaÒ,zŠR,ìܹµZÍÌ™3®Æ«Ûy¿¶“k&æ"J¯j¦¾ÏE+ÀÜ¢TŠS¬Ü0%O0Â3»ë˜_”ÆŽ†DI¢Ýé£$ÕJv’qÌØNœ8Aww7Ë–-Cb¢D›ÓËÁÖQíÒ,z†ýa®›”Ëÿl­á'7Ïæêv¶Öu±jR¡hŒuGZ8Õ;LŸ;Èüâ4JR­\7)O0ÂÓ»ë˜W˜ÆÖú.4J% }.&dÙɲÓÑ£GdñâÅcÊŠ}÷Íüì–9èÔʿ蘴ùèuûLjߚî!ÔJv§—$ƒ–ªÌ$þ¸«ŽÁ³k”‚‹NC—ËGªYO†Õ@šEIŸÛ:èåpû K2pµlÛ9äãñm'ypq%JáŒËy²I‡Zyf^~ðÖ!~pà LZõyûÚXÝN’AËì‚ÔĶãNNõ³zZáeÏŸ,ÐedddddddddþE‘$ôq"X jZ=¬¨Èb{C7ÞPä²úÒò,ŠR¬œêæD·“ YILÎvàô…¨ÊLª×$Ún¼hQQD9"l%IB­$ÇbhUqy¼ÓÉ–1VÎŽ òäl{¢-@ww7Z­I’P("1´°þX+Ç:Ü3·”E%hTZ•’…Å8L:¢±ýÞ]Ã~¶Öu³§©ê®!œþ v£–Mµ”§Û¸yjöq888H{{{¢„µJ)ŠÄØÝÔKT*…‚Åe™4 ¸ „ctûð†"ìoégýÑVNtñ‰‘1©½Ú“Q“'>¦-õñ1Õ÷ºéóúÙZßÍ;'Ú©ÊLâÆ)ù$âc ³³sܲÚG;œµGE ¥B(Iˆ#ÇâÞ§…}m÷P|c£ûêvù EcLËMF¯Q¡@Á´þðAH·êÑ©”˜´j ç9ÿ$ "1AP ØNcN¦å&_T híçD§“¼uˆÓ!áGÚùÓ½‹)O·%ÚïtŽò¢šî!²¬ÆQ½sØÇá¶AY ËÈÈÈÈÈÈÈÈÈÈ\qWî_¿‚S½Ã\7)—Âd ë¶RšfÅ4"Ž.æà«á(Ý.?‚ `Na©f]B;L:^9ÐÄCË'žùl)nM¶µ5jÆË›µñD³ R9Ù3Ä€7ÄSóôyb{-ß¼z*«&å±jRÞèý’$^ØßH}Ÿ›Ï.¬8¯ÈðÈN2pýä<—fR”b¡±ßË&9Öé$Ój ß`K]ž`„Gß;FYš•o\=…uGZ(Nµ°¢"½Z…å¬EˆñæÉŠPœbᚉ¹¨Mµ¸aÎÞý>O€|‡‰U“òX^‘MžÝDÓ€W`dLƒdØ ôxül9Õ'áçï£"ÃÆ×¯žÂ+›¨ÊLbiY&zµ ³îüc:—6§—,›“vücòÁÉNª2“èu¨éâã³JD¢ü×;‡ùÁ 3¸²2›++³Ç¼wýÑVv4ôð™…åèÕ*zÝ~RÌã[ÇEIB%(FY·O%ª»†ØÛÜÇì‚T&eÛ'ôx ŠÄuŠxxÅÎÆ¾³j3òR}~â¢S=WÚœ^òfLZÕ¸ Þ$iìwä/ñŠ—ºŒŒŒŒŒŒŒŒŒÌ¿ N_ˆ×53=/™o^=…Ÿm:†JøË&à0êP }!Þ9ÑF(·½ZÅÇfãFØÑÐC·ËE§aÕ䏨—$xóX+óŠÒF½O”$žÛ×€Y«&Ŭ£$ÕJE† ýYÉаµ¾‹4³>O8J—ˇp‘,Ø¢ }n¦ç:.(Î"¢D¾ÃLŸ;H»ÓK E¡Pç0“ç0óÒF–”eR˜bÁ¨Q£×(Þ¹v*¥€F©D§V¢×(ÖÜñ»A‹/å#­(ŽÆ¨Ê²3è;ãæE “-ôº´zðÃ( ’Í$›yq#+*³ÈI2aÖªÑi”Tf$‘lÒ’“dD­T U —4¦syé@#v£–“žâT åé¶QîݾP”OuQ•™Ä€'ˆ7¡×}ñÌä·4ÏÌOÁ¤Uã EÙTÛ‰+ ipS’bE¥T R ,+Ϥ$õLéï¨(Ò2èewcýÞÓrTf&]ôsûÜö4÷ree6’oo#ÏaÕw·ËY§F£›¢í•ƒM¤˜u$›t§X)O·aÖ©/ø™pýexŸœ,ÐedddddddddþňÄD6V·ŽŠ\3!—³Žÿ·t¿ßVËú£­Ü9³£VP ¢r|“àiç4‹žûæ•á „éó.ÕÕ]Ct û™•Ÿ:ê}‚BÁµriôÐíòóΉv^;ÔÌ-Ó ˜–› À¢’tžÙ]Ï̼†!‚á([˜’ã¸à¾õ{‚Ôt;ùÜ¢Š‹ÎƒV%Ð:èe_sYIFJRãñ4þpO0B÷°»Q‹^­äþ+*yÿd'/ìoäpÛ]Ã>ú½A¦å8X\–yÞÏŠÆDzÝt*%1IB’À¬ÓÐyV’¸ø˜”4xØ×ÜOžÃDqªe”%91&—‡I‡Q£âóWTðá©.^ØßÈ‘öAú=AºÝfä%³¨$ã’Ï‹k&äÒëöÓåòó^M¯lâæ© ÷í9…©<¹óËʳ(H6ã GØ×ÒÏôKôùô†8ØÚÏ'æ–Æ÷Q-0¿8ÈH¸v§—}-}Ü7·³^ƒ¤[âe¿}¡oŸh§ÕéE£xé@#/|z¹vÓE÷'*J¼u¼á@ˆ[Êsí&9̉ I‚]=$›1k~õ„}!º†}l®=3's ãsR™‘D’a´—B〛¼KßxÈ]FFFFFFFFFæ_Œ]N6×vðí릓bÖdäÞ¹¥ü~[ ëµqËH<õ3‹.©O¥ ÀnÔ&b°[½<µó7LÎcqT(Lʶ3)ÛN0cÀ¤ÇíO¼ Ãjàî9%¤[ôØ:‘(Ûë{øõíóÎ;O0ÂÞ9Ì S H5_<¹˜U¯aQIÍÊÒlLʶ³©¶ƒ%e™ØZjº†™œã`F^ p”7޶ç0³jRþp”—Ÿ¢ Ë+²FÅØ‡(It ûDb„c1(Ы•4õ{°›t‰v6½†+J3hìw31ËNy†-§ºX\šI’QCu瓳LÍqˆÄÈ$›1iãcêòR™agqY6ý¥»·Te&13?…PôÌ1±éÏ“4‹ž{ç–’bÖ³´<‹`4Æû'»øù­sÎÛ§7á§ï᪪2FD·J(L6'Ú´;=”¤Z)ϰIȦP(ÈN2RšfÅnÔñnuÇ%‰sQ’ØÙÐá¶>³°J*XX’ò,‹M·“í =Ü:½£v¬<®Ìˆ{Lœ™“ֳ®(ÍåÕá†ÙÑÐÃonŸYsY ËÈÈÈÈÈÈÈÈÈü‹‘g7óík§“ï8#’…‚’T+_\:½s˜,›á²¬¯þpo(‚?e[C7Ûêz¸~rË+².è–®S+ÉN2’dË+(¤šõ¸a:†}üiW÷Ì-#öÝÁ®@ˆÚîa^ØßÀ¼Âtn›^È%x]cÒª©ÊL"ËfÀfÐ0!ËΉ.'[¸gn)v£– ‹œ$#=î%wu8Œ`3hH1éÈI2¡PÄ­±ú\Q’ò‡âåÃñ¶&šååYX $ L: ÙI&2m’ Z&gÙ9ÞéäpûŸ˜SB’QKºUOŽÝDËïEbLV½†dó¥i<´*%Y6#Y6ã¨xjA¡ Í¢ÇÑ=ìç¹} Ü<5Ìâ„7aئ®o˜÷721ÓÎ]sJÆŒ#‰ÑÔïfñ6®˜;nH‚A£bvAjâºË~xDDK¼y¼•½Í}ÜE%³ì‰ÏŽFE†B‚‘(žìfSm·Ï(b^QÚÏÓó͉A£"&J Âô¹üiwÜÃ`¼Ìþ—‚,ÐedddddddddþÅ8ÛÒ}6 ä;Ì<|Í4ôªK/·%»›zÙ\Û‰ÓbrŽo_7í¼–ÎL«aÜíçÊ£ú>oo%¹kN S²Çº·oªé`k}7£–‡–MdB¦}Üäb&Þ^¯VrÛôB¶ °·¹o½fô<œì¦¶gˆ—‹ÄDDÀaÔ25×1Êâ|.‚BU¯IQ• !‘c7r¸m¥ @}Nù3½FÅ3‹8Ð:Àî¦>œ¾Ð¨df’$QÛ3ÄÉÃ~ŠA"1‘d“–©9ɵîdXôãÆ’Ÿ»©ÍéåõÃÍÂ1®ŸœÇ̼”1Çm[}ïV·cÕkøì &g;F•/ƒø9s´c—6± 8…%éçÈgoO?Ϲ£×¨ð‡¢üq×)|¡(Ór“ùñͳǜkµ=Ãl8ÚB§ËÏ„Œ$þóÆ™ç=OÓ.qNÚ‡¼¼| ‰Îa/ÓóR¸yjÁG8ãÈ]FFFFFFFFFFf—?«&fÙ)Iµ’a5ŒcçòÕ+']R¿™6wÏ.%Õ¢?¯åtIY&+«²/X«úbÌÈKÆ:"¬Z5if={šû˜W”–ð20iTÜ4%ÄÊÿwYùé˜s)¾E:¿(S ÓóRH·œ©í=äaÔªô†¨éâ®Ù%‰™ù)$¸¾›´jÒ,zö6õ± 8ü‘ãcÔª¹qJþˆE7>¦•YgÆtÙÄ¿¸lš‹7ˆ× ¿sf1é=ªó´Ÿ[˜ÊÂâô &SS_ úòò‰dÚŒ\ªœýìÂñs äÙM<¸¤ ¥ nÑŸ7A`a²™O-('ŤCs‘E¨/,©B uá ‹JÒ)Iµâ8+\á£ð7èÒHª{Q‰ŽÔ/<}ŽŠxÚ|¥ ŠK> 22222222222ÿ|\JÌ÷i.Õu>É %Épá6ö‹Ô¼¾æ¥q¶")K·QvV=lˆ»¢lv J…‚ —=ü\T‚‚9©P0þëçfº_Pœ>jLé6*ΓY§æã#cš˜eÿ‹æ`~Qú%µ³ê5µÈŸNx1N/T\Óó’ÇݮרFefÿKÆš¹…i—Ô.Õ¬¿¬óÿBüÕº$IDE‰@8ŠÓ Ïí§ß`È$Ž%…­Z‰Õ¨!Ýj$ÍjÄnÖaШQ)…ËŽ‘‘‘‘‘‘‘‘‘‘‘‘¹+W®D¡P œãF~±Òm§Q^†P™9s&S¦LA©¼ôP¿õ˜æÌ™C4ýÈc’ùÛóWè¢(á FèörªÓÉñöÚú=¸ƒa¢¢„I¯ÁlÐbÒÅ‹ÞûCQ¼0‘H«AKf’‘’ô$*²íä8Ìè5êì·/###########s.f³ù/ïä1 y'eŒÆ–¸LæïÇ_,Ð% BÑ(öÔw³¿¡‡A_½NCY^ %Yv²’-è5ê±–q üÁ0í}ôôs°¥#-}Tå8˜^˜F–ÝŒN­’-ê2222222222222ÿçù‹º(I¸ýaŽ·õóö¡&Nv Q”å`eU%Y,çÄ„£1ê;t@’Ъôj%­šùe™hTÍ=.껜4÷¹™]œÎ”üT¬Fí%»xÈÈÈÈÈÈÈÈÈÈÈÈÈÈüoä# tQ’ôØ^ÛÉë{ëˆHpó¢JJ³˜ Ú1Iß\¾ kwœ$ŽŸb!ÓnÂfГ$ú\~N¶õ£Ì-ÍdbN1'ÚÙZÓ΀'ÀÒ ¹ØMºqSÜËÈÈÈÈÈÈÈÈÈÈÈÈÈü_à# tQ‚>—Ÿw7³þ@#Y©VîX<¤sDt<Û¿„?eÝΓU ®ŸSAn²£VR) Iñ„r=Ã>޵ö³no=y)®š’Gn²™ ‡šñ‡¢\=5Ÿd³AŽK—‘‘‘‘‘‘‘‘‘ù§&*JD¢1"b¼†“Yw•$ Qo(‚Y§F1Ò6&JhÕÊ„‘O’$ü‘FŠ˜¯E…â¢%ÜÎŒA$‹¾Z) #1 О§¼–(I"1´JaL ±HLD©[¦â:æÜqŸ‹?ÅŽ’dЎɯ%±zµŠHLD%(Fch”ÊKÎÅuznxO(#&J‰2cŠÄN‚CP(P(ÄD‰Ó¥ÙÔJÕHâ¼p4¾Ÿº‘òbÁH •R‘xý\BÑ0vN%âÔ§Y8C)DDR¸dé@$š˜8šïiâå÷DEµR ‰S_N%ÄÏ „£hUñ>c¢”xïxc’$F£¨al-w)>>½Z‰D®KžÃ„U¯a8æÑMÇøþªTw9ñ…£´ zÈ´¹¢tl‰¶ááa|>™™™( ¢¢ÄÞæ>· Ç(K·’lÒ±­®•R`NAF­Š‚d3ýÞ ýžJAA¿'È»ÕÌ*H¡4ÍŠ$^­¤"#‰½Í}´;}(¥iV¼Aj»‡XV‘…V¥D¯QaÖªièwˆ_8Ò>ȱÎAnžZ€I«F%R-zr’LÔ÷¹x·º—TñÖñ6æ¥ñç½õ¬š”7n¹°ÖÖVìv{"Ñ]8*²½¡_(ŠRP09Û;fK]C~îœUD²I‡M¯á÷Ûj±è4Db"zR‰ÓB§Râ „™‘ŸÌ„L;}ž {šzô¹nR©=ë739ÇÁÔœxy3§/DÓ€;1®Ou!I°4Q ’͘´jÞ>ÞF’QǼÂ4žÝÛÀüâ4ö5÷sõ„œD÷³©©©¡¼¼|T–ý—ö7Qœj!Í¢çù} ( ò’ÍØô†ü!–”ebÑiØTÓÁ¼¢4ö·öã FP <Áj¥€A£¢*3‰“ž~o?ï©cEE6E)ÂÑÛXR–I†Õ@L”èöÑç Çx·¦Ò4•6 ¾Q”b!ùï­5Ü¿¨‚oV§8ŠJ)°²2û#éÖs—Ž„Ï}îsÙíI­vüëÁH”=õݼ´ûe¹)\;»4k.IQI$"ƈ‰""ñU¥#õÝØtjOÈÁ¤¿æœbde%ɤ#7Ù‚ÛæPs?6³ÒœN´÷ Gɰ™Ðʉãþ¥r¹ét¢ÕjP©.oM©»€P8ŒAæ|E‘î¾~šÚÛ1 hÔêô.þK1ävÓØÚF$Åd0\P†Âaú‰‰"ZfdµW¤·€Á¡a¬fóÿ*qŽDèw¡×ëF]°ÁÎaþo²?±XŒa·µJE8aëÞýlßw§ËMzr2jõ_½ê¦ŒŒŒŒÌ¿íC^^9ØDmÏ0­N/Ç;j (ÕŒ'Å31Ëκ#-¼q¤ƒVžæ~Z½´:½4ô»iêw£>ƒÞ Oï®cvA*ïÕt°£±—S=Ãôº#1†ý!’ŒÚ„EóСCìܹ“©S§"‘˜È§ºé÷8ØÖO8*òÂþl-’Ol¯%Ť'ÃjàÏ{êyù@#'{†9Ð:À‘ŽA:†|Ôv³£±‡í =,(IgGC/'ºœt»ü(µ=ô9½|xª‹o¨(ð÷¡P(ØÝÔKËON’™÷7ŠÆØÝÔG+@Uf-ƒ6ÕvR–nãÛkñGb¼[ÝŽ$Á€7ˆ$I$ÎäâzòÉ'±Ùl¤§Çë•{‚a}ï*AÁÆêv²lFNtq¸mV§A¡@¯Va7êøöúä'›és¨ëus²gw0ŒA£âPÛ•@’A˦šNµ0è ÑíòÓç°­¾‡˜(Œˆ¨” ú½ß~o(Bc¿›×·à0é¨îbÈæÃº.JÓ¬˜uj¶Ôuã EÐ(üäÝ£¨•Jv6ö"Žˆà$ƒ6aéøÆ7¾ÁUW]•xæ?mü=Ú1ÈñN'6ƒ–]NÞ­îĤUs°u€™ù©Xtjv7õ2à òö‰vt*%Í^>¬ë¢ÏD’ "ÃFË€‡wk:èvùiìw3Q×çæhû JAÁ?ŒI§f{C7œì¢Ï ¦{˜­uÝ(Ðêô2à ²½¡‡™ù)„¢"/îo <ÃÆþ–~Þ:ÞFû—–‘˜È€7H’A›ð.ü9z´é½÷ÞÛ „G~B#¿#@䲞Èb¢HKŸ‹76b·¹zV Vc\œ‹RÜ5 ‹ã+g*A@ŒIˆ¢HšÍ8jòχJ)å0³rJ>[ªÛÙUÓÎU³K™P”ÎÉ–^Ò: L+L;¯[ŠÌ?^ŸŸ··l£§ ¾A‚h,Ê…VX,&#Ÿ¾}uâïvïåƒ]{ÉËÊÄbº@id§¥qݲʼnMzu-Z†Oß~ “ €H4Ê΃‡Ù´}_ùÌ}”æéꕷߥº¾ñ¢û—™šÂMW.#Åa¿¬yñø|ô 8Iv$a1ÿn"S¤‘›Çy§ñ"U¯ÏO{wv«•´Çe}~[W7|e-õÍ­¤&;¸õš•ÌœTuÞ…—¶®ž]»ž e%ܰb)µš`(Äë7ÑÒÑÅ}íK¨þu¬fNA*I„¢1椱°8·Ž·±jR¥iV²’ Ô÷º™[˜†^£¤Õéak}7ÍžÞU‡UÏᎊøÂñ} E/üÌ`Ñk¸qj­C^ÔJIÙvœþ ZµÀôÜìF-¡·ù ™vzÝBQ'H”<»™ªÌ$ú<” \»‰\‡‰P4J†ÕÈ /ˆ/¡Çí§ßkä£-Ì-LcyEUIôºýxCQ®ŸœGQŠ…!ˆ<{|Îr“Ll ºk_(JS¿›)9ÉøCQÂÑÞPJ *^ø:}q1Üëö#Š ×()K³Q‘žDû—E%é¤Yôn`vA*I-Ûë{P«\3!ƒFÅ–º.2¬’ ZNt 1uJ>{šú°ê5ÔõºôéòñÖñv¾¶r2³´zò…ñ…#Ü5»„p,Æ„L;u½.¦å$£¶Öu2à ò§]uhTJòfÚ‡|¨ O0‚N­¼èyz.—üÄ'Iàò‡Ùq²ƒ†Þa¾rë|ìf}âuQ’Å¢ø£¢¢ˆ  ’(¡T*0ë4c\ÛχRPj5°¸*·?ÌS,˜œG¯ËÇѶ~r“-dÙM—µ£2ÿ¡Ûö¤¶¡id‹D$E¥<½*& †P*• KvZ²#!ÐEQdï‘cì?v‚CÕ5ŠóŸC LŸXÅuËÓØÚÎàð0[÷ ¼¨€—ÞÜÈËwëEN5µÐÐÚΓ/¿Fr’ €«X:o×°ãÀ!Ò’h5j‚á0í]=$Y-‰ö]}ý䤧³|þÜËè5õ<ºæ‚’T{åE…T•3¥ªÛEêsî9|”w¶lÇ ž·Mi~>7®\FŠ=iÔö—Þ|‡w¶l':+4+ÌåŽUW£ÓjÇ}ýTs ?÷23'Uñ™;o½¤ý%‰ÃÕµ¬yáUªëX4k:'êøÉãOrï-7²jÙ(ÇÚ½½l?pˆŠâ¢Äêq,£µ³›“ÍH—yÁèîëçͶRS߈sØ…Z¥¢(/‡+ÎgjÕh—ªÓtôôòîÖ(•JÌÆÑ5MCá0ýÎa2ÓR™5y"gëè½GŽñüú·†B¨U*Rìvò²3ycÓ #Š":­†T‡ƒ)•å„#‘Ä{ÁÿóÜ‹¨”J>{ç­d¦¥^ö¾žÆë÷³óÀ!J òE‰ÇO`6øÚç?Í?û"Gjj¹bÎLþËD›v좥³‹âü\Y ËÈÈÈü‹1è ±¿¥IƒFEšEI§aëñV®žC4&Åã~•¾PµJ Ťck3óRI1ëð†"ô{‚t ûAû[ú)K·ò«¦ð‡'É·›¹aJ>‚ @} ÚbK?·N/ÀŠR˜l&‰ŠÄ˜”eGP(ȵ›hôp´cW8Jó€_(Ê©^zŠ{ç–â0êhìw³§©•RE§az^23óR1hN‘fÑ“lÒ%RÌ:žØ^Ë-S x¯¦ƒŸ¼{„;g3%ÇÁæÚNî™[JÇ—?.þ¶ÔuñùEÜ2­ƒmý,)Ëdr¶•RqÑXôP4Ê©ža5ÝÃ#1*3l,.Í$ñÝ Ñ©•ô¹ÌÌO¡ Ù̬‚T½AÚœ^D$Žw:I1ëx쎼z¨ RàÆ)ùãÆ­_ŒKèQ1ÆÉÎA¶ÕtrýÜrÒ“Îdqĵ=‹ŒE‘¥¤@©ˆ'rP*¢¢xYÓ‚BAªÅÀŠÉy<½µ¯?LYN2{ª[9ÖÚGŠUæï`9ïýúØyðÿñÙO²|ÁÜ¿¸?QvñÖ[yaÃÛ ¿ÿÏï—•9nû¾A'O¿öîÙG8¦¬ €OÞv3Ó&TŒ±€…#v8Ì Þ¦¡¥ ­VÃ’93¹cÕ5äd¤$‹Y0fýæxî7ñùåæð©ÛoaÆÄª1âÆãó‘—•A^fû±Û°˜Œ¨”J|þϯ‹[·c6™p$ÙxnÝ›XÍ&T*%¢n—H4JM}#ZM<ì"Ù>Zd§:ìÜ~ÝUd¥¥ÑÞÝïžz†é*¹nébž|ùu"g ªKE’$’lVæM›Js{Ýýý4wtR]ß@ªÃžèþ@€Žž^ì6v›5!P]/-]xýþ1}‡Âaz‰Åb\Y4æu½V‹Íl&;¿@7èÏ_1A’$[Û8ÙÔÄêk®¼¤}íäͶòÚ;ï¡Q«yøÁϲbá<ªëøýs/ñèš?r¸º†OÞv3©)‰…_ À±ÚSx¼>¯¦«·/qN×·´âöyùõSuÎ}ì†kIOIw,.—×6¾Ç‹ëßA¥RÅr¹ÉÍÌ`Ï‘c¼¿kËæÍá“·ÝLªÃ>z$OÝv3«¯½ßGjNòµŸürÜ}ïêëÃãó¡V©ñ‚4wtÒÑÓK(F¥T¢V«p{½x|>zúûQ«Uw€i¹Éä;âÆŒðÚ¡f¾°¤ µR`Õ¤< îZþáÉn¦å:(J/4µ*ÂQ‘Å¥™T¤'!( "Š4ô¹yb{-5ÝCüiwåéI,/ÏbR–ƒŠô$žÙSGU¦Þ0“o<„Ì$>µ Œ4‹ž=”¥ÇãØoššO8*²·¹n—Ÿ#íƒx‚¦æ8p˜tÜ?o0Êû';qÂLÉv`É æ „yjç)JÓ¬µ*’M:þëæ™ìoégØF%(ÇD*3“8ØÚO(£eÐÃ̼ö6õ1è 1)Û^­ÄåS”bá@k?*¥€'὚v|!¦ä8øã®:>³ œíõݼs¢ÉÙ>1·„.—\»‰y)Xtš=4ö»iô°¯¥d“Ž¥åYÜ?«^CŽÝD’A˃‹«@Aâ™Åª×bÒ35ÇA£&+ÉHÛB×’ó Ó¹zBÇ;ÄD‘@$ŠY§¦ºkˆ÷7ò‰9¥ ûBèÔ*Ò-”Šø¢H›ÓËúc-”¥Ù˜]˜ÊÑöA–¤óø¶Z¼Á(Þ`„t«•RÀ¢×ðÙ´Ž,ô4ô¹P)v6ôf50)ëò y—$Ð%Àˆp¸¹“IÇÄ´3¯$Љ"QQD¥øÄ @Bâ½A‚‘ºKps? (Ȱ©ÊvP×î¤87™¬ô$Nv 3½(T‹á’ûúk"Š"ÑXì²ÝÎÇàð0¿ùÓsœll" ¡Óh8_×ÁPˆÇŸ™[w0sò’¬ö9ÎýÏžøÑw±ÛÎ$”ˆ»Ø>ºæè´ZÏ™Ioÿ¯oÜŒ$ÁƒŸ¸“áòçpëÞý<ñÂ+äeg2kÒDö¯æçkþÄcßÿÖ‹­×ëã*.‰ýN'&ƒadB PP×ÜÊãÕL,/ 9t¢–¾A –eqàX51Qdpx˜h,ÆñSuAúC©®Åd4P^T€Ýf#?; µZMŠ=‰#Õ')ÎÏå¡OÞM^V&¡P˜ß|‡ ïoá[_øý<JKH>çXܰb)7¬Xú‘Æ ñEƒ–ŽNTJ%%ùyiäHíIž[÷&ŽWSÅ]7^GEq!ݽýØ­Vî¹å^|óÞݶ“SM-Ürõ –Ì™…#ÉÆàÐ0{'=%™Ááa‡‡‘D‘>ç}ƒ¼µeùÙg.ìÀø^ŸÖ¿ÍÚ÷63±¼”;®»šÚÆFž|éu¾ñÀgHuØynÝ›lÝ»³ÑȽ«oÄd<÷»¡@¡ÆXúA7b£op¦¶l W.œÇ¾#Çé$35•†Ö6*JŠ(-ÈcÛÞƒHHÜuãu”ääcsšÃÕµ<öçFm‹F£Dc1vî?Äá5 P ÓiédÅü¹Ì›6åU,¿ŒŒŒŒÌ?ÁH4îF.ÆãnSÌ:&o«åSóˉÄD½!6V·³¯¹Õ|ÿúéìjì%Ëfä{×O§®×M›Ó˼¢4JR­èTJ¦ä8ð†¢4ö»ðÆïóýn´*%eé\tÙ¢SÓï ˆDÙÑÐCmOÜC0‰ Ñíò±áX+Ãþpâ}Ûê{ØV߃F%pUU…ÉŽ´p¸}•R`BfÓr“ ÇDÞ­ngB¦òt‚mN/?Þx„òt:•ÀŽ‘xåö5r¸}ÿ·l")&VÇ;LÏKaG} }n\þ0íC^JÓ¬\,˜ÐaÒñÀâ*~öÞ‘xÌ»ÛOv’‰˜(Ò9죡ßEQŠñÌù뎴 (¤YôÔv3ì¡Ñg•IdÙŒ<òÆ~†üa¾f*É&q1Ï4/p¼sˆÎa?é=ZЩ”¼z¨™’T IDb"'{†)L¶à†‹);zéò1è Ñ2èň°¤Lºø3ˆwïöÚìô…H©"¯Ý.?*A ßafýÑVšÝxCQRÌ:ŒZ5K˳Щ•üjó RÌ:®˜ËGZÑ«cèÔJBÑјÄζ^²mƸ•~ÈË 7ÈñN' îžSÂÁ¶~´j%Å)ñó¢*3 …úÜôy‚¨ ýn$`b–ý² !—&Ð%‰Þaõ=ÃL*HÃ¬Ó ŠRBœGc1BÑx“î’ÝæÇãý]{iíèdÚ„JN55“‘ÎÌIøóëëI²ZX{çmüñÕµ wÌ]½ýœjjF¯ÓòÍ>‹Ùdä·O?ÇÚ›9\s’eóf:™Cá03&V±pÖtÍšA[W7Ÿøò7èêícØíW ¿¾q3Pˆò¢Ú:»"'3ƒ…3¦¡R©Øqàþ@»çãTñ?ϾȋÞáÄ©z–Ì5ª¯ÌôT¦UUÐÚÙ Ä]&•—1ärñÞöÝ,š5$‰@(Ⱦ£Çqy¼\uÅzØì^ ‰oýü7h5Bá0¡p˜ß?÷2n¯—a·‡Ú†&$$¾ùÀgY±`.W.œÇžÃG©®oÀçàñûxóý­¤:ìD¢Qªëƒ¼¿kÕuõèu:fO™HQ^nbì›ë–\AZ²ƒîþôê:ªJ‹Y:'>ǯ¾óÞ˜¹ÛìŽU3wÚd¦T–{ ý olú—×KšÃAFj2Yéiæf'D¸(ŠtöôáñúÈJOµx R*Ç»îìéåµ›(ÊËaѬ£Þãóèêí#s)(ùÙYÏòfèwÑØÚNyQá…ów«~âù—öxIN²EÞÛ¾‹÷vìÕ. ¢R©%‰Ö¿Mvzö$û§±µ«—,âÖk®D§Õ0ìòðçµp¹Ü¨T*6ÿïÞc1ÇWÃÇs—$‰šúFÞú`+3'Mà Ÿø“‰½G‘d³ ×iÉÍÌà³wÞJ8áÝí;Y¾`åE…çô#²÷ÈQüÀèïd_ÁÐèØôp$Âû;÷ÐÔÖŽV£¡oЉ/  ÓïB’$‚¡ýƒC„#aDQdéÜÙ‰øóKE’$<>æ³òL®,ç+Ÿ¾gô{ûùÝŸ_`Þô),ž3+^†øõ¹8/wœÅˆ¿  È©¦ì6›uܰ™ÿ[8}!†ü!v5Æ-æóŠÒhôàF(K·²¯¹Jàê 98}!>ç0S™™„A£&Í¢gVA ±˜Äg–³¸4nQ(è5*VVeqYlææ©—4& 8Ú>ˆJ˜”å ‹Ñ1äC©PPl¡$U@’`~q:okeZ^2fíhƒÍÛ'ÚXY•F¥¤}(n–pÂÌ.ˆ?w¤ZôÌÈK¦4͆;&¢Q |lVq"S¹(I„£"[ë»E£¬ž^ÈÑö¸Á!Ójà¶…Hœèv²zZ!Sr./ÏA£bQIZû™’ã`R–§/ÄòòlìÆ3ÚC§V’n1dÄékØÐ(•$›ôtû „£l8Ö–Èšï GÑ©ã.çy#žs‹R‰ˆ1$ &g;FŽ$´Ì+Jç;Oqñ_™‘ÄÁ¶LÕjîžSB†õÒž?Äá} µÔöV§—Â丗C$&²£±‡÷jÚɲ™H·ê¹¢4½ZI}Ÿ›ÉÙ´ªx9<›^‹N­ÄŠ0à Rß?_\Á0V½š,›‘V§‡Â3Vž`„ «ÒTýžåi6&fÙ1hT¼~¸•R`YyËʳP 4J»æ”|¤,î—$У1‘¶71 rGRþ‡#Qb1‘hT$àE CFLIRb¥ ?ÝÆ±†^öÕw“‘d¬×\ò*‚(Iø‚Ú]!¢Ú ù¢†¼Œ$Nv:©ÊIƨýè~ñDa;9R{’Ξ>®[zS+Ëùóº dg1¥²»ÕJïÀ O¾ü:×.YÄüéSãûŽðáî}(•J:º{p{½tõöqÊ¥ì>t”êºæN›BvzÍí¼°þ-(øÄÍ7ŒGZ²ƒÏܱ½NÇ ëß¾à˜Cá0ÑX ¥R‰#ɆRHµÛQ«Tœll%Ð ËJ(ÎËÅhУZ:º$‰d» ³q|õÎÖmÔ7·1¹¢Œ‡š†F\/ýƒNV,˜ËÀˆÀ¨(*D£V“‘–ŠN§¥¶¡qŒ@W«TB!ºûâîÉJAÉÌI˜5y"[öijHGGbŠ»úú™>±’’ü<"Ñ(ûàhíI$IBAPpÕóéìícÿÑã•w¶lG­Vqã•Ë}Ca¶í;@u]ý%þêkV’“‘>fû€sˆ§^~7?ØJAv³§Ldre›õ’û–‘‘‘‘ùßC ¥uÐK¾Ã̬üTìF-;zЪ•\7)—7޶0ì sãÔ|†ýa‘(÷Í+ã¿·Öðéùå¼s¢d“ŽcNJFÊiõºãÏ[Cþî@<¤Ðé aÔªhð U 8Lº &ŽV¹vzµ’A_­B‰ÓB%(Ès˜1jUt ùÈN2Òã0)Û1¦ôWç°Q’â¡b®¬Ì&Ùß2þ3•E§áÖéE<½»_(ŠV»4"Чä$3» -¡…¢1‘^w<ö]’$Ü0Ã>¬z &­ ‡IwA‘×çð£·1““d¦×Ð1ì#&IŒmæG©ëfÈ¢}ÈGYš Q’¤¸È}|{ •ÀÍS ØÕÔˇ§ºøõíóhòÒ5ìcf^ å6rÏÊæ„%¸ar~b›Q{Ff#1Ú‡|Dc"]C>†ü!Úœ^‚‘É&-æóTù:Miš••Yt»ü\;1—L«‘§vž$Õ¤gj®µR`ÀdgCvƒ• àÅýM|qɶõS™‘Ä‘ö&d&aÒ©yvo=WUåÐ4àæåCM ø‚¥XhuzðÈ´I6é žP˜N—Yù),(Š/V‚³V…;?¾ž`ïÈÿû½A4JaäþøÊ:zX:o6w¬ºæ¼PAP"Š"•%EÜyý5t÷ ð©¯=ÂÖ½û)ÈÎ"‰ T k¯^«E¥T2ävÛWšÃ‘&‚  Q«IOMáÆ+—‘dµ°qÛNì6+³'O¤8?—h,FßÀ ë7ˆ/Lˆ$¥RI^vÑhA˜\Q†^§#-%™œŒ´„ëñ°ÛÍïŸ{™Í;÷ŽDhnïD’$Ò“Üuã*¬–±IØ z•Åq1 ‡™5eâ¨pa·›ÆÖv6e…ñUÛ²ÂRvô:-¢("‹gÏ$#5…ªs„íÙXÍf¾ýÅÏãõèèîádc3=ý£¬˜]½}lݳŸe æŒrá> p¹Ý<ùÒ뼿s·\u%+Îã†m³˜™3e2Ãç£ú–Vv:ÊÌɨ8Ëb¬R*I²ŒNðŽD¨©o$&ƨ,)B§ÿÞA'ïnÝÁ‘šZ¾óÿHxe¨Uªø‚BAYA>±‘ê§šZزw?Óª*øäm7#+亸GŒB¡àO¯½A[W7ʳ’j¸<^þôÚ:r33^3'NàͶ2¡´„¢¼œqç( S×ÜBAv¹™( üÁÍí”æ'²û+ ìV+f“¾Áx yoïnßÅ€sˆ’ü<$)~§+ÎÏEZÚ±ÖÍüÏs/³rÑ<*Š ¹fÉ"BáÏ®[OgOýƒÎqÇ …?R²;I’ذy ÇOÖ³`Æ´QVêî¾~^߸™H4ÊÊ…óG½O­V±eï~¼>?“ÊË(Ì[%"ÑGjN²qëöKÃ’¹³Æè&£’‚<:º{Ù¼s7îÙ‡ÙhdRy)W.œÇ¤ò2Œý%ŽŒŒŒŒÌ?7¢…)ò&ÊÓmït2·(…Å騔 Öl?I¯;È´ÜdÞ>ÞÎÜ´x9­ŠP4†E¯¦Ëå禩¼¸¿ÅeñZæ:µ’ýÍýl:Ù€7e8¢¾ÏEN’‰[¦“tþÄÑ*A ÏnbyE6¡‘|.]•ÀMS P u<›¼Z™¨}6zµ2îBMü¹k{CVšÙgB~­ç$ÃVŒ|vǰw0î½(ICþVÃí¢‰çDÇ»âÏ •À»5í|pª“é¹)Ü2­à¼‹j¥À¥,,IÇnÔ’lÒ!(LéäK/íÆjÐâ0iãaÌzt*% ŠÓ)L¶a5Ðç ð­7ö£U)ùÌ‚rv5õbÔªùÜÂJ´j?ï©ç+ªð#<¶åV–Âd F ãYaËIF-¢OŽw6ÁH µR ÏàÏ{êô‰ÄDB‘/îo@¥¸ejsÎ Ÿ>—A_ïl8ÈôÜd>9¿œâ j¥@y†£íƒ¼y¼5QªmjN2ÙIF"1‘ååY¼z¨‰n—Ÿû¯¨dF~2Þ`”£ƒÌ+JcEE61Qä盎qßÜ2öµôñΉv®ž‹N­%¨µj$ƒ‡Q7fŠ(:µ’ê®!¶ÔuñE€ÿÞZMšÅÀ-S (J¹ôĹ—$Ð}¡½n?ɶx¦=7ˆ× 㠄 H1DµµN‰^ˆ—J‹J‚(!!"*гíÃQÖh`Ðd~y&I&4#®Œœô§O`PE{‡9ÒæÄjÏÀ¡W¢U Dc ¬=}.?6ãH¼ûGC£R1wêdr3Ó/ë}:­–Y“'’ê°“ê°“žFc[;ݽ̛6…M;v±iûN–ÌEu]V³™yÓ§àvÑÙ{Úš,PZ˜Yu¸6·\u%.÷ëüòÉgÐiµõz45ª ¬ ZÍfŠòrˆ‰1ŽÖÖqðx IV+ýƒN‘ …‚ÌÔ”DܲÕb¢ª´‹É„Åd"ÅagÈåU.M’â1#§ÅÅxVÞX,J{w§šZÇvûþƒgÅØÇ³¸©9IÍH¬ºR)ðß?x„ò¢B2RS8t¢ö²ŽV£Á‘d#'#æŽ(*¥“ÑÀ€sˆŸ>ñ&ƒaÔ\ùü~²ÒÓøîC_ ÉjágOü‘Í;w'ö+‰FE‘“MÍ4´¶¡V«ÖÒÇ«ùò§î¡07›²¢ÊŠ.ìv%IV+IV+9éÌ6eÔëÃn¿ûó Ø,f–Îs^!#Im]Ýüùõõ¼»}¡p„¢ÜDiìriFj ·]»rÌöÖ¿Íþ£'Xµt1KÏŸ?À΃‡)ÍÏK]€â¼¦M¨ä•·ßåpõIΜ–xR©¤®©…WÞ~÷¬ýs‹‰8~"á..“ÊK¹véäd¤3}Beâ»áyúµ7ètr׫ؼs7ýÎ!>ÿ±ÛùÚÎKo¾ÃýwÝ1nÖpI’C¤Úí‰E¥¾ÁA:zzY¹h>Vó™{0&Ž$æ¼g`×Þyh,†Ýj‰¯r ‰FQ [÷ =%­&ÊÒïtR”›MEQ!©;)ö$”J%¹¤§ŽŸ¼®±µîÓß«KD%ŽŸªã¥7ß¡¬0?^"mäµX,ÆÑÚ“;yŠ/|âcXÍ&†Î„Í ;W]÷ù›vìâ¾[oB£VcÔëùäm7{žœôóXüí6+Ÿ¾ýJ òiëêfÛ¾ƒì=rŒÃ5'Ù¼s7ó¦Må'_ÿòeí³ŒŒŒŒÌ?/F­Š«FÜÐn>:LìKË'&þÿñÙʼnÿëšø3CU晼9_¿j &­š§îYŒF)pÕ„ñá/„V¥ä¶ñq(E¢û¹EçdÖøã½‹Çíçž¹¥‰ÿÿâÖ9èÕª1"þ·wÎó¾W>·µ •§F >ÍÔœd~wç‚ËÎò}fÞÕ‰ý9wÌgàÉOÄŸ±nŸqƈ”däí»zT»åg%mûô‚3Þ |lòáÓÜ5«dÜí:µ’OÎ/Kƒ‚èã™ûÙži5i5°²*;±€rÚâ}š¹Ec…ÿœÂ³½_•|ûºéLʶ³zZ!ãaÖiøÒ²Iã—F-¿ºmª³ þ¥\’@÷‡"„c"6£ž`0‚×bØÀí ↈ¨@©ScP‚J­$ª‰ " @D@¥åùÉ‚‚Ã-ýôº|Ì-ɤ*ÇI§A!(FY‘$$‚‘(';Xm6rÓ $ëŒz Àa1àôˆIÂ_X!(Æ@ÒY_ ñ2u+Œªw¬T*AŠ×Š/ÌË¡ª´˜wïçHM-µ Ì™:™ä¤$ÞÙ²G×ü ƒ^Ï‹¿ùÙe—OZ±pé)É4·wœd£¦¡‰ç׿EZòè“R"îjêñz)ÊÍáÛ_¼Ÿ¶®nþß÷þ‹7?Ø‚BÏ®Û@wßjµš/Þóqî¼þšøþ¡³(Jz­FCLñ‚ züÁ ‘h”䤱IÉAIVZjb.EQÄíñ2©"~Ñ…Â<óúzòs²X1’_Pd¥¦r÷M«Øsø(OÔ\Öüèu:2RSèìé#‹Óëó“ŸEW_w¬ºšìô3_Ø×6nÂã;“tbѬéd§§!!1ìò°}ÿA:Fܳ%I ױ`ætò²2Q(â! rR¢(ÒÑÓË+o½ËÑÚ“|ü†UL­ßM>‹qôd^»žêºÏ™IßÀ =ó<áH„•WÌ¿h@_ @]s ÑXì¢ ß:{û¨onáúåKIK>#6uZ-WÌ™ÁŽyaý[ÌœT5ªD[0¦g$©ÄcÓ‘$¼þ@b» äy¼‰6s§MÆn³òìÚ ‚A6lþ·?ÜÆœ©“°YÌ »=¸ÜDIdÚÄ*6ïÜC^V&«¯¹2!ÂÏ>“¬†=|þŽ$ÛöÀf1S˜›ð68ímáñûGŽí™ëÊU‹æ³úê+v{øåŸIl7ô|õ3÷R˜›Ãû;÷ð‡—^3o’OŠx¾²xÃnÏeYУ#9~÷ç$‰;W]3ê»7ìöðÖÛ(ÌÍarEÙ¸5æ§T–SVTÀÞ#ÇX2w6¥y‚@r’-QFð¯B¡ /+“»oŠ›SÍ):ÏsØ…”/£t.áH”¦Ž¸ëô°ÛÃÀÐMܽ—÷wîáš%‹¸zñÂDr±`(L²=‰û?~þ@A˜X~fõËëÐÞÝËIb`hˆ!·›ÌÔTò²2ÉHMáhí)ªë˜XVJ{W<ù¤òÒ1cƒlÝw€þA'©)Ô5·°jÙî[wmvyâ±ÆE99‰m§±bF£V#Æ.¿\Ó°ÛC4ÑdepÈ…N«!‰ I0oúT&”žY½Ýsä'›/š5ƒ3¦ÑÔÖÁëïn& 1kr<[}vz*¢(%JSÍš2z5Íér14ìÆ‘dÃv Çâç{kgû`Û¾ƒT×5°jùn¹zŸÞƒCü·}o~°…!·›ßp×.YÄÛÃ/Ÿ|š'_~˜㺥W$âÄÏ%óáî}<^Í”Êr2Ò..˜¶îÝF£!73§ËEkgC.ƒÃ.ºûû ‡ã.ðûU²¢—äñû?ø»¾¥¯ÿäÌ›6…»oZ•Ø~vòD£^OvzáH„ƒÇ«Ù¶ï þ@€†Öv~ó§giéè ðÛ§ŸgÈåÂë÷ó†·)ÎÏeö”I£Æ­Õ¨™XVÊsëÞäx]=¡H˜÷¶ï¢¤ òoQ9V[Ç»ÛvPœ›;ÊCÀh0âp R©FA!`·ÙHKv`1›.˜ íü÷K¿±ô ²eÏ>Þúp=}ÜsË Ì>eT›=GŽRßÒÊÝ7]OvÆøžAzŽë–^Á¯žz†ÃÕµägg^–'ÏGA¯Õ2¥²œÉeDc—^6NFFFFFæR(,,¤°°ð/ï蟘åË—ÿ£‡ð7çî»ïþGáÎEº$A4OÒ¥¸=†\>†|ôxüD• ´ 5J’˜‹ ô˜8K*"" ” @¡@¥HM2â°rhéâƒêv–g‘m7‰‰´º‚è•ÁP”,{Ñh”mû餳§—‰e¥”æ0¹¼Œ¼Ì ŽÔœdby)e…ù‚@q~ÅçX+ûymã&ÁÝýýøƒAþ¼v=)v;W.œÇËom¤¡µÏüvæM›BS[;¯½óÕu èµZNÔÕ3kòDÊ ó©mlæW|†ÉåeT*¥ù( ŽÖžB«V““™Nvz¦óä„èdí{›ñúÔ64ÒÝ×Éhä»îàª+Œ9v­æd³xö jšðú8‡†E AOâ©T L,+¡$?†Ö6Áàß\ ŸF¡PŒò>’‘‘‘‘‘‘‘‘9Ã%–YÄp¹üôùèôÐ £Ö«°¨èc"ÑX¼–`TQK" $ID’âu‚• b‚Ñ(`¿?ŒQ£FP ¸ü! : ¾`˜†~©z%‚".æ‹’Í´jf=5N"‘ ½ åˆÅý£b5›IKv ×iGmÿâ=G”´uu‘—•Á§ïXMc[;“1žôΠ§ '‹UËsâT=õ-­Ì™:™/}ò  V«™>qÕõL©,“½ùlÜ^îÙO8Ž'ç²Z8x¼ƒ^ÏÔªrâQq+› Ü»ú&$`×ÁÃøü®_±„;®»½N7ÒR¯E¯P0{òD~ð•/òúÆM´vv£Õ¨ùØ ×rÓ•ËI±ÛÏ;¦ÓIÛÚÚiëêæúåKøÔm· ×i™;m ß|ð³<ûú†xÌýŒ)Ü}ãõ£byÏeÛÞ®®ÁãóJüu1"‘H"¹˜?äÕ·ßC©T¢V«ùÏß=A8aÏ‘cDc1"‘xB¯×‡Çç§¢¸öînŒz=¥…ùT×Õãøã+kG ·×G戹oÐÉ÷~ýßœll¦$?—/Þûq¦M¨¤©µˆ[yW,œÇ¤òR~÷çذùCv8ÈW?s3'M /j!¬knå±gž/|©”Trßꛘ9i6‹eÜ9R^€ÁawݸŠ[®ZÅleé-ÉÏã+Ÿ¹—ßüé9¶î=À™ÓG%»óú||ëÑ_ã ¨*-æ“·Þ4*9Üx »©oiÅf6“ž†Íb&ÉjÁ‘”DFJ2é)2ÓâÛýÇgilk§®¹•Iå¥<ùÒk¼³uÇ(îp8B4ãµw6ñþÎ=£>kjUŸ¾ýÒS’ãåHÂa®Y¼Oß±šôäd$$Ü^/CCD£?ßúùoQ)•„¡D†I’8~ªž­{p²¡ ·×GZJ27®XÆÊ+æ#ÆDžy}=ûާ³»7î±m'«–/!e$„b¤V¹sØÅÛ[¶Ç+6$;¸gõ,›;›ô””qÏ“ÿÏÞ}ÇKrVÞÿUUçÜ}sΓîä¤QÎBHBBŒq»¬×8®Ã®×¯í]oô:¬ !$@Y&çpgnΡoçÜ]Uï}§5W“ƒ˜‘8_>󙙪êꧪïˆ>õœçœ/<öŠ¥›¯~ï¼¶s7ºaðù¨«©®Ô_hª«ã?ÿöobµXp]`qÌ ¡ªå6€ÒW]!„ââ]P€®* ˜/”ˆ&2ÌÇ2ŒÇÒd¯U¡¤Ÿì‰n`šfe¦YQªvkš¡29dp"J©PÂï´QëwÑ]í¥¹ÊKµ×IV7qÛ­túìx6ý¿öéÇNÛÞÖÜÄ_~éß-Úöƒüß•?ÿ‡/|®òçÞï¢ã Ã`&<ÏÄô,/½¹–ÆznÚ¸îœk)ºÛ[yüýõY÷¿=e×çqóŸù9~ã3?wÚ±ëz—óÿñ—‹¶Ý¸a]¥=Ü…R…UË–ð =zÚ>m¡Zùm×m:ïy4M£&T®tÞÞÔ„ÕjYÔ~LUUšêj ÏÜ~ÉépÐ\WGÀïcÍò¥¬Zº„žŽÖÓŽç@ß ü^‡‡ßw¦iòõ§žÁnµòï>ÿ^ßµ—'üï»åFêNÉxñÍd2Yœv;ÕÁk—/ãæMë¹ï¶[*ýµív;]­-•ÖvuµüÇßü^ys'ý£c4ÔÖ ( =t?=tÿyïíòîN~÷—>OU0@kSÃY[ÞJU6¯]źÞeø<ž3@Š¢ÐÓÞÆoá³Ø­ÖÓV¯ÇÃ'>ø­ ¬\ÚsÚzí3¹ÿÎ[yà®Û.èŸÚç?úÙB¡ò@ª¦*Ē޶Ó¤­äÌÅDšëë°ZËÿYÒT•êP–ÆB~_%°´ÛlÔUW‘Êd±Z­•䚪³?p:YõÍò¥§í»ï¶›¹uóÚ››Nûwêv:èio£:¤»­•|¡À¾#Çh®¯+/ YÚÃæ5«ðy=ŒONsøD?¯EQ˜˜žahlœåÝܰaׯ[S)Âð[ŸûñTŠ]ñÒ;ضw+zº*ºÝnãcÜÇý·§ñ{=4ÖÖÒÜPwÞÀ×n³a·Ù0 ƒG «zÉärÔUW-Z†¢i*ï…-ø›×¬¢³µ¼G!„B\œ·Ó³ìÙ³g¸««³Éç{+`:2>Ï·Þ裥ÊÇèø<ýãŽDت}.ªNªC.‚'~¯ËŽËnÁi±à´XQ …ƒý³LLÇØÐQÇšöj}.œv VM]X{nRÒË…N0ÌòUµ\P¡¨¼~t‚‘Xš¥­5LOGxÿÚ¶k']2Ÿ/ðÕ'À÷ž{MÕxì¡ûøðûï9c¡¦kÕ~™åwùó§U¿èûQ(pl`ËE[sãié¸%]gÏ¡#„ü~ºÛO¼gææ™œ¥µ©‘T:MÐï«´Å:U*a>§*è_TíØÀŠ¢ÐÕÚL*“%OÐPWƒã”Àtv>B>_ ¶º\å»X*–‚›Ëç§*8­ßÉ‚$2cxeå ú‡GñzÜ4ÕÕV‚g]×ËkгYV.íyGï{6—gv~¯ÇMÐçC×ufç#•±dsyjËUÜ“é4óÑU^›D*M*¦¦*tÞ”î|¡ÀÀÈÝí­?µTs!„B\º““’?"eâ½Á4M"óa¾ü•yþ‹_üâÿR ¿ ¿§ÌEN›‡ÍB6_$-0ŸÎËñ[Õò¬9 볕rUtUSЛ¦áÐ,šez6Áë;YßQ‹ÛaCU•ÅOU9™®YžW•Ó +• ›U#—/ây[ÏÁkÅbá¦ëhkj$àõÒ»¤û]œüüG!—ËÓÓqù­ì6Ûg-O²h›×¬:ëþºš*êjÊqUÀÖãâ'-;¥åYÀç=cá¶·¯7>S0å°ÛYq–Þæê5ö3ø^a·Ùè=¥˜ßIš¦µçù•ætØ-O±X,g]7ïu»eBøgffxüñÇù¥_ú%, ¦ »Fæø›å wd>…Ëf!ä¶ã²•ÛTÿÕ‡¯g œäÍÁLLtÃäÀx¿ÓFgMyËë°Qçu¢ª ?<8JO­Ÿ±hŠ­ý3´„ÜJÝ5~E]4¦‰‰ ¾ÿýïó ¿ð •ÉÉ‘ùÿÚQ ÓÄÄd×p˜€ÓFO]yÒÍfÑøãl`Ïh˜ïîÂ0MŠºÁÞÑ0õ~­¡rÖlƒßů߱’L¡ÄÓFémrb6ÎîÑ05Þò²çžZ?mqFÃèè(Ï>û,Ÿýìgî“Ét<ËÇ&¸{E3æÂÄð¡‰(G¦£ì›§«ÖÇŽ±k8Ìñ\z©€IDATñ™Z×MSyîÈ8‹Ê_<·?x3õ~™‚ÎSû‡Y×RÅÁ‰G¦¢xíV¬šÆ’Z%üb\X€n³tÙÍ¥P­©¢Žaè†‰Ž‰‰¢‚¢•ÓÑ5EÁªjh(ŒÏ&ðÙ­lè¬Ãm·]Î’qòÅ©\‘¶š“3QêÚª¯¹]!„BñÞul:ÆöÁYÚ«½äŠ:}Óqn]Ú@,[à®åMüÓÖ>V ?<4Ê÷öc·jŠá°j|þæå¼e9P¡LE“LÇ3üðàé|‘×OL³µš‚n°g4LSÀÍÏmé¡9PÎÌ+•JÌÎÎVŠð* lj¯áOÚÄd,̓3|âº\VgñÁ5m¬m©&ä¶c·¨0IaÑ©†i’λ§rüüM-xVŽMǘNdyæà(ÑLž­ý3èf9þÛ=¦%äæ›»i\S±XdnnnQaàùtEß¼c;†fi¯òòðÚ·²[¿ðµWèŸc³¨Ü³¼™’aòКöÊ1»•ÿÝ7ùÂ-Ë&™NdùÁÁQæYÞš¥ €É®‘9ZCÛÜMƒ¿œU[(©d˜Ÿ3“̰µš#Ó1LÓd"–!œÌ²²)Ä¡‰©|‰ùtžéD–éD–¿í(ó©]5>œ6_ùÆVþðþõ˜˜Ì$²<µ„‰XšÝ#a²Åª¢°c¸|ÍßÜE½ïôLß³¹ ÝfUi z¤ ú]جK覉nšæBRºúÖì¹EU( æ¢)VÔ ºí—4Å’iB:WÄbÕ0M»ªàwÙ/+àB!„Bˆ eãÑ4(åìÞ ËÎwö Ríqà°jìžÅiÓè¨òâ¶Y¨ö:˜ˆ¥¹®£–—ú&‰¤çÈ— R¹—:Ÿ“7g˜Mæxrß0µ^'ôÀöŽ…IJ|x}n›•€ëÜ…}c™ßß7LA×9<åæîzNÌÆñ9¬ìpt:Æ/Þ²‚L±ÄP8A•ÇA½ÏÅà\‚:Ÿ‹%µ~ŽNE™Id¨ñ8xñØ$áTŽ'ö Qçwñ‡¬gÇðE]ç‘õ¸l‚γÉ4Ë)õN«…íC³|}G?Ëêì™C7L Ó¤£ÚG<[ £ÚGºPbÿD„ØB ºÝ¢Ñt³²1ÈûW¶0—ÌñâÑI"éßÙ=H£ßÍ=°­Ó<²¾§ÕBàc²,¤Ï&ÊúºÖ*:k|è†ÉÑ©±lž/Þ³·ÍBÿ\œ€Ó†ÃªQçsRësR(é<µ„[zêY×RM4“g÷h˜X¦Àã»iºùÃÖóòñ)lšÊ#ë;°[´sŽéŒã¼ƒ4U¥¥ÚËŽij«=t7‰ŽÌ•{œå ÊOo”…tMQ)• R™ÀX4Eת( Ì%¥¸sYßÝ3D2_äßÞ½š– ‡oîàÃ: '9:#è²óðºöŽ…ùÊÇ98¡¨$sEºk}|êú%çÌn zxx];ïdÇЙB9Ízx>Éð|’oèÄaÑH) ªªp|&Îd<ÃÈ|ª¼FÜ4™Œ¥0MHæŠX4•€ËÆ#ë;Ø9<ÇWÞ8Îþ‰†aÈXRëç[zÎQ[LaY}EÝ£aÝÐÉõuD3y†Ã)6¶WsÏŠæJŒøÚ‰)\v+·ôÔS(é|{÷`¥ðÞ¿»{5É\›¦âwÚøÈÆN¶ Îð•7޳wlEx¦À²úÛÜ}Îûdšåbs>‡•{{›Ù?>ÏGÖwð¿_9BI/ú6‹ÊÈ|Ý0y±o‚zŸ‹¶*Sñ +‚¼||’x¶€ÃªáuØxtc'¯÷Oó•7޳{4ŒEUˆf ô6ùÈÆÎ‹Êú¾àòân‡•Õm5|ë>6ö6s×ú6Þ8:IQ)?ÙÑÿ£€J9¨/”tTEÁi³\vz{,#§M“¶*>—ýÒO(„B!„— PÒ 'ÈKXU«¦ÑÛ¤Öëd.™Ãc·2›Ìrh2Ê’Z?·.iÀnÑøê›'hô/îðròuñÜ>¼+ÛØEA7øÎžAÒùÛØ…Ûn=wÐI9íþÿ¾zUQ¸uIÿ憥 À¿n?a@½Ï‰ES©õ9ù…›—ñ¯ãæžzNÌÄùÓ7pÙXß:IKÈMO­Ÿ¿›¾™>§o*é[»(” >º© —ÕrÞ 3[(±mp–©X†¿}å{ÇÂè†I®Xbs{m%8Ï—t¶ÏRïsq}G-^»•­ëàCëÚð»lÔû]4ÝœˆpÙùø¦nŠºÁ¿î8¦ÂG7uâ8ϘLÓ$/’/•P…t¡„×aÅ0M<+áTŽt¡Ädî]Ù\y_ÓŸ£\µý¾¿‹ë:jIæ Ø­*÷¬hÆaÕ°h*Î…¥Ä%ý­1) cÒÊÁ^yû9b2‡ÍÂÇ6vqÏòfà þú'ÈJÜ´°>¾·1ˆgá¾9,Ǧc›dmO=¦‘ºn¢Æ[•ûÊŸÊÂÿ¸ŒrnÉ\ùt›V.à—Ùs!„B!ÄO› ó©ë[«Iå 쟧Þçä·î\Åö¡Y^=1ŧ¶,¡Îçàž ¦ãYâÙ­i«œæLkÊÇ"éÊúìcS1ІÁ{‡8mÜÐUOsÐ}Öa¥ó%v Í’/éXU…Ç6wc³h„“Y~th ‡Uãc»˜+·Y›Oçø;W¢&?>2ŽËf)§kÛm¼¯·¹rÞ‘HŠ—OVÆd˜åÙý ËÎ ]u4Î>¦p*dz‡ÆHä Ä3>µ¥‡ºêÙ52ÇóG'8<å“[z˜K°´>À¯ß±Šïî$•/2Nòø®TEÁí°rû’†Êy‡ÂI~27@ßtøöž!‚®ò}jôŸ½bºaš ©éŠºÁ±é÷¯je]K-A_Û~œ;—7QåvP·ÌÉñ~/ à²ó¥{×òzÿ4OìâÞÞ¼+s ŽÏÄ81GS¾½{ ÛÎ u•Êòâ¢tMUh©ör÷š6žØÙÓÑÀªŽ:4›F,“/?Í0ËOfLÓDU•J½³þŒ/ô'x+Œ?ùÄÁ`&žÁjÝvš‚ž‹^h/„B!„—KQàºÎ:<6 ©|‘ÎUåâ5>\6 >§µrüÍ= ”tƒ*·—í­Ðë7ï\…sáï.›…G7tRçwU÷îåX‡U[ôÚ3±j*-A7u>'­!OyBÓ„X6ÏÈ|Š©xe¡ÈÚê–*:ª¼Ôx(ŠB2W`<š&œÊQÒ˳½'úÆ€»2;}ꘜ¶óÉ¢*4ܬóVÑVå­³÷¯jec[ }Ó1`}k5«F×Á/ܼœ©x†©x†x¶@¾¨c·j¨ª‚SÓxls÷¢§ŽÉeÓp£ˆ¸ª(ô61M¨ó9i«òtÙp.ÌÌçK:N›Æª¦ªR¾!—õ­Õœ6zC\6>¼¡“ýcóX5ÝÊ'·ôÐäwa,d·T>ç uqGv›…õíuŒÌ&ØÕ7ŦÞf–µT10¥dš” ƒòzt›EÅ4¡P*ab.̤¿Å4ÍJ`~râ½\j¥¼/•+’Ì—¨rÚé¬ñã´Y/b´B!„BqåtV—òZœtÖø*Ûk<j<ŽEÇ®¨V2‹OuûÒÆÊŸíºêP…îSÎw1ê|Nî^Ѽx£A— ËÎÚ–*:ª½t,Œÿ$ŸÃÆŠ†Ó[ÝÔ]¢(t]☂.;w,k<ã¾:Ÿ³’epêxT¥ÔŸmfþ–žK“¢”¢tÖøÎXÀÜnÑ}.P~Àòvª¢°®µºò÷[{PeÑÏÂå¸è]|n;÷®ë hì88ÆútÕ˜Nf*ë ÓDÓTì6 é|©€¿í>˜”ó’nÈ—0ðÚ,Ø4•|É ¤dK:µ^u>›vYÅæ„B!„â§åBcå"‚œÆÆFþèþ‹å¢C¹‹û…©­­ßÿýßGÓÞÙ6Ø3¦®®.~çw~gј.·³ØåŽéB\Ò§ª5>÷¯+W¦{óð$Ým!BÕtÕ¤dè¦Õ¢áõ؉gòå€ý”Ý4MX裗ȕ8Îbµtùœ8­ù"* § ›ÇqÞÞB!„Bñ^§(Ê;œ_ʘÞéàü½0¦ qÉŸ¬¦*Ôܼ]Õ>'/c.š¦¦Îƒ§ÚRnÌnQ©ò¹ˆ¦ËëÓßdæB‹6CÇÔ èyL#‘ ª¦Ò(¯ÕIs!„B!„ïu—õèESª½Nn]ÞBSÐË›'&39• ³)Ȫ¶:ªüN éòÿSÈ›”ô|É Y4è 8Ñ4¯ÝJ:WBQÁ¦©œ !„B!„ø™pÙ¹ÊBéûÞÖjZª½ŒÏ'韎2Nðò®!B^'íU^Þ*·˜¦(øœ«¦¢©*-!ÏB¿;IkB!„Bñ³áŠ-^°¨ !ƒ ÛÁò¦*²Å‰L|±„ÇiÅëX\°ÜÀ]ÁfU±XÞjz¯.4q'ð !„Bñ³ää’R(·‘J抧ãsÚpÛ,d‹åÂÎ'Ûg¦É`8I{•§2qfšP2 ,ª‚¾PS*](IçiYh¥ªÊißåc™<©|é´^Þ†iIçñØ­Ø,*©| M¢nàsÚ.8&(èé|Ý0 ºìuƒX6O­×Y9‡aš$rElšZ¹Æ’a]xç)×Içñ:¬X5•t¾„¢@I7ñ9­•óuƒx¶€Ój¡h§IS\6ËBßm ‡U#–)`ÕTÜv £‘íUÞ º¾ó)& ÌÉõÓŽ©ñ:Á„‘H›E#à´aQU’¹BåUQð:­((„Ó9B.;й¢Žaš˜f¹êû¥„j3‰,v‹JÀe?m_<[¾/'?—\Q'‘+tÙ+ˤuÃ$œÊQå)·Ë— J ÷Ýç´]Pæµ dòEÒ…Ò÷û6 ­ÚŠºA8•£ÎWþФóX5µÒ.îä˜æRYjÀp$É|ªÀÍ¥²tÕø©vÛ¹¾³Ž}ãóŒFRÜÜÝÀ7w à´j´†<|mû ~áæå´UyX^D[˜¨œ˜˜ “ÉÐÝÝ]‰‹ú¦c¤ %V6ùÚö~ ó­ìd¿ÓFsÐMßtœ ÛƉ™8^‡•LA'–ÍÓòrp2Â_|h3é|‰ÿóò,šÂ²ú ·-iàG‡Æ˜Nd¨r;HæŠüÜ–ü+ÿ´µÏ\¿„T¾Èñ«FQ7¸UëiµÅ’É$Çgݺu•Ï%ž-°wl¾\øþ¾j½®ïªÊÙÒ7uד+é<}`”Ö*­AáTޱhŠ7g¹cYc¹·{Ѓª*üÃëGùÂÍË™Oç96«<,¹UkåþÇdÍš5•1†IßLœ'÷ c·j4ÜèºÁH$E*Wäs7-£»ÖGÿl‚¾™Ïç#:ið»Ø68ƒUSÙÜ^ƒ¦ª4ø]è¦Éß½z”_»}%Sñ ƒáD¥öÚ}«Z/iÒù-ÿWÏÙUÊd¡¹B!„Wž¦*ŒGÓì›geS¹cÑn›…CsôÔú¨õ:1M“‘ùù’NÏÉÓ˜À'6÷°w,LQ7XÑÄ4áàD”©x†ZŸ‹ïï憮z–×yöð›ÛkQ€±HŠoïdmKù’ÎÀ\‚¶‡¹dE)èºi’)™OrÜçdx^ã;ûYÙb.•%’ÎSíqpÛÒj½åžÙù|žo~ó›lܸ›­°¦mƒ3]vÒù"ù’±h1ðÑ£G™žž¦³³³R…üõ&ci:k¼üáS»øõ;Vâ¶—C¹‚n)”xåÄ$KëlšånYÎd,͉Ù8¬jãËÛú(ê&‡&£D3yŠºÁ\2Ç]u„Üvöϳ©½–/¿ÑÇÃëÚÑT…Á¹Çgâ Ï'yjÿU;%Ýd.•£ÖãàæžBîòløüüçÙÃc•ÙìÙd–Z¯“›{ê .ÌÐÏÍÍñÃþ•+WVƤ(Ðt³¬>À¶Á™ByÖÛ0XÕ¢ÊcÇ0L¢™<“± CóI¦â²…ƒá$†a’Ê™Šgx_o Õ^úgŸq`<ÂK}“8¬šª2›ÌQëurSwÝ³ÎæÚªÏ/„B!„¸bZ‚®ë¨%ž-°©­†\Q§ÆSNÙÝÜ^‹ÃªÑàw1M3NÌId ŒFRÌ¥rè†É‰Ù8VMe÷H˜G7vò™–00—àù£ãT{œŒGÓL'²4ú]¼Ô7ÉÇ7wQÐuüN­i§¨J}31©>¾¹‹m5uƒ—OÑ?›`d>E½ÏÅ]Ëš)è:]§Þï¤ÊíÀf9w«¬™D†©x†±HŠíC³¬n ±±½†oîÀ¢*<¶¹»Òêd 78—dsG-_ßÑßic2–fkÿ ­iã¹Ãc † !œÜ±´‰L¡„aš4ø]„ÜvtÃàÈT”Ý£sÝ6ª½v:kZ¨ö80mêâ•ãSXT•ƒFçS›‰1O³o,ÌP8I±d°{4L•ÇE½ðKŸÓÆçnZF•û­ /–-pt*Ê’º}31~rdœh&ÏÈ|Ša:ž%S(ñêñ)¦YJºASÀÅwö Q(éœ6ŽMǧr8­^86ÁD,ÍÿÛÚG•ÛÎÍ=õLÆ2”Œr†Eè”Ôó³Ñ “ÉX†áHrѾm5dŠ%l–ò¬|4“g"–æÞÞf®ï¬[È(rÏŠfšƒn²EçŽ3Ïò¯#ä²sSw=#‘`ÒèwtŸ{L&Ð7çÿm=FA×9:åÈT ŸÓÆê¦E=ÌÓFù»Ÿ»™©x†×ú§˜Š§Ù:0MÈíÀ¦©äMÍíµüëŽ$sž?:ÎL2Ëß½zŒ ÓÆ ]õ Ì%°j ~A—ËE¶ —]!„Bˆ÷¨áp’gŽrp"B׉‰Í¢/騭*†iPÔ †ç“ Ì%0 “Žj/˃tu4UaMsˆLQg]kádŽáù$†i¢(ÐpË'³ÜÒSOÿ\¼².XU”òx³<Ãû—la<šÆ¢)˜&d :“Ñ M)§QOÌó÷¯ãµþiµe ¯÷Oã²j,«,ÌžgÙÐVÃKÇ'é¨ò²¤ÎO2Wä¯?²¥¼ö:™Ã¢ªÄ³yÒ…"pÿzžÜ7LA7¸¥»‡U;ïç²²)ÄÞ¿|I§PZ¼Fße³pײ&,ªÂ uüäÈ8+C|}g?¹‚Ng,š¢ÁïâÁÕí„“y,ªB4'WÔùƒû×óí=ƒÜÜӀݢa³œ=V€Ö‡Ç6wó± Æ£þì¡M¼Ü7ɯ߹’¿{õ(Ÿ¸®¿ÓF:_dMS6M㺎ZþñõcüÖ]«xáèN«Æt»•‘ù×wÖa_.¾¼í8ÑtžL¡Ä7w-–h ¹¹¾³ŽÑHŠT®ÄæöZvÌ ºaR2 žØ;DOcÓ1¼+˼10ÃóG'¸oe+™B‘¯“mj"–Éóʉ)v†™Mdùñ‘ñò¬úò¦s^£Ïac<š¦PÒysp–MRÒ V4HäŠüÎ;¸mi]Õ>Rù"ƒá$Ó‰,&&ÙB‰ùt€’a’.”ÈKT{ìÜ·²•¹d®<¦‘0óéܘœ\ßYÇñÙ8-!7±LŸ¿ié¢Âlª¢ÐSëÇm·2“Èòôþ ºA*W¤6Át"C¾dÐ7'à´ÓUã»àVóé<_zr¶…™ÙµÍU<°ºj·ƒÛÎú¶jž:0Âd,Íh$Å?½qŒ¯‹¦¢(°mp†x¶@8•Çç´2˰{$Œ¾ð°fushágÇÆgoXÊÀ\‚—O²|ž’að¬ËFcÀÍMÝõçg8•ã›;(꣑m!±lÝ4©õ”Çó…[–³|žX¦@ÿ\œx¶Àï^³h½E-×Ôòzû/ܲœ³q^:>ÉÁ‰A×M77,¬o?Ó„#SQþqë±r–E[5/Ÿ$಑Ηøù›–±¤ÎiB2Wdûð,Óñ,.›…×´skO#ï$–-ð«·÷’/éX5ŸÓƯÞÖËñ™8/õ•ÇdÑT‡FizØÒQ{Qÿf%@B!„â=*à²ÑS[.ºÖr³¶¥ (ðZÙÄã°â´¾†IQ7 'ÈJ•”áÑHØÜ^K:_â[»Ø=¦X2XZïgûð,¹¢ŽB9ØOç0MsÑ qI/§Hÿ×çðȺÖµÖ꟢9ধÖGßtÌ…ªä&˜¦¹Prúìæœ˜ó¾Þf6´U˧ÊkÅoì®ç;»ém±mp†å :«½üèÐ8 à´Z*ë¨-ª‚Ïae}k5ÑLž– ‡¶*/'fâ•ñ°ðëÄlœ’n²²1DµÇÁK}SJo芢Nåè®õñòñIB÷¬h"/2ŸÊ±¬.€Óf¡n¡Ê|Q7¹Ð‰Öƒÿù±O·J¾¤³´ÞOw­[ Ì$²ìŸGUnéiàŽ¥MJ¦ íU^¢™<½AMFèm ²º9ÄX$Å=+šË­¯•ã³qÚ«½xå6&åk?:Ÿïs ¹í<¸¦‰Xšýãó|þæe¼||’t¾ÄCkÛÉ,TRoð»¸ltVû0MøÓgöp×ò¦Jjø÷öñ·ÝÌêæ*MEé¬öá´–«àŸŒã+¿ŸgL—ëÚkP…©x–ƒ:«½šŒà±[éŸsoo ~—Ö‡\Q§½ÊK•ÛÎx4…n”×ñÿâ-Ë 'YÕ\ÅÞ±0ݵ>l±È)÷É|ë~]LÉ5 Ð…B!„xÊu†ç“¼zbŠÖ‡æ€›oíàÈT”ñ®úòzjÓÄ0MbÙ±¹›lQ§d”;0åK%½œæžÌ)&Sñ ³É,¦ ñLÙD–ÎjþSÚM ϧØ=:”×MßÐUÇÖiV6†XÙÂaÕ 'yhMÛµª˜Kpçò&4EáÎeM Ì%èªññÜáqþâÙ}ܹ¬i!M¿„EUèm r`<ŠU+§úŸ˜‰à´Z¨ñ8¹®£–—ú&XÝbuS«¦0Íðàš6¼+c‘7u׳mp†{{›Ù3&SÐÙ7>ÏúÖjŽOÇØÜ^K$gÏh€¡p‚±hšp‚åõ|3‰r:ýúÖj°jç½V(ÿ»ï)îÓù"ã± &"•”ýt¾D¾¤Ï±¨ ¹’N¾¤ã°j¼e ³Éòìp¾¤³|žÙdŽû&yo k[ªøîÞATEac[MeÍx¡dððÚŽ JÛvZ-,©ósx2ÂÊÆ KëôMÇHäŠ,©óó­]tùTžd®ˆ d‹%j²±ƒÖ MU8<eeS§Mc`.ŽES©÷¹¨v;ÐMÓ4˜‹3NrSw'fãÔû]¤ ÅJÕôñhš™d–ã³qüNõ>×¢ÞÓow×ò&#6öÍrÛ©r×òÌÁQ^>>ÉËùÈÆN¼N×wÔ2N ªå.R‰\ûWµr2³üÓ×÷0KW(¤òEúf☦Éx4ÃL2ÉÙ8>‡ZŸƒå v Ï’+鞌ò+·÷2MqkO%Ý`ïX˜Ïݸ”_»}%ù…ÙõÓQ^>>ÉÃk;h ”¯Ýc·VZ·r–?C¹÷ã»±[4>¼¾“– E)èáTŽÞ†ME7 Rù"·.iàþU­lš¥¤|憥¼pl‚¹Z×NµÇIvav;ž+pl:ÀT,CÑ(ûsÛ,Ôù¸mgÿ\ò%Ÿ™à©ý£üòí+°j*å¥Ýà•ãSåÖnùÕõ^'ûÆç™Œ§ù§7ŽU²72ùÅ=ËcÙ<ñl¹wûT< ôÍÄqÚ4ê}®³ßK³œ9ò£Cc¤rE~ÿþõüèÐ(ÍA7ÕOíáú®zü.Æ£i©™‚ÎÈ|’§޲±µš_½}%=µ>~û‰íüéƒ+=Óc™<ó©Óñ V‹Ê±éN«…:Ÿó¼Ÿï©$@B!„â=êäLcßL Ã0y`uÓ‰,ûÆÂ|êú%\ßYÇÑé(÷ö¶ð±M]¼z|Š¿}åŸØÜÍMÝõLÄ2D3yþæùƒü›—°{4Ì«Ûø³7ñü± vÏñÃCcèºYI}^Z`ecˆV·Ñò/éøVù¿Ïã°j|þæeÜÒÓ€¦*¤ó%ê¼NæSy^9¾8Mü‰½C¸mZÛÎÊÆÐY¯Ñï´áwÚ¨ö8Ø;6Ï?oícC[5ÿß#×UÚ³X-*!—ÝJkÈC¶ / œT¥<žÛN½ÏÉ\²¼æüdÑ;€ïìÄk·òÐÚvüNuÞrûÏÞ¸ŒÇw ’.”¨ö8ø•ÛV°kdŽt¡´(Å?_Ò™ˆ¥é®õѰðpâB|öÆ¥•?þY´OS~ùÖå}“Q¾`˜ÄBë¶[øúÎ~îëm¥5è¡»ÎÏ7wð± >¹¥‡¦€›Ž*/ ~7U¡PÒiô»¤y­jÑû}cg?!·‡Ö´ÓSë?ãxMöͳg4Ì?¸ÖÓ4YVàï^=Êgþùe.n誫´}ë¨òòá üçíeY}ëBeûµ­Uhª‚EUh ¸§NÓ¿î8AµÇÁCkÚéªñqLºi0Msë’¶tÖaÓTLÌÓòpç²&îXÖÈŽ‘Ìytc'7vÕáwöñ…[–óâ±IÞ¿²…€ËÆ­ÞFV “ñ4Kj4Ü Ì%xõÄ)c*Â×¶Ÿ Öëä¡5ítT{/ø³~ûËž={†»º:›|>ÿŸD!„Bñî &¹¢^é£}ªòúYåRs/UÉ0Ñ.è=Óé4_úÒ—ø«¿ú«JtÃ,§ÞkçiW¦å´|Ý0ÏÙ’«dhŠrÎ1™”+ª_hq7€¢n/é8­–³ŽõùçŸgzzšüã•>èWCÉ0ÐTõ‚ÖOó•¯|…ßýÝßÅjµ^À+;ù¹œ/%übÆÔßßÏ·¾õ-~û·û’Æd˜å'Î…}—;&Ó4‰Ì‡ùòWþåù/~ñ‹ÿH-üJ,üž22ƒ.„B!ÄÏMUΜÃÂìÝO18.ª¸ÍfãÁ<-pUå‚*q ŠUíÜ_HЭ\àq§²jêyû‡wwwÓÐЀz‘ç¾Ò.æÚ‚Á wÝu×%?P8߃•KSUUwÜqÇ%IU” JM¿ØŸóžïŠžM!„B!Þ!V«•»îºëjãÕÞÞ~µ‡pÑü~?7ÞxãÕÆ"Á`믿þjã¢9@7MJ¥ÒEžJ!„B!„—êŒúT$Î+¯î»Úc¢bmƒ—€ï‹+\Ë Ã ŸÏãt:/ÿdB!„Bˆkž¢@(<ïqg ÐÏgùÂÓǯö5Qñâ¿ÙÀæ%K®ö0®ˆ|>Ïøø8]]]W{(B!„BˆŸ‚“EâÎçêVB!„B! ºB!„BqM]ˆw‰t¾H4“§¨gÜ_Ô rE½ò÷‚n-J±G!„B!Þ-.¹Íš¦*hŠBá,Á‚âÊ‹¤øÆÎІÁº–jn[ÒpZ_Æ7‡fÉJܳ¢€ãó ϧøðúŽ«=|!„B!ĸ¤]Q`S{-×uÔòÝ=ƒŒGÓ•}n»…zŸ »åÌ á³E±HŠ’!½çSÔ ¶Íòä¾aZ«<¬® ñâ±I†ÃI>¶©‹Û^9öûû†YÝbx> ÀžÑ0‡&¢ll«ÀaÕ¨r;°j’8#„B!ĵè‚t»E¥d˜è† €¦¨|rKKêü<}`dѱ+‚|ñî5´UyÎx®cÓ1¾ø7 §rWûÚ…¸¦Í§ò|}Ç ŽÏƹ{y3ïëmÆ¢ªtVûxrß0¿û½|á–¬k­b6™¥o:Ά¶þeÛ Óäå㓌̧ðØ-8¬Ú«=<°ªmQP/„B!„¸vœ7@W…ÿöè DÓyþÛ ™OçðØ­<°ª•oïd$’\tüd,Ã{‡¸lg<ß\2G¦°x]¬ËfaEC€*cÑöH:ÏáÉèiÇ ñ^—+ê<¹oˆpUQxþè8/öM &U%™/Òpó•mDZY–±{t“»—7qÇÒFNDøñ‘qRù"7ÙЉ͢âsØ.pB!„BˆwÄùt`8œä—n]ÁÚ–*þüÙ}ܹ¬‰‚nðä¾aJº¹èø‰Xšoí¸¨AÔzüâ­½lé¨@Uj<vÌñË_¡ð[Üv »UQÎyÎD®H:_¼Ú÷WˆKâ°j|öÆe” ƒ¹d–lQçètŒ¿õ(ÿõÑ-((ÔxœøœVÃI~°”d®ˆÇn¥¨ì ³¢!Ȇ¶j¶Ló¡u]2s.„B!ĵ켺ašüÍ 9:ãßß³†¿yôÚª<|wÏ;†f¯È &bi~ïÉ8­åáxV~ãÎUøV ¥ÅkÕo[ÒÈG6tžV ëí¾¶ýÏ­¤å ñn£(0—Ìr|6nLÆÒ¤òE†Ã)©×uÔ2ŸÊ±¦%Ä¡É(%ÃàÕSä‹:ë[«™ŒeX×RÍ×¶Ÿà—o[Çn½Ú—%„B!„8‹ Zƒ^Ð ~th ·ÝÂÿ÷¡ëºì¤òElíŠTq/ê3‰låïÕ Ì)èú¢cSù"“±4빇žÌ1%6ïrÉ|‘ÑH’¢n0ËΗžO¢(r——„¬j aÑTFæSŠñôÁQÝÐÉ\2ÇD,Í-Kø_/âù£Ü¿ªUŠÄ !„Bqºà*îÍA7ï_ÙŠ¢(|oߟ¸®‡x¶Àÿ|ñ±láŠʪ©ø6Æ¢©Ófз βg4Œrž÷\±„!ºx—ëªöÑô€ir`"‘©(ÝØ…ª”—‚@9ÞaÑÐ “¿xnÕ^¾²­‰X†ùTžéDxsp–5ÍUtT{¯öe !„B!Î༺ݢ±¶¥Šÿòðfšƒ¾ô½<}p”/ܲŒ_»}%^‡•ÿòì>"é<µXÛ,çž¡ËK$²E ÓDQÜ6 šúVÀrÛ©ö8˜Kà°jd *Å…™úBI§PÒâ½.–)Ð?¯ü}d>E¦PâØtŒ“ϧ¼v+Kê@9`ÿÓ7ÑV塨<}`”ãóüî}ëÐT…\Q—w!„B!®aç Ðk<>q]ÿöîUôMÇùµonåù£” ƒÿùâab™7vÕrÛ‰¤ó´Uyøó‡7³©½æœoúý}#üáS»Hä øV~û}kXV¨ìwÙ,,ktÙé©õñŸ´]#sWû^ ñS5Èðä¾áEÛÖ¶Tñýýomk«òÐSçÇe³°´ÎOW­ÛB {k•‡|IÇï,Wn—à\!„BˆkÛ9ôz¿‹[—4ð/ÛŽóÕ7OÐ7óÖl^¦Pâ«ožà[»I,¤¸‡S9¾¼í8?:4vÎ7 'ȕʭÓJ†Éà\¢2C~ÒöS Ð%rW6…^ˆwƒeõþì¡MtlsÐͯÜÖ»h}ù–ŽZ6¶U_íËB!„B\ sèG§büÞ“; 'ÈOO+ÏJ‹z”dz~xpô¢Îù[û®ö}â]MS•Ó:X5U  !„Bñ.rνd™Š^í1 !„B!„ïy2½&„B!„B\$@B!„B!®  !„B!„× Ð…B!„Bˆk€èB!„B!Ä5àŒUÜ}+›[‚KÅ«=>!°ªÊÕ‚B!„B¼£Î ¯jðäçn"•J]íñ @.—»ÚCB!„BˆwÔYû ;ÇÕŸLNN^í!!„B!Ä;JÖ  !„B!„×€³Î ›@,[ [ÐÏ{’ˆUS™ˆgÎ{¬Ý¢Q罸™ù’arb.AI7)&UÁiÕ°[4¶ͱª!@­×ŽEUñ;­¨Š¬WB!„BñîrÖ]7L~xx’#áʶH¶@$S 5覾5ùþùzhð;ù³ç-:ÇÎÑy:Bª=öʶî/ÿþŽ\L Êù§öa×TFbišý.zütU{yæðû'"Ø-~'ŸÜ؉Ӧ]íû*„Í4 ÌbÅjEQ%ÁI!„âgÍYt‹ªðÈš\ÙÄt2Çt"ËþÉ(û'¢ÜßÛDµÛNKÀ×nÁi³ *ðŸXC¡d``ò…oîàWoYÂÒZ_ù¤ xíÖ‹ ÎOÒTŸÓÊJG€t¡D*_bûp˜÷/o¤³Ú @µÛŽÝ*_j…xW2Mò33䦦°ø|¸»ºÎyxnr£PÀÙÒ‚¢•ÊeÇÆ0r9\(Ë…¼ëÕ»ÜR‰B4Š¢(XC!Œ\ŽØÎdÇÆp44ºùfT›íjS!„BüóìÖ¡9L¦YOÇÑ “ùt¾™¯&sÜÖ]G"_äÆŽüN+ÿóÕ>JºI2_Êiè?>6Åã{G ¹luƒ•>½¹ó¢jÓ4}NN„“´\4ÝxlfSyæ3TEauc€ÞÿÕ¾§B\9¦IòèQŒ|Gc#¶PÅj½ —…f©töTÕf;m¦¶RÊœ}¹Šjµb QÏ2Žb4JòÈÜ]]Øëê¸'r¦aîïgæ? ;1Åå¢þƒ$°~=œe&yîùç)„Ãtüê¯Vôù×^#?3CÛÏÿ<¯÷ânµ®SŠÇ1ŠE4·‹ÇsÖcsd'&ð­Z…æt^ÔûœTJ$˜{öYT»º =0ÀÜO~‚­¶–ÄÁƒØjjð­^}Iç>ÕôSOªRÿÀ—}.!„BñÎ:g€>Na˜&Ý ³ÊC½Ï‰ª(Ü·¢‰¯íb*‘ep>Åʆn›…ùtGÖ´°k4‚USùw­`*‘åÛ{G¹cI=c±4Có)LÊ)ô¦ižw€šª v‹BnaN«‹ª°¾%ÈÉ3XU•Ž*ÏyÏ'Ä»I)fþ•WH9‚jµ¢º\8©»ÿ~\­­o¿'ÿ- O}÷»Ä÷î=ó¿3ÓÄÞÐ@ã#àjo_´kæ‡?$¾gÏYÿ}ºZ[iüÈGp45ñ¼ÙÑQ&¿õ-šîç°×ן÷Mà ¶};“ßùŠÍFí=÷ݾñ¯}Üä$5wÞ‰æv/¾/É$éãÇÑ|>UÅÔ˵2ŠÑ(…p£X¬l*ü™Æ[J& ¿ôñ={(%“˜ Ç{–,¡öž{pžzŸ$`öÙgqýÎï\x€n.þožžÏ“›šBs:1 r““¨N'5wÞÉÄ㓟ž†+ ÇvïF‘]!„â]᜺¹ð+_ÒÙ6Æc·0Mó•åཱིÚóÖA”Óâ«Üv|+[‡fIJ$sE&ãYªÝv’ù"#¤‰¤óüíëÇÙ99ï?s]'XÙ̯ܼ”ß{zM«Æx<ÃÁ©ñlh¦À³¿tÇÕ¾ŸB\QšÓIÇ>D`Ó&²££dÇÇ)F"˜Åb%hÌÏÎß½WWžžžÊvgK f©tZ mäóÄwïÆÈåÎ8 î_»GCÃYt«Ï‡Åç;ã>£T"ÕׇêtbñŸ;›Å(ÈÏÌ0ûÜsÄvîijl ?Œ«½ª[naì_þ…Ùçž#uôhùDw7ÚBëÇäáÃc1òssýýß/ŸÐ4)D£˜¥'þ󮤸[|>º~ë·N ¤ÍR‰ä‘#L|ë[èÙ,öÚZÌD«Ï‡³½Ô±c ;FÃ#ܼyQʼQ(PJ¥0 ã‚>G=•b~ëV2CCo#—#;>Ž¢ªŒõ«"ÒôÿÕ_a«®¾"³çå7?¡O!„Bqm¸ Eš6Måúöjj½¶„ydM+ßÞ7rÎ׬kñðêV¦Yž:4¾h_Àiã 7öð©ÍçÿâtÚÐÔrÀá¶Yh ¸ðسɉ\ñjßK!®8=FÏåp¶´à]¹ÍáÀ(Íç&&˜}î9>üár€¾ tÓM„nºé´sÆöì!¾w/ÞÞ^lµµ§í÷ööâíí½¤ñšÅ"©'°×Öb …Îy\|ï^¦ŸzŠÜø8ö†|½½fg)ÌΖDZ|9ÅH„äáÃdÇÇ©¾óNê|#Ÿ'qø0¥tšú@ÏfHŸ8Y(T‚fÏÒ¥¨V+šËuú ºi’eê‰'Pm6š>ö1l¡#ÿð¸—,¡áá‡)ÌÍ1þo0ûÜs8OË4¸¨ûbš¹¥tú­mù|y ‚¦QÊdÐ<|kÖPuÓMØjj.ùýÎÈ0κ\@!„B\.(@× “ñXšx®Èt"ÇÉ(‘tþœ¯9:“Àzxœx¶üšSiªBçâZ­øVVÔû 8N¦é'¯ö½âŠKõõ1ûÜs¨6ÖP[(„wÕªJ5³X$71¦‰³±ñ¼ë½óÓÓÌ<õŽÆF‚›7/šAÏÏÍÛ¹=•º ±ùV¯Æ³lÙ¢m¥d’ìØÕ·Ü‚5,±T¢‰,Z·n.¤–»ÚÚ°ú|äÃa枣X,ÏìÛí¨6F©„{Él55æçËõÀé¾>0 êzÅb¡”H0úå/cK§ÑÓi¬Á U·ÞŠ»óÌõ.ŒBľ}”R)š?ñ ¼½½dGF(F£XT«Gs3µ÷ÜÃØ¿ü ™ÁÁEÅèΧ0?OvtW{;Ö@Íí¦ú®»Þp…¹9lÕÕ”âq&¿ýmT‡ƒÆGÅ,•0òyìµµ•‡ f©Da~=—» ÷µWWŸ¶ÀŠóóL>ñÎæfœmm8êê$XB!„¸]P€~sw-ƒá4ª¢ÐYåÁe³p_o5;ƒá3™o º¹¡£†ÙdŽh¦pÙuZ5ŠºÉ³G'™Näh ºHäK†‰ÓªáwZyúÐï[Þ€U“/žâ½ÁÑÔ„Ãrããd†‡‰ïÙƒætVôb÷9o[^J$HìÝ[„˜”gñBk €rÊ[UÕizúøqMÃÑÒRI lÛFlÇêxÏÒ¥¨6¡ë¯'¸iz>O)™Ó,?xöY‚[¶ظ‹Çƒætbz*EäÍ7É/̲`Ä÷î%75…»»›ÌÀªÝNbÏ•´øSé™ é'pwwãêìDQJ‰z>5¬ŒÝ^W‡½¦†Üôt¹ýÙ覮“êrá_»–ÙgŸÅÝÓS^Ëý¶ÿðÅ"ÅhWWšË…©ëdFF°‹RóU-Ïdëúµ„rM€¹_ÄV]­ªªòÞF±Hlûv²££¸»»ËuNyww7SOÿy¼Ë—c …hxøa~é%ò33L?õ¦aX·Žð+¯€®ãlkÃVSÃÄãc«­ÅѰøÁ¢ª(6[9H6 ]'qð ŽúúEk¿KÉ$…H¤|/ ¯z1gúÉ')F"ÔÞsöSΕéï'yô(¡nÀê÷S‡}ξ•+‰lÝJl÷n<Ë–a ±xOfd„ùW_%¾w/5wß]ÿÂC=“!¾of©DpË–3ÞK«ßO`ãFfô#2##ø ê!),^/U7ÝDðºëÐÓésö|B!„?=ç ÐÏ7­( 6í­/§ÏgbÓTlVciMUhôŸÞkØ¢ª„\”‹÷.³T"?3C~v–ÜÔ¹‰ rÂa|kÖPû¾÷áliYüšb‘ä±cD^{Ä¡Cx–-£æ®»pww—+–?ú(?ÎôSO¡¨*Á-[ÏŒ›&Ù‰ ¢[·ݱgK þµkÏ8CåYöøÞ½DÞx#›%²ð:#Ÿ¯T.×Óér¿ó;¨¾õÖJuÍå»|ù['3 "6ŽææòZê³Ý—…>穾>›6®“ŸŸGÏd0‹E ³³X«ª65‘9m†Xs¹ð¯^ÍÄ·¿ÍÄãSœŸÇV]ýúòúôb»v‘ö1,>Šª’›š:m}¾¢iøÖ¬¡2÷“Ÿ ¹Ý4}ä#8úéï}üÌ ¡›o¦öÞ{Ï:Ã<õ½ïaªÅ‚gùrš{¬ü ämY ¶Pˆ–O~Íí¦3ò÷Q,RJ&©jm­Ì¨Ûiùô§ÑŽsÎØ !„Bˆ÷¦³~4 ƒ’¬K׈ -Ðõ^£¹\·lÁ¿v-ÎÖVlÕÕå`î©ÏªÍFí½÷Rwÿýå‚lo?VQp¶¶Òú™Ï`ÖªªE» ¯»ïЏÚÚÎÛŽË·z5½ù—§½Ï¢ºŠ‚ÑÓƒ«½gs3P^¯çr‹tÕnǽÐËýÔíÀ¢YpÅbÁâóáY¶lÑÚpk0X®Ä`ñùð,ü~¦{[÷þ÷S{ï½ås.\§£¡¦{c#V¯÷Œ÷Ú·j¿ÍéÄQ_½®®œ¶–ÏE±Z+YЦQÿÐC” T»ßêÕ•ÂyªÕzYýÖÏöùHK5!„Bˆw‡³è¹\ŽÔöCâö³ +šV°.Ò™fÖßîl³âªÝNÝý÷_ø/0øSíöJ{8ÏÒ¥•¶k+°y3îîîÓÖr×Üuú)iãç¼rZLÕá8­}ÜÛ¹:;q¥ÇúùX¼^B7ÞxI¯½>úS{/!„BqyΠ»\.\ú%WˆwØäääÕ‚¸†œ¬Hþv'g©…B!„x7’¼G!„B!„âðŽè¹\Ã0®öõ !„B!„ï ç Ðçææ˜œœ\´þW×uNœ8A.—;ëët]ç7~ã7èïï¿Ú×'„B!„B¼+œ3@î¹çøö·¿®ë•m™L†?ÿó?gbbâj]!„B!„xϸ¬F»Åb‘#Gްwï^òù<+V¬`ãÆØl¶Ê1GŽahhEQ˜™™¡ªªŠ›o¾™`0xµ¯]!„B!„¸f\Öô#GŽðÜsÏÑÖÖÆÚµkÙºu+¯¾új%%Þ4M&&&xâ‰'°Z­lÚ´‰þþ~ž{î¹E³òB!„B!ÄϺóΠoÛ¶Tz†A8&—˱wï^B¡K–,AUUV¬XÁ¾}ûظq#@å5---¬Y³†šš2™ Ï<ó ‘H„š³ôaB!„B!~Öœ7@_·nŸüä'±Xʇ&“IþäOþ„B¡@4åèÑ£ŒŒŒTŽ_ºt颢r>Ÿ‡Ã¢(¸Ýnt]?g‘9!„B!„âgÍyt‡ÃAmmm%@w:hš†¦i8Nî¸ã>ò‘ i¥R Ã0Ð4mÑ9 …¥R©ògEQ*çB!„B!Äe¬Aw8´··Ó××Çøø8™L†þð‡¼öÚk§õ?bbb¢’_UU%Eâ„B!„BˆSœs[Q”Ê:òS©ªŠÅbaË–-D"þæoþ†b±HOO=ôªª¢ªoÅþUUUüä'?áþá…B|ìcÃáp\íkB!„B!®ç Ð?ñ‰Oœ¶Íëõòÿø•¿?öØc<öØc§÷·û·˜¦ÉÈȵµµ|îsŸÃëõ^íëB!„B!®I—ÕfM!„B!„WÆeUjËçó¤R©sSUUEoo/©TŠB¡pµ¯W¼K½½®B!„B¼×\V€®i.—ëœÇ,_¾üj_£x¶|B!„Bˆ÷ºË Ð-‹´K?g*V(„B!„ï%²]!„B!„¸H€~r%ÙdŽ‚^^-êL'ruY-„B!„âò¼çòÓ·Îñäq4UÁd¡¸˜šR~a³¨Ü·¢‘-íÕüðÈ${Ç"¦IÇAÏÁà|Š\Q_tÎÏ_ßM­×Áá©8¯ÎqGOA—ÃÓqNÄøÀÊ&Üv šªrÙ±[乇B!„Bˆ‹sÙú7÷ŒðÕƒdßÔ~鮕ܽ¬žlQçï·ž`÷x„ÿþ¡]¶EÇõÏ%ùç탚Šaš&½ ¾pcí!÷iïµ"Ê?¼ÑÏT"˯ݲ”ÛzêN;æøl»EåÃk[)èß;0F×ÁKê1oìæÄ\’-íÕôÖû©õ80M§Í‚Ý¢Òpñå7h º¹µ§ÝJªPâÇǦx¡ošÁpMQ91— [Ô™ŒgQU…€ÓÊcÛé¬ò\íÏU!„B!Ä»Ìeè³É>'¿uûr­²½ÖkàØL‚¾Ù$ÇflsߊÆÊ1»Ç"üÆwwq_o#tï*PàÇǦø7ÿº?¾o57wÕr²4X*_âGG&¹±³†Û{êù·¶scg Vmñlµ ¸íj½ò%Í‚Ïa¥ÎëÀ0MœÖòÃé<ÿëÕãŸKT^ûÑum( žŽpÙØ=¡§Æ‹ªÀöáy¾¶sˆë;ª¹¾£Ý0Iä X5•ë;«:ít„$8WŽišŠETUÅzJAÆB±€Íj=ëku]4íÂ2:LÓ¤¤ë(Š‚EÓθ¿X*aÑ4TU²D„B!„¸Ò®HŠ»Ûf¥=äÁe[ü¥¾¨쟈Rå¶ñÉM<¹Œ÷-k@S %ƒÿþÊ1Þ¿¢‘/ݵ’“Eº×6)é&_Û9Äš¦ ~G9ÑTÝB¶¨3KÓàs¢pæÊÞ»Ç"¨ ”t“=ã¼a+óé<¦ G¦ãtTy¨rÛùìõ ͧ1MÝB{ÈCßl‚L±ÄmÝuìgçH„-íÕ¦ÉuíÕD3†çÓè¦I4S@S†Âir~)6.®Ã0H¥3¼¼}'5¡ VöVö½ºcùB‘»o¾þ¬ó¶½û±ÛllZ½òŒç™˜d>§½©Ó4É ì;ÛédIg;‹†ÛéÄn³‘L§I¦Ò¼¹w?K:Úiª¯cjvŽb©T9ŸÝf£§½í Á½B!„âüÞÑ5èÑL=ãnéªeK{5O§?œdi­™d–ÁpŠß¾sÅ¢ VUîYÖÀúñ!Æcüõþ…íà´ZøÞ1MÅøì–.ІA,W"à°b9e–pmS€G×µQÐ J†IƒÏÁûW4b˜.” …ò¬üd<ƒašT¹íÌ¥ò™Žcš0N1Ë2—Êqx*Îí=u GÒ¼60Kƒß‰n˜xV¬šJƒß @µÇ~µ?Oñaš&LJFxòÇ/°mï~B~?«–í¯<’zsß …"ãÓÓܲy#Ë»;O;Ç^x™ ÏwÖýµ{عÿ kW,g`t”|¡À±!\­Íø¼î½õ&Ö­XηŸyŽcƒCì:p˜®¶z{ºÙsø(^· —ÓA"™ÆãvñÇ¿õ+x\®«}û„B!„xWº"ú¶á9>ÿÍ7ÑÔ·"í?|ßjæR9æR96´„h ¸ØÐâ{ûÇø»{ÉttÃ$è´v>·Í‚¢@~a]{Q7xêÐÇfâôÔx)”L6¶†Ø?c÷Ø<¯n¡ÊmÇ4A7LœV >§•|ÉÀnQqÚÊ7Ìr‘¸“¦9MÅ(é&Í+¬o±ª1ˆ]Siò»0M“Z¯UQÐ…ñX†£ó†ÉX4¦ªì´ÌrÛX^ç?ãúy!.–ÕbÁírbÑ4b‰#“•}©t—ÃÛåÂb±0;?Ï—¿ó}fÂó•cŽœèÇjµòïþÓ_V¶ÕTùõÏü¥R‰¹ùG© Ÿš¡X*‘Éæ(•JLLÏ¢ë.‡è^˜?|¼Ÿöæ&Ú›ùñk[Y×»Œ¹ùÙ|‹EfÎ…B!„¸W$@ï¬òòÉMØOù‚^ãµó^ïc×h„óõmhŠÂ|º@½ÏÁg®ë¢ÊmÇaÕ§h ,žq §ó¨ŠB`!xOæK|wß(¿|óV6øùíïïåùãÓLƲäJ:¾…4ø¢a)–xæðG¦ãè†Éà| §Uãå3ŒÇ2üܦ®k¯¢§Æƒ Ø-Ó‰,óò1Ò…  ›rÙø›Î ¤ò%Ö6i ºÐT…T¾D*¯³ª1À¦¶Pùfª*šR®/™îâr(ŠB{KÞ/ýãì;Îð˜YÙŸL§YÒÑÎGî{‹F*•¦»½•êPÃ0Ù{ø(Ñx¹¾BO{½=] €ßã^Ù¾‹'üél–Ã#ýŠ¥"‘X‡ÝFÀï£*Àïõ28:Æ·ž~–¡±q’é ¯lßɶ=ûˆ%’8ì6"±8šª²eÝês®‰B!„BœÛ Ðë¼néª[´=œÊ³m8Ìß>º™uå4õlQç~´ŸŸôMñs›:¸sI=÷Æ ÚCnj¼`6•ãk»†¸®­š¶…™hÃ4IåK¸¬‚N;¿{ÏJ>úϯ±±µŠß¼mY%½=/‘Ì•øµ[–òðšÒ…ÿðF?-¬mÅ0MþëKÇ*cü_¯çÀD›¦b³hlj«¢Ñçâ¯^¦* Χø«ŽPÔM†#q¾±k„’aNç'™NdÙ=6ÏË'fh¸pÛ,¬o òñíh²]\&MU±Y­¨ªJmUˆÎ¶N>ú9|üÄÂ~ Š¢à÷yùÐûîÂ4Mú††£«½•–úzâ©÷ß~+u5åb†ùB±©ir…ª¢p¤»í­À:™†¹H„£ý4Õ×ñð=wò;oã¿ÿó×øÅO<Êk;÷à÷zØ}ð0ÿüí' ø¼˜¦ÉKÛvðÁ{î” ]!„BˆKôŽ­Abÿ]Õní®­TZ/&·/©gûp˜z›øùë»ù“gðŸ~rˆž/ ãñ A§Ç6¶WRæÝ6 ·v×òÝý£ Î')é&ËêüJ{Æ"„\6j<fS9©<-Á³¯5Í·f!SùŸ¿¡‡®jß;0FQ7HŠžŠ£© c±4™¢Ž¢À’/ÛÐVÌ“Yzü›IPã±ÓàsâsXé®ñ²¤Æ‡L¡‹Ëe£ã¼¹gS³s¤³9棱Êþ|¾Èäì,O=ÿ½=Ýt··K$ùÁO^¢&BQT–t¶18:Îןz†Ï|äƒ}>t]'òû°ÛlÔVW11=ƒÛåB]x°T,•ú}lZÝ‹ª*ý>LÓdjvŽL&KKCšªb·Y¹çæÈå ds94UÒÜ…B!„¸T—Ý+é¶ž:YÛºhm7ÀÒ:¿yÛòEmÐ,ªÂû—7ò•M¨ ÔûüὫy ·™‰X–'Žq][¿sw/-§¤½;¬Ÿ¾®“ëÚ«ÉÊóïXÎG×·á°j(Š‚aš›‰ã²k,©õåÙm³ ª ßÙ7Ê_¿x”½ãÑJê<Àó}S|ïÀ(É|·ÍB,[äõÁY^˜e÷X„d®ˆiÂñÙ$Ï÷M‘+êÜÜUËnè¡%èâže <¶¡Ÿ“}ãQ^¢âR™@$ãÐñ~b‰$±D—ÃÉ‘$S™r:z<ÁáãýDâqŠÅ"ÿúý§™œâþÛoÁn³’ÍåùÈûïa`tŒ<ÿ©LðºÝ´55ÒÖÔÈ]7n!–H&ªª ª Åb‘t&‹Ûé"žLñÒ›;ðzÜüäõ7H¦Óì?ÚG2¡¡¶†áñI¦ç¬\ÒÍúŽÖB!„â=í²¿M¯n œqû­ÝµgÜÞèwÒ¸PõÊAúV6ÑQåap>…n˜8,ºaVfРÖãà¡UÍåíŠrZ;3Ó„ÍmÕ¬i UÖ¤;¬®jÆ¢*„Óyê}nîªeY]9€peN«FÀeæ©8­né®%䲡Ý䃫Êè\6F¿“›E¥P2øàªüNš.š.æÓyò%—UfÅå1 ƒh<Á\$B:›¡¾º›ÕЦjø}rù<óÑcSÓdsy2¹_òiž}åunذ–Ñ1†'&™Åh©¯£:ä‰gŸGS5>|ß=|ìÁûxòÇ/päÄM£¾¦»­üðj.%Ÿ/ðy¹aýZZêùÆS?äºu«éhn⟿ý$·lÞÈ^~¯ÛÅÊ¥=X,  !„Bq©®™oÓ+ê}üÒMKø»­'xîèöÀZƒ‹«¡+”gáÏDQ Áç\´MU꼪Üörú¹òVöù-ݵ(,öë}Ž3žßn±-šy·YT6¶†õb¯rK›5qe˜¦I6Ÿ§­©‘ÎÖÒ™,éLLXÚÙŽËéÄbшÄãìØw€Wwìæ>þ(ßûñó91ÈÄÌ Mc>§¥¡žÛ¯ßÌÓ/¾Â–õkèjmÁ}J;´B±ÈÀÈXåÏ…B‘ƺòC6Ã0yæ¥Wé"‹óÊ›;9^;L6—Ãn³áóºÁ4)K†qÆžìB!„Bˆó»ftUQ¸wy÷.oxÇÞãí³îêer»Ü× q6V‹…%mì9t„’®c±hX-¼n7V«‹ÅB¡XÄn³ÑÝÖJgKí-Í´66ðà]·ðþâ¿ôùø_úy ôß{ëm§ÿ««®â¯ï·É üðå×860HI×±Y-¸œþä·~•é¹0¿óÿŸûà¬í]Î/ÿþŸð•ï<ɆU½Øm6þþëó_þÿ%è÷]íÛ'„B!Ä»Òeè…BL&sµ¯Aü 0 ãjá§KQø|¬ï]¾hóM›Ö/ú»Ãn'è÷áv¹͈¬]¾ —ÓqÊ)–v¶Wþ¾¤£ »ÍJO{|ßÔ×T‘ÉåikjÀåpÐÖÔ@Ð_îÀ`·Ùú}ܶeíÍM|^ºû Óàî›nÀn³ñæÞý8ì’E"„B!Ä¥zû°eÏž=Ãm­­Mʤ©‹EòùüÕ¾ñ3 ‹±jÕª«=Œ+"ŸÏ3>>NWW×;ú>ÉtUQq»œgÜ_Òu ÃÀ¢i˜”Ûº‹ašd²Yì6V‹…’®£šV®¹ éíB!„Bœ™išDæÃ|ù+ÿòü¿øÅÿ¤~%~O™ËšA·Z­X¥ç±ø)H$W{ï:^·ûœû-šÚ…4TÏ)³ô–·½V‚s!„B!.|£B!„B!®×L‘¸«¥d˜¦‰MSÉuMÅÐ “• <ö÷ÆíÉJÄsEª\öÓúÕ !„B!„¸6¼'"Ð\Qg,–¡§Æ{ѯÝ;a:™ã+›Ø6f8’BUf“9\Õ|Ñç‹g‹ô‡“tV{žÒ–í|J†I¦PBS\6ËiÅbÙßÛ?F$S8ãëk¼>±¡½Ò;þT#Ñ4¯ôÏòàÊ&ý.„B!„B\{.;@ÿþÁq¦YþÍu]ØfgSùðÌ~>¾¡ï£.yÚë6·Uñ¹ë»ù‹ŸÆm·ðoo_^™±.&Ïä‡&øâË©÷9øo/ãÞ&Ö·„N;×t2Ë{éÿçÑM=þþp’c3 >°²‰¡ù$Õ^±±• Êq±l‘­Csܱ¤þ´~ïCó)ž;:ÉG×µQ4 öGޤNÙŸf×è<…’A­÷­*ÛËëüôÖû±h2«.„B!„WÛeè#‘4ƒáºaV¶uƒ7‡Ã||C;ŸÚÜA:_b œâÏž;Èÿyt3N«FÐiÇk·°{<‚¦(ÜÖSÇ-]µDÒyž9<ÁîÑy¹"Un;{Æ¢li¯>ãò%cQ@z6¦iò/;‡86óVÁ±¾™Ñl/ý`³ÉÿïÍ–Õúù÷]ZÅpÝ0IJ”. -Ø@8ÅÿèëšC|pu ¯ Ìòáµ­„Syþë‹ÇøøÆ6î\Rª(˜¦I4SäðTœéDvÑy¦9RùÒÂEBA×IJ˜&œŒ1ËpçÒz¬šJºPZô9™ç¥B!„BˆŸ†w4ÅÝfQY^Wî£ì°jØ­ë›C¸OYÛí¶Yºll³¥½›¦2Í0IÓ^å¹ì1˜&˜hŠŠÂæ¶êE©ð.«ÆH4ÍV6U¶Õz´Ý—òvJs©<™‚ŽËvæ*Ùátž¿yù(ZÓÂW·°m8LÀi£%è⺶jBnß?8NWµ—Î…ûà¶i,©õÒè[œ¦î¶%žOUîó-]uÜÒU‡aš|c÷ª:σ+§ë{íVüN©À/„B!„׊+ ÷‡“üóö¬ ©ÒÙb‰X¶pA¯µj*Ëë|LƳŒE3tT¹ys8Lg•üüùÝÙTŽÃÓ1Ö6 ¹ì,¯ó1ËÊYRãc$’¦d˜li¯f÷X„Ž*Õîrøp$žñ(Ù¢~Öó{V6·UQëqT¶E2yžØ?Æž±Uzj½tTypÛÞºÝ;Fæ©÷9¹­§€ùT›EÁm³ (°¬ÖÇ«NÑT%@/è³ÉoŸöžKå)§ß+ˆg ŒÌ§ùÖž‘ʶH&Ïʆmh¿¿B!„Bˆ+àŠèEÝ ž+Tô\Q_”ò~. ÐYå%’)p|6A£ßÁëƒåTï—NÌ\Ö¸J†É¶¡9vŽÎ³ja=w¶¨ó“cS¸lKj|‹Žß12ÏñÙßÐŽª(äŠå™ðtáìz¾dPÔ§³û6Ö7±j*}³ ¶•׳¯n ro#Un;cÑ4mA7.›…’a2“ÌáwØðØË³ÚN›«¦’=å½]V ]Õ^š‹gЭšÊ¡©Øic3M˜I温«†»–4 ›&/ôMsböôºB!„B!®ž+ /©õñ‹7öà´–OËxæð俾Úc§»ÚËÉ(šªà°hô6ø/;@ŸJdxêÐ8¬i¥jaV|&™ãðTœÏ\×¹¨â¹ª(ܹ´žÿøÃ<¼º—M£»ÆKkÐyŽ•Úª¢œÖºÌiÕXßbE½ŸD®È|ºÀà|’mCa&ãYªÜv ÓDS ‘-0—ʱº)ˆeaLÙ¢NQ7pZßJ‘‹¥ù‡7úOK›Oæ‹ÀéÕÛK†Á¡©xï*V7¶™Ž3tkö…B!„Büô\‘]SK%˜Ìµ3„‹ç~ý ÕüÏWúØ3åS;°VYÜD7ÌSН)¨J9@^t”i’)ê ͧùÏ?>ÈmÝõÜ»¼±Rhí™Ã´]ôžR!ý¤¥µ>Öµ„øÆîa>w}UÁr–5äBUN§Î*·÷Ôsò™@[ÈÃÞñ±lÁpŠédŽ7”×ë¦Éᩉ|±²¿-äæûŸ¿•±X†ß{z?ÿé5¼Ð7M®¤ó…{(” ¾pœG×µå@ü›»Ghð;Uƒ× “d¾ˆ×.ëÏ…B!„âZrÍôA_RãÃç°q`2ÆíKê˜z[¥òT¾Ä‹'f˜N–·Û-[Úªé¬.°¹¢ÎCsDÒú昈ñ@o3]ßV™)7l¡Ä£ëÛ˜Kåˆf LƳ•YkxlC;ÿôæ¦ ÊŬÚ[Á§Óªñó×wSï}«pZ­ÇÁ/ÜЃõméà®k£-äÆª©|t}7vÖà²YºìÜ¿¢‰FŸ§Uã#ëZ‰e‹Ì&ó•÷È•Êë³Ý6 ½ ~~|l «¦Òèwñ¥»{YZëEQ§±ÿú­Ë°YTÞšcûðÛçÇæ,?lϦRó9 Ù,ùl–`mº^"6;ƒÃ妦UÖz !Ä{…èBqÊg2yãu޽ù«n½Ö½zõeá0-Ë{ÙýܹëSŸ¡©g)&°÷'Ï‘ŒÌ“ŒDqûýä³ÖÜqÏýãßqëÇ>AûÊUxB!4Mþó/ÄÕb“ýl}âqj[ÛYsû$æÃ¼öø7Yw÷ûØ·—úŽ6Üó~,V+cÇŽptÛÖ… ~š¶½XìvÆûŽRÝÜÊ–<€ÃíÁŒB!„×ù†&„× ½TâØ›o°ýOjh`ûÓßgpÿ^¦ñUWÓ´d)5--¼ðµ¯pë£Q×щ¢ª}ó ì.7ÓÃEœ/Cû÷’I&Øûü9ºm+ïÿü/⯩½Ì !.ÕÜØ(/~í+dq0á…¯}…Øì v§‹ùÉ j[[9ôêËh kn»£Tb²ÿ8…\ŽR¾@&§¡³›Øì,©h”èô«o»ƒe×]ª]z‹X!„W×Yôt:M"‘¸Úã]ׯö„ø©RTÍf£Ë™š"6;ƒÓã¡kÝzFŽ¢˜Ïcš`µÙ‰Íͨ­#1F³XİQ»ÓÅ‘7¶â­ªfÙu×slû6ª›*i³Bˆ«ÃéõÏ¢i&Ž÷áðzè^·d4ÂÜè­+zqùüÌR*•Ḣ1 “T4ŠiLŠÇØò’ŽE™Ä_]ƒ¢ª—9:!„WÓYt—Ë…S¾Ä‰kÄÔÔÔÕ‚?UªªÒ¼d)ÍK—Ñ¿g7 Ðºb%.Ÿþ=»@ÉkëXvÝ X¬Vz6nb`ïTUÅj·£—Šä³lNž`»ËI×úõ8\ÒÅAˆ«Éí÷³éÞûyéë_CÕ4š›é½ñf¾û_ÿ’%7376ÆüÔ$wæç±»\´,[ÁÀÞ=ÄfgÐl6T‹F.¢˜ÏãòzÁ4©ii¡¶­] B !Ä»ÜYtEQä?òâš!?‹âg^,2zä0Ñ™ilNV»×¿û8ÚZâss¼ô¯ÿBus ‘é)Æûލ«gëw¿M ¶–B6KφM¤bQÜþùL†¡û) øªd†Mˆ«mzx‰ÇQ-€áƒû‰NMRÈfØ÷©jlÆ4 ޽ùc¯¼D*Åæp¨­£iÉRFÄîr3q¢œú^ßÙ…Õn¿Ú—&„â2É·4!„¸)M%‰ÍL“M&É¥R4v/¡yérlv—›¥›¶PÕЈÕnGU5\^¹t‹ÝN*ÃÐuš—,£¡«›½»qº=x«}eBüÌS•‰ã}˜ºN*Å[UMçº 8½^,6-Ë—Ó¼dN¯»Ë…¡ë†Õng~rœÚ¶vz6lb²ÿÑé)ºº¯öe !„¸.9@7Mxu`–Ç÷Ž-^[ëƒÃé<úÜ!¹âÕŠB\U³¬«Xh¯VNUÜ·»ÓE}g±¹Y’Ñ(.Ÿ§×KëŠ^’Ñ]k×SÈfðC¬¸á&:×®#“LÐÐÙ…'¼Ú—&ÄϼªÆÆJ°­ë:—‹¡ûÈ&“4õ,Å0 æÆFðCXl6ê::ËÜ–-à ‘ŽÅX~Ý ¬ºõv ¹—æ%K¯öe !„¸.(@ß7徿{‰§Ž/Ú>N±w7Kb>L>“Á⯮¥yéRÞ|êIþùKÿ»ÛÅǾôh§þ×ß”[; !®šØì U Mx«ªYsû]ôlØÄª[nGQU†öïe`ïœ>/ÉH˜d4B:Ãîtbw:é\³ŽðÄÿü»_äè¶­<ü›_dÕÍ·òÂWÿ™ã;w`šò}E!ÞÍÎÛ}:‘eßD„_¿u)?:2Éñ¹$Už·ŠôÏ%øêÎAæRyrEÏ\×Ém=uü¸oŠoíÅeÓÈ— –Öúø¥›zØ><Ï×wñ—\OµÛΠǧùξQ~åæ%lžÃªi´Ý<¶±}Ñ8²EÝc–Ôzé®ñòÝÃll ¡* †iòÕC¼p|š&¿ ŸÓJ<[`p>Åÿ~µx®H­×A®¨“)êüÕCëùµïìâ‹w,ã–î:fS9þÝ“{ø»VÐYåå¼ÒÇP$…]SIJüê-K¹¾½új^BˆŸ«•5wÜI}GcÇŽRÝÔÌÝŸþN‹ÕJ22ϲÍ׳þž{ñ†B (èÅ"kn»“î ñCÌ 1zô0kn»‡ÛMus ƒû÷aµ;®öå ñ3­yÉRîþÌg>x€êæ–o¹o¨ Õ¢176ŠÓçc˃¤¾½—Ç‹ 4tvsÓ#ÒØ½„ddžÁý{©kë ¾£“¶+©ïìÂW]-EU…â]î¼úSÇYZçç¶î:vEØ3a}K»¦-<²¦•%µ>þöõãüàðÕþû+}üæ­Ë¸ki=Çg“üûïïáöžÚ³¾Ï–öjV7Y^ï;-8˜ˆg'ùÈÚ6ºk<|ækÛšOÓUía&™ã«;ÿöÎ;>®ëºóß7½c3À ÷B$@°€]l¢D5«[Í’Üb;=Ùµãl²qv“l6»)Nâu¹H–,JV£ %Jì½$ˆÞ{`0½¾· 4$°©Qå}?|Èysç¾óÊyçÞs~§›ºk)59©¼r¾ŸçD‰X\âXÏ¡Xœ¿¿c Š?yá¥Å~¿òS<²¢€\«‘ïïkæÙºÙA—‘‘ùØ ¬éN,v…Õ5¨5l™8 çýÌúûœõ:³¨˜Ì¢âäë”´tjn¼ézšŒÌç½ÙLNy…Å( ”j5kï¾oÞö«ÖP±jMòµÅî`Éæ­É×½žòÚU×û°ddddd>.â>ŒòFÓ÷VçbÖ©Y–›J]ÿ$îàñµéòSµ*jrR™ð…97èÆå ³©Ô‰Z©`ÓBªAC˨ç})JM#ÓH@…ÓB®ÍHiš™]-CôMú‰ÅE–祢U)¨Î²a3hˆÄEz\>òlFœf­šÕ…iWÜŸN­Ä¬Uñƒý­üÁoO²·m×{Bûeddd>J%N.&#óCÔZmÒ9—‘‘‘‘‘+¬ ïï¥wÒÏ÷Þ8‡Z© 3â Q?8ÅÖòÄJŽZ% T€J!€‘XP+” E¢M4.ñÞÈ+ñ*r¥‘8;Îp¤{œ‡G§ _o8Æ}KòˆŠ"‚B@)\ØŸHHDEµJ…B$P_bé\’Ç{'xòd7ÿeÓJÓ,¼r~€C]c×ûZÉÈÈÈÈÈÈÈÈÈÈÈÈ|†¹¤ƒîÇØÝ:ÂÃË xxyŠÏú©],z5 3RÐkTœœbIŽAw©@”Òt3d GãÄE‰ö± ªí A ‰‹Ê‹éÞ)?}“~~òÀ*Š&Ƽ!þyo3G{&¨ÌHA%:]^òmFÚÆáŒ5œ£:7‹ªªªëmÊ5óÊ+¯P[[Kffæõ6劃Až{î¹ëm†ŒŒŒÌ§’K:èù©FòSçÎÒ*·Wf'_—_B˜Ý Q±í¢UðwѪ”¬È³³"ÏžÜVáL Ïf$Ï6wŸ›Êœs¶ @¡ÝD¡=1`Ô¨¸oI^òýšœ «FïîO¶ŸîMnO7ë¸sqμößXž1ëõÅ}ËÈÈÈÈÈÈÈÈÈÈÈÈÈ|Ø\±ÌÚg “VEšI'ç’Ë|æ x'] wvPPUÙví¡Î’$!‰"‚BqÕµuÅxŒp0„F§C©ºüWL<%‹¡Õé®(ð ‰"’$¡˜)ñxaqAHªœÇc1ÂbG’(218€Ï=5ïûi¹y˜¬¶ë})eddddd>‘|®t™Ï"ӜۻϤkÖvÑDZ^>i¹yèŒ&ÄX .ã ‹b$ …òÂׂwÒű×v°ò¶/`Ëȼ¢ƒ$ŠŒ÷õÒzâS££S.¬à9 ‹¨Ù¼£ÕšÜ614@Û©¬»ç~¸‚fSoS‡öS°¨*é ‡Nî|â%5 ]’ˆE#¸GG™A’$Nì|•ÔŒ,ÓÓLqà¹ß T*É*-cÙÍ·¢º†ÄCÓ¶ŸìdëÂle%"b¢ÈÁöú'ýÜU“O8*òÔñ66—g³$×>ÓFâhç(ãî\’Í0Ûéùõñv¶,ÈÆ¢×p¸c„Æ¡)LZ5·-Î%ËjdÌäí¦AF=JÒSØXž‰E§¡sÜÛýÄâ"ËóÓX^†V¥¼êãù ¼ôÒKLM]p¶lÙB^^‚ ‹Å8vì‚ °fÍšÏÄDˆ$ILŒÐ|ü±h”–f ))¸ÇFq]TªTˆËkQ(UœÛ»›ŽºS„î§éÈ! Wðyéî¢éðAtF#¹•L süµ¸ÇFYÿx&&ú|³lÐè´è bÑ …’¦#‡Ñ Ä"a´#z³™ ÏKÓ‘Cô6Ô°þþqääâ¤ûÜYŠk–ásOqè…çØüÈc8 gíc¨£½Ï<Åÿü¿cMK¿ò‰yñxœÖÇè9_?k{$Ä;5ɶ¯‹²åµ„|>ZOÞ•MvYùœ‰‚ƒ¦á)Þnäî%ä¥&¢"1‘7úGãÜ·¬ˆ® oœïãŽê|Š Qæ­Æ¼¡÷.-Dóžq÷Ë£­Ü¶8Ÿ4“޶ÑiÞjêçöÅù:ÕlƼAvœëÅŠP‘ac}iF­šúÚ†‰ÄEªsìl(ËL–¬½~¿Ÿ7ß|“+V———¼W{zzhmmeåÊ•Øl6ZZZhhh@’$Š‹‹©ªªBõž‰·ÛÍ¡C‡˜šš"??Ÿ•+WÐÐÐ@ww7K–,¡¤¤¯×ËéÓ§Àáp°zõjRRä¨ ™ʼz똇ØÝ|½m“‘IòÝUŸ|QœëEjfkî¾x,:k»R­F¥Ò ÖiQk´—] ‹ƒÔïÛƒ!%…+W¿ïåh$LÛ©d—°`ÕZ ¢§ç|=ƒ­-,ZwÃGz.$À31A$"èóFQªÔ¨µ:</YŠÍéäÌî]”.[B¡¸¦þ‡Ü~þ~çJÒRЩ•ŒyBÞN縇J3æ8èOkcA†•󃓼VßǪ¢t§üüëîþâ–þó@3јȢl{Z Dbܲ(—¿~õ4« Ó1é4üüH+fšªû5Óû%³}ûv¾ò•¯ ™™01 IG¼µµ•ßüæ7äçç³jÕ*”×Áùú°ÜŠ…¤ååÑ~úÃíS¬˜m³WƒS3³)]ºA¡`ñ é8}’²µÉÕôÉá!‚^/CíŒ÷÷¢7™IËËgjt„H(HFQ=çë©\wüHJ•š°?‘¢P(˜A˜ÙÞrì(j­ŽÜô6œGk4¢Öj‰ƒœß¿—¡Žv Wa±ÛñMNÒ^wдܼYc>èõ¢P*¯y|$íS*©\»ž¢ª%Ém §ý(gê0ZR÷‰ 0ÒÝIÛélûê7æ¤ |4Mñ¿wžÁiÖ“e5¢Rô¸¼üüp *…’»j huó÷ožÅjÐ’k3¡V*è›ôñ‹£­Äb"·WåÏqП8ÜJmA:]ã^«ïegc? 3l:ÌÄE‰ï¿s³NM¡ÃÂëçû@€•…éüÏ×N³eA66­–ßÓ@–ÕÀÂÌËGìØ±ƒ7Þxƒôôô¤ƒî÷ûùÍo~ÃØØ¥¥¥hµZžxâ 6mÚ„V«åùçŸÇjµRTT4«¯_|‘H$BAA‡"''‡P(Äo¼ÁêÕ«‰Çãüô§?å;ßùGŽ¡££ƒªª*š››çá‡þLŒu™ëɼú„?ÌŽó×Û6™$²ÜùÁ;ù â£ëlÝeÛh z WÏë K¢HÈïç§~kp€ >rÕå‘Pï¤ {fV"ô]’èkjb¸³ƒM=Ê‚U«A€h(ŒgbœéññyCìÃ~?õû÷PXUƒ5=…B‘Ì'¿2ÒLŽnÂ)ŒÂb²KJq ô'œ ¥‚ÏG8àÇœj#=¿½ÙBqÍÒ÷5á´èéqyžPè0Óãò20å'3å‚ÀešIÏдŸþ)?eΦütŽ{ÈJI”¬ô#|÷yNöŒ³Æ”ÄëH(DÈçÃ瞢ëÜêv½Ivi9·ÿî%Ò¯¸oQäÔ›¯Ótäþ·¿ÂdKÅ=6Æî_ÿ’…kÖQ¾rUÒù„‚ ut³`:“yN_b<Ω·vrlÇË­V WS¼¤†ÔŒLŒVÛeØÅ¸H,A­Ó&íj;yœÎ³g0Z­DÖÝ| gw¿-#“É¡!B©™YèÍ–÷uÞfZ Eã´ŽºÉ°è9;0A^ª ‹îÂÃ|©3¤Døl¾ÝÄ©ÞqrmFlF‡:G¨˜ä×_ÝL÷„—gNtàǘF©Îu T˜µj&ƒn?¢‘xIJLBŒ{øÃ1bq‰˜(¢¨” :Ƨ‰KÊ¡ d0Äh4òÿðŒ“™™É<@~~>ÇGjkküÈmùØ$ú[[ØýÔ/îê 53‹ÜòŠYùÝÞI±H R~¾žh$ÂHO7#]H’Doc‚  -7±¾ÞäXëíeÿsÏ ÆãÜüÕo 5f<½úý{i9v”{¿óçèMf<® ¿ðK ¾É) ªª‰Ç¢x].ÂÁ ÝçÏôy±¦;QªT¸†‰†Ã8 i,J(«]I_K#S#C8²³A˜c°£¬’RÔºÄýÚyö {Ÿþ¯÷’§&»´œ-~›3ã½' Ï„‹×ÿó‡˜l©,»yjm¢_AHËÉŚ椷±žÂÅU(¯!åäÃbU¡“ÎñÄD[\”h›¦$ÍÂÅÓËóÓœòÓëò¢V*hqSœfA©P'Bâ#q‘g¾¾™s“üòHÅi‰ïÕE“f½“>ÒÌzÌ:5J…@ŽÍHýÀ$&­š/­*E”$š†¦„ãTç\ZÜs||œW^y…‡~˜]».üôöö²gÏ~øa<@VVF£‘ƒb4 ”••ÍꯢL œ€IDAT§§Qyê©§èëëÃétòå/™‚‚Ž=ʉ'ˆD"èõz 9uê±X,ùù`0Èää¤ì ËÈÈÈ|@d]FæSŠ äW.ækÿç_’Û<.Ïÿß¿§zó–ß|뼟k9~”öÓ' ù¼DBa^7íw0]­Ê»$1ÔÙÁ¹½»©ÙrÓ¬Ï-¾a#K·n›å°tŸ?‡oj’ì’òyÕÓõ þÅ÷p 0ØÚÊpw'í§OW±ˆ­5ù{VEUKf…üú=ÓD‚¡Y õZ£NGÐçÃl·3ÚÓMFQ1Ö´t†:Úêêdݽ÷¿ïónÔªY–ïàx÷ 3mœ˜d]Iõ“É6Šš<gú'XQÆÉžq6”g%Û´ »)ÏHÁjÐP“g'ͬCš‰P¼ë\'"€É²XKå¹S]´Ns²wœpL¤2ËFNª‰ìm +ÅHÃà$¹©¦÷sHï ƒÁÀ#‡B¥R‘šš:§B@$!p÷Ýwc·Ûù·û7Ž=JUUƒ}ûöF)..Æ`0P^^N]]¡PˆÑÑQÂá022222ÙA—‘ù 1ÒÝI,žgëæÔTJ—.ÇæÌÀ?íæ­ŸÿÅU–ãqÚZ9ôÛíXÓToÚ’|Ïêt²úÎ{’+Þ±H„®sg8¶ãe «—S¾à’ýLf¬K–RT]ƒßíf¬¯‡p 0+—±pq5ù•‹’jïñXŒs{ßÁ˜bÁY0¦)¤¤¥£5 ÒròèDg¦(N³ðŸšùÝ Q_4ÙP’fá×ÇÛq#tŽy÷…°è4äÛMœésqSEç'q”¤[øÍÉN–æ9ز ›ï¿SO¶ÍˆA£âŸvÕó§[ŠÅyã|Õ9v”ïSØëZãÇ?þ1ôG„^¯§¹¹§ÓImm-7Ü”$‰ááa ?àÞ>9,)ÉßI’Å8BüÂ}únHú»„ƒAN½ù::£‘h(Äñ×_¥¿¹‘·Ü’D8D­Ñ P*±ge_µ#¬3™°Ø­)Œtu"Æã”×®"³¸”wžúÈûö»ÝXht:âñجUp1Çãš`°½•ŽºÓ ¶µRT]Ê[oOF¼¦'Æ9úÊ‹ô4ÔS¸x Ën¾‹ÝŽÎhäÌ;o£T©¨Þ¼•ZC<%‹Íhd\?¥ÿB‡™4³ÏtóG›ˆÄæ´É·›ÈµyúD¸©29 R*ÈJ1Ð6æÆŽr¦Ï5ïçߥ<ÃJ,.r´s”åiœî ÈaAàß÷œçwÖUpCiÆṋy7ü<‰‹Åèë룰°ÚÚZªªªE‘¡¡!¼^/ÅÅÅèt:|>¢("IÁ`ŸÏÇðð0999äææ¢Ó騫«£¼¼œ¶¶6jkkñûýä}ï÷û2Nœ@¡Ppë­·òòË/c2™Èȸôä°ŒŒŒŒÌÕqEݬSó·Ô R*fOn 0ŒðÒ™n‡3È A "ÓJMž›AKAª ‹^CãÐî`˜t“ž‡™I˜Ÿl¦oÒ‡´j´*ž`”˜(^ɤY9,üá¦JÞhèçüÐ$wç Ö;Q)Üõ£·’¶]+fšeyƼ!ZGÝÄEÙÑ—ùd …Ø¿ýiZŽ¥tÙ ÖßÿÀåá‹C+j&¹ò3§©BF§ãè+/¢Tk°8ÔÞz;e+V&sÚ/f×/~FoãyÔZ-™Å%Üþ{xÙZÊ …2²>ÏîçË=êhãÿG"|=Õέßü}ò-JŠ“I’„Ï=…R­FP¤¤¥áw»yúo¾‡B¥¤jãfÔZ-{Ÿy ÿ´›¥7ÝrMJÕj¥‚½¥ ðàŠb'ÙZ‘CÓð¥B@¥°éÿ¿wi!'{ÆÙV™Kûè4¥BÁúÒ ö·sÿßfY^ 2¬hTJî¨Êã'Z¸ëG»H3ëøó[jÈJ1PcçŸß®Çˆ°yA­(ƬÕPcç¡'ö`ШxhE1ËòÓ>6'++‹5kÖðWõWH’Duu5[·nÅé¼ è855…V«µJ÷YA QÏ{ý½_D¡TÑÓPÏ`{J•2™»==>Æž§Ÿd¼¿{¿ýç w´sàùg±¦g€BàåÿgÆûû(]V‹J3wŒˆ¢È@K3gN3ÜÕ1kL„~"¡ K ÞÉIR329»{çö¼Þlæ®?ú/49ÄΟüˆ[¿õûسr’Úï2Ö×Ëë?þ!a¿ŸôünùÆï’S¾µæÚkŸ_LGÝ)Æz{ÙüÈã.®Jô'Ôl¹ APP¿o…UÕ¤ff៞Æïž"¿rñu)³¦S+1ëÔ¨ÇV—ò‹Ã­¬,LçHç(½Dt‹Y§F¥Pðøš2¾ÿÎyÖgp¢wœ]âùåæÊ\Î ¸¸÷?ßfu‘“ª™ÜñìmàWGÛ™ô‡hq³,ÏÁw·-áoï\Îß¼VÇÄë!6–er{U>õ.ŽwÑ6êI =þþÆJ¾²¦lŽÝ&“‰ŠŠ ¢Ñ(uuuÎ}³Z­ STTDNN üÅ_ülݺ•¡¡!^yå|ðArssùæ7¿ÉSO=…×륦¦†uëÖ …xæ™gøîw¿‹(ЬX±‚Õ«WÓÓÓÃÓO?ÍÓO?Í‚ øÒ—¾”¬è ####óþyﳜª®®®g ®ÏþÂO‰U Ö¿y€——¾É õXSô ìfþðÙü|¶½ZÅ_ݾ”ÿ¶m S0#ž =6ƒQ’õ9Ú5ÊÿÞy–S½ãèÔJþhó"¶Väð‡Ï¦eÄ}Yƒµ*%zŠw©«rSù÷ÖòÄ¡VNõów_XÎöS<¶ºŒîmäéïëÄ”;Sø¯c_ëÿüv=¡hüz_«Ï5{¾²ŒM«–]o3>Âá0_²×ëågÛŸ§hë-WÕç`{j†´¼ükRAöº\tœ9Íâ6&óMgÙ 0ÑßO<ÚžX™¾\ÿ®¡A$Q"%=íªò‡»:íéfñ çÍO/—‹îsgpäæá,(œS‚J’$ú[š8¿¥Ë–S¸¸š¸§åØQt%Ë–£Rkh?}’X4JŪ5—ÝŸ»·›)ʆ ®úœ~R8pàv»ÊÊÊëmÊ,¶oßÎM7Ý„ÍfûàÍÐÜÜ̶N2–|Lß’ęݻx½¬¼ýNZO§ýÔ $QdÑ )Yºœéñ1ê÷íaÁ굤åäôù8·çrT ‡è¨;R©dñ ›H›É#î8sšÎ3u¬¾ónL¶TºÎžáìî·‘$‘üÊE¬¸õA ðs|ÇË(”J­ß0“ÏÞEçÙÓToÚŠ95•éñqÚOŸ`ášu„ƒA^úþ?Rº|«ï¼•ZC8`jt„Gz“骢i®†X$‚$ŠÉ‰Š‹‰Çb¦§1Z­ -ÇŽ°ïÙ§ÙöµoR°¸ê#Wqk8ÇÊÜ,ªªª>Òý|¼òÊ+ÔÖÖ’™ùá•u¹\466RYY‰Ýþá•h ƒ<÷Üs<þøã×ãTÉÈÈÈ|"‘$‰I׿üÕ“ï|ûÛßþwÀ7óç™ù×®*Ä݉ñƒ½ üô`KrÛŠ‚4^øæM³Ú™uj2-ú&}øÂQrm&Œ)z C“˜4jÌz v£§EŸüœRP)WõÃ\[˜ÆÕ5 Óf™)î®)`M±“EÙ©äÙMLøÂœì¿Þ×AFæc!»´ì}}Îl·SsãM—|_«7]V~ÕýÙ³®M½7³¨˜Ì¢â«no±Û©Þ|ã%ß¼ŠJò*.8¥j`É{>SºlÅû:_22@b5øÆ›gmZ¸f ׬›µ-%-u÷=ümÓ›L¬¼ãÎäëÂÅÕsº.\\EÞ‚…¨µZ…‚’¥Ë(Y:wâAg0²áÁGfmË,.!³¸ä¢ý§±|Ûm@"ß¼¼v]çÎP¶|%΂B´…E|ب.³ŠªT©0Ï8‚þéiÚëN‘QX„#7÷º”Xû¼£×ë)//'5õ*EBedddd>r®ÊAW)ŠÓ,¬)¾ºX‘1{õC!,ʲ±®4ƒ¾I¢$QœfI„Æ]ã^ªsìxC~z¨™£]£ïË`QLˆ'ÅfBÎß =KcÞ Ïžìà@û0]ãž|‚ÔÊ«›8‘‘‘‘‘y/ïýý¸Òï‰R¥F©úðK©µZß° GN.Ë'CÈK¥Q³põZ,v¦yRfd>z ƒáƒw$####ó¡qUºA£âëëðàò 3ó•bV^¶bƉ/´›±´Œxôº¼ˆøBQ²mF⢄N­ ™ô_]9Ž•…él.Ïâ'[pùCœì§ah’m•¹tMx0hT,Ì´±ãl»šYà´rv`‚áé1QÂaÒ±¶ÄIŠþòyQý“~ŽwÍvùæ ©Î±óFC?»›éqyeá9™O‡‹ãÚÔØ?J´z%K—_o3dddddd>Q\ÖA¿§¦ÕENž?Ý€(Ií¥:ÇŽI«F”$6•gaÑkxöd¿­ë¦&ÏÁ×Ö–cЪˆÆÅd®xŠ^J) ª«¬dÒªù“-‹)ÏHáß÷6‰ÅÉ´èùþWó¿wžåpçqQ"“™bàïîJ¯¼ks¶ÕÈl\D¡ãòŠ´ï4Ð2âžã wŒMcÔ¨ùómÕüÏ;–Ñ=áå•s=¼r®—¶Q7²¯.óQE ¹ßŸÈ¡Ì‡CÔïÇ/Eÿô¥Ëøý~Ôjõ'ÎöªVr,’Nj̉ƒx<žOܸ¸B¡SSS¨®²,æõ¶UFFFFæýqÙoù›æpß²Böµc3hYšgÇŽrOM!-#nܛʳÈK5ñB]7S0Ý^âR¢~o86[XM¯V’jÔq54*^Yª¢tþ×gð‡޳R!ð­ žðò¹ÒL‰þ$ †&9Ù3ÎÕùìofÄ uÔÍןÚFyy¥f_8Ƹ78gû›ý|ÿóäÚL¬/Í`]I÷/+bcY_øá›Äd]æ#"âñ0z®îz›ñ¹&â÷EL–$ú4166†V«ehhèz›2 —Ëõ‘ôë&–™ËšvÓ:=ÉèèûK³»žŒŽŽFÑëõ¼³˜x\Ö•‘‘‘y¿\q¶}ÌÃã¿ÜKM®ƒŸ<š¨mEþçk§97àâ_¿¸fNø¸B0jUsœâËÕô¼›AËC+Jø½ 9Ò9Ê uÝÉ÷g§rç’ž8ÔJÿ¤/é LxC¼~¾¿ºm)Õ¹vF›‚„¢qz]¾«Úï¥%‰ÖQ7­£nž>ÑAE†›A›Ìƒ—‘ù(ЧÚÉß°åz›ñ¹FVqÿðÙ¾}ûGÒ¯5¿ðãSq—ùÔ2Öp޲ŠûGλ*î22222×Εã¤$ˆÅ¥D¾ùE«ÅqQ"—æäc{ÃQÝ~ÂQ‹^ƒËB­P`Ôª˜Fè›ô%WÃ/ƬSS[Æ ¥ܾ8ŸÊ,‡:Føûgp#@B\ç¶ÅyDã"Ïžì /Õ„Í E©¤„-G:GéšðroMûZ‡æ¬âP‚‘u}×ãZÉÈÈÈÈÈÈÈÈÈÈÈÈ|†¹¢ƒ^•“Ê鿼½FI†%¡ô©V(øÕW6šÉûÞß6ŒB€’ôr¬F|¡(¹©&v5 ðwoœ!Ïfä·,fižƒh\$ÛjÄfÐ2Hä"ÆD‰Òt ÿë®HœíwñÝóNË ÓÒÌ$€$Iüä@3/ŸíA£RðÛonÅaÒ‘¢×04í`x:À_½r8Fä„XI@\Åë}‰dddf!Isë5_´M’¤y•²ÅxQ‰†‚Äcqôf3HÞÉI4zÝ'FÙZæSÀÌo’(Šô6ž'-/¶ ù{î?I™Ao6c0'ôP‚>jfÞ’dá@ P©ÕÌ:”*%‚  &Úû}(”*ÔZ- ¥’É‘aÌ©©hõ×W[ŒÇ‘D…J… $&ÒÃÁ#]-)¤åå_Wûdddddd>‰\ÖAïqyy§yWÎöà0ëØX–I¯ËÇé¾ uŒ0á ±®$ƒ1o¸(‘i1°¢ ]Mƒ¼x¦;YJ­ap’ýTeÛùÊÚ26/Èâtß8'{ƉÆEvÔ÷Ð2âfܤ}ÔƒËé<Âq_ˆq_ƒFÅ_¼t‚T£—?Äþ¶a Ž~~pòŸ˜I˜çNuÑ=á•CÙe>„|>"¡ ¦T; Åìô‘ ×ƒ{|ŒŒ‚"…âšûãq¦'Æ ùý󾟚™™|ØÇbøÝSD#‘yÛ ‚€ÞdN8À"¢(âèÀ‘›—tÂC~?ã}½¤fe 0Þ×Kvijí…ôI’h=yŒÞ†"¡ S£#.®F¡TÒ}þYÅ¥¬¹ë^ QŽêruœe>ßx&&˜˜¹§'ÆÙûÌS¬¸å6²KË“m…kz:&› Ï„‹ ÏÃŽÿ÷o,\³ŽŠÕk1ÛRyúo¿Ç’Í[Yqëí:—$üži¿ø,Äxœú}{˜bÅ-·£3™ðº&8ðü³ ut 7›yä¯þ'šOA>µŒŒŒŒŒÌÇÉeôÝ}žìiÀ‰¡Tüp_#q1±ŠŒÆE‰§w€¡HŒcÝ£Üõ£·Fæ®\KœpñíçcÔª’jéqQ¢udšÖ‘ék2<‰ñVÓÀGvb&|!~~¸õ#ë_FæZéki¢ùÈ!nøâÃØ22f½×U–ýÛŸáwþñ_g9¦WK$äìî·éoiš³=àõr÷ŸüWr,À?íæØ«¯0Þß7·#IBãTmØLõæ?´cÇbtž­ãøk;([¶{vÂŒÃ19<Äî§~ɺû@Þþå<ðÝÿŽí¢ƒýtÔFkГYTÂôħv¾ÁHw'ëîý"®áa‚^Ï,4:=*†x<†J¥âüþ=èÌ¢¡Z½CJ AŸ—ö“'êh`õw“š•…{l”Öò*bq¤%®S,ŠkhIŒãÌ/œò> ú|ôµ41ÚÝE<C­Ñ"ŠqÜccØœN,Ž4¦FG˜ÆšîÄYP8ï˜û¨é÷p¤s”+²ÉLILBFã"Ú‡ ÇDn^˜ÃÀ”ýíÃl*Ï&×fL¶9Ü9‚?㦅9¨ß£¹óÒÙ6–eb3héqy9Ô1ÂÆ²,rf>?é³§e_$F±Ã̲ü4 šÄ#Y\”8Þ=F8g]IÆœ¾ß/]]]´·'î‰ÜÜ\ÊËËQ¾gâæå—_F¼(tpóæÍŒŒŒÐÔtá·A©TRYYÉÔÔýýýÉí‹…¥K—’ššú±_G™Ï—uÐCÑ Žv\”.Ê¿°=½O‹D¯UE¦ƒddd® “ÕÆho=õXÓÓg­”¦=¨4Záý=È©u:®]OÁâ ÂIñh”¦£‡éêDk0&·k FJ—-'»´lN?‘Pˆc¯½Là"§"Ñzâ8c}=óî»bÕZ2ŠŠ/éÀ¹GGh8t€æ£‡)®YÆ‚U«¯y50‰àq¹E÷Ø(’("Æã ´¶àš$¿r>÷S££T®YÏ¥\”¾IßyáÿýÖ¥äÝ`B«R2î òÓC-ô¹|,Ëw0Œðßã;7US`7£S+™ „yâp+­#ÓTg§Îqа·Ì”Z¼¡(/ía3…ž /CSü·[– ØüÑþ&öµ‘fÒ“™bàÅ3ݼÑÐG0§<Ãú‘8è±XŒ7ß|“þþ~òóó9qâCCCÜsÏ=ìÞ½›¦¦& 8tè:.éŒwttð«_ýŠœœªªªæ8ŸFA á"Òróè®?ËäÐ )ié¤çÌjgMwR¶b% …‚…k×Ñ^w’â%5LŽðxêh'à™¦¯¹‰‘®.  ·~ó÷™èïÇ=>Jfq)£½=,¨]R=÷gZ­ÕòûñNN“ƒ‰ÉjEZ:ÍG¡T«±:3hmFk0"(DB!ÎØGoãyÒó °˜¸êmhàÈ+/ ‡X{÷}”­X9ï±<\ƒ¤Ð~ê$Vg9eå¸ÇFi=qŒ¥[·¡Öj“í=ãŒ÷õbMw"ÆEÂÁ ÑP¿ÇMþÂJVÞqpêÍ× Üôå¯aNµì×´®o‚?{ñ?x`-w×¢TôMúø÷= (- ²8?4ÉŸ½pœºo./F¥T0èöóÃ}M„£qn(ÍœãDÿË;õ”;Sèuùxµ¾——Ît“i1c3%þc_#áXœ,«‘í§ºˆÄE6•g¡ÚF§ùÇ]çp˜t¬(HûPô`0ÈO<Á’%KÐh4üæ7¿áë_ÿ:ùùÒ âñ8O<ñ=öجRn‚ $¿Ÿ#‘¿ýíoù³?û³ä{ÃÃÃ9r„… ~ì×PFFFæ³Æ'¿˜¦ŒŒ ©™Yä–WÐuö,ÅK–a±Ï<ÌJîñ1ÌVÛû^ýRªT8ßãdŒõöàègášuØœVìµz=…UKæí'àñpüµèM…·K‰p×øL¾ì»„ü~z›È.-#£¨xN_îÑQšŽ¤õäq¢‘«¿p7¥Ë–£3šÞÓ2‘~¹ZµVKvy9m§ŽãE¡T"‰qži"¡Y¥åL¡3˜È,.¹lš€Ý¨£ÛåeÄ$?ÕD¯ËGŸËKºùB¾¯Í¨aÐígÐí§8ÍÂà”Ÿö±i2R«á¾p”ŸhæDÏ85y<Á(þH”ãÝc,p¦ð;ë+røó—ŽÓ6:ÍâìTNöŒs¦o‚Ê,[r?“Ž{—ñÊÙž÷uݯ†X,Fjj*K—.¥°°Ã‡sèÐ!ÆÆÆØ±cßûÞ÷p:LLL Ó%¢7<ÇÇ`0`0\ß<è­Á€wÒEë‰ãH’„J£ajd8ùþäðiyù,ßv+®ÁA4Z=ëïÆC¨ß¿—•·ßÁ®_@vY9¥ËV`Nµ3=1ŽgÒ…Å‘†Î˜˜8(®YÊž§Ÿb¼¿“-õºDZd¥9Õ7ÎM•9Xtê\„£qœ– ÷n†EOý€‹[åb7êhžÂŒ$ÛŒz‚üç&ZGܬ*r&„lZÉUù³Äe{\^ŽtòÓGoÀiÖóÄáVŽwQ[À;ͨ RÚ«?ˆ+0::ÊÈÈwÞy' …‚“'OÒÕÕ5ËA˜L&î½÷ÞYÑ V«•òòD ÇÎ;Y¿~=•••¨ÕjV¬XÀOúSÖ¯_ÓéüدŸŒŒŒÌg ÙA—‘ù” 3)«]ÉíÏàN:èS£#Œõö·°2ùPÕxø G^ú-á€ÿ’ý.^ <4歹gbœ·~ñ3,iéTmØ4keìr wv IŽœÜä6µNÇ¢õ¨\wý-M¼õ³óð_ýO:ÏÁ54ˆ5=#ùPî éÈ!úZš™D­ÕôùX²ùF¬\=¯b<Ž©P(f…fÔïÛCó±Ã|á÷ÿ˜óûöðxÐètXì2‹Kè>_A¡`¨½ß‡='íÊ…™V|¡(cÓ8Ízê]d¤H5\H-(K·EZFÜ䦚8;0AºYŸ W?Ö=ÆÁŽ~ðàZú&}þÇ’UEé4»õ‘$h›¦ÀaFu‘“º¼ n—Á©¥’–7y©&t*%1QäÍÆ~Æú™ˆ”‘‘‘‘¹ÞȺŒÌ§ˆìÒ2nýæïcMO¬´Ä":ÎÔáŸvS\]“|èÍ(,bÕw‹E/ÙWŠ#mVè:$„Ø&úØóë'™ècÕw£7[®Ê¶€gš“;_%£°gÁì¿wí DÂa:ÏžáÌî·©X½fÖê|ÈïÇ;5EFa!«ï¸ ³ÝξgŸF¡T^rU;#‰"*µ†Hø‚À¤ÓßÒ„F§GP(ÑM(Uj$ ,‘Pˆ‚E‹Q*Uô57¢T©¨\åz罆š\G»Æ(wZ9Ûïb}i&MCSÉ6&š%9N÷M°4ÏÁ±®16•gÑ4ìàüÀ$ 2¬äØŒäØŒ8L:D)QÎR9sœ‚ …€;æWGÚ¸£*ŸÜÔÙÑ¥c~1J¥¿ßÏîÝ»éïïçÁÄív366Ɔ xüñÇùÅ/~Á¾}ûX·n'Ožäþûï§µõ³¥ã!‰"gNc0›É.-Ç54@çÙ:Š NÉôÄéy‰qåÈÎaó#qlÇ˼úÃÔbeË££3šè<[‡Íéd¼¯…  ÎïßËÄ`?¶ŒL,Ž4RgVº†ÚÛQk´ä.XˆB¡Àëš@o6 Qi´¨Ô*$•’¢ê^m'cËÈ$Å‘†$I !9£ cŠ•x,ƹ=»êhgëã_#-7€-}…ÝOþ‚Ã/þ…BAÑEß)Æ”rJËñNM’]ZÎÔð0Ÿ¾ÆrÊ+f'•ZÍÊÛïdÉ–­½^ÚN§~ÿN¼¶ƒ¼ŠÊY³ƒ%…Éá!Äxüº8èv£Ž ‹7ûÙTžÍ¤?LUŽ}Ö˜N5è(IKaWówVç3ä°,ÏAã°›HL¤sÜCE¦ §EOº9;™O>_D@4.&ÆùÌ[*…‚¸(1â ðüénþps%ž«²ýZ¨¨¨`ûöí(•JÒÒÒоgÂÓh4òÕ¯~•5kÖ ßÿþ÷9pàwÞy'¢(²ÿ~jjj°Z­ÉÏÄãqž}öYî½÷ÞdŒŒŒŒÌCvÐed>E茦dˆw,¥ùèaì£ly-©ÙÙÉvö¬lìYÙ×Ôw$¤»þ,'w¾ŽJ£¡bõZZŽÅœjgÁÊU—T6—D‘©‘aNïz“éñqnýæ/¹â>ÑßÅáÀb·³òö/PT½d–ŠsVI)Y¥eɇZï¤ë²6‹ñ8Óãc¨4jt&cÒA—êhg µ…î…R‰5݉ÚMz~>¢(1ÚÓÍÊÛ¾€=;›Ö“ÇpääÍ›W?ëK3ø»7ê8ÛïB”«d?̬)vò¿ß<ÃéÞ "1‘Ê,[ÒA‰"JÅ»eá޶F©D§Râ'&U⢄7¡ÒϱîQ–æÅéôR×ç QSêL!Ãòñ(`{<vìØ×ëåá‡&33“x<Ž^¯gÁ‚ g®¨ˆöövvíÚÅÀÀǧ¹¹—ËÅÉ“'YµjÕÇbëG‰ PP½éFâ±(Gw¼LÈç%¯¢ò=+è+AÈ*)cÍÝ÷ñË¿ü3¬iN²ËpþÀ>Ì©vL©vbÑ(‚R‰B©`цM¨´úšš®h‹R­ÁžCÇ™ÓäUTâ™p¡ÖiY´n¢$Òrô0%K—cMO„GÂ!”JJ• ÏÄõöR{Û,^œìÓ˜’Âúûdÿög8üâó¨4Z ]xéÍ· T*1ÙR1¥¦2ÐÚÂhO7ëî{`–mEK–&KSR¨Ú°‰€×Ãôø V­!%-ýÂq¨6½^’qá×;ªòùﯜÄi6`֩ɳçŒé[*sùËWNR’fA§VRà0Ó83¦EIB¡¸àŒ_nîÌfÐâ E’ô<¡z’WÏõÑ5áa_Ûç'éuùØÕ4À=5…|PZZZèééáoþæoP«Õüà?àèÑ£ÜsÏ=É6:Žõë×'ðòòr˜žž¦··—›o¾yV~úðð0ƒƒƒ,]ºôº];™Ïó:èåéþß]Õx½ÞëmŸŒ &6 ‡Ôãš`¤«“γu ´µR°h157ÞŒî=«á×Âäð§wí¤ç|=y•,Ûv ³…㯿Êñ×^I¨R¯\ua{¦ÔX_/ý-Íô6Ô‹FÙøÐ—È)+ŸÓ¿$I wvÐvú$ jWSX]3ïÊÒµ–ˆëëåü½ Ñ+»ËE4¢ùèaºëÏ‘ž_@aU5ŽÔ¬l,A¯—ÏOVI)e+ji=q 1'ð㙘Àdµ]q¿y©&²­&ž8Ü£«JѨæÞŸ96#y6?9ØÌ—V– ¹(ô³Èaáùº.<¡=>&|!Ì:5¹©&Î ¸Øº0‡¦a7S7Wæ°,ßA$g*!E¯ÁaÒ¡S}<Š×ñxœ]»vxðÁ“á®N§‡ÃÁ‰'¨®®¦§§›ÍÆâÅ‹Y¸p!‚ 022B$™µâöiÇd³!ÍxV‘p÷øJå…ŸÒp00«Ä`$âüþ½èŒF"á gÞy‹îóõ,Ù´%Ù^­Ñ P*qæ0ÒÕyUºÁbÁž•ÉjezbœX$‚U«)XTÅþíÏ Þ©IB~½µVG<#‹aIµ³ù‘ÇÈ«¨œµú`s:YßìyæIN¿ù:ù +“ãÒ‘“(w88@Û©4=Båº ¤Ï¬À_Œ(Љïªî.:ÏÔ1ÐÖ²›oeÁÊÕ³VÉãñb,63©wý”þKÓS°è4¼|®‡¯¯-'ç´)N·fÒñìÉN¾²¶ÕŒC®R 8-zºÆ="1ÎN^$ª;—2§•HLätïÕ¹vÎô¹(°›Yšç :7‘‡?ê 2Œfþp&áb±‘H$)øljF£øý~ÆÆÆÈÌÌdxx˜íÛ·ó­o} €¶¶6jkkA¡P`³Ùf}w·¶¶’F.M)###ó¡1¯ƒî0jy°¶„x<~­ýÉÈ|$Œ]o>ô·4ñί~ß3Mz~›úy +?sÐpè­­¬¹û>Š—Ô$úVÝ~'b,Æ¡¶S°xqRü-‹ñʾkp“ÍFÙòZÊkW‘š™5¯“=ÒÕÉ;Oþ›3ƒEë7\“”p ¸X4Âk?úz³™%›·&ê´ ¾©)êÞy‹ò«XqËmèŒFbÑ(‘`ÑÄhwéyô·4ñìßÿ á` >Ì`{»~ñS6?ò¹•óO JA@©¸wißyá8[+rhžB9Ó^@¥P_XRÀžÖ!¶-Ê£cl:ÑFX[ìä†>îþÑ.ªs¤™u¨ ¶UæòÃ}|áÿ½…Õ æ6/fI®=Ê>â Ð8<É’\;&šÛÿß›tOxqùCíåÁåÅ|çæê­,$ÆÞÑ£GéììäàÁ„ð×Â… yüñÇùÖ·¾Åþçò³ŸýŒ‚‚n¹åòóó“ç. ¢Óé(+»ºÈ„O–›Ë ÷?ˆB©b ­…±Þ4:ŠÔãšààóÏÒsþ<·ÿî2ÒÝÉÑ/c²ÚPj4ìüé0ÔÞ>#§ž³Iîì ·¹‰þ–F$ñÂor8  7[p âHçÌ;»h>z1cëW¾NÛɼùÄOØöµo’š‘AÈï'à™&³¨˜¢KL’!س²¸éË_#èóÍÏ’(òÌß~ÏćƒUwÜIÉÒåsÆ|8à癿ý¼$I"£ ˆm_û&™Å%hÞôz x=d—¢øïÛ«¾Ž3©$J…À+ŠøéÁV99Ô1’Œrm‡jKø¿oc]qÇ»ÇPÎD¿lYÍÿz£Ž»~ôËóÒÉMM¨µÿ`o¿:ÚN¯Ë˹IV¥óÝ›—ð›«ø?ože:¡¶ m•¹:.L숢„BXšûá(Û/^¼˜¢¢"¾ûÝï‰ ¶M›6188ÈŽ;xðÁÉÊÊÂl6óío…BÁâÅ‹Y³f ÈOW*•sÂØÇÇÇq8ûu“‘‘‘ù,óÞ_gU]]]O~^^öµ®dÉÈ|” QYYy½ÍøP‡Ã P\\|É6^¯—Ÿmž¢­·ÌÚðLã#5#Ét¥]]5Ñpæ­¡FñNM’’–>ë~¬·“ÕŠ!%åÊÇàsOa±Û¯©N{$¤ãl¦”rTÌYíí鯖‘F—XeòO»q àÈËÃpQî|4æÜžwéîbÑú äW.frxˆæ£‡É_XINy¡@€æ£‡IÏ/HF¸{»)¢lØpåÜôOÀn·âÆÍöí۹馛’+ñÍÍÍhë$cɲÞÙÕ IœxýUüžiÖß÷M‡Ðtä’(RsãÍ,Xµ&™ú±xÃ&œù¼Ní|‚EUDBAZŽE©RR³u…E´ž8FÛ©ÜpÿC˜SSi?u‚o¼†$ŠU×°öÞûßÇç~ƒB©¢fËVl™Y u´Ñzü+n½‹Ý{t„¦£‡©Ú¸…H(È‹ÿü¨X³–UwÜý¾s½»Î!5#“”ôôK–uŒÇbtÔÆ˜bÁ‘“‡Î8ÿ¢$I´<Æî_?ɶ¯~ƒÂê%¹ŠûXÃ9VæfQUUõÁ;û˜yå•W¨­­%33óCëÓårqþüy-Zô¡:ÚÁ`çž{ŽÇüzœ*™O$’$1éšà—¿zòoûÛÿøfþ<3ÿú€œƒ.#ó)Â`IÁ`¹²C|­\N¥]©V'óX/&ý¢ò4z= W¯½äûï£3¦X1¦XçŸFËòm·ÍÚfÏÊfݽ_L¾Ö›L,Ýzó?™2Ÿ}ÚÛ¿0kSÕÆ-TmÜ2k›-#“-~9étÌÖßÿàL~²@ÉÒåsº.®YFÁ¢*4:‚BAùÊÕ”¯\=§Îh⦯üάm9e È)[|muf°æ®{ˆ„t”ͨª—-_™†»VŠªk®ØF©RQ^»òŠíB>gΞ—#7÷º”Xû¼ón„‹Ýþñ× —‘‘‘‘™ŸÏ…ƒ>î 3ê Q’–(‰ò^$ ¦CQÔJãŒòª/#a7j?6¥d™Ïïu:¯ä„ªÔjTó„»P4:‹o؈ÅḦ(–ôÜ(ò&TÝMbD…ÌÕc41?XŠ”ŒŒŒŒÌ‡Ëô¡é#žv#6ƒöŠ.¢$]R‡U0KÙ4™ð…™ïZ•›^“Ì»˜óCS¤ud§\^¼ðèŠÎhbÑU”6”‘‘‘‘‘ùŸˆbœX(x½Íø\#F"D¤„Òñ§h4J8þÄÙ‹Å>x'ó Æbòx‘¹"â't\\ ±XŒ`0ø©°=”Ç¢ŒŒŒÌûåŠúò<;ËóìÄD‘¡é ¥"YZd*fWË0« ÒÈO5b7jùÞ¶Å|oÛâY}t»|üÕëõ,tZfm/K³ð«/­¹&ƒG¼Az'ý,ʲÎû~4.Ò9ácGÃgú'ùƒÊ©ÎN„ÎýþúR¶Ÿéåoß:϶Š,n,Ë Ý¬£mÌËT ÂþöQ~q¬“HL¤~È;¡aØÃ¤%Õ áÑEÔäÈax2¡ÉIzì¹Þf|®‰ƒx‘¹Þ¦\3SSS¨Õj¯·)³ýHúu÷vœœ¸Þ‡'ó 'âóqjx€–––ëmÊ53>>ÎÔÔÚËh†|RˆÇ㲦€ŒŒŒÌûä²z$.²³i… iÑ‘m5à0é’9Ù}SZF=Ôæ_ZùÓŽñrýKslä§^Ès÷…™ „‘¤Kï_©ȱЫ/ä×õORšn¾dع?cÇ(¢$±47•†áiN÷OŒÆ±èÔH’Ä’lmc2-: ;ȵøîÖ…ˆ´ŒzøýçN‹Ü±(›‡— S)ç ·—‘ù¨08Òæ¨¸Ë|¼È*î>Û·oÿHúM-.ýøTÜe>µÈ*î視ËÈÈÈÈ\;—uÐßuG»\^ÎL’m5ð…E98LZâ¢D먋NMºi~Á™h\doûîßX[‚þ"§ºaØÍ±î bbÂC—$‰¶q9VFMB G¯QòÀÒ|r­†d›ºþI–æ¦"ÌX×:æaÔbe¾­JI«âžê<´*g¦ˆ‹熦hvswU.V½‡IK–EZ©àDÇyxYª™Òr¯7Ršn¡À.rºßÅ- ³È³É"*2222222222222—uÐÕJ·UfãÄð‡cXô çyÌâÜàJœ—\Í>ÞëâW'ºy¼¶ˆ‡y–ÀÜÒœTJÓÌÉt$Æ{õ 7WdRâH„Â+p\äüzÃôM¸­2;)6‹MIOŸ•#ôùx¦çm«7›1˜-¼_â±gwï–‘EQõ’kï@’èoiF’$ò*rñ®wÒ…J£Ag4]UÎï`[+ý­Í‰1~‰rk’(rtÇ‹DCaÆûûЙL(Uj W±÷™'Y{÷ýT¬NèǨ4ZŠÙ⩱H„p0ˆÁlFxÏ{Ñpÿô4æTûûg’$ðxˆ†Bó¾oH±|èß=222222'Wýë—$&ýa:&|ìn&ùã Ð]”‹tLxy³iˆÖ1/ÿt×R2-zž9ÝÃÏŽvðõÕ%”¦™çôí Ey§u˜"‡ «~þYùP4Îù!7qI¤oÊ?ÃŽ‘nÖñËã]<´¬€¬e÷Çk‹x¼¶€½í£¼Ý:ÌŸl\0gÝ V! Ð;éçÇ:©ÌLádß$Ãnº\^Þiay^*Ïí¥ÀndQ¦õz_3™Ï9ñX ÷è ¥òC-™˜vÓÛØ@ÀãIB©RÇñNMbsf 5ðMM¢Tª8þÚ+ŒôÏíD’$‰E7l¤jæÍ61§¯¹‘#/½@Áâ*VÞ~gòá~b`€]?ÿ)ëîAxû—OðÀwÿ;¶‹ò4%IDÚOŸDP(ûýø§Ýä”Wàu¹xîYJ—­ ¯báÇ`ÒæpçÕ9vòRM‰ë!J4O1á ³²0h\d_û0‹³R)t$¾ïDI¢eÄͨ'HmAFíì:×Ú‡YœŠA£¢yØMÿ”Zɲ¼4RZ¦ƒÎ ¸p"d¦X”eÉq´k”H,QCB¢ÈaaI®=©r=‰Çã´µµ!ååå»`ÔÔèGw¼„kp`ÖößO4æwÿí?f­·Ÿ<Á‰¯ÎÛWÍ7±lë6xŸÇÅhô%R3³fõÝÛÔÈž§Ÿäþïü7lÎ ®•x,Æé·Þ ëÜ™YÛcÑ(AŸ—›¾üuÊV¬$1ØÞ†Ù–Š=+{Þñ Ð?å£~`’•…éɈ½˜(rºw‚h\dM±“QOÓ½¬(HÃiÑ'ÛœíwŒÄY]”Žê=^ö¶±,ßE§ah:ÀÙþ –å]øüt0ÂÉžqÑ9V# 3mèÔJÜu}xÃQrlFªsì—]˜˜˜ µµ•ŠŠ RS/D8õôô066ÆÂ… 1ÍÜ‘H„öövJJJ曡³³I’ÈÏÏ';;¯×ËéÓ§“m´Z-«V­"ÓÙÙ‰ËåÂ`0PZZŠM®g/###󹢃Þíòq¢×Åàtw0J\”(M3sOu.–‹VÕc¢ÄÎ1Þj"?ÕÄ_ݼˆì™Üñ‡—ð›ºþãP¹uÓ……½.v·0éðhmfí\“ü‘ÿ¼§™ã=d¦è Fã€BH‰Úê‹2Sx¶®‡ÿ²©_8F0‡™úêÓ¡ÁH—?œ|°HÑ«“²áXœ{ªsIÑiñ¾«V¯@§VRh·±<׎xA;™Ié®?ˉ7^E©T±æîûÈ]P1oۀǃ{l{V6= õسspdçàd¤«“ò•«Q©/Œa×ÐÓc£˜l©¸††€Äêôôø8eËkY¶íVt#!¿ŸœXçy¸ŽFœyç-|î©YÛºÏÅ548¯Å5KIËÍ¿¤癘 õÄ1ê÷ï!§l V®¾æ•·X8‚wÒ…‹áC’DbÑý-Mx\.œù…Œvw1íš `ѥţº&<|íÉýüõmËøõhT \þ?Ø×H÷¸—Ÿ?¾é`„¯ýj?¾m °©­JÉT Ìîo¢ahŠŸ=zEi³ô¿{£Ž¿¿«–pLä¹S¤›õL#œésñ{òëãí´ypZôìjàÖŹTf¦Ò5î%K¼Ý<À]K ¨Ê±óIôéééá'?ù ™™™ü×ÿú_Q*•¼ÓkÀd³Qµa¡‹JREB!êvíD£Ó£xÏ=TPU…5c~‡1ÅáxßÎùµÅh:r÷Ø5[nšîd´»‹Éá!6>ðð¬q"kÖÒxè û~ók /aÕwb´Z‰„ÃÔïÝB¥¢ö¶;Ð\Ãùù|x''‘$‘ñ¾ÞÄ9HK§ñðAA@¥QÓ]µVGÍ–­DÃaî£ýÔInúêï`0[ïï£ýôIVÜzǬöχB’׊R©¤tÙ œ…Ém¢(Òsþ]ç΢5h8Âùýûã1n|ì+—LÏ9Ö5Æo?ÂZǪóQ*¦üüÛgXQ°…Ó}ãüίð/÷¯áþeE¨ÃÓþi×9‘8Om3æ÷8èß{õ?~d=àçµú^ž9ÑÁ?ß·§%Q”xâp+ƒn?v£–]|qykŠ3xêX]^ì&-¯Õ÷ò½Û—‘{ œîîn<ÈÎ;ùÓ?ýSjkk8sæ {÷³“?ù“?¡´´I’ؽ{7Àb±ðo|cŽƒ yâ‰'°Ùl‚ÀáÇùêW¿ÊÐпüå/Ù°aJ¥ƒÁ@4åðáÃÔÕÕ‘––Æøø8MMM<ôÐCŸ •y™O2W|Êõ„¢L#d¥X‘§'Ïf$Çj˜£h.Y)¾X“ÏÂŒ 奛´*^VÀ®–a4ªÙ?b=.?y6#_¬É§ Õ8ïCºJ¡`Uƒ5…ÔJ%:•½F…A£Ä¨QaÒª˜ DhN„'îiáP×8ÒL‚ûT0šx@>Ôž¬c®R(øÚêb 퉙å²4 7-ÈL:ìµ … pÇ¢ìõw‘=t™ëËXÇv¼Œ5݉wj’½O?Éæ/=NNù‚9mÇú8üÂóÜö­? ùèaò+aÏÊf¸³úý{)¯]•løi=q•FC~åbJ—¯@o2ãÄ75‰Õ™VŸ˜pÓ,X¹z^û^õ{÷ 7š’Û$QÂ?=ÍÔèìReá@€Á¶Vl™¤åæÏékzbœö“'h;uÿô457ÞDÅêµSRæîX’‘ó¡Òhpbq8p¡P(gìr )ZR“˜œ!§|Á%WÛl-].£Þ¹6½.=ÞYz)z S>†Ü fÝZG§“«gþHŒ_kçlÿ‹²Sñ†b"1ŽuQ”fá[7T00åç/_>ɶaŽvò»R[γ';9Ô>ªB'¼eõ“xB¶Vä|"ªMø|>Ž?ŽJ¥BrûuFù•J~J’Dû©“„ü~ÖÝ÷À,§q°½ ßÔ$—*+ôL㟞ÆYPø¾ÓD1Îx_ƒí­¤ç¢¾D· ˜m©œyû-FººX}çÝt;ƒÁlÁYP4«­B¡ tér2‹Jèi¨gz| QJDTx\ôµ4±põÚYq‘`ˆŽ3§)\T…ÙnŸcƒÖ` §|­'Žðx”Jâ±þi7Zƒ²+‰E£d•’îÄ75IËñ£U×àÈÎA ¨º†îús”¯X9k2Ï;9‰Öh|ßçQP(È,.!³¸äBŸ.gÞ~“â%K“Ž»Ál¦tÙ2ö=û ãýý­¶KN¦›uœêçÆŠlÌ:5õ“"1œæ ÷®Ã¤£~ÀÅÍ sH5jir3ˆ>ÓfÜâ©ãítŽM³4Ïñîú¢$±¦8ƒCÊ öMùx§y€>´Žl›‘ŸhæHç(…3/Ÿëá‰Ç6•b¤qhrV*àÜ{J¤ªªŠ³gÏÎÙ¾víZÆÇÇgm7,[¶Œyûkoogdd„?þã?Fþå_þ…ÆÆF´Z-eee|å+_IŽ›p8ŒN§cÛ¶m,Z´ˆ††žyæÜn7N§ó}][™Wü…\˜‘BišJHªœÏ‡R!° Ýó>&5*îX”=§Ûe¡R*’Žó|hU nZpùP^“VMæÌÃï¦R'µ~ çCÀ¦× V9XœmZ“k£ÀnLN4(¹þ¾2Ÿ_žiN½ñJµš•w܉F§çµý€}Ïþš-_ú2Eų@­iNÜc£L“’žÎx‘`÷ø8aÖC{Û©ô4œ'a%MGqþÀ>–ݼ ½ÉD<Ú–~U!ÊýÄã1R/ /Wkµ,Z¿…kÖ2ØÞÎÞ§Å}ßù úš˜Ââp$ûvŽÒ~ú$}ÍŒtw!Ia¿ŸêÍ7RµaÓ¼Bn¢O|ï(H¢8ë½æ£‡i=yŒ›¿ú ZO#èó¡Ñê0¦XÉ(.¦§¡^ÏhO¯—GZƒá²Ç¸ Ê;¡g‡Ól ix ›AKšù‚ƒ^’n!Ó16M®-ñ mÑipš}Ÿé›`gC?{çr†§¸|!üá(“þkŠ3Ъ”8L:&-#ÓHØôZTJéf;B¸ƒaRZ‘ï´ RêL¡,#åºK‰¢HCCÓÓÓ¬X±—Ëu-J8ç#]yå WST]3ëý³»ß¦ólïþhˆñ8±h V›üA+[¾’} ÏÄ8;ú#¼““—ÜŸÉfcë—¿Fz^Á…óéª?ËpW;z“…¢%5,X¹Š´œÖôtTj5î±QüÓn2‹ŠQi«§å+WóæÏ~ÄHOÖt'þi7c½Ý¤åä&Ã÷»ÏŸãàóÏôz/y>3‹K¸á‹cMOŸó^,aÏ3ODXºõædˆ¿ P–›Éj¥¿¥‰¼…•—œ¨-L§ap—?„ @ÛØ496#º‹Ú/ÍsÐ16͘7ˆN­¤uÔMfŠ“VM\ÙÝ2H눛?½q1­#ÓLø9ò 2l(Ы.\ƒî /©F=¥‚¢4 ï4r¶ÏE$&òûšhžb]Iè¼t™Ä‚‚A˜³b]]]Íôôô¬I(AX³f Çgppþh¦`0ˆV«Å`0 V«•®®.òòòhnnæÏÿüÏ …BÜ~ûílÙ²…U«“¼¡PˆææfRRR°XÞ¿VƒŒŒŒŒL‚+:èj¥õUF¢]éù}>ß ùpĘ„[Ì:5fúª?û®c1é&Ý%ËÇÉÈ|܈±uo¿ÅPW7}ùk¤åæpË7~—]?ÿ)»ý+6?ò(™Å¥„ÓÒÈ(*fjd„ì’2ºêÏðzhm™#4P{ë,Ù|#Þ©IÎíÝÍñ×v0=>FQu æTûm ü{õeÒóòÉ,.Mnaæa\K,!àõÒÛXÏ©7ß |ÅJìYÙɶžÉ ú[›Ñ›Ìl}ì«X32Ø¿ýÔZíœäw‰†ÃH¢ˆJ­&'·K¢HOÃyâÑ …V‡F§Cì99(”JJ–.O¤ œ¯G¡PP^»êŠ©F-UÙvwŽPœfátß8Ê2i½ 0f5h©Î±s¢wœÅ9vuŒ°¥"‹¶Q'{ÇYieqv*‹²R±›tÄ%‰˜(%¿Ç!ñ–‘¢'Ëjä¹Ó]l dóNË ._˜øLÎMûØ4½./°©ò²ccc8p€{î¹'™Ÿz=Å8Cím¼ùÄOˆ†Ã-©™3 sÛ·~Öësûv³ÿÙ§ùÝûQÒ‘|IY¸ö"ÁÀ%÷©Ñë1XfGz¨Ôj–Ý| ׬£»þ,gêh>v“ÕÆÆ‡¾D^EeòÞS(•س²¹á‹±ýþßO$Do6Ï»O…R‰B©DEú[Z8¹óuß°gAÁœ¶Æ+÷ü—?c¬·‡®³g8ùÆkza;eËW²ùK£T©Ñèt¨µ:TZ-Æ”$ÀYP€wrŠæ£G°Ø¤Ì8ÌèŒ&̶ ß΂BnÿÝ?"%- aFG¢‰‘î.6?òXRÈÍš–΢6»hì¾sªqö5“$ ¯k‚Ï?KÇéSÔÞö…9ùîÆ+&[*ãý}ˆñØ%ô ‹ ‹7û¹¡4“ _%¹vZG.Œi§Ù€9MÍ®¦n[œGÿ”i´ŒLމ4 O±(ÛÆ‚ +åN+ÿãµS‰ë>ODK8OŒÕ™·4J±xW Ĥ?Ì—V•’•bà›¿>È[MÜSS8¯Ý—JQ]â8UWˆZ¨¬¬äW¿ú»víÂb±$sÛóòòxì±ÇX³f n·›¿þë¿&++‹E‹ÑÒÒÂÏ~ö3¢Ñ(÷Ýwß÷!####seäoR™OîñqÎïßËê»î%·âBÉ¿Tg|„½Ï<žgŸæ¦/GNnòýÕ_¸Á€Þ’Bz~!Cm¸GGØôУ³ú_|æDx¯ `±;XyûH¢È¹½»©Xµ£ÕzIÛ$IÂ3>ÎÙ=oãdÛ׿‰F7ÿä–kp³-­ÞÀÒ­Û(¯]• È)¯ ·¼"¹šè¼¼s'Š"×J• јtÐ%$FzºéoibÍ÷ F«•éñqR3³Œõö°ì¦[HËË£ãô)ìÙ9䔕_ÕõØP–Éÿyë, C“„¢qfÙf9èkŠüóÛõÔ¸ð†¢TeÛ“z,.&qH<Ä«• ´*%þHHˆÏùÂQœ=´¹’êºÙÕ<€I«¦ÈaÆ Q%‡¦0hTØÍWeûGÍž={£½½úúzÆÇÇihh ººúc·%äóÑU†£¯¼„Åî@ŒÇ©{û- f Y¥eó~&1ÚÝ5Ý9oªƒÞdfÉæß—=*µšÌ¢b2‹ŠYqËí ´µ2ÔцÎ0;½KŒ'&ö=û4΂BÒó h<|€pÀÏš»ï» w’$ᛚ¤¯¹‘ã¯í gÁ*×Ý€R5ÿdµÑ’BåÚõ,\³Žéñ1ú››ðM»Q©T( Ri´Ÿ:AfI®ÁA”jÅÕ5d–(i=yŒüE‹gDÞ$"¡ J• ¥úÂ#…V¯'«$1Q—˜,«çô›oS¾€Ìâ’äñÚ22¯Yì22ÔÞÊɯãšdÁªÕ´:Í™AùÊ•Iñ;¥J…R¥&ð_*{!ÉUùü¯u¤›õèÕ‰ñt±ƒpË¢\þöõ:ŠÓ,¨ Š–D„ ‰ñzñ"Äå"Sô|áhÒ&o8ŠN­Âi6nÖ±(ˆBXžï˜ó½òQb2™øÖ·¾Å‘#G0›ÍØív²³³ÉÍÍ%''ƒÁ€Ùl¦¸¸˜ööv233ÉÏÏçÿñ9uê;vì ;;›¢¢¢nŒŒŒŒÌçÙA—‘ù ÑëØðà#”,]ŽBqѪ‰ à,,bÃóÎS¿àô®Üô•¯#‰‡ÃÌâÄx×ðgNÓxè‹7l&=/oÎ>ÞUlïë¥ëì™d)¦’¥Ë简ҷÚ͹=»i;uœ”´t¶|éqÙ¹}'v¾‚@ŪÕ(ÕjÄx1C¥Ö\1¯"ÓŠF©äÕs½ç¼o]EÜ/qQÄa³~ì%tdd>O˜¬6*V¯wœ ‚@fI)7íDC¡YmbÑÛÿ÷ßðLc°¤°|Û­”×®ž³2è™çÕÿø~Ï4ñh„ôÜ6=ü(Ùeåè s„ãñ8oüçïïCk0R°¸Šu÷ÜŸÈwÇÉëía÷S¿Ä`¶°hýÆåû"òÆOþAPPµq :cÂN喇;_£pq+n½ÉL<% ¢3™®?‡#;‡ÁŽ6^ú×ÂçždÕw1ÒÓÍÛ¿ú9›z„¬ÒË—S*î®)à»/禊ZǦçmsGu>ÿåù£Üº(î‰ 9¶«‹¼v¾GžØÃ§‹NƒZ¡`ëÂl~´¿™ò­ŠÇV—‘c3rºOÁ_¿zšX\dA†•oÞPN­$‰14`]ɵ—«ú¨X¾|yòÿ*•Š®®./^üz¼v‚>/gÞy ÷è(z„ÂEÕhôz$Ibó#ñæ?aÿögøÂüIrò)èóòü?þ=ikÖ&ÆÛ5N½.¾ÏüÓÓxþYºÏaÁª5,Ýzs"X¸f‹eNÈýÙ=ïÐrü(»Üò VÞ~'EÅ—Œb¹["¡ ±H½ÙÌXo/‡ƒ†ƒûg&âÜÜðÀCôœ¯g÷“¿`Ëc_Áætòû z=ɾ&xëç?ezb SŠšo¢déò™Iƒ÷?þÛNž áЪ7o¡bÕ̶T…‚ÚÛî@EŽ¿ö2Y%%¤ffôûx½¤çå!(.?Ù¢R(¸oi!??ÒÊêB'GºFæi#ðÀŠbþùízÖ—dpª7!¦V)ØPšÅÿyë,<±‡…™©¤›õÄâ?=ØÂ³§:iœ¤}ÌÃêb'¼y¿¿±’xó,áXœ²ôX^„Ó¢çkëðׯž")t˜ÙTž5¯½¢(²cÇÞzë-:;;éë룪ªŠ/~ñ‹¼ð ´´´Ð××Çàà ëÖ­ãž{îá/ÿò/™žžÆãñpþüyî¾ûnÊÊÊxã7¸ï¾ûÈÈÈ`jjŠ¿üË¿D£Ñ°jÕ* æwÞáàÁƒ( V¯^ͲeËP*•¼þúë¼ð (•JÖ®]K~~>22222Œ÷þJªêêêzòóò²E"'* !¾§¾X(柟x’¸(¢Õ¨ùæC÷“Ÿõþê1‡#üÁ fƒµúêç Žž9‡Ççgýò¥è.z`æ$IÂjùd„«~R¢²²òƒwô 300@qqñ%Ûx½^~¶ýyжÞr =K3Qê•aEšŽ&-'kº•V;¯òûi;y£ÕJzn>:³ifÕéÒÒý-ÍSR0Ùl(UêÄjã%Ú½^¦FG°¦;1˜ÍW]²*Ð|ìæÔT WÏ»êmjÀ‘•ƒ!%Að¸\ w¶“žW€ÙnOäC Ñp˜Ó»v2ØÖJåºõUÕ018@ãáT.¦°z A—†ƒûÉ.+'oaâ^s÷vS EÙ°ac Çâè5*DQ"͈DIDâ"Z•IâŠmBÑQQB¥% ýLåˆp,N$G!èÕ*” ˜(ŠÆ% R‰V¥D’fÁH,Qò=+èÀn·_×q‹ÅEÍEŠåÛ·o禛núPë%777s ­“Œ%Ë€Ä zÐëE¡R¢3šæÜǯßÔéyœ‰X4Jã¡d—–aËÈ|ß*ãóF9ùæس²)]¶ü’íbÑ(­-ÉPxå{Ô×ß]Õ½øx|n7J¥¥Zé¾Ì8èoi¢·±ÚÛ¾pI'>èó±÷™'ã"57nÅž•Ã`[ -ÇR{ëسs˜è§ñðA–o»•H(Äoÿé¨Þ¸™ÚÛ¾€B©$èõ2ÜÕ5݉ÉfC¥ÑÌŽþyŸ„ü~b‘0KÊœïƒH(ˆ{lŒÔŒLTj5gêØõËŸqã£_¡tù A`¬á+s³¨ªJ”SŒÆE⢄N­$&Š„£"F­ŠX\$*ŠèÕªd­Z™øˆÆ0jÕÄD‘h\D§V!I¡h<ê®EЩ•Dã"áØ…È¥"1®‘Ę~·: $Æz0Cbf¬«/ÈÓ¾òÊ+ÔÖÖ’9#‰DˆD"úV*Ñh4D"‘YÑ *• ­V‹ÿ¢’ƒÇC]]K–,!==H$B4E4 *UâØÂáp²O­V‹J¥BÅäv…B‘l Á¹çž{ŽÇü_s™Ï ’$1éšà—¿zòoûÛÿøfþ<3ÿúÀeŸ@ºûyî]LM{ÞÛ=^¥RBèìí''Éò}¬6œ:ßȯ^z•?|ô!——^õçÞØwˆ‰©)âñø,Ý–b¡¼¨ÃECcãüâ…W¸÷æ-Wå =SÏö×Þä{ÊÒ ¥\:ÃÓ;Þà/ïë”ä'B„ÁçÛÚÉJOÃj±ðâ[ï`·Y¹iÝj4j5Sn¶¿þK+°º¦…BÏïç‰ç^"‹ñû<€é"ñ›ýů †ÃüÃwþøß2Ÿ7„9Ïå‚BAåÚõWü¤Îh¤jãækÚÛ¥ê¯Ï‡Þl¾¤¸ÕåÐ —Í÷Í_¸hÖk‹ÝŽež²Qj­–UwÜ5k[VIi2GÀl·³ú®{.kR!$…-• “Vü¿þ]çCàÊm½FÅ|Ètj%º÷(sª.êçb><¡Í‚ë%¥P*/«›`0[0˜g«M«Ôjª7mùHìQªÕ¬ºãÎ+¶S©Õ,ºt´Á|f¦Ëç|ä.XHî‚…—m£7™¸õ¿7k[qÍ2Šk–%_§çž_@$¤lÅJºêÏR²lŽìôfóµüÑÆùë‚ktúä¤KÈï§ól©™Y¤Ï¨ÏÇÅB¸*…•v¦ëE“^³Û¨fÆ¢J¡Hæš ‚0ïXT*æŽçw™oL«ÂU‹Üj4šY“_ïr©Ò†¦y´ ´Z-8ŽKö)ºy&s Åu+£(###óYæ²OO“‘ª¥øÁYÛA ?;“P8ŒÍb!#-mV‰²ù˜œö04:Æ¢²’YÛEQ"‹#^CŽ¢Û㥽§“ÁÀî#Ç™2:.yüÑãÏrЯI’ˆÅãsrÐÄäö Û<>Ï¿±‹Ee%ÜwËMxýz‡XY½˜´TPˆæÎ.Jòsg= ÄE1ŸS ..ŠÄ.šù–‘‘‘‘‘ù$£ÑëY¼~#z£ñ“î&‰"ö¬lÊkWb¹Š\üÏ+f³óû˜<•‘‘‘‘ù踬ƒîtعc󆼓ÁÑ1žc^€Š’¢÷µÒ~1o>ŠB¡àk_¼;¹"Åynç.Áରô‹‰Æbú ´Û¬d¤98ÛÜÊcwßAI^.õ­mLy<¤¥ÚˆD¢Dcq zýU?¸|2odddddd®GNŽœœëmF½ÙÌòm·^o3dddddd®™K8è{äùoÏÚ6›„¹º¦Š»¶nÆüž¥‘h”“õüöÍ·‘D‰o>tßWÚ/¦g`ˆÃugؼz%™i‰ð«†¶vî?̺å5¬¨Z„j&-&sÙM—{êå×8ÛÒÆ²Ê j.Àa³^“jô»¹æ;Új•Šâ¼\ŽŸ;/$#ÍN,gbrŠ’¼\Ü^/HV³éªöÅfå·4utÑ7Y¶¤ö|ÂŽUæ“ɧyLZlÿ4Ø(###óIåº@FšƒÕ5UÉ-áH„ºÆf¢±+«'EЊór“+Öñx·×Ëä´‡–ÎnÞ>t”î!¶®]Å£wÝŽ-ÅrEƒ.Þßž£ÇÙ}ô7®Y€kÊÍËïìÅ‘jåk÷ßtÎ&&ÝtôôqÏÍ[Ðë´óöY’Ÿ‡{ÚÃÓ;Þàç¿}™Ü '7¬XFmõ"œG27!v¢N–ªz÷ؼþ­vŽ˜Ý¢²bò³2é&Ë™Îú5‚@(æhÝ9²œéïÉ}¹™’4+g8 †ÈvÎΓ?ÝÐÄî£Ç¯xβÓÓdý3D`l„ÖW_¼Þf|®‰G"L ÑÚÚz½M¹f|>*•ŠC‡]oSf155õ‘ôëjmfº¯çzžÌ'œX(ÈÞöŽ;v½M¹f¦§§éïïG­¾ºõë‰(Š †Þ‘ŒŒŒÌçK†¸WRQ\˜|=>9ÅÐØ8V³™‡î¸ã< ŸŸ—víáLS F½žÜÌ <>?U Ê®É9Åâœ:ßısçÙ²zeò³¶ wlÞ@†Ãžœ ðú<¿sV‹™¥•—¿¹aÅR6­®¥x„ƶ;ºxóàaºùÃGN®Œçge²mýZÒR/8»¿Ÿ®¾~r2˜ ³½ '›¿øÝ¯cK± _¹÷.$Iâtc3uÍÜyã&6k²½V£¦¶jQBÝø¢ÚîA<>[ÖÔÎêÿ [6²eÍÊ+ž7»5åƒÞ2Ÿ Œéרâ.óaó^÷OŸ÷ùؾ}ûGÒ¯½¼"©â.#s)Þ«âþiâ½*îŸdÞUq—‘‘‘‘¹v®JbWEºéfùÍ•³œã‹Ñët¬ZREMeÙéiDcqþö‡?¾&ƒbñ8Nžæ¥]{pØll]·*éÄ* ª”Ͳk`d”]‡Žr¤î,_ºó6 s³/ÀJ%…9ÙædsãÚUt ! P\XÊ.ÈÉ¢ 'kÖ~Î4µÐÒÕÃ][7ayªZ¥"õ"ç8 qº¡™g_{“’ü<Ö-¯™J¯ÕhX³´zVn¯—½ÇN"J"K+g«c§˜M¤\eˆ¼ŒŒŒŒŒŒŒŒŒŒŒŒÌ§“+:è‘h”ƒ'ëxiל;U女BË/F§ÕÌRi½*#"Ñ(}ýŒŒOPרLsG¹™UÿØé3|ã§¿D‘eÊŠ øâ½wÑØPwÑäy¯y~ÓV~ûâzâ‰$9Y~>ÿ±;˜7cÚ%o€• ëO}ûH²Œ,ÉhZ†@q)}m-(ŠŠ$Ih™ µóP¿h1M{w1ÐÞN,"80@ùôéºÁ¹Ã)¨ªaÁ-·£3^¤óÞsº¦‘I¥Ð4 0“Ù‚<öûn§÷½D8ÌHÓÑ4–£‡É¯¨bá­·_´nAx#]×I'“úÅ·­´ÚœŸ$“J‘N&/ZV5›1Y.žÛäíÐ2NîØ†;Cq]ý;ª£·å¹åOÆc(ŠŠb2½­Bz[ÎÑÓ|–†k–`2_üš ]gÏóÏ`£åí.ŠÉDQ]=[{˜ù7ßFÝü…Àèžóï÷Öj†®Ó´w7CÝ]ÌX¾«ÓIxp€í¿{‚®ÓM8ý~îþó¿ÿlA„’· ÐW-^ÈMË—RS^zY.€Ëá`í²¥”\²LmE9ùÅÏàr:Èdãõ¸ß4Óû”êJ~ÿÁ{Éöùø}oë‹A–×Ãê% 'L[+^·‹å æà°Ù™VWƒÇéxÓòÕe¥üùç?EYa>ž·¹§hYQ·\·Œª²ªJJ0›ÞÖŠAxOºÁ©Ý;É-+Ç ýäq¢Á §OQX]‹Íå¢åèa|ùyÔ‹0tƒÃ›6 šÍÄ#a†z:)©ŸÂ`W'’$±ýÉǨhœEAeHá¡ANïÝMó¡ƒtŸ=$+dS={.õ áðzÇ3¦™Pw%uSêêx½î3)¨ª~߃ôp"ÍáÎAªrÝ£¹(tàe0L0ž¢!ßGF38Ø>@EÀM¾Ç>^¦m(ÂP4I}¾›ibàp°}Ê€—ÕÄH,ESï%Y.òÆÎOe8Ý"”Há³[¨¸°™T‚ñ'{FÈè:ù;%>'ªré> ‡Ã´µµ‘——GVÖèÞÐÉd’¶¶6¢Ñ(.—‹¢¢",oF“É$„ÃaœN'EEEX­V à³³“h4Jii)Ö±©TŠöövTU¥°°p4)æûl¨«“í¿û-O%âdÒi¾øïLPnÙÄΧwѺf_#so\;! ¿Z&þ—^ tê´· §“I$YF[Þ•ŒÅØúÛß`¶˜¹é+_O`j/üø˜-¦.]NNi–óòÃD†‡Ñu —Ï?þ^é<ÝĞ矡zμKè†lÿÝoqúý¤b1L &‹…áÞÎ:8þžœ¶lÞ@±pˆáînüùØÆþêšFtdÝÐñde¿ãþ{£D,ÊÙƒèokEQM˜­VtM#8ЇÙf%“NÓÛÚ†ÝíÆ¸äw…¾pœ3}! |xm£³4ÝàTïÝ`j¡h’¦Þ uy^üËx™Ó}A’©~”7 Dìo 6ϋì2IpºoôxŸ}ôøh2͉ž’i€ËFY–³ªÐ9¥c8 @®ÛF‰ßyY»ß\ †a éìì$N“——G^^Þøó™L†“'ORXXˆO$ªAx×Þò[ÓŒúš·SÏE¹Ö._ò¦e²¼²f¾ýd-^·û’£Ø—ðû¸åºe—uL¶ÏËê%‹/ëZÏ_ÿvÔWVP_YqYÇ•"+*ŠjBûò/!¡¨ ŠúúÈ\*™$<8ˆ–N38ö=HÒzì(¡ÁA|¹yœ9°èȹe@ld˜Í=ÌpO7åÓfÐÝ|†Ò©ÓÈ.(äÈæû{YvïÇÑ2Bƒƒh™óëNÐzü(Á<9¹çÕ]ŽÁk›=¾NõŽpÇ÷^æïožÍç®©Ã¤È E“üçK‡9Ýä§Ÿ\F0žâöï¿Ä×nœÉ—¯‚Y• ÆS|ë•£êäÇ.¥"0ñ3ì/žØÉ¿Ü>|·ƒu‡[ùÑ–üÉÊé<0¿ Ý0xæHNuᲚˆ&3¬™Z̪†"¾¿ùmCal&•DZã+˧PŸç½hÛûûûÙ²e O>ù$÷ÝwkÖ¬Á0 ¶lÙÂÞ½{±ÛíÄãq/^Ì¢E‹ÆoȆÁŽ;صk6›x<μyóXºt)Gåù矧¯¯¯~õ«”••‘N§Ù¼y3/¼ð|îsŸÃ}™ŸÙï»ÇCâkˆ‡Ãã¥SImx%•BQ'fÂ.›6wöÅ—ysóÞ³àò­h™ §vï$<4È”k®Å•EoK3CÝ]\sçÝv1tªYs8¶e/ýôGÔÎ]À¬Õ7`w¹I'“|õe$Yfî7/y;â‘ðhp¯eèm> €;;À‘ÍÑux4Bû©˜Ìfêæ/$“JqtóFŽoßÊõŸþ<6§èn>ÃîgŸ&H°ð¶;(®»x×d,Fh onM§pú|ŠŠ‰Ž Óvò8Õ³ç߬Ò×zh=v€L:M_k ‹—°à–Û$‰—ö¿¨f3+ø÷¢çÞÔÔÍ=¶ïÝ¿„›¦— K]Á(óÔ^tÝà‘/\ÇÎs½|á¡-|óžEÜ9«E–è ÅøÇgöNføõgWà²Nü}úÃǶóƒ–`Vž9ÒÊO¶âw/äºúBtÃà—»Îp¨c‡ÅD<•áã ª˜Và矟?ˆÇjFU$zB1þfÍ,Šý“›ƒ& ñÌ3ÏÐÝÝ26câ÷~ï÷ÆoÈíÙ³‡o~ó›|éK_bùòå“ÚVA„ƒw<¬‘Éd®Øv9‚ðFº®Ov>Ô Ã  ˜TÒé0:õ=£iZ&€j2‘UX„Óï'8Ð?v¬Ndxˆt2AÃâ% uu2ÒßGI}²,slÛúÛÛXñÀ'È.*áð¦ TΘIÝ‚ExrsÙüèÃ4,^JNI)Y……¸|~‚ýýãíz­î)‹®a¨§›áÞJê§\öŒž÷ŠËf¢y D_8N¡×Aë`„sa²¯@N‹‰¶¡Ý¡¥~'#QNöŒp¾>"þÄŽuQ›ë%šíßX:C±ÏAM®g|iÐ@$ÁóGÛ¹^Ëjòùísl>ÓC–ÓÊKÇÚùågWà±™ùÏ`Ëénjr<ŒæÁè(xNN%%%ã}722ÂŽ;¸þúë™3g¯¾ú*û÷ïgÊ”)ã#aÁ`;w²xñb.\ȶmÛØ·oÓ§O' 2sæLvìØ1áw  ¾¾žT*5)¯€Ýå¦jÖœ íj>t€L*żµ·Løýé9×L48rɺ†{ºI'd£(ïìϦ®ë vuÒs®™ì¢¢K®á–$ ÅdâØ¶-tŸ=Ãܵ7Ó|ø»üŠÊ eeEaÊ¢k(ª©åÌþ}„‡ɤ҄h;~Œš¹óQÞ0ƒ!HÒrì%õ 8½Žxš­6rK˰ÚÄÃa$YÆÐ5‚ýýXívf,[Á±m[È-«À——O4äÄΔN™F ¨$‰P?;×ý-AÓ2¼òÐϹîÁO]tÁPwÛ÷[V>øiŽoÛŒ/7ŸìÂ"ú;ÚÙöÄãT6Ά±]ËdhÚ»›L*Eâ%TÌœ‰Ãí%<4ÀÆG~…'ƒÝåF–ejæÌcËãÒßÞŽÃí¹äM¿Ã¾¶~VÔà´˜8Ü1D$™&Çõúl¯ÝÌáÎA®o(Äk·p¼{„¡h’,çèû~0šä‰çh 3µÀcÛ€G’iêó}”œdwŽDYw¨•oܳÒ,'ßÛtœ-§{°¨ Ûxñ«k0©2ÿÉwMz€ÞÒÒBKK _üâq¹\>|xü¦mgg'/¿ü2UUUïò,‚ ÂkÞq€®(ʤŒŠM“Ý„5EUÉ)-#ŒF©™3o4ð¢lêt†{z€ÑéÁ-G‘N$0™-ØÝnrJKi;qE5ÑßÖJddwV6Ç貓;·S>½‘âºz[[Ð2ü(ªJõ¬9ì~fM'ñæäÒzä0© u—ÑvâŠi¬îàÈ„º'Cm®‡ÁH’¶¡9.§zGpXÔ _æ+n¢É Íý!мNöŒ`5)äyFËéâñýÍüñÊi F’ô‡”e9)õ;yþhûøì€®‘Š,Q‘íBUdʳ\ì8ÛǶ³=xãÓèëò¼éBÓuùµ·ùùùäåå±}ûöñ/×ýýýȲLAAŠ¢PXXÈáÇ ƒãúàà †aŒOU/((`Ïž= 3þ|zzz&ì)m2™Xºt)7n¤¹¹yÒ^§7ìì`Ǻ'ɯ¬š¸ì{ñ9ÎØñZTu5sç³ü¾ GYÿ‹Ÿy“Ô—e÷?8¬ŽÑ53û÷Ò}ö .U³fS3w>YFÅeE¡zö\</ÿôyêÛßÀÐuæ­½§?ë“Iž@+V’N¥0Û¬èºNOó±(¹ååè©Dœ—~ú#/yeåTÏ™Kù´F,cûVÇÂ!šöîÆl³¡¨*yå•£7ë4Þ–fÑ(ÞœT“‰à@áÁò+*1Y­hé4_y‰Ðà+ø¾Ü<žþî·ÙøðC¬üÄgȯœÌÙ݆{{èïhÇ——Ï@g‰h„ÐÀªiâúÿŽS'9²y#•Õœ9°“»¶3ëúðçN$ñde£( H’RlNM')®«¿ ^3§4À¡Ž!Fb)dI¢©7HžÛŽÃòzù™ÅÙœê 2Ib1)4õŽí´â±YÐtƒÍM]ìjîã³×ÔÒ:8ºœ ¡ÀÇ4ÉÏO¶ž¯ëÜ@¯ÝL‘ÏEU¨ÎñðêÉ.¬cíë‹$pYGGÖ_{O]×éìì$ó‹_ü‚ÞÞ^Ö¬YƒÅb!•JñôÓO³hÑ"Ž92©íAø0yǺ$I¬S„+åýNBôQc2[ðdHı9]Þô*‘áÑlÍ.ŸëØwY–‘e‹ÝŽ$Iä–W`s:©;Ÿt2Ió¡ ITÍš3þš…#+ ÝgÏŒÞ ()@5[•L*5Z·¢`±_·‹š¹óÉ$“4>TΜ=©¿§†|ÛÏöRžåbok?K«ó97ðúTê,‡•)>ö´ô3¥ÀÇÖ3=¬¨-àÜ`€Í}TçxXR¡üÛ‹Gûã"³i U–ÇGÔMª‚Áp4…ÃüúG¸Ý¬Ke.b*I˜•ë÷מSUÃ0H§ÓãeÒéô„2¯ý?N_ôo€$I˜ÍWO†oC×éïhã¹~D$Ê¢[ïÀþ†ËÙûxõ—¿@×FâkXzϽãÓ˜m.&«ïØzãüŠJ‚ýýß¾ »Ûƒ7'$‰þ¶6¬c™Ó ]çäîݺ™e÷}œ’†©H’ÄÍ_þ*Ïþ໬觬xàT¾žCÂ[ZFoË9Šjkém9Gdx˜ÖcG)¬©ð~…‚4,º†Å·ßEdd„Û^eÛ“ GGôóóÇGÊ^®¬,z[[Ð5í’z±ÏIŽKãå,ªÌ¥/§±$‹³}¡ñ2^;VUeýÉNV7Ñ:aNY€³ýa’CCL+ò³°"—ye9üë 0_$'D4™Áª*ãúU!¥iØÍ*7L)澿‚"IÌ*Éž0ò> à¿¿ŸD"Á]wÝ…,ËüÃ?ü999twwc·Û™7ožÐAÞC"+™ ¤â1ÑžœúZÎáôù1Ûl„‡‡Æ§¸X;;q„é:ÓDãò•ä–—óôÿ|›@q)…5µãõš¬6¢Á ©D‚¶Ç(¨®ÿ¢<ÐÞF<"»¨0°Øí vÕ=4H×é&f¬XI^Y9Ï|ï;dST[7©ý$I°¬6Ÿo¬?¬’lFâ)feMБ`qeßÞp”ã]Ãô‡Ü=«b<@O¤5¬&et”\–0«—Î6í°¨¤5ŒnŒ›AòÜ6ÎôÇËã)\VÒe¬Ì·Ùld22c¯o*•º À¶Z­hš6´§Ói øª‚ðKIÆctœ<Áæß<‚j6ãð¸9°þeœ^9¥eãåÎÜ2©xLë±ÝíaÞš›ßQ{ÌV+%õS(©ŸÂâ;î¦õØÑÑ"êÄ ìº¦ÑßÞÆÆ‡"« ìÂbö½ôÉxœykné>ŸaÄÃ!ºÎžaëo#PZÊôk¯ßmI“ ¿¢’ÆëV1ÜÓ͹à ¡ª& ct@Óž]ä”–ÑÓ|Y–™yÝõä•Wðì÷¿ËŒµøróc4“¼É„j2dû“¿¥qÅJê,¿.wv€•~ŠWú›}˜ŸŽŽ"‘YYY˜L¦ eL&Óxø«‘®kô·µ²ãwOðê¯~AQMk¿ôû¬üÄgH'“lxø—Œôõ]p\"åØÖÍœ;|ú…‹/:ëà½b¶Z©ž=gl4ùõ)߉h”ãÛ·ò€$ˬúägXù‰O3oÍÍÙ´C_™PÏPO7gìgï ϱþ?e¦–%w} Oà­÷—$ ~³W¯áÚ{îIÂå÷ST[‡ÃëÃd± šLÔ/XÄÔ%×BVdôLzìÆ„j2£k:º¦!+ ³WßÈìÕk.Øæ,»¸„¥»CÓØýìÓÆë¹Eò+«É)-%ÓÑt’íO>NÙ”inö½f47Å0­Ç²cÝ“XÿS®YÊ”ÅK&ÜÐu ]ËŒnA÷ý0­Ð¦<{¤å9 ° |˜™ßîofQe.–±kª,‘í´Ð>%‘Ö8Ñ=L8‘¾ä¹ªn¢É4§zFˆ¥2ë¦Èç$‘Ö°¨ 6“ŠY‘qZL E/ýÙð~$‰’’B¡}}}„Ãaz{{)**bêÔ©˜ÍfÚÚÚ…B ‹Å&µ½‚ ïz}gËÏèbZ÷=iaÀÉÞ ¹.N³Ê‹'º°™®¯Ë÷• ‚pqÆèôu=£aèsV¯!<{M÷Ì©àáÝgylßYÜV̯¦>ßËó«øëßíA–$ ¼v–Tç]4@7 ƒ={öðä“OròäINœ8Á‘#G¸õÖ[Y¹r%/¾ø"ëׯÇáppà 7àr¹øñ̵×^ˬY³X±bÏ?ÿ<›7oÆf³±zõjœN'_ÿú×ÇH ²dÉ–-[Æ×¿þuzzzˆF£œ9s†;3… ¾o¯O"eÿú—èoocþÍ·R3{V§Ã0X~ÿƒ¼ô³³õ·qãç¿4>zžˆFY÷ßßd¤¯—ŠLY¼ô}ÙÆïüßáx8Ìö§žàôÞÝ”O›ÁìÕ7’=¶Ž}ú²Ø\® ²±zõNíÙ‰Íé$¯¬‚k?v?%õS°¾ƒ< ¯]o:™ Lbw¹è8u wVM{wÓÛÚÂ`W' n¾ÎÓMl|äW,ûØýxsrHÆ¢Ä#aò**™¹òú‹¾7%I"¿²Šÿ$ááÁ ³= ]ç¹~—Á®.dE¦¢q&S—\{A2ÈT"Á³ßÿ"ÃC$cQìnsW¯¡bæ¬ Þ%¢Qâ‘Ù……HÊ›¿–&EæŽYåürçiU䲫åÂ8&YâîÙ|çÕcüËùlÍbVd®©Êã¯á+o¥Äï"Ëi%£üj÷ÖlaGs/½á8¯žêâ3‹kùô¢Zþã¥Ã AÀiås×”’ï±ó±v¾úÈvditTþ‹K˜L¯˜WTTðíoÃ0¨ªªâšk®Á~ÞLŽžž)))™Ôö ‚ |¼«=Oñäáv®­Ì¡Äç@Óñi˜``Q4Ý ­ëÆØ´/EF’FœfƦmJŒ~áUd™xFã»[OóÀœ2æ–dqgc ÿ³¥‰k«rÆïV ‚ðÞ2Y,Xrf­¾‚ÊjÂCƒìX÷$Ç·mAVJêÐ2=çšÁ€Z½aC€IDAT?÷E*gÑ×Ú±m[X|û]ÔÌ]@xhÃ_% IânþòWɤ’Øœ£kZE%,¿ÿA%%8½¾Ñ›©½çš1 >û*gΦ¯­•c[7³è¶;©·€ðð‡7¼B<”à|Z¡Ÿ»c>v³Ê²ÚžøÒõ\VÜVU7^»™—oݳ‡EeIUO}y59n^»™¯Ý؈ÇfF‘%¾~÷Bâ© 6³Ê—Ö“å°’Ò4*²]ãëÈMŠLÀe¥>ÏËÔ?‰ôè:Õ,‡E–x`^5«ê‹Ð ·ÕŒ×~éÌàS¦L¡  `ü1UUñù|”——SYYI*•Âjµâv»‘$‰ÚÚZdytíscc#eee$“I, EQxà&¬Ww8¸\.¾ò•¯L8¿×ë}__'‹ÝÎÜoBQ\þ¬ñ‘\I’È)-åæ/ÿ>¡Á¡ #¼ŠªRRßÀÂ[ïÝOü2¶%{+²¢P:u’Ò7-§šÍÕÔMƒo˜0•Ýd±P7ÿ›3–_Çôå+0[¬˜m6ÌV뛾7|¹yT̘‰r‰µì™Tš¶ãGñrXzÏ}d•Ð~ò8'wmgÍ¿L^y%½-ÍݲM×ðç Iƒ”M›>!éÝI’D^E%yFÅ„¬ê’,SPUMýÂÅdaw{.:=_–eò++±9É--Ãå÷cs¹/­îía¤¯—ËW^2ûþS‹¹®®‹ªp×ÌrVÖâsXXZÏìÒfEaym! Ës±šnšVÊ¢Š\ü ‹*r™Q”…Ój¢±8›¯ß½dZÇnQùü’:²м–猿§­&…l§•b¿“ùå9dt§Å„Ï>úžþ×;æÛÕÁ6Vv²¹Ýnî¾ûnB¡º®ãñx&çŸþô§E^"A„÷È» Ðö 'ÒÌ,ò#Ë/ŸìæÛ›NQà±Q‘íâ+Kªyx_+/žè"™ÑðÚ,|yI5 Ëœì òƒmg8ÓF‘%æ–dñ™•<´§™§Ž´Ó1ãO—׳¢:—ïl:ņ¦^nh(x7Íá"Uå¾÷ã ·Øí¬ÿ¸æÎ{&üìÎÊžÛb·³âãŸÿY’eÏÄc²³/ØsÚlµ²øŽ»Y|ÇÝëž9û’u¿ß,ª2ž­Ý¢*ùFG)­&ëkÓÜeÈu–1ŸWÆ¢*Xœ¯çg}Õ¤à¶^<ȾX6g«IyÛI¤ŽKŒª^lÍhII õõ£[b)ŠrÑ)í¹¹¹­¯¨¨è½îúË¢¨*þü‹Ïº]»œ‡7'oÂã&‹…·Ü~EÚ£šL\û±ûß²œÉb¡vÞüK>± ôR×y)åÓgP>}Æ›–±¹\Üôå¯Nô½99L[ºlüç⺆ñ}Í“±ÕsæqæÀ~*gáÏó¿Õ’$]t˳™+W¿u_šÍ,¸ù¶·,—ŒÇ8{àîìlò++/9Âi1ÁX\i3«ØÆ/ÚÍ*ö±;ÌêxBF«I¡À븠¼¬Hä¹/|ZT¿ãâëkŸ çËrXÉš¼M*.J’$ìvûAùùÞï›p‚ fïjþ^×H‡YÅo7#Š,1Kr÷ÌR¾zm-Ç{‚w-«ëóùÏWOЊó³]Íxm&ýô5|óŽÙœŒ°ñL_½¶ŽÊl_»~ ×T$‰…>öwˆ=×AÞ/Ó¦MCUEѪ˙¡b±Û™¶t¹ååhé4¼EB¶÷C&•Æêt0oÍÍxDÒ2AáäûÒtƒ‘x »YÁ66r$¥~'µ9.ì&…£]#d;,Ì(M¬²º>Ÿm?;ö!Z£üþÒìf•ŸƒÚ\7M}á‹&„+ðØ8Ò52Ù}%‚ ÂEä–•“[V>ÙÍçðx¸æ¼Ù8‚ ‚ðAñŽGÐuctm¹*ËÈçÝi·š”ñµâÑ”†YQ0%gÝ÷S"”H£é6“:>ònUe’iý"wÞG÷ÕßV»AAAáƒè «²ŒÓ¬r.!¥é\lÉT±ÏÎΖ¢I²ìÚ†b¨²DMŽ—U¥e(ÂÌ"ñ´F_8I®ÛŠY•‘¡7•Ž¥ðÚ®þ=wá½"IR4Lë3ONvS>Ò ]ç0'Nœ˜ì¦\¶t:,ËlÙ²e²›2A*•º 3÷{aàÔq‚­ç&ûò„«\&‘à•¦lß¾}²›rÙB¡mmm˜Þ$ÁßÕB×õKæ¼AÞÜ;Ð% r]6v·J¤ñ]${ð¼Ò,ž?ÞÅC»ÏQ—ëæ…]ÜØPÀ¬"+kóxþxVU¡7’ /’à¶EXU¯Ý̦3½zìûìœì ² ì­÷s„ §ÓÉýáNv3á#»¶¼ÆÙï¾"áC­ïè!æ0}úôÉnÊe{ê©§˜7où—™p2Äãq{ì±Én† ÂÒ»ƨ 8Éèí#Q JüÖ4Œg;ÍsÙøÃkk1«2;†YP–ÍW#I·O/æŽÅí!œHó¹…•L/ð¡ÊŸ_X…"I Ç“tcœŒ²¤Rè‚ ‚ ‚ ‡׻JÑ[âs0­ÀËÆÓ}Ì)΢*ÛEU¶küyE–˜’ïeJ¾÷‚cíf•µS Y;¥ð‚çnl(àÆ† Ãà››N²¨<›Š¬··• ‚ \i†a I†aŠÇ‘$ ³Íöî+´LI’.º­ÚŤ“ $YA›ú ±:ì(êÕ?ZA„‰ÞU€nVdî™YÂ_?sˆmçú¹®&ïÝTw-ï ñ·«§MHD'‚ “!‹Ò´{§vï¤~Á"ªçÌcËãb±ÙXtÛ(ç­ŽG" uu’N%I'“ôœk&:rá–¡yULYt &«]×9¼éUzÏ#«°t29¡¬Ùj¥zö\ÜYÙì_ÿ"&³…î³gpx¼(ªB~e5Ûž|œ¹7®¥fîü·¼AA®.ïz“Û€ÓÊï½ø—Ã0H§Óï¸î9…æÜ1M,$|tWÁ¾º‚ ¡6=ú+ÂCCdâÊÊâøŽ­˜Í:O7²¢Ò°è¼¹¹l|ø—´?†Õé$HPPUƒÃëåÌþ½ÔÌ™Çpo±Pˆš¹óȤÓݼ‘ýë_dÑíwÒvâ8¡Á ç·9\×ÕãÊÊFK§Ùò›GpgHF£(f3’¢Ðs®™sG3Ò× @ýŸüY$c1"#ø|~úÚZ9´a=Kï¹—?kÂ9ÎØÇ+¿ú÷üÅ×ðæä^veR)¶<þ(gîŸð¸®idRIV~ò³TÏž‹žÉÀb³cw»/kïõ÷J0ž¢;£ØçÄaýJ¤#Q4Ý Ôï"œLÓ5¥ÈçÀi1—é ÆÈh:%~çƒgûCùXT…P"M÷H”ÂóŽè Ç 'ÒzXǶ« ÆSô„bd;­d9¬\ª[ Ã`xx˜`0ˆ¢(dggc·ÛÇŸD"„B!²³³Éd2twwO86++ ŸÏ7¡ÎP(ÄÈȆaàt:ñù|¤R):;;ÇË(ŠBII Á`¡¡¡ñÇN'999“ò: ‚ |˜¼ëýÍhšÆÈÈÈd_£ð! tA®Éh”x8‚¬(ݺ™½/<‹ÃëÃl³ ‰‡CDƒ#V×P¿p1«?óùç`öê5´9Œb2asºe›ËMôµ¿‘´;Ì‘­›(2“Åʲ{@–/œæ®˜Tâá‘‘a2©4]§›ðÚð Z&C{+M{v¡šÍ”M™†ÝåæÈæ Þ¸ÕŸýÝÅÚÂwî]Ìme(²D_8Î_>±‹`,ͯ?·—uâr‚Oý|#?x` .‹‰§´ñÝÇøÖ=‹¸®~tYß±®a~±³‰½­ý|ãžEL/ô“Ñt¾±þ-ƒadIÂç°ðµÉrX/ÚööövÖ­[ÇÈÈš¦1{öln¸áTU%™Lò›ßü†ƒòÕ¯~]×ùõ¯ Œ~7;|ø0ŸùÌg¸å–[ÆëK§Óüüç?'‹¡( š¦ñàƒ200À?üÃ?0uêTdYÆårñû¿ÿû¬[·Ž-[¶PTT„$IL™2…Ûn» U½¢_-A>ô®è§¨ªªäääLö5 ]]]“ÝA>â Ã` £WVŠªâðzé>s†ºù êé&¯¼‚“;w ‘-“!:2‚–ш…B¤SI ÒɆ¡“J$ÈdÆf™IW^ÁœÖдg7;Ÿ~’“»v\t4²°ª†iË–ãÏ+ÀêpˆFd]×îéÁæt2í-ݺ™ÜÒrü…D‚#œÜ¹ƒ²©S • É2ÅõSh>têÙs&Œ¢G†‡°Ø(ï0Ð’…Š0£qü±èÈ0mÇQ>­‘œÒ2^/µsç³ý©'èè ¸®&aôÕc3³¿m€e5ù8,&wJ¤ 8_Ï)ಚ8Ü9ÈÊúB<63'ºGˆ$ðÛGƒç‘XŠ޵Ó9¥&×c÷”{ÃqòÜ6Jüóè4„˜Vè§e0<þØÙþÛÎöðЧ—c5©|õÑmìiéç†)Å´YÓ4¶lÙ‚×ë峟ý,CCCôôôŒßÌ>yò$‡"M°[]]ÍßýÝßpêÔ)sçÎPçàà »wïæ»ßý.f³™ú§âĉ8NfΜÉ×¾öµñ-3™ Éd’Ûn»µk׊QsA„÷¸Í)‚ oƒaŒô÷(.!“J1ÜÛCAeÞœ\:OŸB’e’ñ(·EUô±ëÙ§ˆ…‚Ù¼‘t2AiÃTT³I’0™ÍãA°XlvºÏœa¤·‡Y«V“ÉdÐ5 €¶ãGéhjbá­·ãÉÉ!‹Ñ~ê› EUÉ)-Ã0 ´t-“¦¯µ…d,Š77Åd"ØßÇH³W߈ÙfÃ0 êæ/`ý/~JOóY\~? DèèÀŸ—jÝ>µãÔIö½øÉXì’}()aÎ k/˜.ÿZ¿íxúwûûXùÉÏàðx€ÑúÜÒ2,6§OQXSû¶ã½—f—8Ø>ÈH<…,Iœê pÙp7}fq§z‚ DXT…S½#øì¼v3ša°õL/Ÿèà®Ùô‡ ÇF—åM-ðÓX”Å£{ÎN8çŠÚ‚ñ4Ïiì`Ç Õ9ò<£ÓÔ§fq mð¢z$a``UUùÎw¾ƒÕjeÍš5˜L&âñ8¿ûÝïX¹r%çΛp\<góæÍ466^0€b·ÛQU•p8ŒÓé$“Éàñxƒœ9s†ÿøÿ •Jqà 70uêT’É$[·neß¾}ø|>Ö®]Keeåûþú ‚ |؈]AÞY–i\y=­G°ïÅ爃ºÎ¡¯R>m:#½=äWT1ÐÙj2ãÏ+`ù}ÒÛÒÂü›n! 1ÐÑÎPW™t†Á®NÌVyå•H²ÌÖ'åÐÆWÈ+¯ dÊ4|¹¯'^5tÁînæÜ°EQ‰…‚¤ ^ÁÅ%@^y%#½=œÜ½ ³Õ‚;; èèÀb³ãÎQ•$‰‚ª–ßÿ ’R`4#}oK3]§O±øŽ»0[GG‡MV îì©Dü’}ãôú• ¿R¤“ v®ûG6mdþÚ[(¬®™0Úêôûqù³èk9‡®i“ —ú„i¶žéaNi€¾pœé…~Ú†"ãeŠ|N$`ÛÙ–ÕÐ6afq6íÃQRí4äûXÝPD2£óŸ/_[þF‹‰PbbŽžáXÍ<þ³Ûf¢¹?|Ñã“É$ýýýxàöîÝË#<¾ð^xá©««» @ojj"‘H0uêT”7ôµÓédùòåüå_þ%ªªRUUEYY,_¾œk¯½–¡¡!¾÷½ïñ'ò'TWWS^^Îìٳٹs'?ûÙÏøƒ?ø1sRá]º ‚ ¼ º®stÓŽmÛBdxˆÂš:ºÎ4‘[VŽ';@󡃬øø'xö{ÿÉjAQUl.÷è´`¼9¹Ø\.Býôœ;KNi.¿‡Û‹$ÉTÍšƒ®éôµ¶ Ëò„)沬 ŠjB–etMÃâpдw7þ‚BÚNG’$—_Gny9/þøL_~þ¼  c2›1Y,ãuÚÝnjç-FG¹{Ï5³ë™udST[469·´œÜÒòËë+Mc¨»‹ÝÏ®£íÄqrËÊ9µg'yå”N:¾œÉlÁd±‡1 }R^WY’¸cf9ßÝt —Õ<:» Ï;!@—%‰›§—òí G)ò:I¤5¦VúhŽ¢Og¸lÈ’„Õ¤`3_þ×+¯ÍÂáøëIׂñÔ„€ý|ªªb³Ù˜3g………hšÆ‰'X¿~=‡æÞ{ïåìÙ³ô÷÷ÓÞÞNII 0:½Ýï÷“—wá®;ÍÍÍìØ±ƒo~ó›Øl6¾õ­o±mÛ6n¼ñF0›Í”••Q^^ÎéÓ§Y½z5ªª¢( .äèÑ£tttˆ]á]º ‚ ¼ ²$1cùu”M›ÎÖßþ†ÂêrËÊɯ¬âȦ ÕÖ‘UPH&Æjw’ŒEé:ÓD2çÐÆWqú¼¸³²‰…BhZ†‘Þ’±(©ì†®S>m¡úZ[Þ²-îìÓi>tOv€Èð0U³f3sÕ Ú°YQÆ× ¨ª ]×1ƦÌÃè¨|"e¤¿—¾ÖVŽlÚ€¬(,¾ýN%¿ügfgó“í§è ưšTw ñÀüª‹–}-cz{{;Éd’ááaÒé4.—‹††öíÛÇðð04551{öl2™ ===̘1c|ô<™L ñù| `·Ûq8¨ªŠ×륿¿ŸcÇŽ100ÀÒ¥KI$ô÷÷ãr¹Ø¶mYYYL:•¾¾>’É$n÷ûŸèOáÃæŠèiMgwÛ šz‰¦ÒÌ)Ébu]v³Â·7bNI{Z %SÌ+ÉfEM.Š,s°sˆŽwMeXXà¦)b/tAaòHÒèqIBQU¬'¥S§±õñGéë%·´ŒcÛ¶ + NŸŸ¡žNîÚAåÌY8=^ ÃÀåÏ"híGQT¼¹¹¸|Y£{§_äï›a uwÑßÞF_{+†þús:™$™ˆcw¹9wø NŸŸ–£‡ Ðu¦‰™+¯§¿½mOü†E·ß‰; ‹¼>*<ÜÛ˶'c ³€òéÔ/\LNqÉ»JÖvæà~v=»Žòé3˜¶dÙEÅÈŠÂ5wÞÃÖ'~ÃŽuO]\Œ';@"%‰UP0>b?LŠÌm3Ëxto3»v6ûÚú/Zæ®Yü`ó þfí,Žt?¾°"—ïn<Î×~·›l‡ ŸÝ‚¦üî` /ï`_Ûß~õ(ûÚ¸gNï;ÇÑ®!ö¶öñÿž;Àõ EÜ9³œ…9üͺ½¨²D®ÛƼ²‹F›Íf–,YÂ3Ï<÷¾õ-R©S¦Láúë¯Ç26K¢¹¹™gŸ}–ë®»—ËEww7‘HÏXMÀºaÃÖ¬YC]]^¯—ï~÷»(ŠÂðð0wÞy'Û·ogÿþýhšFEE3fÌ`Ïž=¬[·Ž—^z‰T*ÅÌ™3)**š´×PáÃâŠèûÛ‡yh÷9VÖæ‘í°ðÈþV‚ñ4Ÿš_ÁóÇ»8;á3 *8Ñâ§»Î2µÀKZÓùÞ–Ó,(Ë&ßcãwœÁiQXQ÷î$‚ ï‘x8D"eæªÕ´=Â`W'Åuõdaè:KÅB×é&½ºžážnt]#·´ŒÁÎN†»»Q-ê,‡cBÝÆØÖd[û’ñ% SÆÇ˜Ó©$mÇŽâôù˜Ó­Š‹i;~œ¦½»XññORT[GgSÇ·o!“JãÏÏG×5†{»)›: Æ’ÔT×R·`1¾Ü\ÜÙÙ˜­¶Ëï„7(¬ªá†Ï~ìâ¬öׯɓ͒;ï¦ç\óøãÁþ>‚ý}L¿vùk¢ß+ê YX‘‹Y ¾¯©Ì#ÛieAE.uy^LŠÌâÊ<¦fa1)Ü<½”™ÅYœ6攨 ¸qZLÌ) ð÷7Ï&’Ìà³›¹}f%~'^»™¯O.¬AœÙN+k¦³´&ß»¶ ð;­8-*¸bmC <|vó%Û^]]Í<@0Äd2‘——7œr÷ÝwãõzÈÊÊⓟü䄽Ïm6]×ñz½|ñ‹_ßÝápŸŸa|îsŸ# !Ë2yyyx<–.]Jmm-ñx‹ÅB^^V«Aáݹ¢z<­±¥¹¯ÍÌôª,±¸"À+M=Ü4et/Ðk«r˜Yä'ÇeåÑý­ôGï ¢ÈÌ)ÃfR)òر™ßÿ?Ü‚ ‚ðFN¯5_ø=T³³ÍFaM-ŠjbÖu×cÒyëÇý¶Ñ€·fÎ<ªfξx…(c Öê,¤bF#v·YQ˜rÍRê.ÆÖ¡2Û.Ö|ñ+£û•«*’$‘SRƬU«Ç®œ9k|*¹%j£²qgì§bÆL<\~?³V^’ôžn“åËËÃw‘5ίÍ@pee#I©D‚s‡a÷xȯ¬š”ô,‡£A­Çf_óíµ™ñŽýÛg·à³–qYMÔçû.(¯È Õ9ž ê·›ûœ<Þïãbü ~‡…·CQòóóÉÏÏ¿èó¯ͯ1›ÍN(c³Ù˜>}:¹¹¹äää\t yaaáE-++»b¯ ÂGÕ ÐSšN_8ɶæ~:ƒ¯oÏ25ß;ºE¨çèÝVE’%Èh:½¡N‹Š},ÉJc‘ïœ]AÞ{¯MaÿÙ<P½I€)É2ÊÛ@-6;›}¹.šÙ\’PM¦‰½áÒØT|«ÓÉôeË9´áâ‘Èèó÷80»^;g2#“É0÷†µx"±Ødðx<¦¼ ‚ “ïŠèª$á´¨Ü<µ?]QI‘ÉèiMÇfºÔˆ¸„Ëb"‘ÖHi:fE¦}8†¦ë”e9/ëü‚ ‚ Œ*¨ª¡ ªf²›1Îåó³òÁOMv3AáªrEç“YM Sò<éádoˆXJãç»›yü`ºa\ôI‚i^ºCqö´ÒŠóõ '8Ø9<Ù}%‚ ‚ ‚ WÌAWd‰å5yt‡üÕÓI¤5¦xùü¢*dI¬Èã™Ù%i4ª,IL/ôpË´"þååcÄR ʲXV;Ù}%‚ \¥N'Øzn²›!\å2‰¯4`ûöí“Ý”Ë …hkkÃô†¥ W#]×q¼!é¡ ‚ðö\ñ,î~»™ß_RÃï/¹pZÝÓ_X6þï\—Ç>½düçOϯäÓó+'»A„€ìÚòg¿ûŠ„µ¾£‡˜_\ÀôéÓ'»)—í©§žbÞ¼y—L w5‰Çã<öØc“Ý A„¤ÉÛtTAAA„q"@A„Ëd¼–GÅ0HÅ㤉÷¬n-“A×õ·]>“J¢¥Óã?ÇÃa´Lf²»è¢tMc¨§›hpd²›"‚ W¥+>Åý­hšF__ßd7C¸Êiš6ÙMA qöÀ~ÎØOõì9”Ϙɮ§‡Ùjeîš›PÔ××'¢Q†{{Ȥ’dR)úÚZ‰ƒÔ™SVNÍœy˜, ]çÄö­ô··áËÏ'“JM(k²X(ŸÞˆËççÈ–¨&3½çš±»=(&•ܲrv=³Ž™+¯§²qÖ¤õ“a´?Fh Ÿšy °ØlD†‡8°þ%:O7á äpãç¿4iíA„«Õ¤芢“#ö?Þ\OOÏd7Aðà ›{˜‘Þ¼9¹øòò9²ef‹…Þ–Ñ$uŠªR=g— ?DOs3&³™T2AnY9v·›ÖcG)›:Ð@?Á~*¦7b§vïdçSO0kõ´=Bh``Âùm.9%e¸ü~â‘{Ÿ§ÏO*CQUf,¿ŽöÇÉ*," P1c&‡L:E2Çj·£Œ%3 ƒL*‰a€Ùj}Ïú)Ó´wÃÝ=XN,v;™tŠÎâáÁþ~zÎ5ãÎÊF5›0[¬£Ùbßgñ´F8‘Âk³`Våñ> ÆSèø’i`<…×nÆ¢*ce ”H¡é>»ù‚ýä# ‰ÄxY‹Å‚Óé¼ /A„Ë3é:pÁAx#ñ_„«A"!8Ðaì}ñYv<õV§,z[ZHÄ"ÄÃa|yùTÍœÍêÏ|Gþù™½úFZŽÆætá äÐvüÙ…Ehé4º¦agöïeçº')ª­ÇŸ—Oâ%Èò…+ÑdE!  ‰…B ÷ŽÞÀtge³ýK¤’ šîçÐ+/£˜LŠŠ±:Ù´‘}/=Ï ŸùEµuÀ`gû^zžt2ÉÂ[ï « ð¢×N&‰GÂ8<†º»±:¸üY$bQ†ººÈ+¯@>ïoyxhî³gˆ ³ù±‡д ¡~¦]»‚·Ü†¬ûŸoáÏËcé=÷au8ß÷×ó™Ã­üñc;øñ'–r}C²$ÑNðÕG¶‘Ìè<ú…ëX²ƒ/þr ÿsß5Ü2£Y’ˆ&øÓßì`(šäáÏ]‡Ë:1³úm߉<°„,‡•gŽ´ò_/æ;[Ìuõ£ýÛÜæ·Ÿ`û™^¾uïb¦úIf4þýÅCîB3 r\VþéÖ¹äºmoûz4McýúõlذL&ƒÝn箻¡{iÓ¦ÿN}ík_#¼þ§Ó<ôÐC455a•••Üÿý´¶¶ò×ý×TTT I‡¿ú«¿â7¿ù /¾ø"@I’hllä@U¯Š¯–‚ XâSTAÞÃ0èìÀåËBV<ÙÙt6¢nþBÂCƒŠKhÚ³›x$‚¬(è†N"ÅÐuR±Z:Chp-“AKgèì 2<Œ//$È))eÎ ki9z˜Í¿y„œ’2dåÂ=¯¼‚Úy qùýØœ’±(’,ƒa0ÔÕ‰ÕéâÚ{îãÈ–MJJÉ*,"áÄŽm”N™J ¤$‰èÈ0;Ÿ~Š¡®N2éëþV|ü“ŠK.8çPw{_x–%w}ŒÝÏ®#»¸„ùkn¦÷\3¯þòç<ð·ÿ³m4Ô5sG‘ŒÅh¼neS§cu8 ±õ·âËÍÅéõ!Iuó°ë™u4,ZBQmݤ¼®‹Êþ¶–Tçã0«îd$ž"ËñúŒ»Yåpç+ê p[Íï¦/Çg³J¤Ùrº›ÞPœòlŒ¥(haVJüo>h ÄïâŒ+4þX0ž¢?’àÛ÷.ÂaQùÄO7p°}ÕSŠÞöµ$ N:Åç>÷9JJJøùÏÎ((( //ÿú¯ÿºdÝÚÚÊ®]»øçþgdYæ¿þë¿8yò$†a0wî\¾öµ¯¨d2‰÷Ýwk×®7ÑAÞC"Iœ ‚ ¼ †a0ÒÛCvq1žìÁþ~rË*È*($AQM$bQlNŠªìïgÏsO 9ºu3}­-8=^<²ªàÍÉÅîv —ážn;;¨;‡×‹ÕáÀêp0ÐÙÁÑ­›±Øí˜,V2©$ƒ]˜­vU%P\‚ÍåB5›ÑÒ)úÛÛHÆcøróPÍf‚ý õtSX]ƒÅî@Ëd8ºe}m-,¸õvnüüï ‡Ùôè¯èh¿àÚM ]gN3ÜӃ˟Å`G;ÉxœÐà H2&‹e¼lϹ³Úð Y…´Ÿ8ÎÎuO2ÐÑŽbRÑ2\YÙÈŠ‚¬(ä–UŒÕÝ„>I¹Ff—fs°}`Æ••…Éb!¿²Š¼ŠJªgÍÅŸWÀé}{IŸüYHÀ`g'f« wÖè”æ®3§Ùÿò‹4,¼†ŠéäWV±ê“Ÿf¤·—­¿}Œ`ÿÄä­Þœ\ÜYÙt4"·¬œà@?áá!zšÏ(*ÁÓßÖF ¸„ÿ$óo¾YUyþÀ3ßýZ:';0>âêòùqù³è=wnÒôò,>»…}­ýô„bô†c4xQä×G…KüN²œVö¶ö3IÐ6aZU‘Ie4öµõS›çáîÙÜ=»},˿ݬb¾È,Í|ÁÚr«I¡Ðë –Êðã­'©Íó0¥ÀwY×¢ª*999£K0ö»›Ù³gc±X˜7o3gÎdÑ¢E<õÔS9rd±tttÐÜÜLOOÍÍÍ ár¹hlldÉ’%466òýïŸŽŽŠ‹‹©¯¯gÍš5X,~ñ‹_0444)¯¡ ‡ɤOqÏè›ÏôñÒÉn>>·œYE~ÚG¢8Ì&RšFžËFF7è ÇIi:E&×mÃfR%ÒD’$ b) “"‘ã²bUGŸë$Éè:6“BŽÓŠÕ$Öº ‚ ë|õeŽlÚ@<¦¨¦–îsgñåä’]Xľ—^`ùýçù}“Õ‚ÉlÁ››‡¢ª8ÜEÅä•W0Ò×KG% Spg°»ÜÈŠBqý±ƒÈŠ2aTZQU$IÂd±"Ë2™LÕl¡iïn<Ù9œ;|Ã0˜~í2rËËyùgÿËÔ¥ËÈ*(À¢ÁÌ f›Èð0Ïÿè{TÏšÃÜ5kÇ3ÏÖÔqãç¿Ä‹?ýëú)×}üSxsrÑuïóoºÕl"»°^©xœ3öqý§??¡Ÿ¦/¿ŽéËV É2Þœ\J¦pbÇv^øñ÷©_¸xÂz³ÕŠÙj% bok¹÷’"ËÜ=»‚Ÿí8…UUIetæ”è vŽ—Qe™›¦•ò£­'ÈsÛ ÅÓ¬jÈåÅch†A$™¦ÔïB‘%Ü6NËå|¿¦k$Æ·œàϯŸÛf¾ì:R©/¾ø"û÷ïçSŸú¥¥¥hšÆÿù?ÿ³y´¾ãdzwï^fÍz=Ó^^_øÂøö·¿ßïÇn·“››ËÌ™3illÄ4–XpÛ¶m?~œµk×"Ë2Š¢àv»inn¦¥¥¿ß?)¯£ ‡ŤèÑd†çOt±«u§ÅD±×ÎM?ØÈmÓ‹ñÚÌ|r^ëŽt°ùl/v³J$™aÍ”îŸ]ÆK'»yx_ óJ³Š%iŽòñ¹,¯Îå{[Os¦?Œ,Iè†Á­Ó‹X]—?ž)UA.‡,IÌ\±ŠŠé3Øþ»'(¨ªÆ_PHÙ´éœØ¾•‚Ê*E%dR)¬'©Dœþ¶VR‰û_~“Å‚Ãã%N&i?y‹½u,ˆm zöb¡ ƒoÙoN.µsçÑvüy„(›:ù7Ýʱm[‹ÍŽ¢Œþ™WTÝÐ1tL:EõìyÌ¿é– ÛÂI’DAu Ëîý8~ý v=ý׿óã£ÝeÓ¦c±PÈÈ0{_x–@q åÓ¦Oh›$I†A"!<Ú&YUè?9æ•øÏ—ñÂñvVä`¹È ýÙ¥Ù|ã•4OjaAy¶±2Š,ãµYè ÇIk:ÝÁ¡xêr›@*£ñýÍÇqZL|aI=^ûå纮³~ýzŽ?ÎW¾ò²³³èííeß¾}¬Zµ Ã0èïï§¢¢‚T*E$Á=¶ÔÂápð/ÿò/$“I¾ñoPUUÅÉ“'aþüù$ †‡‡±ÛíìÞ½¿ßOmm-ÃÃäR)œÎ÷?ÑŸ ‡ͤ蛉»f” _YZCÀiEÓ ò<Ü1£›IŤHüÑò:¦øxòP;¿ÞßÂ}³Ê%‰XJcMCu¹n¾¹é$›ÎôRŸëæ¹ã|óŽÙLÍ÷²¿cˆTFG7&ûjA„,I››‹¬*(ªŠÍé¢aÑ5ìX÷$ýí4,º†Óû÷ + N¯¡înŽnÝDq]=NŸ«Ý'ÃH}m­ÕÖáÎÊF1™• ÿ†A°¯ÁîN»;1ô×G˜3©‰X ›ËÍ©Ý;qz}t=ÍÖ'ãÜ¡ƒ4,^B{+»žyŠykoÆ•M*#[Vε÷ÞÑ ñ’$Q>m:ƽ0Ò×û†öèlò·ôw´ Ž]XÌìÕ7NÈÞN%Ùþäo ì'“ÎP1}S—\‹//BÙd,J"Å—›;ašüûͬ*Ü:£Œ'œãÏWMç`Çà…e™;gVð“í'ù“•Ó9Ñ3<þø¼ò?Þz’}á 6“ŠËfFÓ ^:ÞÁÖ3=íæg;š8Óbí´ž?ÚÎñîawò?Žq]]!…>;?ÛÑÄ­3JùúúÃÀèZõ¥Õùoû:z{{yüñÇ)--åñÇ ªªŠššvíÚ5¾N<‘H0þ|zzzؼy3×_=>Ÿõë׳cÇt]'??Ÿªª*Ξ=Ë+¯¼ÂáÇI§Óäää0cÆ vîÜÉæÍ›ñûý„B!êëë)..ž´×PáÃbÒô Hಚ˜VàÅam^MŽ›G÷·òÃmgˆ$iÝwS’ ,ËAžÛŠ,Iä:­´ EñØLÌ+ÍâßÖg~i6K*s˜WêÇ¢ŠÑsAá½  ö÷3ýÚtib¨§›‚ªêÑ-Ô4ykoÆbwÐ×Ò¡ ëéooCÓ4²ò éi>K_k ªÅBeãL,vû„º ]§£é$;žz‚x$BAeÕøs*™ ³é$N¯™×­"»¨˜ö“'h>t€E·ßEÙÔé´Ÿ<ΩÝ;I%øó Ð4áÞJ¦^48$ËT̘‰®ë²sKHh™4Åuõä””’]X<ºÅÜéDO @åÌYøóòÉ**Âd¶\P48ÐO°¿Ÿ)‹—LÊ–«×Tå1£( ³::Í}vi€\·Ù%E>'&Ef^Y•ÙžÑ ¾±”º<ù;fU&ÏmÇaQ™W–ƒËj&K’ã¶³¤:Ò,'fEF«Èe~y’^›§ÕÄÔB…>+ë Gg.xìd9-|ïþkÏëóB¯ã²®Çårñ•¯|…D"1þX  ??ŸÏþóôôô IùùùÒÓÓƒÉd"Nc2™øÄ'>AGGªªRZZŠÛífêÔ©¸\.†††e™²²2Ë—/§¼¼œH$‚Ýn§¼¼›íío '‚ \ÜÕ 3:ðµ©c]Á8ûÜ!¾²¤–y¥YìmâëN¼~²<þÇL’À0ÀnRùÿVOãHç›Ïöò÷Ïfu}>Ÿ]P‰Ý|U^² ‚ðáðx¹îÁOa±Ù±:ÜñG†Ùn#¸MË šÌã[ŽÙÆX—ÏOq}ýÅ+”$lc{€WÏžCAu î±Lç5sçSÒ0ͤþÚ(³ÍádÙ}"IÒXR:•ÂêZf­º«Ã¬(ÔÎ[@Ù´ã™ß‹ëh9r˜Ê™³qùÞ|°$Ë2Œ¿ÖÎ…·Þ‰¢ªŒšŸÏd¶°ôc£#ôŠª^rd<“JÑ~âf›•¼ŠÊIAÏ÷ØÉ÷Œþ;Ûi%Û9ºµZÀe#à} s\6rÆþí³[XP‘{AyÕ,3»$û‚úÝyfjó¼<¾p¬Ž7*ö½»)âN§“Ù³g_ô¹ÒÒRJKK'¿ÌkåÞŒÝíÁîöŒÿüZµ7’d‡Çó¦çeüÝífæu«ØóⳄpy}ðö®>ýø%IÒEÛüF±pˆ‘¾^f¯¾~Áe·Ex÷|>>ßåeŠA®¬«"ZõXMDSž<ÔÎ'çWLx®ÜïÂo7óÝ-M¸m&"É Š"ñôÑÎKÖ7IñÐÞs”ùœxì&Îö‡™VàÃi¹*.WAÞwÅõ ×7Lv3ƹ³²Yû¥¯Lv3AáªrUD¬59n>³ ’`×C}®AáÃoðô)Â]o½=™ðÑ–ŽÅØÔ|š½{÷NvS.ÛÐÐÝÝÝã{™_Ít]ß7]A¸¢>°ºI‘Ér˜Qäw·Ï¦®éaKsŸÐAAA„I3éIâtFÇiQ‘$‰xZ#­é¸­&Fâ),ªB"­¡VUÁnVñXM,®ÈÁfRÐ ƒH2C2££ÊN‹ŠI‘ÉèáDšŒn Ê‹ŠY‘Ñ ƒXJ#‘Ö0M=0× ƒp"CZÓ‘e ‡YÅ¢~`ïc‚ ‚ ‚ “ ë†Á3G;Ù|¶\3ÕÄ£û[ØÓ6Ä·îœÍ§~¹ƒ…åÙ D’´Ä(ôØù?+è 'ø›çñ?wÏ¥+çGÛÏ0Mb1)Ü1£˜µ …<{¬“ßjGÓu$Ibu]>Ÿš_Á™þ0ÿ³¥‰Ž‘…^;]Çe1°»uí8C4™A–$–TøÄ¼ æIï*AAAáC쪎:eI FbiþßM4Eø«uè ÆQǦ¶‡¾·õ4‹Ë|lV)[›û8Õ¢e(Êw¶œâ¯¯ŸÊµU¹ìjà/×`e]¯žîE7àîž‹nÀ=±—ÅD(‘æß×ç³ +YU›Ïɾóì!”e3³È?ÙÝ!‚ ‚ ‚ |ˆ]Õ:€Ì/ËÆ¬Êølf,ªB4•ÁcñîÅé ÆXV‹Ó¢²¬*—YÅ~Nö„Hg –VæbVd”ecRd´Ó:¥6ÇEŽËJF7XP–Mo8AëP”¶á(Oéà¹ã]è†Aó@„ã=!  ‚ ‚ ‚ WÔU ¿1U›Õ¤£Á:€q^2·dFC×ñuâV“‚Õ¤pTA‘¥ñÇMŠŒI‘‰$3¤5 ³*#Ku´þDZG’à‹‹«ÇGè¿´¸šB¯}²»DAAAø›ôìg&E&­é¤5Í€Ö¡ØÛ>>ÇiÅa1q²7HF7hê ñð¾ìf•´¦Ó<A7 Ú‡cDSêóÝøízB ¢© ±´Æ©Þ…^v³ŠÁ´/U€X.‚ ‚ ‚ \q“yJxl$ÒÏë$ÏmåÌ@Õü¶ŽÏqY¹iJìo¥+˜àDo—EeU]>K«røÁöÓÌ-Éâ`ç0óK³™Qàc(šâ绚yhÏ9f•¶á(59nòÝ6îj,á‡Ûΰ²6®`œã=AþaÍtl&Ûdw• ‚ ‚ ‚ð!6é:@}®‡ûç”Ñ2e$žæ¯­c0šDBâþ9åT¿6’mQùجRJý¬&…f—ã±™¸ov¹.̓¦xYZ™C–ß,¯gý©º‚qês=,¯ÎE–$æ—ecp²7ˆ*KüùÊi E–øì‚*^8ÑEÇH —ÅÄ.«#Çiì.AAA>䮊ÝiQYU›Ñçîn,ÿ·Ã¬rûôâן›ùús7M-¼àØ\—•æ”]x>³ÊÊÚÄ’Êl&…3aú#Iâ)ÿÙÒÄÚ)Ü9£„"¯}²ûHAAA®¸+ 7õ…ùÅžfÜV6“†ӽ¬©/ ±ÈÏÃûZˆ¥2,­Êá—{Αå°PäµÓŠNdHfôÉîAAAAx_\Ñ)Ζæ>TYâ÷®©æËKjXXà¹ã]ØÍ ¿¿´–Ÿínæ©Ã ÇS¬RÈÚ)…d;¬¬®Ï§2Û9Ùý#‚ ‚ ‚ ï‹+:‚žÈh4„ùÝ‘6œî ¥éLÍóJ¤™YäcQy€í8Ã_®œB™ß¦‹q‚ ‚ ‚ ÂGÏ Ð% LŠÂçVñGËêPd Ý0Ðt“"KehŠâ·[è ÅHi:Š$MvŸ‚ ‚ ‚ ÂûîŠNq·ª ÕMý!Ú†£$3:N÷²ålšnðÔ‘2ºÎŸ_×ÀÑ® Ú‡ÑÑÀ>’̈ÑtAAAá#㊎ ›™¥U9œóoëcQe à¶iEéáÉCüõê)Ôæ¸9ÑäÉÃíTœ”g9ùñŽ3ØL ʲ'»AAAኻâYÜK|v¾º´–ÞH‚Œ¦ã³›ÉsÛˆ§4þßÍ3¨Èr¢È÷Î.e(šÂc3ó7Ng8–¢Pl±&‚ ‚ ‚ |D\ñ]–$²²– ›m2›iüg¯ÍŒ×f ÈkûŸ ‚ ‚ ‚ )W<@+†a‹Å&»ÂUÎ0D>AAA>Ü®Š=•JMv3„«œÐAAAø°›ô]–e|>ßd7C¸ÊÅãñÉn‚ ‚ ‚ Â5éº —–Éhd´ ³]×Ñt}Âó’$¡* ’$Mx<‹ÓÜÞAq~^·ë½k¦!IŠüÞîШi¡H»ÍzÁµ(ŠrÑsvööŠD¨.-EU•÷äúÒé Š"#qa;Fo*¾Ö]7èêëCÓ4J ò‘$‰Ö®n ]§¤°ù¼kÑ4T:ƒÙ¤"ŽÆˆÆbdû}¨Êhû/vý‚ ‚ ÂGÃU ÇRŒÄSû¨òë_N  ©/DžÛ†Çjz[u¥5Öá(9N+î·yÌøù 8ѤÔïÀa~w]cp¬g„Êl6Ó»„¦·leÝú üíW¿ÌžCGØ´k/³ $ MÓñº]|êÎ[)ÌËp\[W7ÿöýsëªL¯«<åÃçv#I©tš®Þ>¢™àóx(È Lx,óðºçÈË °fÙ’· $ à Ž04$™J!ËN»œ¬,L¦×ß_š¦±cÿ!¾ûˇÉòùÐ4 «Å‚$ÀñD‚ÛV_ÇÊŠǃØ×¼°q ÛöàËÞ‡ËáÀb6Q›ƒÙty‡ñoßÿ1¹9½±¡( ×Ì™ÅõKÑ?8ÄÀð>û<C#|ê®ÛðyÜüÓw¾OnvŸ¹çN²|ü’$qìôYþã‡?aá¬FªJ‹ØsøŽàc7Ý€Çå¤ 7‡)ÕU"HAAøˆšôÝ0`óÙ>^:ÙÍ?®™N–ãõlïºnð›­Ü2­ˆéooüH<Í?>„Ï,¬äÚª\.çk®n<´çŸ]PIUàÝ:ftƒÏþz'?}`! yžÉèZá,“Ñ8tòûŽg`h„—¶lãøéfN·´2£¾Y–‰DC´tt¹ñúKÖóÔ˯²qçîñŸo_½’å æ¡( #¡0?ÿ'Ïž»à¸ÅsfòÉ;né…Ñ€»»¯Ÿá–/œ‡Ýjm«¦¡ë:&U,Sé4GNæ¥-Ûink§­«›,Ÿ—¿Ÿ%sg±fŵØ,¢ñ8Ûöà¿}Š™SE"ì;rŒÜ@6²,‘Ngèìé£`è’yZ»ºùÑÿAÏ øü}w‘—}Y}®im]ÝdÆþßÖÕuA·ÓÉÒy³X¿m'{!O GøÏþI’ÈhÊðß}èaV,šÏ ×^ƒªª´uuO$9~ú,§[Z †Ât÷õ£é:Ͼº“IeÙü¹4TU!âsAA„¦IÐߌ"KüÞ558-ïO3eYâO—×áÛîM&‹¦kœni%‰âó¸ùßGŸ (/M׉'’È’Dò É5Mãdó9 Ý ¥£“x"Éìi ”`·Z¨«(º½n÷¬½hìõôÞA:zzhéèbÏá£Ìoœ>þœÙd¦¼¸ˆ½GŽ14dPæà‰Sœmm§ª¬„ë-Àfµ ë:{ã§¿y’Š’bV]³ˆ_?õ 7^{ &ÕÄãÏ¿’Ä7¬"‹óʶ,šÝH(¥o`UU±Y,(ŠLJN£(oô Ó708Þ^ŸÛżÆiX-V$ J òñ¹Ý—Ýç#á0G›NS_YÁ±Óg¨*+¡è¼™ ÃÁÇOŸ%w,ðŸZ[ÅÁã'°[-Ø­ζ¶K&™ZS…¸œNJ P…p$Ê‘SMTá÷y˜Z]Íó›¶ IÒè’E&ÛçeÎô)ȲˆÎAA>ª®š=œHóƒm§9Ô5BuÀÅUQè±ó_¯žà®ÆjrÜ"© 0:¨k˜Ÿïj¦+§:ÇÅ/«'à´N¦yd_ ëOõ’í´ðñ9åÌ-õó_<Ê——ÔÐJ°£¥“,s¤{„iù^æ–fñì±NzB >·°’%•9 ÅRüæ@N÷ È7O-äÖiŨïñ]á£Ål2±fÙ–ÍŸË£Ï~L,‘àÿý÷I¦R¤Òi‡Gغ÷ûŽŒ–©*+aîô©ã£Üf“‰’‚ü çÄblÝ»‹ÙÌCO>Myq9Y~TU¡¤0Ÿ'^\Ï¿~ïÇŒ„B@ui n§s<°ìæéõ©)/ãSwÝF[W7N‡ÙS§P]V‚$ÁÓë7²pf#9Y>¾üà½<ûêf;Çåf$&É Kš®O¸ i›víá‘§Ÿ “L¥xæ•M£kÙ{Ö¬Æb¾ð&›nD¢1 ÃÀãrNxÎÚºzØô87¯XFKG'ýƒChš6^æüvæåâó¸IŒÝ(±˜Í¤2™ñ©ñÙ^/9~²,ÓÑÓÃö}Y¾p»!Ë륹½ƒšò2òÙŒ„Bœ8{]»‚ ‚ |”]5ú‘®ÖL)äó*øÏWOðß››øû§s¬'Èuñ»Zxòp;tm-^»™?~b…;Ɍƿ®?FÀaåwÌæåSÝœîÐŒóo/çþ9¥Ì+Íæ‘}­üùSûùþ=óøù®fNõ…ù‡5Ó9Ü5ÌC{šñØLê!’Ì0Kòì±NþùæFîUÊý?ßFO(Î.«c[s?ÿñêq®©Èá•S=ïáï×L'Kóß[Náµ™¹®&ÿ]öˆðQ&Iv›Ã'šØº÷+ÍG7 º{ûynã$ ‘JaµL\2 ñ•OÜÇâY3'Ô÷Êö]¼°i+éLfü±t&ÃË[v`2)¬\¼I’˜Q_KmE#Á.§P$2 ‡Bì>x„h<ŽÝfåî5×3{êL&UUǧõ Ò78Èí«¯#à÷±~ë<.,?&“‰ë—,æWO=KkW~Ÿ‡mû°nýÏ™ÉÀÐ0•%ÅãmÔt¿ÇÃã'¹mõuX-‚¡0eE|åÁûð{&.ùý¿ÿgF‘‹öi0æ_¿÷cb‰8ßùû¿žð\2™äñç^dh$ˆ¬È A"™"—1 (+.Ã`8â¿]GWß©T EQÐtY– 0 óðÓÏñé»nç·Ï¿<:;@QÐu]7H&Sœ<ÛLKGét³YÌÜAAø¨»jô†|‹ËyíÜ3³„ÿÚp‚®ÐèˆU*£s¢7HmŽ‹åÙ¨²Ì꺎vÐ>ãl„¯.­#×eeqy€ê±õãû:Œ&1+ G»G¨Èvòë}-ìndÇ0wÍ(¡6ÇM‰ÏÎôÙç­G’¨ÍqSíÂg·PŸç¡:à¦Èk§±ÈÇ76ž$­ë¬ªË£"ÛIo(A8‘F’ '”˜ìî>à2»öðãG§½»‡ ;vS^\DqA7­X†ª(tôô²m߉Çi­Ý¸GˆÛ»{Ð×3Àë†ÁžCGy칸ñÚkÆ7›L|þÞ;1›L$YûùãO±÷è1þ⋟åš93/™„íµ©÷nçhÒ¶#§šÈd“å ¦ ŒÑ©ÝÀá§Ø¸séL†,¯—‘PרqƒÃÃt÷õãv9'¬A†#œ8{·Ã1áÜñÄ¥ß{Š"“È&‘¼°Œ®„#QÜNÑXœŒ¦Ñ30@"™$‘Lá󸦳·Š’bj+ʰY-<þüKäfgQWY~A½ùÒØr„ò’¢ ÏY-ª+)ÌÍa(äÈ©ÓWîJAAø@¸jt·Å4žíÜi1aèHN/5 ƒX*ƒÓbŸ:^äµq´{„XJÃÀ_§n3)ØÇêˆ$ %Óìn?ÏÇç–!IÌh8­*’v³J]®›Ì¦—ZUÓØúW‹*c«÷µ%¢ÉŒÆÆÓ}¼zº‡\—Ã0ˆ$/™ÌJÞ®D2ÉÖ=û‘$‰¢¼òshº†ª(üè‘ÇI¦R”æ“›Ew_?5奘TŸÛÍ«Ûw±i×ÜN'C#A,f3ÉTŠ’‚üñ÷x<Á®ƒ‡)ÌÍaÕ’E²†;íö ÚcwîáÖUËY¾`î›f7›LhºN(c`x„¦s­ÉŒ.VÓÙÛǯ×=ÇÊÅ ¸qÙ’Éÿ÷¿¿Ï™3X±p>Åù¨ŠB~ Àù÷TU¡ '€ÕbÆ0 Lª‰ÂÜÀ;ÚNAAøð¸jô£ÝAŽvñÛͬ;ÚA‘ÏN¾g4`6)2µ9n~±çM}!œfÏï¤Àm§Èë ×eãñCmüÁÒZvµޝAo,ôòƒmi^<ÙÅš†Bž>ÚÁ¦3}ü×í³¨ËsóôÑfz9Úäé£|iqõeµYbt]j*££é/Ÿìæd_ˆYÅ~t1Š.¼ ª¢PYRÌɳͺÁ‰3çxuûN2šÆ§î¼Gž~ŽSçÎŽDǶ]“øÍs/O$¸eåržzùU¢±³¦6ð܆-¬\¼€#M§Ùºw?wÝx=v›•ë—.âl[;ûÿÆãra·ZH¤RÄbq4]ãKÜ˪k£7É>ï]ü÷/~Í—ÿîÿâu¹°˜ÍÄIâ‰sgLåÓwÝ>º•ZVwÞ°Šÿ}ì †C!þâ ŸÁá°óóßþŽg_ÝÌ’¹³xðö[PÕ‰?V‹…ÅsfbµXøþ„uë7J§Q•œ,?Š,s®£“·lcö´)ÔW–³y÷>¼76«MÓ¹qÙRžyuófL£´°à²û]ÓtzúûY2w6§š3Ì™>•®ž^:{úPÆ’Ð!AgOßøÉ/èêíÃïõðüÆ-d´Ñ‘ðc§Ï’HŽNó/+*àÖU+ÐtT:Ý6ú™öÜÆÍ`@0>ï5WÙ´{åÅ…¶·AA>:®ŠÝiQ¹¡>Ÿ]­|sãIêóÜüÉò:¬ªB™ßÛjbv±Ÿ–¡(úä~J|nŸ^ÂîÖAf•¿¹aÿùÊ >ö³­,«Êeu]³J‰ÏÁ?Ü8l?Í÷·ž¦2ÛÅ_­š‚UUøÒâj~¶«™/>²›l§…Ï-¬¤!ÏCe¶›IÁc5Q赣Ȓ>ûh'³ªPp‘í´òÀÜrþgó)ž;ÞÉÝ3Kø«USøñŽ3Ì.öSpO‹„wÂi·S›Ã±Óg˜ÙPÏ7®"7ÍÀð;¤²´„UK‰Æèèîå?õqê8q¶]7¸qÙ"ö=N¶ßÇm×_GOÿè¾Ûªª2¥ºŠoýí_r¦¥“Íçˆ%XLf²|^Ê‹ )ÎϛЖå ç1wÆTŽŸ>KGw/ÉT‹Ù‚Çí¢¤ |͹¢ÈÌoœ>a‹6Ã0¸ó†UÜ{óü÷„)ò²,SœŸ‡Ýfäª,˜9ÿý·ÿËýã¿Ñ4Íj$ÛçC×uzû¨«(ç¶U+0™T rsðº\,7‡p4ÂÝk¯g`hˆþÁ¡ËÐUU%?'@qA §“Îd¨-/#7ËOIA>wí¡¸ Ÿ’ü|L&•Ê’"¼ífÖoÛ1z¼¢°vÙÒ uÊòë³€‡ÂÜ rs(/.¼  e…oº|@AAøp{ã7Auÿþý-¥%%…ÒU6‚ÓNp¸k„i^¢>ÔzZÓé ÆÉèWvzt_8A$™™ìËAAA>À&}Šû{-žÖH¤5ÜV}‘$ßÜx‚?_Ñ@ŽËúžžg0šÄfR±˜d~²ë,óJ³YQ;Ù—/|Hd2NŸ>=ÙÍAᨦ¦EQ&»‚ ¼ºýdoˆ¦¾7Ôã´ðg+ð;,ïùyÝßʒʦxùÜÂ*l&ñ!(¼wâñ8O½ð¾ŠêÉnŠ0 †Î4á-«@V?tÑ‚ð®¥"a##¸‹Š'»)‚pU:sŠ?./º |@]ßþ’-gûxöX)Mçæ©…\_—O,¥±îH[›û0©2+kò¹®&‹ªðO`yM.»Zˆ¤2Ü9½„²,ßÚt’¦¾0‡»Føââ*~±û_\\ÅcÚ¨ 8ÙÝ:Äp,ÉÌ"?·N+"‘ÖøÞÖ&þ`i-~‡…–¡?Ü~†Z;ƒ`<ÍSG:ØÙÒYUX]—ÏÊÚ<?ØÎvœaû¹~>·°Šc=Afù˜WšÍ¾¶Až<ÜÁP,ImŽ›OΫ Ëaæwž%ßmãPçÑÓò½Ü>£¯Í<ÙÝ/\¥,.y³'»Â$ˆôv“3uªõ½ù#‘žn‚­çÄç£ \B¤[$Ö„²«b úþŽa~µ·…eÕ¹ÜÙX̶f[s?ìoa}S7ŸYPÅÍS yì@+›Ïö!Onçhןž_É´|ÿþÊ1rœVæ•f1-ßÃ}³KIft¶ë'žÖØ×>ĶåÞY¥¬RÈóÇ;9Ù"šÒØÒ§EåöÅÌ(ô±¯}ˆŽ‘-C¾¹é$Só=üñò:zà þí•chêáÛÎpûô"n›^Ì«§{8Ô9<Ù]/‚ ¼†a€ØþQø™°]©a\Þö¥WªìÅÚvy¾G½#‚põ˜ôôDZcû¹~JýÖ4 Ê29N‰t†mÍýÜ1£„YÅ>4ÝàPç;[X\ÀeQY^“KE¶ÝÈå{[ÏÒt|63.«‰<·`< €„„,¯É¥:àÂo7ã°˜è$ȾÔôw nžVÈœR?iMÇaQ‘$è‰qME‹"“ã´â¶š€Ñ¿;Î `7©ÜÙX‚ͤðå%5|êWÛ97A’`iUµ¹nòâi|v ½áºa KÒd¿ ‚ 9†a0ÒÛC2Çd¾ðo¬(¸³²PTÓ„Ç‘-Ç“UXLva’ø ÞGZ&ÃPO7&ËÅ¿Ã(&.Ÿü瑾>ÚN£aábT³™¾¶Vú;Ú©_°ù¼iк¦1ÜÛ‹¢*8¼^$$’‰8ý­­xsópz½ I¨&Ó%Û×Ý|]Ó(¬©%LÆáñb>oFah™ ±pˆ®3MäWTáðxHÆcÈŠ‚ÕáD’$ÒÉ$#}½Ø\.¬v‘‘aFúzÉ))Ålµ!É2ŠX$‡À¤’iºÁH,…Ûj¤ŒèOÍ÷pn0B"­ã³™% Y‘pYMtcd4E–q[F§‡Ëcß´·¸“ê›N.I£S4ÝàRGd4-gûyùd76“BZ×iŒ½é]ÞH‡Y_î¶š€P"}Áù%@×Ñ›¿â» ÂûÊ0 †»»Øüø£¤â1ÂCÃØÝîñÀ#“J¡ëk¾ðe|yùŽGØóü³dSÒ0e<@Ï.,"»¨xBÀ#ïµX(ÈÓÿýM’ñ8Y…ý‘]XÌŠ>Ap Ÿö6:šN±ï¥çIDÂxsó8²iÝÍgQT—ßONI&‹…x$ÂË?û©d’²)Ód™hp„S»wQRß@vQ1›97®E–'NÂÔ5ðЛýV‡wv6=çšÙóü3”Okdîš›Æß_‰h„#›7’ŒÅ ôÓ´g7U³çàÍM¶;ÜÛCù´4,ºEUèhç¹~_^¢$úÚZél:EíÜùØ=ü…4,\,n˜ ‚ð7éº,K8-&¢© iMGUdN÷…Œ¦0«2¡dà ¾c© v³Š"¿w¾²4:ú­ýIŽNuŠ¥xáD³Šü||n‘$óìá7­Ëm3O‡Hd4¬ª2¶õš„Ã<éÝ,‚ œ§§ù,Ûž|œt2AÃ⥼ò‹Ÿ„1H¦’ ´tšL:uÉ:ºÎ4⵩nþBüù"@®¨Ðà áá!ÕDÇ©“-STSÀPW'G¶l$•HàËÍçÈæ$¢Q,vžìG6m ¯¼O “ÅB,d¨§›œ’2±(Ñ‘†{{H'“ÄBAz[2øòòFObœÞ·‡îæ³Ì¹a-Çwlåìý´ŸU‚ HÒtY’XYžÅ@ Êß¿q‚hB玚ÖUæ°¨ÐÃOö6sÿÏwa1)Ü2+gxQd‰L§UoµPd™L§˜™ãæÕÚ.þ⥣üÃM5¤ÛÍ(²DªÍŒÍ¬Ln3ÕfÆjRp[MÜUSÈ?½UK¦ÓšŠl²œ2Vî¬)äÑ=üæx;·ÍÉç÷——ñô‘6¤sãL/ÿµ³XB_·IaV®›ß[RÂ÷Þ®g4cfŽ›¿»y.¶‰íØ'n,È’„ÛfÂf×.‚ |´ gÍÁ0 v<ûéyù(ŠBç™3H=´ ÝÀæt’ˆQŠE#¼þ“G‰¨&‰DœöÓµt6Ô£Å8SSI÷æk]„+ <6ÆÑÍ›È-+Çársæà~B~?’4ÞÝ\×4b‘00ÞÐ +ã]ØÏ,02BJš[J &³«ÝŒ'÷^wF&ñh„‘þ^ÆH÷zÉ-« qæÀ~t-´×b¸§›µ{Íäs?t-ÿzÇ‚ÉÇRmf¾sÛüÉßÿxE%¼¢rò÷Ï.*àú¹\?cj©‡—–0Ǜʟ®ïBvß‚¢Éçï¬)äΚ âý‡›k&ÿí²šøû›jA’£»±íO?‰j2#!‘[VŽ®ë“Ï‡ÆÆPT•¶ÚSä–•ƒZ<ΚÏ<È쫦¬«õÔI¶=ùKŒó^/W¡M¯oyž¼^ &*êȲŒ;#‹DæœiEÁ7Ð=Å…Éb!=/ß`?®ô â‘Áófºñ±ÿÕ—È,,â†G¾„O°ó×O‹„Y}ÿg1[-˜¬VEÁáNEצÓH÷æ ø ùÇÆ Êeç`u8‘Õd&¢ë:v·G0@{;#}=¸3³È«¬"Å“ÎHo7'·oE5[¸÷/þ EUñääÒ×ÚBÉœ6<üÈäöô„Ɖí[éj8ƒ<1§¹Ã:eø‰,ËdäåcLÌ¡nè:ù˜&æYGúŽÙfKöéAø@’ž †A<OvÂ4g\JI~A„Àlµ2ÝT“‰Ão¾Æh¾~rKË0[­èºÎÞŸ# qË~…#o½x˜ÊEKÙüØOÉðŽÏ~j×vÒóò±:ÄÌ•cãS”yË*0 ƒÒšy t´ã­¨ ~ï^âÑ(Šªc÷sÏ2ÐÑŽ357~üÃñ)Ëz{Ðu·~ñ?ȲŒ+#ƒE7ÜLfA!±hdr;u{v‘âIG’db‘èäãû^zOã/qgeÒtøñhpas¦Pµx ýímŒö÷qæÀ~Âþ1œi*.bþ†ëQ'¦1¸ùþ„x,Š=ÅÅé}{8{ì(’,ÑÝÔH~eõdW|ÝЧ´†yë ìîÔóÍA‚c[6³ás¿Ï@G‰xœœ’²dŸ*A„$é º®ëŒž?ÞI.B$è‚ |˜$ 5k¼•Ïd±"+ sV®Æ–’Â齻ɯšAÕÒehñö”Ö~æAÒrr(˜1“ÀÈ03fP½ôl)),X=ÉÞ-á »¤“ÅJiÍ<:êOãÉÍ£fõ:<Þ<Â~?Ñp˜ÂY³1™Í”ÌÇŒå×2ÜÓM44^à­xöœ)ë³¥¸°ØÇo*¹Ó3)¨žÃŠÝå"·¬ E™úUQ5›QÍf²‹K9µs;ƒí¸3³ˆG#ôµµ2:ÐOŠ'¢ÙsÈ*,&³ óDëöùL ¦‰„Ýjw`u:ˆG"”ÎGõ²åX'b’e…ŒüÀb·až¿Ì‚ ‹ñ:Ó<èšFë©XÎñ⎂ W¡¤'芢•••ì0„i®»»;Ù!‚ð1"É2Åsj(œ9 Õ<ž$ÈŠBå¢%T.Z2eY“ÅÊ¢nF–e$ª–,CšXǺI–Á0(œ11w¦p¥Í_7>µÉl¦|Á"dYÆ[^@iͼ)ËV-¿ÉT4kÎ%­»bá"JçÍG’%$$T“é=¯éüÊjrKË9´é ŠçÌÕžÁŠ»ïEVÕñ÷ÊûP2·†’¹ŸÝÆl±0oí: $ ]GQ•Éyßß­»©‘öºZæ­]7™ü ‚ \m’ž  ‚ B2(ªŠ¢^ÚŸAYQÎýû¼äCzçß"1>"ç'žç_—ÅdB1™.iY‡ÛÍÊO߇dY–‘dÕlþðwX’&o¢ý.®ô Ö=øðø|ê‚ W)‘  ‚ ‚ ï[z^>éyùÉc’3-í‚iäA®6"A„i*‹èëIvBh±Á>”+Ñ%W¹ðÈñPP|> Â{ÐâbŠ9A¸š}"tƒñA‚0%B!F[Î&; ! á0©Ãý¨—ØýúÃÖØØHQQæ$ß ¨­­eÖ¬YIadd„P(D^^^Rãhii!;;»ÝžÔ8¦Ã9Qý~‘iƒ½IÙ~(¢¯¯’’’¤‡®®.©©©Ic:\Ñh”ŽŽÊË“[®¯¯EQÈÈÈHn"A„«Ú´HÐcšÎ¶A¶6ôÓtÖWæ°ª<‹p\ã­ú^´aR$®+ÍâÚÒLž?ÞAVŠ•õU94 úyþx_YUM]¯Mõ=Œ„£ÌÊIå¶9ù8-*¿<ØBŽËÆÑŽa6VçRšáäÓ=ïÆ¢*¬©ÈfyI&fEæx×(/ì@–Ç·¹ël?__7€½-ƒìhî#šÐXR”ÁºÊæiq…kjùË®MvBD|#¬_¿>iÉØSO=ÅêÕ«“úÅß0 ÚÛ۹馛’@}}=½½½¬^½:©q¼ð ,]º”ÜÜܤÆ1ÎIkk+§OŸæÆoLÊö»»»9xð`ÒömÛðz½TUU%5ŽépMŒŒŒ°iÓ¦¤Ç±wï^l6óæÍKjýýýIݾ —çý•Ù¼BNvò‹ý-”¦;YXàá?vœaÛÏŸèàÅS¬©ÈfŽ7•Ƕ°·u€p<Á/¶L¾~ë™>ü´ ytw#9.+·ÌÊçPû?ÚÓˆaÀö¦>~¼§‘¼nÏïdó™ÖWåR–žÂã‡Z9Õ3J\×ùû7N`V–gðÒ©~±ÿ,šn°·e§Ž´2Ç›Êʲl^=ÕÅ˧:3€ ‚ ‚ ‚ —+éM¿Ñ„Æ®³ý丬Ü=¯“"“ç¶c`°­±›g峦"›„nÐ4`÷ÙZRÊÏöŸ¥aÀOžÛÆŽæ>>=¿ˆ½­Ä4eÅXT…›gåñýíg¸wA1 ÒÙP•ƒ$I|jNוebQe\Vo7õÑ1zÇÂüÑŠ œfÑ„Î[õ½c ¶7õ‘ë²1;'Y–XPàaGóªrIwˆé<„+KK$Œ cw¹‘$‰x4Šj6Ãáv_P=7  p¤¥!Ë ‰X MK`s¦L®OQ”sU¨?B±px¼‚öyÕ‚uM>üªÄïÅ0 b‘²,OVEÖ´Ñ`ßà ý=¸Ó3ȯª 02Œ¬(XNb‘0ZB›²>“ÅŒÉbEzW5ïážn†zº)™=÷ÊT8¾BÚ}>†“x÷Ñ0 bšÆÙ‘‘¤‡¾@€‘H$éqb1ºü~™Oú£t¥Î‰7%k’†t|þX,é×ÄH$‚`JrÓá}ðùþŽs¢È2EnwRãA¸Iÿk˜Ð Q\VVÓøó%Eé´ F5²YB‘%ÒìfÎôùH±˜¨ÉKcgs?³rÜÀ‚ü4?ÔʱÎaþᓓ럗—†¡ÉÌOµ#I ]ç@Û¯Ôv‘Ðub †~?·Ì6FpYͤXƇb³"‰k ¢ë¡¡lrý <¢]øH uwñ›ý7üþ—ˆ4:ÀœUkÙòËŸqÓÿˆ¼ŠÊÉe ]çè[›8±}+ 6Þˆ;3“Žv;;¸æö»éíÅ?UA7 "q ûÄqe¢ek(ãù,+ÎàE%ôŽ…ùÛ×O`SU¢ „n Êc‘8ša *2‹Ê=ó ùƒë*Pe™¸¦£Võ£iñ>¹t]Ç?4DhlŒŽ6»»è<3žD†Çƨ߿‡Þ–fÜ™”Î[ÀPW'G‘SZF[íI¢¡ ›¾¶¶>þ ±9¥e“ëüÔíÞENI)i9¹ìúõÓ„ü~`¼š<¨3 áÎÈ`é-·‘‘_†A_K »_ø5ù̾v%ùÕ3&[‘u]§áà~ ªgàp§N<¦Ñpèv·›²šù„ý~6ýô'Xv¬'îŒ <Þñ‚\þá!¾ö ƒÝ]熡ŨY½Žšµë/h±¾±pß@?] „ƒò*«PT•ážn:Ú'[ÍÓóòî馫±Á®N£#zã5Î?Š;3‹—]K0ÔÝÉpO†~ñ›Aß(G7oB1Ùœ)¬Êxßà ­'S¹h)îÌÌ÷Œwxx˜044DAA .ÄápÐÚÚÊþýû‰Çã”––2þ|l¶©Iÿàà o¿ý6±XŒòòræÎ‹a<õÔSS–{à¦ÕKI’¸þ†ø‹þ0©qäçå1;'‡gß~;©q,]º”}û÷ÓÚ“ÜÊå7ÜpßHò9y7Ã0èééáÀª««Y´h ìÞ½{r9¯×ËúõëQÎ륇9~ü8ÍÍ͘L&–,YBqq1###8p€ÁÁAòòòX´hNçï¾ùQš3gÑîn9“Ô8¦Ã5áp:¹îºëø×§ŸNjÉ® ÂÇCÒt‹*33ÇÍ3GÛ¨íõ‘n·ð¯[OsãL/e)liècYq&CÁ(§º}¬ªÈÂnV™ëMåW‡[ékŽðûËËpZTf{SÙÜÐËáŽa¤óÂÉzýþxEå”mjºALÓqšU4Ý`OË Í~¢ ò¬üÑ8Ú†˜™ãbKÃx÷v§YeF¶›­½4ÈuÙxêH+»…;k ?@’ —*0<̶_ý’ИS;·ø1[íôžm&ÑÝØÈpO¹eå¤çå³çùßÐs¶ ÿð’$ø1t›ÓIùÂEØS\´Ÿ®#4æ#5+‹ÆC9ºùMÖ~ös˜­VjÖ®'‹_•D4ÊÂ7"+*f›õÜ<³’Dvq ó×_ÏÉí[ÙôóŸ°øÆ[™»z #==ìúÍ3ÜúÇÿk2A7WF¥5óèin"Ý›G,|Îîr3ãšëˆƒç‹!¾þ ±pøÏÆ#‡8ôú+ õtÓßÖJwS#’$ ñ b:V»ƒšµëPÍf|}ä––ÑÛÚÂÉÛ&Žé’º¦;¿UÓ0ð 3ÜÓ Œ÷|°ØíÍšy"yNËÊÆ™šÊè@?u»wábí¿wÑXc±Ï=÷ñxœ²²28@8fÙ²eüøÇ?¦¦¦·ÛÍ+¯¼‚ÙlfáÂ…“7-4Mãg?û999ddd°yófÌf3¹¹¹lÚ´‰‡~x²R¼œ„¡‚ðaðûý¼øâ‹8ÒÓÓyùå—©¨¨ ¶¶–ÖÖVV¬X,Ëx<ž)7ôt]çðáÃìØ±ƒyóæ1<<ÌÏþs¾üå/óÊ+¯¨¨¨àÈ‘#ƒAn¼ñFñ>A®¸¤'è²$q]Y­ÃA¾ùÒQâšÁÆê\V”e1+×Íw5rÏOwbR$ÖUåp}u.ª,‘á´PäqÐ2 "3E–XïáS³óùÎæ:ü‘8¥NþðºJdIB•%dyüsVŠ•ª½üt3¿<Ô 3¼Ü2;Gw71/ÏÃï-)ã[¯#Ãiayq&6“Š*ËÜ8ÓË@0Ÿ=w˜¸¦3?ßÃ#˳Er.\q£ý½ôNL¹Ösö,Hpÿ_þ ‘`¿~šå·ÝANiªÉH8ÓÒ0™-蚆Õá@K$Žù•ñ±è=ÍMt5ž¡jÉR޼õ™…EΘj6S2§o™j8x€h8Dùü…SÆŒ¿Ã‘šÊÌå×R2{.‡’’î™|®~ÿ0ÆÒóiñ8=ÍMô¶4“îÍçÚ;î&au8'»ÎXìv ªgLym_[+¦m[°¹\S×uC×ëq”dY–É.*aÎÊ5œØ¾•O:• #«*ƒóQ³jùùd•âIçÚ;î& òôwþ‘œâR"ÁÙÅ%dä’ˆí??Ž³Ç±íÉÇe…x,F<åð›¯#ɺ¦1ýõT,ZBz®—â¹s9¾m ×Þñi,©ÚÞÛÛK[[Ÿýìg©¨¨@UUNžgB×¹g~!‡…·{I·›±¨2V“…¯®™ÁW×Ì@>Jƒ¸Ó3ü¸<é(&•h(Äh‰XŒ‘¾>ÕDz^®ôŒñ1âV+U3HÄc ÷tã-¯` ³ƒ3û÷Çñ–UàÉñâb°«‹šÕëPͬء¬(8RS™·nÃäcíœÚ¹E7Ü4Ùrü-‘ åø1:N×a¶Ù(š9›Š…‹ðxó&n2¼·X8L<ÆávOù²½û¹g9¾m3Zü½¿°Î[·åŸºƒŒü|ì))´Õ"#¿€×®@5™h>v„3P¶`!¹ç Ð5=/ü†ˆ?Àœ«9s`-'ŽÓÝÔˆ¡ëøGFÈ)>÷¹FÉ..åúÏÔwÝœøÕ?ýÝdë¿$˔ΙDZ-›i«=Iåâ¥Ä,Ë2†a˜ø".Ë2###¨ªÊÆéïï§®®ŽÖ¯_?%Ñîìì$;;ëĸøÜÜ\Ž9ÂØØÃÃÃ|ûÛßfllŒŠŠ y䑤ϱýn£££ÉX,F8–ü9…ýÉOŦÇ9y·ÖÖVÆÆÆøáHOOeee<ôÐC†ÁÞ½{9r亮³~ýz6n܈iâ3FQ”Éù»‰uuu¤¦¦’ŸŸahu8$IÂçóá÷û§U‚ …Hþ•9=® MÓðO ËJ¦ðeôìAxÇ´HЧøï]8-*•Y.µqûÜD#¹Lá@€Üò :ÚYuïgè¨?Í¡7^# áø¶ÍXlvßt ®ô `|¬w4D‹Ç1 ƒÑ~l' 6Þ@wS#ñhŒX$LÈïG5©“¯»\†a0Ú×Ëžçƒ#5•Y×­¼`³ÕJÍšuÏ™KwS#] gØö«Çq¸SYuïýxË+ßsýñH„D"Åî˜òxÅÂŤ{½¿µ=Ý›jžørn2‘WQEJzúxïà äó¡˜TLçÅíïcÿ+/q|ÛVU¡nÏnÂþ1ò«fîõ¢Åãœ=yü‚m rzïìïjé÷‘Uxîæ +#EQé½øØâ¬¬,ÊÊÊxë­·hoo§®®ŽØD¨ë:'OždÇŽ¸Ýî Æëº>å&†,ËèºNvv6_úÒ—X°`ñxœüÇäСC¬\¹’餺ª ’<¾Öív“c³AooRã(*,äÄÀ$9¨®®†úú¤Æðn¡PI’øÜç>‡Åbáoÿöo©­­eÁ‚Ìš5‹™3gÒØØÈO~òÊËË/' …Ø·o{÷îåᇦ  €òòr¶mÛFOO “ï¹é$77—@(>_Rã˜ׄÅb¡Äë…––Ë_ÙeÈÊÊš¼$‚ðA‰ý]$àëg²çìh‚fxYUžuÙë„ËQ±h1o.oÿê ¬Ëo»ƒD,FÇ™zö¾ð®½ãn²‹K°Ÿ7…Œ$ÉÈŠ2%aîíæøÛ[ÉÈ+ xöì.¾ÁA$IþP¦‹G£´œ8ƉíÛˆ†B¬¸û>¬Ç… J‡ƒÂ³(œ1‹H0@_[+¾þ>l)®ßºX4‚¬È´´ç””’SRÊ¥2ÛlÌßp=²$!+*!Ÿ¶ÚSxr½“SÑ uuô’’–†3-O:yy´œ8NgCýxw÷¢"¡ ‘`³Õ†ÝåB×4 “š™Åhv—›ÀÈé^ïäúU³I–.Z©Àl6sûí·sôèQB¡999¨ªJ"‘ ««‹õë×síµ×òøã³{÷nÊÊÊ&Ç•§¦¦â;ïËûØØN§§ÓɼyópMÜ<(--¥³³ó²Ïÿ‡I’$V¯Y“ô=77—ꜜ¤'èó,`ÇþýIOÐ׬^ôdìÝ<iiidee!IÅÅÅôöö2kÖ,Ìf3f³™‚‚RSSšòÚP(ÄæÍ›immåž{l¼çÌ-·ÜÂÑ£G äää iÚ´ëaR]]M »;é út¸&ìv;K–,Iz‚þÎõ#‚p9D‚~EiŠ:.E‚ð!9¿ÅU’äÉÖîÑ“ WF&ž\ïÔ†®£çô´ì\ÖÜÿ Š¢püí-8Ó<˜­V ]'>Qœ­çl3 ÷O¶¼w56 %lûÕã“ݧg,¿–œÒ2$I"èóÑÙPO[+õ§À[^ÁòÛî$·´”ñÛ^¿Õá¤hælŒ³& ŒŽpøÍ×Ñâñ)Ëtvõqðµ—qge3cÙ5ãåß'I’0™L„~ºkOrrûÛ t´³âÓ÷bK9— çUV‘‘_Àë?ywz×Þùiš¦õÔIæ®\Míî”/XÈ™ûùý¤¤g %˜­VrKËi=u‚o`篟¦bá"ÂÁþááÉõÇ£ ÝÀl¹øüÖñxœM›6QUUÅ’%Kxâ‰'ÈÊÊ"‹ñ?ÿó?|õ«_%%%…P(„Ãá ‹ÑØØ8Ù  …¨­­%??ŸÓ§OSSSÃÙ³gÙ¶m_úÒ—ˆF£ÔÖÖò…/|áŠ^Âp¥”””‡ihh ++‹††–/_Λo¾‰Éd⦛n¢¥¥…¡¡!¼^/mmm(Š‚×ë娱cœ={–Ûo¿¢‰iÞ‰[¶l¡¸¸˜%K–ðÔSO‘‘‘AZÚŸÖQA.UÒôD"Ao’[&„éÏ“Íãc·oÛÌÑÍoóáâí_=ŽÍéÄ™æaãÃàÉõ2ýFšŽ!<æG5™ˆ†B´Õž$0:JgÃ*.!³ MÓéïb=>Yñèx‹nZN6à蟌#z^+ÞpO7û_y-#ÆLV~ú>²‹ŠQ-–÷˜MBUM-J6¥Âr"19Æþ|ŠªP0c‘Pú'o,|§ví`ßKÏ ‡É--cãç¡ ªzrv¿y`u8Q…àØ(»ž{†–Ç™½b%%5ó8²ùMš%ì÷c2›ñ ôsä­7(™;ŸâÙsh8tÕd"-;‡p ÀânfßKÏS±h Þò †{ºÑ 2 /£ªª”——óøãX¸p!×_=n·›åË—ó7ó7$ JKK¹ë®»‡Ã<ÿüóÜ{ï½”••ñ'ò'üèG?"‰°téR–,Y‚ÉdâСC|ík_CUUV­ZEMMÍGr _*Ã0øÅ/~‘ì0hll$ØÜœì0xýõ×é×ͪdøù48'ï–››ËM7ÝÄýׇY¹r%‹-"==§Ÿ~šW_}·ÛÍ<@aa!O<ñv»n¸arˆÈ¡C‡$‰ÌÌL~øaÊÊÊxòÉ'ñù|ÌŸ?ŸÛo¿}Úu]Þµ{7švù+ºLÓášðŽò /$; :„ÕjeöìÙÉE„«XÒtUUÉÏÏOvÂ4×ÝÝì’Îl±â-¯ Ý›‡>Ñm==/Ÿ‚óZíÝÃ]ä–•ƒ$áè§pæ,2òòi?]G[í)dE¦zé2²ŠŠ°»Üä””Òqæ4s׬£hÖlŠf]ú— oyŸù«o£˜L—4'¹¢*,ºá&²ŠŠër®ŒLnûòŸ]ÑcZ0c&®ŒLÒ²sHñx~ë²ùÄ£Q ]cíQ¾`!Z"Áì«ûT/YFŠ'‘Þò+«™¿n=æ‰*ô»ƒË®a¸§‡ê¥Ëéí!£k-'c²XÉ«¼xÕ_I’X¸p! .¼à¹;;î¸ã‚Çÿò/ÿròß³gÏæ{ßûÞËüáþáoÝß……D’˜H†ÚÙɆ$wMqD£lø×Ç£¿Ÿ%™™,¬ã‡Eíè¸"ç$ÍjýÀ¯5™L¬]»–µk×Ny¼¢¢‚o}ë[,ÿàƒNþûK_ú_úÒ—.ºÞyóæ½ç6óRRØ•ÜáoùÃäZ,xÉíñw¥®‰÷ÃãbÃoù>鹌kìRÅãñÉ!F‚ ”ø„«„;3“›¿ôǘ,–)-¼Sµx)•‹– +  O>>Ãõ]~Á†ëÙõ›gh«=EÅÂÅ—”h¿CyŸ_FdE¥fíú$ÉsÜ™¸32/iÙkïü4’$¡šÍ“ÇÇdõ}~ÊrÙ%¥dŸ#ÃàÖ?þ Šj¿aÂx½æ‘$™Þ–³´Õžbîê5˜?‚/ïÇcwÜAjjjRcØ»w/ß]¾<©1ô÷÷ã÷û“>¶ôÔ©SNÖ H–½{÷ò$Ÿ“é`cY?¸í¶¤ÆÐÔÔ„Ëf²¦€IDATå"+É7 ¦Ã5‡9sæÌo½©òQðz½Ó®§… W‘  ÂUB’å‹Î“ý^˾Ÿ‰JçÍGVÒ²s’½›ÓÖ¥&Ð’$!½sE’PTÓäãç–ïÞou:¹æ¶;ɯS7^Ìòifee%=¦M—ÙépN„qåååɘׄÍfKzrLÖ1A¸"A‹ÍNÕ’eÉã'53‹ÔÌä'‚ ‚ Âô tA˜¦´DœÈèH²Ã’@O$" &eûÑh”ááaâI.Jöì³ÏòéO:©1¼Sý{Ñ¢EIcÛ¶mÌ™3‡ŒŒŒ¤Æ1ΉÏç#300”펎F“¶ýwŸ/©ÛáòL‹=®éïaoË q]çš’Lzx«¾—¬ óó=Ä:ÛûðºmÌÎMå;¨Îv1ˆ²±:‡Ž‘;›û‰j:Ei6Tç’j3Ñ2d[c/á^—OÍÉÇe5Ñ>d{c?]caÒífV–gQ™åz_ãváJ²yÒ)^µ.ÙaIÐôæ+Üzë­Ø/±æÀ‡í©§žâ†nHz‘¸#Gް`Á‚¤Æ044D HúØÒ††¼^/N§3©qL‡sÒÚÚÊéÓ§¹ñÆ“²ýîîn<ÈmI.×ÖÖ†Óé$===©qL‡k"‰pöìYfΜ™Ô8ºººPU•ììì¤ÆñóŸÿ<©ÛáòÈ—¿ŠËW×ëãgûÎbRdÒ¾¿½žCíÃlièåX׺aIhlièåTÏ(ßÛ^Ïö¦~²R¬ŒEüï·jIµ›©Êr±¯u×ëº Äøg‹Ä™‘íæD÷(ÿ±ã h‚ǵÐ<ägvŽ›@4Á“‡Zé _ÞŽ‚ šdéHOOOzrPYY™ôä¦Ç9Æ%=9‡éqMX­Ö¤'çyyyIOÎA¸ú%½=–ÐÙÝ2€ËjâÅÅXT¯Ë†Ãüޡɲ„UU¸®4“µÙœòÓå ³¬(ƒ‚4;×”d`Vu Ñ1äkkgಚ¨ÌLá÷µgxé ±¸0ƒ•åY¬(Ë"¦é¤ÙÅÔÂÇŸ®ëhŸ&¢¨S¦pÓuCÓ0 Ã0YV0ÃÐÁ0PLfdyê½>]ÓЉs«ž¨`>¾Ž‰Çd EQ‘dÃ0HÄãpÞó²¢ Ë2º®#+ÊE§~Ó5‘ÞT³y|º4IÂÐut]ŸœþÍ0 ⑊IE–4-ÆÔõȪzÑ}êî Ý›÷;§¶û¸ ÄbÈÑhRc0±$yâ'q¹+ºL¦‰ŒË]ÑeºÔs¢Ê2öñtSq]g,ÉïÐ'~’i:¼O¥‰ãq©#¯mªŠé |¦kš´áI‚ |<$=Ak:=¾0‡™Ëøó չĴßþ'Ǣʦ9Pd‰òŒ>»¸˜?áÅ Ï|÷Ÿ˜¿þz2 ÙÿÊ èšŽ4k<eé-·SZ3oÊqŠG#xíe" ‹o¼“Å€ÅîÀ™ù¾ç¿ÚÌùïÿf4‰Û—€/?Lòq˜äÛ’ÇíÀ~ 'Éqü!ðß—°Üš’¶>ôP’£½r?q‚OŸ8‘ÔÖ]À™$‹K½&®¤4àzà©K\þ·ßÎC55z˜6S¾ ‚põJú7LI–°™"q„n ÈÝ£! @’Î5¨iºA,q~Ò.!Ÿ×¢öùeeÜ2+£#cƒ,Øp=¶”ñë=ðsâí­FG'—‹Ç¢´œ<Îñm›QT‡Ûj2sä­7Ççd·ÙIËÉa¨«s—|AAÁ”׆ÃaêëëéïïGQæÌ™Cvv6G¥µµur¹ŠŠ fΜyAOAAø°%ý/E‘©ÎvÓ4èçLß=¾0ßÛ~†ú¾1f•_˜„fÐ3¦a`ì¢ë8Ý7Æv4`7«Ü0#—……éô"ÌÈqã‹ÄÙ×2H,¡³«¹Ÿîn¤w,Ì/¶Ð8àgYq7Îð¢ë0Iv'FAøhØ]nf]·’®gÁ†ë™½bv×Ô›Sá@€¡î.ª–,Ã[QI, rK˘³b`WQEjÖøx»Î¶>ñƒÀxwy‹ÝŽÅv®Ð™b2a±Û1[§&‘©YÙ¤åäÐÙp³ÕÆšÏ<ȬëV2ÒÓM8à§v׉xœÑþ~<9¹T-YFÅ‚E¤x<¤åäâJOG’$rÊÊq¸S ¦»©7–“Ç9³‰xœX8L4"cèçnüºÎpO7 õt75Å•™IiÍ|Ê, rñÊjæc±;ˆƒl}â1Î?zEÏU"‘àå—_¦®®MÓ8|ø0Û¶m#‹ñæ›orèÐ!"‘o¿ý6gÏž2Œ`ÇŽ¼øâ‹¼üòË ã…Ï{ì1áþç&Ÿ›NV¬X‘ìÈÎÉ¡¢²2ÙaPSSƒËü^^+§Á9y·`0ÈË/¿Lss3Á`ßüæ7Z[[yýõצ¿¿Ÿ×^{H$2ù:]×9~ü8[¶l™œ6í±ÇÃï÷óúë¯ÓÚÚzÁûi:©¬¬œã§Ã5a·ÛY¸pa²Ã ´´”üüüd‡!ÂU.é-èŠ,q]i&Mƒ~þò•chºÁâÂtæå§aQe~°³?xú…™N+Ã`§ÈqÙ Fùý'÷a`f3óùeåÌÈvqï‚"~°«ÛVâòðÒR\V&Eæß¶&Kà´¨¬«È¡2+%Ù‡C>£ý½l~ì§“‰r,ÁwÞœ¾º®Órâ8] Ø].´xŒx4JÐç# ‡IÄbXvJ&º†ŸÚ¹C×™³j5Ƕn&‹áF×5ÞyÓÆ#aüÃCÄÂS 2Zv"¡ƒ]̺v%±h÷DÒÞtäÞŠJò+«ˆœÜ±Ö“ã]KuMclh‘¾^UERdúÛ[Ùùë§¹îλ)_°O®—=ù8ÙEÅ´œ…ý~´DY–‰„‚tœ®£ zæd·y»Ë…j6òGðäxQT•ßO,ÅãÍ£¯µ€¶ÚS¼ú获¸ÛìÔíÝEWC=ဟx,FZ®—ÀÈ/ýàûÜ÷Í¿få=÷³ä¦OáèãÀ«/3ÔÝEjV3¯Yʬ*d—à-«ß昣›ß™æ!§´ŒÖS'9µãíññìšFÈ7zÞ!2ŒŒP2{.«ïÿ,ÒyŸ ‰Xœ_|ë/ˆNtËWT•ªEK9²ùM»:È))»"§-%%…ÜÜ\N:Ejj*ííídgg3:1á¹çž£¡¡ÂÂBî¿ÿ~RR¦Þhœ?>íííS÷œœn¾ùfdY¦££ƒX,FIIIr®ËßÂï÷';âñø”V×d …B“¨’i:œ“wkkkcllŒýèGtuu1oÞ<î¼óNèèèàŸÿùŸ ƒÜtÓMx½ÞÉשªŠ×ëåðáô´´Ð××GJJ iiiȲ̯~õ+~ô£‘™™ÉwÜÁܹs§U÷H$B<~©eÑ®œépMèºN0LvD£Q$IÂ|…‡= ‚ðñ6-t 0]$A–% »éâ•0ß]åÝ¬Ê˜Õ ÿpª²„z‘Šðïõ¸ |\i‰/þçÿc¸§gj‘ g΢¯­•H0@Š'¦#‡É--綯ü™ùT-Yƾ—_$0:zAóñ*íãI_`x„h8DÆy]û<¹^ì.7CÝÝ uub±Ù‰†BdR±`ímd1cٵ͚MËÉã4>ÄuwÝCጠríw ‰…ÃèZ‚æ£G¨ÝµƒÖÚ“Xí ªÇ§Öé¨?aè ww³äæOQP5ƒ¡®N¶>ñMGãp¹Q…D<Æüõw šL„ƒAŽmyë‚c56 ÎÉ»ùý~4MãÁÄjµò×ý×”””0::ŠËåâ‹_ü"]]]<ú裔””PVv““C8æç?ÿ9áp˜Å‹c±XX»v-‡òòr^ýu^{í5¼^/YYYÉÞÝI{÷î¥ëòWsÙ¦Ã5áóùxå•W’GŽEâA¸l"C„O˜ê¥×0oÝ޼õ‘@€Š…KXzó­|ýUüï‹,IãÅ¥w%zç÷¤NÄc蚎Éj|ÌÐuÀ™šJ<Áîr¡k R3³“ËÉŠÂPW'=ÍMŒôõ …8²y¾>â‘(û_y‰H0@õÒkÐ5x4JnY9ƒX²‹Š'×¥ëcƒçÒ˜¦£‡‰¸Ó3pgf!I%sjØöä/±8œ¨ªŠÓãa¸§]Ódgš‡®Æv?ÿk´DÕd"cs: gê¹DÖlµ¢k‰Ä•›d¨¿¿Ÿ;wòÀ0gÎvíÚÅþýû¹îºë°ÛíTVV"Ë2eee´··O1÷;¦øÑuS§N±uëV,XÀµ×^+ Ä W­ÔÔT222ÈÍÍE’$ÊËËéééÁåráñxp:x½^ÒÓÓœLÐ#‘ûöí£¼¼œ»ï¾ŸÏÇÿù?ÿ‡ŠŠ æÌ™ƒÃá@UU***¨««clllZ%è‚ ÂÇÓôé«%ÂGÂáv“YP€Ãzî1—‹ÌÂ"n÷;âãó¢«*&‹…D÷ãrMV[¨Z²ŒÕ÷?ˆÓã¡jÉ26<üYÅÅØÝnÊjæ“UTLÕâ¥4=<¥”;=ƒ¼Š*Ò½yT-Y†=%……o =×Ý9‰ + ªzåæ{Öuèyó-K’D<';;·ÛÍáÇ …B´´´™™I"‘ ©©‰P(ôžëáå—_fùòå\wÝuX&¦›V$‰ ë×'; ¼yyÌœ93Ùa°xñbRSS“6lHv(..&‰pöìY|>gÏž¥²²’‚‚ÚÛÛ¡¿¿Ÿááa233éì줧§Ã0ˆÅb“CdY&3::ʳÏ>ˉ'ˆÇãœ={÷4(Òw¾Y³fM鲟,Óášp:,_¾<ÙaPYYIqqq²Ãá*—ôôD"Aooo²Ã¦¹é\I÷jsüí­´Õb¤¯¼ò NíÚAwsý=dæ‚aE›˜¯Ü7ÐÏ‚ 70{Å*jwïàĶ-¨&3ªj&46†3- ³ÕÊpϹ—ãÑ{HD£,¹÷¢áƒ„|>Fúz'¦R”1 ƒ¾Ö³}ëM¬v;ó×mÀ[^AÓ‘C ¶·Ó×ÚŠhe¦ I’PÏ ?ÜÛ;e\®¡Ä"ç Ð¥fec2[0 ƒ‘þ^ö<ÿkšášÛïBÓ4NlÛ:>z4Ь(´œ<ÎÙãGYrÓ­$b1;;ðäx‰E¢˜¬VJkæS»ky•U¸Ò3êêÂl³áLó\±ó•““Ú5kxì±ÇH$X­Vn¾ùf xä‘GøéOJ0¤´´”ë®»Ž`0È“O>Ég>óJJJøæ7¿I[[###ÔÖÖ²~ýzòòòضmuuu¨ó¹?üðì]»6Ù—ç$ (+/‡Í›“‡+%e¼Õ´®.©qäååaíì„ó¦BL†ò²2xë­Ë_чÈëõ²råJþíßþX,Æ‚ ˜;w.@€®®.¾ùÍo¢( ·Ür ………<þøãØívî¾ûnV¬XÁ3Ï<ÃW¿úU–.]ʲeËe™_þò—Œ‘››Ë]wÝ5­Š(deeáJ$ö™épM˜Ìf aïÞ¤Æ1Ý®A®NIOÐUUSR¿Swww²C¸úIž/™…xË*èjjÄj·£iv—‹‚ªt6Ô£¨&$Eflp€ŽÓµÌºv³®]AZvH9%¥\sû]4ØÏé}{ðäæ2cùµäWϤáà>"ÁŽÔTÒ½yä—R<{å Ñ×z–š5ëi9yŒH0ÄŒ¥×îÍC’eÎìßGiÍ|æ­Ûˆ;3€’¹5ô·µR¿ù…̾nå”ÝIËÉÅ“›K^EÕäcº®ÑtèДÞ²¢–“K,F’enÿÊW)ž3‡®ÆúZ[ˆG£¬¼û>ôDÿà 3¯¹Žêe×0ÔÕIgC=”έ!ì÷sÍíwrøÍ׉8Ü©œ9¸ôÜ<2 ¯ØiSU•7²qãÆ ž«©©á{ßûÞÿÍßüÍä¿¿ûÝï^t½7ÝtÓoÝî¬ÌLBjòþDH@pt”ù¹¹I‹Àk³á„¤Ç¡D£”MƒÜ€ÏwIÇ¢ÂsånZ½›ÅbáÖ[oåÖ[oò¸Çãá‘Gá‘G™òøç>÷¹ÉÏœ9“oûÛ¬sÍš5¬Y³æ=·™n³1?É=€×nOúµy©×Ä•”k·c„ׇÇf»¤åÞ¯`0ˆ,ËØ®ÐúAødx÷ CõÈ‘#­E……yÒ4ªT*ÝÝÝãS¹| D£Q:;;§*z7¿ßÏOž~–Ò 7~¨Û~§'Â;EÂÎ'IÆDËöøó†®_Pî|‰‰ ªÉD[+ÏýÛwYxÃM,ºþ&ÞÏgˆ–ˆ£¼ÏnâZ"$I-^'Éòdq4Ã0ˆ…C(ªŠj2O<ÿ.º®#’,cèúøxnUÅÐõ‰ý10 I’i=u’—~ðïlüÜ#T/ýp»V6½ù øÙ°Ûí—¿²à©§žâ†nHj—jÃ0xôÑGùƒ?øƒ¤ÅP__Ooo/«W¯Nj/¼ðK—.%7ɉÐøÃ¤Ÿ“ÖÖVNŸ>Í7~¸Ÿ—ª»»›ƒrÛm·%õ8lÛ¶ ¯×KUUÕå¯ì2L‡kbdd„M›6qï½÷&5޽{÷N‹"q?ÿùϹï¾û°žWF„ä3 ƒá¡A~þ‹Ç6ík_û>˜ø›ø%½]„Îù…À.ZL’Î A—$¤ßQlìüîæY…E¬¼÷3h>ð÷›œ¿F½¤Ç%IÂbw\Ò:ϯx.É2ÊÄïçn6H“ÇM1©¬üô}”Í[ð¾cAA„‹ º Ibæ5×%;ŠLAÕ ªf$; AAácdÚ%è†/œè`_Û ÿtK ê{t“5 Hè:Š,!‹é„!]×HœWðLøä0tP(”´âˆ‰D‚p8ŒÉtåªÓÿÎc`èºN0LZ 0>W<Oz‰D‚H$’ô8¦Ë9I$I‹#ÙÛG<×Ä„p8<-ÎI,CQ”¤Çq~ñTA®>Ón ºaÀ¯Ž´²£©Ÿÿ¸{&åâqøÂq¶5ö±¤(¯[ãø¸û¤A…Büú׿Nv¨‚ ‚ \…î»ï>Ì`È™ WÎU5=×8Ö5Âé^‹ÊX$>ùÜh8ÆŽ¦~zýR,*KŠ2(Iwð܉vž>ÒFë°—ûc7+lkì£ßÁm5±¬8“ü4;¢m]¸Ùívzè¡d‡!‚ ‚ ÂG(é¥Ú  ¶w”ïib4'®élk87/úcZx³¾«*SÛëã§ûš F1É2h»YE‘$~¼§™Ýg°¨ µ½>þßÛ§‰ÄEAAAáêôôXBg_ëiv3Ÿ_^†U•9Ñ=Š/<ÞŠ¾®2‡[gçQäqp¸c˜ÛvšáPŒå%¼p²ƒ¥™D/œèàñ‡®!?Õ΀?ÊCï¡¡Œš¼´dï¢ ‚ ‚ ‚ üNIOКNïX˜ì+n« À™9nö¶ ¢í#Až<ÜÂH(N8ž`0C× Ïu^oÒˆð™_ì>·^Ý ßMöî ‚ ‚ ‚ Â%Iz‚Žª"‘Ðuô‰ŠÅÁh€®Ñÿ¾½ž?]UÍõ3r9Þ5Êß¿qò‚UXM n«‰·þx6Óø¼Í‘„†EU.=AAAAH¢¤A7+2EiNÎèö… ÅØ}v€@4ABÓ)IwŒ&8Ò1LÏX˜¸®šnˆ%(ö8Hµ™y½®›hB§¡ßÏ£»›ÇÉÞ=AAAA¸$IoA7)2×–fr¸s˜¯¾p„\—¯ÛŽ?§0ÍÁµ%Yüõ«ÇñºmÌÊM¥"ÓÉw6×ñÝOÍÇm3óoÛNó××ÏáOWWóÄ¡^<Ù @M^*Š,j¸ ‚ ‚ ‚ W‡¤'è¥NþîÆ¹¢qTYÆaQ‰'tRíf¾¶n¾p E–qYMÜUS@(®‘ã²ño[@$¡‘á´P™åb~‡XBC‘eÒl&ÑÅ]AAA¸jL‹]‘$]AAA‘  ‚ ‚ ‚ ´ô.Ñ××—ì0„iNÓ´d‡ ‚ ‚ ‚pE%=AW…œœœd‡!Ls===ÉAAAáŠJz‚ Ë¢§½ðÛI’˜2OAA„7‘ ‚ ‚ ‚ Â40ítØÓ2ÈO÷5Ótþuëij{|ÉKAAA®¨i— c@ëp€mChºÁŽæ~úüádG%‚ ‚ ‚ WÔ´ƒ®éƒÁ(áª,OèSžÇ5ühºAºÃLºÃB,¡Ó=ÆfRðG⨊L¶ÓÊ@0J4¡á±[ÈpZ#—AAA„«Á´HÐÏøÏgðG京Œ„cSžßÞÔÏö¦~zÆÂd:-|míLFÃ1¾øÔ~n›“ÏH(ƉîQn™Çh8FC¿Ÿ4›™¾uuúuAAA„wKzö×tv·ôMèüÓÍ5üÅúYDßÕ‚ð­ëgów7Í¥}$Ä‘ÎadIB3 –gð7×Pfçpû0¼¢’ÿµªŠCCDâbîlAAAáêô=¦é´ ‡(ò8ÈvYqZT–eLYæš’L\VÅ^·¦?év ù©vY"Çe¥0ÍAŠÅDšÝŒaÄ4ýƒ„$‚ ‚ ‚ ¹¤'èš®£È²$!Šr”ÕKóÏÿõ#¼ãS,ž;û²âéîëç?~ñ$žT7ªª\ðüª¥‹˜7sÆIøæ]{9ÓÒÊÿúÜgIq^þð”úæ{îE²32.º>E‘™]YÁ¢9³ˆÆâ<¿i þ@€ÏÝ}®'ÿýÄS¤§¦ò…ûîFQÎíKkg¿ð k–/¦´° ‰½Gsød-Þq+î”lV+©®”é, ‚ ‚ Â9Ó"AáBgÛ;øÑ“φX·|Ͼ¶‰æöv†G}B!ZZÉÊHçswÝμ™ÕÄã ê›ÏÒÕ;›P8Ì+[Þ¦ÈëåtÓYÚººÉÏÍAUdÒÓÒ% ]×eëÞlߎž^œv3Ê˸ó†õÌ(+EQšF{W7ÿôƒáNIaxÔGCk…ÞY!‹ÑÜÞAvz:5ÕUð®}ÔïgËî½Ô7· *ãÏåegó'¿÷r³2ß×11 ƒÆÖ6Ÿª#ÅáÀdºð#ÌfµN¶”?þÂË8~’߃#£:Y‡Ål¢µ³‹LOµM¬¿v97­^ªª4µupðÄ)?‰"ËÄ ‚Áš®säÔiEfãŠkù“‡î­é‚ ‚ ‡N$è‚0 éºÎШH4†¬ÈüÏ3¿¡8?[Ö®æÐÉSœmïdãŠkñ¸ÝxRÝ„#^{{'£c~^Þò6…y¹ úxôɧ C<ýÊlÚ¹‡L‡¿úã/b³ZhlmãG¿ú5þ`Šâ"Ú»{X0{ÁP˜øþù³G~eóæ28<Â÷~ö8™éæTVp´® @w_?²$“ЄÂáÉîá†a …ñƒ‚!ÒÜn®YPƒÅbAr³2?Pkº?¤®±™Ê’bZZq§¤àNqN>ŽDõQR0Þƒ¦8?úæ6ù9ÙÔ7·Ð?™ìM`µXÈÎÈ@–e‘uMÍ”äç±pÎ, rsØsäÇOŸAÓ4fW–ãIMåÆU׉ä\AA¸"D‚.ÓP<‘ ¥£‹o‘H”;®_ÏÞ#Ç8Q†žþÁµÍ˜M&EfNu%ϼú‰D‚öîzظâΞÅw~øV-]DÍŒjlV f³‰Ñ1?Ͻ¹EQøÆ—~Ÿ`8ıºznXy-¥…<ú«gxüù—¨*)Æ’Â7l «·—·lÃd2¡ª*v« Y–ˆ'Sº‰ëºÎž#ÇxsÇnÚºº „BÔŸmŤª(ŠLa^.N»ý‚ý6 ƒH4ŠØ­Ö žïìëãHíiV.^HOÿy9YäegO>?âóqºéìäï3ÊJÙ´c7q]Ÿ\¿aè¿;l6òs³Q…®¾~ö=΂Y3ycûNÖ]³œíû’•á!5ÝC{w'Î4°qÅ5ɾ<AA„©¤'蚦188˜ì0„iNÓ>YUûšÆÈ˜ò¢BÚºº †Cdgf°xÎl®Y0€_>ÿ9™”ä342Šªª(²Œnè˜UKjæ2·º“ªRZÏ‚Y30™TTE¡§€æ¶v>sÛÍ”äñò–í8vûë®YÎç﹓`(€7+Y–9ÝÔLzj*YïEÛ®ë„#Ÿ8Å=þ+††Y³l Ã#xÒR'cí¤£§—x<1™¤§¥²hîl Æ[ÆeYÆÐ30€7;‹1¿“ªr¼®ž ‡e¥†Étn†‡±@€H,Æ‘S§/èvo1›©(."/'›¡‘QNœ9“ìKCAAøKz‚.IÒ”/Ë‚p1—:¥ÖÇ…aÄâqÜ®¬V ßøâç©kjfÿ±|jýµnÍdѵÓÍg±˜ÍdzÒ°[­|öö[ù÷Ÿý’Q€m{àHOMÃb6ŠŒ·¨Ÿ¨?C4Ãb2a5›9xü$¿ÿo‘Ð4,f ‘h‹Ù„?Âa³]t¿Ý)N¾ö…‡1 ý‚ç,3÷êf^xs ýƒCÄâqœ;+—,bhd”ÞÁAæÍ¨æà‰“$©®¾ø™{8^WϾ£'00ˆÄbøƒA,f3–‰ÏeókHu¥ð¥û?Í›;÷LÙf,§­«›Ñ±1B‘p²/ AAác.é º ²Z,ó©›ÉÍÊäõ·wòòÖ·ñ¸Ý|öŽ[±˜ÍSÖïr:Y{ÍRÌfϼúísf¡é:6‹…Êâ"TU¥g`€ÝGŽRàÍ¡¼¨Ý‡âÍÊ$¡%pØl,ž;‡×ßÞÉü™Õd¦¿ÿá-š¦ÓÖÕÍü™3Hh«—-¦opˆ®Þ~ÒÓRiíì`hd”'^|…Ú†&V,^H"‘ ¡i`ŒAO$´tv‘•žŽ¦éÄâqŒ·î­;¢(ôÐ?<€Ýf¥¾¹…ò¢ÂO\¯AAáÊ›v :œécGS?·Ï) ÛeÅfúp[¬†C1úýŠ<Ž}Ý‚p¥¨ªÊ’š9Ô64ñ“§ž% SVX0u!àhˆÖ®®‰ß¡²¸ˆ¾Á!†FGQ$™V^‡ÃncýµË¨*-!¡%(+,@UT ¼9u3.§ƒx<Ùl¦²¤˜Žžî¹åþïJs{ÇJÐ% Ê‹ YR3›®þ~òr²±˜Í¨ŠÊž#GqØí¸Sœ„#:{ûxðŽOqàøI&’ìBo.£c~v: @ei1 gÏD×uâI;Œ&œSUqÁöeIÂ0 ‘  ‚ ‚ ºwÃT9ÒZTX˜'}„óüê†A0š ×$xót»Ïðw/b$Ãe5aVe‚±¡˜†"KØL ±„NªÝŒaŒEâDâ²,‘b1a5)`€?'×0›ªà°¨¼Q×;¶A>»¨„ʬdñE{ÚëîîfÖ¬YÉãCFéì줬¬ìw/‹10ÒÜ.bñ8`µZ†BX-–)±_ŠX¹¯ç“eù}Ç-‚ ‚ |²†ÁðÐ ?ÿÅc›¿öµ¯}LüŒMü?„¦Å·Ì¶á ÿ¹£ö‘ ¹.+ÊÄÍ„nð…§öó¿VUQž™Âîhàì Ÿ\· ÝBëp€ß¿Œ“Ý£üü@3#Á° ßÃï--%×øßoÕ2“šb5ñ‡×UðäáVêz}„¢ þáæ–iqá³™üwµd[,f,óE—/ÎÏ»¬íÉïqcN–$Šó¼<ær:/óù]ã3=iÀxeúw¤8|f“iÊñ°¾ëF„ÍúîßÇoj\ʸqUQÈÎH =5õ²Ž£ ‚ ‚ |IÏLºÎEâüÛ I±¨|ùׇp˜Ï…¦éûZéó‡ù¿w,Àa_ƪ*¢ ~¸«‘ëÊ2¹a1mÃAþá“îàc$Èî[ŠÓbâ¹ãíØT…OÏ/äíÆ>þbÃ,‘œ ‚ ‚ ‚ ÓBÒ³ÓXB§e(@Iºƒ<÷xwÒëJ39Ú92¹L\7h Pšî¤0Í,I¬©ÈfoË =c!Z†c ö¶ ¢u½>ê{}¬­ÊA‘eþuëi¦³¶2‡üT;u}¾dï¶ ‚ ‚ ‚ L‘ô]7 ¦é¸L¦ÉâK–wn3 bšŽYU&ÇÆºmã]h£‰ñù’Y^Fvʹñ¢™N iv3ÿûÖylbgs?ÿ³·‰ïݵ(Ù»,‚ ‚ ‚ øè*Á½“"‘é´Ðˆ0‰Mèœê²Œ"Ëd8¬ô"¢ bšÎ‘Ž!rRl¸­&‚±ÕÙ.JÒh†Y• E‘%¸aß¿k <¼t²‰ñW ]Oöî ‚ ‚ ‚ 0 ZÐͪ’¢ µ7ð³ýÍd8,tŒ„H³Ÿ+2¥*‹ =ì9;ÀO÷5“•b¥c4„EQÈtZ¸mNÏïÀM0Œrº×ÇWVUÓ4àçù¬,ϤÈô¢l¨ÊE–%†B1^¯ëæÁÅ%X.¡€” ‚ ‚ ‚ \IIOÐ% &/G®)§®×‡„Ä××Í`(EU$ZRByF ™N Ÿ_^F}Ÿ XS‘ͶadIâÓó ÉqYiðã0«|ñÚ Ê2œy(²Dëp¸w~!«*² ǸknþhÃHöAAA„i ØL +˲XY–uÁswÕPÛëãíÆ>î™_D^ªo¼x”ŠÌ”ñ9Ñe…Õ¹l¬ÎòZ“7Îô^°Î ‡…»æ&{·AAAaÒ´HÐ/E¶ÓŒÛªògÏ$®,+Nç÷£‹qäŸÆ'¬«C à'ÿó?È&S²C’@Ç‘U&Šb Ó›¡ë ëHêUó'UÃ@OhÈ&ñÞ„éJÅùÊW¾Œ,'½tÚGæªøDÒuØØ÷U§r_uê¹Çƒ£ô“ðQø¤Ýˆ1 ÑBц“ŠMo¾BÁªõ¨Vk²C.¿«OÞEK“Š ïCdt„¾ãG(Zµ.Ù¡‚ðμü\²CøÈ] º,Ëx½ÞË_‘pÕêîîNv‚ ‚ ‚ WÔ'§¯€ ‚ ÂytMCKÄßßktÿðÑÑOÜð+Ax7ã}öpÔ5±¡!¢¡ÐäïþáaÂ?`\°îw¿Çb‘Ñà¥uŸÕ5H0€–H\r|á€ÿðÐûÞçH(H,ùÐŽ«ðÉvU´  ‚ ‚ |˜ ]§õä NìØ†=%I¾pÊÕE×ßHZÎÔ´ÑPˆ¯½‚ÃífÑõ7¡šÍ—ºIAøØi>v„¯¾LáÌ™ŒÏÍ4•b2Q>!™ãÅ™ƒ>{ž–Œ‚Bæ­]OÈçcëQ6!³¯[‰$Ÿ[GÇ™zö¿ü<«ïÓįc[Þ"0<ÌuŸ¾›3‹ÍvÑØFûzÙúä/™¿n#eóP·{'þ‘a]Ê;5~ ƒh8L8àäÛ[éoocÝCO>jç^6g g ~Ï.VÜsÿäzv>û®ôLjÖŽ—p¦¦¡Š:BÂtÕ$èá¸F Çc· È—V8)®é £d:­¨ïzÍp(†*K¤XMS>N  k4DvŠ“rñ—²ÌÅ^Óã “î0_0ïz$¡á ÇÉp\¸o6“ŠÓrÕœ*AA˜Ö´D‚æcGØþô“xË+h««E’d\ééDÃ!zš›©\´ø‚ÝÐ5#ÜܾÚ];'Š’95,»õvl))ÉÞ=AøHºNë©t56¾haS{Š oY9¯ÿø¿éíÁ78@ãáCœÜ¾ ]Óð 0ÜÓÍ©o³ìS·S2w†aÐ^{’Žúzžþ—Ã@K$ùÇP…æãG‘$‰Õ÷?Àœ•k0tÀÈfÛx"ï`ß+/2ÜÝÅPOcCƒ4;B[íI¢¡ Ko¹‹ÝN"‘àäηÙÿò‹„ýcÄc1º›‰ǧi.¨žÁ¢ëÇk†Aý¾=4=Lgc†®£i B>f«c[ßB–eîþú7IIó I`w§"‰¢¯ÂûpUtq7€Íý|óåc ‡b—üºö‘Ÿr=¾ð”Ç5Ãàÿn©ã‰C-$´©ÝTâšÎí?ÞNëð{wŸIh:wüdg—‹¦|ö±Ýœè½à¹£#üÙs‡D/xÍ7_>Æ+µ]áÑA„·‘Þ¶=þ¹%¥d¡kÁÑaFz{éíal`€DüÜ÷ Ã0ùð 064D,Á““Kù‚T,\LÕ’¥̘‰j±${×á#364HoK  3ØÝ…a˜­Öñ‹•x4‚$K¤xÆo|ecq8È**Æ[QÁpOÑPˆ¢Ù³qgeáô¤ãHM 4棫±ò‹Xö©ÛYyÏ}”ΛÍé$#¿€²ù X°ñŠfÎF’$zš›øÕ?}›ºÝ»h:z„—þóßé¬?M$dó/~Êîçž%ð“[ZFÝžÝÔíÙ…–ˆô’–Ãêû`õ}P8c®ô æ®^‹ÕáÄl³2wõ:Bþ1|ýt5žaáõ7±âî{Yzëm”Ì®A1™È-+§lþ–ßv'iÙ9ì~þ×<ÿïÿÊh_o²O•p•¹*tAA„KŠÇòOÝŽÙfçô¾=DƒAT³³Ý>þc³!Ÿ×â¥%âyëM6ýôGl{ò—t75â¡·å,½g›îéÁbµaÝÝ…OÃ0èÕB®ËÆ 3r©ÉK£Øã`öÐ00þ&YQ–ÉŠÒ,TEæTÏ(‡;†YQ–Àp(ÊŽæ~*3]˜“ÍLžÛξÖA–—db3+Ü:+…fæ¸xòp+G;GXV’AÇN4¡Kè¤;,4ôŸ{SÞ:;Ÿ%EéÔä¥òZm7ûÛ)ñ8)Iw²±:—ª,_ºNáž98eüžÖÆ" Ê3Rˆk«+²ùçMµ´)Mw&ûÔ‚ ÂU#ÛÇâ›n¥áÀ>†»»h>v„D,FJz:’,öÐqÚO×bè:’$a²Z9ºùMNlߊ„„®%PTŠÉ„É"z´ Ÿ©Y9,ºñfŽnÞÄpOH™……ØœNÒr½ÔïÛKÕâ%ôµµ¢k:)ééÜøÅ?àØÖÍt77¢%$b1"Á &«EOIf,¿³ÅÊšÏ<Äîçž™²ÍX8B_[&‹…àè©Yã]èCccH’„-%»3…Ë®!§¤”Î3õ¸ÒÓñäx‘…öÓµøXvÛ˜-V,v;ùUÕ,ºþ&ÎÜG[+®ŒL.÷xÕxà 0< å`w¹)¨žÁúæÕG0%®H @Os3H™|\Vdl΢‘0‰Ø¥×Є«*AwYTÕÌS¬&0 Ó~ëkìf·mü¦ÓbB•eü‘ñ;âY)VdYB•%œ•ö‘ m¼E:KàÄÙy¶Ÿ³CçŠÁ--JG–Æ_“é¯i3©8Ì C(Ç»FxæhŠ,£ÊgúÆðºÎMÿëEUpZTFC1ð€Ó¢’bŸŽ!Å2^Y>}gÞFƒ>„¶‘l™\×†êœ ªÓ ‚ ‚ðÛå”–‹Fi8°™×®À•™É©Û™·v%sj8ôæë ÷v³þÁ‡‘dY‘qyÒÉ«¨$-7-‘ÀæL¡¯­…ÒšùÛ²«CÜ,>9ì.Y…ȲL{ÝIl'#}}ø‡†íï' ÐròÄ”)Ð:;©Ýµ“Š‹)¨žA4ddzO1gårJJ°ØlXìÒrr¦T…WL&©©¤x<˜,$ ¬²,O&÷Z"Õé¤jÉ2š¦«á ý=ôµ¶ ˜LXNò«ªŽŽ’»`!¶v—›H0È©]Û©^v é¹ÞÉmF‚AŽny‹¢9spedL-m¶Zq¤¥‘âñŒÇï³$aã1ɲŒ$‹^6Â¥»ªôHB'6Ñí;×$°™$éÜø•ØDËõ;âšN$>žèFšaLŽ3Dã†nDâVUžLx-ª‚ݬróì<îžWˆ"IDã-dIB7 OôcšN4¡£È[zI³Yøó5Õ(²Ì_¾|lÊ>ŒEãçâJh“Iy,¡Mh“û`3½Ó…FÂc33×›Êwo›Í¤ ŒÅ'_/‚ ÂûçÎ̤hÖdY¡éèa2ò ÀбÚdO$ ½-gi¯¯£bá´xŒÁ®ò*ªh<|Œ¼|\4ÚOVQ1V‡#Ù»$-‘`°«“Âê™$qì).2 9¾õ-2òò ×uð ô³ã™_164ˆ·¼b|Lùä0Mc¢ˆZ[3f¢%4tmüûp,¦¿­I’éí™Ü¶¬(ŒôõáÎÌD×5üÃÓϩf3öš–@×4´„F<¦»©‰t¯“ù\÷y»ËEÍšõ”ÖÌÕžAÓ‘C IŒ "Ë2™ù“Ë&âñÉœÃ?4„¢š0tŽöÉe»: üÈŠL`d{Š óÄ<î‚p)®ª½¡ŒÚžQ²S¬¼V×E¶ËFaš—ÕDÀŸ ÕgúÇh>ww«Ûæ`û0E'¯Ôvá±›)™è¾£y€Ï,,A–áx÷Ë‹3'“÷4»™êl›ê{¸¶$U–ùÙþfjòÒXW™C(–`[C³rRÙß6H$®1+7•}­ƒ(²„,IìmàdÏ(n[&š>þf~£®‡åÅ™4ôÑç0Û›J$®qv(Àñ®¼n¯Õu‘å´’Ÿv®H\M^ÏkgWs?+˳yñdu½cüõõ³/y^xAA.äp»¹æö»°»\l}âÄ"f_· I–HÄc´:IjV6sW­¦ýtgN“YPˆÝåÆ?<Ì‚ ×sjÇvƆE‚.|âTÍ ¯¢’ž–f<¹^<¹¹¸3³i?]GVQf«•H0H4¢fÍzºêììà «°ˆ‘ž|hšFÁŒ™è‰5€¡¨&3ù•Uݾ+=‡;•ž³MÌ3Ö#I2þáaÚO×"+ v·wF&ųçSRŠ;3›3ernrwf5kÖ!Ë2Z"ÁÑ-›ŽŽ‹Fñäæ’WQ9¹­ñ}üf‚–Hàp»ÉÌÏ¿0(à ‰ÐÓÜLVQ1wj²O“p¹jt“"3/?=-ƒ|ïí3丬|uí œ•ß_^ÎÿÛvš½-ƒÌÍKeNn*ª,#aPí¢ËæÞŸíD’$þþ¦¹8'ºÊ¯*ÏâŸ7ÕÒ2àšÒ n˜áŤȤ;,XM ..áZøâSûÁ€5•Ù,ÈO òSí¸¬&~ïñ½Dâ ¾¶nù©vn™ÇÿÛVÏ?ÝÁêòlþlM5ßß^ϦúÒìffç¦òŧöã ǹ«¦€ª¬Nöø˜ãMåD÷(?ÞÓDªÍÌ××ÏÄiVq[ÍXM 3rÜ|éÚ ~²¯™Ù\GY†“?]]-’sAAørKJ¹óÏ¿+}¼¨“Ýåbé-·1oí`¼À“¢¨ ,¸þF$Æ«¿W/]FiÍýõo¢ZÌȲBñì9˜­¶ËˆH®.ÞòJîþú7q¸ÝȲ‚c²Z‘d™ê%ËÆ»w+*f› 0Æß/ª‰Ä»Š/žïîêiÙ9|êOþ[Š oEŽÔ´)­Þç//+ 5kÖsrÇ6zš›ñ–WP6y•UXìvEAVÔÉeßM’¤Éíª&·}ùÏÇ“pdUÁb;×`–[ZÆg¾õw8ÓÒȯ®ÆáNEQ/ìͪšL49ÌØð Kn¾U´  ïË»³;õÈ‘#­E……yb¬„0tww3kÖ¬d‡ñ¡ˆF£tvvRVVöžËøý~~òô³”n¸1Ùá IÐôæ+¯Z*þ _ü]ø{ºð.ZšìPAx"£#ô?BѪuÉE¸L¡1[Ÿø%ųç0ëÚÓbÌ÷ÛO=,Ë,ûÔ"A¿ g^~ޝýÑ"Oƒsz¹ Ã`xhŸÿâ±Í_ûÚ×¾&~Æ&þBWM º ‚ ‚ »Ù]nnùÃ?IvS¬¾ïd‡ \¥®þ[‚ ‚ ‚ ‚ð1 ZÐaš ö÷ræ¥ß$; ! ¢þ1šÞ|e²€0½éñ8Z<Ž¿»3Ù¡‚ð>šF<ka‹NÌðIrU$蚦ÑÓÓsù+®ZÆäTŸö¬lJ׋1èŸDÍo¾Jñªu(bÌÚUÁßÕIvp”õë×';”)víÚ…ÇãaæÌ™É墺ºº8vì7ß|s²CyO>ú(_úÒ—’Æ{zæ™gظq#©©©Éå¢<ˆªªÌŸ??Ù¡\Ôàà ;vìàÎ;ïLÊö}>¯¿þ:÷Ýw_²Å{šîï×^{¹sç’±JêÓÀéÓ§dÅŠÉå¢"‘Ï<ó =ôP²CyO?þñ“ÂGîªHÐE™¶o<á£ÑÝÝì>r’hAý¤’Iœÿ«…4q®¦[›é×ùñÓ6¾wbœÎñÁøñ›®1^ ×`2ã“eyZ˜þïdŸÃC|0ý?‡?i¦ïÙA~§ñ©`.½‡I4"\⺠Ö}±ÇAA„ÇUÑ‚.‚ \H×4jwïd¤·WF&Ñ‘ –)«™OnYùäﻟ{–´Ü\ª—.§ùØQÃCS–ϯª&¯²šD<Æë?úoæ¯ÛˆÝí¢­ö¥5óÙõ›gXxýMä–¾Ç4†AÈ?Æh?º¦‘ˆÇˆ†ÂDC‚¾1#ÃXìvVÞsÿÄâ:‘`]Ó&Wa±ÛQMæd^AA„ÜÇ>A%t ,ª’ìPA>Tš–àôÞÝÈŠJ<¥¿½í‚eÒs½¤xïeº¿¾uÍ5ühçNŽ÷÷';”‹ÚP\LIj*Mù¹­ã“ÌfzicPÓkÚ´ˆ/v^/÷¢ë:;vìàµ×^#ãõzùÊW¾‚,˾õ­o±xñbNœ8Á¿üË¿ðGôGS †…ãñiq|ÞËt$d™ÁHdÚÆ81ŒÉø¼))Éi I’&ÿ®ÓÇÇ:A·¿zå8Hå¿êqX¨Ìt¡ZD‚.ÂÕçÄöm˜-ª—.§«±ÀèèËÏšªšàøÖ-Ä"´x‚#oµ‘ˆÅHËÉ!»¸„X8L{å á`×sÏÐs¶€9+×–ÍžŸ£rñR²‹Š±:Æ[¶ûÛÛ9{âsV­!%ÝCfa1½­Û&cÐu ÏG< »¸÷Dò©¨*Y…E†A<AV0Àе foÐ ê÷ï%Åã¡ zædKq,¡v×Â~?k?ó ÇßÞÊÑ-o‘SZ†Ã:þZM#’WYÉòÛîÄæLÁ6ñEéÀ«/‘âIgÙ­·sൗ©ß¿—nàØ–Mß¶…µ<„¬\^/¬p8Ì®]»ÈÏÏçÏÿüÏ9zô(/½ô_ÿú×ùÆ7¾@ àÅ_$--´´´Éׯãqb±ßøÆ7˜3gΔõêºÎ©S§¨­­%;;;IWâhmmMv¿Õ©ÚÚd‡ð[556Å.EWH?ÑKHŒ§ ¿ßÏ+¯¼Âç?ÿyŠ‹‹Ù¼y3±XŒ`0ÈÀÀ¹¹¹“-âç3™LÜvÛmÜvÛm?~œ—_~yr…ÁÁAžþy¼^o²wñ}›îï¶¶6@²ÃxOÿ?{ÿ߯ßùãÏôì½w‘¢Õ«eË’«\ÖözwÝl6É¥Ý^ê%¿o’Ë].õ.¹M6Ù’lq/r/rQï]¢(±Sì@ô:¿?@A¢$ÊE²Úx>|ˆÍ|ðš|ÀÏ{ÞÍf³1|MdE" …èêꢪª*ÞR’\ż1ÐÛÆì™À VÐ1>M¾YË’ ºÇ™pù¹³*›åEiLû‚|Ð6ÂÙA™F5ö«<æÓþ ÿß–4æE>¢  V$Cß“$I2ÿïïåÂÁýˆr9¦ŒLìãcxnÐ+4«¸$æEΩ¨djxˆÌ¢bFº»°!WªÐŒ„ü~kÔ ?mD¡Œ†ˆ‡Ô:=UMËÑŒœÜù.y•×/D&—#E"L ôðzÉ+¯D©R“QP€×å$%# ™RsÊŠZ«Ek4aE®P`Jϸr.}}´=Ä`G¶‘Ž¿û]gNb!³¨)AEÂÁ çö|DnY%ù•Õ0c {¦§™&·¢’’†F\v;Í{wᘜ¼b ‡B~¼N'-ö¡Tk¨\Ö„J£Å9eeÙ¶û(m\Ä@[+ãýý‚@ñ‚… wvàœ²ÎÒûYðûýx<JKKQ«Õ”••‰D‰ã]]]ŒŽŽr×]wÍ2.‡·ïß¿Ÿ}ûö‘Íš5kÈÈÈÀét²wï^ššš°ßàM"c·Û9Ÿàš8o 7åÔ©Sxã-â&ôöö’¸¦Éõ âv»iooçÀTWWc4Ñëõlݺ•±±±Myq:ìØ±ƒÇNG0äÝwߥ®®ŽÁÁÁxŸâ§&Ñç@KK ¶[æscdd„Эó¹ 9zôhÒ@O0æëxØáã?v#[ªrøåñKüâX ¹)¤jUüÓÞ6$Ib_×oµ ²¬ÐBQªŽ}cÃ\þ;/ó_^:ÁŸ½}ŽÖQÇW²¿v’$Iæ?—΋処FGëë½îÇ㜎3ØÖŠcbœÞ–fœSSøÝn¦''pÚ¦b…Úl££˜Ò3ÐŒ4Ý{?9ee|ð³ŸòÆþ/Î)+»žþ9OÿÅŸrêý÷ØFG1¤Zbi¹BÖdÂšŠ ¨õz ©©(Õê˜a Ðw±…?ýwÚ."ÊdèÌfrË+DçÔ-ö±ÿåpÛí(T*îúö÷Xtç]³òËÃÁ ¿•Z ЍµZ‚þ¡=5ò‘H$‚ΜÂPg;‡^{…Áö6¡*­Q&G©Vðxˆ„ÃäVTàžv`¿ ¹ƒÁ@[[n·›ÖÖVÆÆÆðz£æU8fÿþý,X°‹ÅrÝñeeeäåå±jÕ*FFFxóÍ7q»Ý¼ùæ›TTTP]]ïd’$󞉉 ìv;f³™úúzvìØAWW …Fó‰Æ8vì‹…òòrNŸ>ÛífõêÕñ>½$I’Ìæ.Ÿ¢cYaK -TfI7¨YQ”Îæª,z¬.¬žG{'YœoáîšÖ—g±¤ (Le†l“†ßÛPE±EϾq†A{"?{N’$I’S´ žÍO}…RINieK®ûÑÍ¢HéÂEÔ­Y‡L¡ÄçvS³rÙ¥e,²ŠKHÏ/@¦ˆzmMééT-_‰(—“YXÌÚGgÝמ`ñæ-¨uzjV­aÕQ´ žp8„×åB­Ó!Ÿ)Z&IA€ÑÞÛÚ‡ÃL 3ÐÖŠÇéä²y ‡i=r¥VÃý¿ý_É**!³¨˜¥wßæ'ŸB­Ó“_UÏíÂëv!ˆ"–œ ©³ XQ&C&v»\,N&—EÃågPëõ¬ìë|ó/ÿš ?ɺ¯=upûäx4R DŠD‡‚È” QDoN%ðã÷¸où~©Õj¶lÙB(âþà8sæ ………¨Õj¦¦¦¸pá«V­ºÎC§Óéøú׿ζmÛhlldõêÕLNNòÁpá–-[†ÃáÀívãpÌŸÏ999Ü}÷Ýñ–qS¾óïÄ[ÂMy衇0™Íñ–1'K–,aaCC¼e|b”J%¬]»–åË—SUUÅéÓ§?ññ^¯—£G²zõjär9£££>|˜ÊÊJB¡§Ó‰ÿª‡‡‰N¢Ï-[¶—›osRUUŪU«â-cN4 _ÿú×ã-#É5Ì›w­B†f&$]£”aR+PˆHà †qúCTf(PÈD"’ s׫üìë+bcUeÙ×5Ή~+)ÚxŸZ’$I’|*2‹Š™œ —œž²rñÈ!ä E,/<3ÖÛ‹!5•¢úÂÁ ö‰q>/†”TÛÛ$ð{Ü}>\v;:“ •FKÙâ%ø½^½¶™\FNY9eXG†9úöäWUSºp>·Q‘"$I" ã²ÛIÉÊ@<Îi”Z-]ÔÃðùbaë*† ßËnc¼¿—Ì¢´F#ý­eÛî%§´H$ÂXï%ÔZml|µÞ€9=ƒ‰Á¬Cƒ wubHµ 3šloC©Vc°X8`/RD¢¤a!ý(Õj2 Š»ÔÃPG;©YÙX‡‡IËÉC¥Ñ ‡ñºjðŸI’|œœ.\¸ÀË/¿ËI=~ü8ètW*ÖÛl6´Z-@€“'ORYYIff&ÓÓÓ‚€ÇãÁ`0ð³Ÿý «ÕÊèè(Z­–’’’V™N4DQ¼a>o"¡Lðë(W(¸==>DQ¼åú _$ƒAl6F£‘ééiòóóçÜßív#I:AèŸI¹\Âï÷#Š"‡âÀ\¼x§ÓIYYñ>ÝOD¢Ï™Lv[¾£?/DQœUµ?™/¾j$ö_ÆO‰L…LÀŽ‘$‰io4ûiÚà⨃Uň¢€Læ§!I$iVxpt“tÜ8i¦mS"ÿáJT.ŒJµÉÝxù»âS¶Üò{=ø=ô)©ˆ·ù^W¼0ù•Õ˜2¢ ÃP €ËÍÌó¹]œÝõ!2™ sz¥‹0ZÒh=rˆ€ÏKa]=­G¡Öëg…©KR„‰ÁÂ÷à²Mðyék9×åB*–6¡5™ë»DÐïÇm·3ÖÛƒ ξN"Bl›{zš‘žnrÊÊ©XÚDëö½ðÎ)+›î¤·¥™ƒ;^¦¸~!éù…±kôûÙõôÏÉ«¨dÝמˆ}¶Õ:åK–røµìyîi|n‹ïº¥VË›ÿúÏXrò¸óW~ha½®Ó'ñL;¨Z±ŠòÅK ƒœùè}¬ÃƒH’DÙâ%(5Z“(Ôj4ú[¯º+I===>|˜ôôt&&&X³f æïgOOÏu†À+¯¼Âš5kÈËË£§§‡³gÏ’’’Âøø8µµµlÞ¼9Öêܹs0==M[/¬!ÙÈœ?_¼EÜ„ÁÁÁyU$N¡PðÐCÑÑÑA `ýúõdee199I~~>yyy@4eE£ÑPTTD8ŽyHËË˱X,×Íe¹\ÎÖ­[IMM÷i~*}´··“˜ Ö¢Œ“È®À`0ÈéÓ§“z‚1o tAÙUQ//ЙL@)¹»&‡Î '_ÿÅ!ÊÒõÔç˜HѨøÕ•eü`_ÿ°» ‹NÉo¬.§Ø’ìý—d~àó¸é>{вE‹™è§ãÄ1ôæTzšÏR¹l9æŒLAˆåÓ¶ìßm—õÊK˜32$ïëEÚŽFŠDØðÄ7È.-¢!Ñ‚(ôû9·ûCü¾™ú —ÿ²ÌL7­ÁHù¢¥f Y ´^¤ýÄQêÖ¬#£ èºpÆhq.!fP…ƒAö¿ôukÖ“²9‹‰~ö¿ü2¹ŒÔ¬lVÜ·ÅŒ!ç²Ûè>sj¶1<£'¯²šÂÚº­¨;¯— öcÉÍ%-?™ À6:Ê™]Dó‘Ãa¼N'UËW`Hµ0Ðv£%¬âRN}°ŸÛ…J«CŠDpNMR¹l™EÅ×è.Û`jdÙŒgS£7°á‰'1¥gÄB½?Ëy¤çrïoü6Æ´t2 ‹Ñ™L(”Q£-‰0mDg2¡T«)©oA`Ó7žB1pïù æhá6sf9¥eB4$U!Š<üûŒ>%%¦ûZA £°ƒ%ž³ghº÷~îþr…:ªSEr+*É(,ŠæËä4nºAPig§‰2y,´þZJ¹åP>Û3U\%ÿU£7PX[wݱ*–¢³'Ω)z/´°øÎ-ho°Øþ,èt:.\xÃÿ»QÝE‹®œkjj*MMMsŽm6›ohœËD‘Dõ§Ëg~U€lèKäk('ú•úäŸ0‚Éb±°bÅŠYÛ222Ø´iÓuû¦¥¥ÍzžžNúL ÉkEñ†žsAP|Æ¿c_É9pkÈ™} e Õx»£û’Ü:óÆ@__–Éú²+=^ÿá+ —‹ž#ÿõ.ÊÓ üàá%7cse6›+oÝ’$ÉMÀëå⡃Lrfׇ¸í6¦†‡ùàg?Á11ÎÛÿö”j5yUÕ¬{ôqZî§§ù,ùUÕ„CA.:ˆB­fÚ:‰Ç9Mñ‚rÊ+0ÏäÉ wuðÖ¿þ?–m½—ʦå wuáu9‘€‰¾^"ápÌËl´¤QP]‡¨ç[”ɰ ñâßüOª›VÒtï±×>·›7~ðYÿø“dÍœ„×劅gÓÒpÙlH¸mvŠô_íôùïëÃ:<»At›(ŠÖÔ~ês€‰þ>z[š™èÇëŽ8er¬Cƒ8mSÖ.@¥ÖP¿~#.›7ÿõÿa¤·¥™–ƒû(ª]€93“p0„Ïã&pùéA($è‹úµ>Jµ†ìÒÒ˜7Xk0¢Tkè9{†ñ¬{ì ª—ú"2jŽÜŠJ 7ðÊ\½ír8xfQIl›JsÅaV+1Ab÷áãHÏÍcáÆM\8t?€1-ýw5W{ÊÕWåaÇ‹¶£‡É)-cÑæ»>óC DàÙíÛ©­­·ŒyÍâ- É—šmåå<óøãñ–qS’sàË‹F£á›ßüf¼e$¹†yc 'IòUfjt˜ƒ;^ ·ù¡`€¥wßCDŠpñÐAª–¯$%3 cZ^§“ž³gð8tž“>µNGýúTׯZm|^.ÜGnEåuãý~ZÂ11NZ~¹e4Þq×'ÊÑø|ý~´ã¬êŧN0ØÞJ$KJvKî¼™BÁ@k+û^zŽ5¬âT:- ¥Š‚êZ:OÀërR¹t9m­„B!ÂÁ‘p8V¢5&hm£²i9•Ëò€+¡Ég>ú•FGͪ5(TjJêÒ}æ4“ƒdÑ­$Iâ†Ãá`hhˆššO©>ÌÊ•+ã-cNΜ9CUUÕ'îÑýEÓßß(бÜí$óDŸ/^$'''aëoŒáv»)))¹õÁ>‚Á gÏžeéÒ¥ñ–’ä*’z’$ó€ÉÁÁ¨ír²`Í:.oæíÿ‚>?¶ñQ>øùOQi4,Ûz/UËWÎêr¥’p0ˆ ŠÈ” Œ–4–n»—‰þ>\6¢L†mt”P08«Zögårȼ$I´9ÌHwÿÁ_WI^®PQTŒÞœBÏ™Ó4ïÝ…9=“‚Ú:¬Y7+ÔúZ.èƒa–^¯Ë‰}lŒp84ç±i¹yH‘Jµ½9¹R…J£EŸjA®P W)+RSѧ¤0s2ô4ŸcÏsOãqLãs»‘"rË*È,,"  \_Éœ™ÉÂw`ÎÈœµ½çÜÙY¯3 ‹+ŒôtÍ2Ð{÷~˜¬À?OùýXÃ!FGGã-ev»…Bñ©ú8‘øý~œN'§NŠ·”9¤»»;Þ2ædllŒ³gÏ&l»ºË- †[ï„ðy°Ûí<ýôÓqyÿP(ÄäädÜÞÿ“ès`rr½^z¦vM¢áv» ¤\^S$‘H„ÑÑQÚÚÚâ-eN¦¦¦n}yFb~£_C8fdd$Þ2’Ä‘¯z;<£%²EKh=zx¦8ÚÜv;ý\8t€Ê¥M¤df‘^Pxå AŒ†LG¢×.è÷ãw»9þö›LOY)¬©›ñ®O “ÉÑn½–$I¼ÚOãè[¯³èÎ-d_ÿÔX”ËÉ-¯`É][ LŒpñÈAúZÎG[…ÝÄ@ú£¹ÝÊkþ×®\CÕ²Ü Q.-dÕz=žør¥™\N8bjxµN?«²}çé“ì}þY¬CChF:N#cä¢BA$AŠDHËË#2s­E™Hëžþ‹?E@@”ˈ„¢Eø\vÙÅ¥±ñµF¢(â²ÛgiÍ[¾¹*1Ifã&Ã3ÍÚµkã-eÇŽÃl6SYYo)7d||œÖÖVÖ­[o)sòòË/óàƒÆ[Æœìܹ“U«V%¬ÜÒÒ‚L&£ºº:ÞRnˆÕjåèÑ£lÛ¶-.ïït:ùè£ú3–ès`ÿþýTVVÆzÏ'===Øl6/^o)7Äï÷óþûïsß}÷Å[Êœ$ò¬Ï‹ya Ëd²dxÔWœáááxKˆ+õë72ÞßGëÑÃÈÊXeêžæstŸ;Ciãâhë«‘$"¡áÈr(  ¶Žâ ~dr9‚("I’ ÓöºœL[­H‘’$áqNôûí½Ë‘6¥¥Çúe‡‚A<Ó|n7öñ1.:Àx_/ Ö®gñw#вž“ ŠÈ•JäJ%9eå䔕 ‡b^ñP €udxVø8ÀÄ@?‘p˜©ÑD¹SZ:*­™B1gµñ!Êd˜32 ƒ¸ì6†ÚÛi;v˜Š%MèÍWžt-i¬|`;gw}ˆ!ÕBõÊUø\Nìx™Ì¢bFº»¨[³Ž‘î.œÖIÔ…èSRÉ-«À’›‡uxˆš•«¢EÇÊ+¹xèéWú]G¤ ×D¨5ÈÔ#d6r¥ EPþ6·Ñ»U”J%jµ:át]F¯×'lØçe~åW~%ÞnÊÃ?o 7eùòåñ–pS¼^/r¹¶nÝo 7%ÑÛ—éõzžxâ‰x˸)2™ìÖ™gÌ =I’$Q¤H„±¾Kø=@b¬¯¿ÛM_ËyœV+Jš’†F ÚR*«¤Ûè(n»0§gRR¿ië$'Þ}›lÇ’“K$Â=ãÁéîæäÎwúý€õìJ{Ÿ{:fU4D’ù‰Íf£¯¯oÎÞð‰Àž={ذ!q»;vŒ  ½¦SF¢ÐÓÓƒL&£°°ðÖK}œ;wŽüü|RoÐj4Æét&lªQ0䨱c¬^½:ÞR’\ÅWÊ@—€ZG89`åî¨E.&½@Iææô îùßÂ’Š8G¸Ïåôê«(®o@k4aÉÍE¡R£P©ð¹ÝÑ0rÔ:†T 2¹œŠeËêìÄ6:BjvÎ {jÏ…Ñ’Fݪ5Ÿ¸ ™L¡`ã“ßB©¾yÕa¥Z åÿ¼È«¬$«¸…Rõ±áê‡A’@©V¡ÑÑH’ÄCÿ툄è4ÑÂs*†­ßýuÌYˆ¢Èöïÿ–œ<2‹Š úý˜,iÜÿ[¿‡ÖdÂïñÐsö ™Åű{Ÿ”ÑK=œùð}“ u¶3ÚÝ Á_±ŠŽS'È,.‰èA¿Ÿ3½ÏÙÝÅŽx½¸ì6:OžˆUÞWku,¿ï*–6‡¹xäùUUX‡‡9ýá{¤çÐvìÅõ sè‘H„ÎÓ'9ðÒ ±Ô )"¡ÒéЧ¤ 3šÈ.¹òàÀër±ó'ÿÆÄ@?M}ØôäS”6."è÷ES!ÊÏõsðeæOvíbøÐ¡x˸!)Á ùÍÇÇ[Êœ¬›œä:;ã-cN–Úl\8}O‚†€»Ý„þ[x€PššÊ‹ Ê+èïçüãx˘“DŸõZ-¶}¨›íóa…èØ·ïí/'¾ûÝ/L_(¢««+i '_)Àæ Ð?åŽæÖ"ìïãïv]dku.¿¿)ZÄ$"Iœ´ñãÃ]´O“¢Qòß6V³ª$‘i/?<ÐÁáK¨ä2î«ËãñÅE˜4‰ùÅä˃R£¡¨î“å2RScF¶ÎtÅ#ø µµµ³R þ×ÿú_œ;wÕLúÅ<À<@__?úјœœ¤  €ï|ç;³j¶\²Ùh¹eõŸEr9éj5§¸ì]fsBë[l4rÑjÅz“ˆ§x¢×hJ§ŽÏ<†ÿ <·H$ÂñãÇy饗p8TUUñ[¿õ[œ:uŠ¿ù›¿‰Uâ.((àÏÿüÏQÎ<Ü ƒ¼ñƼñÆ@t¾»\.þøÿƒÁÀŽ;°ÙlhµZî¹çšššbßùŸ/¡?c‰>Êõzzz‚Á[ìs Q¥"K&ûÄ×ð‹N!E“Étë%¹­Ì}Ìé£{Ò‰€€R.R–fàܰ’Ñi/j…ŒªL#NœþÅ©zÊÓõ#]Nz§Ü¨å"îÀ•‚Y'ú­¼ß:B©Å@øª*áV·Ÿ§O\¢©ÐÂÿØZÏÉ)ÚǧYZhá™—púCüìë+öñÃä§h¹»&'šó™$É<Äœ‘Écÿýÿ‹·Œ¯¥ )]Øø™ŽMËÍ#§¬‚ÔìVÜ¿s{>Âïñ’S^Î…CHË+`jxÑK=ˆ2Eu îê åÀ>B3©½ÉÁAÒ ¸p赫V“žŸcbœÝÏü€¡Îv@ ªi9æŒLŽ¿÷6% ¤çÄúÖOô÷Óuú$u«×bHM%5'ñ8Dk'xœÓ„CÑTz^>ú”è$™\NNiÙL¾»€\©@D¤H„p(<«ƒC$âÒùftF™Å%±…LÐï§yßìcc¬ûÚãœÛ·›ï¿KZ~Zc´;A8"àó‘]ZÊòûD£×Ï›µBÆ3'/1îôqÿ‚DQ¤võ:*–6¡Rk(^PÏ‚µë©XÚ„‰0>ЇÏå"¿ª¥ZCvI .» Q&‹¶Ãä JµŸË«‰pëðÇÞy‹“;ßÁ66ÊÙݲïÅçpLŽÇÚØQO}ë±#W ØžiSCƒT×P¾tK–aÃ19Û'ôû øüôœ;K×éS¸v¦'Æ™¶NRµl9UË–“SVÁX_/‚(R¼ ž¡ö6\¶ÛÓƒU&“ÍZÜ«T*DQD¡PÄ j™L6ë5DÛà„B!Nž<É/ùKvî܉Õjebb‚ññqB¡¯½öZ­–üüüyaœ'I’ˆ ãr¹åÍ7ߤ¤¤“É„Çã¡¿¿Ÿ—_~™^xÞÞÞ9Çp»Ý¼ôÒKlß¾ƒÁ€\.Gœé–"J¥29G“$IrSæ]& (e"÷ÔæÒ˜—BϤ ¥LÆò¢t–¤Ò6æ`Ðîá÷ÖWqÉêâ×_:δ?ÈѾI”2‘ÿº¡ ­RNפ (U‡/t½a=`÷Ð7åfÒí§Ø¢çöú¦\<ÚXH(,aѪPÈD,:%ãNü¡Údšd’$I¾ ”j y•Ut9Íþ—^À19Á‚5ëü(Õj´c´š»LF8¤ýÄqNî|›É¡!D™ ¿ÇƒcbI’è9w–ÜŠJö<÷4+|ÛØ(¦´t>?µ«V352Âþ—žG\v^y‘“ï¿Gõò•Ô­Y‡mt}J*ƒ1¦O¡TbJKG©V398ˆÎd”–­ÂÕât°£/¿@0àGDÔZÆ´4œ¶)´;ŒZ§£aÃFÔz=›¾ñ-TZݬ4ŒP @ÀçE©Ñ Š24:=A¿Ÿ ÏÛ'Ž ôûˆ„Ãtœ:ÁHOe‹–Qëôˆr9JÿÐ ‘Pˆ¼Ê*z[Îc›3=ä“¢P(X´h/¼ðõW…ËåbíÚµäçç³qãFž}öYÞzë-ü~?Û·oŸUôK’$ŠŠŠÐétdggsúôiÆÇÇ©ªªÂétâr¹ÈÎÎfïÞ½¬^½ú–=þ_“V+'Nœˆ·Œ›òÞÎñ–pS8€Û펷Œ9éìì$pM«ÌDfllŒééi$I"--_|“É„Ñh$//œœÆÇÇùÉO~ÂïýÞž~Ý'OžD«ÕR[[‹L&£©©‰;vpòäI\.wÝu×¼ )Nô9pòäI&§§ã-cNˆŒÝú@Ÿ@€ƒ²qãÆxKIróÆ@È2jÈ3kQÈDÀ¤QiP# ©:rQ@£aPÉA’ð Ù=d›4¤êT ÁÂÜŽ\š¸éûxƒ!²î©Í¥0UG}N ß~îK ÓaVº­(H$I’$É‹Îdfí£O`´¤±÷ùg¨\¶œ<ÄÉ÷ÞAk4a°XƒÈår$IÂ9eEoN¡vU.öñ1rÊʱQX[Gß…óäUTâqN㙞Fc0PÚ¸˜©±1r+ª¨lZmt·ÃÁäÐ y•U¤çQPH8ÂãœF£×£˜ÉÇ”$ð{½Œ^êAEÂáS##L[­|^˜ùÖŒD"´9ˆ$EØök¿Éùý{°hºçTZ —šÏ‘š•ÍÄ`?n‡í5æ.#ˆ"‚L† ƒ$‡EQvÅHUëõ¬}äqÂQéttŸ9Ã?û ©Ù¹¢H$е ‡å2ô)‚~?>Ï­@@€óçÏSXXÈwÞÉÀÀ|ðÕÕÕ;vŒ-[¶P[[Ëþýûinn¦ººƒÁ½×:_ÿú×Q(¨T*´Z-}ôééé(•J6oÞŒR©drr’––V¬X1/ tŸ×˨×o7åfžÒD`hhˆÄ̼b³ÙZßµÈd2, 7nD&“ÑÖÖÆ¹sç¸÷Þ{Y¶lZ­–@ À™3g¸xñ"ëÖ­›u¼ßïçðáÃlذ¹\ŽÇãáìÙ³444°fÍZZZ8wî74î‘DŸccc$ò·ˆÓéÄo7!Óßßë%¹­$þ_ð«‹²«*¯ \1–¸&\¤™ÿ—báOPl$M§F¥Ñ*刂@º^[Àå!ሄÃÀ¤Q ”Ï«K™$I’/r…Q.G®Ráv8pLŒÓuö4Õ5Èä ü^ –`À a¤§¯Ë…×å"è÷11Ð)=ƒþÖ‹X‡†ñ:Ô¬XÅ’»ï™y9Å X´y 5«Ö Òh)[´„E›·ÄúÏ ‚€$„Dd&ß<=¿cZ:†T ‚p¥k€%'H(Œ‰D¿·EH‘p˜‰R³s0Z,X‡‡UÛá¾ßüÒó "¦F†qNÍ9×è ˜ÒÒ± cŸgìR†”T´FýØÆFñ{<´?J÷¹3x§§q;lÈ•JÒróÐ Œôô`Á66Š%;•FR„ÛS´çrØlQQùùùTTT §OŸÆãñPSSCnn.¥¥¥X­V¦§§q:ƒA<.\Àét"I@AÈÏÏG.—ÏÚ®HÐJÆ7B©T’ú1íãMVÖgoãøE`IK‹uïHDôz=zîÖú‚(((  áñxˆD"d2½½½ô÷÷#I¡Pˆ`0ˆR©Äçóáõzcµ2úûû‰D"äæF‹‡Úív¬V+eeeäææRQQßïgbbâVd~¡$úHII‰ÏLD´Z-F£ñÖúœE‘ŒŒŒxËHr ‰û­~PÈDòÌ:Nö[súÐ(åïâ²SÅŠà „ E$$"¸!T2Å©zDŽõM²¡<“ƒ=ãè”rêsÌëä@Ï85Y&&Ý~º&]lªÈB-OÌ'I’$ùrâu9¹xèg>|ŸúõíéæƒŸÿR$‚1-Ž“Ç±R\¿µNÏêí°âþíу%‰KçÏq`ÇKÜù­ïUR÷r˵è~l££t: À´ÍJÐïg¸³)Q °¦.j÷÷ ðL;éé" D‡˜*ǶÙ'Æ™è'£°ˆò%K黨ÂW^Ä>6Æ‚µëîìàÀ+/RP]CFaQ,$>è÷³ó?~DnY%k},æ®Öë)m\ÌÑ7^eÏsOã´N²pÓfTZ¯üÃß–›Ëßú6›–ûéMvv6===”••QVV ÏËË£««‹-[¶ O`ƒíj222XÕØÈ/¸H܃<ÀŸ'p¬;wvîd2A‹ÄÕÔÔà …Ø?OŠÄeeeQ]]Í /¼@JJ lß¾žžŽ=Jee%.—‹””ª««9yò$@€5kÖ P(˜œœD¥RÅ F³ÙL^^'NœˆÕŒHMMMx£÷j}¬\¹’îæfº´H\QQÕii¼•ÀEâ¶nÝoI®a~üÿŒ(d"+ŠÒ8Ùoå/wž'Ë F­ „£ùPÏœèáäÀ-#¢ÅájÈgEq÷-ÈãæA>jÅá ðå¥äšµ<´°€Ÿíæ/Þk&‘(Hѱ¼(m–g?I’$I>oìc£´Üϲm÷Q½b%½ç›Ùû³,Ù²•éÉ ºNŸ$S¼ AP¨Õ\í[Uª5ˆ¢ˆR£A=‡‡KŠHŒ^ê¡¿õ"5² ))ô]ha¨³™\NéÂE¤fesáÀ><ÓD™¯Ó‰9óÊT@@k0 œ3g!€IDATÉ«Þ çÉ(,"¯¢Š ?I×éSÕÕ“_]˹=aHµ°üþ£Eæf)4¬ßmÓw•W[J.B­ÓaÅšJ~U5r¥ŠeÛîE­Ó¡Òh©ß° Kn.› Á@ny%†T ›6“’™…×é$5;‡œ²2A ¿µ9…”Ì[_L«T*Ö¯_Ï… ˜žžÆb±°råJ 1 \¸p@ @mm-µµµèõzŠ‹‹1 F¶oßÎùóçq»Ý¬X±‚ºº:Ôj5>ø ÇŽÃív³uëVêêê’¨’$ùŒ( }ôQÎ;‡ßïçÉ'Ÿ¤°°ŒŒ ôz=cccdff²eËÌf3ééé„B¡XJIaa!&æ1ÕjµlÙ²… .àñxÈÏϧººzÞTpO’$I|˜7ú¢¼rMµ¤ÌTb+HÑñ¿ï[H¦!ºxûVÓ•–;5ÿòÈR4JR4JþøŽZÆ]>Tr‘4w „\XSšAm¶yVyaŠRÎöú|ç§âò‡Ð«ä”¥€ºlßßPͨӋ\É3kIÓ%nhM’$I¾œ¤æä²åW¿‡%'¹BAÙ¢%¤de“’•ß㦤¡Q&›³‡wfQ1Ÿøæœÿ¯P*¹ç7~ cZ:¢ìÆBÑš…hMfz[γhó6>ñÕ¯ži!&Êd/h §¬™B\¡ ~ýFADwM!%™\Níêµ7O©VS¼ â ³¶W/_û]g2S±´éz-:=UM+fm»Ü¯½~݆ët|VÌf3«V­ºn{vv6ÙÙ×߇5kÖ\¹_™™dff^·^¯gÓ¦M·EßÍøÄ‡Š·Œ›òúL_ëDe÷®]¸\®x˘“ÖÖVÒü©Ô#™™™Üyç³¶ët:šš®ÿ¬œõ:''‡œœœYÛÒÒÒ®ËUŸO$ú8räã \(±··—ÀÐP¼ẻßïg÷îÝÜ}÷Ýñ–’ä*ænÒ(1i®„^j2j³®,š R®x€Trõ9WòÚ Su¦^ï!ªÈ˜;'D§’S“uý¢LòS´ä§hI’$I’x¡ÒhÉ,,޽–+•dE_+Õꨗù&èSRЙÍsz[E™Œ²ÅK?‘76=¿€ºÕk¸pø 6‘^PøéNFP]Uµ\oŽ^r˽˜Ó3X´ù®YãçÿyÿýTTUÅ[Æ æBs3ÿôÝïÆ[Êœ<óŸÿ‰ýþ(Þ2æäÍW_å¿=ôPÂV?{êr¹œº††Ï<Æ|(xx+ÜUVÆz(Þ2æ$ÑçÀ®÷ßçëêÈ™ÉûO4:ÛÛ™²ZùåÊ•·>Øç@$a,«ÌU™7z’$I’$¹½|œñýIC¥Qdñ][Y|×—'­éžûiºçþx˸e´ ¦«Ò‰ÉD~NNÂê().Nh}…yy¤êtèTcvz:2™,¡¯a¼QˆbB_ŸDŸù99¤›L «1#%uÏ™LF~~~¼e$¹†¤ž$I’$I’$ù±X,X,–[ès$ÑÃ>×®]{ëƒ|ŽTTTÄ[B’[$ÑçÀÒ¥Kã-á¦Ä[ÂMQ*•ó6MêËLÒ@O’$AñNYéÛ·+Þ2’ÄŸÝÆÀ‘_úÐÎ/ A¯G(Àôôt¼¥Ìbbb¥RI[[[¼¥$I’øý~ÆÇÇÙ±cG\Þ? 222·÷O’d>`OÐ.Ÿ'óÂ@‡ÃŒŒŒÄ[F’8"Í£"3· ¥ÑHfâxËHü.'5 %po×$Wpbñ8Y™`9†§NÂd2QVVo)7dllŒÖÖVÖ¯_o)sòâ‹/òµ¯}-Þ2æä½÷ÞcÕªU Ûg¹¹¹¹\NMMM¼¥Ü©©)Nž<·H§ÓÉþýû:"ÑçÀ¾}û¨¨¨¸a¡ÍD »»›ÍÆ’%Kâ-冸|>vîÜÉ<o)sòUÌ‘ŸºL&#///Þ2’Ä‘áááxKøÂ‘ɨ XV’/Q.Ge2#OМµ$³ ºÝh “žžo)³ÐétÆ„Óu¿ßZ­NX}r¹<¡õ)•J, f³9ÞRnˆÁ`HøkÏÏ R©D¥R%ôõIôû§ÑhHIIIX„ÕçõzQ( «¢ŸÁ¯_½3N’$I’/’$}¦¾×¡@ŸÛÆ`@6×?IšÕoüVÞ/I’kÑjµ ÿð=Ñs¨‹ŠŠP*•·>Ðç„ÅbA6G›Æ$óƒDŸ¹¹¹ètº[èsÂd2%tºš\.§´´4Þ2’\CÒ@O’$I’yJ$áÒ¹3XG†1¤¤‡®Û'¯¢ sÆõý³'8¿/‹ïÚJê BCÁ G^ßAÅÒ&Ôz=£=Ýä”WмgUM+°äÎeXIøÜn\6‘H„p(HÐç'àóâs»ñ8§QªÔ,Ü´9º·$ðy‰„ñ”jÍÜ ’|iHMM%555Þ2nÊÆã-á¦,_¾<ÞnJrá?ÿIô9°páÂxK¸)¹ Úþí2 …‚5kÖÄ[F’k˜÷+ çOõ¢‰Ü· ¥,qŸP%I’$Éí& Ѽoý(”*äJr¥*öމqÖ?ñ Ì™ v´qêý÷úý¸ívÆú뻄Z§ %+‹ÅwÞ9#“p(Ä©ß'-/HDâô‡;Ùü­ïpfׇd•”Îi GºϞáðë;@’ˆ„ÃD"”j5ƒµNë×às»ÙýÌÏ™¢=×<üE ê ü‚ˆL¡ˆ÷¥ž·üõXÏœ‰·ŒR•–Æ]eeüóÑ£ñ–2'ÿvÏ=üÆÛoÇ[ÆœüùúõüèäIF]®xK¹!÷WUá…ØÙÕõ±ûþíæÍ4df~‚Q¿\âÏ<os’èsà·›šØÕÓÃʼn‰xK¹!k É7yîüùÛ:î›?Ž2ò¥eÞèÝ“.Ô ‘OQD,"I Ø=üëþvº']ìøNâçH’$I’¹ð¹Ý wu’U\‚}l”UÛŸˆ¿ÓÖIÞÿÇ r§ÕÊpW'Å КLPÅõ ØÆGlk#·¼’ÞóÍÔ®ZC(˜J_Ëy\¶)Z@©V3ÑßÇ{?þ7\¶)v?ûK޾ñ¦Œ îùß&sêý÷h=rˆ­ßû/´9„€€ “¡P«îì 5;µNßíf¤»‹Áö6ò*«P¨TT¯\ÏåÂ>>Æù}{ð{=H’Ä;ÿþC2 Yqÿö½¶Ñ¿ñ*ƒmmXrsX½ý²ŠKc!ú’$1Öw‰co½ÁHw‹…å÷>@ñ‚.?ÇÑ7_Ã95EvI+îžæ³tœ8ƃ¿÷n“—w``€;vÐßßZ­æ`É’%üýßÿ=ç΋…?úè£lݺ5öZ’$:;;yþùçéïï'77—Ç{Œêêj¾ûÝï⟹Çø‡H]]], ¡ylŒ–-°ÓÖÛËð¹s¼ïóÅ[Êœüð'?á}'Þ2æ$gx˜·ü~¦"‘xK¹!îþ~‚À±`ðc÷ý£Õ«ã-—cÇŽñ/ÿò/±×N§“ï~÷»¬ZµŠ×_cÇŽ!—Ëyê©§X´hÑ Ó}õWÅš5k¸ÿþûq¹\¼þúë2D‘Û:î§±{n†ÏçãÍ7ßäÑGÇåI2óÆ@÷‡ÂôN¹±ºä™´ä¥h…#\uà †±hUYt¨å2ìÞÝ“.|Á0Z¥œòtz•œ~›‡ÿ<Ú/Ááýø?I’$I’ˆœß¿QÉ.-Ã:ŸH$‡~ˆÃáàïþîï ££#V q>ðsÀç#‘¿E‚¡·×4¿½H’„'ÁïñW‘ya G$‰Ó6~~¼›ð‡ÂüþÆjZFìD›öaóøÍÕ,/JãG‡ºèšt’¦S2âð±®<ƒ_i*Å ’ó«+Ji›¦sÜïÓK’$I’Omt„æ½»@Pët¤åæ3Ðv‘æ= I/(DŸšŠB¥"àžv‰„9ñîÛ¢ f?N«•€×ËÅÃQªÕ¸ìvü^/2¹ Að{½(5nڌΜÂÅ#)_²”’ú…ˆ2’$1Þ߇gÚAam*–ÜŠ N}¸}JÊU¹äà²ÙÈ,*"íªyûø}Zè¿Ø‚cbœ‹‡`Äi³’)‰¦ üìzæçäUT±áñ'cF³Ûá`rp€Âº:jV®&è÷sáÐ~1]&—S¹¬‰k×cHµ0ÔÕ}l¹Rɲm÷’šƒßã¡ûÌ)$IBc0R´ žÖ‹¸v )·æE¿Ü*R¥R!Š" …•J…Çã!sþüyÚÚÚHKK£®®“É;V&“ñÀ‘‘\.'55•ññq\.‘H„àv»ÉËË£¦¦fÞ,üõz=%éépéR¼¥ÌIý‚p›CSo'ìé냫¢(‰¬¬,ü‘ŒÇ[ʧ"ðÁ°hÑ"Ìf3ýýý”••‘’’‚Ñh$++‹ŽŽŽYz$áܹsø|>¯×ËÀÀiii>|…BÁªU«æÍ…ÄŸÅÅÅôLN‚31×ó–ÔTr5Š·”’Èm¿ÊÌ =‘8?bG!ŠüñæZ”2‘ÝÈgrÎAàÉ%Ũä2þ×û-\±³¬ÐBišž{äRžfàµæž=y‰_i*Å¢SaÑ©èšHÌœ­$I’$ù8:O@”Éð{½Œtw3mD’"D""R„p0tœŽÆ`œZ ø x½¨´:D™ ­Á@Ðç#àõÎÒ“_UÃXo»Ÿý#=Ý,Þ¼…ìâRd ]gNqüí7 ‡Ã”/^ŠR£!¿ªšÖVìc£·l +•J.\Èk¯½Æ?ýÓ?a·ÛY¼x1©©©à÷ûQ©T>|˜ÑÑQ¶mÛ[Ä+ èííåÌ™3¬\¹FCyy9n·›P(Ä›o¾‰Ïçcùòå ]5ø2f³™Úºº„6ÐW­Z•ÐÆIã¢EhÆÇÖ@/((À Í;ýÒ¥KX­VÖ­[D[QåççÑ5§ÑhÄápÌ:f||œsçαdÉZZZðx<Øl6|>‹…ÎÎNzzzxüñÇÑÏD%:‰>jjj8ÕÜœ°zfV¥ii k + –-[oI®a^èrQ¤>ÇÌ[-ƒüîŽS¬.Içú|ÒõÑbH5Y&Òõj‰To0LD’0©üŸÝ­Ø<ìÞ6O"™$I’$É''-/ŸÕ=ʞ瞦¨ne‹Ózä0ÃH’„Öh¤níz4#2¹œì’RR2³è9w†ÁöV–lÙŠffØr`UË–£ÒFÓ††:Ú)ª[€}bœ¢ºzTZ-ƒxÓ ´·bNÏ$5'}J áPÏô4ƒùUaÖ~›‘K=Èd2ÂáS##8§¦ð¹ÝÑömD=N­‡âuNsçS¿JÛ±#L°òÁ‡Qª5üg[+jž¾ -äWÕ 1(¬]pýÅQ˜ñRKD"‘ضkQiud110@ëEÊ-Ƙ–ŽÎd"½ ¾ çêl'·¢£% ß‡ï6à ƒtww“‘‘Áš5kâÔ©S¬]»–o|ã¨Õj4 &“‰£Gb³ÙȾ¦º~__?üá¹ûî»Y¶l2™ŒßýÝßÅl6#“Éðù|œ>}š¥K—Î =I’D$sáÂÒÓÓÉÊÊ" "Bô{åª}®n 9qâƒÚÚZ.^¼û?I’hlldÓ¦MtvvòÊ+¯0<<œðíË’$I?æ….°¬ÐÂÏžXÁéÁ)>jåk?;À?>¸…LD¢›‚Ðcuógïžãïï[ÄÒB û»Æùß^ˆ÷©$I’$Ém¡¸~!Öá!D™Œ”¬l¬CƒŒtwaÎÈÄërᜲâ¶Û)]¸(vŒZ§cóSßá•¿ÿö¿ô<›¿õíŽ]·z-~¯‡³{v!W*(_²ŒòÅK±Ž Óvì(Õ+WQÚЂ€ÿªÜ5è"Öçv“QX<³ \v*­Áˆ>%)AÂár¹•VËÔÈ0©9¹˜32™DÖ<ü5ò«ªcáôn‡¹\ËaÐèõR-ØGGqÛíLö£7›ÑML[­ÈäÑcÏïߋђFÍŠUˆ¢Œco¿ÁÅÇ𺜔-ZÌÒ-Ûú}\j>Ë‚µëcãߎ_§ÓI? , ®®ŽììlŽ;F{{;f³™’’A˜eXû|>3/^äg?ûßûÞ÷(++Cìv;ýýýX,Aˆý̆††xwx8Þ2nÊò“xK¸)/¿ü2öÎã?yòä¼ÊA°Ûí ÑÐЀJ¥B, ccc„B!£££lݺ•`0ˆ$I„B!Î;ÇÐЇfxxµZR©$%%…p8Œ$IÈd²y5G!ñçÀ{ï½Çàm*˜öyÐÖÚŠ5ï¹Ïçãå—_æßøF¼¥$¹Šya ‡#-#v‰õ噬+Ëä×^8Fó}Îc†ìnÔ2‹óS ΑsùƒD$ I‚`8B !"Iø‚aDQˆúñ>Ù$I’$ù‚@( àóqvÏGŒtw±`íz¦§¬ØFF¨[³Ž“;ßÁãt°ö‘Çg¼=¦´tîøæStŸ=ÍÄ@?.»-j,_µ€D1š§.IL[­ ¶µà°N ˜@¥Ö€ U\‚Æ``rp€` €Ïåb¨«¿Ç Ì·R4 ýò¶‰¦ÆF±dçPÖ¸˜¾–ózõe¬ÃCT/_Éäàû_zŽì²rrJËby쯗·ørÊ*Xóð£±tÁHIC#Gß|=Ï=ÍäÐ õë6 ÖéØñ‡%7— ÃAóÞÝ´ÍÃ:4HvI)iy¹œÝõ]gN‘’‘ÉäÐ •ËšPku8§¬(TªXº[A§Ó‘““Ckk+J¥›Í†R©$==wß}—ŒŒ rssinn¦¤¤„ÔÔTÞxã –,YBZZ/¼ð¹¹¹ 288Hjj*ƒ—_~™ááa íííÜyç³<{‰Œ$I„xa QOi"It}‘‰Y_~nÜn7‡”” šžRWWÇÛo¿ÍÎ;q:dddP^^ÎéÓ§ ¬X±‚?û³?‹ñÌ3Ï T*yà8xð ‡FIII!g&Åh>ðs IèB‰Iºm×?$IJø{üUd^èI¢kÒÅGí#äš´ˆ"TrX°ß¸ò`yš‘4½Š¿ùè©Zr™€B.òÜÉ^êsSxõ\?=V7võ~ Õ™Fî©ËŬ™•p“$IòÕ$ä÷ ƒ,Þ¼…š•«ÙóüÓÈ jV®Fc0Ðyòx¬@ÙerË+îêd÷3¿Àe·¡ÑnØk\ŠDjoçRó9¡žÎ“'è=ߌ(“ñÈü )YÙ\<|¯ÓßíÂ;==«œ(èÌfÔZ}Ðsö4–ì j°æ‘Çè1ƒ•+WÎJ1©¨¨àÎ;ïŒ=`ûö·¿R©D­VßðX}}}lû²eËËåtuu‘––FSSÓ¼É?‡ÄŸôŽ1pMM€D!#=­úúâ-å†( ã-#É5Ì ]!¹«*›|³–)Q(lÐQžn@!+@”2‘ˆ_k,B!É1køó»ëvx0ªTdYR`AÒt*šŠÒXZ`ákÑÂ;5*ùüð:$I’$ €)3“;¿ý]ò*ªÐ™LÈ•J¬]OÀëC¡RQ¾x)¹eWUR"Êå”44’š“ ’„Æ`¸n‘)W(¸ã›¿‚9#3æ}¿AD‘Œ‚B4z=ý­©_·”2z…‚EEñ–2'Ù:]¿ýÛñ–1'é {¾õ-B‘Ä $7(•H’įZõ±ûæŸ`Ä/Š‹ù÷Üos’ès U­f[y9 ÓÖ*ÈE‘oÝf#XuS™B¡rù¼1 ¿$ïF’$I’ÌSA@¸æôí,@$~€L.g僳òÁ‡ã}In+î{€÷=o·L–^Oiê­µˆû¼äà™3sF$ÿþïÿίÿú¯Ç[Æœ¼ð lÙ²s‚ÞããÇ#—˯ó<'¹‚N¡HØ9 ‰?Þyçêëë)½AR"pñâE&''Y»vm¼¥Ü¯×Ë‹/¾ÈSO=o)I®bþº’$I’$I’$I’$I’$I’/Iz’$I’$ #§_çO’˜Ý.<Áï½÷^¼¥Ìâr«§þþþxK¹!.—‹‰‰‰„»nWãt:Zßøø8{÷îE¥RÝú`Ÿcccˆ¢ÈØØX¼¥Ü¯×ËÈÈHÜîq `||<¡?c‰>úûûñx<´´´Ä[Ê ™ššÂçóáv»ã-冄B!¦¦¦úOOOÇ[Âμ0Ð#‘£££ñ–‘$Ž$[@$ùªaÌ+D¦Lv•˜x&ÇIõ¹©©©‰·”Y„B! ÅÅÅ·>ØW”D»§I}·»ÝŽË力N—ËÅäädB_§DÖ6ôÍ®.j˜ˆtwwÇ[Âμ0ÐEQ$+++Þ2’Ä‘‘yT6I’Û.#¹ZoI>R8ŒÑ-£°°ðÖ»ô÷÷“šššpº.‡ ƒ¨øsîv»Ñétñ–1'µZ°… ‚  ¸AÇD@«ÕÒÕÕ·9âp8Ðjµ ;G!ñç€ÏçC¡PܰÝ]" ‰D" å"I^¯­Vo)s¢ü :+óýFBE1ùóþ¹…¯’|y$‰ ßO(ø¸?ÓØŸ—€Ïw]ñ„F’‡BŸx÷H8L(àŸs¬O´-I’ÏÀÈÈ~øa¼eÜ”§Ÿ~:ÞnÊ›o¾™ÐáŸgÏžåüùóñ–‘äHô9°k×.†‡‡ã-cN:;;9vìX¼ẻÏç㥗^Š·Œ$×0/<èI’$¹}8&&îê¸n»(“‘QXDJf4ZEŠD˜¶ZqLNôûðLOƒ$‘’•M(Àçqôù(¨­Ã”–>k,ëðã}½±× • Q”á÷zbÛTZY%%h FBÝçμª—ofaú”T¦­“¤de£¼—-ä÷sáдF#å‹—"ˆ"Î)+.›ŒÂ"dr9A¿Ö#‡É*.Ag63ÖÛK88Û Ï,.Áh™Ýs; Òvì‚ R½b%rEb=Á„CL[£çê´N¢Ôhȯ®Á6:JoK35µèŒ&4# • $‰KçÏ É«¬‚;{¼¿Ö ,ºónA@®R¢Pª‡Bœùð}ŠêPiµLô“QXLÛÑÔ,lŒ}Nn„ßãÁ3í ‰ ‡úý~ü^>— …JEõŠhÛ¥èCÒUm¢äJÕu½Û“$I’$I’$I¾ ÌûÐë̓(d"wVe¡Í›€€$IâÆpW{ž{š”¬ì˜…pMMÑtßý1Ã+pñÈAš÷ìB’$äJ%r…‚€ÏG$F”É0ZÒЧ¦Î2Ð¥CðÔûï‘’™…‰à²ÛP¨Tý~Liéý~"‘0žø&Zƒ‘ñ>íx £%iëŽÉIrÊÊÉ-¯`jd˜ÅwÞMVI)2¹ŸÇÍÙ]2z©‡p0ÈPg*† ‡"AŸ”¬l,9¹Èär^§>xÆ;ÁžçžF£×ƒ …Ã8§¬¬{üÉë ôH(È@[+à u´Ç®UZ^>Õ+V¡ŽsÈŸsjŠþØÇÇP¨TT-_‰ ŠÜñ#Ý]XróÐèô¬{ìëäUV!'Oàóxè»ØÂäà`të$Ö¡!;ÚA¨[µ†ÚÕk ƒ|ítf pæ£÷ÙøäSyó5Ì™™sè‘H„KçÏqü·¤‘p˜H(ŒL©@¥Ñ P©É((Œè~‡¯¼ˆm4šÆ"Ëï}€üêBÁhx¬Lž˜á±ó9~g{{¼eܵšú”ž|õÕxK™“o/Y’Ðú¶ò§àã-å†,6› Iÿ'A¯¡Òïg[œÃgÏŒŽòN‚^Hü9pgFÿÒÒÂЉñ–rC*õz,J%?¾ÅkX“žÎ_³æ¶ëS*• Ûî«Ì¼7Ð[Fì¨26UfòI—pÞ`˜·Z†xát/nˆ»ª³yª©”TmbyÈ’$ù<úýÈ•JVocZÔ(uNMñÁÏJÐw%Ô9ð31ÐÏx_ÔHR(‘ ?êåer¤ååQ¼ I’xçß~€J«C£×ã™v`HI!Žà²ÛQ¨TDB!tFŸ¿×C8]Tv?ŽÛá ¤¡‘é©Iò«ªìhcrp€…›6sâ½wHËËgõC Š2Œ©‚~?A¿ŸÉ~4zZƒóûöbJOgÕö‡Q¨Ttž<ÁÞŸÅ:4ÈþŸCg631ÐÏ’-ÛÉåø½&‡x½s^¯H8L0} QÏ:’ÄÉïÐ}ö4÷ýÖï¡Ñ¾ðû¨5Yz÷=|õ%,9y‚Àûÿù\¶)Ö<ü5>D¥Õâs»9¿o7ÝçÎ…HË˧rYΩ)Ú­VŒéid!W*IÉÊ&‰0Ö{ ·ÝFÇÉ(T*F/õðá/þ·ÝÆ—_àô;1¦¥q×· $‰æ}{¸ph?w>õ]ZÄçv!ˆ"2¹œ±¾K¤fåD=óÁ SÃà wu’SVŽL.'¯¢’”¬,¦­“´=‚gÚ’ÄG?ÿO,yy,½ûž½.ÛÇß}›ÞóÍd²âþí¤æäÎÚgjt˜“ï½Ã@{)™Y,Ûz/y•U v¶sìÍ×pLLWYÍÒ»ï¡ãÔqú/´pïoþj½þSߟ‘‘~ñ‹_PXXÈöíÛQ©TØív^{í5Ž;Fzz:ßþö·)..fdd„ŸýìgôõõQ__Ï£>Jzú쨔ÑÑQž~úi:;;©­­å±Ç#33“ŽŽ~ô£áñxX¿~=÷ÜsϬ|уýý$fmcXž—GyVÏ&pô­Zųï¼osòHm-ï?Î%»=ÞRnHê²exC¡„½ÇéÀ¶ººØkI’èîîæ¿øccc¬\¹’'Ÿ|—ËÅ›o¾É¹sçE‘'žx‚ÆÆÆYcMOOóöÛosêÔ){ì1–.] ÀéÓ§ùùÏίýÚ¯QwÕû MOó\‚^Hü9°zÛ6vtpx` ÞRnÈÃ55T§¥ÝòØPTô¹è2™Œ’’’x]ž$s0o\ÎÁp„!‡‡¶±iÚǧ™t]1$‘6­cÓ Ú=ÃÑPIw D÷¤“Ö1=VÞ`I‚=c¼Ñ<À]_Åÿ{x §müäp‘dne’¯ ’D8"ºò3+·X’°3ØÖJÓ=÷Qµ|*­–´Ü\JYÿø×Ñèõlýµß`í£OÐzä=Íç¨lZŽ(—#W*1¤Z0¤¤Ä†Uj4ÒÒЙͳä,½{9eå|õetF3’-ßù‘H˜ï½Ípw'µ«Vãó¸i;z˜áž.ü^¯—p8LÀçãRó9‚?©Ù9´=ÌpW'iyy,¿ç~Ö<ü5”Z-¢(c¨£þÖ wvâ÷\1Î#á0íÇpà•8üÆ«Œöt£P©1¤¤bHM%5+›‚êÔz=5+V3948ã)þâ¿;¦FG8·ç#&¸Ô|–ŽÇXýÐ#4Þqû_~‘³»>dÉ–m¤de#Š"ò/‘ËnÃ11Á¡W_¡õÈ!ìãcø=Î|ô>­G!Iìãã¼úK$¦ëÔIZ"·¼’ŒüBdr)™Yd—–—ÀÄàg÷|Dny%Z“Þˆ‘ˆ„Â}~$IÂïõâ²Ù°ã÷zbz.‡»/¹k+åKÐŒÈJ$IÂ>1M­¸ü±ŒD˜Æ955ëZ„‚ANî|öãG©[³ŽÑ¾^ö¿ò">Ï•¶6^—‹“;ße¸«“kÖ394ÀÞž¡ïB ûž–p0Då²å´Ÿ8ÊÉ÷ߥ|ÑF/õpòýw?õýµZ­ìر›Í†×ëE’$B¡~ø!‡ø‡`ëÖ­üèG?bllŒÿøÇ,\¸þçF¯×óÖ[oá»*ÝÃï÷óóŸÿœòòr~ðƒ‘‘Ák¯½Æää$ÿ÷Ïw¾óþú¯ÿšŽŽŽ?NäªtD& &tþ4€õšÏZ¢á°Û 'ðýöz½xoò4Ñðx<üô§?eëÖ­üÃ?üN§“±±1>ÌØØÿãü~ÿ÷ŸÿóþϬîB‘H„ãÇÓÓÓÃ_üÅ_ð§ú§üßÿûæÈ‘#=z¿ßÇã¹uñ!Ñç€Óé$˜ $ýþNÔkýìÚl¶xËHr óƒ.Iç†lüôH´Ì¾Õ ¾¿±€öñi~y¢‡›$øíu,ηðŸG{8Þ7‰N)cÚâ¾¹<²°³†ß^WÉâüTV§Ñku K¨äÉbdI¾¼D"”5pð•år¢†)‚€R£AŠD€©‘a\v§>xµN‡L&Çípàv8˜Àïñ0ÐÞJíêµQÃöØÌäUT1ØÞF(djd˜p(„F§G®Râs»˜˜ñÈ_Æ9eåÌG0ÜÕR¥& røW ‡B¨4Z&ÐM uvPºpÁ€¿ÇC(`ôRö±Qj5é…eÔ øqNY ‡B¤decLKçìîQªTÖ.Àa £ Q.'àóâ˜i ‡B\<|ˆ‘î.²JJIÍÎÀ66J$aàâ4z™EÅhM&JêÒÛÒÌâ;ïFÕƒˆ/•FKZ^>­GÉ.-#èóãv؉„C(T*d 9CíäWU“WQ…θûØ…\:wµFKfQ1¦´4¼.ŽÉ‰Ø=eÑâŒ>· …ZÍ’»·aHµÐyú5«VS\߈(ŠH’Äx_/.ÛÅõ ¨µ: jj8³û´ãÌgL" ôËðLO“žŸOFÁ•ªÅÎ)+#Ý]\:ßÌ´u’®Ó'p;츧H’„$I‚@Àïã­þ3y•Õlüú7f*W{v&ú(^Ð@ýúD"aZÂ>>NVQ´Å˜L&£|ÑêÖ¬#%3 ë𠓃‚À’-[I/($ Òßv‘p0€Ö`¤¨n}-çiÜtçu•n†Ñhä‰'ž`÷îÝ8Îè9Î,ôkkkÑëõTVV¢×ë9tè¡PˆÆÆFÔj5555ÓÏ‹§ûxlQ s¯,¤Çœ>ÎÛY]’ŽR–4Γ|y‰„Üþ`'­Èdrü™Å%¸lSxÓ¢HçÉ„êÖ¬£xA¥‹ék9OJfòkŠv|¾Xá4·Ãm|ŒÂšº˜Ñ”š•B­Â>0€\.' ôûq…íÔ¯Û@ûñ£x]ÎXØùHO7Cíd—•1ØÞŽ$I¬ìI¼nƒímÔ¬\Mù¢¥èŒ&ÚÛ¢ç%Iˆ2 ¥¹\\©¤ªi%5µ Itœ8ÎÑ7_G©ÖDóÈ%årdr2™ü†JÙôÍ_A¼ªmK(àÇ¿ÿ»³ö+¨®¥÷|3S#Ã_¸nÎÈ$§¬"zîjƒímØÇÇ°Ž¢P©ÑšL4ïÙM0àçWþúï™Ä:2DJf&#=]HH„~ü^o,uÀ>6ŠÁ’†ß磤~!n‡æ½»Dï´“3}@ÏÙ³-¨§tá"¦FGЛSÑM±1TZ-…(5\¶)Ì™™˜Ó3îé‚«®ùÄ@?GßzëÐ`,}ÀípÐzô0SCCÈd2,9¹”/^ŠB¥bÅ¡7™gôGÚ¤"Êdh Æhþ«Š*5Šë21ÐÏÁ/3ÔÙÁ‚µÈ)+G®TÒÛÒÌÉ÷ß#èóSÚ¸¥FCAM-Gß|ÛØè§2Ð ©©©³çK @0Œµ²‘Édh4FFFP«Õ±ù¥Õj ‡ÃøýW¢ÄÜn7J¥2ÖªJ­V#I###¤\õ¹3™Ltwwϯ®I’$###¸Ýnºººðûý|ðÁ|ï{ߣªªŠóçÏó“Ÿü·ÛM}}=ÙÙÙ±ãd2•••œ:uŠÿøÇx½^jkkÉÉÉùJ¶ˆJ’$É­1/ t™(P•iäÝ‹Ãüù»Í4¥±¥:‹.ÚS°>ÇL–QC8"‘®Wá „ˆHPbÑóÌÉKL{ƒŒ»ü Úg‡N{ùÛ.RžndkMn²•W’/5R$ÂÅ#‘$‰¢úÛZ x½ØÆÆPëôQoáÅ:N£jùJ´F#éyùtžsš©Ñò«jXr×ÖØ{FÂ!Nì|—Œ‚"ZìcßKÏã˜G¥ÕÒ¼o^·‹á®DQ$ ðú®»Ví'cžeJ‘È,#À8SðÎëúâ}XáPˆ“;ßÁœ™‰F§gjl—m I’0Z,,¹k+-÷¡“™üôµ´ùÕ5´=‚8snR$2SmýJ˜¬(—SPS‹cr’ò%K‘ÉŒ÷õFÏS+U(5d ¡`·ÃÖ`ˆV‹ŸÁïñ0Þ߇(“ …°ávLãuMÇÒ)¤H„ ‡`eýãß çìi&‡YóÈc(”J~ñÿûD:O «¸„ôü*–,»þb‚(ÌŒ;ó#7üN—Éåh d29“ƒx]N ©äJ%Zƒé‰q&‡)¬­Ã˜–NÀï»-÷W˜Ñsµñ,IR¬wïåí—ÿ½Zûåã®ÝçrÃe"‘ȼðœ_&--¦ÒRÞJàDÛ¶nåßÞ}7Þ2ædíºu8u ›Ëo)7¤²²_8Ìé®®xKùDH’„N§ãî»ïF¥RñOÿôOœ8q‚´´4T*õõõx½^>ŒÕjE¹D"ÆÆÆËåÔ×ר·o“““äääÄû´n‰DŸË–-cøÒ%&&â-å†Pj4²¯%1«¨T*6oÞoI®a^è¢ °¼(|p§ú­ìëçùS—øûû ”Ë„hè» D—gƒv7ñ^3ßßXÍ’| G{'ùç½WÒó £F)0mD¡Ö 5Ñ ÈäòX*…ßãF­Õ’š•ÅÙ)+)™Y¤fç0=9‰ ¬|`;ù•U(5Z$~?¢LœÕöN¥Õ¢3™™¶Zñ{¢´½€×‹ F‹¶;Š)=Ew܉F§çØÛoÐv´P0HÉÂ…¬zða¿¶ƒÎS'¨^¾2jìJÜ–û«V«c…â$IÂçóát:illd`` –«n·ÛQ(hµZB¡¢(b6›cù«’$áp8E‘òòrΞ=ÛollŒ´´´yc¤«Õj222â-ã¦Ä[ÂMÉÎÎF‘À- M&ÊP(Þ2>1ÙÙÙ‚‹XÑétLOO399Iqq1«W¯&sðàAÚÛÛcÅC¡­­­°fÍ$IâàÁƒ´¶¶Î{=Ñç@zz:ê‘‘x˘½^]DU"!Š"¹¹¹·>P’ÛJâ~«_EX’¸du–$lÈçú|~í…cíµÎyL÷dt‘¾¹2›ˆ$1ìðâ †‰HãNþe[jr¸¯.¹  GÉD’>ô$_v\v[4gøªª¿‡c¦j·=æ… ‡BÈÑboýèLfR²2±ã™v ÑPët„C!Ô:r…—íJ1QÙô§ØóìÓÔÔ’’•Mó¾ÝlxüÑ*Ý(T*šî¹žæ3Œôt±të½Ô¯ßȾŸc¼ïM÷ÜÇΟþ¿ÇƒL.å…‹2ùUÕT6-½g8âøÛoÆ^/X··ÝNoËy,9yÔÔppÇK䔕‘WQÉpWj½žî³§D·ÃÎHO7:s Z£ ÷@?Åu êhgé–{è=ßLOóY2‹Š‘+•¸lSÈʸ´\Ë.)eÍC_c¨«A€ÆÍ[ðL;˜B­Ó£5ûY÷µ'È*.AÖ>ò^y‘€Ï‡R­A”ÉЛSpÙ¦b5L–4"¡0 …’ˆ:’„gÚu(Ú’Í>1A8Â95}0"¤df¢1˜" às{ìhÃë¼*ëN’¢•òg¼½Ã¾.¦§¬˜ÒÒ)iXÄîg~Α7^e¼¯—•÷ogzr‚}//¯ÿó?’]ZÎêíÄÒ)t&3E 8þöìyî—ŒtwQ³j ƒþ毰ää²þ±¯3ÑßËñwß$§¤œÑÞ,¹yRS9³ë.ÚOZn#=Ý”6.B¥Ñâ²M¡P~úûëñxhooÞÍÍÍ”––R]]͉'0 ôöö’ššÊêÕ«éííeçÎ,\¸S§NQVVFJJ o¿ý6 .$??ŸÒÒR>üðCl6'Nœ ¤¤„+V°wï^^{í5233éééaûöí1¯|¢ã÷û±Z­·>ÐçÈp/ü&ÆÇ %°ìt:ñ…Ãñ–ñ‰)(( ''‡×_œœºººøÞ÷¾Ggg'íííœ={–`0ˆßï'///öº±±‘œœΞ=Ë™3g$ ·ÛM~~>ÃÃÃŒa³ÙèêêÂd2‘ŸŸKwIt}LMMÍJ J4<‡ãÖúœˆD"ŒÇ¢A’$óÂ@D$NLq¸g‚ê,‚õš7ä¦0ä¸qEÌR‹£ZÉ¿îoǨQà …xål?.?ãÓdÔ Ú¢Ç—gØT‘‰^•ì·›äËMß…–˜•Um­1ÐÞŠ×ådrhKnH`b´§›´Ü<ôæêÖ¬§ ¦–Ö‹tž<Žuxëà #=Ýd—`Hµ0ÒÓ…$E½’$Ñuê$Æ´4nÜÌäÐFKÇß} ¿ÇƒÖdF­Ó ‡ÙûÂ3L R±´‰Š%K‘ÉåèL&ìccì}þœSV2 ‹®;—É¡"G®x7¥HÿªäJ0ÐvŽGQj´lüú·˜¤ýø1¼gœdE¯CϹ³x¦l|ò)ãc ´µ’’™Z§Ãi›béÝ÷Ðvì¶±Òó ìhGk4bÎÌæ‹ÆhI£jùJzΟ#àÓráÐ~:N'è÷‘URʪíURó¦ªõú˜Ç[¥Ñ £ü®Ê…B8&Æ‘ª¢8#‘}.Ðuê$}¢Pª¸p`?'Ž#Êå<òBJfmGãq:ñ¹]x§§cÅÙ$@E ©©h/·£:NcéÝ÷PÒ°Ÿû!Ú£biù5µ4ïÝ…ßëeí£ÅŒsQ”‘[^IJVάôA¨jZŽL.côÒ%–lÙFUÓ ”j5‹—¡3›Ñ™Ì,»ç~R²s°Q³r5% d—–aJÏ óôI|n7‹ï¼›Š%KÑ vt 5™1ed~ª{ãr¹Ø³g’$¡R©8zô(z½žeË–‰D8{ö,)))<ñĨT*zè!>úè#Nœ8Aee%«V­B&“ caë÷ß?»wïæøñã1OžR©ä×~í×xï½÷˜˜˜àŽ;î ¼¼|Þ¤kMLLp8AÃR/óÆoÄ[ÂMÙ½{7‰Ü¥µµu^‰S*•<ùä“ìÝ»—óçϳ}ûv***ÈÊÊB„X µÇœÒÒRŽ?N(B&“±råJ"‘§OŸF’${ì1ÊÊÊ8|ø0ǧ¬¬Œ‘‘N:…Ùlž7z¢Ï#GŽ0~ëÃ|nôöö’¸5Ü£JwîÜ™,—`Ì ]!ÙV“K¦AÍØ´QøÕå,È6#Ñu…("$î­ÍC%—QªåO6×riÊEªVICn rÌ„ÂJ õT³OݤVÄr2“$ù2"Êd,¿÷DQÄ`IcÚjE®ãu¹P(UÓÓ™žœ@Ej5Z£‰òEKHÉÊ&-¿ÍL/èâúò«ª±1Ö{)ZœM¡ ´q1G^ßÁäॠ‘U\‚>%¹RIjV6jSz:ö±1BÁ Æ´tÌ™™ˆ2Å hذ‰¬âTÚ¨·²jÙ )©„C¡hѺú†Yç³lÛ½‚€)ýJˆ¬‰098@Zþ•<¥FÍ’-w#SDufaÎÈÄšŠJ£‰õGÈ,,Šz‹Š1¤¦"ˆ"™ÅŬÚþZƒSzÆ´4´F>·›žsg)¨©Ãh±ÄížV-[ŽJ«CBbFKjvN4@­¾nÿ’…3F¶sF&Y%e×s†”QD®P°æáGIÍÊŽyª¯EDQ$}¦ÜPGÕ+VÑxç–›êÃÌ5“ÉåÔ­YOñ‚…(5j”j Õ+VS»z©Y³|È•JVmä†cªuz¬ÝÀ‚µfm_~ß±ß/÷>¿–ìÒ2²KËfmóº\\:޲EK0¤|ºðÄŒŒ ¾ÿýïßðÿ6nÜÈÆgm3›Í<üðÃ×í{õ6“Éă>x½öìl¾ýíoϩ廋£IÐۀ͆§¿Ÿ{n}°Ï‰‰}ûøñºuñ–1'S'N°¶¶Y‚{îK—d2~=AäCN'LNÆ^ ‚@QQÑuÆŠÙlæž{î¹îøeË®ÔÄ0lݺõº}V¯^ÍêÕ«çÔPŸ™ÉúeËHT}8š›Ù’—‡2AÃȽÃÄ\.¾^QqKãä̬Á’|5˜:€I£`SÅõáyW*ØÊX”e‚®(NcEñ•¢UÙÆ+y¯K â³ N’$^¢HÅÒ¦ØëÌçÕ\í¥6gd`JßxCoœ\©$³¨xV«¬Ú•«iÞ»‹SìäΧ~õºñuæt沊K¯¯ní:a¶hÎÌÄœ9·ç²rY4´ýZ}Y%³ÇW¨ÔÔ¬Z‹(г MCª…Êe³¿2g" AÀdIø" A(©_óØ–.lN¼÷~‡Ewlž•{ÿE"Êd”-Z+ˆöqžÓšºè/äUVÏ®+p 2¹œE›·\wÝnDF~¥ 4ïÛCõòU”5.þTç!¬*øi¹yq¹žWÓ¼w7‘Pˆ…6ÅíþÞ6S[[o7$àv»gU¢O4ÆrsÉÌüt_$ÖÂBL&Óu]6WE‚  ‹CÐ'abb‚ýû÷ÇUCÉÄã‹ÅûRÌI¢Ï{I Z­6a«å{«« ƒÆxK¹!*•ŠmÛ¶Å[F’kHÌoô$I’$gð]m¸©õz¾ñ—75ünü>Ÿ¾¨Õ\ÚæªÜý©Çœ)pvù÷«þ€EwÞEã¦ÍÈñM‹ù4Æã¬}?Á%ÿ¤×M®T²æ‘ÇXµýdq¾·‹%[¶²øÎ-q¿¿_f”JeÂ.ª/“Ȇ €%NÑ;Ÿ}Òë7ïIô9`þ-0ãF£AsUaÜDCÅX±Ã$‰Ãü(õš$I’y\¡øÒh‡L- G25ˆÿr¥rÞä?2yòþ~Þx½^Fg:I$*—.]Š·„›288H0˜¸YÞ6› ûUI“Ì?}ŒŽŽâõzã-cNœN'“W¥Q$áp˜þþþ[(Ém%éAO’$I’düÂ9DYò+z>àwNøØ·o_¼¥Ì¢¯¯ÑÑÑ„]NOO322Beee¼¥Ìɉ'Xºti¼eÌIKK eee¨oPs"BE²³¿øBšŸ·ÛÍøøxÜæ®ÏçÃjµ&ÜwÇÕ$úèèè 33“Étëƒ}LLLàñx(,,¼õÁ>B¡---,\¸0ÞRæÄétÆ[ÂNrõ—$I’$ ˆÚdFT$vøo’(’$¡Ép&VOïÉÀ$úL}Âö—ÉdØíö„Õ —ËZŸR©$555aCÉ2™,a¯¡Ãá`tt4núÜn7ýýý {} ñçÀÀÀ)))¤¥¥Ýú`Ÿ~¿Aö EÂêP|E"3¯&îz(Jø·$ñGšéŸœ$ÉWc^!òõŠ%™L®Àâ²S]o)³˜tM’š—JuubéºL(¢±±1a ˆäää$¬g //Nk§˜h#*•*ÞRnÈÄÄCCCq›#‡ƒÎÎ΄£øs   •J•°…KKK ‡Ã ›‡.IÅÅÅ [ÄàÀñ–ð…÷O³\.'//þ{“$6ÃÃÃñ–$I’›!IÉ|í$Ÿ ¹\ž°‹êË$²a`0â-á¦$jè}’ON¢ÏD~À$|!LAÚ8ÿª’Ø“$I’ä+Ž$E°Œàù˜,¥Fí.¸v^/~¯Ë‰ ä”W “ËQªÔ\ji&-7£ÅB8b¤»“€Ï7çØ¦´ R²²e2“ŒötSP]CÀçÃãœF©R35:BAu-ª9ú1K’„ßí&àó‰D‡B„ƒA‚Ÿ—€×‹1-ì’²ØþÁk4)Ôê/Mº$Ñð^«ÕJA‚öÈhkk£ªª*Þ2椧§‡¼¼¼„5&&&E1á«Í'™›DŸ¤¦¦&¬¡n·Ûñù|deeÝú`Ÿáp˜žžÊËËã-%ÉU$ ô$I’$I`"¡0í'Ž1ÐÖ:³EÂët! Öéc^ë´Ü<–m»·ÃÎÞçŸÁïõ…Ðèõ˜Ò3í½DjV6å‹–°çÙ_²êÁ‡1ZVâ÷zØ÷âó„Ã!ÔZži~¯SZzÔØ·Û¨XÚDÓ¶ûPj4Œ÷õrèÕ—1}ï7¹t¾™ÉÁò*«iÙ¿KNîœzÐçãüþ=ô4ŸCŠ„ ƒDÂdr92……RMùâÅ1Ýãœf×Ó?/Š"w|óÛ¨´Z¡ ¢Lž°a½‰Ä/Ξ%00o7Dîr¡œ˜ÀS\o)sb<žéÞÞx˘}GžÂB"ŸsùŠü|¾V[û©»tér¹´—.HO'” u”SSˆ^/¾Ü\”2·ys¼%Í"pèС¤ž`$ ô$I’$I`D¹œâú…ØFGñºœDœ¶)DQ@c0!ÊDT ùÕµhôzA aã\:ŽñÞK¬|àaT:w¼„ŽPºpžéi‚ÁR8‚sÊJÃÆ;(]¸ˆóûö0ÐÖÊÊB‰œxï¼N'’!àó152ÌäÐ ý/Ò}ö4öѬÃCØFGØýÌ/PëõäW×Ò°~#H_}ÃAÝšuôœ;‹mlA‰„BL['±ää¢5šäa¦FF°aÎÈD&“cÉÉ`¬÷ƒm­„àwqâ½·©jZA~uÍÇ^?ÛØ(‡_ßÓj¥xA= ÖmD{M8ßHO7§?x—iëÙ¥e,Ü´szmÇpáÀ>BÁ% Y°vw¼ˆÆ`dÙÖ{Q| £ÈåuñÆ¡78zñhôº#‘iÎäñM#“Éxeï+ŒXG¨È¯à¾U÷‘cɹnŒ“í'yóЛÀò{ï'¿ªCª€ßÇx/^וÿp(„Ûa'Ì:§` À®§ÎhOé…œþèÚ!ÅöqLN°÷ùg°Ž’ž_Àù}{8;svýò爢 µNÇÁÿ?{÷×U&|ü?½jÔ{ï¶$÷ÞkìıÓ{!$$¡…l YXà]–]KY–$@ @z%NâÞ‹ÜeË꽦÷™û~¬Ø±dKò8#›óûgæÞ3ç^éŽîsÏ9ÏóÊßi8~”ôÂ"NlßJsÕÉ1ý Z7/¹™ï>ô]¾ûÐw¹ÿšû †‚hÕZ^Üô"e¹e|õî¯xwß»x|çNïß|h3{*öÐméÆávAÿ/ßø%ëæ¯ãñ[§º¥šýUû I¡HÿÚŽJjj*k×®t7.èÓŸþt¤»pA7ß|ó„^#Ä1›è×Àš5kHOOt7FT\\Ì‚ "ÝiµZîºë®HwCø˜ 9‚î qxHØ<~üÁ+ãfCᲂPcl,Ñ ‰Xº»ÉåÄ¥¦â²Û±ôtU:èiiæð‡ïÓ×Þ†ÛngÏ믔“‹ÏíºàG L3W#W*Ëä(Õ*d2²³¦‘÷wv ‘Édôµ·¡5Xû™ÏRµo'wï`ÁM·—’Š\¡@ …¨-?ˆL!§hÎ<ÀÏé#‡Ðèõ„‚BÁn‡m` ºÇCÉ¢ÅÄ$®Ó“ɰõõbîh§µºÓIõþ= “áóxΩìÐ~úï>óK–ß}Åsç­Sïmm¡§¥™ù7ÜLÑì98úûi®ª¤xÞôQ£èr™Œ©Ë–“28µ¾¯½ —ÝF(déw“3e*}­­t6Ôã´Z(˜9]TÍ••dM.õ(ºL&C¯Ñ£×èñú½|xðCÖ/XOBtw®¸“̤Lär9é ét˜;œõ`zÁt–L[Â×~óµ¡×är9®”)ySƒ¤Ä¥àt;ÎͰT_¡PLصÓgè&x’3µF3¡ó2Lô$€×ÑÑAgg'™™™ôöörÏ=÷’’‚ÇãáþûïçÅ_ñ|çåå‘™™Iff&^¯•J…Ó餸¸˜©S§òŸÿùŸ‘>¼q™è×€J¥šÐË Å„.&“ÉD2Ç hB|szüA·š©ì´bP+±yü‘î’ „ ðû}A²$á÷ùúýç«“æ- *.Ž¿û >‡¨„VÜ}{ß|mØ6%)’DNÙTògÌD&“ ([¼™\묟þ®NLñ ƒ2 ‹éikåà{ïÐÙPµ»›Cᅦ1&–â9s1ÄÆbîì 5·¹BI(0pFÅÅ’œ‹Ç夣î4É9¹è£¢i®¬8§_í§O±ó•—pY­ØúzQi5œ>r{_/–žnjîGk4’5¹”˜¤dÜx IYÙçÜ<{ìv‚~?S4J•­AO_{;ÁÀGÁoT|¥‹—ÑZSÅ‘Íâq8˜¶|%é…ŤæP[~ŠÛ1ÆÄ]:­ÁHrN.½­Í¸ö1Ms?ã@Õ”J%3 g +(H/ ±³‘M‡6ÑÖÛÆÊ+ÑkÎ]Ë}þ^½F?œ‡‚œl<‰Ýegröä }³z6»ÝN]]]¤»qAG‹t.¨ºº¯×énŒ¨££¹\Nrrr¤»2*ííí¸\.<ˆÃá ««‹Ï~ö³¤¦¦^°L–L&JæõzÙ¸q#EEE:ßhMôk ¾¾ûE’¨FR__­HÂi@€êêjÊÊÊ"Ýá,ÿ+.~··§oà¦ió)Q]ÀÚÓMÅ®¸ì6”*ÕÀtr…¹BJ­A©Rã󏩨¹þ΂ 'Žã÷ùH/,ÂçvqèÄBÃÏDò{½„B!°‘wý NîÙEOsüá÷|ðüoi¬81´­J­&%/Ÿ¨Ø8f]»Ž’‹pÛíø=BÁ ^§·ÃN ÈØîraJH¿ÜÔŸ…Íi£¥§…ü´|nXx{Oîeoå^æNš‹.^wÑöª›«yeû+Ü»ú^&gOF¥œ¸S)a¢KJJB©Tb2™†ÊÃvtÖétòÖ[oát:¹óÎ;'lY-A&¾ˆè`ˆN›‡¤(-&­ I‚ÉÉÑìiè‰t×A".>-¹×ß@Ý‘Ã,¸áfò¦Ï@ …ð¹Ýt57²ù…?0oÃ$feÓ¹£‚³0%$Rw¸œœ²©̘IOk 2™ ·ÃŽ$IÈ …h®:‰B¡dÒÜy(Tjš«N¢Õµ <ÉPëôƒë™eèMÑhôz$IÂe³¡2 Œ.û¼„‚A|n7§¥ßZ«E¥Ñà²Z$ [o/ 8,ù¦ƒ~?¡@—͆wp°õT ÓÜn´z=eK–stóXº»úýÄ¥¥ÒÛÖÂÁ÷Þ!­°˜ô¢â¡éåu§Ùú×?3oýäO›>4rž˜™Eæ¤m|—öÚStÔ×±ìÎ{ðû|<ûèC,¾ív2Š&Q±sG6½Orv.MU'É)›B(`׫/Q½/j­[o/“æ- àvØÑ çú£uºý4i i¨ûz|þ¶åoÌ*šEIN UÍUhÕZô=l¤,·ŒŒÄ z,=8Ü\í½í$Æ$¢R¨øáß~ȧ¯ý4F½‘ÖžV¢ôQÄ›â'ôºä3ÒÓÓY?co¿óN¤»2¢Ï}ö³üú7¿‰t7Ftçw²ïý÷韠#ˆsçÎtÆ$77—¸¸8Þyç²²²¨¨¨à±ÇÃétÒÝÝÅbA¡PÐÜÜLBB§OŸÆï÷3uêTöïßÏÉ“'¹óÎ;q¹\455‘€×ëÅjµât:éèè ½½øøx4—¹4^¸Lôkàúë¯Ç|ü8-´œdII “ؾcG¤»2,NÇ<énñ]&¥BF "48a÷Š5è‚ g|4eY6x9¬Vö½ý¶Þ‚ÀP°Z¶d)¯Š];ƒÈd ‹2—’Æ‘ÍÐÕP$…Ð8­ÚjO1iÁäƒ#¯JµNÏÉÝ;ékk£«©â¹ +>šŽ 8üÁÆÁi釷ÃÁΗÿŽR¥"%/Ÿ%·Ý‰)>ž®¦F>½­-( Ò j­z=n,Ä&§ \Û©P*i­©¢`Æ,æ\w=sÝ-ÍL^¸S|÷ Ñ ‰L_±êœµß*†¸””ìg¦r…‚%·ßÉ¡÷ßÃaégÁM·;m:RH"oút¢“HÎÉeùÝ÷Sµo7n»²%Ë(]´dpº¼Œ†ŠãHÁó7ÜÄÔå+ðº]ôµµ›’ŠÖ`óÏ2ÎÇ”Ü)CëÄ“b“øÔšOñþÁ÷9Q‚”¸nXxÑÆh:Í䥿’Bì8¾ƒãuÇIŒIdÏÉ=tõwQ–[Faz![ojvñlÖÍ_‡B¦sß>i2™lÂ?H˜èýc¢÷ï £Ñhxàxï½÷8yò$7ÜpÔÔÔð÷¿ÿP(Dkk+/½ô6lÀjµâõz ”J%¯¿þ:ƒõë×ÓÞÞÎÎ;1™L:tˆ®®.Ö¯_OZZÚ%öö“1á¯á’‰ŸñÄñ]¥“gdg]7mV:•’Ýõ=˜´bšž €Æ``úª5Äœ•hI©V˜„V¯§`æ,3³É¦'fe#—+Pi‚_•FCRv*†¼3I+,B&“Sºx iEC ³KʈKIÃëv!“ÉIÊÉ!wÊ4”ƒk)c“S˜¾b5Qññ#ö×30ÍY&[)“ËQŒ20ÕEEqã¿|)B1оLtr…‚•÷Þ\®@k4Fº;‚ ‚ \…&Dä+—Ɉѩ‰&am¢ñÊH¢!‚ œOeŠtÂÊé.‚ ‚p›úÅH’4ê2ÂÕi¤ÎW3ŸÓAoõÉHwCˆ¿Ó‰ùt råñýOÏc± YÝl<鮜£ÕÒJ]?.—+Ò]–Åb¡§§‡ƒ'Öy;›ËåšÐý³X,;v ½~ìù> MMM( ‚Á`¤»2,‡ÃA___Ä~Æn·‹Å2¡Ç&ú5ÐÝÝMUU‘îʰ:;;q8öúý~ìvû„í ”0üg#îþaëôcáêT:5Ò]Æ@&“!‹–!Ï™X×kQÎÄLštF\\qqq‘îÆ-[¶,Ò]¸ 9sæDº ”——é.\ЙJòå“0 ¾ÝD¿¦NØ/'zþFÃÂ… #Ý úgÌ2Eè2™ “éêš&)ŒÃáˆt>qjƒ‘øâÉ—Þ —•½­•d§…Y³f]zc‚ |bzzzèëë×® L`‡Št>qëq¿ ‚ ‚ ‚ ü“º ‚ ‚ ‚ LWm€”$~¿¯Ž^§—= ½ìmèÅíòû}uô»|—ܾÅíãÅC¢^» ‚ ‚ ‚Wm€ I<³«–»‡]uÝì¬ïÆå òÌ®ZÌ.ï%·ovùøÓz¬îKöAAAáŠHwFH’…$$@!—!—ÉÆC’g½~áv (Û%?kûàYíÈå2ƒ¯KƒïI’„L&C!?¿ý`HCû‚ ‚ ‚ ÂX\1ºÙåå…ƒ lªîÄ ± ''–O¢Ãææ™]µÔtÛË`I~,, F§¶—/ÀŸË8ÑnÁêösÿœ\˜›G]¯ßì>͉Ž~ædÅó…%E¤štìªëægÛk°º}$EéøÒ²" Z` xo³¸ùúÛGYU”Ìó&vIAAAabº"¦¸‡$‰ý}iéç7Îà…ûâð8Ña¡Ùì¤$5š¿?¸˜ß<‹S=v6›GlËí’dÐò‡{ðõ5¥<»§–§‡v«›ì8=º!ÏÜ9v››í§»±zü<ýáI>57—ZŠÂ$6÷ ÀwXÝüj×)¦¤EsÿÜÜHŸ*AAAá uEŒ ûƒ';­dÄê)N2¡Ëø×•“Q+xýAúÝ>žÙ]‹Ã ÝêÆî9q[´NżDLZKó“8ÝcgR²‰.‡›ç÷Õãö´cuû¨ëµÓçô²fR*¥œÛgdãðpûƒô»|<¿¿žX½šçç_tj½ ‚ ‚ ‚ ŒäŠÐ%IÂí  VȇÖ§˜t¸ýAþx ž–~'ו¤á„hêsÌ;é€å2 jj…•BŽÅíç­ŠV޵õs]I:*…Œ–~àò‘Édh”“ LZ&­Šú>]vU]V £¥‹† ‚ ‚ ‚ ŒèŠ˜â®ËHÖÑçôbuû †$>¨îàÝ“mTtXXQ˜ÂÊÂò£ð‚H’4bŒî „è´{¤uíRÁ‰v s²X;)•IÉѸýA$ RM:$ZúC•V^?Ö‚?(‘ŸÅoœ‰Q­â¹}u‰âAAAa®ˆ]¥³ 7‡7ÀŸÖóòÑf~¿·½ZAšIǦ^¶Öv±±²_0De—«ûüimµ]l©íä;j(I‰fFféÑzŽ·õ³¥¶‹·N´â†¨í±¥U²²8…Ÿl«æ­üzW-MýN@B¥‘jÒòØÒ"v×÷°µ¶ IÄè‚ ‚ ‚ Â8\:@QbŸ_\ˆ/âtÏ/)äÚÉiÜ3;—xƒ†òæ>fdÆñõkJ1¨U8½îCœAÜìxædÅ£U*xlI1 s9ÜbF¯Rñõ5¥ÄèTÜ:=‹œ8šz)N2ñ͵e¤˜tô»|<¹b2““MTvX˜Ç}srI0h¹eZQZ‰Q|yÅ$z$D„.‚ ‚ ‚ ŒÝ±FÑggÅ3;+þœ×''›˜œl:çµù9 <±|ÉQÚ¡÷ž\9€ÕÅ)ç쓟`ä±¥Åç¼6==vèß.,<¯O.,ú÷ÇÛAAA„±¸bFÐAAAáj&tAAAA˜D€.‚ ‚ ‚ €ÐAAAaˆx’¸`0HOOO¤»!LpÁ`0Ò]A®@û÷ï'))鼿#‰‰‰DGGpäÈŠ‹‹éêêÚF©T’™™‰Ùl¦®®ŽÒÒRÌf3>Ÿ»ÝΤI“Ðh4‘>DA¸*;v ½^L&;çõØØXâã’FWUUa·Û™:u*çl—““ƒÝn§¶¶–üü|œN'””” ×ë#}ˆ‚0¬ˆèr¹œ„„„HwC˜àξaA„Ñèïïç;ßù .äý÷ß?ç½'žx‚iÓ¦ñ /°uëV$I"66–êêj$IÂd2‘——Ç‹/¾Hmm-¿ýíoù·û7žzê)¦OŸŽÃáàñÇ')) ­V;Î ‚0›ÍÆOúS²²²†®Ï3î¹çnºé&ž{î9¶mÛ†Ãá --ãÇ#—ËÑétDGG³iÓ&ZZZxî¹çx衇xúé§Y´hUUU<õÔSdff¢Óé"}¨‚pžˆè2™ ¥2âÝ&¸?=A„‹Ùµk …‚mÛ¶ …Îyïý÷ßgΜ9h4œN'2™Œ´´´¡ó´´4¦L™‚ËåbË–-¼ùæ›FöîÝKkk+V«•ššÊÊÊxúé§#}¨‚pU9zô(6›Ý»wŸ7ûåý÷ßçÖ[oÅ`0àt:q¹\¨T*²²²°X,$&&R\\ŒßïgÇŽ¼ùæ›x½^öîÝKGG­­­´¶¶’••Å/ùK E¤WÎ!"cAA®:‹…7ÃêÕ«Ù·oß9ï_wÝu( jkk±Z­$&&òꫯ’‘‘Á´iÓ°X,;vŒîînvìØÙlæ¹çžãÞ{怒 €Ã‡ó裒‘‘éC„«ŠÓédË–-ÜtÓMìÙ³çœôÕ«W£P(hii¡³³“ÔÔT^{í5âãã™5k.—‹C‡a³Ùؾ};üõ¯eݺu¬_¿žW_}•/~ñ‹dgg#—‹t\ÂÄ#tAA®:=z”ÂÂB¼^ïÐ:ó3î¸ã``†–\.šÍçõzéííÅápÕjÅãñŸŸOYY C£p¯¾ú*×\s ùùù‘>\A¸j455±k×.âââ…B9räœ}É’%Èd²ó®]¿ßO__^¯­V‹Ûí¦¿¿Ÿüü|ŠŠŠèïïçÃ?¤¡¡7ÞxƒÅ‹S\\éÄóLø½¶ÇŽZ!';Î鮂 ‚p…ÈÊÊbÆ ôöö¢×ë)((8ç}¥RIll,7Üpû÷ïçøñãÜyçTUU1mÚ4zzz…BÄÆÆ²páBNœ8ÁSO=E}}=åååx½^JKKIOOô¡ ÂU%!!õë×ÓÜÜŒZ­¦  àœ]§Óa0X»v-»wïfÿþýÜsÏ='È`FFÍÏ#N/Jœ‚ ‚ð™LF(B.—#—Ë …Bø|>$IB.—s°ºš.¿Ÿn¸ÌÌLÒÓÓyã7Xºt)Ç'66–P(„J¥B£ÑðÌ3Ï V«iooÇl6ó‹_ü‚¤¤$¾õ­oEúpáª!“É$ ™L†B¡@’¤¡k7 !“É8ÝÖÆáÖVn¾ùf¢¢¢˜2e ýë_™5kÝÝÝøý~‚Á jµFÃ_ÿúWôz=f³™îînž}öYŒF#ßÿþ÷E’8a‰x€ Iìªï¡¡×Á·×M%Ù¨åw{ëxá`ß[?ÒÔÖNJå–i™üzW-Hð“[fÑïòñÆñ:m  ‚ ‚pžÒÒRðûýØívRRR˜7oÆädöx<ÜùðÃh:;‘$ ƒÁ@aaáP¢©-[¶ …ÈÌÌäÖ[o öÏ&J¬ Bøååå±víZd2sæÌJƸhÑ" ÑѼÕÑÁÍ=D¶ÇƒÍf#!!Ç{Œ… âóùøàƒƒ$%%qã7Ϋuf » L4н UÊ[Ìüç{'É ×éE†Œ‡gh;»'@}ŸƒùÙ $µ$4<²°J<õAá|%%%””” ûÞõ/¾H´FCQ|<Å99Ì ÞÏP«ÕÜrË-¤¥¥‘––éÄyyyäåå ûÞçÞy‡ÊÖV榧ÓÅêiÓ˜;Ïí¯ç÷{ë8ÐÔ'¦¸ ‚ ‚pAoŸ:E“ÕÊÎæfú¼>öt›˜Ãõv'ÕV;ÿ{Ýõ´ÙílmhˆtwAôΩSôº\¼wúôˆÛ<ãøC!Þª©‰tw!,">Å 0ÉÄ—q¨ÅŒÃëg}I:ósËdÜ3+‡uÝø‚!å&¢UÊ9Ñn%V§âÆ©$DEºû‚ ‚ L`f·› EE¤šb8ÖgÅžó~͉\&£,ÖÄýÓ¦ñje%³ÓÒÈŽ‰‰t×៚Ùí&=*ŠÏÏž}Áíõzž˜?ŸMõõ$ Lå…+Ø„Еr%)Ñ”¤DŸ÷^ab…‰ás³˜›é. ‚ ‚0Áýº¼œ…™™<0mŸŸcf+`ØmC’D•ÅHLNL$Z«åsï¼Ã3ë×Gú0áŸÎ+••Ähµ|j0ÜhåÅÆ¢W©Äµ+\Ñ&D€.‚ ‚ýn7mv;¯TVò• Ð*•xƒ!öt™ñ‡BÜ× q²ßNi¬‰h–ÿZ¹_0ˆ? REúÐáªfõxðƒ|këV~¼f͸¿å ®Oÿ¯•+ „B¸¢ÔêHš ŒIÄ×  ‚ ‚ „ËW7m¢,)‰o/_ŽI£A­P`öú.œŸ”$Ž›­48œÈJ¶·óòÉ“Ttwãòû#}x‚pÕúîŽh žY¿ƒZîŠ%èõÔ÷÷ó냩5›1»Ý‘>lA¸âB!žÞµ‹;KK/ëçÜ4iÿ±mßY¾<Ò‡-ñ].—c2™"Ý a‚ëíítA„ (Z£am~>qqç¼ÞéòPÑoü´¼î@ãfJ¹Œš['OæíS§pø|Ü]VéÄ+–B&ãÖÉ“)ŠÿD>ïŽÒR´µ±§¥…'æÏôá ˆ" Ëd24M¤»!Lp²q$ A®NðÅüƒßÝpÃyÁy»ËCyo?ã8?'do·™ù‰qäÄÆQœ’D«ÍFªÑˆB.RúÂh8|><OïÚÅ—æÎ¥$1ñûìÒÄDB’ÄÌÔT:b´Z´Êˆ‡B‚pñEA„+ÊÞÖVÊÛÛùó-·œwƒÝéöp°'|Áù’{»ÍìéêÃî ËyîÈúÜnv67Gú”¡²§‡Í üxÍrbb>ñÏ—Ëd(år^­ª¢ÝnçÃúúHŸA8Ï„Ð]¾ Ötð“­Uô8<ãnGÊ›Íl9Õ‰7 Ö, ‚ ÂÕÄí÷óüÑ£\WPÀª¼¼óÞosº9Òk½¬}p‚í³böúøÖ²eèU*š­Vö´´p´³3Ò§H&¬_<ÈÜôô˾æ|4¾8gy±±Ô÷÷SÑÝÍö¦¦HwI†Lˆ½¹ßÁß7!I Q*Ƽ“ÙIs¿ I‚íf¶Övá #}X‚ ‚ „ÉwwìÀêõRø±éìg´9ÝTôÛñ}IE­>?Çú¬Ø|Œj5÷N™B’Á ²D Â0~]^NM_“"Ý•ó|vÖ,bµZRŒÆHwE†D<@—$èuú†`I~"F’ $áñqùƒx!$ ’ð‚ø‚!Üþ $I¼|´™u]ø/1Œ ‚ K  ñðÌ™$èõ,ÎÊ:o›N·‡cfžOðá¼Í`o·wpà~¤ .ެèhî|åü¡Þ@ Ò§N"*(Iø‚An+)!;:𕹹‘îÒ°ÒM&Šããyü½÷h³ÛñˆkWˆ°ˆgF0»¼üjg ‡[ûiîwðÛ»çq ©WŽ6ãòI6éøæ5¥4šübg 32âhìs`vùøââ"BHüíp#J¹«ÛRñg‚ ‚ „Áñ®.:zœNî›:uØm:\ôô©ÝÆ~óÐEÓ^¥Â {ÂZO0È­ÝÄjTÌNˆE¯Tð÷Ûn£Ábá¹#GøîŠ‘>…‚Ç»ºJ[xrÁ‚°µ[ÝÛ;4S¥Ëᙌdƒ!,mÿìºëpùýüËÆüfýúˆœ7A€ 0‚oÐðÄòÉ,ËOâÿnA­ä·{êx|é$þü©…”¦˜8ØÜ‡B.£×áeuQ ¿¿g>+Š’yãD ×§2;3žÏ.,às‹‹"}8‚ ‚ „ÉÕÕ¬ÍÏ¿`p^Þks»š9“C®®¯—^§ó’úÙïõs´ÏŠÃ?0ò–ÃwW¬à`{;MÖË»&^&¢7ª«™‘’Öà`S}=NŸ€ªÞ^jÂ\†W¯Rñ›õë©ì顲§ç;_‚p¶ˆèWÙiC.ƒ¹ Äé5|f~+‹Rȉ3g@.“‘kÀá ˆií‚ ‚p•ùã±c´Ûí|kÙ² nWksCºöcmÔööpÇ´™œ©Þ9?+‡ìØ8^=~ô’úÜãñrÜlÃ}Ö4û`(„$I<½kWÄÎ¥ |’Þª©ádOÏE¯Ý±:ÔÑÁuu<6wîÐúòœ–fgó“½{þ¤$$I%‰ÿÝ·OLy>q.@wz(årTƒSÕcõj’£´¨ò¡)ìrÙ@Öö0WQA!Bö·¶ò›C‡˜—žN´æÂSÎOÛœØý£»q¶y=ü¡|?é¦ Ã'ƒšžžN£¹·+OŒ»ÿ=/ºû‡îMægdÚa2Î ÂÕ¤¾¿ŸïîØÁ”¤$RÜpí¡7ß$Ód1ÉÜÊÜ\z\.¾¹eKØ>³,)‰)II¬ÈÉA)Ÿpá’p•›p¿qYqœ¾íV7ÄþÆ^Þ:ÑzÁ}d²DR¸‹ž ‚ ‚ð‰¸í¥—˜™–Ƨ¦NeRBµzØíB’D­ÍA•ÅN tñ¿ûVƒZÍ]Óf’`03B¦õüøD2cbYS4‡ÏK 4¾„sŸŸ÷Zº(ïµ õoVZG:;ùï;é÷xðŠJ3ÂUäö—_&+:š¯,X@nllت˜ÝnüÁ ?½öZ’ ²¢£‡ÝnzJ iQQ|}ñbl^/.¿?lÇ6=%…§“/½÷^ØÛ„‘L¸}r²‰’¿ÞuŠ—4ó«]µxþC–­ãP‹™Ã­æHw_A„1¨ìéÁìvóÊw ’ËÑ©T#n’$êìN*ûíÚÞëtÒí°óÖÉãx´h÷ …\ŽF©d{Ýi:ív*»ÆW×Ü ÑætsÜlÅ;¸oFJ ß\²„Oœ Î,îW„+_}?mv;/ß~;J¹Ã(®±Ñèu¹¨îíåù£Gi±Ù0i.žÀQ.“aT«ùGm-‡::ØÙܶãLŠâç×]Ç{§OSÞÞ~ÙΧ œ1!ôT“޵“ÓH4jQ)äüÛ5edÄèi2;ØP–Î edÇXWšŽA=x¾0ÑÄúÒt”r·NË¢01ŠV‹‹éé±,ÍOB­{=uAA>ív;OŸæ´ÙŒÅãÕ>õv•ýöQmkq»ès¹¸Ö\ô*õ¨ö9ãúÉ¥dDÇP×wiI¢ZœnNZløÏéÿâœ9”$&òÜ‘#a>£‚ðɰû|¼tò$-6Ý—˜`q8ýn7õýý<¹`y±±cÚ÷®²2–deq¸£#ìýº³´”¥ÙÙâÚ.»ˆ—YȌՓ«úÿœ8Ÿ]TxÎ6y Fò>ZÓR’MIJôyÿAaâS+ÄétÌMOÕö§mª-Ž‹n…xéØaî™1û’û¸¡d u}=tÙí,Ìß:ò‡›³bÎy=ÅhäpGuf3·—–^ú „OˆR&#Ñ``YvvØÛþúæÍ<½j…ññ—Ôο̛GƒÅÂuu|vÖ¬°ö1Åh¤ÑbaãéÓ|nö¥ÏÂÇMˆtAAþyÜöÒK$èõ£ÎëlNj¬‚™ÖþÜÁ½˜]NV„¯ìjª)š’äTž?¸nÇèFï?®Ýéfk{§¬=`XWXHA\K³³EÂ[áŠñ™·Þ ²"''¬íþÏîÝhkã¡3ÂÖfŠÑÈõ……ühÏöµ¶^zƒƒÖ’l4²¾H”w. 1‚.‚ ÂÕï×ååÇÇóÊwŒjû $QosRi¹p`ìòùðƒ<4'¼5—ô*5z<8g>Ða³’jÛ¬= °ùØ,v‚’DQ´…L†I£Á¤ÑðÕ?äs³g ….yäP.‡×ªªðüþ†ÂÚ®ËïÇìvóÕE‹ÂÞgRI†ÉÄS pª¯¢0]_gÚþÉÞ½,ÈÌ$^§ [Û‚ FÐAA¸¬l^/;ššøüìÙ¬ÌÍõ~£ ÎË[›i·Y©ê_B·±…Bl­«¥Ón£ÕjW§¬j­Ξ ð?×\CvL :~œúþ~ªz{/û±ÂhC!6ž>Í-“'sÏ”)amûÝS§èt8xïôéOäXþpô(‡Â¸>ý+ ° #ƒ?=J§ÃÁ!‘DNƒˆ ‡B!,K¤»!Lp¡P(Ò]AÆáçpgi)ýn÷˜ö«»Hp¾·©Â„D¬7³3²(HH¼ìǢ˹gÆlšúÍøƒA>8UÍÒ¼|´Ê±e¯®±:ÉdG”[G!“ñÝ+¨èîÆ]}wA¸œ^8~œkòòèq¹ÂÚî¦úz’Fº].®s"¸ñúÞªU4Z,ؼ^^:y’EYY¤GE…­í&««×û‰‹pu‹x€.“ÉÐjµ‘î†0Á¹Çxc'‚ L ³SSIÐë¹qÒ¤QïsÚæ Æzá„pé¦ht*5« Š?ñcÊŽ¦®+åã«Sku`öúÈ0èÈ4|T7º,) €onÙÂS +î‘„)KJ¤ÑpÿÔ©am7'&£Z̓ӧâÇ”CNL 'ººˆR­ºÃÅdGG“ÍÿîÛÇúÂB±\E·  ëõúKoH¸ª‰Y‚ WI’°û|¼}êz•Š›Ç˜4Ø]T[†Oçòùh·Y9ÖÑÆ­S¦GúP)LHÄæõð—ÃùÌÜ…ÈÕ(˼%‰n·³×‡ H7èõþ—çÏ' ñèÛoóì† ‘>TោÕ㡼½Sf3Ÿc†r›×‹ÕãáÇ{÷òÓk¯ôa2%9HXùâ­·”$tÊð„EŸž>£JÅm/½4ê|‚p6±]A„°8ÞÕE¯ËÅ··mãÞ)SÆœûB!l>ÿˆÙÚŸ;¸—‚„Ä œŸaÒhùü‚%li¢¢sìk[!‰C½ZçÎKÐëIÔëyvÃZm6:/1'ãUÓׇÍëå+|Àª¼¼°ç0P>-Ñ`˜ÁùÙ^¹ãv·´ðjeeØÚŒÕjQ)¼rÇô84‰A&aŒ&D€îñÙÓÐÃóûëé²{xéH·= =œè°’DAA˜èv·´ V*ùÉÚµcÞ7 ITYì4:Î_ïZÝÝE·ÃÎc‹–…µ¿mV §ûzÂÒÖ¢œ8U5¦ý$à¸ÙÆÑ>+=žsoäWää0/==lŽ œQÓ×Çß**¸»¬Œì豕¼—ßÏ÷ìA)—£”‡çëpy8Úgåd¿ W0D•ÅÁ±>+Î@0,í« ¼Á ?ؽ;lçazJ k P+#è®âwÅêö’$nš’Ir”ŽÏ,È'V7¾?ðgÏlAAF'$IÜÿúëÄÅ1upMçx3[ifäܨÖ0%%„D †°öý';¶’j2QÝÝÖmó³rˆÒh˜’’>æ}}¡MGú¬ô{ýç½Ó¤I´X­|sË–°ž áŸÓ½¯½FªÑÈ‚ŒŒ°·­V(X_XHIb"“.¹½—ãfM?ܶ™XŽ~·‹œªa·™=ý—ükòó‰ÓéØPTöóqM^J…‚‡ßz+ìm WŸˆè½N/?Ø|’m§»y앃TtZ¸î×[i2¬µ:Ýcç³?ÀÊ_læ©7Óhv°­¶‹{ÿ´›k~¹™;ÿ°‹-§: IÏï«ãÑ¿íçÞ?íáw{ë"}x‚ ‚pUêt8„BüvÃôzRÆ1·Ié³Òdwq摺ÃçÅí÷óƒ­¢Q*I‰2…µß>|6«•/-Z Àš¢I'&Óã ßoµBIªÉÄ»UœììsÛî@]]}X|çéYÑÑüDzeüâÀ¶66†õÜÿz].\~?¿¿áL Ù11ai×îóÑïñðÅüƒ>—‹É‰—^úÐÒíö²¯»ŸW*Žq²«ch©ËܬlædeÓh±Òît³¯ÛŒ3 p t ™Œ’ÄD^:y’¿Ÿ¾÷ÁI˜›ÇÛŸ]΃óòùï*°{„€º^;/+âSss#}x‚ ‚pUét88ÙÓÃ_+*èr8Æ=íÚ qÒb£ÙñQpPÑÙA½¹—¯­¸&¬ý¶¸Ý4õ›¹oæÒ££‡²­LŸ—ñöÉؼÌ}aûÌë'—Qš’ÊÛ'OŒyß$±§«>¯ïœ×e2j…‚ÇæÎeEN›Âzž„«—Õ를½÷jk©éë û’‰£lklä—ëÖ‘<ŽvgñùÙÕÕÇ–¶.jzºY?¹ŒÒäTÔg®ÝÁ%*ïÕœÄáó²£¹™Mm=ÔXì.qy쥥ÜYZʯËËñ.}û¥’ÛJJ¸«¬ŒMMøƒá™ž/\]" _Ìâ¼$2c dÄè™–K}ŸƒC-}4÷;9ØÜÇÿm«áPK6§zlÈ€’”h ¢Ð(ÇW›TA„áÙ¼^:ív¾<>™ã\³’ ²ß~Κs—ßÇöúÓÌÏÊ¡495¬}ÞXS‰;à§ßíq›‡æ.Àë`v9Ã~Κ»€§ƒòÖæ1íçIéµPcu`f4àT_-6ïœ:ö~ WßO³ÕÊýÓ¦1#%%¬m?S^Î’ìì1WnŽ3¤ÆêàhŸ•×OVà .8 å¾™s‘ËdtV:8msR9BÂɱúï•+ñƒüõ2Œx×õ÷cöxxñÄØà W·  Gë”Èe Sƒ€IDAT—ÉÐ*ø!,.z‚©i±”¤D35-–Ý4“œ¸§u ¥bš ‚ \Q¾òþûÅdz*/ï’Ú9Ño¥é¬›ç”†H2F…µ¿›jkhî7“jŠ&5ÊÄô´ ¯µM4™•‘Åû5U´Y­aí‹V©$^oàƒSU´Z-£ÞÏRm±st„dXŸŸ=½JEºÉÄo¦ª·7¬ý®_yÿ}’Fn™<9¬íþlÿ~š, ââÂÒž?âp¯…?¯`ws3©&Ñ: ³/<+Ö Ö°$7Ÿ=õTwwÑ`wRÙo§Á~éÜT ÙÑѼZUÅîæ±=d»§OǤV“ÃëÕÕì cÛ•m§í¶{³¸‡°züµJ²ãŒ¨ræfÇ“¥%’è´»I4$–“EºÓ‚ ‚pùÞÎ\[PÀóç_R;’Çû­4;ʉYÛ¹¶x2F†ÉIãO4wîçH%‰¹™Ùh”J²bÇ<ÌÏÎA§Róƒ­†mª}”FK”FKœ^?®¶->?»»úX™–ˆRvîN¼NG¼NGzTQ Þ`BÌ"à¹#GH1/ùÚý¸Ðà5vGi)±:Ý%¯c—$!±»ËLŸÇKIJ ™J5¦v¦¦¦£Ë‡®¯J‹:›‹éñÑ$hÕãê›^¥baf&f·•BÁm/½Ä+wÜ–ó¨l»ßíF9˜E^\»Â„fø›-±¿©—õ=l¬jçX›™ù9 ÌÉŽ§4%†Ÿï¨aOC/¿ÚuН¾q(én ‚ ÂUÃáóÑh±ð%K˜™šJÖ%”aò‡B3[i´»†B´Xú9ØÒÄÞ¦âõä²ð<^oê7ÓjµðzÅ1LZ-šq¬³ÖêP+|mÅ58|^úÂ8íýì¶>/}ÎÑ·íÙÚÞƒs„5±I:¥’‡Þ|‹ÇC«Í¶~ W_0È©¾>š1ƒu……—tí~\Ew7ûÛÚøMy9)Fã%”¾`ˆC}ž9QM£ÕÊîè֌980jöûÚŠkð´Ym8vwõÑíö⸄ºéq:Qj5¯Üq.¿ŸúþKÏFì`Û½ùfØÛ®<"@O4jX”—D¬^R!ç†)˜t*fgÅóØÒbNvXØ]ßËS2Y˜›ˆ\ß¾n*ñ ¯kÆå òíuSQÉå%™˜“ZLqA„q{­ªŠ.§3,Ó.ý!‰J‹&‡‹címؽ^ö772/+‡E9—6]þãö65ËíSg„¥½‡ƒÓ½=ïhÃéó]zƒgév8¨íëáDGû¨Ûv‚”÷Xhr¸pPÿù/·ÜB³Õʶ¶°öW¸2¼[[‹ÙífãéÓamwok+¯TV² #ƒÇæÎ½ä6Ï$‹lsº)omF«Tñð¼…ÜG ²~9l]íœêéÆìr²w°Ûp% Ǫ×åb[c#ÚÚh ヰ¿Ür }n·¨ÐðOnBLqÏ7’ÿQ¶Ço®)à¶éY#î“«çËËÏOD±8ïÒK:‚ Â?;w @~l,ù±±—Ü–7JçQÈåܦúŒÃm-ÄéôÜ5}VXÛÍ‹'7.žC­-H„§ÜÒÇÛ>ÜÖ‚4†RNŸŸ£}VRtf$Ä –Ÿ?(159™©ÉÉüñØ1Öæç“†¬Ú•Á«Õòø¼yam×  …øöòåaiï”ÕÍ`kc¾`›J§Žj?  ˆ?xI&Ã<{ΰÛ%¬*(¦²«sh9Ýà˜ÙJ¼FMA´Ý8Gÿ³¢£yhÆ v57 S¶32M&>3coÕÔPÏä0Ô‘®,b˜YA„!Ï9Âî–î2%lmí³r²«ƒ­u§˜‘…A=¾µ Ã1»œüõH9Ñ1Äé —í¼ÌÊÈD§Tñë½;ÃÞöÌôLôj5¿Ú3¶¶;Ý^ö\x*윴4 j5¾ýöe;7ÂÄðΩS¼Q]Í­“'kiÇHªz{ùÑž=,ËÎ&Ãd K›Õ;•ý6þ}Ó‡$¤D®ÝÉ?|Y?¯””àÌÌ•™yÑ}J’SH0ùÅîíX}~êíNt÷_ò#·ÅYYdEGóð[o…弜­4)‰dƒá²´-Ll"@A„r=. ýý<õÁÜYVÆœ´´°´ë…ØÝÕÇW7¾Kqb ³Ã;Ýæñ­ÓsSÙ4’ŒQ˜´ÚËzžr9Ÿš5ýÍl««Åîõ Ì]*¹LƳçq ¥‰­u£/™Öëñ±§Ë7{ö%·%žà@U‚#=fB’Äý³æ«Ó“`¸ðõ¤m[ÉþÛ‹Ô~þKx3Æ{RRð$§0ó+£t8P[,lãÁ9 ¨ééâŠã8}^z=^6¶tq¨×rÉuÓ´f ûÛÚøáž=a;÷ù±±ÄétühͼÁ V¯7lm [ħ¸K’„ÛíŽt7„ n,SÿA„±ùîöíüdíZ~´fMØÚt‚¼]×@H®ÊV® Ó°@ÃL&ãÍ“ÇùÔ¬¹ãJ&5^µšyY9¼pè·L™¶µš¹™Ùœîí!;.•üâSp{<^õZÈ‹2«Q¡fÊ{ŒVËæ†,n7Ù11LIJ ë(«¿8p€GfÍâ…›ok»§Íf¢4š¡låÆ0üŽ·:ÝliíÀí󱫱ž•EÄbÖK\ùAº—¯øè…=d:ü“Ÿ¡éé!ç/¢æ‰'GlÇ VSœ˜Lqb2ož<ÎÜÌRM&Znd2ÈÐëˆ×ªQŒ#aeŒV˼ôt楧SÑÝMft4ÑMX~1Z-ǺºØÛÒÂâ¬,2M&¢/óÃH!²"þÍ,I'ÒÝ&8  ‚ „_y{;Z¥’Ÿ]w]XÛm¶Zy¿©…ÓýVŠ“ЇqJ;@¯ËB.ç3s|’§ë<÷Ïš‹'`wc}Ø“ÝÕ›ûH09ÙÕ1ª¶»Ü^ºÜ^r£ô”Åš†ÍŠ¿*w –ôï¦(>^èW°š¾>ú\.¾µlYXÛí÷xØÑ؈^­&Õh$Ùže#­N7Gû¬Ø<Ì.稒8&oÝŒeê4bqùÞÄDjžx’¸Ã‡ðEÇàÈÏ¿àö7®wßrú+ Šhq¸iq¸)Ž62)&ê’Žµª·—­–׫ªøôôéa9Ó’“™–œÌ+••Dk4"@¿ÊEü›Y.—7¶ú¤Â?ñG!|l^/¿:x'MBæš»DE¿›?ÄÂ0­ž€Ÿw*+ž`îRÈe2¢4µ¶ S©(IN K»kŠ&á 1ªÇ6 ×0˜ŒojÜÈeµž9»ÏÇÓ»vñõÅ‹#wò„qùÆæÍ|nöì°ŒjœR&#F§cYvvXÚëñxiq¸ér{ùÓ¡Ü7sY1£K<é7™)•Ô=üè¨?/`0Òj˜üÃïSõ¯ÿvÑíM-§zº±¸ÝÌÍÊæ”Í+$A«!˨×1ß^R@‚^–sx¶ÛÛþÆæÍ|oÕª°·/L b º ‚ ü“Ñ«TÜ^ZÊä„„°di?Û­/½„_¦  !¼UU~³o7.ŸŸÅ¹ù—ÞX© ¦¦¦S8êÀc,mOKKg[]-š›F½_“ÃÍ ó…K?é”Jî(-å/'NðFuuDÎ0>LŸNVt4S““ÃÚî}¯½†Z¡[pnñù9ÜkåÇ{vsª¯—ùE£Ú/îp9ù¿{ó¬9ø£cÆô™¶âI¸Ò3h¹õöQm?;3‹ô芓$hqº9Ùo£ÍuiƒC닊ø°¾žg Ëù<ÛÓ§³¹¾žgÊËÃÞ¶yAA„«YOOGŽ–ëH’„|p°Á` ´´¥RISSf³™¦¦&233IOO'>>žcÇŽQ\\Ljj*{÷© ¹\ŽßïG¥R!I±±±Ì;—˜˜¶lÙ‚×륰°¯×ËÖ­[Y»v-‰™™B!¾¹e ß[¹2ìùÓ»v#×xpÁÒ°¶[ÞÚŒÕíæÑù‹ûÊÐOΙ)§?ܶ‰Ç/Çîõ`Oi³åù…ühûf¾¼d ù…ÇWB’D½ÝIP’È30*çMyWÊåäÇÆ’7ø{P×ßO^L Á`›ÍÆ®]»hkkã¶Ûn£©©‰ÖÖVV®\‰Éd"`6›q¹\H’ÄöíÛñù|¬Ìa ÑhHMM¥µµ•;w²jÕ****Ðjµ´¶¶²víZ¢££™è¬V+åååƒõæC¡Ðе«Õj™4iF£‘æææ¡k7!!ÌÌL233)//';;›œœŽ;Fee% …‚@ €B¡@&“¡×ë™?> 8p€¦¦&,X0ô½1}útŠËʰù|mæE¯]mw7£‘Oþ ý[Ì3.­\¢#/Ÿ¨ÚS¤¿õŸú4ƒÀëÝÏäøíþ=Ü\6•`(Dr”‰òž~Êe© ĨǗçbuÞÀ,¢'6nä©… Ö¿8>žâøxVæåÑlµ’b4¢l6åååÔÔÔpã7âp88qâ+V¬ 11‘P(„ÙlÆápP^^Nss3·Ür J¥’ôôtúúúضm3gΤ¥¥…ØØXŽ9Âõ×_O‚(ûvÙMˆÝQÕe¥Éìdq^"å-få&bÔ|Ô=0ÄÉN+ÑZ9ñÆs.t»7ÀžúV§Ðhvàò™œlB¥A„Èjkkã{ßû‹›Í†Åb!##¹\ÎŒ3øæ7¿‰Õjå;ßùµµµÌŸ?Ÿ%K–ðoÿöoüáàå—_æÞ{ï%55•?þñ466’““ÃæÍ›Y»v-‡žžÒÒÒÐh4üãÿ ¿¿ŸÌÌLêëë)//ÇétâNJ"=7—߬_Öãë÷x8ÜÙÅŠ¢Ét¹Ã›eøPk ³3².ëϧÁÜG´VG\˜¦£þëòÕô¹œìonäúÉeaíëSËVáòûhê539éâSé›.š.JcM˜†NÎÜOýáèQ¾<>›§y×.^~ùe¬V+Àår!“ÉÉd””ÄücNœ8F£áرc ^ýu$I"77—_üâœ:uŠ^x„„ž|òIfÍšEWW@€ììl-ZÖón}}}üøÇ?¦½½§Ó‰Ùl&%%•JEQQßøÆ7P«Õ|ÿûßçÀLŸ>•+Wòõ¯7ß|“—_~™k¯½–œœ^{í5¶oßNYYÛ·ogÖ¬Y˜L&Nœ8Á÷¾÷=ŒF#Û·og×®]ôööòá‡ÒÒÒªU«H«©¡_§ã;7ÝÖãóƒìjnæž0–T´úüé³²»©‰Y™äÇ.˜KܵKÙþú·/ŒâAA»ÍŠ H5 ÿ°Ç^XDõ“_%óõW±–”b+žtÁö™·_0Èk'Žr×ôìí23%΄I¥Ä4Æ@ýÌQüôÚk „B|XWÇ5ùá›$^­ªâŽÒRv:Eï¾}¼üòËttt°wï^”J%6›P(Dqq1<ûì³lݺ•¨¨(***P«Õüãÿ@£ÑÍsÏ=GSS/¾ø">ŸŸýìgÌ™3‡ãÇ …ÈËËcáÂ…¨>Áäœÿl&D€Þbqò›ÝµèÕJfeÆq¨¥™qçèn¿jbrЉì8Ã9Oøºlnþß»ÇX’ŸÈ–S]´ô;ùêê  ‚ 7iÒ$f̘ÝnÇívsòäIÖ­[GKK Ó¦M#//ŠŠ .\ˆ×ë%++ …BÝn?¯-™LFTTqqq¨Õjâââp»Ý˜ÍfŽ?λヒÝn'++‹´´4\n7¿¯¨àÞ‚f„ñFàÿöïçæÉ“ÙÚÚÁœÌð­‡ÝÕPGiJ*ýn×eù™¼SUÁ””RrNŸ/ìYàãõ®Ÿ\ÆÑöV F2Æ8M÷B‚¡6‡£í­Äë dŽbZýÉ~räEœðë»+V`v»ñ(XããñÇÄ0·¸˜={ö`4Q©Tüå/!11‘ÿøÇdgg³oß>:;;‰%..N‡ÍfcæÌ™X­V6mÚÄîÝ» …B¸ÝnìvûPàÐÙÙ9áô¼¼›7ofÇŽôööÒÝÝÝn§»»›ýû÷ÓÕÕÅܹsE€~Mˆ¶ßåÃqïìÒ£u|qI1q†ð'¾A„OZ(¢±±‘C‡QSSCOOäðáÃtww#I‡ƒ††öìÙÃŽ;hhh 4L]ë3Sb£££Q©TDGGc2™†¦ÝVTTÐÞÞNGGÁ`Ç´i(bcùÂÍ7ó…/|ÒÒÒ°ÓË••lojbFJ Í.?s2ófõŒôè´J« ‹/ËÏ$/î£Q½²”TR¢L<»owØ?'Ñ`Ĩфµí(–yY9$£ˆÒhGÝv•ÅNíÂASœNÇšÌLŽeõ¢E,_¾—ËEJJ ³fÍbÞ¼yôôô Õj¹é¦›(,,¤¤¤„ŽŽNŸ>Mkk+eeeÜxãØl6Nœ8ËåbË–-ÜvÛmÜvÛm”••ñðÃóÀ„ý|_---:tˆÊÊJº»»9|ø0‡¢­­ I’p¹\´´´°wï^¶oßΩS§ðûýöuæÚU«ÕDEEb0Icmm-X,º»»QÍ‹7.ŽÖ®å±Çcîܹa9ž­¼ZUEib"ÑMØFÏööSku Ri0j4¬.œtÑ}¦~ëô¹£O&™‹rp./>¼¸þP¾_0pÑ}­¥Sˆ>YAöß^¼è¶±z=±:=,ß70жÙëãpŸ•ýÝýã:G*…‚û§M#Åh$Íhäk›6áøXɸñRÊåÜ9i 'N0»¸˜uëÖát:ÉÌÌdòäÉ,^¼«ÕŠJ¥bÕªUÌ;—ÜÜ\ìv;ÕÕÕ´··“Ím·ÝF àèÑ£Øl6öîÝËÒ¥Kyà(**âÓŸþ4?ü0š0•†ñô^§—l:ÉÑ6 5Ý6ž¹s.ßxû(?¿mÁÄÏwÔPÙieJZ }./“X»ñÖ‰V~·÷4*…œÅùIøƒçßÈœè°ð³íÕ4™¤˜t|nQ! sûnGA.Äãñ ÕjÙ°a†íÛ·óÅ/~‘M›6áõzñûý̘1ƒ÷ßµZMOOYYYÃŽN´Z-z½…B^¯?gM{}}=%%%$$%¡Òh8ò·¿ÑÛÚÊóßùåS¦ðå/™Y³Æ¿¶3$I¸ý~Öæç£”Ë9j¶Óã Ï´v·ßOƒ¹º¾6”„w¤_’$¼Á{ˆÒh™“™E³Å|Î6·O›A]_/GÚZ–%>}päüöi3¨7÷r¨µeTå¥F#mpZïíÓf”$Áà˦BU–YYFݰµÒt: ŠŠxùå—ùóŒÜvë­¸ý~ÒÓÓIMME­VÓ××Ç/~ñ >üðCt:½½½hµZººº†Fyä|>³fÍbõêÕ¼öÚk¼óÎ;ôööR[[Ë 7ÜÀ7¾ñ°œ‹ËÅëõ"“ÉX³f ™™™|øá‡Üwß}ÔÔÔPSSƒÏ磴´”ÌÌL4 V«•„„ Ô&óûý¨Õjôz=J¥N‡Á`ºv›››ÉÊÊ¢xÒ$R22ØýòËôuuñúOJÍð¥/}é’GÑí^/sÓÓ …BD…!À IAIbG{7µý>¬­áS³.þ Aîõ‚\NÍ—žÀo2á¿Èºl·ßOUw'}N'×MÂõ± ö¦ÒiØ<^Þ¨8ÀÃóŽØNßÜyȽ^\™™LþñÿÐzãÍØ ‡Ý6q0ÄMeSqø¼üéÐ~™·«Ï?{ºÌÌIŒA!“ [ÒðB²ó/<¹`Z¥§Ï7´þR¨Õjfò‡?üu»¹fÃ’ããqZ,dee¡Ñhp8<÷Üs¼úê«(•J:;;Q«Õøý~\.6›ÿú¯ÿÂb±0sæL.\ÈöíÛyê©§hnnæñÇgÕªU|ë[ßB§_–{áâ" '4|uU)¿ß{š/-+&7ÎH—݃Óà/å h” ^~h ÇÛúùê[GX^ŒÅíã{VðuÓX˜›ÀÏ·×àöÏi×å òooåá…ù\;9ͧ:ùÆ;GyçÑçLA„Ëé…^`çÎTUU‹Ïçãç?ÿ9íííx<®»î:RRRxÿý÷¹óÎ;±X,Ck?®¥¥ehÝ Õjåĉx½Þ¡R”7ß|3 ^/½½¬ûÔ§øqn.<ð>ú(Ë—/'>>~ÜÇq¬«‹D½žŸíßÏ÷W¯Æáà \|Ôj´~»7/^¶2eg³û¼¼vâ(Ÿž=Ämbu#fùñ tجDëtèUá™Íw¦í¼¸ËÓvs¿™#í­ÌÍÌ!Z«±î|P’¨è·QÑoc~Rɺóƒ4“ÉÄ#z½ǃR©dÅŠC£rJ¥“ÉDFFv»ôôtîºë.>øàn¿ýv~øa¶mÛÆûï¿Ïã?NAAAXŽÿrzå•Wضmz½žääd|>Ï=÷½½½ôôôðÖ[o1{öl^zé%î¸ãìv;ÇŽÃï÷Ÿ—l­¥¥§Óɉ'èë룺ºšŽŽÜn7×\s §ìvj+*ȼýv6ÿû¿óä“O²téRn¹å–Kºv«{{É0™ø—yîÆÃrnü¡•;v?ßµ/-^vÑà\áõ on&öØQ\™ôÎ_0ªÏ:óÝ0’˜Á@ñáy éq:Ð(”˜F¨Òhi4T=ùÕ}+Žc)›:bÛÑÚ¶™·ˆ^§•BI´VKÇË?ZºÈÒ39&jÄ^’d0Ðítòã½{ylî\4 I—Pw^§ÓqçwÒÙÙÉ‘§ŸfÝÿÈ/¿ÌWgÌ@.—£Õjñûý/^ŒËåÂd2áp8ÈÎÎF¯×ã÷û1™LÜÿýlܸ‘믿ž'žx‚ŠŠ ~ùË_òÔSOQRR"FÐ/³ ©ö:½´ô»¸oN.QÅÉÑÌȨ—^ÙiE%—³¼ RÁêâT^9ÚrÎþÕ]VšûtÚ<ü¥¼P¢ÇÓÊœìñÉ ‚ ÂXÜ}÷Ý8p€•+W²~ýz$I¢¾¾ž7ß|ÇÃÂ… Ù¸q#÷Ýw¬^½š‚‚¶lÙBmm-.×À:ìÖÖVº»»ùÑ~„V«¥­­Gy„îîn^|q`ÊæìÙ³éÛ¸‘Én7óÕjÚÚÚðx<ôööÒØØˆL&#==}\DZµ¡ÏΚÅ÷W¯Æâós¬ÏŠ+W[g«ìê %ÊtÁðK±¿¹‘é™ Î?ît_/E‰IjmaI˜ËºÕõõRÖ¶³bãÈŠcWcñ‰#èg+ïégfB ©ús·ÛͦM›¨­­eõêÕ<ÿƒ0Ód¢M©¤jÿ~0™L¬^½š¾¾>` õz½Ü{ï½À@†óØØX¦M›ÆöíÛ©ªª"##ƒ¾¾>œN'$†9y¸ÝtÓMlÚ´‰)S¦pï½÷"ImmmlÞ¼™òòr®¿þzöìÙÃ]wÝE[[óæÍcÖ¬YLŸ>ÚÚZ2™ŒÎÎNjjjøõ¯MRRv»{ï½—„„ž~úid2S¦LÁ±g©µµ¬‹Š¢­­ —Ë…Ùl¦¹¹™`0Hnnc_k+kòóÜ¥Ù[›Ñ(U|iñ²Qí§pºˆ+?HÓÝ÷ŽjûcímäÆÅ黡ÅÒOŒVÇ±Ž¶Q]_IÛ·á7F¡²Û°L™v‘¶-˜´ZŽŸÕvƒÝȈQ+É2Ž=Ñd’ÁÀV¯æƒº:âtºK Ð}>»víâðáìZµŠßÿüç”Iþk®áÃ#GˆŽŽF§Ó±|ùr&Ož À¦M›¨©©ásŸûr¹œ¨¨(fÏžÍöíÛ©««C£ÑÐÝÝÛí¦«« •JE\\ÜÐì!ü&l€î „„BèÕ d2P)dèUëtìžj¥ràÿ£´J>žÎâö#—ƒnp¥¾ºº„Ôh1CAøäDEE‘˜˜Hbb"ÉÉɃA¾ÿýïÓÜÜÌš5kÐét¬]»–ÞÞ^~ÿûß“œœÌÔ©Sq8<ûì³ ¨ªªbÁ‚ÒÓÓCYY{÷¼œ¸¸8ÞkmE—–ÆúèhÔÔðæ›o••EMM ííílذaÌúަ&B’Äó\›?Àq³‹Ï?¦v>®Ën§ª»“ä¨(d—¡€ZUw'þ`¹lì­Ÿ¹ù®ëí {¿ÎÔq¯ïë Û9mÿýØaîœ6ó‚Û$‰ãf! ý¬ ½··—ãÇsûí·3þ|¾ýíoSZZJ[k+ííítΞMTTK—~TN¯¡¡·ÛÍÍ7ß|Îg(•J¢¢¢Ø½{7Z­»Ý>”­Üh4²`ÁèFP#å̵wöµûì³ÏRQQAYYF£‘%K–0gÎ~úÓŸ’˜˜HYY2™ŒŸþô§ÈårRSS©««cÊ”)”––b³Ù˜4iUUUÔÖÖb2™(·ZQ´·³.*Š·ƒÁ¡k7&&†ŽŽÞzë-–,Y2æ½¢»›Z³™OOŸ¶sRgsÒæpòçãÇ(INE>Ê‹«ð™_R÷Ð#£ Î[,ý´Z-5šÑ$s?ÇÌôL:í¶Qmê‹chnBE°9#} ©[×ÇÚn°;QÈdøCù¦ñØk3»wÇþ}éøJUÚívŽ9ÂÊ•+¹æškøÞ÷¾GZZN‡ƒúÓ§éÏÈ@«Õ²páGËœN'J¥ò¼kW¡P`49zô(µµµx<Ù³g:Ž3fˆ$q—Ñ„ Ð5J9J¹‡7€$ dq7»ÖœÄèTxAÜþ:•’n»—@èÜl™IF-Z¥‚ eéÄ4H˜]^â bJ† ‚ðÉÑh4|ùË_ªû,—ËyôÑG‘$‰”””¡ìÎ*•ŠG}”˜˜JKKùÚ×¾†Á` %%…¤¤$¦L™‚Z­&))‰'žx‚@ @ì¤I|uçN3H2¸ãŽ;X·nݰ7O±c¨}îöûyâý÷ùÏ+†2R{ƒ!öôãð_ÚÔöŸîÜÊgç/fRR2)Qá© üqi¦hB’D¬nüåÓæäq²«ƒ6«•5EOz5Ö¶+»:i±ô³¶xrXÛž—™MUwMý}\[\2âvž` ³…LFÊàt÷¤¤$~øabbbP«ÕüÏÿüjµǃkÃjƒAžüà~´ÖV.—s÷ÝwãõzILLJÚ¨ÕjyôÑG1Ö-çääðä“O¢ÑhHKKÃëõòŸÿùŸh4bcc‡Öç×´µqßÛo“$“qWL yk×2oÞ¼a¯Ý¨¨¨1õûþ×_çg×]‡)ŒS‘ëlN¾òþFn›:“ii£ªNöw©Tt­X…¤]ا7 UªH<Ÿã±0'6«…=M ÍûàÌHrYúôQ÷™Gð$%_´ív›•] uÜ1ø ,(IÔXí´»<E‡]>27sÚlæÅ'øÖ²ÑÍL8Ãd2qß}÷…^¯ç»ßý.J¥¿ßÏý×\CŸJÅý¯¿Î gã×]wK–,9¯­ôôtüqB¡Ð°#åbýùå5aô¤(-SÒbxõX )&5Ý6N´[XZÄ´ôXtJ%<ÐÀÂÜþQÙ†ËwîÍBIJ4EI&~±ówÎÈæ`sooåoŸ^$ʯ ‚ Ÿ¹\NvöGYÎe2%%çMjµšŒ³ÊîDGGõgÞ?C¥R‘’2°VûŽôt–Ï™Ã÷ìaÑóÏ“¤×óì† ˜>iGò¡.‡ƒ8½žŸ^{-ºÁ›jO0ȶŽ^¼Ã$e-‡Ï‹J®àó – Q*Ã^ÞÌâv£U)ùÕž|eéʰ´99)…âÄdž?¸u“KQÊåÄëÇ? õl“’’)JLâåû¹®¸„ä1a#ɉ‹'$I&$bõ¸1¨5(G!ô >t‘ËÓ1h4$' $%%a÷zqIh4ü¿W^¡¦¯L“ihVÅ™ßÅÓëõçüî_‰233‡þ-“É(,3:𙩩l«ÝnÇîóñZUMŸNòà–Íç§¼×2îàÜðÓb±Ði·‘lŒ¢(1)¬ç ßåÂé÷q ¹‰åù…a ÎäƒYšœ3Ÿ`(ÄŸàÁ9£_Ï>š¶?={’$QÑÙ>Tã9\mo««eaN]vÛˆm‡$‰°«³¹I±ÄÖyÞT_Ó磦¯=­­¼rûíüéøñ¡à\?™LF³ÕJNL Ç?÷9B’Ä-/½Àœ´4ÊùƒEg=(ŽÙí¦Ùjå`[ ³²( Óúþ—‡ç+*ñƒB!fg\/·›[.’äéR)ärœ3Ÿsþ`0¬$Xw«Öà )SÛ7–NEB¢¼¥ù¢ÁËÅ×7!Ý00}5 !I³ÓÒøê¢EüæÐ¡q¯‘έÑ>8sB.“ ]»ï×Õ±»¹ä·44ð™3Hf¦…Óï§Ùjå‘K(£x¶>^¯Z«V‹eTË0L5Õ(v ÍÍ8 Š.œxzŽQÕM¿TÏ]H—ÝN‡ÝÊô´Œ n«îëC†DÂþ}´Þp¡‹Œè·XûIŠŠ¢ÃöQÛž`ýÒ :ÒõZŒª±…]Lø>ûåÁƒ Ðý¡ßßµkèÿÏ\»…ññC¿SÏ:ÄO¯½ö²ŸgáÒMˆ]A„ñ‹a=॥ÜQZ @£ÅÂÁöv¾ðî»x®/*º |êƒøÑYëŠþÇú.-!Ü ‡p÷ŒÙ—-8þà>œ3ŸÌ˜Ñ¯¯¿Tµš@(ÄßfCIYXJ¦Ée2®-.¡ÛaGÿ2‚áÈqݤNvuàòù˜“yî´ó5•ïhG§R±:/(ÑÕuç=È93#C£ZMâ0™»×æç³v0qX·ÓÉö¦&¾³};ýn7ó32øÊ`’½3×n¦)<ùú½~Ž™­¼pä0Ëò F#ÁEH©ÄÉÌô¬—•X¦M@ár*ܺI¥X=lgØýª-vºÝ^æ&Æ¢ÇLÞ/ΙÃÉîn´·óàÇþ½|ò$/WV¢Ë¹eòG?§åÙÙçý^‰k÷Ê!tAA¸ÂåÇÆòß;w²®°#¬Ή‰!gðmFJ ÁPˆwjk™úÌ3üõÖ[ñƒ(äò¡ŒÄ{ºÍ¸ÇYJm{ýi4 %×— ¸ åxþvô ²s¹~ré's’Ï’d¸©_UP„F©$ …íÏ´ý«=;¹oÖ *uØÚ΋Ç ñóÝÛ¹±t*?Þ¾€ë&•pïŒÙ˜Ôjn+ÌA;ºهÞ|SŒÀ…YjTïÖÖÒj³qíµá“ nÌ[17- O À¾ÖÖ¡k÷§k×â ‘Ëd#æî`€ß¯ ¾ßÌÒ¼|¢4Yk ÉÌù£üõoGõ9ï×T‘‘k7F§#F§#Z§Ã¨Ö\ôÚí]°mw…¿ü9ßúÈd#ìÑZÑZ=RÎâÜ|ÒLÑCm›½>vvö£V1+1vÌ•%rcc‰ÓëùÆæÍÜVRÂgßyo0È%%|wÅ d2Eñ#—‘þÆæÍaÍæ/\^Ð%IÂçóEºÂw&ƒ° ‚0¼o.YBuo/AIBq‘ Ùqq'$ðä‚Tõôðà›o”$6±®°ƒ½Ò¢Ç>* …èrØY–W0æ}GÃí÷ãôy¹kzx¦ò^Šƒ»×Ã_âŽi3QÈe hFë —àðzùÝ=Ü9mÖ%·}ºo dÜÞÆö66Ði·ñ7ÞvÎ6F•rÄààk‹c¥•Âîá™3©ïïÇ %eIöàC¶â„˜>:³™ÇÞ{¯mÚÄâ¬,î2°´sFJʘì¸Aöu›©ìé¡()…¢¤”QíWüÿKË-·*8÷ƒô¹œa¯Z0gª;üxûf>;1þPpÄŠž¤dN|ç¿ÈzùoxRRq§¤b/,±í»gÌþ¨í‹ñ‚Äêõ8Aœ ¡ž~Š¢•J”£¨Sw¼« _0ÈÖÆF~{ø0oTWsäsŸC3†tÌšEÊ%ÔX>YÐC¡6Ûèj ÿ¼D€.‚pq¯WWóÄüù½Éÿ¸—++ÙõÐC(år^¯®æWÒéöRðÑ:èYY#N¥?ãh{+¹qñìonäæ²ð¯ßßÜHFt u}½,½LÆ*J£åÑù‹8ÒÖŠN¥ÂæébNfVXʈ5>;1GÛ[Ñ(•LeÐtFc¿y¨–{ew'‹rò0iµÃ®ùMÕ]øÀÕÕ<6w.†Ë0#âŸÝ‡uul(.F7ÆLþï>ÍŸnº‰DƒíMMüêàAdf¦/ËÎ&ï%íþ«ªA«Ñ³³¡Ž{Ì Ñuv éî¦ú+ÿ:ª~–·6“—À¡Ö–ˆŒœäÉe«¨ííÁâv¡V*)NHB;ÂC¨æÛï`ÒO~8ªã~rÙ*N÷öÐïv1GÿѲ’—‡—‡Âh#“¢È‡ù®¨3›Ù1˜ƒ`k+¾`ÕyyüðškX–=¦à>^WP@†xÀvEˆx€®P(†ÊMÂHÚ×M ‚ #3ªÕcž:ùñýnž4‰›'MbcK'/WÚæíÊøƒA2cb¹f„šàRöàü`K©¦hÜ~?éÑ1¤¢þò'mFú@b¨íõ§ÃÞö™¤Sož<Ά’)ÃÞПñnÕIºì:µÃàÏöK‹j*hibvFÖ°e¬&ÅŒ\wúµª*n+)#è—‰^­¾àÏuÄýTª¡ý–eg³l°¬Ý¯ËËqÎP}îÈœ~?iQQü벘%‰*‹«ÏO‡ÓM–Z;ªà¼à7¿¢ýú (¼ž‹n[ÙÕ‰B.Ãí÷­ÕN¨àüŒÂ„8ä@K!.> Tý•EÛÙ1@îÆ›/¸mÁ`Û›jk˜—•}Î,˜Z«ƒ@(D´ZE¶QÏ Çsx0©§A¥"a0ùçÖ¬Á¨V³£© µBAnìØf6mih`fj*aÊQ \~ÐAA…ãZƒº8ëü_…\Î %UB©ëëÅéóÒa³ñ­÷ßà±EKI2Fq¬½ ‡ÏË¢œ¼Ër\ѱ5j–ç^zcg9ÞÑÆÎ†º°&°[–W@ÃÁ¶ºZnŸ6ãÒüÍ-dÄÄrïŒ9XÜ.Œí°¿;ò€¹ÛCîŸÿHÏ¢ÅôOŸÉ…8|^dÀsöñ¥ÅËÂ~®l^éÑ1hJv7Ö‡õÁ Z©äî鳨ÝX$I,áá]À`Ä^X„;=JºßŒ/6nÄvsbãðüÔtwaq»x·ú$š›ˆÖêøþÚ똕ƒI£A;Âò¤ƒíílihàkƒåGkWs3åíí<1~ØÂåsEè=v/¿ZÎWVNB¯Ròïÿ8Æ/oŸCz´þÒA„«À ·ÜÂÑÎN¦§Œm½òo¾™ã]]LM¾ðH—R®*%ôÍUkqûýlª­æ×{wpí¤´J%‰ã%MEÿËáƒ|~Á’°çÍýfQüùð’ŒQÜ:u:5=]aå“ËdèUj®Ý GÛÍ–~Ì.'½N'µ½Ýütç6îž>‹Ï/X2ê6òã „ÎÏÊ¥R¢¼ÀC•y"Ì'àå;î`_k+ó32Æ´ßßo¿mmÌMO¿àvJ¹œ¤ÁDaŸ_¸”§¹ÙVWËoö ÔÏ^–_@¬NOŒVGNÜGÁõMM$oÛBíçUÞ¬XŠîà¼ÃfÅ ÖðçÃQÊåCKmj{{ÈO˃A¹Îýµ½=äÅÇ£ ÿÐ+ 8Ÿ“ø}ª¾ú Ôæ>yçõvv¾`»•ŸîÜÆºÉ¥Ü;c ]¬N3ôsI~l,¦q̰˜”@²HwŹ¢tAA.Ìã÷s¸£c̺ÓçãXgçEôsûýÄhu|{Í:þ~ì0.Ÿ­R‰~ð†Ò Ö°º°xTíÕöö S©ÆxŽF·ÃNÓAŸÓ‰Q£å —ðÊñ£CïWuw‘`0Òfµ055}ü4Œ3m·Z-LCÛÞ@€5•ÀÀÏÇðéÙóÇ5Ý¿ßíÄí÷•r;£ÀdÀ¨ù–°Õf# ‘Öó"œK’$ö´´Œ9@†BìE€~¶4½–§‹@(8tí¾SYA£ÙŒZ¡àXG?Žùîûpä_<)c«Õ‚ÛïãÞ™£«ƒ>Zv¯‡šžndÈH2ù‚%ü׿CïŸêé&Éh¤º»‹yY9aýìÚÞѵ}ì{ÿƒ¡±Œ7_§}ÝzlÅ“x»ò!IÂí÷ãöû¸gÆì¡wJ¹ŒTýÅ«3˜Ýnªz{)NHSÿ{].êúû)¼@ 6a♺Ó`Su'»ºI4j™•Os¿“ûæäÒm÷ð§ƒõ˜>Š’¢pûCûyüA6VupªÛ†Q£âSssÉŠÑó×ÃMDëTTwÚ°¸},ÊKD.“QÞlF.‡»fä/ž& ‚ WŸ $aózÇ·ß8Êž¥î€èÿï\Ýj±PÛÛ €7àÿvm`ý䲡éògsx½l>]ÃŒ´ Tòð¯—TÊåh•Ê¡ìïß¹ ®n*ŠÅíF«T±åô)&'§ž¤J7•NÅêq£S^<ÁZUW'ÔVõ¹d0sûܬR£LüåðÁqç=Nu}½¬)[‰«:³™ªÞ^5”?Ïů}œ4Žý²zŽöö%’X_28ö8ôþñ9<©ix£LC×î²¼‚¡„…÷—ÃY]8‰ "ü¡…\&G§RQ:¸ Åõ±ï©ë'—âñûÑ«Ôhi"V§£ð¬ —bݤR<?ºQ$G¬Ž‰áç1&úͯxkÅJ “'#GÆ´´trbãùËáƒçç*¹œlã…g;|>^©¬äß/SßûÝnÞ­­åÉ Âr.„ONÄt 8Ôb毇¹}FF’ïXA^BwÍÌæ·U!Ip÷Ìö4öP×ëÚ·Ñì¤Ïéåæ©™¼z¬…nªäo™Å¡f3fÿïÚ)œl·ðÃÍ•Ü:-‹ eé<¿¿Ž—Ž6ñÕU%‘>tAA;“Fà ţ­>[¬V˺±~ÑZí°7í11d Ölöƒ Þ0ÿ£º’zs/Ù1qüË’åCÛkU*æe圗Ô,~¸mÿº|5qú ?œÑéˆÑéˆÓë‡M¤v)¢µ:¢µ:^9~„YYäÆ;¢õƒ­Òå°3))™ ƒ7ñ ¹œì­k]6ÎDy?§ó“zet¤\`/%*jhݲpyÉd2î™2eÌû©ärî,{vtµBÁÂìó¶‰#™·ÝEP«ÅÅs;êøÓ¡DkµüÇ5ëÎÙgY~!Éc,7?Þ¾™//]9œD«R1%5~· u˜¢i•*¦¦¦³©¶†x½a¨bÿٷ‹šžn2¢cxL’‘X<‰¹s摜’‚ì¬Ìã½vµJ%·–Œ=n1ªÕÜ4Ž¿BäE<@÷øƒìkèeR²‰Ê2Ëdì©ï¥Ëî¡Ñì ¼ÙÌïïžO^‚£FÉ{••ÛJÖsíä4¦¦Å«çŽçwQ×ç@&ƒù9 LI‰F)—‘Qc`jz,e©1ÌÉŠgûén‚! …\$—A®.j…‚«•wkkùÒÜѯßÖ*•Ôöõña]ΚÅòÔDþÑÒ9ŠÏSÒÔo¦¢³cØäc*…‚¼ÁQó/,\‚„DS?¿ü"ÒàÐÿX³Žx}xsʼvâ(SRÓyrÙª1í—`(7öƒ­òøâåø‚A¢µá Øo™2§ƒÇÞx‰Û¦ÌàõŠc|mÅ5$GE!C6âZÚmßÌ——¬ógJ’ÄÿíÜÆ¿._}Þ{j…õIåÜŸ}çþ|óÍ—ß™ŸúÿÛ²…ÿZ¹rÔûÉe2<ÿ¹};ßZ6úußr™§ÏÇk'ŽrË”éç¼çIJ¢ì»ß¦î3—60u>'. «ÛÃg_ý+Þ@€`Hâ±EKÏ{t©¶œ>E”F×—®ÓÚòXÝÀwȶ~È——®Äáõ¦ï•UEô¹\<öÆK<8{>:t€ÏÎ_ÌÃó¢t¹ÑL*¥'1‰”õù÷öpSéùå'—§^|Êú]¯¼2æäw¿úê¸ö"/âz0$áôˆÑ«Q)äH’Dn¼‘.»›'€„D´n`ZI”V…AýQ— j%±ƒïEkÕ(d2ìnÿж2™ 92Œ%…d Ë$‰$¡WµXAA˜Ø ãã‰GI¬5ùùœèî¦Ín'Ùhõ~s2³i0÷Ñïv Ý dàf[F^\85;¡ÅÒ?tO_”˜ÄœÌìQõgSm ³3²0»]a9—ÉQQ\[\¡ÖÒ££Ç¼|æ@Kµ=Ý ˜)t²³ƒÕ…Å<˜{~É2…ËE̱£4ßq×°mõ»]d…bÇu-ã¼Ç»ŸyÐÕJ¹ñ>¨î¤¥ß…\.cSM'Y±2bôÄé5ü£ª{fåPÞb¦©ß9´o«ÅÅÑÖ~²bõ¼_ÕN¬^CVœHþ&‚ üs+Œ‹ãHG;››Y’•5¦}[m¶kñ^HÓQ­ó~IF#úÁÀ>%ÊÄíSgPÑÙÛ? êh{¯WG§Rñ•¥ÃOýÝÙPG¢ÁHvl Pf¤gP”˜„Q£arR s3³‰×ý^åÊ fefkýwû÷ðȼ…cÞïÉ>àg×]Öó(\X²ÑˆA­æõêjnž4iLûv;Æ ŸÑïv¡æ¡\ûu×3åÛÿßþ¯a÷‹Õë‡Ö{GkuC×î¡dÍ–þ¡Àý«ËWû9ÇÚÛðdÆÄ`ÔhX2BíññJ4Ñ«Ôüv×Á/wïÀ2Ø÷ÉIÉ%&¡V*™–šÎâœ<4#|7JJ%Ž‚áfl¯?Mj” ÃǾKb¢F,ßvÆ··mãñyóÆ|Ìߨ²…¯1©œ0qD<@WÊe,-HæD»•‡^ÜK~B‹ói±¸0iU<¹b2?ÚRÅkÇš™—@ABÔЧìX•]Vþx …LÆ×®)!J«B£T V üÂËå UÊ‘®7W)ähÅ(» ‚p•[›Ÿ?"$Ic ê®/,$8¸ßXÌËÊA’$$IB6†Ï+omfZj:QKÊV–òшùää\>¿Ÿyó``-÷œÌ \!“33=¥\>â ô¥*ˆODn.›ÆþæFÜ~?Ëó qûýHHìj¨ãݪ“|}åš¡s­ÕÓ§ÍÌÎÌÆ¨ÛÃŒùÙ¹˜´câ ¸¹ìüiêj¹œÙ ÑK!|榧ãòû „B(åòQï·03ßO0vD|8 ™Œ²”4üÁà°ßµŸ …ËEp˜)ë•]Dkuç=p*Jü(ƒzYJÚPÀý÷Þ ²ª ˜ÕEÓøå29ʼnI„ЫƷ¤åb²b~Ïo2šž.ªºº¸©l*ž@€âDG;/)à±EK‰ÖÌ*‰ÒhÏ™TÑÙA¼Á0l²I…ÛEÖKÅ»|Ø×ÿ{ýGˆ&'Góã›?ºXnžšÉÍS3A„«Y´VËlÛÆƒÓ§“3˜M}4b´Z¾¾y3_˜3¶ZÆFµ†çîãÖ©Ó1!ú­S¦ÓÔo¾`PaTk†FçϬû|íÄ1>óÒ_H2¡S©¹oÖ2¢c.[€SËcuzŠ“é°[©êîä¥c‡ñø,ÉË¿èzò~·‹ÕE“.ºN8ÛêN± ;—ô³ÖÆk'ޱb˜õ¼ÑjÕ@~ž ø¯;ùãM7]¶ó) ϨVóÇcǘ“–6¦ÚæQj5¿;|˜99LO¹ø µ\Îü¤8vwõñ^õIædf“sîC_lSÿã›}ú‡çí¿ª ˜v›o 0âu§S©†‚Ü®H6¸ùt Ÿ}åo$ ø‚A¾¸h)ÉFÓe ÐψÓëÑ(•„$‰ªîNÞ©¬Àìr155í¢×®ÃëezZ‰#äæÐ·¶rôû?ö½ƒ-M¤GÇP’<¶e-¿?r„Yii¤#;þÿîÛǯ\‰iÁ½y"@o±8ùÕÎSdljҨ8Ýcçy—–ŒEAþÙ-ÎÊWöñ§W­âÅŠ QñcÚoJjšqÔA>ÖÞFJ”iÔ£~·L™†L6P›ù¥cGØ^wz`º¼ZM´VÇ‚ìð—ÛÙP‡ÓçÅáõÒëXr÷Õå׌zí}»Í:äE£¹o\Á9Àä¤ Ã>3.ÜÖÆÓ§ù¹˜Þ13SRHG`öåùóy³¦†É‰‰cÊ%Q”˜4l~I¡ {ÙÈ•ª»»˜––>¦c« Š †$fgd]»qz=&­B9ì¥Ku°¥‰>—·ßO—ÝÀƒsæUl¸˜>—“.»}Ä=yëf¬¥eç½Þi·‘O~ü¹ƒñ5Zå…¿ïf¤¦’6†dgìjnæë‹‹àü 6!ôIIÑ|nqUV‚!‰Ï-.bFÆø)‚ ‚pe¹¡t /?2´†u´n.›ÆËÇð¹k-´µÒå°Ñí°óÌÞ]CÛ}zÎ<´Ê±%°;£ÑÜÇÆš*Ò££‡ÖÐ.ÌÉcjjÚ¨Ûé´Û0»\a__+‘´² h\×Iç\»UÝ4õ›qù}ç\»·MA‚a|ù¥zœ^=~HwæAÚ´´ô1=À³{½Tvurݤá³Áçýá9êxhL}K7h1ˆ)èÂ&Äo†Z)gzz,ÓÓEP.‚ árM^¼ñƸ¦)o<}šÿ\•Ç1³uÔûÌÎÈâÿvnã_–,óçÍÊ_R·³÷›‘ž€Ûï§±¿oèõïoùo ÀÒ¼ÿßÞ}‡Çu•‰ÿÞ©šÑŒ4£Þ­^Ý{‹Äqª“B!@üh ,°–`Ý ½, $”„4Òlâ8vÜ»\d«ZVヲÏïÉŠeÊ'#ÙïçyôȺsÏsGºãyï9ç}3Çý}¾—OàPíPY¥d‹•«†“?eDF¡Skè x~XHYQѵ8ÓÞFY[ 7åÍ ¸í;•X Æ1ëÝçZÃÐM°øõÇŽ‘!#pA´*9™/¿ù&ß\·ŽÈK&¾UYÉÕiiSA×iÉ øÍ¾]|jÅšQ‰Ü|j5}™dýö×T|æs~q1®Ý¼˜8òbâp{½T´·ŽlÿãáýtÚl,HHäC —LzÌígÊyk8)]dh(7åb‰ T§cÀé¤ß騟!ͨœj[½¯ŸÙmýl?SÎ=‹–üÚ¼YYI‡Íƪ¤¤€Ú½V^ŽÃífm€ÉAÅÌôÝçóáñxþõ‰Kš/ÀBB!†üúÆiêë xºì¯o¼‘º¾ÀË=}jåjº±T<¢¯]µ1àçó×ΠՎ*cöµ«6âÃÇ#Iæî[:T*©ßéJ@çvó¿;߆F濵ñz`(Ý…ÓwËÚZF’ÄMUs_/GëëiL ·L+ë; ݰШÆif­fÂÄ›²³1Èè^Ð}ÿê«é„¯¥ŸlÜH—ÝŽY7ùšn­JÁ8œÀìËWÓç°I‚ÖŸžAÍÝ‘húûqû™rý‰B¾z‘®]J5êÚM‹ˆÂëór²±aäÚýäò¡Lìƒ.};ÿýÎÛ8=n®Î̹vUŠjLEŠúž®‘$qSÕçpðϲb>µbßÇÓÿô$% çõç-!6fÍÄŸb20Ç4ñ2—‰‰¸¦‘‘Mr²|f¾ýÝ×ëõÒÞÞìnˆÎ;7)!„CÁê·vìà§×]P;­JÅcûpó¼ÀJªEþ‘Å%™{hÝÕ”·µŽÊ=_ºâ*δ·‘9Áèô¹©­×åäq]Nßúçëx}>^=]DUg!ͤ‰¢œNbLfÒ"¦¾>ßãõâp»Îšúz©ìh㚬ÀJnœnn"Ü` à¼òf­fÒäpoŸ=KºÕÊÊGïÄÅeÔjùú¶m—º›n»†gŽSŠÌ§Vc9} •ÓI󆱸W¯ÚÈ©æ¦ G™ýùê•×PÜÒoá¨í*”I+kon¦spÛóòêë‘ÆFœ›²/þ:~ñþ z€®V«‰›B¦Iqykll v„bVR€¹1½*E¡ &ð)ÙjEE’%ð%kn¯‡†žî€t§ÇCcoÏ„º?ó9ÓÞ†^£á›¦~óÂîvÑÜ×P€îõù¨ëî528·›ºî®içM½=„…„Œ ÎRLFÂuã¯Ç/mo'%<\‚ób^lì{Þ΢Ó®ÓÒãt‘jð»#2 Åí÷5]è^ ¦«3àìæ™Q1øšBȵëñz©ïé&':°×t¢s34ÔãÕjqDŽ}?(¬¯œOEËÀ½GÀÁyc_n¯W‚óKÀÔÓ¥ !„bÖQ€ä°°€Û©…$óôÚE/#æñúè´Üά×ξê³Snóô‘ƒdDF±&5°Š1¯—-¥§Îïóùè°~nÓ}-ô-¦ÊݪÓa pJµxïLçÚ ´]„^‡eø¦Íx ÙÜ&î –Éœ«jµ¢°(1‰7‡“0NÅ˧N`Òë¸6;°àๅlÈÌ ¸Ýxçyð*—Tÿïþ^K“VÃóÄ×´^­&f‰ñô ÑÓL¨'f– û|œlE!„“S…äðpÙ¾= v•Š K8?QP;­ZMˆFËKE'jgÔjY—–9­õ“‰ááäÇNmôÎëóq¼©E I,MNÁávsªyj³´T*2Íjø¨Öc»¶37nê™âÏé´ñBѱ1£¡qÆRLãß5ÝÝüìÀ ¢Ÿ9!Þ+’’øÔk¯Üna\ŸÛ¼9àvI+OÞ?fû@Êâÿ¹ËpVô ]—“7­Ïò#K§˜dÎçó O‰'#2Š„°pöTU2Õgõ·|2^ŸodYÌ…zsóè\äÙÊÿî|›yñckØëTª‘›!ãã§^{-à,v·›/nÙ²„Àß/ÄÌôÝl¯hæÑÑ=è vw„BˆKN^T_^µŠÖG¹R#"¸>7Ÿ^»= vYQÑlÈÊIà4j•Šv[?o”žøü*ÛÛ9X[=é~݃ƒ<~p/¯ß€¢(µ:îY´”5ÕS Ò½^/Ï?pÿ~ºk;1¦ÀkZºŽÿ³>„[òçÙ®UtÔš3™øü²é=§xoXCBxìºë¨ïí ¨]œÉÄmØ@ãpÍïÉ4jÔŠBt¨‰»,¡ËÏl–ŠÏ|WX8ŠŸäÎ>üõXà×FKÛ*J'ݯßéà¯ÇpÛÜD‡šÐk4Üœ?æ¾^öUŸÒÍ¿¸¿Þ·kÜ„—‘Gûο}háÔª‰×™û£( ^uUÀítj5ßZ¿>àvbf z€®ËçDòàÚ,ÌúéÕ(B!ÄÄŠÛÚ(lj ¸]MW稒eSUÕÙAmwW@mòb☗@˃ŠsæÅ'C[ÿøYç;ml-/a}z aá£{`Åj?¸oÒç9ÚPÇC뮨o'›øÂÚé}pÞYY1­vƒ.'‡êjFmÓ©TD†LœÕ»ËnçŠé=§xïÔõô°«¦&àvUÝÝì­«›Ò¾9á&ÂtC©©šúz(okõ»_–7Pû¹ñÆÆ¬\jº:êc²ÅʺôLê&x¯p:y«¼”ì¨Ø1ëÕˆ×Š‹pL°>àxc=_¼"°À·¼­•-YNˆfl|¢ëîÆNÝíþKÄë}Ó@Q Æ0qéBð—¢¢€ú àözyîÔ©€Û‰™)èIâ|@m§²Ö^®Ï‹Çáñò±Zšûì̱¹!?ÈP=gÚúy«´‰ÎA±fw,H&¨g[Y(ÐÒk§¥ÏN²ÕÈÆœxvU¶bÖk¸:{èB®éàÕ¢z>{Eö´îh !„³YˆFƒ'À)¨FšT³‰†Á€ŸO§Ö U>àðxP©oçô¸qyÇÿXSÓÕÉ ËEnŒÿQ7æ°¥ô47äŒ{ŒG`õ“a¨Ôt¦þ¾YV2­SoŸ)ç£3U4êIK;ý¥¨ˆ¯¬Z5­çïZMèJ¦ùm§ |ðK«R)-xŽÛlƧø¿>]^NÏIJßvÏ„%Å:lœíhç¶¹ ü>~SÞ\6—œæŽù Ç=†Íé xùŒÝíÂ=N¿u¿ÿI{ª*¹&+õïcjrÂMLä±ýû§5‚þËC‡øOA¿d}œiïãíòfl.?ÛQÊÙŽ~æÅ‡s¤®“¿©¦­ßÁo?Í€ÓÍÊÔ(*ÛûøÉÛÅxñq ¦ƒ_î,'ÚBvŒ™7K9PÝN瀃?|7aÌÎ3­®ë@Q$8BqùI0›I ¨MˆZM^dĸ‰£&m2©§<-}½tN#¡ZSo/݃þo$ô9ì쯩žp ê5Y9èÔ6—Œ?ž´­%à~Uv´ãt{n—=­y1ÓËü½:9yZíÄ{+Â` 7**àvÑF#Y‘S¯6pŽÅ` nœ‘]óâÓúÞ»l¶€g¿ÀP>Ñì—OãÎ J^‘–A¢ÅÂߎwŸ3í¸½]‡uÝ] 8Ç.¿U¼^rú¿´^é?N±F`ÔMoVðt¯A¹v/-ÁÐÏSÕÑÏ›¥|q}·ÌKâóWä°$9‚“]4õØùÄÊ ®É‰çKWæ²£¢…³íý(@nl«Ó£XŸK|¸‘êήÏO ª£ŸÊö~ì.{϶r}n2x.„âr”`6óBI ûëëji åÊ *;ÚjjbkyiÀÓÜ—&ÏaŽÕŠÇç ¨ÝÊ9©$†‡­p:ùåÞ|léò1SÛϧV©XŸ‘…Ççã?SËm.'^¸4 >ÙÝnnÌ- ,$ðlêo–•0èrÜî{Þ!Å2:9œ¬Ž˜°Ý=/¾È’øÀÊd‰÷G„ÁÀá†þQ:ùZíóE쮩aó—-h‡G|ÃC o¬çdSØ}ºç/`É>ë·}NL,sã„ ââɉ3Z=èrñ£í[ùÄòU̱Nü÷»æ1»ËÅ-ùó0j§> Áéq³&5Ãï{†OQ8óÀ§Çm»·ª’?ù>VÇN|³äëÛ¶=ª ½ù&‰æÀs\ˆ™kFèͽv|>ˆ 3 R²cÌ\‘Cs¯³^C”IćP€–¾¡;å1æ´jjEA«Vp{½D‡êYœÁÛåÍ7÷`syX•øÝG!„âRñ•U«Ñhpzû}nôÊã ,h¾"-#àÑ÷†·ÊËhï,¡]ˆFË–Òâ1É­~´}+_X³“N?é14*±&݃ƒØ.9{­øTÀÇžªJZú{Q8{¯±·‡-YŽyeÒnÊ›‹N­µÍª×M˜à¡U«ÐLcixÜ;>9‘‘ô¸Ìâ‹1'<œ~ç䉘WÅD þ[]”ÐÏu9ù$[¬~ÎsâëëÞùó‰3M<ÞŸû.œV`/f®õNªSãõÍ9´~¥gÐÅ™¶> Z5N‡{èƒÁ ËƒÏ¡º‰—Ðỏç`u;‡j;H4a |ýŽBq)9X_?iB%J[[Õ®îìð;Et2wÎ_HIksÀí>´p EMïfc?ÕÜHvt ZõÔSî,OI%ÚdâŸeÅ##zåm­Ã7¦þṡ§‡9V+9ÑO7¯ïî¦'€ øçú=žE°0rò¥ {jk¥äí w¢¥…ž+*kn¦/Àë°±·›®q–Œ¨v¬Çù}lcv.]ƒ¶€gÜ›Os_ïÈöÊŽv¢BMÍ>ɉ%/6Ž·ÊK龑Q×ÝEVT ‘S¤ë´ÙÐk4,Ožã÷ñ¤W^æÄì÷±–¾>Úú™ŽéüžŽ6510Ù6bæšQzZ¤‰³žWŠêé´9yùd/ž¨%+ÚL¿ÃÍ¡švn/oœn$ʤ'=jâé ­t:ÙQÑÂÜx &É/„â27àrX˜=Äîvhü¶6-ƒgÊy0L#¹ÕùíŠ[š(imaSþ\B4åÄ]“šÎÁÚš‘s­Zðè²F¥B«RÔ ¤µ­ZMbX`ùÞ©¬`QbÒ˜ôÉüñøq>›+#è3Ü Ûp¢G›Ëð5¸(1™â–&ÿy¼>Ôƒãç‰Ðk4Ï¡Ù3 µÝ]¬­æê¬"Ìc±0!‰êÎŽ‘QtJ…6ÀëA­RÐMpSÏ=ά úî.:mdGÇŒy,ÝŠ~‚ëksEÙÄ8‚þJY bc‰’ôKÊŒz' Ñòȵsyáx-wÿq7o•6±&=šì˜0î]–Êc;JùÀã;yáx ߺ~.á!ÿçm1jI‹4Ñgw‘&ÙÛ…B\önÎÎÆ8àweJjÀtV§¦OëÃúžªÊiß¹v½=4Z¬†é}pýÂÚõürÏNÎt´ÑÔXꦾž€×í$…[H‹<± ­å¸à|ó,fŒš‰oW¥¦3D€âýuUj*ÑÓø=mLO'rŠÜÒ(ËÈ¿'&ûÍï1iÞ°qÜc©¯Vþ„Cµ58=n:pzÜÄ“¨n2]²œgŽ ¾§›êÎÀ¦ÜwÙlœn¿$eâk¯øÝj7AcTˆÍqÈâøøi%ô[–@ºÕp;1³½Ìš¢ÀÍs¹© JaeZ4Ï݉Pµ¢ (ð‘¥i|hqêH›s¥ þcãP9µJ |¨•u/B!„ŠìÈHîüûßyá®»¦´¿V¥ U©H ·ðãoñµ«6N©Ý9IÓl÷Å+®¢µ¿S`ɾxÅ•©¯¥ª³“».¦} Ÿð=v;! *•B¿ÃÕ`¤Ïá@£R¡Ó¨éµÛ 1Œ1&×çäó«½;¹wñr˜jëözH·2?>1àßOIk NWedÔnoõY|>kÓ2FmÕ¨GÖûó—“'1êtÜ–›;ÙSˆ KµXøð‹/òÔ>Ð,‰4«uÊ×¼ù¼å£qæ0¿×®W«EßÞFÜÛoQùɱÉÒî_º’v[`9$>µb5g;;x§²œû–­¤kІI§§kІY‚ÛëÅéq¦¡Û>8|£QÁærb 1Ðë°£S« 1pïâeü×ö­<¸r –nÒù|>Œ:§¤[HK Çü¿~«ëîâtKÓ¸åàÆ³»¦†Âæf¾¸bE@í¶=Ë™ÎNþßÒÀ’WŠ™oFD­*E¹«¤µ ­Z…F5œŸÛG;²]ŹÿjÔ*eÔȸ¿Ÿ5*R]M!„ò—ÛogWMÍ”öM 5:œ~銫¦µ6üºœ¼€ÛhTª Kžçxc%-ͬHI¥¢­metÛÙQYNqk3Ul.=M·}}Õg9ÞXOcOo”œ¦m Ÿ#õ5ª«¦}`€#õµ,KžÃæÒÓ%˜ê´³¯ælÀ3œC7 Î2"£ÈŒŠµÍ¤Õ`˜dô|yR ãâ~>»ãÞ©®¸Ý wÝÅ[•ÏJïÚ˜“JÛš+ü>¦žæµ[ÚÚÂ;•åÜ6w'Ø_]E× 7JNSÝÕÁé–&Þ©¬ Û>È[奔·µQÑÞÊÖ²ºíƒì:{†SÍMÔvu²­¢Œ»,æÏ…‡º]^Û*ÊÆ½©•øÆ«h{zƶóxpy<~ƒsó$×afd$W§¥üzåEE±nΜ€Û‰™/è#èB!„x¹}>jý|ÈœŒÇç¥} ð‘±éÔFøÀÜì«©bõœ©x}æè!~~ë#?/IªüÁóê(ĕ۔?wd[úp©¤pËȶû—­¤¡§›ªÎj»»H±Lm*éÁºjnΟðù:=ž1Yè§jÀéÄçóÁyŒ!Dè'NÛ58ðšu\UÝÝ·ñM±V¥"1Ô@ÃÀÐîñ®]͆~‚%Y¼Œme\“•3å>>wâ(¯¿†°RÏ[æqÿ²•cö½gÑ»£Æ ’FÇ91±t Úˆ1™)mm!7fjÉ·U”:öù" mÍ ú)Gèõùh'9\b¨ËuÑûNÚ¦ñ¾ÚçtÒn›Þû…˜ÙfĺB!Þ?n¯—ŠÎÎÀÛy¼4÷Ø/KžÃKE'n§Ó¨‰ `ŠûKE'¸}Þ‹úZ%†[¸"-ƒ·ÊKé˜â´ÝäðÀׄz}>^>ubÜÌÑiè馢½uÌúdŠZZ(jm•ôY¦¤­mZ튧ÐN§R‘h|w9dž¬ž:rpÌ~sRÑô÷u`¿ßã¨% D‡Û*JYšŽQwñ:[ F6dåp¤¾vÊëÐ'ºv118ÃýŸÓ3…‡¸2#+à>¶Ûl‡>»}JY¥7—žf^|B@Ï¡( 7ääO«ƒÕsFŸwTˆŽŒ°ñûê’ÂÂH0¶Æ_ß—W­ÂîvT@nçp»ÑÐN­RqS^.gL’ÈöUkP‹ÝåæÚœ\4Ó¨|0‘èP>Ÿ›9‘L6Ù}¢k7òàãã±ÇA¿1·Ào›Xƒžtóøkàõj5,^ðy™t:î[¸ð¢¾Vbæz€îñxhii v7Ä '7q„ââQ+ Íýý¼TR¿˜H­¨hëïçp] ×LªU*z{(l¨hÊkBX8·̧Ó6@ÄñáÚjú6åÍò±õ¥+®â§»¶sû¼…̱FŒ»_uW'_ 0! ݈~þä1þm핵s¸Ý¹b-ý}΂9ÛÑΉÆz>¿fâ>ý+>ºd9O܇^£fnÜø7Îzºùò:ÿ¯©¶§‡ÖuëLðŸøñï' ùÒWÙ®V†’lŽç³›7óÌm·|NŸ›f;1;=@W«Õ$$v—Y\~ƒÝ!„¸¤,MH@¯VSÖÑANå}rcbÑk44õõT)&ÔŒQ«›òþç4÷õ2àtŽ Û\N{{Éœd”ýbø·+®ä©ÃYž’Ê\?£h‡ëj˜c±hvÚ5Uç0”LïÜ:û‘mŠB¬A?a»†ë22³OJx8Ÿ\´ˆÂ¦&ÇÇO¹]fD÷̛ljæfL°¬!*DGŠÉ@YÏКê°q×pw,[ËâÚw÷à •íãè^ŸâÖf â¦~ÓõÀŠÕ¦÷\*E™0 ó '‘Á²i¬Ý”ZQ±.#“•åì3½²1ži.åòÁ˜×U«V‘f´Gf§ÍZ>ŸoZ3Ó¹æ}>ðzý·Q¼ž¡ü=Æä×n¤1tZU ¦ãæüy¼V\4îãC}Û_]w7GÐtíõ~Û÷{ЫUÌ1M\âÍ=ÍkpºíÄì ºBq™*ïè º«+àvõ=]´“±x¾0!)àÑs€c uÓêÏoöíbUYîÏùìop«Ô>Ÿµêz{§”ôíB5ÝÝ”vL-aÚ9ƒ‡ÛÍþšª1µ­]GÁõ¤‡‡„ŒTGðgoõYÖ¼9#ÆcÒëY—–ÉæRÿ%àòbãü®ëw t,[>îqO77áôxÆlתTÄL0“åß¶laSvà7'|ýunÏ ¼t¥˜=‚ û€·Ë›ùî?‹èt»;B!Äeã–œÅÇûýpy¾kبr]«ç¤“l±<»$)eTù¤©1°¿æ,%-£ë¯÷;üäm|ïºMïëkfÐj¹!·€†žn×ÕŒüKáatͤ‰¨.Ôç°ó‰e«îK¯ÝÎ'–mwEÜä¯ñ7Ö®}__7qq­INæúÌL]®€Ú]™šÊÕ©©ØÝî ÷Ë 7gx7›{nLì¸Ë:оý(úö±7 Œ:gÚÛØwA`os9ùÝþ=ã®÷~¯hT*®ÌÈB­¨xûLÙ¨Qè7JNÓkô;½]×ÓMê_žñ{̧“;æ/Ĥ lùN—Ýηׯ'TxÖú_½zÂuíbö úoW–¥DòÀª Ìú‹WZA!„Ók4<{êÔ¤5ÑÕŠ2*èÔªÕ¼SYAg€5xO45P7û›óç¡Q«Gn$´ö÷ñBÑq>²h)á!!ï_¥Q©¸kÁb^+>EŸÃ Õ‹¾>7Tõ©z«¼»;°@ àŸeŸ=£o’Dèu&‡;ççNº˜¹´j5oUVr<ÀDË:µšÍgÎpz’Ñwµ¢ŒšRÑÞFi«ÿçr›Läüòg~»"-ƒÄ°pœ`h]úk§‹XŸ‘9a²Å÷ŠZ¥âºœ¶¿æ,íýý(~fÍDêÇÚŸ;uЦqÚMæ7‡ã’)î—´ è-}vN7õàôxéµ»xþX-¿Þ]Î3‡«8ÓÞ7­5kB!„˜\VddÀ£?·Í]À‰¦ú€Ú¬OϤsÐFÿð‡õ@Ôuwâöè‡ëjH ŸpêûûáŠô vWUÐa gp0àc”¶¶°<%•¨PSÀm“-Ö1#~ùVó¤ëàŸ;}š]sM_9q1̱Xˆ4nwÿÂ…TvvÒçœúÌÕE‰IèÔÚÆYÚÒS0oܶM½½##ýem-x}>òb&.¿ö^[š”BaC>Ÿ‡}Â%;á§ý¯[¯éêdŽ5bÜiüó#ÆO¢™nµ®Ÿ8‘£?[**ø÷Õ«*)fŸ è>7÷ðJQ=N7¿ÙSÎÞªV¢Mzj:ûùßí%ô9¿«,„BˆÉE Óþ°g5L^üBá!ÔJà?ºíx½>ê»»é ¸Îø{acV.áú^,:ŽÍåœÖ(¸Q§ ¨.õùÂBBP«‹ E-Sdg=‹^qS¤aèo@àè­I¯÷;À>N–wZÂáòxèätK«ßÇuçãYšNFdO=„ÃíÆæò³"ççQóá{ý>¢Õb˜Fe €ƒaZ×}„шnšïbö˜QïÎõÝ6^-ªç³k³¹sa ¬Ê¢ºs€¢Æî`wM!„¸$­HJâs›7OkÊä¶ŠÒ€ÛäÇÆñ‹=ïÜnmZ:^Ÿ¿?¹Ä—xóáþçæÛ?ïÎÿ6m¦ºmô±çÆ'PÔÔHVT4)Ó˜²[ÚÚB}wwÀí6—œÆëó¢y7@Ë7aÑM°=¶?zµƒ|ÈŸõæÅÆò?ûöQßÛpÛ¿Ÿ>=éúzˆ?íúÓÒÈÿñýgIR2Vc(¿Ú»“›óæ\'ó:œÎq'&SØPGRxø¸eäê?pÞqfÕvuRÑÖê÷±¥Q–q3Ø¿P\Ì™ÎNbB»Áù—¢"z{§5kBÌ.ÞS=øàƒ_²„‡‡MgMÄt•µöRÙÞOŒ)„w*ZøúÆEÁ¤×ðÆé¢Bõ,H´ûµAÔ××GLLL°»qQx<z{{‰ˆÿƒœÓé¤ðt1ÖŒ¬`wW1 g_/&—ŒY\SúÎü|Îtve¿$Pmÿ ƒ$“[›–Acof}`ëÀÓ"¢ píx¨NÏçÿñwìn7>Ÿ¢æFÌz=¿?¸³^ÏñÆzöTUk6ó‡ƒûP…³í¼QrФp ;v„^»Û-ˆË㡾§›—O Åbåù…´ Ðç°óÌÑäX¬l.9Meg;*EáÉÈ 5±·º’†:¬F#‡j«y¥¸P(ˆ›oî÷¿CÛëð^0Rîô¸1juãÖpÏ 7âç³¹\D¬N¼òD‚ÙLšÕŠaš³&f«£G²xñâi­×Ÿ‰m?qâìÖ­[Îá/ÇðwàšQ·O Z5>Àîò¢Uãòxqy¼„êfT7…BˆKÎSÇóà jãóùØq¦œ,^P»•åÜ`›“M¬LIã“d-ÿê•Ck©çÇ'Žl{è¼ìÐëÒ3xpå»YË—&¥ðÑ%ï–NÊZ›qÞzÒsÇžw^ò¨ó3O¯Oº‰ú³[îàh}5]ô;˜¦¸¶´¹·—æ¾Þ€§ü6ôtÓ5hcEJêÈ6“VƒI;yн³¦†¹11Ì»Dnz‹é]»Óm·§ª’MùsGÍÜ8Ç\Y®«‹æ Gm/ok%#*šû—®5E~AÂÐ5›²pÉȶs×Üù#Úç¶ï k×üûÜõóÉå«G¶-LHàË–Ž9NNô»ûÿ{óí”·µr¬¡ŽŽ"ÏÕ¶?Fñ<‚Û8v¤»gÐNaC×åV¯ÝµµÜ¿pa@í ›šÐ«Õ¬OM ¸­˜]fÔ÷ÔÈP":¶–6áôx9VßEŸÝMA|x°»&„B\Ò¢œn  ( 7ä°g8QÚT}há6—œžòþGëk)kkážó>lÏ4K’’©ëé¢u oJû÷;TwuNk=®N£3Š¢#:dâG›šH0›%8¿ÄLçÚxdÝ:þïèÑ ÷É}ì;ç/bk™ÿ¥-}Ș`¶´µ…cõÜ9oѸë׃-;:·×Kegû¨íšþ>T~ÊØù|>ÔVœ'C0Œs®Zµš°i$‡«ìêÂîvKp~™˜QºÕ ã+òx¶°†ûþ¼Ÿ_ì,å΅ɤEžÙT!„S·<1qÂÇ ¬a~“J´Z’--CS) QÑSÞÿtK‘Q3~jç æóêé¢)UŸÑiÔ¤N³ÌTxH1&sÀíâM&RÂeÐãR3Ùµ;­JÅ¢¸‰³©§˜Æ®wΊöí:¢£±%%Úv¶£«Á@D€SðßoWefs¬¡ŽîáJ ±Û·¡r8ô7…]QÈŠÿ&W¬A^í?Ä ×ëÉŠ"PÖ²"[ #f¯ èŠ×åÆóÃM ±u\Ç/ï\ÊOo_ÂÏîXÊÇ–§£×ÌÌ;nB!Ä¥"Álæá­[Ç}ܪ×ú]Øi)56U*E!D£á¹ãÞy}>öTUb5GM3Ÿ©æX#¸Ù*~¼ã­‘²Rãéw8xûLyÀÏÑÒßÇ+§Og~·„“E§%ß2qÀ^ÖÞί&Íb öË$.²Åññ|ôå—ngs¹&A÷'!,œßíß3f»=&–ø·¶yø >|55Ò5hY 2“%„…sÏ¢eüfÿ.lN']‹—еx‰ß}}>¯ø 0èrñ…-[(ˆžúÍI€n»¯¾õyÓìÅìô D«&Ü E¥(¨U ‘¡zbÍ!D…ê%8B!Þi _]³†ê3Š'†[Ø”7wÂ:ÂþD›L¬M›8±Þ¾ê³4÷õrsþ¼;=öBá!!Ü»x¿Þ·kÂý:l6>µbõú®^»û–®µM¥(h')›–ƽóçûåïƒFïo¼‘²ŽŽ€Ú…‡„ð¿×^KEgç¸û(0¦2€Q«ãú\ÿÓ»+?ñ.sÅ5Õª«á#‹—M»Œàûͬ×óÐWó½m[ˆ8r˜ˆ#‡üŸcG;ÿîg]<€A­7ã©¶6ž¹í¶€ûªÓñùåËn'f¯YqÅø|>z§QBB\:¼Ó(ÿ#„"0}}´ à(kû@?6—‹¨Ð©/Iëw8¨êì 1|üçzáä1~vëÁ~YfÖë‰3‡q¦½Ìq¦ò55À4ÿñÚ©…ãäñ{ìvŽ66Ê(Ü%ªspãÍÍä8 ºÍf£¨¥…¬q*˨…ùáìj~w}¶Óã¡´µ…T«ÿçÊÿñùü¢ü)+þ’bP©0Ÿ© mõ¬Ç qFDâ´X°?FÛÚu„•–àÕi±%§yðËV`ll@m¤»`.1»vÒ½`!š¾>BZ[è\²”¨ýûèOÏEÁt¦‚öÕkˆ(<Š#*gX8ÖÇh»ba%ÅxuzlIÉD:@ÇòëëQ9ôæç½{×б{{ io£eÁB>ºcîÛ?Hûª5~Ïo¢k7!4„Xƒÿ5æÛ«ªX–øL §ÇÞÚZN²A\:fE€ R͈Á~!„â’åözq]PJm*2£¢ÙW}–Úî.R¦¸=Æd¦m Ÿ“MÌû¡õÙãGùÐÂ%S:ÖLc1¹&+‡•hT*Rý”QsNãuö×N¥ŒMäu!¯ÏÇŽã?ׯG\š¼>N·;àvYÔöô°»¶–+RR¦Ô&T§#?&Ž}ÕgÇMrøá…Kñ¸Ýø4|*½Ÿ¢Â«ÓãÕjñ©5xBBð©Txuº¡m*5žP«ðjµàõ€J5´ŸZO£Á;|>dèØŠ‚7$dx›¯VƒO£}lŸúÝãxuZðù†ú‚W­Á§ÕâÑéÑh´Ü¸t9û;:èlnd®Ÿ¥5Ó½v'[ö2žÿÞ»—ï\yå´ÚŠÙiV芢`6ž E\:úú¦–W!Äô¥[­$LóÿÛìèŒZ]@m’Â-øË§ö·cGHŒUFl¶‰3‡áñziè÷ ¯š“6­ã^ØnI”eÒ6Š¢p{^`å ÄìÊsæL«íÜèhTÖ˜Ž 5aÔ½Þ7—ž¦þÁϰ`É2ZÎKêØŸ1Tî°mí#ÛlõÀ;–¯ÙÖtý£’³Ûv¾– ×ø9öºóŽ2|ì•cŽc›ðØ5wßÃɲb|ÝÝ~ôñ®]‹NK†yü›ewæçôÿ«íÄì%ÃÒB!„ Â`àåÒRvTWÜvïðz Š[š9ÙÔ0j[¿ÓA×à Iáe†Ÿ‰>¼p … u”µµŽÚþóÝï{^’·©úŸo“tÁ’€°)d¶ÿàßÿÎ\)­vI3étiläo§NÜöíª*v×ÖŽû¸E¯e~ÄèìÿµÝì«©µmÐå¢Óf£;5mh|»6;^û ‡êjðwñ©#Ç]S¯U©0Œ“;ëKÿü'–É—¢\è3o¼AÌ4Ëè‰ÙKt!„BŒøÜ²e„h4 ø™Ž2þù­óñá húçª9i$[¬ôÚít²¹ä4Wfd’x ”S«T<¸r-»ÎVpª¹ €³|bùJB¦‘8ëÚì¼Q#zê)Œ|þ¿¥3·~¼¸xîÌÏ'/*Šv›- v÷Ì›GªÅBçp‰± ) -¥8_^LK“RF’CÚ\N¶–—Í\¥Éf•¢p÷Â%T´µr¸~èæECO77åÍUAaªîž;«Áp»{çÍ›VÝt1»I€>ƒ.8PI—Íì®!„﹚în¿ö\ëÄL[ûúð˜Ô³kІÝíÂæròϲbr¢cÉýðÏ÷‘ÅËøKáa`¨,ck…šûz8E@VXè¸õ–Ïwf‚,ÝâÒÒÔ×ç÷æÚdz{ ðï²Çn§ß9ôÙøÕÓEĘ̬œÅËRü9ÿÚí±Û±¹üÇjE!Ù4~^;Î{êdª»»§•DÌn OÝåáÉ•tJ€.„âÒW=Í“-ýè‹“ÙVQF—ÍFE{+ ƒ}ú^­áÊŒ,¶–—Ð10€}úæ’ÓÌO x­ðOব™_‡Z\ }} 8ÿ¼Z×Û‹m‚À>:D?&;y^L,EM´ö÷±¿¦jÚyfº;ç/â…“Çè±2àtøÝG£RHõ ?{êiV+Ö§¸?}âù11˜eý²3+’Äãñúpy½àZ…F¥àÜ/¯”¡ D­R¡·µJ…ÇëÇj¸Ï‡ËëÃ;Òf¼c m?ßTöB!f³/\Hè4Ö^“•‹fõʯÎÌæ·ûwó…5Wâñzñ14"åözQ«Tø|>¼øÐ(*Ü^/*•(x½^4*ŸEQðŒlkV o;wœ÷êØÞámÛ‡µ¢bmZÛÏ”áñz‰ €Çëe圴QÔ3ÂB‰6LüÁÝíõrWAÑFãÅûã3Ú­¹¹hU*| MMŸª;óó'¬WnÔ¨ Õh€Ñêª9©ürÏN¾¹á:Ü^/ Œ\+_~®CßÐgu·×‹J{ͽ_Ç>ÿW+ Ë’R8XWCE{wÌ[ÐïÃãõrUZ¦ßO=^/×fdÈôöËÔ¬ Ð;ÉMys9ÓÞFŸÃκôLž=~”«3³é²Ù¨êêà†Üþqê âQ©T­«åöù ÙZVBb¸…“‰meܵ`1ûªÏbÐjÉ‹‰ãÕâ"6åÍ¥¼½•§“µiýåˆ`‹6ùÌoð“k® hä5&4”O¼ò ¿Ý´ ýo²uÙl¼Tt‚A· ÏÇó' ± ¤ED±¹ô4˜;Ÿ“Mx¼^–%¥ðBÑq®ÍΣ±·›–¾>®ÉÎåù…¬š“†Ãí¦¸¥™› æñFñ)²¢c0éôì®:ÃÝ —°ãL9#s""ØRZÌmsp¼±ŸÏÇ’¤^,:Îõ9yÔuwÓ6Ðφ¬þ~¢5©é :”¶µ°)¯‘‹Q§coÕYîZ¸˜íeD…šH¶XùgY1·Ï[Ha}Š‹’xéÔ nÈÉ癣IˆdmÚØëɬõRí¬©¡º»›O,ZÐïqëÙ³tØlÜ;þûø×#fŠ ßÙ5………ÕsRR•TwÜëóñÏ’Fþ^XË×®É'Ò¤ç¿ß.æÚÜx×tÐcwñÕ ù8Ü^þë­SäÇ…óÉ•™,üÉf¾¸>‡O¬Ìà`M;ÿ£­ŸÝÀïöVÐ;ܦÏîâÕSõ\•Çï÷U`1èø÷ ù4öØxôÍSܘŸÀÕYqÜúÄNÿÐ ž=ZƒQ§æóërhpð“mŬ͈æ®Esd$ý=ÔØØHAAA°»qQ8êëëɘàS__O<÷<éovw…“èk¨'v ›7»+•ËëeKE·ääŒlt{ØÚÐ:q;‡“M ,IšZMåÇîeÕœôK"±ÔTì<[AÝιh¦øY«¦«­ZMBØPâ<£FÍüˆð1SŽ/t¼¹³^O†uögÄ/´µµ±k×.î¸ãŽ`wå¢{©¤dZ¥õ&j×00È©®^ìž¡e,/Ÿ:A„ÁÈúŒËc ÅÑúZjº:¹.'PÝèkﺤXBü䃨êê¢Ûá`QÜÔoÈÁPÞ›ËÅüØØ`ŸvÐýþ÷¿ç@5ƒbÓéòù|tv´ó§§žÞöðÃÿèþêþ>ØfÅ™º<>Š›{I²ÉŽ #ÆÂÃWç“nälG?kÒ¢‰0ê‰ aA¢•Êö~ún Z5K’#ѪU$†q{|¸<^R#B©êèçñ}g(oëãÞei„hÕÔvpmn<­šÔYÑfÊZ{q ¿µ8(oëåTSß³ˆßî.§¢­—²–^ì.Ià „ââóá˜Æ:tL9©Qik á!âÃÏŠ<[­OÏ"ÊÊ‹EÇ§ÜÆãóZÛoÑi' ÎahŠ{ 9Ä¥a:y&k—jÀ4å6ŸoZIÞÜ^/n¹v/[³"@÷ù| :ÝèÔ*ÔãԱæÌz .ƒV¢ ­ÓkÔ8ÝCkÄU „h‡¦é(CKÊШ®ÏKàÓ«3Q«ž>t–G^?AuG?n¯£nèG­RÐkT8\Þ¡µê0rÜõ™1lš›ÄÍó’øö óùØòô‘çB!.nŸÓ¨‡îöx(nmžt¿ºî.ö×T±!+‡HãåUçwuj:ûªÏNißÊŽvÊZ›I¶6 ¾¿¾žãÍÍdGFûtE¼]UõžµëµÛy¥¸ˆ«2³I ·ûTßW‹“)l¨µ­À†ÎÏ,Úºžþ|ò$ËK|YÙÙÉK%%,Ž¿‡›¶~qá!h‡§¬X :,š•s"Y1'Š«‘£N¦· !„¸¤„h4|çÊ+é®QC7»u“L34hµÜ9oÑ„™¤}@ûÀ*E¹ì‚ós^¿ßìÛ5nÙ&Zâa4ruæ»Ë BµEY&<¶Çë%Íbážyó‚}š"Hþ{ãF:¬‡ð“Ç­‡~Nç  §Û3­zà—‚\3ÿµ}+ýÃÝÃt¿Õ4j5¯^ðñZ-ÿ¶bE°OSѬеj«Ò¢°9Ý>²4‹AÇÍs 7h)¬ïD£Rñá%©,K‰ ¨”…B1äEEáp»9ÖÔÄ¢¦[¦FDâñù¨éêdŽ5bÔcj«©êhç“ËWûô‚.;:†M œnnò›Z£R‘f=E=Å4yÕ˜†y’\ê²m4òñ ØYSÃú9s¦Ü.Ál殂öÖÕ±&9yÔcoWUQÙÚÈã›6½ï7zœ.ìÿú.’¬0}ÝT47`ÌN÷»Ï²§¶ (,KHöé‰ ›5ºV­bIrK’GÿGoЪ٘ÏÆÜ±¾°þÝ)aV£Žþ9Ñbäã+Æ^L¡: 7ÏMâæ¹I<7|vmöÈÏ׿Æsm®¬ Bqé ÕéðùŸ'¦×hüf)çL9÷-[ìÓš1–'ÏaGe9ù±qD\0Ý_QÂBBFmË0O¾$@­Riò¯—;½F3­:Ú! f?#¸¯–•q[nnPff„ë´3j $7›??NUW'óbbÆ<c4Në¸Ñ¡—ç²ñ®Y1Å]!„Áq¢¹™cÍ“'}»PeG;Õ]£¶m)-fYò¢äèˆ9ÖnÊ›ËoöïóØÏvmg~ü»£pK£,~׺^èãÿøW¦¦ûÔDíêbWMMÀí*:;ÙW7:ÚK%%$‡…±TFwG¤[­|véR~¼gí¬÷¿çŹv‚rºãùàóÏsSÖåQ¶NŒoÖŒ  !„âýwg~>}} ¸\„0r¶>=“ÛN·E¥°³ò вr¦|ŒËEt¨ JMSoïHɹ–þ>¾²~èýBµ“l;ÛÕÅs—`]o¸+RRÈŒ¤ÛnÇrÁLŒ‰lHKcnL ½&ŽWËÊ8ÙÒÂw®¼2ا4ãě̈́êtTtv5%1ÌŠÝçó100ìnˆ òJ-H!„š­••¬LJ"7** vGë똟€×çãh}-_»jc°OeÆúê•×ðû{¹*3‹œèXöTUrCN>Æá©ÆV½vÒ ú>y’‡W¯Æ8…}Å¥ï@}=‘F#«/XO>™½µµ$‡‡37&†ÿÚ³‡ƒ<ìS™±þoÓ&zóMl.ÒÒØ\QÁ5éé¤[+øjY·æävyfÇïš:€Ûív„BˆË’Õ`•I|ª®ÍÎeséi:m6Ögȴ͉¨…-\›å%x¼>ÂCBPΛΞj Ũ™|D.ÖdšÒ4xqy0ëõÓZ3~{^>y’—JJøÜ²eÁ>ïW_Ícû÷3èra0  pô Ò`@+7Ö³$@W‹Åìnˆ ²M£–§Bˆ‹#3"‚ðádS–“ÚþÁ)µÝq¦œ{/gAÂ42_f,Ñ¡&*Ú[Éó›do2 bc§ÕN\š’ÃÃ1LãæÀË¥¥lÊÎæc û4f<£V˪äd^//çþ… ý&Ù›LnTÔÈŒqy»ðöŽêÁü’%<¢CMì­>ËÑúZ"Œ¡üvÿnŒ:§š›Ø~fèØO>€Ûã¡®§›—‹NbµòìñB:lôÚí<}ô ©‘m¨ÂC $„…£( sLF2ÃC'ÿáîÝäDE‘(Sd§Äf³QSSC~~~°»òž‰0øÁîÝ̱XÊìow»y½¼œÌ›Ç—Þ|8ÖÜÌÏ$?*ŠoíØA«ÍFco/ßܾEqqü÷þýœnkÃåõò•7ß$Ãjå©'ØQU…Õ`às›7e4²åÌž=}št‹…/lÙ‚J¥âhc#¿¿y31¡¡¼^^ÎóÅŤY,|nóf´j5‡ùõ¡CäFEñíÛ餺§‡ï¼ó bcùÑÞ½”wt`s¹xxëV²##y¢°Ýµµ˜u:¾°e ±&¯•—óbq1© ŸÝ¼™µš üîÈr"#ùÅÁƒÌ‹‰¡×édq||@3Yþpìs/‘ϺÓÑ£GY¼x1—Jl:8hãø‰g·nÝzp9†¿»×…gª),,¬ž“’’¨ÈÝW1ƒ466RPPìn\‡ƒúúú ?Ì÷õõñÄsÏ“¾ñ†`wW1‰¾†zbºÙ¸ñÒ__}´±‘% TôôSÜÝ7á¾¶^9u’ksòH ·»ë³Î`Qb ’È e®uò ûLg'Ñ¡¡#³ÄÄÚÚÚØµkw\IõÎ]»SÑn³ñ«C‡¸:-uÔPC~¼w/)ááÜ]P0å ½®§½FCŒT¸ã÷¿ÿ=<ðªK 6õù|tv´ó§§žÞöðÃÿèþêþ>Øfÿ™NëÅýÕíœjêÆ{AmW¯ÏÇßÕÐ=8ùÈÀ…Úúl)idÀ)ëå…B\z¶ž=;¥ý:l¼]QÆš´t Χéþe+ùãáÔj"õS›öZØÔ4¦Ü“0õk·ÛnçñÂB–'&Jp>M_[³†ÇöïÇ@‚ãÒövj{z‚Ýu1C\–º¯Õ³»²wt€îöúøÉ¶bÚú·®k€'÷WÒ3è ö) !„Ëã™Ò~==ô9ìäDǻ˳R‚1„‘áüÇÚ5l¯(!Þ8y‰¬]55Ä„†’`æhqy˜êµÛf³q¤±‘¥÷¿äW\ÁvïžÒ¾E­­ô»\Rc^Œ˜Iâ„B|ÈÍtŸ§“·Ï”qÏ¢¥Áî:6Í8Ó_  !jŸX¸¿ñóƒùâŠ/'*jhŠ ~LåÚøÆÛoó_6»»³Þm¹¹hT*¾¹};?¸úê ÷M “e)b”Y ï¨há‰ýgȉ £¤¥‡ÛËCWærEF m}üüRJ[z1êÔÜTȇ–¤Òesðég±1'Ž]´õÙùâú<®Ë ²½Ÿÿ÷Ü!ª;X”dåóërH7FC·'öW²¿ª EW¤Çrߊt ì<Ó¯w—Ó1à =ÒÌÃòFõ·¥ÏÎW_9Æõyñ|xIj°_>!„â_Êç7oæ‹kÖ»Ïw¶¾Án¸eZe†fJ…Vå?À6j4¬ˆ™x$[=…µ©Z•ŠÌˆþQZJŸÃyœñÇ››y­¼œo­[7é1Ååi^l,|þyžÿàÇÝçÊ?ý‰—ï¾kÉäÄø ¢£y©¤„.»kˆÿY0Íýý|×.~uãÁAfM€p¶½ŸO¯Îä‘ëæòØŽž-¬aqrÿ³½˜´HÿsÛbÊZzyôÍ"2£ÍdF™i챑iâ¡«òx¥¨Ž_ï)ccn§›zøÅKÑkT<úÏSl-mâ#KÓpº=üãd]ƒžþØjœn/?ØzŠ×NÕsçÂ~°õ4_X—Ãê´(þxð,ÛÊšX• @sï ÏÖ°0ÑÊÝ‹eýŽBˆKCœÉÄ#ëÖq ¹ E;ögik é‘Q—LpgЛ98Åd Î0ùÔóÕêädÚm6þïèQX¼‹Ÿú)ááÜœì—KÌ` ðÄ-·Œ›,îXs3Y‘‘„J™¯‹&ÝjåS‹ó‹ƒùô’%Ä›Lcö ×ëùÈüùÁafU€že"#ÊŒJQȈ2s²¡›ªŽ~ª;xèÊÀæôàõù0é‡NE£VѪp¸ñù@£RÐkÔÃm†ËÜfТ( *E!D«ÆåöŽ$sy¼8Ý^Œ:ÍÈέ‡ÛC·Í‰ZQ7¨#¨£½ßAm— ·×Ç‚DËå™O!Ä%­ßéÄãv¦ÓŽè§[š(ok农| Zm°»8JN¸‰0ÿ>Ôj¬ú™ÕßñÜ–›Ëvíâ?Ö®E}^ew»ù¿£Gùþ$ë\…p¸Ý4ö.xº­”–ò©%KH ›¼”ŸÜÕiiüòÐ!ºÇèßÛ¹“ÿ½öÚ`wQÌ0³*@÷'Ü E«VÑÜk'ÉbÄæôÐ=è"-Ò„j’›Þmýv<^n¼ôÚ]˜ôš‘F“^C[¿·×‡×ç£sÀIxˆŽ”ˆPœn/"BõœiëãL[±ærcÃøê5ù<¾÷ /¯ãã+Ó þ½w!„ââȉŒ$Ál¦v¸b‰-}}è5,ïÑÚUÆjnP«Y9ÁzoƒF=¥õÞ³Á‹wßÍÝ/¼Àsü ÚójzÉ’`wMÌqf3·çæâñzQ«Tø€¦¾>iK°»wIûõ7òÿÞxƒ?øA´Ã7Ø\_X¾<Ø]3ЬГ-F®ÎŽãñýx|™”4÷Ðïp±6=õxºohôý`u{϶áp{8VßŇ—¤ŽŒÄGu¬ÏŒáâFâ Ø\n ë;ùð’TV̉d~¢…Ÿ¾SÊé1¼|²Ž¼¸0bÍ!´j2£Ì|mc½t„¼¸0–§FI.„â’ªÓñ|q1q ª­¡¥¿/üׂÄpvÜÿ+ÓÃBI•ÄUsÂÃyìºëøÂæÍ|{ýzâÍf>ñÊ+üõŽ;‚Ý51 èÕjN¶¶²½ªŠ.XÀþº:^()áw7Ýì®]òÌfž»óNî}ùe~rÍ5̱Xøü–-üŒž ?fM€fàŠŒ Ú¡»N)ÖPÖeÆ Q«øôêL^ø%Kxx˜ŒøŠ™¤¯¯˜˜˜`wã¢ðx<ôöö1î>N§“ÂÓÅX3²‚Ý]!Ä$œ}½˜\v222þõƒ]dÝÝÝ=z”¨¨(jkk©¨¨ ::fèþ|gg'§OŸ&,, NG{{;$44”ÐÐБcœ8q“ÉD[[ÝÝÝ”••ñvS#,]³'Ž“m1ÓÜÓÅÖŠ2–ÆÅòÛCÐ)Ðk·ñÔ±BV$Äó‹C‡¨éé¡ßéäÑ]»ÈŠŒä™'8ÚÔ„^£á[;vg2±ùÌÞLNd$8@S?ƒƒü`÷nò¢£ùCa!E­­(ŠÂ·ßy‡¤°0þxào–—ƒÍÆwöìÁäñÐ80ÀÛUU|rÉÌÃ¥±ª««yå•WÈÏÏ•H ¨¨ˆÎÎNT*‡ƒ}ûöa6›G~Ï—#›ÍFMM ùùùÿúÁ.²ÞÞ^Ž?Nhh(ÝÝÝ;vŒèèh´ÃI{{{9}ú4:£ÑH__@¥R@?'OžD­VÓÝÝÍàà Çç`GWffòä±c¤Y­¼X\ÌîÚZ" þãí·± 쬮æåÒRRÂÃùÖŽœjkã‰ÂB²""øÉ¾}t ÒÜßÏöì¡ &†ß9BYG.¯—ïîÜIªÅÂß‹‹Ù[[KxHߨ¾HƒíUU¼RVFJx8ßܾ•JÅÉ–ž‡ÃA}}ý„æûúúxâ¹çIßxC°»+„˜D_C=±Ýlܸ1Ø]ÑÜÜÌO~òžþy–.]ÊG>ò~ûÛßRWW‡Á`à{ßû›6mbß¾}üùÏF«ÕRSSCgg'ÍÍÍÄÇÇÃsÏ=Ç©S§øÕ¯~Åg?ûYyäV¯^MUUŸüìgÉNKCŠA£Áëóáòz Õjp:Ñ©Õ(Š‚ÝíÆ¤Óas¹Ð¨T¨U*lN'&½»ÛÂÐÚØ~§“P—g¨:‹A«¥ÏáÀ¨Õâ9ïØýN'zÆ=¶Y¯gp††F0G[Q°¹\#ÇVZµšÞÁA¶¼ò ßÿÑÐëõ˜ \*n›Œ¬,ùö·‰ ã»ßùF£‘ÖÖVŠŠŠXµj*•ŠÔÔTî¹çâããùÞ÷¾‡Á`@­Vãñxزe _ÿú×Y¹r%&“ ÝeXÿº­­]»vqÇ ZÃßÓÓÃÏ~ö3þøÇ?’››Ë§?ýiž|òIJJJ0›Í|îsŸãþûïçÔ©S<ñÄx<ZZZèèè ®®Ž˜˜"""øË_þBGG?ýéO¹å–[ø¿ÿû?®¼òJvíÚÅçzˆüœ4F#az=CS°ûŒ:¯·×‹qøo7D£ÁÇ»».Ús»n7fŽA— •¢ U«p:1ét#ÇÑhè>¶ÛëÅ3|ì>§ƒFƒÏçÃéñ:|lJ…¢( Ûær¡V©ÐªTCÇÖëq¸‡ªH自ÓášìØç½7½×Ç>²w/|æ3DGFU„ÒjQ¹\˜­V}ôQ2ÓÒøÞ·¿Z­¦³³“S§N1oÞ< ñññ|èC"33“_ýêWÔÔÔ0oÞ<ÊÊÊ8tèŸþô§Ù¸q#F£‘iÿ½Í¿ÿýïyàP]±©Ï磳£?=õô¶‡~ø@ÿðWïð÷À6+¦¸û|>ìv{°»!‚H¦ !ÄÔF®ºê*vïÞÍÕW_ͯýkÔj5×\s ÕÕÕäççÓÚÚÊóÏ?Ïo¼ANNëÖ­cçÎX­VbccY²d v»;w²yóf|>'Ožd``€††:;;™3g?ÿùÏÇ<øyC†ƒÒ0½~d›~8Û»ö¼ Ð:¼íü:ÌV?Yá-S<¶yÛàïØÃÛÎ?¶Þçc×;ïšJTTŸøÄ'ˆ‹‹ãСCìܹ“Fƒm`€ÂÂB¾üå/£V«¹õÖ[Ù¼y3555¸Ýnzzzèêêâ•W^AQ¬V+^¯—ÒÒR{ì1ÒÒÒxàX±bÅ¿ò''.NǪU«Ø³g«V­âÉ'Ÿdpp+¯¼’îînòóóàùçŸçµ×^#99™7²oß>ˆ‹‹£  •JÅÞ½{yýõ×iii¡°°þþ~JJJpüèG¤¤¤ðÃþ­Ñ8’UÎûÛ=o›¿¿Ýp»çmÓ»Æýûüu×ç—;W¢ñücû»uS}ÿðwìI®ñ‹ul½ZÍk¯¼Âܬ,¢¢¢¸ûî»ÉÊÊâÌ™3üõ¯Å Vãq:Ù½{7_ýêWQ«ÕÜtÓMìÞ½›“'Ob³ÙhooàÕW_¥²²’ŠŠ ZZZ¨««ã7¿ù o¾ù&wß}7×]wÝEþ+Á6kt›Íìnˆ ’]!¦npp#GŽP__Ïo~ó>üáSUUÅÿøGî»ï>HJJ"//·ÛÝnçÕW_¥ººšÌÌL ‰ˆˆ ··—={öÐÚÚʳÏ>ËwÞÉUW]Åk¯½Æç?ÿyRR$×Ê{éĉ:tˆë¯¿ž¶¶6ž~úiZZZˆ‹‹Ãjµ¢×ë)..F§ÓQUU52ÂÔÔÔDww7]]]ô÷÷STTDII >Ÿùóçóío›üà|ìccÅŠÄÇÇûTÅ0§ÓÉÉ“'9sæ •••Üu×]Øív~ÿûßsë­· ×ëY¸p!O?ý4ƒƒƒlݺ•“'O’——ÇéÓ§Ñh4 ²sçNhmmeݺu|á _àç?ÿ9ŸùÌgÈÊʺ¬—7¼×***xë­·¸å–[èêêâ…^ µµ•9sæŽÁ` ººƒÁ0êÚ=wó322’îînêêê8~ü8ÝÝÝF¾þõ¯ó§?ý‰;«¯¾ú’Yþ)F›ºJ¥"222ØÝAÔØØì.!ĬEAA±±±´··sêÔ)Ž;FRR---<úè£<ùä“´··c0hoo'44£ÑHjj*^¯EQ §§‡¬¬,æÎKMM ¯¾ú*eee<óÌ3¬_¿žÌÌÌ`Ÿî%ëé§ŸF¥RQZZJ]]===455‘––F\\ÍÍÍÄÆÆríµ×ràÀÖ­[GXXƒ¤¤$nºé&âââxá…ÈÈÈ ** ³ÙÌ /¼@CC¯¼ò Ü}÷Ý„……ýëÿ2³ÙÌÂ… ‰ŽŽ¦¡¡ŠŠ JJJˆŽŽÆf³ñÝï~—çž{n$Ÿ@?jµ½^OZZZ­FƒË墥¥…ÌÌL²²²èîîæÙgŸåìÙ³üíocíÚµ|ìcÉG!.®gžyµZÍ™3g¨©©¡»»›††ÒÓÓ‰ˆˆ ººš9sæp×]w±yóf6lØ€Õj%44”ÈÈH6mÚDjj*¯¼ò ¤§§Ïo¼AUU[¶l¡­­;ï¼sœFbv’«R!„¸ÄtwwsêÔ)–/_ÎÞ½{ #??•JE\\MMM;vŒE‹Q]] 0Øuuu¡R© ãŠ+®àøñã|æ3ŸI:Õ××Çš5k˜;wn°Oõ’vÛm·BAAÑÑÑüû¿ÿ;n·›‚‚¾ò•¯Ùl&,,Œ3gÎÉ=÷ÜCKK .—‹üã(ŠÂâÅ‹éèè 99™ë¯¿ž––Ž;Æ’%KX¾|ùHR1|6›“'Oâr¹X²d ‡Æb±••EXXf³™ÞyçæÏŸO{{;NGbb"6›m$`_»v-&“‰;3ÐÐPΞ=Kee%«V­bÁ‚œ¿‡n¸áz{{IMMå¾ûîã»ßý.UUUÄÇÇó裒MDDÑÑÑœ:u •JŽ÷Þ‹×ëåĉÜwß}(ŠÂ™3gX»v-*•Šûº:ªªªX°`«W¯&***ا*Þ³µý´8hpà•iÒB!.ÄÆÆ’””Ä÷¿ÿ}þüç?óøããt:à?ÿó?‰ŒŒäÖ[o%;;›«¯¾€––žzê)>ŒÝn'66–[n¹‹Å‚F£aÅŠäååÍ¢E‹HJJú{*&²víZ`è÷òì³Ï²~ýz å­·ÞÂår¡( iii<øàƒRVV6²]5œhëCúÉÉɨT*ÒÓÓYµjaaaäå呟ŸÁ %ðfŠÔj5ùùù<ôÐC<ýôÓüéO"66–††¾õ­oa±XØ´i .dõêÕ„„„ÐßßÏÓO?ÍÞ½{éïï'44”»îº‹ÈÈHÔj5‹/fÁ‚DDD°`ÁRSSÇdúÏêÕ«Q«ÕtttðüƒììlRRRÈÈÈॗ^Âét¢( |éK_¢¶¶–£Gâp8F]»7ß|3¹¹¹¨T*’’’XµjV«•œœæÍ›'Ë.Q—ü­3¯ÏǶ²fn›ŸD¯ÝI¯Á •7%!„—¦ŒŒ >ò‘pôèQºººØ±cuuu,X°€OúÓDGG°hÑ"JKKÑjµèt:î¾ûî‘cF¼^ïÈhÜsÏ=‡Á` ££ƒŽŽž|òIBCCùÉO~ìÓ½¤õõõQUUÅM7ÝÄܹs©««ãßø?þ8ååå¬\¹EQX¹r%N§“-[¶PZZÊUW]5r EQÐétóßÿýß#Û^}õUöîÝËÝwßͲeË‚}ªˆ‰‰áþûï§¹¹™žž***(--%>>žGy„ììlEaÕªU”——dåÿЇ>4r µZ=êÚݲeËHàn³Ùxæ™g0›Í|ë[ß’¥ ï!›ÍFEEëÖ­cÕªUÔ××óï|‡ßþö·rã7¢( yyyÜ{ï½ìÚµ‹ÂÂBæÍ›7r EQÐjµ477\»v»­[·râÄ ®»îºUAD\—|€®RnÌO:Y•Š¿©æÚÜ8òâd:—BˆK“J¥Â`0p×]w‘˜˜È¼yóøà?HVVÖ¨’<ñññÜpà ¨ÕjV­ZEjjê¨c¨T*øà?8òÿÂçï½^ÏG?úQbbbÈÌ̤¿¿Ÿ/|á deeñÈ# ÕjGjk4HKK#55•U«VGQ®½öZ–,Y2òûß´iÓÈcÉÉÉÁ>U1LQ 7ÜpÑÑÑø|>6lØ@nnî¨úØ\{íµx½^Ö¬YCZZÚ¨ã """¸í¶Û°Ûí#õÓÏýyÙËÅÅw÷ÝwcµZÉÊÊÂétòÐCÏ×¾ö5|>ßȵ«V«‰%--øøøQ×.Àš5kHIIùýŸížÿž-.³"@ïµ»øÅÎ2î]–Jj„‰œ¬ã@M;?¸i!j•¯w—3/Á‚N­âïÇjèpaâóërˆ ÕóVY3à£®ËÆûÏp¤®ƒÏ¯ËaÅI<'„âÒ¤×ë¹þúëÆý=2š>žÈÈÈ‘)ðâý¥ÓéF½ö!!!ÜrË-~G>sssÉÍÍõ{¬åË—ûtÄiµZÖ­[@^^žß}, kÖ¬™ð8aaa#Çï¿óg±„††rÛm·üûB©©©ã¾OÏŸ?ŸùóçûtÄûhÖÜúné³sº©ðJQ=¥-½œí製ßÁ;-4jÛQ‚D+߸v.N7¿ØUŠ•m}T¶÷sû‚d ZîY’ÊüK°OI!„B!„1+ôš¼Ø0ÊZ{iî¤ßáæÊÌX ëº(kí%Ú¬gND(?Ü´¹ñúnR"B9^ß5ê8V£ZEd¨^Ö  !„B!„˜QfÅw­ZEvLo•5±¿ªÜØ0 âÃÙ]ÙÆ ËMZ„‰A—‡ßì)GL!Zª;py¼ÁîºB!„B1%³b]Q >Ì€Z¥ðVYùqá̱†ÒÜ;HQcQfJ[{)nîáß7ðëç³!;Õpò!„B!„b¦›:@”IV­âPMÙ1fÌ!Z<^Uý$[¨×‡¢@Yk/ûªÚès¸p{ϯ}®  Ð>`—Ñu!„B!„3Êì ÐCõ¤ZMdE›‰10ëµäÄ„‘Jb¸‘5é1ÌK°pïÓ{ùíÞr>µ:“¨P=?Üz sˆ–ð-j•ÂÆÜx~¹³ŒmåÍÁ>%!„B!„bĬXƒ V)Ü¿2ûW¦lûê5ù£öyì¶%£~~ùõcŽó øÁ>!„B!„b”Y3‚.„B!„B\Ê$@B!„B!f Ð…B!„Bˆ@t!„B!„b]!„B!„˜‚žÅÝëõÒÕÕìnˆÎ땺õB!„BˆK[ÐtEQ0Ááìv{°» „B!„ï©  †`wCÌpŠ¢» B!„Bñž’5èB!„B!Ä 0#ôÊö~¶—7cwy‚Ý!„B!„"(‚ û‡ÛC¯Ã…×ç vw„B!„Bˆ þt ;&ŒŒ(:µ:ØÝB!„B!‚"èºÏ[Šy«¬‰o^;—×òúén/ÉV#ÿ¶>‡‚¸p^)ªçÙ£5ôØDõ|ùê ¤¹‡_ßµ ­JÅ÷Þ,â`M;91aHâo!„B!„³EÐ× ŸÏ¤×mæÙ£5¼YÒÄâä6ÍM¤¬¥P†UiÑèÔ*6$Ò9ààl{?KR"‰0ê1ê4D…êéw¸ñÈzv!„B!„³ÈŒ Ð#Cõº,«QKcÏ ÉÖP–ωäåuüéàY–͉äõS lÈŽ%+Êì. ñžq; ´¶»BˆIØ{ºèì§®®.Ø]B »»›Í&×®3˜Óé vÞw3*@_œÁƒª,Þ©hÁåõ’j5qó¼$bÍ!|õš|Þ8ÝÀ§H¶¹gI*Š¢°89­Z…ZQPÔ K“#1ê4(’!NÌbZ­–¼”dh©vW„“Ðé8qâD°»"„Õj•kWˆ,55õ²‹ë‚ »¼^ºlN4*JaCv²ãÆì—N~\ø˜í7æ'Œúù¦‚Ä`Ÿ’ÿ²6mÚìn!„B!ÞGAO÷ÏâFž9|–ù VLzm°»#„B!„BEÐGЯÏOàªìXB4j4ªñ§/¸Ýî`wU‘O²ò !„B!.qAÐuj:õÄù^¯—ööö`wU‘×ë v„B!„â=ô}*T*qqqÿúĬըØì.!„B!Ä{*èkÐ…B!„B1^€~ye²â}w¹•‹B!„BLÎïwFCXXx Çâ=cµZƒÝ…‹F¯×“žžìn!„B!f™â.„B!„BÌ  !„B!„3€èB!„B!Ä ºB!„B1H€.„B!„BÌ  !„B!„3€èB!„B!Ä ºB!„B1H€.„B!„BÌ  !„B!„3€èB!„B!Ä ºB!„B1H€.„B!„B̽^/.—+Ø}B!„B!f=ŸÏ‡Ïçð qÞ÷è¾—^zéï‹% Ðêáïšá/5 ûä„B!„BˆYÆwàÀ"À9üå<€—á`ýÂ`[ è#`þn<ïg=2-^!„B!„”¡À|pøËvÞ× `×øiàc(Šw7V1Èû  !„B!„Óá€}øß.ÎE÷·ÝËPpîâÝvßð6-2Å]!„B!„˜ŽsáçõsSݽàg úð†ôsÛÎý,kÐ…B!„Bˆé97[ÝÅ»#èçôqGÐ=Ãÿ>?`w2  !„B!„"pçâësºû¼Ÿ}ކ+Ã_ªó¾Ô¼»]ÖŸ !„B!„Ósnüü/Ϲíþ¦«+ç}ùûY!„B!„Ósa-ô‘¯ÿ‘—ò=4£)”%tEXtdate:create2012-02-23T14:40:55+09:00WÖ" %tEXtdate:modify2012-02-23T14:40:45+09:00ê!š‚tEXtSoftwaregnome-screenshotï¿>IEND®B`‚adlint-3.2.14/share/doc/gen_mesg_sections.rb0000644000004100000410000000101112340630463020765 0ustar www-datawww-data#! /usr/bin/env ruby # coding: utf-8 def escape(text) text.gsub(/@/, "@@").gsub(/{/, "@{").gsub(/}/, "@}") end $:.unshift("../lib") require "adlint" c = AdLint::MessageCatalog.instance.load("../etc/mesg.d/ja_JP/messages.yml") c.each do |id, text| puts <. @unnumberedsec 開発環境 @multitable @columnfractions .1 .1 .3 @headitem åç§° @tab ãƒãƒ¼ã‚¸ãƒ§ãƒ³ @tab 用途 @item @uref{http://www.ruby-lang.org/, Ruby} @tab @code{2.1.0p0} @tab ベースã¨ãªã‚‹å®Ÿè£…言語 @item @uref{http://rubyforge.org/projects/racc/, Racc} @tab @code{1.4.10} @tab 構文解æžå™¨ã®ç”Ÿæˆ @item @uref{http://rspec.info/, RSpec} @tab @code{2.14.7} @tab å˜ä½“仕様ã®è¨˜è¿°ã¨å›žå¸°ãƒ†ã‚¹ãƒˆ @item @uref{http://cukes.info/, Cucumber} @tab @code{1.3.10} @tab 機能仕様ã®è¨˜è¿°ã¨å›žå¸°ãƒ†ã‚¹ãƒˆ @end multitable @unnumberedsec 文書化環境 利用者ガイドã€é–‹ç™ºè€…ガイドãªã©ã®æ–‡æ›¸åŒ–ã«ã¯ @uref{http://www.gnu.org/software/texinfo/, GNU Texinfo} を使用ã™ã‚‹ã€‚ @unnumberedsec コーディングè¦ç´„ Ruby è¨€èªžã‚³ãƒ¼ãƒ‰ã®æ•´å½¢ã¯ã€@uref{http://shugo.net/ruby-codeconv/codeconv.html} 㫠従ã†ã€‚ãŸã ã—ã€@code{return} ã¯åŽŸå‰‡ã¨ã—ã¦ä½¿ç”¨ã—ãªã„。 Ruby 言語ソースをå«ã‚€å…¨ã¦ã®ãƒ†ã‚­ã‚¹ãƒˆãƒ•ァイル㯠UTF-8 ã§ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã—ã€æ”¹è¡Œæ–‡å­—㯠LF ã¨ã™ã‚‹ã€‚ @unnumberedsec 目次 @menu * アーキテクãƒãƒ£:Architecture. * 略語一覧:Abbreviation. * 索引:Index. @end menu @node Architecture @chapter アーキテクãƒãƒ£ 追記予定。 @node Abbreviation @chapter 略語一覧 @verbatim object -> obj variable -> var function -> fun value -> val expression -> expr interpreter -> interp array -> ary pointer -> ptr subscript -> subs alignment -> align declaration -> dcl declarator -> dcr definition -> def enumerator -> enum member -> memb element -> elem original -> orig converted -> conved conversion -> conv arithmetic -> arith alternative -> alt manipulator -> manip sequence-point -> seqp operator -> op initializer -> init source -> src destination -> dst translation-unit -> tunit parameter -> param constant -> const specifier -> spec controlling -> ctrl reference -> ref dereference -> deref statement -> stmt controlling-expression -> ctrlexpr option -> opt options -> opts first -> fst second -> snd last -> lst location -> loc composite -> cmp identifier -> id substitute -> sub indirection -> ind category -> cat severity -> sev complement -> comp message -> msg metric -> met package -> pkg representation -> rep assignment -> assign literal -> lit directive -> dire count -> cnt signature -> sig suppress -> supp version -> ver storage-class -> sc command -> cmd file-path -> fpath directory-path -> dpath length -> len content -> cont context -> ctxt exception -> ex template -> tmpl format -> fmt return -> ret current -> cur replacement -> repl index -> idx modifier -> mod environment -> env precision -> prec cyclomatic-complexity -> cycle_compl token -> tok next -> nxt encoding -> enc annotation -> annot pathname -> path user -> usr system -> sys new-line -> nl table -> tbl abstract-syntax-tree -> ast pattern -> ptn condition -> cond collector -> col branch -> br function-call -> funcall program -> prog address -> addr memory -> mem window -> win anonymous -> anon qualifier -> qual symbol -> sym candidate -> cand terminator -> term initiator -> init selection -> sel global-variable -> gvar record -> rec referrer -> ref cross-reference -> xref monitor -> mon iteration -> iter local-variable -> lvar previous -> prv operation -> op extractor -> extr enclosure -> encl relational -> relat equality -> equal logical-and -> land logical-or -> lor relationship -> relat prototype -> proto termination -> term result -> rslt operand -> ope domain -> dom qualified -> qualed error -> err project -> proj temporary -> tmp referrer-function -> ref_fun sample -> smpl representative -> repr descendant -> desc transition -> trans contributor -> contrib positive -> pos negative -> neg evidence -> evid traversal -> trav increment -> inc decrement -> dec prefix-increment -> preinc prefix-decrement -> predec postfix-increment -> pstinc postfix-decrement -> pstdec string-literal -> strlit compound-literal -> complit exclusive-or -> xor inclusive-or -> ior @end verbatim @node Index @unnumbered 索引 @printindex cp @bye @c vim:sw=2:sts=2:et:tw=79:fo+=mM: adlint-3.2.14/share/doc/c99gram.dot0000644000004100000410000006120412340630463016742 0ustar www-datawww-datastrict digraph "ISO C99 Grammer" { // // terminal nodes // node [shape=box]; IDENTIFIER; TYPEDEF_NAME; CONSTANT; STRING_LITERAL; SIZEOF; TYPEDEF; EXTERN; STATIC; AUTO; REGISTER; INLINE; RESTRICT; CHAR; SHORT; INT; LONG; SIGNED; UNSIGNED; FLOAT; DOUBLE; CONST; VOLATILE; VOID; BOOL; COMPLEX; IMAGINARY; STRUCT; UNION; ENUM; CASE; DEFAULT; IF; ELSE; SWITCH; WHILE; DO; FOR; GOTO; CONTINUE; BREAK; RETURN; NULL; TYPEOF; ALIGNOF; "!"; "!="; "%"; "%="; "&"; "&&"; "&="; "("; ")"; "*"; "*="; "+"; "++"; "+="; ","; "-"; "--"; "-="; "->"; "."; "..."; "/"; "/="; ":"; ";"; "<"; "<<"; "<<="; "<="; "="; "=="; ">"; ">="; ">>"; ">>="; "?"; "["; "]"; "^"; "^="; "{"; "|"; "|="; "||"; "}"; "~"; // // non-terminal nodes // node [shape=ellipse]; primary_expression; postfix_expression; argument_expression_list; unary_expression; unary_arithmetic_operator; cast_expression; multiplicative_expression; additive_expression; shift_expression; relational_expression; equality_expression; and_expression; exclusive_or_expression; inclusive_or_expression; logical_and_expression; logical_or_expression; conditional_expression; assignment_expression; compound_assignment_operator; expression; constant_expression; declaration; global_declaration; declaration_specifiers; init_declarator_list; init_declarator; storage_class_specifier; type_specifier; struct_or_union_specifier; struct_declaration_list; struct_declaration; specifier_qualifier_list; struct_declarator_list; struct_declarator; enum_specifier; enumerator_list; enumerator; type_qualifier; function_specifier; declarator; direct_declarator; pointer; type_qualifier_list; parameter_type_list; parameter_list; parameter_declaration; identifier_list; type_name; abstract_declarator; direct_abstract_declarator; initializer; initializer_list; designation; designator_list; designator; statement; labeled_statement; compound_statement; block_item_list; block_item; expression_statement; selection_statement; iteration_statement; jump_statement; translation_unit; external_declaration; function_definition; local_function_definition; declaration_list; // // edges // primary_expression -> IDENTIFIER; primary_expression -> CONSTANT; primary_expression -> STRING_LITERAL; primary_expression -> NULL; primary_expression -> "("; primary_expression -> expression; primary_expression -> ")"; primary_expression -> "("; primary_expression -> compound_statement; primary_expression -> ")"; postfix_expression -> primary_expression; postfix_expression -> postfix_expression; postfix_expression -> "["; postfix_expression -> expression; postfix_expression -> "]"; postfix_expression -> postfix_expression; postfix_expression -> "("; postfix_expression -> ")"; postfix_expression -> postfix_expression; postfix_expression -> "("; postfix_expression -> argument_expression_list; postfix_expression -> ")"; postfix_expression -> postfix_expression; postfix_expression -> "."; postfix_expression -> IDENTIFIER; postfix_expression -> postfix_expression; postfix_expression -> "->"; postfix_expression -> IDENTIFIER; postfix_expression -> postfix_expression; postfix_expression -> "."; postfix_expression -> CONSTANT; postfix_expression -> postfix_expression; postfix_expression -> "->"; postfix_expression -> CONSTANT; postfix_expression -> postfix_expression; postfix_expression -> "++"; postfix_expression -> postfix_expression; postfix_expression -> "--"; postfix_expression -> "("; postfix_expression -> type_name; postfix_expression -> ")"; postfix_expression -> "{"; postfix_expression -> initializer_list; postfix_expression -> "}"; postfix_expression -> "("; postfix_expression -> type_name; postfix_expression -> ")"; postfix_expression -> "{"; postfix_expression -> initializer_list; postfix_expression -> ","; postfix_expression -> "}"; argument_expression_list -> assignment_expression; argument_expression_list -> argument_expression_list; argument_expression_list -> ","; argument_expression_list -> assignment_expression; unary_expression -> postfix_expression; unary_expression -> "++"; unary_expression -> unary_expression; unary_expression -> "--"; unary_expression -> unary_expression; unary_expression -> "&"; unary_expression -> cast_expression; unary_expression -> "*"; unary_expression -> cast_expression; unary_expression -> unary_arithmetic_operator; unary_expression -> cast_expression; unary_expression -> SIZEOF; unary_expression -> unary_expression; unary_expression -> SIZEOF; unary_expression -> "("; unary_expression -> type_name; unary_expression -> ")"; unary_expression -> ALIGNOF; unary_expression -> unary_expression; unary_expression -> ALIGNOF; unary_expression -> "("; unary_expression -> type_name; unary_expression -> ")"; unary_expression -> "&&"; unary_expression -> unary_expression; unary_arithmetic_operator -> "+"; unary_arithmetic_operator -> "-"; unary_arithmetic_operator -> "~"; unary_arithmetic_operator -> "!"; cast_expression -> unary_expression; cast_expression -> "("; cast_expression -> type_name; cast_expression -> ")"; cast_expression -> cast_expression; multiplicative_expression -> cast_expression; multiplicative_expression -> multiplicative_expression; multiplicative_expression -> "*"; multiplicative_expression -> cast_expression; multiplicative_expression -> multiplicative_expression; multiplicative_expression -> "/"; multiplicative_expression -> cast_expression; multiplicative_expression -> multiplicative_expression; multiplicative_expression -> "%"; multiplicative_expression -> cast_expression; additive_expression -> multiplicative_expression; additive_expression -> additive_expression; additive_expression -> "+"; additive_expression -> multiplicative_expression; additive_expression -> additive_expression; additive_expression -> "-"; additive_expression -> multiplicative_expression; shift_expression -> additive_expression; shift_expression -> shift_expression; shift_expression -> "<<"; shift_expression -> additive_expression; shift_expression -> shift_expression; shift_expression -> ">>"; shift_expression -> additive_expression; relational_expression -> shift_expression; relational_expression -> relational_expression; relational_expression -> "<"; relational_expression -> shift_expression; relational_expression -> relational_expression; relational_expression -> ">"; relational_expression -> shift_expression; relational_expression -> relational_expression; relational_expression -> "<="; relational_expression -> shift_expression; relational_expression -> relational_expression; relational_expression -> ">="; relational_expression -> shift_expression; equality_expression -> relational_expression; equality_expression -> equality_expression; equality_expression -> "=="; equality_expression -> relational_expression; equality_expression -> equality_expression; equality_expression -> "!="; equality_expression -> relational_expression; and_expression -> equality_expression; and_expression -> and_expression; and_expression -> "&"; and_expression -> equality_expression; exclusive_or_expression -> and_expression; exclusive_or_expression -> exclusive_or_expression; exclusive_or_expression -> "^"; exclusive_or_expression -> and_expression; inclusive_or_expression -> exclusive_or_expression; inclusive_or_expression -> inclusive_or_expression; inclusive_or_expression -> "|"; inclusive_or_expression -> exclusive_or_expression; logical_and_expression -> inclusive_or_expression; logical_and_expression -> logical_and_expression; logical_and_expression -> "&&"; logical_and_expression -> inclusive_or_expression; logical_or_expression -> logical_and_expression; logical_or_expression -> logical_or_expression; logical_or_expression -> "||"; logical_or_expression -> logical_and_expression; conditional_expression -> logical_or_expression; conditional_expression -> logical_or_expression; conditional_expression -> "?"; conditional_expression -> expression; conditional_expression -> ":"; conditional_expression -> conditional_expression; assignment_expression -> conditional_expression; assignment_expression -> cast_expression; assignment_expression -> "="; assignment_expression -> assignment_expression; assignment_expression -> cast_expression; assignment_expression -> compound_assignment_operator; assignment_expression -> assignment_expression; compound_assignment_operator -> "*="; compound_assignment_operator -> "/="; compound_assignment_operator -> "%="; compound_assignment_operator -> "+="; compound_assignment_operator -> "-="; compound_assignment_operator -> "<<="; compound_assignment_operator -> ">>="; compound_assignment_operator -> "&="; compound_assignment_operator -> "^="; compound_assignment_operator -> "|="; expression -> assignment_expression; expression -> expression; expression -> ","; expression -> assignment_expression; constant_expression -> conditional_expression; declaration -> declaration_specifiers; declaration -> ";"; declaration -> declaration_specifiers; declaration -> init_declarator_list; declaration -> ";"; global_declaration -> declaration; global_declaration -> init_declarator_list; global_declaration -> ";"; declaration_specifiers -> storage_class_specifier; declaration_specifiers -> declaration_specifiers; declaration_specifiers -> storage_class_specifier; declaration_specifiers -> type_specifier; declaration_specifiers -> declaration_specifiers; declaration_specifiers -> type_specifier; declaration_specifiers -> type_qualifier; declaration_specifiers -> declaration_specifiers; declaration_specifiers -> type_qualifier; declaration_specifiers -> function_specifier; declaration_specifiers -> declaration_specifiers; declaration_specifiers -> function_specifier; init_declarator_list -> init_declarator; init_declarator_list -> init_declarator_list; init_declarator_list -> ","; init_declarator_list -> init_declarator; init_declarator -> declarator; init_declarator -> declarator; init_declarator -> "="; init_declarator -> initializer; storage_class_specifier -> TYPEDEF; storage_class_specifier -> EXTERN; storage_class_specifier -> STATIC; storage_class_specifier -> AUTO; storage_class_specifier -> REGISTER; type_specifier -> VOID; type_specifier -> CHAR; type_specifier -> SHORT; type_specifier -> INT; type_specifier -> LONG; type_specifier -> FLOAT; type_specifier -> DOUBLE; type_specifier -> SIGNED; type_specifier -> UNSIGNED; type_specifier -> BOOL; type_specifier -> COMPLEX; type_specifier -> IMAGINARY; type_specifier -> TYPEDEF_NAME; type_specifier -> struct_or_union_specifier; type_specifier -> enum_specifier; type_specifier -> TYPEOF; type_specifier -> "("; type_specifier -> constant_expression; type_specifier -> ")"; type_specifier -> TYPEOF; type_specifier -> "("; type_specifier -> type_name; type_specifier -> ")"; struct_or_union_specifier -> STRUCT; struct_or_union_specifier -> IDENTIFIER; struct_or_union_specifier -> "{"; struct_or_union_specifier -> struct_declaration_list; struct_or_union_specifier -> "}"; struct_or_union_specifier -> STRUCT; struct_or_union_specifier -> IDENTIFIER; struct_or_union_specifier -> "{"; struct_or_union_specifier -> "}"; struct_or_union_specifier -> UNION; struct_or_union_specifier -> IDENTIFIER; struct_or_union_specifier -> "{"; struct_or_union_specifier -> struct_declaration_list; struct_or_union_specifier -> "}"; struct_or_union_specifier -> UNION; struct_or_union_specifier -> IDENTIFIER; struct_or_union_specifier -> "{"; struct_or_union_specifier -> "}"; struct_or_union_specifier -> STRUCT; struct_or_union_specifier -> "{"; struct_or_union_specifier -> struct_declaration_list; struct_or_union_specifier -> "}"; struct_or_union_specifier -> STRUCT; struct_or_union_specifier -> "{"; struct_or_union_specifier -> "}"; struct_or_union_specifier -> UNION; struct_or_union_specifier -> "{"; struct_or_union_specifier -> struct_declaration_list; struct_or_union_specifier -> "}"; struct_or_union_specifier -> UNION; struct_or_union_specifier -> "{"; struct_or_union_specifier -> "}"; struct_or_union_specifier -> STRUCT; struct_or_union_specifier -> IDENTIFIER; struct_or_union_specifier -> UNION; struct_or_union_specifier -> IDENTIFIER; struct_declaration_list -> struct_declaration; struct_declaration_list -> struct_declaration_list; struct_declaration_list -> struct_declaration; struct_declaration -> specifier_qualifier_list; struct_declaration -> ";"; struct_declaration -> specifier_qualifier_list; struct_declaration -> struct_declarator_list; struct_declarator_list -> ";"; specifier_qualifier_list -> specifier_qualifier_list; specifier_qualifier_list -> type_specifier; specifier_qualifier_list -> type_specifier; specifier_qualifier_list -> specifier_qualifier_list; specifier_qualifier_list -> type_qualifier; specifier_qualifier_list -> type_qualifier; struct_declarator_list -> struct_declarator; struct_declarator_list -> struct_declarator_list; struct_declarator_list -> ","; struct_declarator_list -> struct_declarator; struct_declarator -> declarator; struct_declarator -> ":"; struct_declarator -> constant_expression; struct_declarator -> declarator; struct_declarator -> ":"; struct_declarator -> constant_expression; enum_specifier -> ENUM; enum_specifier -> "{"; enum_specifier -> enumerator_list; enum_specifier -> "}"; enum_specifier -> ENUM; enum_specifier -> IDENTIFIER; enum_specifier -> "{"; enum_specifier -> enumerator_list; enum_specifier -> "}"; enum_specifier -> ENUM; enum_specifier -> "{"; enum_specifier -> enumerator_list; enum_specifier -> ","; enum_specifier -> "}"; enum_specifier -> ENUM; enum_specifier -> IDENTIFIER; enum_specifier -> "{"; enum_specifier -> enumerator_list; enum_specifier -> ","; enum_specifier -> "}"; enum_specifier -> ENUM; enum_specifier -> IDENTIFIER; enumerator_list -> enumerator; enumerator_list -> enumerator_list; enumerator_list -> ","; enumerator_list -> enumerator; enumerator -> IDENTIFIER; enumerator -> IDENTIFIER; enumerator -> "="; enumerator -> constant_expression; type_qualifier -> CONST; type_qualifier -> VOLATILE; type_qualifier -> RESTRICT; function_specifier -> INLINE; declarator -> pointer; declarator -> direct_declarator; declarator -> direct_declarator; direct_declarator -> IDENTIFIER; direct_declarator -> "("; direct_declarator -> declarator; direct_declarator -> ")"; direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> type_qualifier_list; direct_declarator -> assignment_expression; direct_declarator -> "]"; direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> type_qualifier_list; direct_declarator -> "]"; direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> assignment_expression; direct_declarator -> "]"; direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> STATIC; direct_declarator -> type_qualifier_list; direct_declarator -> assignment_expression; direct_declarator -> "]"; direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> type_qualifier_list; direct_declarator -> STATIC; direct_declarator -> assignment_expression; direct_declarator -> "]"; direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> type_qualifier_list; direct_declarator -> "*"; direct_declarator -> "]"; direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> "*"; direct_declarator -> "]"; direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> "]"; direct_declarator -> direct_declarator; direct_declarator -> "("; direct_declarator -> parameter_type_list; direct_declarator -> ")"; direct_declarator -> direct_declarator; direct_declarator -> "("; direct_declarator -> identifier_list; direct_declarator -> ")"; direct_declarator -> direct_declarator; direct_declarator -> "("; direct_declarator -> ")"; pointer -> "*"; pointer -> "*"; pointer -> type_qualifier_list; pointer -> "*"; pointer -> pointer; pointer -> "*"; pointer -> type_qualifier_list; pointer -> pointer; type_qualifier_list -> type_qualifier; type_qualifier_list -> type_qualifier_list; type_qualifier_list -> type_qualifier; parameter_type_list -> parameter_list; parameter_type_list -> parameter_list; parameter_type_list -> ","; parameter_type_list -> "..."; parameter_list -> parameter_declaration; parameter_list -> parameter_list; parameter_list -> ","; parameter_list -> parameter_declaration; parameter_declaration -> declaration_specifiers; parameter_declaration -> declarator; parameter_declaration -> declaration_specifiers; parameter_declaration -> abstract_declarator; parameter_declaration -> declaration_specifiers; identifier_list -> IDENTIFIER; identifier_list -> identifier_list; identifier_list -> ","; identifier_list -> IDENTIFIER; type_name -> specifier_qualifier_list; type_name -> specifier_qualifier_list; type_name -> abstract_declarator; abstract_declarator -> pointer; abstract_declarator -> pointer; abstract_declarator -> direct_abstract_declarator; abstract_declarator -> direct_abstract_declarator; direct_abstract_declarator -> "("; direct_abstract_declarator -> abstract_declarator; direct_abstract_declarator -> ")"; direct_abstract_declarator -> "["; direct_abstract_declarator -> "]"; direct_abstract_declarator -> "["; direct_abstract_declarator -> assignment_expression; direct_abstract_declarator -> "]"; direct_abstract_declarator -> direct_abstract_declarator; direct_abstract_declarator -> "["; direct_abstract_declarator -> "]"; direct_abstract_declarator -> direct_abstract_declarator; direct_abstract_declarator -> "["; direct_abstract_declarator -> assignment_expression; direct_abstract_declarator -> "]"; direct_abstract_declarator -> "["; direct_abstract_declarator -> "*"; direct_abstract_declarator -> "]"; direct_abstract_declarator -> direct_abstract_declarator; direct_abstract_declarator -> "["; direct_abstract_declarator -> "*"; direct_abstract_declarator -> "]"; direct_abstract_declarator -> "("; direct_abstract_declarator -> ")"; direct_abstract_declarator -> "("; direct_abstract_declarator -> parameter_type_list; direct_abstract_declarator -> ")"; direct_abstract_declarator -> direct_abstract_declarator; direct_abstract_declarator -> "("; direct_abstract_declarator -> ")"; direct_abstract_declarator -> direct_abstract_declarator; direct_abstract_declarator -> "("; direct_abstract_declarator -> parameter_type_list; direct_abstract_declarator -> ")"; initializer -> assignment_expression; initializer -> "{"; initializer -> "}"; initializer -> "{"; initializer -> initializer_list; initializer -> "}"; initializer -> "{"; initializer -> initializer_list; initializer -> ","; initializer -> "}"; initializer_list -> initializer; initializer_list -> designation; initializer_list -> initializer; initializer_list -> initializer_list; initializer_list -> ","; initializer_list -> initializer; initializer_list -> initializer_list; initializer_list -> ","; initializer_list -> designation; initializer_list -> initializer; designation -> designator_list; designation -> "="; designator_list -> designator; designator_list -> designator_list; designator_list -> designator; designator -> "["; designator -> constant_expression; designator -> "]"; designator -> "."; designator -> IDENTIFIER; statement -> labeled_statement; statement -> compound_statement; statement -> expression_statement; statement -> selection_statement; statement -> iteration_statement; statement -> jump_statement; labeled_statement -> IDENTIFIER; labeled_statement -> ":"; labeled_statement -> statement; labeled_statement -> CASE; labeled_statement -> constant_expression; labeled_statement -> ":"; labeled_statement -> statement; labeled_statement -> DEFAULT; labeled_statement -> ":"; labeled_statement -> statement; compound_statement -> "{"; compound_statement -> "}"; compound_statement -> "{"; compound_statement -> block_item_list; compound_statement -> "}"; block_item_list -> block_item; block_item_list -> block_item_list; block_item_list -> block_item; block_item -> declaration; block_item -> statement; block_item -> local_function_definition; expression_statement -> ";"; expression_statement -> expression; expression_statement -> ";"; selection_statement -> IF; selection_statement -> "("; selection_statement -> expression; selection_statement -> ")"; selection_statement -> statement; selection_statement -> IF; selection_statement -> "("; selection_statement -> expression; selection_statement -> ")"; selection_statement -> statement; selection_statement -> ELSE; selection_statement -> statement; selection_statement -> SWITCH; selection_statement -> "("; selection_statement -> expression; selection_statement -> ")"; selection_statement -> statement; iteration_statement -> WHILE; iteration_statement -> "("; iteration_statement -> expression; iteration_statement -> ")"; iteration_statement -> statement; iteration_statement -> DO; iteration_statement -> statement; iteration_statement -> WHILE; iteration_statement -> "("; iteration_statement -> expression; iteration_statement -> ")"; iteration_statement -> ";"; iteration_statement -> FOR; iteration_statement -> "("; iteration_statement -> expression_statement; iteration_statement -> expression_statement; iteration_statement -> ")"; iteration_statement -> statement; iteration_statement -> FOR; iteration_statement -> "("; iteration_statement -> expression_statement; iteration_statement -> expression_statement; iteration_statement -> expression; iteration_statement -> ")"; iteration_statement -> statement; iteration_statement -> FOR; iteration_statement -> "("; iteration_statement -> declaration; iteration_statement -> expression_statement; iteration_statement -> ")"; iteration_statement -> statement; iteration_statement -> FOR; iteration_statement -> "("; iteration_statement -> declaration; iteration_statement -> expression_statement; iteration_statement -> expression; iteration_statement -> ")"; iteration_statement -> statement; jump_statement -> GOTO; jump_statement -> IDENTIFIER; jump_statement -> ";"; jump_statement -> GOTO; jump_statement -> "*"; jump_statement -> expression; jump_statement -> ";"; jump_statement -> CONTINUE; jump_statement -> ";"; jump_statement -> BREAK; jump_statement -> ";"; jump_statement -> RETURN; jump_statement -> ";"; jump_statement -> RETURN; jump_statement -> expression; jump_statement -> ";"; translation_unit -> translation_unit; translation_unit -> external_declaration; external_declaration -> function_definition; external_declaration -> global_declaration; function_definition -> declaration_specifiers; function_definition -> declarator; function_definition -> declaration_list; function_definition -> compound_statement; function_definition -> declaration_specifiers; function_definition -> declarator; function_definition -> compound_statement; function_definition -> declarator; function_definition -> declaration_list; function_definition -> compound_statement; function_definition -> declarator; function_definition -> compound_statement; local_function_definition -> declaration_specifiers; local_function_definition -> declarator; local_function_definition -> declaration_list; local_function_definition -> compound_statement; local_function_definition -> declaration_specifiers; local_function_definition -> declarator; local_function_definition -> compound_statement; declaration_list -> declaration; declaration_list -> declaration_list; declaration_list -> declaration; } adlint-3.2.14/share/doc/samples/0000755000004100000410000000000012340630463016420 5ustar www-datawww-dataadlint-3.2.14/share/doc/samples/GNUmakefile0000644000004100000410000001072512340630463020477 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = screen-4.0.3 SOURCES = \ screen-4.0.3/screen.c \ screen-4.0.3/ansi.c \ screen-4.0.3/fileio.c \ screen-4.0.3/mark.c \ screen-4.0.3/misc.c \ screen-4.0.3/resize.c \ screen-4.0.3/socket.c \ screen-4.0.3/search.c \ screen-4.0.3/tty.c \ screen-4.0.3/term.c \ screen-4.0.3/window.c \ screen-4.0.3/utmp.c \ screen-4.0.3/loadav.c \ screen-4.0.3/putenv.c \ screen-4.0.3/help.c \ screen-4.0.3/termcap.c \ screen-4.0.3/input.c \ screen-4.0.3/attacher.c \ screen-4.0.3/pty.c \ screen-4.0.3/process.c \ screen-4.0.3/display.c \ screen-4.0.3/comm.c \ screen-4.0.3/kmapdef.c \ screen-4.0.3/acls.c \ screen-4.0.3/braille.c \ screen-4.0.3/braille_tsi.c \ screen-4.0.3/logfile.c \ screen-4.0.3/layer.c \ screen-4.0.3/sched.c \ screen-4.0.3/teln.c \ screen-4.0.3/nethack.c \ screen-4.0.3/encoding.c VPATH = .. VPATH_COMPONENTS = 1 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/doc/samples/adlint_traits.yml0000644000004100000410000002017012340630463022004 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "screen-4.0.3" # Project root directory. project_root: ".." # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - ".." exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../screen-4.0.3" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "GNU" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 2 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/doc/texinfo.css0000644000004100000410000000055512340630463017147 0ustar www-datawww-datatable { width: 100%; border-spacing: 0px; border-collapse: collapse; border: 2px solid black; } th { border: 1px solid black; background: gray; color: white; text-align: center; } td { border: 1px solid black; } .verbatim { background: lightgray; margin-left: 2em; margin-right: 2em; padding: 5px 10px 5px 10px; } adlint-3.2.14/share/doc/adlint_on_eclipse_ja.png0000644000004100000410000042244012340630463021615 0ustar www-datawww-data‰PNG  IHDR׎úsBIT|dˆtEXtSoftwaregnome-screenshotï¿> IDATxœìw|Õ€¿mé„„P @è½I‘¦4Q°ÐlH)*MÄ'(½"¼G¯Ò¥Š‚Ò ¡H@Jú¶ylvÉ&»É&lêýø Ù¹õÜ2wî™sç@ @ @ @ @ @ @ ø; +À½ ¿@ @ xv ú«´I¥/V±@ @`w‚‚‚Ü0(| ÏõW°¤P©R¥â—P @ váÖ­[N”>= ËõW5K @Ò£G%!§@ @ ì‡3¥O›ã¯,û¯ȬZÑ‹¡@ @ð7à ƒÂ§4<ÞÏÅ´DÔª%P’$ ^@ @ x†qÆ üåVõÙçÖ-za c$I"((ˆÔÔTŽ?NÕªUŸ¶HùòÍ7ß0sæLÞzë-fÍšõ´ÅDþ‘$‰àà`RRR8vìU«V}æÛ8·Ì!!!ENëÞ½{|ôÑG;v µZÍܹséׯŸ¥‚gg VÀÜ  ÃòP‹Ã[°îÝ·Ïæœ_|á…Â*žjµšå+V°iÓ&®_¿@:uø`Ø0:wîl ·jÕ*¦N›ÆŸçΡT*mŠó4‰‰¡Zµj¨”J*[Ó,Q§n]îÝ»ÇÏ?ÿL“Æ‹YÊÇ\½r€š¡¡6ËZ\ÛzßÞ½¢ŸA¢¢¢hܤIwwww"oÞD&³þ§;wî’’‚££#•ƒƒ‹|Ø Ke)åãC¯^½˜2e *•*̶Èh­Ž;–ß~ûnݺѬY3Ú=ÿü?º¯‚¢ST½§¤ãYÁ sP‡ù»Ö-–-_èˆyö{ƒr²È>cß¾}Vã ‚g‡ÄÄ$z÷îÍÙ³çppPQ¿~d2çÎ#ìl/v6 2:Žyóç3xð 2³2éýJÁqŒL˜0‘ŒŒtfÏÎß2ck8[)íïÇÞ½?›Îm“’’’¸wïÕ«‡äG£Ñ R©ž\Ðl®E\ Fhõ§:~ælëJAE>ƒ\?€““uêÔ1¹×¨QdÖ•šË—/P­Z5ä Y‘®{’³,­Zµ"))‰Ó§O³ô‡(W¾C‡¾ŸGæ‚d´ÖµZ-‡`Ú´©”-¾Ìöî·àÙ¥¨zOIdz€Sö_£¨Í>äd+‡V-:½å›ˆ¤“Øwð Õ;tèH~ñÁ³ÃGàìÙsT®R™µk×R±bEHLH4]Ç[·mçáǼ;`€ÍqŒÜ¿Ÿ´´´Ç[ÃÙÊâÅ‹™òÅzôèÁ’¥KLçmÛ¶% L»wíF¥R1kö,^|ñE8HÿþýMñƒƒ« T*¹y“åË—3å‹)´ïÐ???vïÚÍØ±c8h ÿ]ñ_V¬XAdd$^^^¼þÆëŒ?¥Òú¾[jµš¯¦}Åú ëQ)U|>ùs"#£¨V­†©6¬ßÀ²—q-777úõïÇøñã‘Éd¦òtèØÿÒþlݺ•òå˳ìÇe¬]³–µk×âèèȼùóhÛ¶­)ï‚äÍÙÖ .uX„:´ÄÎ;Y¼x1W®\A’$Z´hÁÚuk­†Ï .XLÃXnkù]º|€ê5ª£ÓKV¯“–-[âááÁ¡C‡(S¦ ßÍúŽ–-[pæÌ¦~9• . Ñhð÷÷ç­·ßbĈÖ¹µ²4nܘU«WðòË/sâø nܸ‰N/å‘ùÄñLœ8‘¨¨(233ñóó£ÿ›ýùä“O¬öÁ-?m¡ÇK=LîõêÕ§]»v¬]·6ßö4ÖGî~«ÑjŠÔwÁß‹¢ê=%ÏŽ˜+€  Q ”É­Å”ôRžÃ$Io5¾8Ä!Žgç¿ÎÞ½{X´pÊW0ùy{yŒ¤—ÐëôÌŸ7Ÿ·ß~›¿nÿeSœØ˜XþºýÝþ‹ôôt222Lçî?0ű5\QŽK ÖƒÐÐP³ó?þø…\AÅŠIHH`ö¬ÙHz WWW6l@HHƒ âã?ÆAå`Šûë¡_¹{ç.íÚµ£Aƒ|>ésÆGjj*o¼ñZ­–… 2wÎÜ|e=j4K–,ÁÕÅ•öíÛ3aü´Z-xxx é%¾žþ5#FŒ@¥føðḺº2oîzžK/q-€Úµk[”ùèÑ£T¬X‘áÇóæ›oË·3¿åô©ÓVû ³“3­Zµ |ùò 4ˆþýûØžÖúmQúŽ8Ä!Ž¿×QT½§¤ãY‘[…ÁاÄð ™ù|,ÞÚÆ0:._áŒñÄÆ2Á³ÍáÇ(W®µjÕ²zÍ8p€›7o²víZ6oÞlSœaÆñǘ¹5É~ï§~ýúìÚµ«Pár²cÇ–.]j:ÿæ›o¨Y³fžp—³­¡¡¡èõzÓùˆ#=z4[¶lá£>B&“¡×ëiÒ¤ •+W&,,Œ=z0räH³¸o½õ_}õ•)ý¥K—âêêÊÎ;ñ÷÷'88˜/¿ü’C‡™âçæÂ… lÞ¼gggvìØA™2eðòòbÉ’%Ô¨Q½^ϵkט7ožÉáçç‡R©ä?ÿù¿ÿþ;}ûö5É4hÐ &MšÄÇÌúõë©[·.6l`Íš5Œ3¹\n*CAòælëœåuh{ææÖ­[̘1¥RÉöíÛ  Ks_?¶öí‹ Ö³‡òðáC¼½½ñôô$222ßüŒe®V­šÅ6¾’ý^åäÉ“éß¿?qqqìÙ³‡˜˜}P©TydNMMå?ÿù»ví2)ÀF‚ƒƒ‘$Éb„ÇŠ›±^ jÏœõ“³ßæì϶ö@ð÷¤¨zOIÇ+ B þ¥”+W€7npîÜ9êÕ«@rr2ׯ_§Q£F;vŒóçϳ`Á$I²)`ZŽðÓO?‘––Æ 9v²2޶†ËÉŒ3˜1c†™[îpׯ_G£Ñàíí¿¿?W¯^E£ÑàééIùòå‘$‰K— ˹ŒB½^ošW¯^Ý”¦1-Ó$0MŽe2™iò¸cÇÚ·oou LJJÀÍÍ I’Ðét¦Í*ŒÆGЮ];hŠ«Õj 6ÉäîîNPP™µ¤nݺfå 5›Ì[“÷èÑ£fm-ê°ðu¨ÕjÙ¾};Ý»w7YÍ=zdv”$ ¹Üü [ú¶ÑræììL… òøç—_DDZ­___|}}Mmjlã›7o’••e–·ÑúߤI“òyr¾ù]În¯jÙud­år9ï¼óåÊ•cÏž=(•JÆŽ‡N¯ç£#ÐiµÔ E£V“‘‘R©¤jHr¹<ß:ÏݞƲ„„„ —$‹ŸjÈ-³QÁóðôäQJ +W®4ùë%ÉjLLLäÁƒÈårªT­jS{îÞ½ÛP?¹ú­±ž ÓwÁß“¢ê=%¯(Xݽ>ï-ªÞz|qˆCÏÌááæÆæM›èÞ½;®®®œ>}š{ÑÑtêÔ‰:pþÏ?9vìCßßæ8ó2 Ëdk8Ž«Æ Xõêfç¡¡¡ ×“úèÑÑц0Õª^³£#ï‚«‹ »wïæôéÓfqkÖ¨a–G‹fÍøúë¯)[¶,Û·n%6&†Áƒ±zõjT …UÙºwíJïì (V,_NµjÕP*T ½ž6­[3õË/ñõõå‡~`ñ¢Eܸqƒ>½{[”ér¶Õ¡ZH ™Œ‡11ÄÇÇ£T(¨Vµjò^¾t)O[‹:,\ª .e+55ªWG–Ý—Û´nÍ—S¦P±bENœ8Áî]»¨ŠB&+Rß6Z˜Ôj5ž;g:Œ÷Ýüò»–Ci·ÔÆFÿÞo¼Ai??8@•*UøqÙ2ê×­ z=~¥JqáÂæÎ™Ã’%K âÇeË(X`[+Kµ«åÍ-ó°¡C)[¶,û÷ícㆠ¦Õ 5²Û± >X¡|y\œœljOký¶(}GâÇßð(ªÞSÒñ,Èm –¾(«ŠŠŠR[âØ±c´hÙ$YvL ™d858H e‡kÑÂf!Á³Çûï¿oÚF_ðÏF´µ ý`ÿþýL›6Íâ&.@ðo¢¨zOIÇËL&#((¨¤gi9~g™ùìj¥BŽ˯¾ Œ/ž}4 5j„Ò¥Kq-ÿÃm-0bÜP¥r媢/E×{J:^N6¾k`ÕhÜ!K …#::Úê¢ûí7Ê–-[²ý uX²ddd˜659uêÞÞÞO[$@ ¥Ri“%P(@`g´Z­i‹øÜ£TZ]„!ÈFÔ¡@ …ÇV%°ÐŸˆAþ( ªV­jÕ_Œ¯#êP ‚âÃú£Tqƒ@ ‚V•À„ÄÄ’”C @ O€¿¿¿Má,*NNNT¬X•²(Ÿ²@ AI¢Ñêlkõcñ*ñÒ½@ @ ü(ŒþfU @ Á?|ÕE±ûš@ @ <ûÈd–¾þga @ ‚Â(øG£V«qppxÚbþAˆ>%àfsîÏ? Tz¹uë–]ó>ýk4 ׯß`ÿ»ÑѦðï HFF†éüý÷‡Ÿo¶” Ч|9Ñétlݶ­HqW®ZÅÙ³gùøãOÌÜfæÞ§o_V,_Ž““C‡cêÔ/ñõõµ˜Æw³fáîîNýzõhÕº ×®]3 ³ß>Bk†2|øGŒ;†Úµk?‘Ü)))\¹r…kœ9Fll,ÑÑw-†-H¹²eÙ³g¤ÿ›o Ói9sú ãâLaÛ=ÿ¼Y]ØR¶Ž;°fõj\ÝÜìV>KhµZÆÏ+/¿lÑ?..Ž~ýú³oßÞ<~×"ÉdÜpŸ£ÇŽÑ²E >Bxx8mÛ¶5 ߢys>1’¡C‡òý÷K?~\‘åîô‹ܽó—Ma-Õwtt4agNãíí ÀÖmÛX´höï·{ëõz>l:ÿå—C̘1ƒå+–3wî<ÆŽÇ´©SQ©T„……ñÙÄIfñ<¸Àöí;ÌÜ¿š6•† Z,£‘—_y…K—.séb¸ÉRfïò>}šÄ¤$‹~gÃÎòB§NtíÚ…á๖-9tèEE"'-[´ ]»v€¡þZµnM™2„Ö¨AíÚµèÖ­ÎÎÎ1ë»Y¼òÊ+ü¸|9Æ-r9ÂΞeÁ‚åñ«X±"r¹ùó¹'íƒÆkÞÝÝV­ZñíÌxxzÚµm7iJ©R¥LçÆ¾´ióf“[||<§O ×û›o½Í¨Q#‰‹‹gÿþyÒtpt0]ë•ÍÍÍ–-Z0sæ Š}<;sú ZÆt]<)YYYÌž=‡AƒšÕc~$''Ó§O_Ά «wfÏ™C§ŽùjútÖ­]ûDòç¬ï¹sçqüÄ Ö¯{œfÓfÍ Êã6nÜXºvíZ¬õo+¶Î ;¶€åþ8â£á¼úꫦ¸[·mcæÌ™;z´Øû¤@ †'^š™•ERr²UÿÇ••EÍš5 /]>H’Ä’%KÙ´y«V­Ê#ëµkhµZ$IâÆd©ÕË~‘“'O²aýz3ÿ9sfÓó•WLçÈd2¾ùæ?¼;à=öü¼;ÏD­0ìØ¹“)S¾dÝÚ5Œ;–e?üÀÌo¿¥lÙ@³p‰‰I :”ääd>›8‰Ö­[óù熉û™3g_=Ý>°LS9l-›\.G’$TJ¥ÝÊg £ Öú•N§#%%Å¢ÿ„ ãÙ¾c æÏÇÕÕÕæ?þÀÏÏÏLñ1òR÷î”òñáÓO?yâ¥Í¶Ä·VßJ¥’yóæ›Ú I »×ù¾}û8pð ñññŒ;•ʵk×òî;ï°yófÊ– dýúõtíÖysçРAþ÷ßhu¿)³ì‡e 4ð±ü ¥K—F’$«e¼sçaag)[¶,{öîå¥îÝìÞ§ÂÂÎZ}’þ(åýƒÓgNÓ A}$IâèÑcÄÇÇÓ©S'‹qöïßÏÑ£Çxþùçà Շû[·nséò%.†_D£ÑàääDÇÐiµtèÐx²åò¿ú•´´4&æRÂüþ;Ã/àáá‘'ΓôÁùóæÑ³ç+üõ×_ 2„/¦Laþ¼yvmµ:‹=?ï6Ïž=€Q£FšÜêÕ7´ËŸçÏóá2iÒD:f×çÔ©_ZL· ñÌX¶{÷î1äý¡Lþb ß/^d÷¾·{÷ÏlÜ´Ét~åÊNž<ÉŽ»Ln¯¿ö]»v)Rú’$áàà@»öíyû­·6l(ŽŽŽfafÏžÃÈ‘#L/þ[SÕj5¿>LùòåÙ²e ={ö,’ü¹ë»Y³fÌ›?­V‹B¡ &&FCxx¸™[TTÍš6-Öûɾ}ûxô(…W_íUà&¶Î ;¶Xë’”ëZ-¦ñ^ ž”'¶Ö«[—zuëZõŽŽÆÓÓËÌí«¯¦g+0yñõõ凖æ›ç¹sçø|òdªT©ÊŽíÛquuµΖr.Zć|Ç]¥Tå¹R³fM8À /¼P`úÖxµW/–,YÊîÝ?S3´&¨T*Ö¯[g®Ví:lذ*U*Åš5kˆ¾Mtt´éà­7ß$88¸He³gù6jlv.IÉÉÉyÜÃΜÎ7û÷pðàAvîÚEëÖ­Mµ””Žü~„Î/vfÏžÇÖÃU«WófÿþDEEѦM›'*‡­X«ï÷‡ aÁÂ…¼ÿþJ—.Çß^u^·n]’“±nÝz^èô7#o²ÿ>bcb3v£FŽdÖ¬Y8:8ð×_Q­Z5^x±3Í›73¥~b˜ÜŽ?Á¹³aù–qãÆM´nÝš† °qÃF“hÏò 2تßÙ³g™ðÙDDÙ²eMî5jÔ sç-ƹsç±±±fn …‚Ê•ƒ©\9جåË—gÚW_ñÅäÉ&·?þøƒí;Ì-§Fz¼ôÏ=÷œ™[jj*Û¶oçàý¦¾l¤JÕÜÝÝ­–± ¬µ\.G©TL=ؾ};`ß¶óé§té%Óytô=ýzÈ, €Ÿ¯/6¬'=#ƒÁCÞçóIÉÈÌ´˜n)||| ,[… èÒ¥3;wì4ùÙ³|7#oR§vm^ý5‹þk×­ãfäM›Ò:räù…/§L1¹9::2jÔHÞ~û-¦ý5£FfÑÂÇK¸ï޽ˮݻ̔jKŒ5ŠmÛ¶óî;ï P(Š,îú®_¿†‹—.Q·NNœ<És-[rûöm3·J•*Ø·þìØ¹“o¿ýo//Nœ<Á·3gx¯·e.PرÅZ,ˆâ¨@ ( ÅþEøK—.Ó¿_3·Ï>›`ú­ÓéL7ª¨¨(&}>Kdee±ÿÀV®\ÅÑ£GYºd ݺuµš¯N§E¥Rå+›$Iœ8qœ… æÛZ:vèÀƒŸhwppàÃ>`îܹ|üñh¶nÝÆíÛ·éݧY¸2Ù7Ó·Þz‹àÊ•™0á3’“––†F£1ƒ¡>Ÿ¤l`ŸòA^å.==&M›å«ôé%‰k×®qñâ%NŸ>ÍÉS§P)•´ïОɟO"°LSØ Ò«g/&MšhrËÊÊb×îÝfÖQ#:®@kŠL&3›8™òå—<÷Üs´lÑ''§<þùÕw•ªUèÒ¥3sçÎ㫯¦YÌ×u@bb"Z­–{÷î¡Qk5j®®®ÄÄİråJœ]œIOOgG¶ —ËéÙ³'^žžüånݺÍÂóIIMeܸñ¬Zù?:½ðbeܸiŸ|ü1 4àÛï¾ãáÇøùùÙµ|qý:µk×2S ËÒ¥?°råJjÔ¨A­ÚµèÚµ+U*W6ù8p2eÌâÔ¬YÓ´¼lóæ-¼új/üýýóä1mÚWôîýF0&&«Ö'éƒFÒÒÒ8tèW‚ƒ‚Mnöj›×_V­Z™Î\nxð½Lne²¯ß²eË’’’ÂÛï¼ÃÔ©SY¹jµ™&*2’ôôtjÖªE×®]x©{÷Ëvïþ}öìÙ›gy£=ûž—·åË—·èçææ†BžwìÈIff&sæÎåÊ•«ÌŸ7×b¾93Ï;}6l´X†¤¤$~øáÚ>ÿgÚ´©VãØ2(ˆÜcË“Ü_¡dÆC@ (ˆbÝ466–»wîP£Fu«i½ðbgvl߆““ß̘Á믽jvÉÒ¥:tˆ¨¨[<ß¶-ŸMϧcÆR¹rp¾ò©Õ”J%’$! c ÿãË‘ÉdtíÚ//oÓrÈœŒ;–‰“ KµBªVeûöÇšUâÆ›OT?Gå¿ÿû/ž^žlÞòqqqxxxбCÇu¾ÿÀüÙòÓO4hPŸïàå—{Ð¥k7fÏžMPP%ê×o`ʧm›6¸»»óÞÀ³qÃzæÏ_Àá#G˜õÝ·h4zõê™oŸ:yê÷îÝ£S§ŽxxxR•-?ýÄÁŸ¬Û«|ùòg  IDATqðà/¼üró¥YÆÖú\.ÿAƒÒ·o®\¹Jxø%'›üt:7ndëÖŸÌÒóòòÂË˰ÚÁ¯´Añ­V­Úãi"¾¾¾Üð€wÞy•ÊfM›Ò¬iS³´–/_Á;w˜<ùóËöÁ‡òÁ‡мys&Oþ¼X®-ÃEký¾M£†,ú'&&²aãF–-û‘O>þ˜±cÆ’ÌG&…BaògÕêÕìùùç\K KH5jÄо];^~¹M›65 Pù­Õw‹æÍ9~ü8ƒâÄÉ 8V­\er{Èb©µZÍ÷‡òõôé”+W€ÿ®XÎoôæ«éÓ™0~¼•xÏ x7ß¼s-…¹¿j4üýý‹§O ÁP¬–ÀY³fÓ¯?‹–#Èd2^{ý êÕ«K÷\˯êÕ­ËómÛRµjU›?€˜‘‘‹‹‹Uÿ'OòÎÛoå»Õû„ñãéÒ¥3`x§+'ލÕj›d±†¿¿?£FŽäÃá±aý:þ·r%þù'wîÜáà/¿ðR÷îÜ»óçÏÓ±cÜÜÜ(ˆ¯¯/‹/àâÅK¦s€&›Ð»÷6— 0)˜ö,Ÿ%"®Eœo˜ *°~ýº|Ãñóî]yÚù䉓ԯ_ßbKÊ­ôï×þýú¡Óé8}ú4;vîdæ·ß2pà{ :´ÀÏT¬X‘ž¯¼Âw³fÑê¹VyüíQçá/âåå…““3+VàÖ­ÛxyzqñÒ%222¸~ý:iéifq¾ýv& [÷—hß¡#ï À®;ÈÊÊ¢K×nLùâ Àú§6nÜHÛ¶mLï±½ôÒKlܸÑL ,®>eäúõëœ?¾ÈOæsâêêJ£F iÔÈÜ¢´pá"Ú´mcqI¯­tìÐÎ/¾˜gLÑh4,Z¼˜Yß}g5î“ôÁñãÆÒ­[7\]]ó\3öh›ÔÔT¢££y/ÇdzݺõôéÓÛä““k×®¥W¯žl۶ݦôó+Û‚óéÕ³'þù'}ûõçèÑ£¦~À~}oÈÁVïA:Ž_ý5ÏòÀ… ñëo¿¡PÈy©ûK(•Jz÷~£Pùj4>øàC¾÷y-Ë...Œó)cÆ|Jbb"`ÁÂE ÿhS¦|A—Î -¿µúnÖ¬)ËW¬ ))‰øø‚ƒƒðóóå£F””ÄÕ«×h–Ëh¯ú?amÛ¶¡S§ÇJY³f5½^} FŽaÇÖ¹@~X[ sÝ·o?,ûÑ,Lq‡@` Åf \¾bgÂÂØ½k§ÕtquuÅÑÑ‘Yß}Kùòåó„mÒ¤‰Ey$ÉúÓý³gÏZ£†Åð·nÝ&<ü7A§Óo1OOÓ{ ¹ó~ø0??¿'ª•JŶíÛQ*•¬^³†êÕ«ãçç‡\.G&“!—Ë‘ËÈ!IçÏŸgÞüfi·©Ï¹ôÀÁƒ´hÑ???›ËVå³Äæ-›éо½Õtår9’^os¾nnnfa5-Ë–-cæÌ™v—ݘž\.§iÓ¦4mÚ”)_|Abb"’$áëëkµ¾Œ9‚V­ÛP¾\y³4Á>u¾üÇåôï×—qãÇóõôéœ8q‚ã'N°eË®^½ÊªÕ« eàÀÙ„3ù‹)h5ÒÓÓIHˆÇÝ݃µëÖ²s×.d2îîî|ò駬X±œÊÁÁyʘ™™ÉŽ;ÑétÔ®cx78++‹GqñÒ%j††Ú­|Öˆ‰‰eð!|ùåT*U®M0{òŸ‡›6ädž Ù±s'ÛrY-¦‡õôŒV»œþZ­–O>ý”† аa«qŸ¤º»»›–¬æö·GÛÄÄÆ²~Ã3·í;v “ÉÉÍ +¢nÝbÛ¶m–¯™\ÚüÊf¬ózõê1jÔH¦N›FÛ¶mM ½úžqI¡¥tÿ=õêÕ' ÀÌ¿C‡ö¼ýö[¦÷Ö-^\(9¬]»Ž?mS’$±mûvV­\ùD²^¾r…ª 4ˆŸ~ÚJ“Æ©T‰›‘‘têØ‘7nð(ûóII‰ìع“]»vãççËØqcٿϰ¼±Ó ˜3gÆÑ­[Wz¼ô¾¾¾VË6jÔhFzìV34”ƒص|F~\¾œåËWP«VM6oÚhuWR0Lh x—ví;Z£ eÞî9ùóIf t:ã'LàÈ‘ßéß¿ß}»íI±¥/}ôÑpÖæÚÖ^u^±bE³Í$"##™þõpvvfîœÙ;~œW_{?MÇË圿p¯¿þ+T [×Ç-Õ¯_ŸïfÍfy—®|9å šf¿³•»Œ7n¢wï7òlÆ2àÝw™8i?û …Ba×>µnýz6mÚÌýû÷èØ¡#[ÚB`` Å°NNN|¿d)ÿ[¹Ê¢FF}slƤÕjùrê4¢¢"¹rå*¡¡5xû­·i߾Ÿ`ذ%,ì,ñÙßìܹË𩄆 0ùóÏÍÂ3cW._1ì¨X·.ŸMøŒ–-[`žÖxpûöm~ýõ7Ö¬]KË–-øïŠåÈårf̘I×nÝè×·/íÚµËwÒ¬×ë‘ËåhÔš<÷[ÊæââÂ;ï¼Íü èØ±ƒÝÇ3€›7o²k×nÂ/^äâÅ‹¼öê«lß¶5ßž¶òêk¯qÕ«Ó±SGŽ9üD»ÅZÂVù­ÕwóæÍ9f¦Ä4mjX&š{)¨=ë?¿e¥K—fëO[ðññ)Ò\ 7¶öZ3R}R Š‚%-Muÿþ}µƒJif-ÊG))ÜŠŠ¢ZµjùNòsrêÔ)7n\¤§ÃK–.å•—_¡ti¿<~agÏÒ°A3·Ã‡ãííM­Zµò¥¨R¥ržw­Q\}Ð^m“™™IÿþoÒ¼Esúöé“GÑ‹‰‰aÍÚµ;zŒÕ«WáääÄ­[·øðÃáìÚõø“#GŽâì¹sèt:&MüŒ_|ÜwŸ…¾%*ììYBª†P»v­|ßyÏÍüù >üC«þÉÉɦ%öžžÎ¼ùó7v¬Íql•¿¨ãYNŠ£þm¥°s(ÜØò,Œ÷@GGGÔ-eÊ”édéÙGZŽß@¦]”À¿;ÑÑѬ]»ŽO>ù8ß?&6–+V0æÓOíö‘׌ŒŒ"+/šl«O~U[ËÅS¾…©oxöú”-ˆ>õló4dz IYYY?wa Ñ÷J–ÂŽg9ù7Ôÿ³0Þ AN„(@ ÿ" £ëw@ @ðl!Ö#@ Á¿a @ ‚Â(@ ÿ"òµÞŠºYRr@  ˆÔ­esØ|•ÀÂ$$@ ‚g±T @ þEäk @ ÖQ©T¸{x>m1âãl+”@@ ÀF,)})’Ñh4OI" ð%P @ °£(”>Áß¡ @ ùÓú'@Á?¡ @ VÖ?Á?¡ ŠÄ•ËiÖ¢ÉI‰O[@ ‚b៦J’„F­F£Ö —ôO[œE.—£T©ptt|Ú¢<I ô)å ÀƵ«èðBg» $Ñ/탨GÁ¿ÑÿŸmDûJ’¢˜‘‘NôÝ»\ ¿@\œí;IþÝ‘ËåøøøP»v]Bª×@¯×=m‘ž:E¶f R ¤ýÒ>ˆzü›ýÿÙF´ ¸ù§¾ÿ§Qk¸{ça§OQ³VêÖ©ì_òÅp™LFzZ:§OŸÄÍʃÈÊÊ|Úb=UÄrP@ €žõ/'M—.…S«N]\]]P*Èåÿ-ððò ~£Fœ8~”ªUC„ø´@ Å‹^/‘Ÿ€smg” *…¹Bñ´Å*Q<Ý<ˆ‹Gö/R~­!”@@ Á¿ž²Ј^¯GÈdrdrù¿NRÈ u J @`âBx¸E÷:µk—°$AñsìÞyßÝÆŸ7#PéýQª Qp=Z7£®OÈÓO J”ƒ˜I’L‡àßÉ3©†mjIÃ׎{>YY$$$˜Î³23ñññÉ.!!G''Ó¹ÎEØ^6g~–ò2æSÔôó#55Å¢»››»]ó±FÄÉé† i:¡$É‹Z­æêµkT¬XÑÌïöíÛ\/1EP£Ñ T*‘Édèõzó§U2 ¹™LV"²•G™Öœ¾Ëk±DƧ“©ÑQÚÝÆ¼éÛ¨< Ë{•¸L]‡½ÇîE?–x¾–xËܰ•\¼~•¸ÌGø:yP«juF4|‹·ÒÅ.ÃÒó9q˜fM¯2¬zbokÐk|¹Á‚[çéÕ´'/–oYìräää½0]ßÅŸwnâ¬óE檣¡CÚ„4¦¶•Åœ?ÎÙÓ‰ÄÅdáëïHƒÆÞÔmüÏ~ ¤Ø÷2ÿ=UŠà _”„T-ƒGÝŸ¶XE&ú^42™ŒÀ2…Ž›˜_¤<½½K)^Iç'x¶(ì¼Y’$$Ì•À×§¹I¦…È@¡¹’Ò™Âä*$™ä 6,™ù£ øxæ”À°M-é0ø$—6-vE0!>žråËœ”DÅ ,†óõõ%!!O/Ãäõî;” ,üM!!! åË“ž‘«‹‹Å|$Iâ¯;w([¦L¡ÓÏ ðòò6s‹¹„áâwwó°k~–hÐq¦U¿ë{‡qrz‰+‚z½ž«×®áëë‹Kv›Ü¾}Û,LpPP‰È¢Ñh¸q3¿Ò~8;9‘¥V“œüȤªT*ÜÝÝpqrÆÁAõL*ƒ?_zÀÈŸ.àâ ¢g2ôiT¥LÎíÄ4ö^‰¥Ó£ônXŽï^©“²ä– dejÍλ{ŸÝ‹¾/±üŒ?ü-a×ÏÓ½C$!0m.ÀÝôL"ãï1hýjU­Î×m>)6®%Üâ÷Ë¿Ò*(†./Ó¦RÖdŒàNÔC‚JUÂÏÑ '7ÒÀ/”ÒNÞ'hü¾’“qgiÙ0œaõÍ•Òy¿Ÿ§_ô j]"²Øƒó§Ãٿ뵆PÎà¶W@‰(‚ÿÛúøÞùö+%£Ì+ö½L–K9>˜Ò€“zquê–HövǨuœ•??ÿBÅyø0¦Hyó+]:Àæð:Žøø‡EÎOðìPÔy³$a¦êË4¥w8(ä8©d¸¨¸:ÊqUÉqsPàê¨ÀE%ÃI%ã•)G…±(åë@|ÜC‹çö¦Ä”À7füŠ\&C.—¡×jqwu¥LiwüKyÐ2Ô Pej Ùã­F£ãÄÚf4ë{¢Ød’Àp)©©x{[Ÿð¤¤¦âééù8^‘24\lz½žÛýäµ­Ñ÷ïÛÕ"¨×ëó\°.®®hµÔYj’õÉxfo‡\è%¹±ª‘™±e2$ \Ká‘ÏÕã_S½ùøb“#7qq†§§¾¾¾¤¦¦¢ÕjQ*•”+W÷’}Ê¥T*ñ+íÇÃØ‡¸ººàææJ€i’““î.ãhS© «3Fr7‡Rº&l;¼öú{,S={:…Ê…+îšÜ¼Kù®+Å€mŸùðÁ~¼Ùäužlb×¼§-ÚM«fµLç ×üÊýž·k¹1*€>Ï÷ç¥I lŸèLÊ9ð§¶àÈÏ 9@77·¢%’}˸~ƒªU¸s÷.z½„¤—$=z)ûw¶5&¤jSœ¢eW„¸boâY] ÚzØÊ<Ö¹ròš4oD‹¦¡H‡›iÞ,4@“" ¿’KÏ€Li°ø) –@…#(*d2’B2…P‹ø¸‡”òõ£”¯ñqóœÛ›S«´jŠJ.ÃA)C¡‡RnJÝ(íª"ØÏ‘³KCè1l;ÈdÈ2oó‟=Û5¢Í€3Å#”d>pô¢¨1lQ;¾”}ägôõõ%-=gg»ZMºLfºÑ¸¸<¾¹%&&Ú%kèôrôü°å4YYÒ3²HMË$==“oǽŒƒ«aIŠgZ—ŽÍ f‹1Å*<~°T©Rddd••€³³3÷îÝãZµb—!'2™ g''“˜–ž\®@¥R¡P(psuEÒëQgeñ0>•ŽŽ%*£5.ÝOaÔÖpF·«ÂøŽ†‰º$Á¥HÉÒÒ¨¼IUðbÃ;é¶ä8?¿Íà–•ŠEžÃÞ†LТA£ÎDU½ œf0vñøfè¸bÉ×Rc ÀªÕ€LZ8,0)‚N;†­ªÛ†°éüy4Œ-–¥¡·ïERFåÀ_2ÈФ Ä™wC¿ÇÛñs¿2_"îݲ{Þ–Xxz^r3¥ô­ÐEfJi «Œu÷óÙs϶xqI[<|=‰‹ùÈ›ÇÔ àÒTªÀøðO˜øü €Á8e÷è:²ÈŠ`ÄŠn—€—Oá²¶ víÝ@·{)ŸüÈ­n›èŒ.=}z ‘Qq”ì¢â''·XT…@ŸýзJ•Êè%‰²eˆ6‘rýÃýYoÇIõí¿îXõ«XÁ°JZ ðì*€`Ù:çé¢ ÈÏ™èÿV¢Ç°mHé·xñÝÍ Ãæysîå T^I› šü/oCh¯ãž^IZa5íƒaÅÿþGDÄuär9uëÔaР÷hܨ>¤O¿79¸¯MáÿM”¤"XbJàßO>¶j´¸{¸PÊ_wk•Åÿ¥Ó¬ŸU€¾ƒ¿fÃÒñ Á œ/6™Œƒ®qÖÙ¨uÜ”ô’Q+Ð"}÷®]-‚’¤Gbî?@§×£ÕjMGHHÕb¢£ÕËÑé%Þë™ã‚–d “ÐëÁ¯îpÓ )vïÄb•%'ÆsFF2™ ­VKzz:Zš{Ñw ,[®À4nGEQ¡R%“UN¯×sçöm*ª^õz=YjµItrr$55 ¹\†»»;’$¡Vkðôô -#“ôÌŒ<ËBí%Kaùl×eªøº2¦}U¢âÓ°&ŒëÓpsTìëƒG™t¬îÏ7/Õ¤O£r,=UlJàÁEÿ VÀ‰GN³êÛÜzp‘Á O£ªÙž‰GNó[ë4ìþNNŽÝ´£Xä027l%å|x½q3’*•ƒ‰¸~Ób¸ÀÀ<ˆ¡Jåà'1šYoÝþËô[¥R†× Œ¿-Å<›X²Î™,ÂX?«o ú†?ŒµyÞ,­€»,ú9Ê%J9HÔ›-Ÿ—…Œ(23´¼Ø)ï mî¼y¼?dŽÙJQVVß/Yˆ>*´LFs¸Qõ“ô9:tîÇu`zJWdK q'&[Ë•+gñ}Äœï!Þ½{·HÁ„¤dÒÒÒHˆO \¹@$½DéÒ~ä~)eo@rþÂE|Jùàêꊗ}—†jõ $ –o=ƒV§C­Ö¢VkÈÊÒ’¥Ö VkP«µÌ×­¾ä¾YãììLZZIIIèõz4 n®.ȉ‹C’$Ê–+Ÿož^^\¾Nh­ÚH’ÄÅóR¥Zu Z­íË¡ôz=ÉÉð/\® 55 ))©dfe!—ËñññF&“¡rH#>>779¾ñc/Y CDl*¿ßŒcn¯:(ä2ÒÕ:^ýñ$Ž\œÐwG%¯.?Åí„ Ú‡³ç«ø±êÔÒÔø¸>¾ËØóúx®u ô¿æVÌE†Ìþ˜Ÿ¦lD­I'9=Ž6Sç0÷ÓÉ´Ð¥“»Iy´·n:Ïm«8*š“Óý‘Òo‘™¡¥ÇÇ—lO<×î YZƒ(“úŽV§D.ƒã [c|Öl˜6Ë*ãÆíßFšúXù6³ ide1gî<&ŒK—.MYuhßžöíÚ™òúý÷?èÚµ3™™™6…7’””Dzzz×¥­áž5þ±ïjõyŸ0QÈ@¹LGß)ápo oM9J̱ÅyÂÖªY‹ƒ³ì‡¥ 4˜wÞ~»H2IHès(~juþ“ ƒ’(y ….[ÙÒëôHÙïèéõzRRS³wé4_$’’šŠ»‡‡¹rZÒÒÒ¨P¡<*”çal,’¤çáø<–@ÃH‰z5]~ IDATõ oðÿõ×û+::½Ä[/5Ì7œN/™úJqãíåÍ7(]º4r¹o//îß‹ÆÍÕ½^‡$éM»¹æ§zy³°Ó'ÑëõÔªSOO/4fѹ0(‚ɨT*är))©¸º¹š’Æý1–A«Ñžžnñ†eOYlåÈ8ÚT1,é]z,Š{2Ù9¤9^Ά‰gÓJÞœ¸•ÀsÁ†0Ž*C§déðq}œ–½®ï®ÃÞ`÷¢ï™Þ¶1ïÍ=Åö/6âæäI* R8ðí{ÁŒþá4_?ߘߖÿd1{Ž7±÷’M¿S²òîÖ;¹á5~/?žé‹ÿ¤L)HÉÌ«0ÚCžŽµZrêæIœ2 Ã-`Oø>fX€³«#eHJÍ MÈs¦eylQJ+{ilZaÏö* YèÀɰ’Å)Z:5Ø´æz½„¿¯‰I•”€„ 2IFâíÂï¹ósÔÇþB«µž–ZcŸÛýo+?¡|‹ôuf&+¿[Bß/,€V@xzíc ÷ÜG¥R¡R©xôèr¹ü‰¶Ï—0L˜oFFR98NO\\¼Ù;:žÔ´4<ˆ¡rpð-ÎÌ)§”½ª)gzRŽ•N’éïßk‚üo&?ë\×/bXþ™/õš½fszÆÝAÉÑÇ3³•@†¡øF|YÔÿýOIF»Á¿XMkßâ¦4.]¾LZZíÛçUàŒùjµZÂΞåË/¿°)|.+îybÚîÙ"·²W\ÊŸ‘SÕÙffYö23+› ™LB¦C®pdÈQp/6žà\é´o߀;w`âgŸ™Ü ‹á‰†a`tws'!1ÙjXw7wSØ¢?”Lï HƗ³欬tËq,lèb{~~½Þ`ú÷õõÍ IÊ~AÿdåË­NÎÆt5º’±–)@\|±±±Èd2¼¼¼P*ÄÅÇáë[ÊôŽhbbzI¢|y˻ǂÁW5¤:NÎθ¹¹?±Ò%—+pww'3+‹Ô”4drZ­N_`ûØ[–‚ˆNÎD&ƒr^†åo{¯ÄÒ¨¼ž?«›JÓŠ>¸8Ú6ìNŽJ9æËœíu}wþì0 /©HUÛ¡Ö¥“š {.ï¤Q`]ôh™Øß•1+Or,{Ã˜ÜØKžøÌ,ÈÈYÙðŒ_s€ûñ™ qögH“þœºs¥J“Ò}÷3íç¯Ð)õ”ñôC£×ãìì̧m‡°xÝY2Õ2Ò³ÈÌÒ Ñh™<´•]å騏`¥415•¶6|²Âž÷‡B¡2<>W¸ð\'Z5«n8Wº£ùó ~üc#ÁþÙŸH‘Aäƒ$>éöÆ“çhô 4ù ²;¬°0*€:­­Z&KCéZ}Y6ÿ¿ônënU„§Ø>’’€¯¯11Q©T8;;“ž–†Ln}É[A'ÙF+Ÿ^¯Ç××üs ÉÉL–@ý(œ†ü+wÁÁAܸùØL¼ÿÏÞ}Ç7Uõÿ$i:hiiK ´@K‘=eÉE"âq ¢‚Åù8~*Šð¸\ ‚ ˆ²eÈÞ2eÏB--]iÖýý‘&m:’›&é€ï[ó"¹9÷ÜsoNnï7çÜs”"ë\É*{+ \;k4ù­sùÏ ˜·LºÀÜIݸª·º|­V f³íÑ>Y|žIÇš™oPðk\ †Üûó§ôqô˜û¿¯²dÛ6|h»ù’!Àq‘ššJhh54J½öؼy ]E >@UúgŸ{mÛm÷*Ú[çž3€fÍšò¿÷ßõ((PnA`^~EÐä·sÙë˜ý5´XÐjÌ@m0—²K¾› ð oþ€8nÄV ((ˆ à —¿6ÛÓzÛ´p hU”RÐêaÕ½úà(V,kþ1V¸z¡H Ý•^pO¤?~91Y´X­ k×ï`ì‹ñ¸ጸ¥³æ-çÍfóëôWIJªk{Ê^ÈÙÄ]7ùvÔ¼¢hÛ¦ .¤^ÝV‚‚8~âa¡¡cUB€ŒŒtâãë¢Õ–ÜRQ£¦ìA—F“ÿG)œj!!(Š‚F£%åìYÌf 5££ B§Ó Ãh*½{§×eñ€^gá53ÏDx°žÔ,#u €ÇÒrXºç,Ï\g»_ðB¶‘o6ž`P‹Ú•0M„¯¾ßË¿úN·ôGcUÈȾ€^HǸ6ÌÙòÝ›t!ÏjÄböƒûS=&´ÄA_”'0†”ÎÛ2W½ !P38†¼j)mÈoËS3°uÍ7góýÎ_±b"®vš…ŒlZž×û¾‡!+‡{7u›Ÿ·åÑòzþ9³—Mn©Aé/i­IÙ»‹óË&P»v"–qú¥˜ø Ý{v¥ß}£YþÕ·Åòð¶<½[uâà©)ix§y[æñźÄGÖ…"˜s©yônUzý÷¶<ê÷¤ax}æý»”MÇwaÎÖQ-\Ë f7òÀ5#èõÊb–MìÍwË‘—g$'ÇHv޼<“SK /Ê“T£1tÎ'[JJ'õ}’O»câîÝŽu¦¶lÉ¥Þ–§,ò²ŒNAÙ‚?fðSO¹\'==¿¿üÒGÛûƒŸr?¢ò‚wJéOkj î–[Ñ„vgöÛÛúLf£‹ÑlëÞè&´« Á8€¶ÛC,ÄÅÅ’|*…À  ´Z-úR.Lݱ·&%5p ¾Q´%0-í"ÕªUsJSV×äQxÄsw£Ÿ‹Ê)Ǥ/Ö:wó½¯9¥±úþÉó}Õg\xP˜ü*“gÊïš¿)ƒ)ˆ X-f,…®•¯nÞ€Õï¶ÃbU°˜MŽúפIcB«Uã¯+éýuΛT4 k×­çí·&¡(ŠªôóX‡†VC£Õã”PN(· ÐP(,‰^kA‹Í™ù(uG`!’ì<ÿÎ!¦`¿ÚV1ΜI±ÍÕSHVÖ%’OŸ¦NÚù딽ÕŠáøñ“h´G hµÜc˜œ\€ÆÇÇ9î)ë°ÑŽ Ð]:œýòE1[tX­ÎŸ§»×%44”š5cÈȸDdX¬¬V[–™u‰ ç©í£©; Óh4T !=ãƼ<ÂÃm'4“ÑhÐé´’š–†Uš‘Q•bžÀkÇP;<˜)ËÒ¯I,ÿwcSŽ^ÈfâüÝ„èu<Þ«!Q¡z^Z´›OÐ1!’#Û9uõ'}ˆm*«Æ~x˜7Ç„“g5Ò§c¾[öë`Çü%€¾ðxû»~pIQ±\Ê=çX>oË<ÞùÓ6]DPNpµ ޤä£ö%ÿÚë+îÐðìàÿ!ç‘;ûaÀvŽÞrÄvÂ]ý¯r•…ÏônГú‘µ™µûw¶ŸØEHH©ޱ,ë:Rþû7ß|ÿS0RêÍ7ßÀùÿLtÙ"Xž Fö)>|ü%ƒ½¿XK]aéøûË/éóÊ:mïA—Ûøù½Ph4QOä.¾ÉBG†?;“¯_¾ƒèæ#0ͪþÎT6%€V«Åj!::‚ÔÔ ’4,sþö}=FRƒDöîý·XºœœRRÎ’Ô Ñç{ y`-al+õ¢¸ª´d›2ê?$†Ø^Oÿd :soPûmVYFZ)Ôž‘£ëiþ-[ÆüarMZÌ…~C0ù=Á›ë¨K<òðX¦þ÷]P kWۨכ·leóæ-Üu×HLF# õQÅmúg&:ÿ˜f¿dwWwÕ¦»Ò•cwÐBA`þgb¿~Õh,è4¹hOÏA©{;f%­¢u¬ã/¶.™Îµù칂›0óò NiKzî‰êaaT ãБ£…ZmÛ?}úŒ#ÍʺDròiâòGñò¦%Ьòsኺƒê°9Öî^W¤˜ØXvîÜAXX¶–¹<+:YÙ™€ïƒ@€À@=5£"9Ÿšæ˜"×`«‡z}™ÙÙ(hˆ‰Ž$0Ðw£ýy#H§eêÜýÝVîý~Óno‡º–m$48€ üIãïêTƒÑBDHù•»ß#£Yù•mhümùSB<ûYÿ‚›’•›Ø1e‚ßËQ;,–.:±ûÔ?Ô‹¶ 24oË<Þüó‚€ ¨pb«EAœL=G—Fü2G`a/ý¸‰‘7¶'H âò>K³vJ£¶%Ð’j4.6àŽ»Óö†›ùtòûŒ}î ÇrûëKçÓªö–¹_Îeðýw‚¡ô?Ó ö*ôt{ßMÆÐv»LSš¢ Â½¯=ÅGOM¦f³[IÙý#w¿üU™ò¯—2R +1ÌË3’™™Mbb÷¹¡(РA"ŠmÛ´.9‘$&z=DKá{í? Z ãÓ È:WšªäPì­sØ{þâ˜q†²wU4ÇdÑòß[éÇÞ5—ø: 7$+—βût2OßÎò)÷s1ËùÞÙ!C^ïgÍæÍÉo£ÕhhÙ²£GßÍÚµëèÒ¥³êô% £¦Õ\mº+[ù&-l£¡±=4(h­h/üXQânÁªÔ@£èÑj š¦ýÅyä/Û7,8¸ uB“ÿÍ0òœÒy[©œZ ý:—“kûCž“cû×þž7Aà¹sç ß&ºç?þlT²XµX­^7œ!c^å…qÃKl ,ü~EÒét$$$rîÜYâââ°Z­˜Í2³²hï>ƒ2Òh4„…†¨$ÇKjÚEÇ*“ÉLõêaD׈,6?`EТ6ÝÚ† ¿ì¢Ë»«x¨[ú4Ž!N«!ÓjæxZ«^à¦VµË5,:åƒ.>dû¥±{)ƒÁøË[½žæùUÿeýÁM|‘óÕ‚hßÈvQ‘{‘Œœ<’ÓNÒ¥Q'¿ÌXT‡¤L X6õ  ÏSï³ò'èdëBS^-®|:ù}:·MäÓÉï;–Ù_wn›Xq+$#Ë’ ÃÞBW’tjxz²=€_™Î=_î+ó¶ôº 6£d¯Áb±²kv• ÁÖúQ4´˜meffçzZ UÛPl[:zô8 H9{ÖÖó§Ð=J~O EQh˜àeP¦{VøÚ¡¤–@—ƒ ˆJÁ`¶]¦Ûƒ@£%Àö¼èŸ äš=¹¤·w-¨cy¥Ä”ó¾}‹U¡÷5]€õô}Í6ÝÛ²É÷a±*dæ»NíÝ»½{÷*–×wßÿÀ­· U¾hº»îYâò¢Ô¦»Ò•[¨ aå'²6DOËö½iŸBhH5ÐV眹9ÿ®ý=Gב‘]ø—?Ï©þÛžè´æBjõëÅ‘žqÉ9—uªp‹`áî¨V‹‘'O;¶éí¼„‘‘‘¤¥¦R-çŸE;<ÏÍÉ!*: _³XuX­ ƒôaðÛ/MV«Bl\ëîx=x@_BLV÷ºMvV‡BQ@ #&&–ðpßNŸQ”F£!((À@=áaaNïiµÚJü6¼}]®IŒâƒU‡ø`Õa^Yì|áÙ¤Vu:Ô¯ÁU1a¥äàú Ðrþ {«×Ó¤´?Ç[g°òà&0œ´½ ½uâë_ö{  Ý´{Ñô^çÖ¿¿Þy‚°ÓØ<ùV |[KÓ»w[ ééôîÝÖ±ÌþÚîº dy¹çË}ü2±ß}0ËmÚ¡S·”ëö¼ 4Õ®ÆÚÿVØ@óétE©`nnÁÀk:Žˆˆ(22ÒËìs¨ju> mlW$&P»V­RSüöæž@œ¦hÙÜvϽbµ:=/¼Ž¨ÜòÌZÞyÌyð¨‡îÿ£”Ô4œüRà6i¦!“E¡EÝZÔ½G‡Ù–ÛG#Î4¨®LíÚ¶¥ÝÕm¥òUåÞqÿ›N¯óòAÐ²Ï ´,¯Âä«U+†””³>ñžJ.v[«Õ:^§¤¤]ÝûíÇÆr¦ ßää³è´:’“ÏÚ¶yÆ»mÚçúKMMU½Ntt´Ïç°*~Ÿÿ¹ÊÔ•'È©W?zõ*dÛÆi"øª At5Þ¿¥5ïßÉé¹\Ì5 ÕLxpÅv_í÷ÈhÖ~Wò|€å©vX¬­¥¯øžå*)BÃæÉ·ÒçÅ9Ž{;$Űyò­$EؾƒÝضó ìØ° XÀgHO§mç¨,w£ù"¸«ŒÛÓ…õ'ÍéoH’íwû÷¶UŸ )þ7-"¢ètI¾¥(pöìY×ñFrr²w\æªZWP€©S§û%_{ t‘™&Jd²h™4a€‹ê§R9Â6%Ž´ÐUåVFö¹ËyûQ5"üÔyê¶[GVtD9‹¯B|Š.†CÑ®¡Â.›Ø»¢‹Q*˸G]ÞóWY@!ŠŠóÃàa•i{UMU ýJ±`ëÞ}ýÇ}vÔUIWt(„B!Ä•B«ÕæwCV®È^™ZÎåôZW …B!ÄeÇÞH+  ÕjˆŠŽ"//àà ®ÄÁÌ Ñ5kÊÜ™H(„B!.3Ò´¸} ­ZµaÃúõ4oÞŒààà*9ÏgYè°˜-ìÞµ“kûöÃh4Vt‘*\™‚ÀŸ~˜éërá5©—¾!ÇQ\ɤþWnòù5$,YPP›4#¬zu6¬[KjjêÓ"¦Õj‰Ž®Éµ}ûѰáUdggWt‘*\IÃ0êÏœ9c ÔK#¡(ݾ½»éܵé+º(B!„€€jÛæ¾Âî³Z­FŒyyîWaF“™:uê rœüGv¡ç¹€A"=Q&Íš·”P!„•‚Üÿ§^^ž¼!¼#A BQé)öÿݧ+H.„B”èÊH!„B!®p—MKàÙ”3ìúgGEC•VmÚV™²VF­Ú´¥Ví:¯W•êˆ( ß!„B\ÉÊzíëJ•Ÿ'°ð…ýí#GUpiÜ+<Ñ­?>Ð+ÁòeKõǯpéÒ½'õê'øµ|Â7Nž8Îú5«¯åû"„Bˆ+‘'×¾jç T9|ÈÛò{%©áUÅ–Ù/îoqW”È{?ÏúÎñ\.p=·|Ù·ÇÍ^G$ø«Ú$ B!Ä•N͵¯OƒÀ#‡Ñ¡Sgî‚ç¶lÚàÚ/îo~g–ÊwæÌþ‹[O¹ú2Hxy*Ê÷E!„Ww Ú У>Ÿi©¼*tYEE×tz}¹€€c_ìÁ \تӯÿŽ&òÂÇLÀËW½ú Ô9Ê)”ï‹B!®¥]ûzªJª(Êe÷vÇHvý³ƒåË–p6åLEb!*­zõèÒ½§|_„B!€¹?ͤ•Ãû/"…“´^¤UP!„Wš’®}=Ue[•+àqËí#ØõÏiá­‚ò}B!„p­L-EïÑó‡Ÿ~˜I¿þ7–ú¾R¤ðéCJLwݘ_}Z®ò6ô¶áüòól@Z8„p¥^ýèÞSZ…B!Ü(swЊ$Æ¡„® ýÆ,pz}péxþ˜>„ëîŸ_^¥ò‹¡·ÞÁ/s~*ß…mtÍUéR/œ/—|ÔXôAO—ï||µË÷Eå% B!ü©*^û–¤LA`á Ï+JÑЬhQ¬ äOz¡C£I¨ K¦ß cæùlÛ999Œ?ƒÁÀƒ>H¯^½|–win¾õæWÒ@°h«lQMI3‘ø/5®{dE‰Ë.Ï¢zJ X…I („BªŠ×¾E•)tÕM³Ü9h&³‹¢°dÍŒF3C®mN`h4 ëÁ‚OoeðC?«Î~ý† \LK+ñ½M›73pÀn¾ùfÆŒC¯ž®[–‚‚ƒÏó Õïuó°Û™?÷'àò¼°õgE/̬h°–ò¥ ¦ARKU`bb"sæÌ¡C‡þ(f™=ýôÓ0yòäŠ.J™®EOŽ®Þ+LA!„BTvåuí[’*9:(€R¤-Ðd±×wi °X!ªÕ8[“  ¬z¶Ø:®lÚ´‰#GŽ”ø^FF+W®dÃÆ tìÔQU¾ö VFƒÁ @ppˆÓr5ù v¿Îµ³•åÂÖW¸¼~ 1[´XKÙ”ý‡ƒÄ¤Ì}çZ†=Ur‹!Àk¯½FB‚ºÑGëÖ­Ëüùó+]ÀXY9}/JyB!„ð‡ªví[’ª9f«‹þÜx£ÉŒÁ`¢}óxÎ~ÑÏ‘æªÞ“Tç?~üøRßÛ¼y3&LàÑGÇQ¯^=fªPÅñýàÕæsÓ-·ñÛ¼Êú«Ÿ²?™¬Z,–âË5ˆn=Îñz×þþ.ó¹ûî»}V&³ÙL@@•ý:ú«ï‹ !„—ªâµoIªì(ŠÓÃhÒb±B¾k3F ¸š ϵ纩»#[¯,÷í£m›6Ô«[WUúÜœœbÝØ _Ðj4rsr<*ÃMCo•áðËÈdÕ`Ç#ùB¯|½Žã¾ ã¸/°Xm-É&‹ë__Ù²e µk׿í·ß¦[·n4lØáÇc2™xä‘GHIIᦛn"11‘3f8Öyë­·èØ±#mÚ´`÷îÝtïÞ°°0ùúë¯Ýî϶mÛhݺ5‘‘‘ 4ˆôôt§÷O:ÅàÁƒ‰ˆˆ víÚLšTðcHíÚµùä“OhÒ¤ aaa<õÔSœ†ãïpúçèuÇm¬|©+_jÏÊÛ³ò¥ÅòQóßÒeËèÛ¯¯Gëääd—ؤ«ÑhÈÉÉ.S9&¶e`²h±XÇãóëX²í Œ¹šÆ\MçǾÀbU0Y<ûzìØ±ƒÕ«WsàÀŽ=Êwß}À'Ÿ|BíÚµùí·ß8vì˜S âæÍ›Y·n»wïÆd21xð`n¼ñF.]ºÄÏ?ÿÌã?ÎÚµkKß“‰¡C‡rï½÷’––ÆÄ‰ùá‡ï[­V D‹-8þ<Û¶mcæÌ™Ì™3Ç‘æ×_eãÆìܹ“o¾ù†;Ï?ÿœsçΑ——Ç´iÓÛR[>‹Å€hÔ¨gÏžåܹsŒ;Võ±,ÚyÚI („BQ êö?+rh´è°X¡sÛ«ˆ `¯ˆjo{3 âòoÝjrÇp§õ=Ñ>onQ½Ù÷ïgÛ¶m|9}zñ!JËÊ‹|ß<ŒóçÒÕM󛾡_b ,û¾'¦Ó=œÏ0:Þ»ºy;V¿Û‹UÁè¦%°¨qãÆ¡Óéèׯ;vìp»ÎøñãÑëõlذ¬¬,žþy´Z-;väÎ;ïdÖ¬YtëÖ­Äõ7lØ€Á`à‰'ž@£ÑЫW/®¿þzÇû›7oæèÑ£Lš4 NG\\>ú(sæÌáÖ[o`âĉԨQƒ5jУGZ¶lI“&M6l›7oö¸|7n$%%…)S¦8º¹véÒÅ“ÃésÒ5T!„¦ÊE[Œf-«Â¦Ó¶qmLò²lmV@«€U“ÿ/Ž6P“EQݲ’’¨Q£˜òöÛzÔ"Vbz{‹GvV–꼊4äþj1ÒÓ IDAT›C.l]Ë=´˜úw¼Ì‰_ƒN÷`¶¼g¶:ÆÀèaK`DD„ãyHH©©©n׉‰)˜#æìÙ³Ô­[­¶`» lݺµÔõÏž=KBB‚S«Yƒ ÏO:E^^-Z´p,3Žî§`ëj\ìu^^žÇå;sæ õë×/ó}Ž¥µøÙ¿/ei  …B! *%ŒjU4thÕèê˜M ä]«µ Ó«#øÓÚ–F“âvTÎììlfÍšÍûï¿Ç‹/¾È€<i4,¬z±{š  µ_Øfee–¸¾‡ eѯ¿U÷ÂÖßÃäž_õµÚ·`hËVÌžÿ*çW½K^ï+—βët2OßÎò)÷c¶ú®·´š}«U«§NÂjµ:­'NP«V-—ëœ;wÎiÙ¹sç¨W¯` ðj֬ɾ}û¼>¾ž”/..Ž“'Ob±X­£j òJû¾H („Bˆª¬"§ˆ¨²÷¢8?ÌŠ–éï=Äô÷Dz}éKÍVȺ9i•ÿȹ˜ÿ<Õ¶<ç¢-R|¸Ëu¬V+‹/àØ±c,\¸Ðñ~—.]ˆŠŠâ•W^!7×65ÉÚxÂ]ù¦OŸÎÒ¥K¸æšk¨U«Ï?ÿ<ƒ“ÉÄúõë=Þ¦=Ø+íÁ²’{…BQ‘ÊãÚוªÛX¤àÙçÿçôúð¯?CöEÐj°EI[K t ÌæÒ»ƒvíÒ…^={R¯^=¯†©‡‚H?óÒ%G™—.©žüZ­ƒofñ‚ù€´pvbáó„ŇðÚÄž„Å…rráó´îô*­ëßÈc·Š‚Åj«/fï tåÙgŸeüøñ<ðÀL:•x X½^Ï‚ ;v,o¼ñQQQ¼óÎ;tïÞ½Ô|õz=óæÍã`Ò¤IDEE1pà@ÇûZ­–%K–ðØcQ§N¬V+7æ7ÞðxÜ•oΜ9tèÐn¸­VË¢E‹xôÑG‰‰‰! €!C†¨¾/°¤ï›?AiB!Ä•¨ÊîFS1ZÈËÆ¢Ø&‚+z/¡¥„æº| &©Þž+™—2JÍÇÕ{e5`ð/ø [‡K‡©Ñ¢é§.ñòÔÕ|Ù¨5ê'‘µaW~Ðgc1·Aà±cÇÏSRRœÞûÏþãôzäÈ‘Œ9ÒiYÑuZ·nͺuëTìP:°}ûöRßgîܹ%¾W´ ³gÏvz=vìX§Q=]•ÏÞ h—˜˜È¢E‹\–½$®~ ñÅ%…I („Bˆ+Q• Ý] Žøx?ØÖm>w¾Ã£ÉÞ«Š aÉB í’í§^ÏkÑņóÀ¸[ÐÅÖE«$ùØ~½3{®äÿV€¢Áy˜q¹’@P!„W¿¯ÿgb‰Ë_zcªWùª˜eÔ祷Žx’OUuà›Xºð7@.lúL`ÃŒwˆöÎ=äXþFgu“˜W”S§N•Ú%tÍš5Ô­[·œKtù‘@P!„W’*ÛxY6ßùÁ ³tÑàʾ°ë<š¸J앦nݺN]O…H („Bˆ+E¹ïMûÚéõ“ßëužª×À`–-–@Pw$B!Ä•ÀoA`án …ƒ¾¢aÙIè‰þ±lñBvý³ƒVmÚÊÅ­¥(Ê÷E!„—£rïê‹V@ðý(W‚ëo´MðûÛˆra+DÉêÕO ÞÈQœ¿¿¢‹Q!¢kƨzxKZ…B!Dy7n;wîdÅ_ñÆë¯³léRvïÞÍ3Ï<[ÑEs"òtí¿ªÓÞЭ©×Û«L !/£ÑˆÕjE«ÕHpP_·™zá<Ñ5cJII£ÑzÁõ¤›jÈè ¢"ÝðæCŒyÌ÷õkÖ©à]Y&̘B‡¤Œì>°¢‹R!Ôîÿk±åÈÞ½û¿”Ã]þGΞ⵹Ó8qþ4a!¡üöÌGªò}ü›Étm܆;ºúfä¼_6-ç÷ë™6æ%Ÿä'¼ãëÏWˆòп^ýu"""P+‘‘5øùçŸX³fME͉E´íÓÝmšyÿ!îø´×>½Å”†cY‰e»Çëí¹bÈËÃ`0ìXf4  @§óë¶S/œG£Ñ }‚´–·Ÿ×/ãÏÝøôWœ–ÿ±sF³‰ízyœçøìŸØú(z:7j͆õU‘Ùú(}þ¬|õŸåi·ô…Ï0šM\ÿÆ>Ï[T þ¬_¾Ê?)¶.Zÿ:¹Ëæê߸ªV=Þýú€+ëÒÄÛÏÏßõË[•½|BøÚ!C°Z­NÝ?kÔ¨Á€P\t õ×( ¥¹²Î´*-ž9Çmš¯~Jà¾Û{{œÿŽO[Ðkü\”¼ÓXÞãçbƒ4@áhÞËèûÒA·£–ÑhD£Ñ—gk­Ðh4èõz´Z-¹yyyX,t:AAA„ }¡h èˤ%°ˆMÛ1þÆ; ,8íK>§¿ÿȾä#„s}›®Nõ%Ë˳>`óáÝ$ÆÄ©>~y&#ï-šÁßÿnÅh2‘Ï37ÝG£: n÷[Mýò¦þ¨­¿®öÕÞͼòÓÇ´Kj^¬»¦7û¯&ÿ 3¦°íÈ^öœ<Ä{‹f^-LuwP€³©<<ýu¥§UýƼ8ôA¢«×ÜߌœLÞüå ¶ÝKƒØº´IhâÈ÷dj wô<³ŸJí¶-V ·ü÷ ž|=›µw[6WÇOÍççªþ«YßUý^`-E°>ŒÜ,îì>/ÿšGbl<ï~ŽÎí÷ÃçWo>_5ç/Wçw痢ݩÿعŽ«cæ¸Én?_µå¢¢ø<lòÒÊ—ï½·¯7åwµüxK\ß—2ïõF }æ-§eAQÐjµh4 ";;Nçh!Ðjµ ŸàûàÏNZËÏÏë—qK§ëÐi º'ÆÆsgA¼üã‡(ÀÿÝ>ޱuUå§( [ìáÁ~·•šæ³?~d×Ƀ¼w÷³h4Þ˜÷Ÿü>› ƒF;Ҭس‰ï}‘Z5¢yaÖÌXõO ¾‡ø¨Z¬|õUÝ•VìÙÈ-®ãç ï’mÈ%%#Uõö½UZù¦ÿ5—‡v2iÄãTeæêßxåç™6æ%Ö®G­Ѭ?°ƒëZw`È §i\·ë«ÙõûPòúî¶Ÿ—Ë]=Ñ$®9yÞ[4ƒi¿ÿè8¾)é˜ðí·ïÍ3CîÃ`2²|çz§m/Ú¶š§ßÃ}}naòüéªÀüͲóÄÞý‘¡áìM>Rê}ÌE©©_ÞÔµõ×Õþ÷jÞ‘•¯~ã¸g¯(oö_Mþö ðáé¯scÛîÜÔáZÕyÛ-Þ¶š—†¥~Lï-ü–·ý’)ùA†»ãûÎÂoÉ2ä0ý¡×8•v–×ç~ê8?Õ‹®M“¸DþÚ½Ñl;²‹ÕB—FêZM]?5ŸŸ«ú¯f}wõûBæE¦y™—~ϯ›ÿbÚ/óä7“Ù{ê0­«:?øâüꊫÏ×]ùÜÜ_Üq÷ýP{~¢"ø¥%pë;έhíŸ*[‹YEÓjü›ß—òK‘@°°Ÿ¶À]ƒö·­õk9BCCm]HZ­ÖñÐëõX,Ìf3‹Å‘^¯×ûµ<¾&-åc÷ÉC=—ìøãl÷ñ²YdrÑ} f‹™¥;þfÅñN·yfrÈÉ3]âûŠ¢ðûÎu<9p4ãÝkÿ]ð5O ¼m~ërïæ¨] €žÍÚ³`Ë ÷/6<Š»{Ý@H`05Ã#Uoß[¥•ßd63oãLõ4Íâ“x|À(N~˜ÓÏCÏfíù{ßVG¸æßmôlÖF£j}WûÖW³ýíz:å3´S_¾Y9ßñzÁÖ•Ô¯Y‡Gúw,kx]=§uº7½ÚÑj3àêž,Ù¾ZõñKÍÌ >ª–ã—ýžáî[Ô*¯úSÚþ«áÏý÷•ÍÚÓ­i;è{+|ù—r²¨êòøŒy¬ùwÿ5‘„˜8bâèÕ¬'RSy_׺+‹·¯víÙD¯æUß·èíñsWÿ]qW¿êDÆT«.Íâ“HËÊ ^tmbâ9w)MõùÁçWWJû|CƒÝ–ÏÝùÁ›ã ®?_Oί¢ê{û­IeZoù²%¥÷e·Q¿©¶ƒh4Î÷¶í6—ÜÂÒ2à‚?Šá5ÿ‰bcK-Cj:[îæ×@0P¯'((ˆŒŒ ²²²1™LèõzÂÂB #''“Éä¸ÁÕ“_+i ,?­_ÊWwwt;´Ùm ‘aáŽaž|/³.ùd›9YdriïX–[—œ<éÙ—ˆ ‹ f~×!€`} “Ñãm5Íÿ#^–í{«´ò'§Å`22þ«7‹­“–•A\d ½šuàÉoß&ÏdD«Ñ²ñÐN&œ z}»’öß%­¯fûûOå“ßdòÇ~Û»2‚mTÉ–õ®r¹í:…ö#,8Ä£ã×§å5<ñídúüÿh›Ø„®ÛÒ&ÑûÑ¡¡üêOiû¯†?÷_­—ü5û·Ð¥Q&xÜéý„˜8Çóú1q(ŠÂé‹ç©­(.ozv&V«•ÄBë7ˆ­ëöiy Ÿ,›Í‰ g¨Ãßû¶òÆðÇT—ÏÛãç®þ»â®~èÿÚŸëÈ3UŸ|q~u¥´Ï×¾-Wåsw~ðæø‚ëÏדó«¨ÚâëÔ¦Uë6èÑy0 âæ*ä^@;¿É™VŠCÆO-1ýái÷ú£^«1ðÅRßK_T¶ˆ¿$®º^ûü~V¼Õ„Ÿ¶ðë(¡\¼˜Nõ°êÙºz^¼˜à5Ôb±——GD„o.LÊ‹´úß™‹çY·;3òï“(,2,€¤ØzX¬§eî„W#$0˜ó—Ò¼*Ÿ¦H‹Š‚ç?dØ/*‚»òÏŸøa©j4O¢zH[ïF§ HHËúT¯oçíþ»Z¿´í[­V^˜õ}Z^ÃëwŒ'<$”U{7óáÒœÒ=>E•Ò³ã×€Ÿø/îdó¡]<9c Ï ÃõmººÜfeânÿ]© ûÿØw1¦¯­‡QˆÊ{mÕ´¢Ú“è´ǧðs€ÈÐp:4lÁŸ»6Ð4¾!Á´.tß »òysüÔÖwJ«ßëìp±VAqw~ðÅùÕS…?_OËg§æøÚGo·+ú¸šÏWÍùUˆŠà— ðd¦±ø—TÞ`¯4ÙK&q4§ä÷N|·Ò¦†PòNÓ{‚­kÅÊwýfee£ÕhÉÎÎv,Ój´\º”IHHˆ£%0""Â/÷ú“´úßÜÐ¥q[—¿l6¬]¯Ô÷J£Ñhh—Ôœµû·—8IDµ0BƒC8z.™†µlù9wŠÀ`j„ª 4¡à"Ùª(uÁS»ý­Î6¯!ªE>Ý'Ò=¿»TQ†ÍÚñ÷¿ÛÐéèÑ´½cÕ¬ïOî¶þÒER3ÓÑmá!¡œ¸pÆ)MR­ºl9\¶ó¢Úý¨VþmºÑ¿M7Bƒ«±îÀv‚ ÒêWE×_µ¼Ýo¹ëz|ü|A8qþ4Z†:‘1„Wsy|CƒÐjµ¤¤_ ¢ší"ÝÞM²°ëZwåÛUó9}ñ<}Z^Sì»+Ÿ»ãWÚ秦þ»ZßÛï·¯ÎÞÖÏÒ>ß`}Ûò¹:?¨9¾Az=FsÁÀy©YéÅò)íó­èó«îøeR —§-äåOÚþ¶Ð›(:àªj¥?|aǧ-è5ö zŽý‚^%<”œCŽG¯±_¸ ½a2™ÈÎÎ.ö°X,舎Š"¦fÍ*‚´ú[¶!—ÅÛWs[çþ~Éÿž^CØ~lÓ~ŸÍá³'Ù}â Sû °8ýZuáÛUó9pæ8Ïgƪ_éÛªø…š+±Qh5VïÝ‚ÁdÄ\èXWÔn_«Õ’[—ÅÛÿæBf:™¹Ù.rUOÀÍûòÁâïØthç2ÒØ|h¯ÏýÔ)]ÏfX·;k÷o§Wó¯ï/î¶NhP[ó9™šÂ¯›ÿrÊcpûÞœ¸p†O–ÍætÚ9ŽKæ«ó|²}€…[W±zßVÎ_Jãà™ãüs|?u£j{´Ÿ¥Õ¯Š®¿jøbÿýíï·²nÿN¥žå‹?çÐ¥q[ª‡„º=¾!Átor5s6üŽÕjålF*íÞX,ÿîMÛqáR:+öl¤o¡énÔPsüJûüÔÔWë{ûýöÕùÁÛúYÚ竦|®ÎjŽo£Ú ¬?ðF³‰ŒœL–ípž'ÚÕç[ÑçW!ÜñyK «Q@ ZYG -<¼çÍuh;v?½Rú=·½P0hÌÏo>OÿÿóÏ¢V«Râ€/VkÕºÿ¯$Òè_ ·Ùn¼oÐØ}â2hT'wF=ÃçËâ—M §K¡ùƾîÞ_<“'¾y E±]°ž@ˆjÕ¹¿Ï0Þ]ø —r³=Â\íöŸx7“~ùœ_6-/q¨ü²z¨ßmë™úÛפf¥E"C×·®ß­V‹Åb¡m‘û‘Ô¬ïO®¶ ç…[äÃ%ßóÅŸs¨Q“¡úñËæ?ë×®Q“wG?ç¿ÿÈ=Ÿ¼H>ë[«o¥r·ÿ:_­˜Ç©Ô‚õAtoÚŽ»z òh]՝Ю¿£>zŽ“ î³ãÿó„w‰ òzÿÝåï ®îÁÌÕ¿qèì Ú$4áéÁ½ŽÜß ƒîáÍ_>gØ;O]½]·áx‘Ö `} Ý›¶cÏ©CŽfÔRsüJûüÔÔWëƒ÷ßo_œ¼©ŸàúóuW>Wç5ÇwXçëÙ~lÃÞy‚Ęxz4ëÀʽ›ï»û|+úü*ªŽ3ãܦɭ£~ê5Jú©QæÌc ¾ >ü5šHäíS9<í^š¼´ó…£n»‰FE×d˦ $5´ÝÜ»|Ù¿ÞHùÕO+0êVš„¹N÷Þ´9eš,^­e¯4rž€ûöî¦s×d¤_T½­K™™œN>ChX¨cYvV6qñu¯^ùû²­Ë—-áö‘£xkÎÁ¨h×A`Zê·i®«…‘<Ãýn£o«Î]!„ð‹ 3¦Ð²ÞUÜwí-]!D%P8&Zøë/efС€- ¬_ú#Æï8‚@û5èO?Ì,12šÌÔ©Sg ää?² =Ï å>Y|äíƒÃØZ{—wTYÕIPµþÊ=›ù~ÍBŽO&XD¦íã„ûdÿÕä?iÞg„‡À¢m«1[-<|Ý 騇U{7óÊOÐ.©9ïÞýŒc½ä´³Üù¿g¯{¿z¯jÅÔ»žr,Ï2äðâ¬Ø|x7‰1qLñ81áQ¬?°ƒ–Î"XHFnwvÈ—Í#16ž÷G?G€N‡Õjå«¿°xûj2 Ù´MhÊÄ›î#6"JÕö]•ßn_ò>ýýGö%!$0˜ëÛtåÑþ#TcWëLFþ·x&«ömAQz4mÏ“ï&80°ÕĘ8ŽKfÿécÄGÅ:ŽÏᔓ<øù«üú̇„W ;/—›§Œç÷½@³ø$—ÇGÍçë®þº;~ÞìŸ;jꇧߟO–ÍfˑݼÏ󄇄º=~ÔÔOOœJ=ËüÍ’Ï öî{=¸;?ùº|E¹ËßUýQóýwW?…§ÊË—-©è"ˆ Ô¯¿û_.etЊ•Ï=ñò¢ÿwû8ÄÖõYþó7ÿÉÎxôsD††³7ùŠ¢¸_1_v^.wõD“¸ääxoÑ ¦ýþ#öIùÔæ¿bÏFnét?Ox—lC.)©ôjÞ‘•¯~Ãk±åȧuâ£j±òÕoÜvÇZ´m5O ¾‡ûúÜÂäùÓ™±ê7ž|2/2mÌË|¸ô{~ÝüÓx™'¿™ÌÞS‡iИéÍeã¡Lñ8ÕƒC™¹ú7^ùùc¦yIÕö]• %ý¾Âàö½yfÈ}LF–ï\¯úøº[ÿ³?~d×Ƀ¼w÷³h4Þ˜÷Ÿü>Ûéø¯Ø³‰ï}‘Z5¢yaÖŽãÓ°v=jÕˆfý\׺+üCdX8Mã¸<>…•öùº«¿îŽŸ7û§†»úáÉ÷盕óY`ÿ»÷ÂCBU?o¿ß5«× X„V«%¦z¤Ó{Š¢°éÐ.æmZÎÖ#{èܨ ®îY¦¼ŠRS>Wûç‹üK«?j¾ÿjê§¢bTù p/í+º¢õS‘FZ+ÖÇËf‘eÈaD÷˜-f–îø›»72þÆ;}’jfñQµ-=Ã=;' lç|±6´¥  IDATS_¾Y9ß'eó$ÿØð(îîu!ÁÔ ÷ìbΕîM¯¦g3ÛqpuO–l_íx¯Nd IµêÒ,>‰´¬ êE×&!&žs—Ò0™ÍÌÛøSG=M³ø$0Š“æôÅóÄEÆx]¶[WR¿fé?ܱ¬áuõ|²¾¢(ü¾sOMã¸DF÷Â|ÍïF«Ñлy'êF× g³ö,ز‘WÏfíù{ßVG¸æßmôlÖFãÑñ)íóõ¦þúbÿÜqU?@}ýþqÝR–îXÃÿî}ȰpUÇÏÛï7À›#žp<ïØ°¥Çë—&;/—%Ûÿæ—Mb¶˜Ø®oºšÕkøljøkÿìÊZÔÖO!DŨòA §¿Š+´V¬‘ÝîæéÁ÷r1ë’ÏòïÓòžøv2}þ´MlBׯmi“ØTõúûOå“ßdò &#€ª®r…½ü㇬ٿ€.Ú0iÄãçß4ÿ"Øê F‚Cå Ð;þµ?×g2’œvƒÉÈø¯Þ,–gZV†O‚À#gOѲÞU.Ó¸:¾®ÖÏÈÉ"ÛKƒØxDz¤ØºääHϾDTX€ÓE{°>ÐéøôjÖ'¿}›<“­FËÆC;™-¯áõ;Æʪ½›ùpéªËðØw1¦ï­„º×Å“üíØþPtÔ?¥è$®%*H3â‡Ô­îãRиi(íøª]ßÓí>>M㓨ƖûÑéÒÒ²~#§ôjŽOiŸ¯»úë ®ö¯ìÕõ[À÷<Ç~üßÿ½ÈÑ"jçêø•Çñ)«k[\CFN ¶®dÝ j׋þm»;ººªáîüVø§þ!*Úe?ß·™„fý¾í×Gt»xiæn¿oO”´V k«ïâWX^Ñlr¼NÍJ/–&¢Zuú·éFÿ6Ý ®ÆºÛ‰®Ö?é"©™éŒè6ÀqáVÒ\€ZÆÑúQTi]7Õæï-{gUŸv±ŠªE>Ý'Ò½i;¿l?©V]¶v}/–«®±®Ö¨FhpGÏ%Ó°–­þ9wŠÀ`j„ªû!B£ÑУY;þþw:=š¶wì£Úã㎫úëz=ï÷Ïjëwýšuh—ÈÓƒïåÅYЭéÕ4¬UOõñ+ëññ·¡Õ¹§÷ÍÜÕc0«önæ—MËùüÏŸéÕ¬£zÞDBLœÛ<Ôœß*»Ò¾ÿ]?…®Uù¾ VE)ö˜ýî#Ý·©Ä÷|õx}TK&|<Ÿf÷O£ÙýÓx쎖~Ýž®¸«¿®øjÿÊÊÓúÝéªVômÕ™Éó§c±ZT?oŽOy ÐéèÛª3Ýÿ>¹ÿ%ôz¶Û§j]wç·ª ´ïE×O!„k—eK )ÏÀÂi4v*õ›v(a-õ†WŸíôzv¦mð Ïgɶ3|0æjz><¡=»[ÿ™aMù~åq’Ss½*‡¯ èP‹˶ú¾U¯ÝÕŠì<3k÷^`Ížó~Ù†´VmÃ:_ÏöcûöÎ$ÆÄÓ£YVîÝäx?@§ã«ó8•šB°>ˆîMÛqWAªÖ ÐóÂ-òá’ïùâÏ9ÔŠ¨ÉÐNýøeóŸÅÊñäÀ»™ôËçü²i¹ê¡Ú=É¿4£>zŽ“R¯íðÿ<á]ǽWÕªsŸa¼»ð.åf›"Âõ»`} SûšÔ¬tbãèÑÌypWÛwWþÚ5jòîègøô÷¹ç“ Òr}kõ­<îÖøº;xñLžøæ-º7mçÑô­ë7F«Õb±Xh[ä~45ÇÇwõ×ÝñóÅþ•UYê÷£ýGpÏ'/òÝß ÝkˆÛãçîøxKÍ÷Ëê$ðìûU§ww~óuùŠòEþ®¾ÿY?…®•ôSŒþÌ™3Æ@}A|xäð!:têLZê…ò+Y!QÑ5Ù²iI m7ÿ/_¶Ä15ÀÔ§‹¥Ÿ|oV¬XÁÍC‡1𡲂ëϦÍ0çÖÿ™û<³3G—}„%Ûΰïˇï=ÿÍÎby´kÉþäL² f·Û{þöfÌüë§.ø?`бV+,­à ðõQ­øï¼ÉÈ6¹O\‚‰ƒmÝm × ûëÛGŽà­9< £¢]i©ܦB!„—§Â1ÑÂ_¡Uë6èÑétªóؼqƒ† õxÛökП~˜YâTiF“™:uê rœüGv¡ç¹€¡ÊwU¥Ø wïÞÌÿe.‹>›Èñ}›KLWÒ£Þ‰¥ù%4ïÑÓ¹¯É=6ÔÿåÔê— Ì£Þ‰’ç&,)¿­‡ÒÈÊ5©Ú¶-’óQ¦ô÷<}ØîëöM^^•£”ãæÉúîxÚ(„B”›ÿ»Ö»×BQ—ewP;{ xóÐaÜøàÛÔoâ¾E0Ë€9¶/ÜS0„>B õŠhÜ &Ì´Mô{úøIvŸNæñéÛ¹©[—bù=w{s¾ûë§.äðÒˆ–ü½çÍëGP=DÏÉ 9ü¸ê8«ÂЮu `tßDÌV…?¶¥°õP/hÉš½çi™>@Ë»óþ¥vd0C»Ö#.:„lƒ™åÛSØrÐuðÂí=ˆÕsül6™¹&² Çñ‹Õ3´k=ÔÅlVX»÷<ýs€—F´dùŽº7!}_[Àœ·Fñ킃¥–Ñ^Î:Q!L[hK÷èàÆ´mÉ–©Ì[{’fõ#øö#œºã´~Ýš!|¼àV«‚V«ážë’Ø´?•i‹P·f5¼±ç3 ;[ò`:­†»û6àï=çY³û j‡qÿ Y»ç¼£…ñÞë’Øê3–!48€‡4â\†]Gm#•5¯Á‡¿í'$(€Ç†4¡~l5~Z}œŒcú7¤sÓš¬Üy]ÊW4‡m‡Óh›ÉÑR‚¬z±¡è´ü½û p8%‹§2ÛªW3”Èê,Ùr«¢‘cbíÞó´N¬ÁΣé(ÀÊgÉ1ZÈ1Z8š’EÊÅ\Îeä°óhõbªÙò*CùŠîóÎcCdo9”F¿«kS;2NSl?À}(-B!*¢œ§¯… ~ ?Þú'ÒÏЧQGî:ŒÄ¨ÚKKaóɽ,üw5;Sòhû›Ügä†Ñ\úPä+W®dÈÐaô»ïMj5¼ÚeÚÂ2 z0^àž7ƒÐ(`C§ TQæ+%ÿ hïÐÚ)/E³Åš¿m…Ì\“£yF3ÁúÀ‚r)J¡´[JÏ6:–…jIÏ6’g*Hs!Ã@½˜ÐR÷/$PKZVy…Þ?ɀŪ`4[ Ñ ÕòÔ-£ÞétN§æ:Ê–•çÈßh¶p±P™ &3ZmyYÊg2;ïs·æ1tkCXp«­«ªV[ò~¨!-B!„BðKøá–_‰­ñÿìÝy\õÿÀñ×r_¢" *‚xaà™¢æ‘%¦•_3ìúY™feeõ;eùµ²L³Ò¾æQ–eÞw©ˆf*â}â"r+(Çríþþ@VVaw–]\Ä÷óñð!»3óù¼?3ï™ÙÏ~ffy«ÿlU7ž=ÓÌÓ‡fž> ípÿûg³ö­b\Ç!fÕUÙå ºà3Sñk¦ø!"9EŽPTús Þ¼ÆÐ|õñpÝôÿ ¨tÙ:áTãÍA]Êò¯+zàIù÷®æQÏÕÒ‡º”N¯ïæÀµ¼¢JÛx5¯7'{½énNvdå¢Õj¹š[H®ºˆ©¿©t¤ô–¸ËÇ©½{Uâ»ùrÙAýørÅ R³Ô¼?¬ ­°JÈH B!„7Xüé [/%!û#» D£*a݉¼±úkîûf,o¬þšu'v Q•0²Û@²/±õâQ³ê«ì‰‘CJßÑSñ½Þ4å_n¡=å@Q÷¿×”'ßyuNêÜbÔ¹E¨ K°Õ6ÀVÛ€¥ÛWéþV•T‹á'a–Ÿž«.Æ£ŽƒÁ§gžO¹Fa±†¾¡-þž.tlÑ€Ø3™•¶ç|Ê5T*hݸ.Z­–ún´mZO×q;—RúvòÃÎV…V«Å«®#=]*ŒíMO1åF;LÒ%u¯ìl(*Öyµ­VK+?w¼ê:UÚ%äé wÙ—0oË2«Ô½dç:&.šn•ºË[±÷/Æþð‘ÉËUgü ¢Vòõ†ŸÌ*£¦¬ßÊÔôøÊT5?*3qÑt–ì\g±ò,­¦Ç÷À'/Ò{ÊhzOÍ… ëþd“!çR/2zλôùðOÅâå[kÿQšUÏRùW]ëçNÉ¿ÊÔôý»¦³x'0ê|,=[„¢UiXbËl§}ã æ?ùoÚ7bù‘í¬?± ­JCÏ¡D5«¾Š:öNôý1¾-î©ÒÏäÚB±š{'w`Øøä^)$'»Ü¬r¯’WPÌ’èùzq,‰žO®ºØ`'çz¯ë¦Þ6ü¹ÿ÷hÊôgù7Ä«ÂeŠK4|·îíêóù³yþ,ßu3—®VÚžâ ó6Æ1¨‹?¯=Âã=šr4!‹²Ž›F£eÎÚS4ªïÄÔQ÷ðÙsáŒê„«“]%qëw^ot MïærâS®qèü&?Ù–qƒƒiP—äËùh¯_V{s;”‘ÀšáÏûX·{•–}aî¶açÉýŒžón…ód\ËbÃ<Þu€9aVY ·?ƒÚY¥nK0'þS—Îë~dº"véϦC“~µê_²Ôôõk(>%ù[“Û¾ÖVÓã3dãäïÙüÞ!a„6nί1«¾Š® 8v¾ÍÃ*œ¦DA‘-ÞéÁ³/w''«°ôf¿Ò›A«%G]ÌS=Çè:‚K¢çóTÏ1ä©‹n©óýEu¿ýã~½ib’ô^ÇÄe—©÷ÞÍË@éÓ3?ÿã˜ImJHÍåÓ¥G*~%§y*~ºéÍ1üoÓ½×;ަ±ãhZ•âËQóêࢦ²íP Z`éöøJ翹ý+ÈhrO u-Ž^MŸ¶]t¯“¯¤³ùð.Fõ2ïRð›­¢C@0õ\ëX´\¥º¶ ¥kËP«Ôm Õ¿»³+aÍZ³áÀNFöªÚ½à5}ýÖôø„0GÚÕËÜßþÞj;¾ÖôýÇÚñY»~Q;Y¼˜x%o´hÙŸÇ«÷ãã¹#X³'šW}ϻ֡E‹¿‡7‰WRͪ¯¢ûÃ|›ßcò}cåuØmk2˜3óŸ §« Št¿òÿwêeV½w£Étr-MF­+"8œ9›~E]Tˆ-»Nä¹¾C-^ÏŽ“± éØç–÷'.šNÇÀ6<Õ#(‘\½šÅ¯LÓMðò%>-‰S—âñóðfê°ñx¹—æBAQ!_®[ÄŽ“±àíǤÁcháS:½ýx üö a­™1r’^ýWósùdù÷Äž?NPÃÆ„6 æð…8¾}î}Eõk4æo[ÁúÑ\SçÒ¡i0oƒwÝÒéÙy×ødÅ<öŸ?N3oB›¶2i½‹ßP|I—Sþõ[ºy˾­íÔ¼Ÿ=ýº^9][„²l÷f“;Æâ3ÕÅÌTVÆl!ÀËAὌÎo,,ßÍ¢ŽÅðóεħ'ádïHDpãŽóõŸ;2–?æä‡Ò훣ÎãÝ_fsö(^¾&寱ø­Ÿ!gSyaîVMš…›“ ¹ù<<}_™Lˆ_ ÑígŒ±ü3'~uQ!_¯_ÌöûÐjµD‡óZäHœuõï?w€c‰gørÝ"Ü]ÜX=i¶¢ò©Îýç±/&ðæà1ti¡ÿÀ¾çO0å÷9¬š4 0œJâ;‘tŽï6/åDÒ9œœ¸?ô^^0L7ÝPùÆ«ßØùÉ\ÆòËXýæÄg‰ýÛÜãgmgñËA×oÈÅËéØ`CXã–D'îã¡.=x¨KO¢c kÜl¸x9ÆõšU_U.÷Tò¯÷ •þS–ðTÏ1zq<Õs êÂ[ï ¼]ÿê¹Úóñ¨{*üWÏÕÞjqU÷?%äž@ë ðöcxÄ Ò“HH¿Ä°‘4óö7© Ï:õp²wÄÑÞ¯:·þ,H^šó©iåP¥·ÛËÄA£Y9iu]ÝY´}µnÚʘ-¾ÇW£Þæ—ñŸ1¢ç`½ÜëÕºQSðB¿Ç+,û«u‹ÈÎÏeÞ‹ÿaÌ}²66ʤúØúÿœ>ÈÔaãùqìT<ÜêòÁïß覱v!9ê<~xñ?Œê5„5”oˆ±ø ÅççѨ) øþ…ˆš²€¨) néû5#>=‰uÞ-ÓÌÏ­VËžÓ‡yë猞3™”¬ Zû¿ŠÀRñË_Cr òy:b‹_™ÆÌÑʷ›—êÍc(ÌÉ¥ÛwÝþhtèÁ·Ïÿ-˜”¿Æâ¯ ñU&¨QcÖkÀ?q7®øÙwˆúnîû6”m?s˜?À÷.åHâi¾ù3G¿ÃÉK癳ùWÝô#'5e!þAL4Ѝ) LîÊÿêÜBüƒˆKN¸åý¸äxBüšé^Êcñ¥de0qátZù6ãÇ—>fƨIØÙØêÍc¨|cŒÕoìüd.cùe¬~sâ³Äþmîñ³¶³øH`¿`%ž¡¥gcîkÎê#;èú¼:è{v&îgûé n¶JÈ€=̪Ï}®ßÛZé4¹´æ‘{­ë©î‘ÔwsçÏû(,.⇞áJÎU‹Ö¡.,ÀÑ^ÙcoV¾Sàd¨P÷ºOÛ.LX8ç~H‡€VÜÛ²¡ʾ¼JÎJ§DSB€·Ÿî½¦^¾·t+«?ér*ê¢BÆÍÿä–²/çd£.,@£Ñàå«{¿™·¿Å?äZ?J•m›ü¢‹ÅeÌæC3{ã†uÈó}ÃÆÆâ¿T»S—Î3góRN%Ó­÷›/Uªlû¤deÜ–üð)×ÙpsrVœ¿eKäWuÆgH¯Ž¼¶ð¿b£²aÏ™ÃL{j¢nº’íWUæÆŸ—C®:ŸfåŽOÞþä¨ÉÊ½Š‡[]‹Äi-!~¬¾þ~Mlhµ×;ñ<Ú]7_eù¡Ä¹Ô‹´mÜÜà<æ”oŒ9ç'c”ä—±ú«3¾2†Ö¯9ÇÏ»Å;ý›´ãxêYþ³Žg» !2¤‘!=(û>I ”h5,üg Ý}èßļ§É=x ´®únîz7¦DS¢÷ž¥Ôqv W¯»7§Œ ýo³+:d¨núÆ[[î3ƒýš±tÂçì>}˜˜3GxmÑtÞò÷‡Þk¡è ×°òÍY>á|ÚElËunl«¡£c,>%r ò¨ãt{FîkÓ…ì¼ÖÄF±+î ƒÂz1 CÜ]—¡$ª‹F£aò/3éÓ¶ =9wgW¶aÖÆ%ú1V²}ÊÞ®îü°Qé—©4ËX"¿ 17>C‚ý©ãìÆ¾³G±µµÃÑÞ¶MZÊ·Ÿ!JòÏœøk³V¾ÍHËÎ$ùJ:¶66ØÙØ’š•IÒå4‚¯lñü0ææü½™¹år;ÎO†òËXý·#¾ÊÖ¯¹ÇÏ»AµüXüøN3kß*^þ}:}Zt¢SãÖx4"þr 1‰ÇÙz:ÿºßéa³ëš;¡»ñ™D­u93Ãè<2X35jl|¦*ò©ï‰“½I—SiX¯Þ4G{{ ‹‹t¯3s²L.¿®K„vg@hw\\Øw@ÑI̧ž¶6¶œOK¢~³ÒŽoBºòßbòóhˆ£½GOÓ#8ì–éêybccCJVu]JOÒ—®¤+.ßRÊN­¶ÒKÈ3Sp°³Ç×Ãû¶ÅUϵ£{?ÌÓ±ýx +öþÅÜ-¿Ó+¤##z¦i¹²ÊX"ª*ýê2¯e1¬û@]ÇÕ”ßò²T~(Ù¾1–¿–bÍøT*!aì8¹;[["‚Ãu1(Ý~v6¶¨T* *0”æÆ_×Å W'gΧ%Ô°ôø|.í"ÎNÔsµìuÖàâèD/_þØó'÷„`okÇï»7áWß›:&|dH`Cö5íií–VÕóS™ÊòOi~«ßÜøªº›{ü¼TÛµ1ã:a`p1NðìÒš:”g—~DÌ… Ž`\GË>^ˆÊÈH`ígkcK›Æ-8žtö–i-5埸C‘wMwšTöÚØíDŸˆ%ýêeN''p(áþ-ëäàH¯Ö™·e‰)Äž;ÆŽû×mogÇÃú2sýOì=s„´ìËÄœ9ÂG|€³ƒ=ZÝòݛÑh4¤fg²õè“Úg Þu=°Q©ˆ>¾uQ!Å%%·Ìs,ñ ­ýƒ°·­–ï ²³µ¥o»®Ì~ö=æ<û>övöˆ?¡hYsóÇõÝÜqut&ö\é‡ÌÄÌVÅT~;ÂÍ,•J¶oEŒå¯¥X;¾ž!ÙuêŸ:@¯Öuï+Ý~666zû³þÀ2®eq-?W7ÍPþ™¿J¥¢_»n,ܾ’¸äN''°hû*ú¶ëb±û­-Ä/uû£éÔ†°ÀÖ¬ÛMˆ ñz(¼72’™³éW.]N#>-‰ùÛ–[¬|cÌ9?•©,ÿ”ä—±ú-_U÷osŸwƒj=÷òkM/¿ÖÕY…FÉHàÝ¡_»®¬ŒÙÊÓé½?´ëýˆ?ÁÐ/&àåGDHG¢ŽïU\®­-ó·-çbf NöŽôãéˆAºé#f¿MbÆ{¬ÊcýûÄx¹{0aম˜Ë˜ïÞ#л1Ãzr4ñÌÍÕTêÅ~ãdïÀg«$3' ow"BnÜ\?qÐh>Y1—¡_L AztkJ‚ ßv‹_‰º.ux¶ÏPf¬]ÀÕüÜ "bljXêxŸâ¸,_y-|šòÖgÏo,,_yvöL~ôfmø™y[–Ѱ®'tîÇŠ˜-ŠË07?@Ùö­Œ±üµkÇ×¾IKlll())¡C¹ûLÙ~¯EŽdꊹ¬Øû—ÞOË?sãÛÿI¾Z¿˜ >E«…Áaz?oPݪsÿÒNà¶c{iãß• lT*Bü”?ØX|êy2cÔ$¾Û¼”Ñs™ITñ IDATÞÅÑÞûÛ[îRGcõ;?)UYþË/cõ["¾ªîß–8~Öv}ÕcŸœœ\è`£xîì:vîªèÒ»êàÑÀ“}{wTzóí_›6ÐoÀƒºiâîU–“ås¢ìõO•þ>å§ËâLê˩˙’w5PaqOÍ|“iÃ'Ò¼Qk‡S©ÿm]Î…Œd>|âek‡rÛœO»È‹?ççW§ãTŇ÷!„5Eù>ÑÚU+h×>{lmm ,¥/fÏn yÄäºË>ƒþ¶d±Þgß2…EÅøøø ò¼ëÿrËý¨ï¼G¥ a"ùÀ»ƒƒ=/?ðG.œ¶v(zN\<˾³ÇPŸ–ÄæCë]2V#|x_µ¾>šx†—îÿ×Û4w}!„5ŒtE­'÷Þ=îkÓ™G:÷µvzò ÕÌX·Èi/ñÚ¢ÿ2(¼}Úv±vX7|x|°íFÇÅÒ¯)½o¦o»®·©Afö !„5Íí¿C_ˆÛLî Ö؆%¯N·v+ë°ÀŽ‹%_ßéîöö !„¨µd$PÔz2(D%nî¨Xúõîno¿BˆZK:¢Ö“{…B!„¸A:¢Ö“‘@!„B!n{E­'÷ %–ì\ǾsÇt¿TæO^D]XÀ¢W>¥‰§IÓ¿`÷¶ åÉ{o}̳°¼{ÿbóáøö¹÷MZ®²üÖeîþWÝ&.šNÇÀ6<Õ#Òà|UÍ/¥å#ùm–Ú~Ö"ç/ËqN~Åè<ù>³-Z§tE­'#5߇wQX\DdX/“–Óhµ|·y)î@«Õò@‡¼tÿ¿°±±ì… Þþبn-sãäï),.âþŸ¯p9cÓ…ùN]:Ï‹s?$jÊ«ÅPY~(Q⯭jËþgN~Õ†ú«“µ÷?k×oÈí:¿ eš¼^é´Â _X¼>éŠZOF­kqôj½ŸDH¾’ÎæÃ»Õkˆ¢å—íÞÄÆC;ùèÉqبløà·Ù4¨SaÝZ4ή-CéÚ2Ô¢eŠÚCòCT'kç—µëÖq»Î¯¢f’N ¨õd$к"‚Ù³éWÔE…hѲëÔAžë;Tñòkb£x´s?:ðx·¬Ý®è$õØxsðº´h¯÷þó'˜òûVMšÅöã1|ðÛ7„¶¶ÊåP©Ù™Œýá#Τ$ЮIKÞ}äÔ©€F£aþ¶¬?Í5u.šóæà1x×Už«'’ÎñÝæ¥œH:‡³ƒ÷‡Þˈ .*äëõ‹Ù~bZ­–ˆàp^‹‰“ƒ#Pz¹R€—/ñiIœºŸ‡7S‡ÇË݃³)‰¼0w «&ÍÂÍɀ܂|ž>ޝÇL&Ä/PQüS—›“+vv¬ÛM±¦„±ýŸ¤cP†ý–n¾ÞSFЩy;>{úuEë';˜ÇþóÇiæíOhÓV&mcùahý$]N5¿±õoLÔ±~Þ¹–øô$œì‰c܃ÃqvpR´¼¡øÁðúU²¢$,Ѿò—Ûýyx‹¢W³ø•iFÛgŒÒöç¨óx÷—™Äœ=J€—¯ÞúUrü1´ÿ+ßcõòåºEì8KaQÞ~L<†>M•5?—O–Oìùã5lLhÓ`_ˆÓ»»²ýH§>F·¡üP²ÿ™s|Ò©Á¶+© o?cùolÿ5ÆœóksÏ_†ò[Iû í߯ò×ç×;™Œ÷ŠZOžj]Þ~ DBz é—Ö#’fÞþŠ–U˜‘Bÿ Ý{­ýƒHºœJ^Úèò!þAÄ%'Üò~\rÿo´ ·~å—±ý×XùÆ«eÌ_ˆã«QoóËøÏÑs0Z­Vqù_­[Dv~.ó^ücî{”µ•ìíÿ`|ûÊK?ŒÅgˆ’úÁðöS’ÿ†ö_CÌ=¿–1çüe,¿ÍÝÿ对çWK+¼ðE¥ÿªƒŒŠZOF­ë›M¿£ÎcXHŠKŠÙxpÛŽîa܃Ã.›—@]—:|ðÛ7hµž¹ï²ò®áâhx4 Ä/“IçX`Z­†È°^Ä%'RîÄgm!átàù¾ñÒÿ>æj^ÎN,ßó'Ÿxƒ¿@ÆAä´±\º’Žo}/£e¯‰¢‰§/ ø—î½ þÐjµl>¼‹×"GÑÒ7€Q½†ðùš™9• €Þ­;ãß !=CÂY³ïÆïáõ gljXú·¿€'÷Ó3¤#*•Š¢âbÅñ{»{0²×`œœðt¯o´mÆÊ¯çR‡'÷óùˆ7iêåKS/_z…täBfŠÑ²Mahý¢týÖSïõ#û² j¥Eâ7¶~-±ÊKµ¯2¦ägE”¶¿Gð=ô `à==Ùp ZqŒ†ö_K”oLæµlü<êFNzº‡+^V]XÀöãûø|ÄxùàåKï68—–t˼íÿJ¶9ùQÝÇ'¥ m?%í«êñÇÜóksÎ_ÆòÛÜýßPþš»ÿ[š¥ú¢„tE­'÷Z×SÝ#©ïæ®{0Ì=Õœ«&—ãáV×äeBüY}ý„¸&6 ´ÚëÒây ´»ÉåU—¦^¾º¿›xù¢Õj¹t%'{ÔE…Œ›ÿÉ-Ë\ÎÉVt’:—z‘¶›W8-;/‡\u>ͼýtïzû“W &+÷ªn{^¿´ÐÅT¦WHG^[ø_ Š ±QÙ°çÌa¦=5(½JiüÁ×O¦0V¾º°FC@¹õÛÌÛßâ@CëÇ¥ëßS—Î3góRN%ÓÕ«ôR0cñ[¿–Ø¿ å¥ÚWSò³"JÛïS®7'gÅù†÷_K”oLŸ¶]˜°p/Îý­¸·eB¯_:hLrV:%šÊåwS/ß ;íÿJ¶9ùQÝÇ'¥ m?%í«êñ§¼ªœ_˘sþ2–ßæîÿ†ò×Üý¿6¨–NàÈQ£Ï»há‚êA ´®únîz7¦DS¢÷ž1u]Ü€ÒûºÆ|€ƒñ'õ¦ÒÊ·iÙ™$_IÇÖÆ;³2IºœV­'uK(? ´òÍYÔs­Så²T F”LY^ËËi‚ý©ãìÆ¾³G±µµÃÑÞ¶MZèͯ$~;û*ÇWYùçÓ.`[îIw¶ÕðÔ;Cë§:i4&ÿ2“>m»ðÑ“ãpwveûñfm\bR9Æâ¯lýæ¨ÍÞ¿ å%ڧ⦶U°iªº)=¾ÜüÔMSóÃØþknù†û5cé„ÏÙ}ú01gŽðÚ¢é¼=ä9î½×bu€áý¿²íc©ü¯îã“1•m?¥í«êñÇÜó«!¦œ¿*Ëo%í7¶+É_sϯw²j üùçµFç>|PuU/„ŽŒÖ AŸé&NŽ4ölÄñ¤stjÞ€ãÏâçÑWGg£Ë»8:ÑÄË—?öüÉ=!ØÛÚñûîMøÕ÷¦Ž³«â8ìllQ©TTò «±éÆ$¤'ëþ¾~ • Ÿú^8Ù;âhïÀÑÄÓô¸~¹©ú³ïì± §ÕuqÃÕÉ™óiI5,Ý>çÒ.âìàD=Weu•JEDH;NîÇÎÖ–ˆàpÝ?†fÇ7>$i´Z½ÆÊoTÏR²2¨ëRz’¿t%½ÊqTUeñ›»þÓ¯^!óZúÄýz>_ÈH6²”rÆÖ¯%ö/Cù£´}†ö?G{{ ‹‹t¯3s²·ÏK_ 1´ÿÞ.u]ê0 ´;B»ãê䮸Š:>õ¼°µ±å|Zõ›•æsùc1ƶÒü¨êñÃR*«ß˜êÞ¿Í=¿–1çüe(¿•´ßÐþ]¦²ü½]Û¿&“ÈZOFïlƒÂz³|Ï_Š?É‘ q,Û½™AáÊk0Ä/uû£éÔ†°ÀÖ¬ÛMˆ¿i£€666zû³þÀ2®eq-?פéÆì8Ë®S¹˜™Ê¼-ËèÖ²uœ]±·³ãáN}™¹þ'öž9BZöebÎá£?¾S\öCá½¹‘ÌœM¿rérñiIÌß¶(ýÞ¯]7n_I\r§“X´}}Ûu1éÃJÏŽì:u€¿O W뎺÷-?€w]lT*¢ïC]THqI‰¢òœèÑê–íÞŒF£!5;“­G÷˜T·%T¿¹ë¿¾›;®ŽÎÄž+ý•˜™Âª˜­‹[Éö³ÄþUYþ(mŸ¡ý¯E£¦üwˆÂâ"²ó®±éàN“ÚgŒ%Úoˆ¡ý÷vX»è±¤_½Ìéä%œÂߣ‘¢eéÕº#ó¶,#1#…ØsÇØqbŸâºm¥ùQÕ㇥TV¿1Õ½ƒùçW0ïüe(¿•´ßÐþ †ó÷vmÿš¬ÚF‹‹5Œ5WWWêÕ«‹‡G¼<½ðòòÄ£]»ÊoˆÛCFïlw@æµ,Þýõk´hy°COv{@ñò!~l;¶—6þÍQ©J/S ñ»ñІ³ß&1ãÆ=beñþ}â ½{^‹ÉÔsY±÷¯ ¥nlº!ï‰`qôjΤ^ ´i+ÞxèÝ´û=Ž“½Ÿ­þ‘Ìœ,¼Ý=ˆQþp†Fõ<™1jßm^Êè9ïâhïÀýío|‹?¶ÿ“|µ~1|ŠV =‚Ãô?¯Dû&-±±±¡¤¤D÷¨qKÅ¥ßä>Ûg(3Ö.àj~®Þ#Ö•?qÐh>Y1—¡_L AztkJ‚ ߦ+ͪÆoÎúw°³gò£/0kÃÏÌÛ²Œ†u=y¤s?VÄlQÜ>cŒ­_cû—•å)í«lÿÚõ~ÄŸ`èðò#"¤#QÇ÷*nŸ1æ¶ßX~ÛÍe¬~;[[æo[ÎÅÌœìéÆÓʯâš0pSWÌeÌwïèݘa=9šxFñò†¶Òü0çøa †ê7ävìßæž_Á¼ó—¡üVÒ~cû·±ü½Û¿&«è«FûäääBûýÃsgÏбsW.gf(*tä¨ÑüðÊ•¨Thµ º~¥²JUzÝîsÏ=¢èž@žìÛ»›À Ò›GÿÚ´~ÔMw¯²œ,Ÿe¯ŸxjŸ.‹3©#h,§.gfHÞ !„&úßÖå\ÈHæÃ'^¶v(B˜¥|Ÿhíª´kнƒ¶¶¶–Ò³g7ƒ†‡U“f0uù÷¸9¹â`gǺýÑkJÛÿI†têCÔ±~Þ¹–øô$œì‰c܃Ãqvpà•ùSiÜ gS.’I+ßf¼ûÈ Ôs­c4>ÀhùÆâS²ý:¶á©‘@éˆñ¢èÕ,~ešnz€—/ñiIœºŸ‡·ÞúÏλÆ'+æ±ÿüqšyûÚ´•¢v !„w³jëÒÉ5‚<Ôº¼ý1ˆ/…øð‰Whæí¯xùïÿ\Ê‘ÄÓ|9ò-T*/ÿž9›eâ QÌ9 €±?|ăz0¸ã}ŠËöóhHÔ”F/]·?š×͘>2må,Ú¾š× À[ÿ`Ï™ÃL6ž:N®,Ž^Í¿÷Ͻo´þÿ â’néÆ%Çâ×Lï½mÇöðhçþü>q¹ê|R²3È-ÈçéˆA´òmF^š/×-âÛÍKuë`çÉý|ÿü4¬×€OWÌcÆÚüçÉqŠÖ‘’ò Åglû)±íØ^f=ó. ë5`ò/3õÖÿk’£Îã‡ÿÃÅË©|ôÇw&å—BamÎÉÆŸeïcüËmSTk'Pˆš@F­ë›M¿£ÎcXHŠKŠÙxpÛŽîa܃Ã.«ÕjÙ|x¯EŽ¢¥o£z áó5?2!r$6*•á,¤Gð=ô `à==Ùp €¢âb–ïù“ÏF¼Aˆ_ ㎠rÚX.]IÇ·¾—ÁrCü9™t€õv Õjˆ ëE\r!þAzóz»{0²×`œœðt¯@dXO½ùéÜ—Q+õÞ»¯Mg|=¼xâÞ;ï?äªõFó*£¤üÊâ³Ôöëݺ3þ Ð3$œ5û¶W fçÉý|>âMšzùÒÔË—^!¹™¢¨\!„¢¦phòz¥Ó /|añú¤(j= ´®§ºGRßÍ]÷`˜7z†+9W-›—C®:ŸfÞ~º÷½ýÉ+P“•{·ºÕ¶Ÿr97'gÔE¥¾JºœŠº¨qó?¹e™Ë9ÙŠ:«¯whÖÄFV{½Ï¡Ýõæ ¾Þɼ٩K癳y)§’Îéâ*»T²Œßõ €o}/J4%¤deèFÌþ½t;O [‹P¦oRù•Åg©íçY§žîo'{])Yh4¼|uÓ›yûK'P!„0B:¢Ö“‘@ëªïæ@ wcJ4%zïÝ)lTúÏÐÒ¢Õ{½òÍYŠï±+¯•o3Ò²3I¾’Ž­ v6¶¤fe’t9í–N•ƒý-Ëk4&ÿ2“>m»ðÑ“ãpwveûñfm\¢7_‰F£· \róu¯>ø4Ïõ} çë÷ê™R~eñ)¡B4P«­`ž›F ËÖÙÛ¶67¶Où¿…BQ1éŠZOFk† FM^¦®‹®NΜOK"¨aéòçÒ.âìàD=WËu$Ë:y­Ö¤KLý<âhïÀÑÄÓô3¹^G'šxùòÇž?¹' {[;~ß½ ¿úÞÔqv5º|úÕ+d^ËbX÷¸_ŸÿBFò-óO»xãïô$lllhTïFž—]ZZÕò+£dû9ÚÛSX\¤[&3'KqùêybccCJVu]J;á—®¤W8oƵÒrË* !„5Eu\òiˆtE­'#w.•JE¿vÝX¸}%M<}P‹¶¯¢o».½л®6*ÑÇ÷ѵe(v6¶ØÙÚ]ÎÞÎŽ‡;õeæúŸp°³'ÀË„ô$6ú›÷‡þŸ¢ºCüY·?šiÃ_ÃÖÆ–7NDˆ²e}7w\‰=wŒþíï%13…U1[o ‘]·ãD,ŸÜOO_æo]ν-;àâhü~@¥åWFÉökѨ)ÿÄâ©‘äªÙtp§¢²¡ôÞíîaÙîͼóðó¤_»ÂÖ£{t÷?–÷ÖÏ_P¢Ñ°à¥©ŠËB!nK?ôE éŠZOFïlcû?ÉWë3aÁ§hµÐ#8Œ— ³hu]êðlŸ¡ÌX»€«ù¹·üD„!/ö{'{>[ý#™9Yx»{qý!2J„ø²íØ^Úø7G¥•Š¿ ã Rz æäG_`Ö†Ÿ™·e ëzòHç~¬ˆÙ¢7ß ðÞ,Œ^Íù´‹th¬{²¦¥Ê7ÄØöÚõ~ÄŸ`èðò#"¤#QÇ÷*.â Ñ|²b.C¿˜@ƒ:õèÖ2”F+…Bˆ»QE_çÚ''':Øßèž;{†Ž»r93ãöEVŽGOöíÝM`PsþÚ´~ÔMw¯²œ,Ÿe¯ŸxjŸ.‹3©#h,§.gfHÞ‰;Æ+ó§Ò»u'ëz¿µCB!j…ò}¢µ«VЮ}(öØ*¸Š¨LÌžÝ òˆÉu—}ýmÉb½Ï¾e ‹Šñññ äy×ÿå–û;PËô¢Ö3u$P!„BˆÚLQ'00¨9ûöî¶ÊèÇÍ£€B˜Jî B!„â“GogGP.¹– #ân6{Ì»r)¨B!ô(î–Âí霕Õ!£€Â\2(„B!Ä &=´|G°cç®ÕP™²z¤(Ì%OB!„â“"¢¬SVÖI«.Òù–"#B!„BÜPåß ”Nš¸SÈH ¨NM§c`žêiíPîhKv®cß¹cÌ9Éj1ÌÞ¸G{žïû˜Õb0ÕŸ¼ˆº°€E¯|JO+G$Ê“ãƒùD­äj~¯>øôm¯{ÉÎuìŠ;Èì1ïÞöº•¨-ûÿ¹Ô‹üço¹~ 7gWVORöÃéµ¥ýÖ"?!j= ¬þ<¼‹uû·›¼Ü•œ«|øû"§¥ÿÇÏñÂÜ)l?S VîÔ¥óôž2ú¶Öy· ôö§sP;«ÕŸq-‹ vðx×·L+˹'÷3zNÍú0¸qò÷l~ožµÃ°*kïŸÖ®ßVËœM¿òÐ_fд—˜½q Fokæ·’øíÒŸM‡þ&ýª<¸ífµeÿ_½šæ ³ü¯ùeügŠ—«-í·éŠZOžj]‹£W“t9U÷:ùJ: ·¯R¼ü¿ÏærîU>6¹/LaHÇ>¤_½R¡ +êÚ2”u¿õGoo—µ±Qt¦žk«Å „¥-Û½‰‡vòÑ“ãødضÙÍÒ6Z;,%ñ¹;»Ö¬5ì´R”¢º¥]½L»&-©çZWGgk‡sרòå BÜ)d$к"‚Ù³éWÔE…hѲëÔAžë;TѲ¹ùNˆcî Shé@3o½yÔE…|½~1ÛOìC«ÕÎk‘#qrp4;ö¤Ë© ÿú-Ýë²oû;5oÇgO¿®{?GÇ»¿Ì$æìQ¼|™:l<^¤Ñh˜¿mëDsMK‡¦Á¼9x Þu•åš¡åÕ…Œùö=ž¼÷A†têÀê}ÛøyÇZæ¿ô1®ŽÎ¼2*4âlÊR²3iåÛŒwyA¯³3uù÷¸9¹â`gǺýÑkJÛÿI†têc4þ‚¢B¾\·ˆ'c),*"ÀÛIƒÇЧ©¢éÛÇðÁoߨú–ËAm߉‹¦àåK|Z§.Åãçá­·þ•Úq2–!û˜´ @Ô±~Þ¹–øô$œì‰c܃Ãqvp2ºìÙ”D^˜;…U“fáæä”æüÃÓÇñõ˜É„øšU>Üz9⟇w±(z5‹_™˜ŸŸWósùdù÷Äž?NPÃÆ„6 æð…8¾}î}Ý<æä—¡ö+Ù?•´ÏP|†Xâø`lûš›ßkb£x´s?:ðx·¬Ýΰî-oª‹™©¬ŒÙB€—ƒÂ{Y,¾®-BY¶{3#{ VË?q™½ñœìÈÎÏaxHþ·u9Þ~|5êmìlmMÞ¿ælú•}çŽòÕèwpwv5ûøhŒ9ûÿc_LàÍÁcèÒ¢½ÞûΟ`ÊïsX5i–Áò3S9û~ÿê•Þ&S¢)áÑÏ'ðúC£énvû&.šÎþsÇ8–x†/×-ÂÝÅMw9¨¹Ç?cñ™{ü»ÓÉH ¨õd$к¼ý1ˆ„ô$Ò/1¬Gä-¹Ê8ØÚãhï@ìùã•ÎóýŸK9’xš/G¾ÅÌÑïpòÒyælþÕ"±ûy4$jʾᢦ, jʽxëöG3 C¾}þßhEÛWë¦ý°õþ9}©ÃÆóãØ©x¸Õåƒß¿Qƒ¡åyûáç™û×ï$_I'5;“ïÿü·†<«÷mêΓû™ð“G¨ IDATòøË¬xc&u]™±vÁ-õl;¶WG~Ÿ8ƒŸ^™FP£&Šâ_³…ÃâøjÔÛü2þ3FôŒV«U<½WëNDMYÀ ý¯°ýJ¶ï¶c{™8h4+'Í¢®«»ÞúW"¯@ÍùÔ‹´ºþEÃÍ<ëÔÃÉÞG{¼êÔ×›–[ÏÓƒXüÊ4fŽ~‡ÄÌT¾Ý¼TQ½AÓ°^þ‰;¨{owÜ!껹ìÛÌìò•07?¿Z·ˆìü\æ½øÆÜ÷(kc£*œ¯ªùe¨ýJöO¥í«,>C,q|P²}«šßêÂ3Rhã¤{¯µI—SÉ+PëÞ3”ßJhµZöœ>Ì[?Ï`ôœÉ¤deк\æÆì׌øô$rÔy&Å–qí ï>ú"4bUÌV¾}þߤ\IçøÅ³€iûׂ¨•üw/FLÂÝÙ0ÿøhŒ9ûˆqÉ ·¼—OˆŸñãKãhåÀÖ£{tËî?wœM ÝZ„Z¤}3FN"jÊBüƒ˜8hQSèÝhîñÏX|æÿît2(j= ´®o6ýBŽ:a=").)fãÁl;º‡q7º¬½¯>8œ™ëb;mÜÓ¬5½[w¤SóÒ{Ç´Z-›ïâµÈQº‘ÂQ½†ðùš™9•ª:›¦Ó#øz†„0ðžžl8 @Qq1Ë÷üÉg#Þ Ä/€ñG9m,—®¤ã[ßË`¹J–oß´%ƒÂ{ñßUÿÃÞÖŽûC»ØZ¯œûÚtÆ×À'î}±óþC~¡ZïÛTowÝ·ìÎNxº×WTæµlü<ê¾Yíé®W·±é†(ݾ½[wÆ¿AÃÒòCÂY³o›â:R³3ÐhµxVòø“atw j«7-2¬§ÞëG:÷eAÔJÅu÷ gljXú·¿(í°÷ éˆêzÛÌ-ßsóS]XÀöãûø|ÄxùàåKï68—–t˼UÍ/sÚoJû*ŠÏR*;>€²í[ÕüÎÎË ®K>øí´Z ÏÜ÷Yy×pq,Ýÿ å·!¹ùl8°ƒ{·P\RLdX/Þ<Ï:õ,€WúhµZR³2qkä¢8FŸú^6ô'Ä/Ë9Ù4nЈ¦^~¤]¿¿Pi~-ݵ‘wòõ3“©ïæ(Ë/sަÄW‘¿@N&`ýhµ"Ãz—œ@ÈõŽ·±òû·¿—õ¢uWl=¶—^­;aoWÚ}0·}Ƙ{ü3Ÿ¹Ç¿Ú@:¢Ö“§ƒZ×SÝ#©ïæÎŸ‡wQX\Ä=Õœ«Š— ëEà0öž9ÊÁø“¼ÿÛl"ïéɸ‡“—C®:ŸfÞ~ºù½ýÉ+P“•{·ºÕѤ[ø”;Y¸99£.*J/S2nþ'·,s9'ÛèIFéòÏöʘoߣ¸¤„þõê-óú]ïøÖ÷¢DSBJV†Þˆlðõ“ ©õ÷iÛ… §ñâÜéЊ{[v ôú¥]€Ñé†(ݾå?t:Ù;èÖ¿ReO—s´w0i9(}(ÈœÍK9•tNW¯)—¢ö éÈk ÿKAQ!6*öœ9Ì´§&Z¬|CÌÍÏä¬tJ4%”Û>M½|+ìV5¿Ìi¿)í«(>K©ìøÊ¶¯¹ù T˱pó¡¿™½q úäù¾acSõ‹ËŒÅW¶oæ˜T®ƒ½îÿ²¿ííì(¸¾•¬ÿ³)‰¿x– †iPçFœ–8>cNþ‡ø²úúkb£@«½Þ ŒçÐîŠÊïÓ¶ s6ýÊ…Œd|ê{±ãD,—;ǘÛ>cÌ=þŠÏÜã_m @QëÉH u•}kèݘM‰Þ{JÕu©CÿöÝèß¾=‚ïáÝ_f2æ¾G-kUÙ¨ô?ühÑ¿f図Ìzàˆ±åÓ¯^ærN6Z-¤feÐÔËWozI¹§í•=yïæ+vÊ> ™Z°_3–NøœÝ§sæ¯-šÎÛCžãþÐ{M·ÕM#¾7¯cê8»«Î×Ý›§„F£aò/3éÓ¶ =9wgW¶aÖÆ%ŠËö ¤Ž³ûÎÅÖÖG{Ú6ia±òUÜ´n*X5ææ§UÉ/K´ßPùJã3WeÇ¥í«j~×u)Íëì¼kŒXúó ãOêM3Ç}mº—ÚØ(vÅdPX/tè¡»TÒ’ñåäPÇ„ýÓ0­âõoogÇÌÑoóÞÒ¯ùyǺ[îK4çøhˆ¹ùßÊ·iÙ™$_IÇÖÆ;³2IºœF°_ ¢ò뻺Ó1¨ [Žì&دÎN´oÚÊ"í«îö+ïvÿj*¹'PÔzrO`ÍÔ¨±î’>søÔ÷F£Õ’_¨¦®‹®NΜ/7òp.í"ÎNÔsÕïhfç]#óZV•ê,û§1á^(½gÈÑÞ£‰§«T¯’å5 Ÿ¬˜ÇCá÷1´K¦®˜«ël—9ŸvñÆßéIØØØènô·Düu]ê0 ´;ï ý? ïÍ®¸&M¯¼\åÛ×>õ=q²wÐ{Š­éW¯y-‹aÝê>ø^ÈH6© •JEDH;NîgçÉX"‚Ãu—¹*-ßÎÆ•J¥Ý(ÏÑÞžÂâ"ÝëÌœû€¹ùéSÏ [[½í“®¼ýÆêWÚþÊöOsÛ§TU–ÈCœiìÙˆã×/ 8~ñ,~ -òÆz®uÝûa–Nø‚‘=³ýx C¿ÏÇ|GBú%‹Æ—˜™‚ƒ½î²vKPºþ›xúÐÒ7€7z†ÅÑ«9›šXîøhn|•íÿ.ŽN4ñòå=rO@aÍZóûîMøÕ÷¦Ž³«âòû·¿—­Çö°õè^ú´írËmUm_u·ßX|·ëøP“I'PÔz2xg›°`þ‡ø´$ÅŸäËu‹hâ郧{}T*ýÚucáö•Ä%'p:9EÛWÑ·Ý­'ª—}Ësßÿ»J1x×õÀF¥"úø>ÔE…—”_ˆÒoîÔ—™ëbï™#¤e_&æÌ>úã;‹-ÿËß빚ŸÃ³}eTï!±8z^9;NÄò÷Éý$f¤0ërîmÙAï~sê_»è±¤_½Ìéä%œÂߣ‘â醘²}ÍakcK›Æ-8žtÖ¤å껹ãêèLì¹c@éÕU1[M®¿gHGv:Àß§ЫuG“Ë·±±!ÐÛŸõvq-‹kù¹ºi-5埸C‘wMo99¹ÐÁ¾æöÿÚ´~JTØ£|`¿›]ÎÌôs¢ìõOàÓeq&uåÔåÌ É»;LAQ!‘ÓÆ2ù‘èsÓ7™µÝ+ó§Ò»u'ëz¿µC©Ñ ‹‹xjæ›L>‘æ ~@Tì[—s!#™ŸxÙÚ¡ˆZâ|ÚEÞXü9?¿:§*<¼I˜oâ¢é´mܼFÝ‹omeŸ?Ö®ZA»ö¡Ø;8`kk«¸Œ˜=»4ä“ë.û úÛ’ÅzŸ}Ëããã3Èò®ÿË-÷w> –ËAE­'÷ŠãÏÒ¨ž'½Ût¶v(¢†r°³çåžâÈ…»÷þª8qñ,ûÎC]X@|Z›ý­wI«æ:šx†—îÿ—t­ GÇΓû9Š:DX;aa5w¸O ‘{Å=ÍBøiÜ­†¨áî“/ L–W¨fƺ…¤feâîâÊ£ûÝu£í¢z=ÞÛÚ!ܵ&.šNRf*/vWüdÂÝF:¢Ö“{ÅÝlö˜w­‚¨ÅÂÛ°äÕéÖCQ æ¾0ÅÚ!ˆj$—ƒŠZOF…B!„¸A:¢Ö“{…B!„¸A:¢Ö“‘@!„B!nN ¨õd$P!„Bˆ¤(j= ¬^2’™û×ïçÉÎ»ÆÆƒ;oSDB!„ÂéŠZOF«Çµü\Ô…’‘ @ZvÅëoUÌ6²órngxB!„¢ò¢Ö“‘Àêq þ$ßl\‚¯‡7)YŒùö=êºÔáËQoéÍW\RÂæÃóÝóX)R!„BQžŒŠZOF«GÏp~ÿ†+9Ù¼tÿ°[:€QÇclƒ›“‹¢B!„7“N ¨õd$°úl:ô7vöüwøD¾Ùô ê¢Â[æY¾çO†véo…è„B!DE¤(j= ¬>M<}xëáç æ…~a«Ò?¤œ¸xWGgšxúX)B!„Bq3¹'PÔz2X}Ú4n®û»[Ë·LÿCF…B!jéŠZÏÔ‘Àwó´vȵBæµ,Τ&òî£/Z;!„BˆË9ù£óäû̶hÒ µžŒZǪ}[y(¼7*•ÊÚ¡!„BÔhM^¯tZá…/,^ŸÜ(j=¹'ðö+*.fË‘=<Ø!ÂÚ¡!„Bˆ›H'PÔz2xû¥_½Ì³}ÅÅÑÉÚ¡!„Bˆ›Èå ¢Ö“{o?_o|=¼­†B!Ä¡:.ù4D:¢Ö“‘@!„BQ“É=BX˜Ü(„B!Ä Ò µžŒ !„Bqƒ\*j=¹'P!„BÔdrO vsGÏ£§®£÷Îcž|º,NF-àÜ_GÈŠO£ÕN¸z¹[;!„Bˆ;†Ü(„…ÝÜL‰]AÂÿú‘ð¿~¤Ä®àÇZÊ=°wöFV?ÿ=WΦV8}Ï×øÜç>´y’)ª'(ÌQ›\Ç„ ˜_¥òçÍ›GïÞ½ñòòªpzdd$‘‘‘U*ûv0Ÿ‡‡}úôáÇäý÷߯Rù)))´mÛV:€B!Äèvß(—ƒŠZ¯ü_î¾™>þï½4œ÷^Nàãóõ-ó å6NXÀÕºwŸÖ›þUÀË|Ö°´ã—z8A7Ÿ©—ƒ®X±‚Þòþ²eËP©T¨T*‹\zúôi&L˜À¼yóÍ߯_?¦M›¦{ýÓO?lr|‘‘‘üöÛoUŽ[£Ñ R©ª¼¼B!¬#ßg¶Ñ–&@Që•Ý xaÉäææCr4öv68:ØBr4yyy\Xò„îÞ@aš&!t~yõ›yW8=tT/îyæ>\<ëÐùåt~y€I—ƒ^»v#GŽ~Ë´Ç{ ­V˧Ÿ~ZµZ­– 60pà@Ú´iCBB]»v­ryU‰¯S§N;vŒ¬¬¬*ÕSTT„\Ü!„Bã¤(j½²Ž]Æ¥xÚîhqv°ÅÅÑ´ÚîÁåKñ2X­‡vaàìgiؾi…Óïûð ú~2 w?Î~–³Ÿ5©˜€F£ÁÏÏÏ"1—¹zõ*3gΤeË–üßÿýݺu#>>ž+VЮ];‹ÖeŒŸŸZ­–„„“—MIIaË–-´iÓ¦"B!Dm#@Që½óXK.,y(Ûºpí$“Æõáõ—zCÎ)°­K±VÃ…%OàÑ@rsspvv¶h¹‹-b„ <ú補;wŽ÷ß___‹Ö¡”‹‹ p£­JM˜0&Nœhñ¸„BQûH'PÜR.œ!ìÉáp9<#˜6k+ßü°ƒÿgï¾Ã£ªÓ6Ž'u’!! ¤ UŒ ˆRDEDQÀB)*¬«¢«(bY]q-ðÚaqEQQP‘¢R¤ˆ€$@B%½Í¼„L$™™Ì$'÷纸Èi¿óœ3§Ì3Ï)„õ†£©tq;©‰•?uR+Ê+dù„ù,Ÿ0Ÿ#;Ø0cË'Ìg×gÝ6zöìÉÆîkóT¾¾¾Œ9’Ÿþ™õë×ãïïϪU«šö’K.aÙ²eäç瓞žÎûï¿_£Ö¯_O=ðóó«Ñô~~~×hZ©_ô(91¼ÌŒt.Ÿüë^èD⎕UŽ×óéíL]Ϥaíê0ºs[IAf~]¡ßÎ×`).¡ýÐËÜ6¯Q£F1gΞzê© ýcccÙ³g­»ìò̤¤¤½xý’K.aÞ¼yÿðójÕ*¢¢¢èСC† áÓO?u:¾%K–0nÜ8§ã-ãååUãKQEDD¤~Q(†Wúþ¿Ò$¯:SÇëé N27bŠÕþ»í4kìÐxÕ9r$O?ý4Û¶m£sçζþ»wïv©]W…††²víÚ ýžþyÛߎķsçN’’’1bD㈌ŒdéÒ¥dffÚî¡©Œ.Ãwu(o­Ê$3#©‹ã«ü¿l}:?ÿüs̯.»[åŒâµ×^+Bh Ú=z4‘‘‘ÄÄÄœ1\DDDäTJÅðJ+¡ÿ/ÎÉÙØ‰ Ë¶ÛÚì>|8c»¾Ugó«Ëî›ZOuiú ýýX½z5i«ÚV."""r:%bxÎ$€ª:§,l‰‡ºÏžn‘Ê( ÃS%°öœžh¨ûìꩌ’@1wÌߓۇ§íû«êbûtôüYÕùWÎNJÅðT ¬?, ‹7~[!QZ¸ö e±u'Mãý5Kë<¶í.fÄ7Ôxú¯¶¬¦sËX5akûPæF¿ñO[wÙ¯¹ÝÚvä•Û­Ç»·ps×¾UÆÙãü‹Y¼á[î¼ê&‡—   ¨éËðãî-Ñ2"š'nº‹ó#[8ßêß7ñ¿Ÿ¾â@Ú!̾þô޽”ñ7Œ&ÀÏ ”^ŽÔ2<Š©‡ØsøÑ¡¼8òa•îkÇs³x)n.[÷ï¢UD ·¸ B|öÚxqÉ[40áçãò­k)¶”pÿµ·qs·¾vÛ·gâ‚—Ùºo¿'íeú²4 lÀO̶ ïÚº£z J1_°ö >8Í¡åøãÐ>þûíÇüqh~f®»¸'ôéÐú¯nûÈ/*ä¯ÚöÞ±]xdà˜ýüޝ*ŽÄWÝþS¦ªÏ/"8”ÙË?ÄìëÇñ¼lF÷È»?,¡eD43Æ<‰··Ýå··|Õm_îX¾êö/w¬_€ìü\&8“Mí¤exT…å³·~\‰ÏÞò;r|tdû¨jÿ€ê÷¿³}ÿxpÞ‹4oÒŒ¿RI9žÁQ­˜<ø^Û}®nŸPýöa3çÏÊοrvS%P O•ÀúãÓõ+ÒýZ¼½¼mýZFD3º÷ Ò‘v˜‘½Ò*"Æá6ßùá3Öÿ¹G>Ì{÷¿Hhƒ`žý´ôKƒÙÏŸ'o¹‡·¿ÿ”ä£i9žÁ[ß}Â?oþ»­ZtUûn¬ž2Ÿ{ûÝzFÛÑ¡MY=e>oÝû,«§Ìgõ”ùg$€¹ùì?r ¢ZVglt+¤";?×áeø|ÓJ¶'Æ3cÌ“|øð+ÜqåMX­V‡ãË)ÈãöÞƒXøà4fŽDRÆÞüöã óXõû/L4–ÏŸ˜EpP#¬ùÂ6쵯Þ';?—wÆý›1WÝÌ—[VW˜Ö‘öK籑 ÿ@>ø:<86ÍÎs¨}{^¿ó VO™Ï…1m˜8h «§Ì·%€ŽªnùSŽ¥3ñý—¹ ªïýã^ó>'·_GÖuÛÀ[ß}ÌŽ¤?™~ç?™9v»ïgη9_u‰¯ºý§b •~éYG™¡úíÃgΟ•åì¦J ž*õÃΤ½ìO=Ä˧ÿ³âC²ósÙk Å%Å,ßö#«vndü £í¶YT\Ì’ßñÊqatkp§ÝÏá£iD…„Ó©E;u¹Šÿ[ú.¾Þ>\wñ\Úº½[—íÈñt,V+a Cª'¼aV«•#Ç2hÐ,Ðá¶3²ŽÚÔöËÿ•º8ÛÀK¯¬Ð=¸û5Ì_ýy…~}Úw'¦IÓÒö/ì—›W¥ÉíO»·òêÓ"<ŠáQ\uaW3Rœj ¢Q¨­ àg&¬QˆCí×…ª–àË-«9/,’ôaë×æÚæn™¯ÕjåÛíëxdàÚüaÌU7óê—ï1aàx™Lvãs…#ûO™Ê>¿õñÛˆ §uÓ.ŒnMföqš7iF‹ðhR¸ÿµºåstûªéò¹º9¢Wì%\yai».¹’o~]ëð´®ÄçêñÑ‘éksÿ°§®öŸ«;t'*4€á=oàþ¹ÿ&¯0Ÿ?³KÛgW¶GÏŸUë‹• A¬LØ[ƒ)ƒäöh§$P ÏÙJà¤aažYjà“õ˹á’^40WL€F]1ønû: ‹‹xìÆ¿q4û„CmÊò‹ θÔ(¬acÛßf_?Ûx)ÇÒ±X,´ ² oS!Is¤}€Ø“_"OåHûu¡ªå‡Ò§Ž^Ô¼m­Ì÷xn69ùy´Šˆ¶õkCnA>ÇrNÚ Øn|®ptÿÊ???_ÛÿeûúøPàDŒÕ-Ÿ£ÛWeY>W÷/GDž²˜œúü\‰ÏÕã£#Ó׿þaO]í?Ñ'@€¨pJ,%¤K§UDŒKÛgW¶GÏŸUë“!7öÇj±RbµbµX(±‚Õb¥ ¨«ÕJ‰¥b+°aÃ:Ƭ$P O•@ãK>šÆº=©!3” IDAT¿²àä}X§ iЀÖÍ)±”Tèç¨ÏŸUéYʤÈ$3û8V+9–N‹S’whЀœü¼*O²9y¥ã:yŽnÅÇ^eßÛÙ´w,x™'o¾›ë.îiwZ‹ÅÂSΤïE—ñümãiÄš]›˜µ|Q…ñL'1/Szúƒ²ÞÞ^åw&œú·£íCy²Pq¾Õ·ï&N[¶J®¤«jù«^×ìÅç*{ûTþùUÏñ«Z>g¶¯êT·|®ì_Žò2UܦùüÜŸ«ÇG{ÓW·8²ÿÕ6W÷Ÿ‹Åö·åäßV«û¶OW¶GΟÕ뛬übJ,V,ËÉÿ­äc±XÏèÚÐßÓáêž@1>Ýh|ŸmüŽËÛu®PY8]›fÍm—ô8*:´)þ¾~ìLú³Êq, /ÅÍåÆ.W3ô²ky1îmÛÉÒQe'iKß`"CÂ0ûúUxJÛé’2Rðóñµ]VäŒàÀ†ô¿ø žz7véúø_Š/íÄQ2²Ž1òŠ4  1=Ùáù6k†——)ÇÒmýM«³öÝÁß×—Ââ"[wFö1§¦oÝ4†‰Uo_`û¨Jp`‚ÌìO=dë·/õ ~f9÷CHMâsdÿñ$G·/W—ÏÞþeOM?GÕ4>WŽLooÿpdÿ;Û÷Ÿý©ËÿN;„——͇¹¼}ºSuçOGοrvR(†§J ±åäçñõ¯kkå±Ô¾>>ÜÒíf~ý¿ìÝAêñL6íÝÁóŸý×6·?͉¼lþÞwcúÜLaq ×~éÔ|"‚Cñ2™X»k3ùE…—TL"½½¼éÐü|vú«Ê6~OÚKû˜6øz;wÇW[Ö°ö-¤ÈäÏä~KØCLh3‡â iЈ ÿ¶ìû(MD—núÁáyø™éuÁ%,Þð-‹…#Ç3øaçFÛðÚnßÎoÖ‚õñ¿QX\ÄñÜ,Vlsî57véCbz2sV|ÄáÌT¤bÞª%Ʊ·}TÅd2ѯã弿æsâ“ø39k–rMÇËl÷3¹CUñ9²ÿx’£Û—+ËçÈþeOM?G¸Ÿ«ÇGG¦··8²ÿíûÏláçÝ[IJOaÞKèÙ®3þf—·ÏºP›ç_©}ºT O÷ÛW[KЩE»Zi\¿[1ûúñÊï‘‘}ŒˆF¡ô>y“ý_G’X°ö ¦ù§ír¶I·ÜÍøy/qy»‹¹ ªwÌ~’¤ôò{ÐÊãýéÄ×m÷v6äï}‡òúWó9‘—Sé+"úuìÁç›~àöÞ7VçláÆ®W;½|>ÞÞÌ[µ„ƒ)˜}ýé{)·÷®x«zUñùùøòÔ{™õÍÿ˜»r1MƒÃܽq›V:<ÿ‰ƒÆòRÜÛ }mM6æòv“pò×îÚn߆ö¸Ž_üÁÐ×&Ð2<šÞveõ®_ž¾Yã0^óÿýöcÆÎ™Œ¿¯×uªx)^uÛ‡½íëþkocÆ× ™0*V+ôнÔöx}w©.¾êöwpdÿªŠ£Û—+ËçÈþe#LJªØ[?®ÆçêñÑÞú³·8²ÿíûÏ .}xíìO=Hç±k[mŸ¥vUöS†orrr¡ŸïÙ›~¿âúõ/}©gh}a¯Ï23J/ó:u›(ë>ê¦.Žw*´·Mef¤k»;K”XJ5ó îíw+×tìáépjUaq£f>δÑi{òñùeö§ä±…¯ò¿‡^Æ\ÍÃcDDäìñà¼éÓ¾Ãz\çéPœVŸÎ¿•)ûþ ðÈß2äÆþœÈ-rêžÀ Ö1ý!ç?û²ï Ÿ,ZXá»o™Â¢b"##‡y@îÉ9§üäërP1<Ýh\YÇxéUõâå´~>¾Kö¦7ÎOÎ%%%Lž<™ÈÈHÌf3ýû÷')) €œœÚ´iÛo¾iÿ¿ÿý/-Z´àĉ,^¼“É„Éd:ãrн{÷b2™èÖ­ôe¸eã]ýõgÄÇ€ÎèÿöÛo3~üxúôéCïÞ½yä‘G˜;wîã 8O>ù¤ÊåLMMåÈ‘#¬‘ê) Ã+»0qÑprrò y-¾>^øûyCòZrssI\4Üvo œ[&OžÌ²eËXºt);vì Y³fÜzë­1þ|ž|òIöïßObb"ÿüç?™7o5`ذaX­V¦NzFÛmÛ¶Åjµ²iÓ&¬V+V«•åË—W/++‹;vÐ¥K— ýsrrسg=zô°õëÑ£{÷î%++«Â¸Ýºuã÷ßçØ±c•.çu×]Ç5×\ãäÚ9“’@1¼²Ä.ýð:ÝÔ °àçM ¿X-tº©™‡¨xŽ)((`Ö¬YÌž=›îÝ»sþùç3{öl~ùåöíÛ@ïÞ½¹çž{¸ë®»¸çž{¸óÎ;ÝžL%$$`±XˆŽŽ®Ð?==€°°0n½õV†JXXé“iÓÒÒ*ŒÕj%!!Á­±‰ˆˆˆœN¯ˆÛ4¬‰‹†%à Y»yb|ßÒÙ{ ðŠ­ ç¼QU_Ž'gŸ½{÷’››Kï޽ϖ’’BëÖ­xá…èÔ©EEEÄÅŹ=Žœœª§Y³fÕ¶X¡­ÓmÛ¶­†Ñ‰ˆˆˆT¤J Ô )‰{¹ô¶Ñ™a½™6ëþóÎÖަÒuÄí¤&îõt˜RC©©©¶K5ËþõìÙÓ6üàÁƒ¤¤¤žž^+•¶ÐÐÒ òñãÇ+ô/«ú¥§§3kÖ,fÍšU¡:xª²iCBBÜŸˆˆˆÈ©”J=a¯ðñ/? -då—x›ÁdÆ‚ÅÓAŠ“Ú¶mK@@?ÿüs•ã”””pçw2nÜ8zè!î¸ãŠ‹‹š··7Púº‡Ê´jÕŠÀÀ@öî­øCBPP\p7n´õÛ¸q#mÛ¶µÝ“X&>>³ÙL›6m*Gzz:ÉÉÉNÅ-"""R%R/””X9¸9ÂÛƒÙÄ¿fNãÉW^³ ":ppËJ,VO‡)Nò÷÷ç`üøñ,_¾œ¤¤$V¬XÁ¨Q£lã¼üòËdffòüóÏóì³Ï’ŸŸÏ /¼àÔ|š7oŽ——Ÿ}ö¹¹¹UîããCÏž=+${eî¹çf͚Ś5køé§Ÿ˜1c÷ÜsÏã­_¿ž=zàççWi #FŒà’K.q*n‘Êèž@1¼ÌŒt.Ÿüë^èD⎕UŽ×óéíL]Ϥaíê0:qÕ´iÓ äž{î!99™æÍ›3xð`¶oßÎóÏ?Ï?ü€Ùl`þüùôîÝ›AƒѵkWbccÙ³g­½²—Â'%%”^ºù /pß}÷‘™™IÿþýÏxBè¨Q£˜3gO=õT…þ<ò‡æ–[nÁjµ2vìX}ôÑ3–cÉ’%Œ7®ÊåŸþÙéé[åŒâµ×^+BèiÃ-Û/£eË–¶÷ž>\DDDÄJÅðJ+¡ÿ/ç–œºl»-1òd÷ðáÃÛõ­MSë©Õÿu¡//¯3†‹ˆˆˆ8KI ž3  *ç–²„°%Fõ©[DDD¤&”Šá©h\§'Bõ­[DDD¤&”Šá©(""""RNI ž*"""""唊á©èš’’O‡ """"n¤$P O•@× 6ŒvíÚ±xñbO‡"""""n —Å‹á9[ œ4,ÌÓ!ŸUâââØ´i?þ8Æ ót8""""†ü Ýqò"g»užJÅðT t]HHÙÙÙžCDDDÄüÎ{´Êa…‰¯¹}~ºT O÷ºÎd2y:q%bxªº.88˜ŒŒ O‡!""""n ËAÅðtO ë¸å–[;v,cÆŒáꫯötH""""†Q—|VGI ž*î±{÷n®½öZ"##=Šˆˆˆˆa¸û¡/ŽÐå bxº'ÐuÉÉÉ8p€‰'ëépDDDDÄJÅðT t]NNAAAžCDDDDÜ@—ƒŠáéž@÷ÐBEDDDì[òéGgô»ºÿÍUޝ÷ŠÔU]·wï^š4iâé0DDDDÎzCnÅb%¿°‹ÅJ‰ÅŠÅb©všº~O ’@1v5 8¿ÈmíC饠+W®ä¶Ûn«ÉbŠˆˆˆˆ) Ã3òÓAìH`ïòmL1 ¯0ìè¾#µqÁ]Y÷Ú—Ìéø(M;žÇ7w£×“·¸­ý &0sæL:tèÀĉšFDDDDj’@1<#WËDuiMë~+öëÖ¶¼£š{ñ®}ùv¢º¶æ¸_Ø÷ýÖ¾ðÇö§2äƒñŽ·_3fðÄOЯ_?¦OŸÎÓO?íÐt""""R;”Šá¹Þ>“—‰k^…É«4Ù;–†ÃÛx~ Ìä¤8£‚¬<.q¸‚¢Ü^¹ý?ìtª}{¢¢¢èׯ;wî¬ÁRŠˆˆˆˆ;) Ã3r%0º[š÷¼€¤u{xóâÇhvqK²g’ðãnîûõeB¥•<€ 3–‘sä8>f_®ú×0BðñàWðk`¦Yç–d>Jþ±\¢º6sª}GøùùQ\\ìþ• """"NQ(†gäJ À¨/ÿÉ·-$þ«-ìüègÃÑ~XD6¶s^¯Xz>v#[ç®dó[ßÐcÂ@Bк_'~[¸–½+~Ãäe¢yÏv œs·Sí;ÂËË «Õêž…1ˆ€äíŽãîÊ+ Ã3r% ´7Ï»ßîx×½r×½rÇý{?5˜ÞO v¹}{"##Yºt)™™™„†ž{ëYDDD¤¶ø÷h•à _sûüôž@1<£¿'ð\1zôh"##‰‰‰áþû]O*EDDD¤fT Ã3z%ð\ÁêÕ«=†ˆˆˆH½§$P Ïè÷ŠˆˆˆÈ¹­6.ù¬Ž’@1ø:9ùy¤Ïà>cãÞí¼8òašƒX¸ö žýô?¶$2§ Û{₨Vää3}ÙÞüöc&CthSVO™ÏžÃû÷ös¬ž2ÿŒùÚkß^|Õqdþ˶®åÑÇrWß!Lûü¬ù‚GokwùÊcû…Y›LÓÆMxêÙ¦·ç­ï>fGÒŸL¿óŸ˜L&^Xòs¾ý¨Bû5]~°¿~ßúîSÓ“™s÷3dååðì'ÿ!ÈàPÛàØú©)G>?G×_eò HJO¡CL[¿ö1mxûûOÉ-È'Ðß~"ëêö_wl¿µ}|øi÷VÞºçYš6nÂÔ¸¹¼þÕ|þ}ÛxÀþçãÈñµªýËÕõ Î?*;ÿˆÔ•%_®ðtNS(†§J`ÝØ™´—ý©‡xù´_xÿ³âC²ósÙk Å%Å,ßö#«vndü £nû¥‘lwks‘Ó±¹:}u2²ŽÚÔöËü•º8í»Ó¤)W^Ø…/7¯rh¾V«•o·¯ã‘chÕ€1WÝÌ«_¾Ç„wâe2ÙÆ­ÉòÛ[¿‘Ãø~Çz&C›¦ÍO.oÖü±Ù¡øÁ±õS[œY•9ž› @p`Cžýä?X­þvõ`Žåf9”zrùËT·ýÚãÊñ¥ÌÕºÀðž7pÿÜ“W˜Ù×ߥϧLM÷/G8zþ¨êü#R®i‘CÇNãë燷·ã?BlÚ¸¡£²OI ž*uã“õ˹á’^40Vè?ꊄ4hÄwÛ×QX\Äc7þ£Ù'<¥ûõ½è2&¼?qo?Gç–г]g.>yéš=ÉÇÒ(±”Ð2"ÚÖ¯ExT¥I`ìÉ$áT‡2_TÈøy/1,3û8Q!áì9¼Ÿ9ß~ÌžCûÈ/*pøRHGÚ¯.>w‰ ̶åZ¾°†m›}ý*L_ã¹ÙääçÑê”ϧuD ¹ùË9Ahƒ`[ÿš,¿½õäo&;?—§T†[„GÁŽÏÕÏßUά?{œ÷Tž\þ2Õm¿ö¸r|)}2ˆ §ÄRBʱtB‚‚ÝòùÔtÿr„£çªÎ?"R5%bxªÖ¾ä£i¬Ûó+ NÞ‡tªhÑœKI…~FÝŠ'¼Ê†?·³iïYð2OÞ|7×]ÜÓ­óñóñ­rØçϲÝãs*‹ÅÂSΤïE—ñümãiÄš]›˜µ|‘Só®ª}Gãs•—©â3ÌÊî¦ptùL§U4jãn W–¿ªõ{,'Ëî´&N[¶SÍ]Ÿ¿§6àxn¸€mvWV³eù«Ú~áŽãKÉ)OS-{²ª“W”V«6÷/GÎÕD¤jz:¨žžZû>Ûø—·ë\¡2tº6ÍšÛ.92šàÀ†ô¿ø žz7véúø_š.²q8Þ^Þì?¥ò—æø»Ú¢C›âïëÇΤ?+žvâ(YÇyÅTú.¸²/©–Ó¾Úkß]ªš¿=Ž._M6 ÈPáóÙ—z?3ƒ\ÿ!ÃÞú-›BÚa[¿Sÿð÷õ¥°¸ÈÖ‘}Ìö·£ëÇÇË“ÉDA +8U}~®®?³Ÿ?ÍÚ±ëÐ>[¿]ÿ":´)Aþöï‹tuûw”«ÓÛSÓãK™ý©ËÿN;„——͇Õúö]Æ맺ó‡#ç9“’@1–û«-kXûÇÒNdògr¿%ì!&´™CÓšýü¹ª}Wæ®\LRz [öýÎNÜïåëãÃ-Ý®aæ×ðËÞ¤ÏdÓÞ<ÿÙÒ_̃üØròI),ÝôÃíD‡âe2±v×fò‹ ).)q¨}w©jþö8º|5e2™è×ñrÞ_ó9ñÉ ü™œÀ‚5K¹¦ãeß/U{ë×d2qÍE=øàÇ/Ùwä ¿ØÍ7Û~¬ÐÆùÍZ°>þ7 ‹‹8ž›ÅŠm?Ù†9º~¼¼¼hÃ׿þHzÖ1²òrœZŽª>?w¬¿A—öaÉÆïùíÀnv$Ƴx÷ êr•CÓººý;ÊÕé«ãÊñ¥ÌláçÝ[IJOaÞKèÙ®3þæZß¾ËÔæú©ïçWèrP1<ÝX»¾ÚºšóÂ"éÔ¢GæÇì'IJO±u—=†üÓ‰¯»åÞ{íûx{3oÕf¤`öõ§Wì¥ÜÞ{ÃíOp/ƽÍ]ÿ}šÖÍpé•ìLÚëðôãúÝŠÙ×W¾xŒìcD4 ¥÷ɇPøùøòÔ{™õÍÿ˜»r1MƒÃܽq›VVh#8°!ï;”׿šÏ‰¼œ p¯®}w©nþÕqtù\qÿµ·1ãë…L˜?«zÅ^ÊýGº­}{ë÷¾kocÚÒw¸oîsD…Fpc—>¬Ü¹3ôs IDATÑ6|hëøõÀ }m-ãé}aWVïúpný<2ðN^Œ{›¸_¾wúU+Õ}~®®¿[/ïOFÖ1&ôV¬Üй7·]~½CÓºcûwuùí©íã À .}xíìO=H籞ŒkïóqÇñÕÕõ[OŸDÎe•ýÔ㛜œ\èç{öæ‡ß¯ø†~ýK_ZÚD_Øë³ÌŒt â6QÖ=|ÔL]ïT"ho›ÊÌH×vwR‰¥„Q3ŸàÞ~·rMÇžÇÞýa ‰éÉ<7üO‡"g¡vnä>³½'P¤:Î{‘>í»1¬ÇužÅítþO*ûþ ðÕÒ¸?tÐ̓žwÙwÐO-¬ðÝ·LaQ1‘‘‘C< ÷俜SþÎòu9¨žî ¬=YÇxéUz9¯ þ8ø›ÿúü¤âÛß~æªö]=–ˆÈYMçל½å>7Ñ=µ'"¸üÝhR3¹…ù¼¾ì}ŽË Q`Cº÷£ïE—y:,‘³šÎ?"®Q(†§{ålÖ¥u]Ú'ë{Ñeú‘@6û®ÉžADÎRJÅðj³x$«v ~®˜·¢v_ R»úŸïéDD¤ª½7ãÖÝ(†§{EDDDDÊ©(†WÙÓ?Ë.ùœ4,쌧‡ÊÙ©eD ÁA¾üy8›Ü÷½gJDDD¤¾Q%P ïô0eK ïö#áÝ~¤l‰cÒ°vªžº¶mÌ€.M òìE÷]ߊIÃÚáçãÜá3Èìäaíh ßÞ*syl(#¯Œñt"""õ‚¾ˆáþЗü­³i9ìY|öt¬J Ôºâ ;NPTR·÷‘F‡šéyabš˜1ûy3{Ù>²òŠmÃM&èÛ1œN-ÉÄŽÇY¹= k Ãì~~íÏkÈü•‰NM—v¼kMg*"""NQ(†Wž¶#eK+P€Å)[âhÖe0ã®FO=‹-^wØÓ!¸¤ ÈÂW›Rê|¾~¾^¤+ 1-—¾ÂÏÞíü:¶lÄg등Z­ ¹<Šìü6ìq¾*n2A×ó³zGºý‘O³79‡½É9NO'"""ÎS(†wj…/góLÚ ÿ7Oÿ}/¼»„½? ]«XCÝÒ€W?ß À¤aíÈÉ/á¯þàZèËêé\~A(E–þ’ÌÁôÒD¼Q ×_Ú”óÂñ2ÁÑì"~ØžÆ_)¥ A¿‹Ãév~ˆm~ ~HäPf¾­»I#?nîI“†~l?pœf!f¢BÍÌùf?ÇsŠìÎ?ÀÏ›k;‡Ó6²Þ^&Ósù~[Y…œÀ ]šÒÀìúÝÎ'FMúqoÿ–¶îÓ+qµmÿ‘\öÉ%2Ä\éðέ‚Ù¼÷‰i¹üòçQ:· ®QÝ&vÌv|š˜† î ÀÔ\>\{°Òñý½1™ '_÷ƒŠˆˆ¸JI ^Ù½€‰‹†“““ÉkñõñÂËËÉkÉÍÍ%qÑp&ú„©‹ãU ¬%­›ñçál.jш«;†±pU×_Ú”6͂ؑp‚¬Üb¢›˜ kägK“Òóðò2ѦY+¹pðe‘„û“r4Ÿ6‘A4 ¨üžÁªæ?´gÍÃØ$—Âb çG1¢w o­Ø_Ú~(ý½9r¬€nmC0û9w/`FV!SÇdöá¡A­š¶KÛÆ\×9¢Òa?lOccüQ§Ú;¯Múq8£<©>”‘OŸ‹Âðóñ¢°ØâT{ÝÚ…°å¯£Xœ¸¬s÷Á,¦.ÎâòØPZFV9ÞÈ+cð2™˜ûí§b‘3) Ã+»Ä3ýð.½¥7Z ðóÆÛÛ ¬:ÝÔ‹mŸÿÈy J`-úfËŽæÓðFþ¶þ!A¾X,V6î9JÚ‰|¼M¶á{e³çP6ÃzF‘FûìOFV!óH¤a€ÿ¸¡òD«²ù7kìOó°ö¥äðñO‡€òÊcÛÈ•èïMòÑ|æ¯L$¼‘?w_×­ë¥:»’²lËÓ¹£šèç @na ƒ{Db2™øñ÷ŒÒaþÞN%1MoäÇ'?w9.©]JÅð& kGâ¢á@ xCÖnžß·t`ö¼€b«…ÄEÃ9oÔ'ÕÈŽåaµBQ‰¥Â“5ÿLÎá²v!Ü}] ÒŽ8‡õ{2ûդІ~$¦åaµÂ‰Üb2² käçÐüÃK“ÁÖÍ‚˜4¬]…ñù’_X:^Bji"–v¢€œüb‚ÌusèÌ+(¡ °òDÌ™j›#\½Ì²{»¶8A~‘sÕCG½û]B­´+""R) ”z!%q/ÝGß©û!¬7Óž}ކ¾<ðäSpt']GÜÎæÿ-àRs+ôKÎÌ'¤AYå±|âº|€em_š[Xšøúyóí¶TÎ /½$3¯Ðñ¤°q/çGñÖŠ.Å#"""uCI Ôð ðò£°ÐBEàåÞf0™±P; £+±XñóõÂËd¢Q ó‡?/v%e±+) _olM‹jî ;Õ±œ"bš”>ô¤Ù‡Ð†Ž¿G0ýDéÃ_¬Àêé¶/8ЗÂb ^' –'+†AfŸ:«Bí_ZTl!#«¨&fö)½3*ÔÌÑì" œ¨èumÛ˜½É9¶Ï£6ø{ãm2‘_wÕ1*%R/””X9¸9ž˜nÁdâ_3§•4wàà/Û)±èe5‘v¢æa êÖ´F ÒОQ[I=–O³f¿Ò{ð ôÞÀ>•>¨§ìÒÍnç‡pa~1IéyÄÎ&3»ð`nïÓœ@o¼LŽ×“æs0#˜&üýÚ¤+ A€ÍØ÷]"Iéyä”кY×uŽ icûºQ^A y®]¦éçãEH_[rÖÈ@oÒORb±òÛþã\~A(‰i¹X¬ÐýüÆüòç1‡Û÷÷õââVÁ|ròžÊÚrËe‘„7ò·=uVDDDjNI ^fF:—Oþu/t"qÇÊ*Çëùôö“OmWå8r¦U;Ò¸å²(ÎjÀ†=™Õ>á±2ŽärQ‹F´nˆÕ 3òX±µôÒD/S…×C\ؼ!^^&öÊ&n}27uoFT¨™?gSTb¥Yc‡_<¾øçÃôíNÛÈ Ú7÷'· ˜Ý³ÉÎ/¦¸ÄJÜÆdtiJ§VÁlÛwŒ ³Ï)—‰žýš…˜}UŒ­{DïÒ¿Ë^¡ñËŸGi`öahÏhLÀöÇÙïøë!:· &#«¤**–öÜÛ¿%M–ßÃY¶ÿþ* _/²òj¯Ò(""RŸ( Ã+}ÿ_i’W©‹ãõtÐ8”‘ϾÞgëþùŠ Äœ¯÷WèžñEÅJκݙU¾/¿ÈÂÔÅñÕÎÿXNïœ|hˆ·Wéå¤V+䞬 Ù›^a Ë6W}ÿaBj.o~SÞÆ÷¿¥UOU|O>ñ´¸Ž+Ήi¹Õ®C«VnOcåvç—ËËd¢kÛVí¨Ù:xÛû}¼M4 öç‹Möïûœ{á•È9hÜÕ¡¼µ*“ÌŒt¦.ޝòÿ²ñÄy5æ±î«;†ñPóaÜÔ=’»úµ Ðß›Ü_:Q\buhúÚîð󿡿ÃèÜ*˜¹Åä”x4wv7ðfÛþãô£­ÎïQC9–[ÄîƒY•ç( Ã+­†:ü¿8ç¡æÃx#i±í‹y]w_~%%·Ò2ù ø³±óÒ?÷X<§wßÓt0A—m§Óñ>|½%Åãñ¸³ûDn1]²¯®“ùùÿÞ«õÌá"""â¼Êž à›œœ\èç{ö^)úýŠoè×ÿB›„y8ñ¤ÌŒt â6QÖ=|Ô¶qœIíݘ™‘nÛîŽdÕï‡É4Øu1o$-¶u—}AW·ºë¢û®þç#""R×| 3lµ4ŽŽ.Æ×Ïooo‡ÛØ´qƒnìô¼Ë¾ƒ~²ha…ï¾e ‹Š‰ŒŒ ä¹'ÿåœòw¯$PÎiŽ$§^êéÈÿö¶©S“@©_ʾ¹›êrP1>€]»v‘žžNûöíñóó³·~ýzzôèQ¡Ÿ3üüü(..®Ñ´"""rvó;ïÑ*‡&¾æöù) Ãs¶8iX˜§C>g”±aæ×úíüx–â·%£FbΜ9<õÔSúÇÆÆ²gÏ[wÙk*{i»#.¹äæÍ›çðø›7oæê«¯¶u÷ï߀ýû÷Ó²eK[ÿ%K–0nÜ8§ã)ãåå…Õj­ñô""""e”Šá©X{̃˜bµÿî»Í;4^uFŽÉÓO?ͶmÛèܹ³­ÿîÝ»]j×U}úô±›œíܹ“¤¤$FŒQãùDFF²téR233m÷HŠˆˆˆÔ„’@1ÜÓ!ÔȽ÷Þër¬^½Úõ`DDDä¬S×÷êé bxz:¨ˆˆˆˆH9%bxªŠˆˆˆˆ”Óå bxº'PDDDDÎfº'PÄÍNOôB›„Ù½Iغ8^•@ñˆ¼ÈÙu>O]*†wz˜²%Ž„wû‘ðn?R¶Ä1iX;Ýh)))˜L&<èéPqž’@1¼Ó¼ü­³i1ä_´ò/ò-ýåE•Às_@@cÆŒ!((¨Nçûä“OÒ¦M|}}iÚ´)'N¤   ÆíMŸ>îÝ»;=]ÇŽm/ª÷¤OׯྐྵÏÑÿ»íëX¶uMÚ¼÷í)¬Ùµ‰ŸvoeìœÉ•ŽÓ:"†îm:Öxz{ªkÿ\¶ü©·øöé¹.µ±çð~úL란Nc±Z™³â#nü¿4íÌ^¾‹ÅâÖy¸¿;–ÿlß¾\‰ÏëÇÑãGUÇ9“’@1¼ò{ýÚ‘²%‹(ȃ‚<,HÙGh“0UÏqÁÁÁÌŸ?Ÿ:oÓ¦MyõÕWY¿~=3gÎäƒ>à™gž©Q[%%%Ìœ9“GyÄéiÈã?^£ùº‹ÅbañÆo¹µGy2ºpíÊšÆûk–º}Þ=Ú]̈+np{»uÕ¾Tnñ†,ÿí'ž¿mÿ·ô]ÖÇÿFTH½b/aåÎ,z¨ôÒ¼‰ ^¦këŒê5(­˜,Xû œÀêß7ñ¿Ÿ¾â@Ú!̾þô޽”ñ7Œ&ÀÏìòº9”y„ÑoüÓÖ]VíéÖ¶#¯Ü^ú¾«ü¢BÞøz¡mÛèÛ…GÞ‰ÙÏß¡y|¹e5Cº÷£sËXn½¼?_mYÃÈ+84}uËïHüÕqtúìü\&8“Mí¤ex/Ž|˜ðF¥Ÿomo_Î{‘æMšñWJ")Ç3¸ ª“ßKã †€ýÏÇ^|¼LËð(¤bÏáD‡FØ–ÏÕõ Î?*;þˆHÕT Ã+»0qÑprrò y-¾>^øûyCòZrssI\4Üvo œ[bcc±Z­$';?ÓìÙ³1™L•þ{õÕWjËjµÏŠ+¸òÊ+ŽJ/?~<>>Žÿ>7lØ0¬V+S§N­v¼ë®»Žk®¹¦Fq9êÓõ+ÒýZ¼½¼mýZFD3º÷ Ò‘v˜‘½Ò*¹$=¬ac̾þøûúÞ°b¥÷ªöÝX=e>÷ö«:q®nz{ìµÿù¦•lOŒgƘ'ùðáW¸ãÊ›°Z­·ÿΟ±þÏm¼8òaÞ»ÿEBóì§ÿ± ë»OILOfÎÝÏðð€Ûùbój§âÏ)ÈãöÞƒXøà4fŽDRÆÞüöc§Ú¨JthSVO™Ï[÷> Àê)óY=e~…/øo}÷1;’þdúÿdæØIì>¼Ÿ9ß~äPûù…$¥§Ð!¦­_û˜6ÊŽì_«~ÿ…‰ƒÆòù³jd[>W×/8wü¨ìø#"US%P ¯ìµé‡pé-½¡ÐJ€Ÿ7ÞÞ^`µÐé¦^lûüGÎUë™#FЫW¯J‡EGG;ÜΜ9s?~<‹…»îº‹çŸÞéXÖ­[ÇÎ;ùæ›oœžöl°3i/ûSñòi_ðþ³âC²ósÙk Å%Å,ßö#«vndü £nû¥‘lwks‘Ó±¹:}u2²ŽÚÔV™¹²Q‡§-*.fÉÆïxåŽÇ¸0º5¸ƒÓîçðÑ4"‡ñýŽõL4†6M›0à’Þ¬ùöî<.ŠòøgwYn<Qð´OðFñÈûÎ,Í£,3µ²,-5µ¬ÌòÈÒ<ª_™f^©Y¦–¦â‰xß’g HŠrßË^3¿?VVva…e×ÏÛ/vžyæ™ïÌë|÷™yæê³×1 •áCÚõÀšC˜½|Yˆ¢ˆ½—ŽaÊ€—ÑÐ/ðr×ÁørçO˜<à%H%’"—OÏÉTuõÀÇ[¾( x¥Û@ZN&\ŠïÍ´æöçéÔ]뎋þ-»`÷ù#f/[–ã+O·¦íàçéx¾c?¼±òS(T¹p–;•éýÉóT“v¨ã¥»Â KãÖØyæ`‰c4ÅÜÏSŸ?Dd“@²{3‡6ÄÏвª@æ5LŸÔ]73ë:àÚQÀÏ£Þ¨-V•*–——ªU«ftžLfþ·É#FŒ@XX¢¢¢0cÆ ,[¶ “'O.~Á|/^ŒW^yÅd¾P©ïS9Ê\¤egÀÓ½ªÙm•¤n~ÖÜþ<¾Õkè_»;»èã0GYޝ<µ&€àW½´‚÷Ó’PÝ­ªEÞoGŸYÎrÇm_qÌýü0õùCD¦1 ¤ÇÂý;ÿ¢Ý / Ñ€wg,øx<\äxsÆ, 5 mF¼ˆ3Ö¢žµ¥ õÍ7ß`Ò¤IFç-Z´S§N5«OOOxzz"88Z­“'O.Q;vàÚµkf/S™Ä§&âØõóXûð>´üª»WÔ÷© ­ 5(³Aµ±yò—8qóNÿ{SÖ~ƒÇ¡wpG³ÛøcÚrý=Zù¥eg»¬†½5ù¯³~YŠîÍÚcîðI¨ââ†ÃWNcùßÍŽÍšªººÒs2ñNÿb®Ì+JeÙ~©ÄðÎæ_Îi‰ãK›o4Õ¼‘UKxEi‘$z K²}Å1çó£¨Ï"2I =&@ê88RG¨T2¡¤Ž€Ì8C€e‡§ÊÏR—ƒæ'rrrJ´ÌÒ¥K1pà@Ô¯_¿Të4GRRÔj5|}}-Þöo'÷¡CÃøåëñ(¨A­º_oeQÕÕ}‚ÃÐ'8 nή8vã¼Y'éµ=kÂI¸›èÔÊH»îpsvAlâ=ýå ±‰÷ ê8ÉåPiÔúéä¬4ýëÄŒT$g¦adXTqÑ=:ÅØ³¤2H$(KÙƒ“—ä¢hp a^üÑ wõñßNø.ŽÎ¨æVüÎŽN¨ë] WîÞFÛ't'¸òß-Ôö¬ 7'—b—7wûMÅo®²._œÒ_y¢=;5:ñ.¤R)jU󆋣S™ÞsYbÿõùaÎçÆ$ Z­ˆÿÎÜ@¶Í‰-Í÷¡sSüwê´‚¿%›àíí ooïR/ÿàÁ|üñÇ4hjÕª…7nàÃ?ÄÓO?mvéééX½z5þú«øJ—ň#…û÷ï[´Ýì\v?‚£Þµh»¶âϳ‡QÅÕk"-;c¯£S£Â 1r<Ó¶–îZG9jÔFlâ]ü}1³Ÿ{‰=š…b}ÄNÔ¨LEv_ˆ€k¾èÉZþ8~ã"Fu…*{.ÕÏ«î^nN.8{ûôjÑqÉ÷±ýô À‰¸T*E}Ÿ:Øu>/¸W…“ƒ.æ?oÓ§ª'¤ Ž\9ƒÐ†ÁpÊà Ó%–=›wÀχÿ@=o_H¬=¼=š·7;Øê)l<úBüA*•b뉽ÖÁ¼G˜»ý¦â/ëö[BYޝ<WÏ"òÚ9ÔóöÃê¿£cÃýý”e}ÌQžûçqÿü!* &d÷R’“Ð჋8öY ܹ¼ßd½Ž^Âü­70shà ŒŽl™‹‹ 1nÜ8$&&ÂÓÓC† Á¢E‹ÌncåÊ• BçÎKCPP®_¿®ŸÎ»4«à£2222ÊåÑž;„zÞ¾háo¿›Ñ+f .éQb›7 ý¯ï.¶È½_Åµï “aõÁßñ_ò}8ËÐ)¨^ì<Ðìö_ë9 ÎrG,Úñ’³ÒàSÅ?üãõ^ñ`ûx}åøyú`Pë§°?u˜) IDATê¤~þs¡½q>æ*žûj2jÔFçÆmpèÊ)€£ƒ³ž€å»7`åþ­¨YÕCÚõĶӅ?§ x ŸoûÛN…—øQU]=ðj÷ç°øÏ5ÈPd<à^Ãñõ®u˜¼f>DèÔ oöivÛÃ:ôArf>Ø´ "Dô éŒáú𵬹Û_TüeÝþâ”÷ñ[?…Ÿì@tÂñÂ{ƒÆèç÷þXâ﫬û·(Öþü!²eƾê‘ÇÇÇ«å•7? ß³=ûèZêéUúoñÉö¥$'0<&ò¦Ÿ50ë ýc"Šbn½”ä$w•Ptt4êׯÄÄÄ2õîU$Fƒ `Á‚9Òüã’R(¨Zµ*Ö­[‡áÇ[¬]­ Å¨¥Ó1¡ç0ôhj±vÉ´Q'ñãßôÏ $*Ê[«?ÇSMÚbhhok‡bqüü!kÊ;ÿ€?·oCóÁ;:–hP¹Ó'O`àà!%^wÞ9è–ë Î}ó¨Ôøúú>@ çáOv¾× ¹|N ٽ׺yâûƒ)HINÂü­7LþΫG¶%99Ù'[`åÊ•¨[·.¼½½‘}²…AÊ:qãÆáéúóͪ_ÚiáR{è*o©ö“3Ó1 UW„æL(×ø9m8½²ýß•*NWîé~’©EηÕis?ˆÈ|òøøx19)±ÒþlÞ°VÿšoÆŽ‰¼é<ó~½.&'%šýÛœuRå‘u¢¹@Ì:Ñ\ܳg˜u¢¹¾œ¿ùÛ\:­RÄÁß¶ñû×ãïç"QyÉÎùóªÄs§OŠ—/ž¯D]2ûççU?”*ÊSðÜ7ï'>>^ð,€~ºh   €><È™’M3' ,I8ï×ëf­“*‡‚ÿÑsšÓœæ4§9MTÞì! ä=dÓJrOà÷SÌúÍ{‰ˆˆˆÈÞHdJ’òž@""""²wLÉî•$|­[Ù‡”'""""ªÌ˜’ÝcO`ÙhµZk‡@DDDDÄ$ì{ËfèСhذ!¶nÝjíPˆˆˆˆÈ˜’ÝcO`ÙlÛ¶ 6lÀŠ+¬ Y@å”ÈBØXvÕ«WGVV–µÃ """²;.ño[GákÙ/ã™’Ý+iOàÌ¡|üCA‰±§É‘%8Ö{Ïä<Õ¯,¾>^Jv=eWµjU$''[; """"²&d÷xO`Ùy{{ã™gžÁ˜1cpðàAk‡CDDDDeÀËAÉî±'Ð2®]»†^½zÁ×××Ú¡Ù•ò¸ä³(LÉîñžÀ²‹GLL Þ}÷]k‡BDDDdW,=è‹9x9(Ù=ö–]vv6ÜÜܬY“@²{¼'Ð28B(‘}`Hv=e÷ï¿ÿÂËËËÚa‘ðž@²{¼'°l† ‚ŒŒ ÌŸ?ßÚ¡‘0 $»ÇžÀ²Ù¶m›µC """" âå d÷xO Ñ#LÉî±'ˆˆˆˆè&d÷ØHDDDDô“@²{ì $""""z„I Ù=ö=Â$ì{‰ˆˆˆˆaHv=DDDDDð9d÷ØHDDDDåánü}Ü¿oí0JŒI Ù½’öÎêm퉈ˆˆÈF¼?óˆ¢øèGt¿!B£Ö<,òÍñ¿ÿ}kÕ˜™’ÝcO •'A ć¿A€( P*•FçYï $»Ç{‰ˆˆˆˆaHv=DDDDD0 $»Çž@""""ªÛ·oGjjªAYZZvíÚe¥ˆŒcHv=DDDDTöìÙƒƒéÁÔÔ4 ö<8håÈ 1 $»Çž@""""ª+V¬@‹-ðT·n˜9kúôí‹fÍšá‹/Z;4LÉî±'ˆˆˆˆ*‚T*Å7+V ,, ß|ó-:t耯¾úRiåJ»øˆ²{|N U©TŠË—#¬cG ò TŠÇBäW¹RR¢rÀž@""""ªHR©£F¬t=€y*gTDÄ{‰ˆˆˆ¨¼ää䔨¾F£.§HÌÇ$ì{‰ˆˆˆ¨<8Êpêø±-óOTåÖ½+I Ù=öQyèÞ£þ¹r7o\‡F£)²®(ŠxðÑ1±èÖ³WEh†!»ÇžÀŠq;ü2ÒbÐhp[¸Õ¨bípˆˆˆˆÊ@ 2ò(vîØ^ä0R©ž^^ëÜ þ  6Ÿ¦$'Y;ªäò;s›sLñ¸+¬ZK_Tké %TPrÿÑcÂ? @Ÿ Ú ^JDDDDDôaHDDDDDô±ùËA 6&û÷‡C­.Ùp«×T Ê)¢âõð϶ں+›»ñ÷KT_.—£GžVïv·Å㎈ˆˆˆ€ Ç[%ª_YÎ?-Åæ“Àؘh=zmÛµGûÐP8::™µÜÂùŸãÙA}Ê9:ã~ß¹Í[[eÝ•ÑÝøûxæfÕU(rpâØ1=z¢V»©Ö;""""Ò¹²ç[›;ÿ´$›OÏž=‹^½ûâɆ !Š"´Z­ÙËŠ‚ˆÌÜ¢‡rµ4gÝ.—;:Vèz+;Q‹M)££º<Õ ~~µaµ?B[;ˆˆH'ï|ÜÖÎ?-Éæ“ÀäädB«ÕBÅ-«Eh…’-SVÚ‡1Êd² ]oegîažºþþHÞñG9FT4[;ˆˆH'ï|ÜÖÎ?-Éæ“@A “É 5òpFQqéüYÔôõC-_¿Âó¡Do¼%ˆ¼>[!Š¢Á¾Ù¾};öìÙƒ+V@*-<~‘ƒLVáï]~¶vÜ‘NÞ9gÁóÏø{w‘øà>š‡´‚D")´œµÏ?-Éæ“@ÀøIµ(Џtñ<23Òܺ má7L+Âì™ßÝ„g‡(òµ9´ì2ªà{Ø©S',X¸oLœˆoL$‚ÖVÇQe`©ÿ‰ˆ*ƒ¼óñ‚çrž^^ø÷æu\ºxÍšMí…}$ºrEQÄåKš’Œ½ú@«1~Éž(ˆJp2ž¿®©×ÅÆÊ“£ ¾‡U«VÅŽíÛñT·n˜øæ›X±|y¥K+ê¸#"ª ,ñ Qew>^ð\N&s@ÛöpìèD]¾ˆ&M›Ûm"hI Dˆâ£7ðn\þ»‹F›@«Õšì¶UªµÈU™?@Gþº¦^ÇY^¹™Ê¢à{ÕªUEÿþý°bÅ7ëØ£F´RtÆUÔqGDTXâÿ@"¢Ê ï|ÜØù§L&C Ÿšˆ¾õ/¼½½áS³–5B,wv‘jÔ(•Jý´W¨ˆ»ÿÅÁ×ÏR©ñAXtÙ÷–p‘ÇEÁ÷RSÓðçŸaÔ¨Q2ä™Bó­­¢Ž;"¢Ê€=Dd/òÎǪÕj<ˆ¿‡ÀOÀ¯N=dgeZ#ÄrgI ±‘}ëëÈ}áÜY4nit4N­P²Qó×5õº$mÐ#ßô´4 ö<:v耯¾\•îFÜŠ:*KüHDThM\ªÑ¨qñü9Ô¨Y Íš#3#ÝZ!–;;I¶èˆØèÛP©Tpr*ü0ï’ŒÒØ­Ï`}]S¯Íе’%2•EÁ÷ðèÑ£hÞ¼9¾øb!€Ê—sÜU–ú?ˆ¨2x4:¨á9YJr2¼¼¼Ñ¬EÒÓÓ¬^…°ù$P*•"##2ƒ†øÂÑÉ *#—Zc”FŽj\Á!zûõí‹~}ûêæ9ÁÁªÅØÚqGDDDD:úÑA œzyyÃׯ6ÒÓR.gíóOK²ù$ÐËË ‰ ðññ1Y'W¡0ZnQ9:¨q%}XgBB¼¼¼Ê1¢¢ÙÚqGDDDD:¦FLŸ¿Ö?ÿ´$›O[·nƒ£G"  š7o™ÌüMxz¾\¯<ñÔß8]bT|¨Õjpùò%ÄÄÜAXçN™q¶vÜ‘NÞù¸­Z’Í'þ€ýûÃõO‰–=qâX9DdžÓ'OXmÝ•Ñÿþ÷­Ùuår9º÷ì‰ÿ€ò ¨¶zÜäh{矖dóI  ;!ûê8k‡A•”§—w¹µÛ²u›ri›ˆˆˆˆ¨¼ØÇDDDDDDd›í ß³ÛÚ!P%·eã:k‡@DDDDTéHŒ”ÉãããUŽr›Í‰ˆˆˆˆˆ;*µ¾¾¾ÏPÈyø“ïµ@./%"""""zŒ0 $"""""zŒØÍ5ŸîÇãòÅ Ö£\4±Ûm#"""""Óš‡ f-_‹¶ióI`þäoàs£¬åýùÛFýö•Ç@/oP£ž}úY9ûÄýKDDDö$|Ïn\¾xÁ¢¹€M “—ö2 Pi­‘å¹8Êô¯woûEÿš ¡í ß³›‰J9âþ%"""{¾gw±9€¹ÃØl˜—öyfJûKþŒqqz”îùc&ƒ¶Ž‰Jùâþ%"""{R\"h×I`^ØëéÈQj¬ŽU¸:éÞŸ};61´qLTÊ÷/Ù“¢As“ÀÊ›é™AE¢hí0¬"+W è1h8öïÜlñ넉ˆˆˆˆÈ>ÙdO`øžÝè6àyd?&—Çíáe¢ÿÚÂDÐF±·ª|qÿ‘=1unóxô g/`A™ Ý%±Ý<ƒm&‚DDDDDd”Í&‚hó%ÇvNrsgg΀s58£àüðÕgg8;WàŒ&OÖ¶Vèå&-[®ýŸÇá]L‰ˆˆˆˆÈ8ÛM…÷ææ"dÌWuÂ¥²PýšNN¼‚æmNœ¸ '<+*Ü “–­Bç¾Ãñ÷¯,ŸNZ~çÓj˜]¿eµD,ŸÔÉ¢1ÅËÛ¼óÕä¤D«´[^ñ™Ëv“@Q„Vx4 gýkåõ«ÈúûOäœ8×ÐŽpï;h@—4J„†Ö‰÷ñdý‰`n®nÛbPÖ¨q3(r²q'6Ú |àç!wcÏ®? Êê?‰˜Û7 µÝ¸i0;Ääü 6">>Þ ¬V­ZX°`>¾øbºt} cǾ‚™3f jU]r¬ÕjѲUkLŸ6 '¾h×®-’’’ðÓš5˜ôÖ[…ÖWWW‹$€åáô™ëHO΂D*T*Tæ‡{‰Ê¤É¤Édº©RôWçìÙ³ˆŽ‰1:/3#GÅé3§Ñ¦u+@dd$’’“зO£Ëü½g"## %ß|û-¾ür‘~ÚÃ÷nßF||<üëùÔ}ñÅ0dÈ3FÛ¯¬ï ™O¥RA"‘@ùð–-‰D¹\©T En.”J%´Z-d2œœœà’/Y,«‚‰ %@K%oì ,­  “×(ˆ< GV-'x8WAVnølñ÷€?߄Ąû8}"oOÿÓ>Zxcô3ÈU*!w2ÿÀEQ>>&c*‰Ã‡c_x8>›;×"í‘e‚µúÑ9¡ƒƒär9”J%rrràâ⢟—“£ël)D0ïuYÛ²6› bËAóÊTýt.ÒwïÄý‘p Cµ~ƒt½f¢™D×O’ Ó˜ â±àcÝ%)I h×ñ)8»¸`ãšïáîQð ‚ B*‘¡^`Lø²ny­}ŸŠ3'ŽbÍ÷Káìâ HNJÐ hSLòvæfŠÁ7ƺ°ÏÜL1û©Y*´êö,Î,{"( jÈ>CrÁÔº2<ê{Rku%¢Èå(L÷–…³³3¦M›Š×_ úòÕ«WÃ߿ڶmcPâÄ7ðôàg°}Ç }î¹GÛ#ŠˆŒŒD—.] ê/_±ÅÆ1pÀ”©ÕjÈåFëGýó>Œ7'N,¶íü"ÏÝ„€ }4 }ž)…îÈÏWT 7nÜD‹æÍ ÀÒ¸|ù2üýý .ùppp@ŽBÿ€}™Z­Æ÷?ü`V›¯M˜P(yÏ“››‹ÅK–àÊ•«øö›eŠˆˆˆ,OE888@*•B"‘ÀÁÁNNNÈÎΆL&Ó÷€T*Enn®E“@À~’7K±Ý$P0pÆ…}ÇqI*…T&…CPw ¨;œá À!% 2ÎùWp.ÿˆVjùÕÁ߬GvV&²³2 滹{ÀÍÝ#v„VŽ=77ƒ:ÿ\:Qê> ww]ÒxüÈ~h˜\o~'¯§˜¼†ùäõ³ÚÈ/%S…®Cpá°®—¨´‰ D«Ñ'83¾ü  ÊÕ}‹“•™EN”¹Jlûy†.YT¥Z¹ò'€‘‘‘øãíX¸pA¡ž¸°°0ôë×µaÏdDDî܉C¿¾} ÊÿíwÄß7}o]žFJ322P¥J£õwïÚµëÖ•( Ôh´kõh0¡#§®¢K»Æ&ë>~Þì¶óÛ¾Ï1}y®¹<ˆ®’j@׋»yóft  ;–½<½ êä*sñé§s1ïóÏ Ê]‘’’‚M›6㇕+1}Ú4Ìš9³Ì±‘å¹¹¹é;H¥Rý\.‡V«…F£V«Õ×7õÅ/YŽí&î ÌÍBzuÀn2àá­iš¤›{? @"Nœ¸¶ížÄª­ÿ }H]“÷Ôéz u¿×®\Š gO ®¿îò»¸ØÛiŠ×& ¯Ó*´3r•¹lÐ_zëwD@&“aö»ãиyKTóô8ÿ²b¡{K·í¥‘’¥B‹.ÏàÒÝH¦¥JärÝ ¼OꇼHòNÑóz5‚¨ë Ôš¾Ô’þùç ^;BCñʘ1Fë¬_·Ö`:''ïϘ‰  W¯^ó>>¨W¯NŸ>ƒÐÐöF—?pàÚµm[ä:úôîWÇŽÕ³â›oÊ3•¿ôôt¤¦¦ÁÃÝÎÇÇHMÕ ~˜w ‰V«…R©Ôõ@åÇv“À÷Öå #“‚V?½€vÏ¿ŽS?½€–ÓÏèºP$ºAa€Ü"ï§Ë›'"DQD\Ì-\8ssK72g¾:Z­€˜[ב™‘WWw¼6e6œ]\Ѭe{,_ð>˜ÿ->š2Óç,‹«{±÷òuiføL“‚Ãä%‚G¢Jwmsr†MÂãräv%K%ZÝp¾¿ü°þaÿªn´UH1/ |8J¨ÌAуËMßÃctÐýûàÆ8vü8> µZW_‹Ù~§"ž7“––†ÓgÎ`÷®Ýؼe ÜÝÝñë–Íh×®è¤Ã\×®]ÃܹŸ!,, õê=ê Lx€ béÒexõÕWKѨÂöð“÷«77ÝtõÍ‘-¿þŠåË—cÆûï£oKbKcÙòå?îU“ó{ö샇M¯_¿Ž¥Ë–cë¯[Œ,ùH£FÊ'U¬¬¬lH%Rdggëˤ)222áââ¢ï ¬ZµªÅשּׁøˆˆR(ø°ø¼GDH%œÿªÚuª Üû í:ÕÅ©/Ú õûºÞ)$ÈÍ-ú¾<­ Kh´‚®Ç1úßë:èzó¤r4oÙZP«TD ®ýs  ‚°lÁP«Õ¸û_â¢ÿÅŽ_×àY àäìŽéŸ.ÒϦA©R£}'óä-‘HpðR¢þuþä°¤÷æ—”¡BPǧqùØæ'‚µkzâ¯(Ýhù„ÉŸÿ!_Ç`Z¦G~Tä(póæM“óŸ|⠣Ϝœ>}¦OŸfV»ÞÞÞ8v,ŽE\RÚ¶mlX¿Î L*•¢uëV˜óÉÇûÎ\#G /ñ2DDDT±A4:à‹¹£Ý“e;Cn IDAT”ÇÇÇ«å•7? ß³O´„äÌG—½­þþ'ÌX0ÁUýÓ$>xôñ5}øÊ_ü=ÚêËç|Û›eñqáåáˆOîDóà³A]â§ë.•诅nžGUí:uÍNwá{v£gŸ~ÖÃnqÿYWFf&î݇›»›¾,;+~µ}QÅãˆ%ÉSç6*µ¾¾¾ÏPÈyø“ïµ@nåÍôŠaìy{ f|ýðUÄ#À)ÝÛW­ÿS_A(|¹áã&1]‰úmâòiݾ).dbGDDDD%QÅè $&&C­RAîèÈЊl6 ÔŠºûõò¼4nL©Úa´Nb† þmâòóA""""¢’¨âáÁ¤¯’(~,ýJŠ×[^J¦ u[ Àå‹ðà~|ñ ‘ͱÝ$‘,iÙjø÷g"HDDDDd§l7 ,Ãã¨hY¹ÔlÑ—/^@øžÝL‰ˆˆˆˆìˆÍÞÈžÀò•£Ô¢F3ÝÃÃ/_üï$""""²6ÜÈ$°¼åªäªx5íË^A""""";aÃ=ÖŽàñ¡Ò¨Þ¸àòÅ=¸|ñ˜ý\A"""""ªe²ìêÕ«è?`êÖóGHËVظñ—"Û˜3çS4lÔõ uë68{ö¬YÛ7hÐ@ôíÓUL$v ¿øsæ|‚®]»¢ZµjhÞ¬êšèqÛ¸ñŒõ‚~ºMÛvxeìXýtóÁ¸˜ûÙçhÖ¼êÔ­‡ÃpàÀÁb÷ÑÒeËЯ´nÝãÆ‡Z­Ö/“ÿrÐâê^¸p:wAýO`äÈQxgòd|úé\ýüÒìËÒ'¦ÞãiÓ¦#!!£^x!-[aóæÍúeN>ÃP»NÝBÛUÒã®´Ç QQl> Œ‹‹CNNš5k¦/kÖ¼®]»n´¾ 9r‚‚‚pãú5:x›·lÁŽ;õuο€¿wïBäÑ£ejµ£^x={ôDlL4~Z½ 3gÍÂÉ“§ŒÖ?}ú4¶ýñŽ;†èÛ·°sçøùù•yÛSRRpãÆ ÄÆÄ¢i³æhðÄ“˜^žž¸råJ‘ûhܸqÉdÉdèÚµ .G]6»©º§Ïœ 7n ]»¶èÙ³‡~¹ÒîË’'æ¼ÇÆL~çmxzzÂÛÛ ÐoWI»ò:fˆˆˆˆˆl> twsƒ(ŠÈÍÍÕ—eggÃÝÝÝhý{÷â¡R*Ñ1¬Ú‡v@ûÐøîßA©TéëxyyZ.YbB"ü|ýô Ô©[‰‰ Fë7kÚ³>˜…>þO<Ù¯Ž‡¤¤¤Òmp>nnn€‰߀§§'|||0~üx„ï7¹LXÇŽ8z4ÇGǰŽè†ÈcÇyì:†uÔ×[óóÏèÚõ)4kÞ!-[á¿»w‘mtûòT©â¡íâìU¾}jnݤÄ$ÔªUË nþ°ÒîË’'æ¼ÇÆäß/®®®úí*éqW^Ç ‘Í'uëÖ…‹‹‹ÁÐüÿüsAAŒÖ÷ññ§—N?†“'Žãä‰ã8wö,Ö­ýÙìuÖð©{ñ÷ ‚¾ìîwQ£†Ée^~é%<°çÏE®"_-^löúL©Y³&¼¼< zã@M/Ó1¬#"##qüÄ „u숎aq,òŽ‹DXG]xíÚ5Ìû~üq%¢._Â…óçP·n]ˆE5l!Þ5¼qÿþ}ƒ²{÷îL—f_–ô8)î=.¸Ï‹Sšã®<Ž"""""›Oår9ž{îY,Zô%rrrpåÊUlݺ#FŒ0Z¿mÛ6¨^½,\¨ïºuëV‰†ûoÓº5\\\±lùr‚€‹/â×­[ñì!Fë_¿~çÏŸ‡ pww‡««+A—P½÷ÞT¼þú&×¥Ñh T*!hµÐ Z(•Jh4ýüQ#GáÛïþ‡ŒŒ $'§`ÕªUèÝ«—ÉöÂ:vDÄÑ£ÈU(àç燡¡ØàRRRѼysºG)8;;£^½zt—›Þ¾}ÛìýSmÛ´D"ÁªU«èîÜ¿ÿ€~~i÷eI“âÞãêÕ«!6öŽùÛUÂ㮨í$""""* ›OàóÏ>ƒ‹« 5ÆÐaÃ0{ö‡&‡ý—J¥Ø²y3®]»ŽÆMšÂ? ã'¼†ää³×'—˱qÃüý÷øbôK/cî§Ÿ"4´½ÑúYYYxûwX¿5FŽBiÓtÏü»{÷.Ú¶kkr] ¿ø~µëà§5k°nÝzøÕ®ƒyóæëçÏœ5õë"8¤%Ú¶k‡V­Záýï›l¯AƒpssChÝþñðð€¿¿?Ú·o™Lhݺ5 €°°NüÌü½g‚‚‚ÌÞ?e!—˱öç5Xµú'Ôoð/^‚ÁƒŸ†T¦;T˲/Krœ÷¿ýöÛxÆ Öo€µëÖ»]%=îŠÚN""""¢²0vM›<>>^å(¯¼Ï) ß³zÚȬMéiµZ„uêŒÃ‡ÁÉÑÑÚáTZ/yÂÂ0~ü8“u¸/‰ˆˆˆÈÞŒÑ2¯ïEÏ>ý ÍW©5ðõõ}€@Îßì|¯rí¢'ÐVÉd2œ8~ŒIKgΜAJŠ®‡,""0!ÔîK"""""óTÞî>zlýså ^xq4Ôj5<«WÇ×_/A`` µÃ"""""² L©Òyù¥—ðòK/Y; """""»ÄËA‰ˆˆˆˆˆ#6ß¾g·µC """""*wyƒc–•Í'Ïm툈ˆˆˆˆLJIN2˜Ž‰Á™³g”˜XärR©ž^^hÓº üô£ƒ–•Í' R)­Q±bc¢qôèQôìÕõ@&“Aˆ¢"4jîµ( +3÷ÜÇÑ£G!J ®Eb°‹$¢h툈ˆˆˆˆŠu`8Ú¶k†‚ Õj¡Õh A€( P*•úi‰D‚š>5àƒáûФÇX‹Ä`I S@"""""²*µíB;>ìí3/“iÚ¬.GEY,ûHÙHDDDD•ÀÙÓ'Ú±3Ôj•µCylØâ>wtt„Vkþý}r‹®ŸI ‘…ñü´âÙú>¿üò † y¦Ü×eI ±{÷ìÙA®nnnÑ êȤ2<ñD@tt4 æ ‚€iÓ§ã¥Ñ£qçÎ 4¨œ6€ˆˆˆˆìŠ'$6É‚û<++‡ÄÀ-ÖfQAÀ[“&aݺu8¯¾\T®ë³‹$ÐXÖñâ%}Xݳ:r lذѠNøþý¸û_”J%^33ÞŸ~ýúêçkµZlß¾Ÿ|ò fÌœAñôÓL‰ˆˆˆ¨hEõJ͘1;wÆ€ý ÊwìØ‰cÇŽaÁ‚ùú²+W® #3¡íÛmëhd$nߺ—^*ýcÓ~X¹×®^3:/¨q&Œ_ê¶+’©}¾oß>‰ˆ(rÙ.;£W¯^úésçÏaÝúõ0`€Ec4F¼ùÖ[8vìÞ~{vîüï½7‹}I9­Ó.“À .âæ¿7ܺvé‚5k~2¨WÏ?¢(ÂÑÑ¿mÝŠAO†J¥Ä¡ÃGôí¦§¥aöìP»¶–¯XÔ­[§Ü·‰ˆˆˆˆlWQI`Jj rr² ÕÉÎÎFJjŠAyRRfÌœ…ȣƓ˜Ë—.#5-µL—B¶iÝþ…Ê·þ¶Q—£læ2KSq9¤¤$ôëßÏèüÝ»vãÈ‘ôìÙóÑ2‡àæÍ1áµ×L®oÞçŸÃËË«lAxë­·péÒ%}ú`îܹ¨Zµ*DQ@õêÕðë¯[pôèQ ´nœ]$¯ÿ­âáE‹!))àïï>˜…M¿l*°˜ˆ"ÒÒÒpçN Q£†hÓº5:uîŒÃ‡ÁÑÑîî˜=û#ü½{—Ñõ(ê|1/,PG«QC.—*{Ò$|³bzöè^¨©S'Oaì+¯è—ÑjµÅöÜI$Èd²"ë¼÷î{ý⋨h;ç¾&ã|¸ÃÍœ¿~Ý:4oÞ }z÷6¨¥V«Ñ¹S'Ã}'ŠEîs‡âÓ­ÁƒëŸ ˜§Zµjèß¿?Ä|e–dI ±>kæL¨Ôj€‹³3¢._ÆÚuë0jäˆBË^¿~«ú ááû±ë¯?‘™™‰ºuë>lWD£Fàââ‚S§N¡mÛ¶±IDDDDdÊJÄļê$%%£zµê…Ê ˆß~û 99 ¸¸8ëËoݺ…´ôt4jÔH¿L×®O!þþý"có­U GLÎ_¼d “’ðÝwßÚÌ¥ @û\Ÿã??==_-^‚Ý»vÔOMM…‡‡¤Ri¡vŠÚçÿÞ¼QŠ-)v‘ªT…Ÿ ²y󤥧jÕª…¦Mš ~ýú3fŒ¾Nûö¡P©T Á²¥Kñôàg V«±nýz<=hT*DQ×þ«c_ÁÊDpppEmÙ(cç§yFŽ??¿BuΜ9ƒú]vÕª µ;gΧxå•1eû÷‡—)¾%_/¿ü Ó§MƒF£1«­ÊÂÔ6i-4ZÉù­ZA •JØÃýzàÚ´ic´¢öy^}‰¤¼†x)»HeõÎÎÎðqô¸¹º>ìÝ5üÆ%&& …-ó]€bî§Ÿê늢ˆ§žz ïϘ‰ÜÜ\899•ëö‘m+ª-44´P»wï!òØ1,Y²Ø¬Þ·¥Ë–!..Îb½u …Ó¦MGZzΟ;‹qã'@L~ç2·]Q,ÑîîîuAÀwß~‡éïO/õ¾fXŒ½+üË–~ ˜9ëÌûi¡7ïÞ½èÖ!!ºÞ=¥R‰ØØ;øì³¹Ëåúo?DQ„L&ÃäÉï 555kÖ¬€­"""""[U’d!::¯Ž?ønnnE.{õêUÌŸ¿™øå—_ “ÉÊœF=Š™3fbè°¡xçí·!‘H°é—ýÒËÐh4xïÝwËÔ~E1µL]~kÎ|¥R‰÷gÌ@½zõеK‹]»pþçi§´ì" 4F*•ÂÇG×(‘Hà “!-= pttDFF.G]ÆðáÏC«ÕbîÜÏP¥J|ÿÃxó͉ˆEµjÕðî”ÉP*•€aC‡ênÖ%""""*ƒÄÄDìÚ½ÂÕ«WñÑìM>“N¡PàÃgãÄɨR¥*^}u,ž{öY‹ô.}µx1"""ðã+¤/wvvƺµ?cÔ¨P£F ¼4ºôÏ!´6gggüï»ÿáçŸ6:_‘£À¨F*Ÿ?þؾÏ‚÷Þ³\"\Û·š·†ÜѱØzò;}ò„Åb°‹$ÐXFž““ƒõë7~M›6D`è°ç!hµpquAÓ¦ÍвeK9µFƒ ë×!11›·lÁî]»‘œœ ¥J…_6mÖ·;ïóÏвeË Û6""""²=Åõ¥¦¥!)1 ã^‹:p$““úôíƒY³f<²À½RãÇûS¦mÏÉÉ ëׯCvvágVF¦bœúÞ{˜úÞ{%^¾[·nxó͉ððð(²}[d·Iàш#úžÀ<ëׯ3º|×®]еk@Íš5ñö¤I%^QžâΟhÐS¦L6»~Ï=̪WRï+ÈÙÙÎÎÎ6qþkéÛµk[.íVv›Ö¨QÃ.ß0""""ªüxZñ¸ÏÍg·I ‘µðü´âqŸ›Oj툈ˆˆˆìEýO"áAÑk'Ëâ>/9ö=F˜=Fl> Ü²ÑøˆŸDDDDDD•AÏ>ý¬‚›OŸe»®$""""û3cÆ ,X°ÀÚaOIN²v80 ‘UædÄ^qŸ—ŒÍ÷U&‰„cVT0[Úçûcݰ?ößR,é†Á–‰I ‘ÙJ2bOlmŸ?;¨DA„V! ´" "”j-DQ„V0,œ8qÌbëgHDDT åää\]]­ •”-õJÙ [Ü癹h‚ <ü-"W¥ ˆ…Ê==œ,ºnÞXÁîŸÝ†ØU=»ª'îŸÝV¢eѦM|ÿý÷¥^ÿ§Ÿ~Šyóæ™U·}ûö¸xñb©×eëF…&Mšà7Þ°v(ÈÉÉÁ¬@«ÕâÆFçi4šb—‰‰ÁÞ½{‹¬sáÂ\¸p¡TñUJ¥QQQ€sçΕëº*úï4$$×®]+÷õ”䳪8sq~úé'lذÁìú+W®ÄÊ•+MÎÏÉÉAZZšÑy»ví28R«ÕˆÇµk׎eË–aïÞ½øë¯¿ð×_áܹsú× Ðh4×ÿÄÅÅ!99çÎ+ô£P(ôëùøã•J…Q£FA©Tbcc1yòäBqîÝ»ÔOgff¢OŸ>fشi6mÚT.m'$$`„ ˜0aJ´lll,®\¹br~tt4ÞyçƒumÛVøüáüùóú÷äÁƒˆˆˆÀÁƒ ý¤§§›\—­>oÛ¶ 7oÞ49?++ËègÁo¿ý†ØØX“Ë¥¦¦–ø}-.©¬çX–üì­hæ$€)))˜7oRSSQèçøñãiåÀžÀ –{n†~ ˆùmÐzH‰–ß¹s'|}} •:ÿüó.^¼GGG³ÛëÞ½;Þ|óM<÷Üs…æM›6 uêÔ1«Ö­[cõêÕ6~¡òòåËqòäI¬_¿^_†ÀÀÀBeÓ§OÇàÁƒ‘••…iÓ¦aß¾}¨Zµ*&OžŒÑ£[Ô|FÿBqŒ7sæÌüøãزe ®_¿Ž#F`áÂ…u7n܈•+W–é$þÀ¸~ýº>‘T*•Xºt)^}õUxyy™ÝÎùóçñí·ß¢~ýú…æÕ«WR©á÷9£GÆÊ•+áì쌷Þz Ÿ|ò ¼½½K½ù¥§§côèÑ8yò$݇î²eËгgO,X°ëÖýØ–ÔÔTüñÇèÝ»7Ý{åà`øQtúôiº“÷¼u‚™LfP/22™™™Ðjµ*• …¹¹¹P(pqqÁ믿@w"|ëÖ-Š+)) ‚ ÀÇÇÇ ü7Þ@\\œA™V«Ezz:¦M›†!C ÿ §¤¤`úô騵kÆWî‰ •M—.]°zõj¬X±;w6úy˜_ff&¶oߎsçÎ!##5jÔ@ß¾}ѵkWƒz_~ù¥¾7Ð}!ààà€[·néË\]]1uêT\½z&L@Íš5õó²²²ú²à‡~@ãÆ±mÛ6$$$`Ê”)…büì³ÏлwoýßV\\fΜ •J…*UªÀßßÿþû/víÚ…!C†@©Tbß¾}prrB—.]ðÏ?ÿèÛ«Q£"""°nÝ:´hÑB_޵k×¢iÓ¦€&Mš`áÂ…øúë¯Ñ°aC¬]»ãÇÇìÙ³ >¿ólݺÝ»w×'‚999¸wïžAbØ´iSƒ¿Ks÷A<09OEüöÛoúÏA Õj¡T*¡P(ô?þþþ;v¬Á²§OŸÆ»ï¾‹>ø¢(â¹çžÃâŋѶmÛ"ã€Ý»wcîܹEhñÉ'Ÿ`̘1ÈÉÉAFF1š:uªþD2ïÃY­V#::ýúõƒ Æ_|{÷îéß‹“'O¢cÇŽ€-[¶`ÅŠHMMÅîÝ» þÓ¼|ù2ÒÓÓ!“É —ËáììŒsçÎaß¾}h×®Ú¶mkðŸú™3gðÓO?á‡~(´‡Fdd$/^lPþÝwßLŸ8q³gÏÆ³Ï>kp<åçê꪿„¯$É>•±“VK:pà€þý÷ññ èÓ§Ö®]‹-[¶`Ù²eú“á5kÖ`Ù²eú¿å˜˜¢S§NtŸo¿ý6¦N •J…zõêaÆ ˆ‹‹Ã’%K°xñb(•J¼øâ‹˜3gš4i‚^x*• €îøïÑ£àÔ©Sˆ‰‰ÑÇ™­[·B*•¢ÿþ¨W¯ ^~ùe¤¤¤`×®] AHH¢££‘œüöÎ;<ªbmà¿í›Þ{ ô ÝFSŠ€4¯(**¨\ô‚ŠØE.VÛ½bù¼ØQ"MDi* ¡&tBé½'ÛËùþØì!›Ý4@$z~ÏÃCö̜ٙ9³sÞwÞwÞ)¡wïÞ¢P}ðàAΟ?/–§Õjñóócøðá<ñÄâõÚBñâŋٴiÜrË-TTTPZZʺuëHKK£¨¨ˆS§Nñ裊uùDT^Ú¶mˬY³9r$sçÎE¥R¹#£ÑÈ«¯¾JRR«W¯&&&Æ-ÏG}Ä/¿üBEE~ø!³fÍ¢GtéÒ…É“'³cÇüýý™:u*à˜w^{í5¾øâ t:sæÌáƒ>`üøñ<óÌ3â8 ZþüœœœÌž=®û£ÒÓÓAü-\wÝuõ*ZÎöšL&L&EEE¤¤¤Ð®];—Ô+;ý IDAT9ÄjµòÓO?±yófåÔGcV©Ë)cýÑó^K¡¡>ONNæÑGeÞ¼y >@4 4™LÆ[o½Ett4üãÿ C‡-Z1—FÌDwð=Úßþ2/ù$ï¿ÿ¾˜žÍ¦M›\\ª««ùþûïÙ¼y3AAA.ßÕ¥K|}}=Ö£¶ùG3gÎ6lØÀ}÷Ýç²üöÛo{Ì?zôhV¬XA@@€xM­V‹Vn, =ö&“‰7²hÑ"öîÝËäÉ“Å{œ+Èà°²Î;—ÀÀ@öíÛçfÑ8yò¤h±¨Ëøñãyýõ×Ñét.ÏÌIEE¯¾ú*ùùù|òÉ'´iÓ¦ÞþðññaÀ€ :T¼Þºuk<(ÖmÁ‚x{{‹Úk¯½ÆŠ+°X,óá‡Ò»woòòòxöÙgILLD«Õrÿý÷‹‚tmÊW_Ùõ]oˆƒòÐC‘••ÅÈ‘#Ź ±:¼ñƬ^½šŠŠ bccyñÅÅþil®j¨Ü„„xà~úé' ƒ‹ß”:7•¤¤$^}õUÖ¬YCdd$ï¿ÿ>Ý»wgèС :”ùóç³xñbËÜàÁƒÅïùïÿËìÙ³éÓ§àê>ÊÈ‘#9qâsæÌáÝwßE§ÓðÊ+¯ðØcñÐC1räHѪŸ™™IëÖ­0›Íb~»ÝŽN§C.—#Û·o§¨¨ˆµk×b6›ÉÊÊ"##ƒ-[¶àååE—.]øöÛoÅòºvíÊŒ3Äò|}}ùý÷ß쟂‚þõ¯1aÂÀ± ˆóÙ† Ø¿¿˜ÿ»ï¾£oß¾ 4ˆ3gÎpë­·º<óßÿââbºvízQýôèQvíÚ%–ç\Щíâ?xð`À1_Ö¶ªåçç3sæLÆŒÃW_}…Édâĉ¢BwèÐ!ž|òIâããY¼x1J¥’ÔTG¤?¥RÉâÅ‹Y²d #GŽäí·ß¦oß¾bÙÉÉÉ<þøãÜ|óͬ_¿Þã8,--¥_¿~ôë×p¸Œ.\¸G}TôöéÕ«999”––ŒÍfãĉäççc2™xòÉ'9þ<_}õ .¤¤¤„ÜÜ\Ñ£¤¥ÏÏcÇŽßãNž|òIÆŽ˰aÃ\®çååñÀ`4ÉÏÏïS*•¨T*q‘"66– ¸¼k·lÙÂàÁƒÑjµëVY¥.UÆò4ï>}šgŸ}–'NÌܹsµ^^êÜûøãóé§Ÿ’ŸŸÏÔ©S™1c<òIIIôë×Ï>ûL”SšS¿ììlæÍ›Ç¾}ûËåŒ9RœS.¦ÏCCCY¾|9ƒ‡~˜yóæa4=æ v“•kµ¸¸8†Nrr²¤J4NæòÛÑé · •RŽ\.ƒ¼]èõz2—ßNë»V]tÙ«W¯fîܹôéÓ‡wß}—¢¢"°Z­<ðÀ̘1ƒ|}ûö1uêTxà‹úž'N°víZÀ1!¯Y³†;×_­[·º¹*ìÚåhßĉQ©TôîÝ›ÄÄDzõêž}û8p ‘‘‘.לVÀ¬¬,ôz=ݺuËëÞ½;+W®lRz]V­ZåòrºÜ˜L&¶oßÎ×_Íž={ø¿ÿû?·—Sm‚ƒƒY´h‘›ò¹zõjÑ ÇÉÂ… ¹ýöÛÝÀÂÂB‚ƒƒ=*{V«Õãês]l6[£«•2™ÌÍͧ¼¼œO?ý”¡C‡Ò¡CT*U³V5GÍ÷ßïâ* ………¼õÖ[Ìš5K ë°ÁñòïÙ³§‹àQ—¼¼<:wîì1M¥R1pà@öìÙÈ#\Ò¾ÿþ{^~ùeúôéCŸ>}X³f íÚµcäÈ‘F¥RÉÓO? À¼yóê­Om:Ä÷ßÏŽ; !//™L†ÝnçÞ{ïeذa|úé§”––2yòdÚ·oï2ÆÊé±ìú¾³1~üñGÖ­[‡ÍfãÖ[oç‚Æêê|>¬Y³†‡zˆ#GŽ R©œ«šÒÉÉÉ|ÿý÷ncµ±:<óÌ3DDD0eÊîöNÞ|óM-ZDdd$à°¸×v~öÙg>|¸G÷Ì——ÇSO=Å¢E‹DáÞILL ÕÕÕ<÷Üs,Y²„ŒŒ žzê)ž{î9¾ûî;|ðAn¼ñFÑjTRR"Zšo¸áÑÂŽý„÷ÝwŸ¨`´oßž‡zˆW^y›ÍÆO<ÁðáÃILLD£ÑÍfcAAAÌœ9»ÝÀ¬Y³°ÛíìÛ·ÏE«ë*ýÁ°j•ã}æÜcåTü ÅŃÁÀâÅ‹E‹ÒÉ“'‰ŒŒtYÄܶm:t¸¤þ÷÷÷ÿv ñµ¯yÂjµ2mÚ4žþyLii)wÞy'‹-½GX²d Ç÷mž:u @TZÌìÙ³]Üõ?ÿüs–.]Ê»ï¾+.x¢°°P\ÌX¿~=†)S¦ðû￳aÃüýýEEÇù.0™L,]º”””âãã±X,L™2…-[¶ŒZ­æ‰'ž¨÷7⤥ÌÏÙÙÙ. Îkûöí½c>þøcââ∊ŠâÇ$99Ù£;èœ9s¸ë®»ÄñY›o¾ù†—^z‰ªª*7¯›†hn€’æÊXà:ï9Çí]wÝÅÚµk9zô(wÜqíÚµ«×ý·19±)sï–-[Ø´ieeeŒ3†C‡ñŸÿü‡ÈÈH¦NÊÒ¥Kù׿þÕ¬úÙl6î¹ç† Âÿþ÷?”Je“öO6Ôç111TUUqÿý÷óÒK/±lÙ2ï‰óçÏ£×ëéÞ½;cÆŒaܸq ~Wnn®›¬ÐÒ”À+Dqn:}&³€—ZB!ÁN¯ñ7´þ7Z_d¹û÷ï'//Q£FáççGÇŽY¿~=3fÌàСC˜L&|ðAd2×^{m£{&búôéâË£î~OÔÝcwíµ×²oß>f̘Abb">ø |óÍ7âµ™3g7!™Læ²òæãã#®t7–^›œœöíÛçææw9øä“Oøå—_HOOgÈ!<÷Üs<ûì³´oß¾I÷×^.))aÙ²elÚ´I¼öÝwß‘’’â1˜Á¯¿þêbÙ¬Åb©W üüóÏ‘ÉdLŸ>1cÆ4¸O ""‚-[¶¸\S«Õ”••ñÄOPPPÀ°aØ0atS"òòòxå•W8uêJ¥¥RI§N8xð S¦Lq«§s¿Ï½÷Þëb­¨¨…«ºœ?ž¤¤$«ª'ôz½G¥ÍÉu×]Gbb¢‹ñÜsÏ‘••ÅäÉ“‰',, £ÑÈÎ;yóÍ7Ù°aƒÇUíæâåå…Á`àôéÓ 8PTFŽ9BVVÏ<ó …‚ˆˆ¦M›Æ?üà¢&''×›ï‘GñXvii©Çë1{ölqQbôèÑâ\ÐPê®ÚßvÛm¼û>}³ÙÜà\ÕX¹÷߃–½úê Vx‹Pž°Ùlœ;wÎEX9~ü8/¼ð‚øÙÇÇoooª««],ôiii<öØc,Y²„€€|ðA{ì17wâ>}ú0sæL>ùä¶oßÎòå˘1cÇgéÒ¥=zTÌo2™ÜÜÉëÃb±°jÕ*æÌ™ƒN§cëÖ­ 0€¯¿þšiÓ¦ðÕW_1{ölñž_|QªbbbHKK#&&†Î;3wî\Þ~ûmþýï‹ÖCpôsS,o¼ñ:uï»þúëÙ³g‹xàÀQQ¿”þo.?ÿü3­Zµ­„ÁÁÁLŸ>½{÷rï½÷’““#*§;vѺíõÄ{ï½Ç²eËèÑ£GƒuèÔ©ýû÷çÃ?dÈ!<ñÄœ;wŽ;vpýõ×£ÓéHIIaöìÙ¢ª··7‹-ÝA333III¡uëÖøøø T*yýõ×]ìZòüËO?ýä’§>K 'Apy_yZËÈÈ ##ƒ—^z‰ââb&L˜àb1nˆæFªl®Œ®óÞ¡C‡ÐétâÂCBB“&Mbýúõõ*ɉM™{~øaüýýñ÷÷gàÀtîÜY”ÆŒ#*oͩߑ#G(,,ä…^ÛWÛš^ õy~~>÷ß?*•Šk®¹Æm¾ÿâ‹/ÈÊÊrÛvã‰cÇŽ‘‘‘qI2õÕ€¤^2—ߨ@U§yú‘ ÕgÀ»3VÁ~ÑÖÀÕ«W3dÈqujüøñ¬ZµŠ3fP\\Lll¬ËÄVûeÝ\j¯€iµZJKK›uÿ5×\×_~Iyy9%%%´mÛ–ÐÐPæÌ™Cyy9gΜ•AÀh4ŠŠ^m7ÆÒkãtmêìæÐ«W/† BÇŽ/ÉýÒb±ðÈ#pÿý÷»†>|87ß|³›pkµZùøã=ºó †CÊ'&&rß}÷¸)wMÅÛÛ›§žzЧžzв²2¶oßÎG}Äœ9sX°`£GóÞwß}<üðÃ|ôÑG€ce111£ÑHNNŽ‹[eUUS§NE«Õºô8&ðú””S§N¹X…ëC­V‹û©À!üúë¯Üx£ã7Ù¹sg—}‡fæÌ™Üpà bPgß^ýõTVV²nÝ:qñâRèÖ­O?ý4¯¼ò çÏŸgذa¼úê«äææb2™\„‹ÅâÖÞ†òÕWv}× "TÛMÆÛÛ[ŒPÙX]¿ùæ¾úê+JKKQ*•äçç£ÓéD÷Ðú檦ôAcnîõÕ¹©èõzÅ¢¬¬ £Ñè6N ƒËâÔúõëyã7xë­·Ä@+W®äŽ;îp âÅwÞINN=ö˜h ºýöÛyï½÷øå—_xë­·Äü …B´ÔÙl6¶nÝÊùó牌ŒtÛ¼}ûv233Ù°a‹…ŠŠ , K—.e×®]Ìž=›uëÖñÓO?‰^+V¬÷ßvÛm”••Ñ¿n¾ùfV¬XAhh¨›ådéÒ¥b½–1çÞ¬¬,Qa>|8ƒ bÆ €CÀwÎàP*òòòÄüÓÿv»GyDLsF…tºm:óÔåÌ™3n¿¯)S¦¸) ‚ ðí·ßŠŸ ºSyÇþÆÚ÷ÌŸ?ŸþóŸ,\¸ÐÅU¼.6l`÷îÝÈd2Ž9ÂŒ3HHH`È! 4ˆœœ222øä“O1b„¨ˆšL&“Ñ£G‹GNç¶Ç¹%ÏÏNŽ?NZZáááÍÚÚ±sçN^~ùezôèÁ\ÆŠ“åË—£V«ùàƒðõõeèСüóŸÿßÉ?üðÇ÷è*Ú\KàÅÈXµçµââb¢¢¢\,ϱ±±. GuiLNlÊÜ&þ­Ñh\EµZ­øL›S¿‚‚bbbší²ßPŸûí·Lš4Iœs.–‚‚}ôÑ‹ÚRpµÑ²kßBÈÏLeÀÝS¡ð<„â/áç¥bÖ³ÏCÙqúM™ÊÁeK›m 4lܸ›Í& &“‰ÊÊJNž~~~DDD°lÙ2"""ÄɧU«Vxyyqúôi±m§N]EK¯ÍªU«<ºg]ê³Ä5‡üü|yäÚ´iãv…sm¬V+O=õ}úôñ¸2–””TïŠlFFÇŽóèòr±1yòd&OžLii©‹ðYUUEEE…‹Ë–\.çÚk¯u‹¾UYYÉÔ©SyðÁ=Z'KKKÝ\b“Ýh];tèÀ™3gÄÏ?ÿü3Ë—/…ŒÖ­[“““#¦?žªª*¦OŸNqq1ÞÞÞ”””ðúë¯Ó¿"##]Âã7†J¥rr*++]ö©S§2uêTÊÊÊxüñÇY¼x1ãÆ#88˜;w6ø;sîã¨/Ÿ§²_~ùåz¯_ ÕáÌ™3,\¸ï¿ÿ^´¢Üpà ‚Ðè\ÕXÛ®¾¾¾”——‹VöM›6‰Áœ¤§§à"tèÐ 6¸þ åË/¿$??_¼vòäIæÌ™CQQ÷ß?6›MTÀÀ¡L|þùçüóŸÿä¿ÿý/ݺuÃßßŸŠŠ 1:²——×\s ©©©”––²sçN1pÌÔ©SÙµkãÆ£¼¼œcÇŽqàÀvïÞÍ-·ÜÂO?ýDRR’íÎl6»5’Édœ?^\=Ÿ2e K—.u™Kžxâ —@,_~ù%€hi„ ®˜ƒ rÙ»Eee%z½ooo6oÞ̈#Äç}1ýìb­rF.®íæxìØ1ê‘#GÜ®_ޱwÛm·ϬY³Ø±c‡‹¥£6“&MbÒ¤Ib{- §OŸfÿþý,Y²™LÆÂ… ]çN:q÷Ýwp÷Ýwsøðaž|òIqŽ©+ ·ôùàwÞaÏž=Üxãþøc—´~ýúQ^^î2Þ<1bÄ6n܈ÙlÆh4²páB—³ËüüüÄÐâNÖ­[G\\7ndåÊ•¼ñÆ|öÙgX­V¶lÙ Aƒm›“nݺ‰Qsrrضm›˜–’’BRRv»___¼½½±ÛíôíÛ—ÀÀ@Þ~ûmqÏMZZšÛþˆ†òÕWv}×/–†ê ÓéÐjµ´jÕ pìvZˆ›«šÚN–/_î18Ì¥ “ɸ馛øâ‹/¨¨¨àã?vQnªªª˜;w®ÛBN=::š¼¼<ÀDeÑ¢EÜzë­<ýôÓ±xñb1ò%8˜_~ù…={öššJBBß|ó †=z°|ùrQa0¬]»–^½zQUUÅ8pà€(øŒ9’S§N‰Ï`ãÆÌ›7E‹‰ÿœçnÕ¾6oÞ<6nÜè±ûôé#žAºnÝ:&NœxIý¿cÇ:tè þs{¨}mÇŽnõ5j?ÿü³hɬ™LæòŒzõêE¯^½\®yšÓ;vìÈ?ü€ÑhdÒ¤I ºä¿ñÆŒ1‚ &ðù矣ÕjùÏþÃÒ¥KINNv9’gÅŠ 2„•+Wb³Ùøì³Ïøè£xá…øþûïùóç3oÞ<>ýôSžzê)Þ{ï=ÅUáÚÌ;—¹s犟'OžÌÿûßfÕeÖ¬Y¼ð <ùä“ÌŸ?Ÿ»ï¾Û%0Œ“k¯½–C‡¹¬8/¾øÂÍ?ûÅ_£¯ùúúòüóÏ»(¥;ûhìØ±Ý#ßyç/^,~^¾|9³fÍâùçŸoVÛ›ËäÉ“9{ö,]ºtaĈìܹ³ÁÍæo¾ù&§NWçÍ›'S¨3”|tt´Û¤ÿÀP^^΂ þ°ƒ˜=á ©£S§N´mÛ–ääd²³³™8q"£GnÒ>'/¿ü2sæÌaéÒ¥DGG»¸ƒét:ž|òI²³³Å½?þ8r¹œeË–1þ|víÚ‰gœ4”/00ÐcÙ™™™¯_, ÕaèСŒ=šaÆC—.]D˽R©lp®jj8Ù´i½zõjÒ¾ æð /0cÆ –,YÂÓO?-ZÞyçV®\ÉŒ3ê’kã<ÇÌh4º¬r;g¶oßî¶:^TTä’îq))) 8òÚk¯qÓM7qàÀ:vìÈgŸ}Æ›o¾).n…††Oee% …‚¸¸8´Z-6›V­Záëë‹ÕjWé•J%áááøûû³k×.:vì(Zòär9¯½ösçÎeýúõ 4ÈMöd w‡ŒŒ ÊËËŽVÎóU½½½INN&22’ˆˆˆËÖÿÊ|À´iÓ:t¨Ø®øøxño›Íæ&”—••¸›‡Â_ך¡V«Åh¹'NäÿþïÿD¯–Ú<ûì³ÌŸ?›Í&î­{ã7Äc+jzûðÃ)**B¡P°bÅ ÐjµÌŸ?ŸmÛ¶áååÅ‹/¾(þW˜Ÿû÷ïÏ;ï¼ÃäÉ“ÉÏÏçÈ‘#lÛ¶ãÇsÏ=÷°zõj‹v\\ƒ_|‘„„4 ‹…ªª**++]¾þúkž{î9—ï;v,Ó¦MC¡PðÕW_±zõjÀá6Ù»woÚ´iCïÞ½ÉÍÍ¥sçΗM)ñ$cÕÅÙÏÏ<óŒ8þûßÿnÐóçrϽ ÑXýjÏÛr¹œ¥K—òüóÏÓ³gO £Fjô}{1ÖW§eÒb±4¸ïÜF³`Á—kS¦LiÖ÷5Ä­“§`· ÍVìv›]¸¤…ÙÆðÔZU^^žY­ºzõÃí[~¯³câÝ7¢‘ÜW{^mØl|Ý õûl;q®¢L›6M<øUâcÚ´iœ:uŠ!C†ðæ›o6ù¾%K–0qâÄzƒ…8Ý·šÊž={ÄÕëÆ,x‡v‹8·sçN‚‚‚èÑ£‡Û¡òƒ^¯çý÷ß5hê=»wï&-- £Ñˆ··7ááá 4Èã9zÎó¨ê tn{Qj#$55›Í&®Ì×eÛ¶mâ&ö¦Í¶mÛÈÏÏG.—˰aÃþ×j‰–ÇéÓ§‰‰‰q[Ì™>}:Ÿ~ú©›°yófÖ¬YƒÅb¡_¿~.ÁXF͘1cÜ~%%%üøã.0NŸ>MVV#FŒÀd2±råJRRRˆˆˆàÞ{ïu™gÊÊʸùæ›™>}:àX {å•Wxùå—±Ûí¼ýöÛ<ýôÓØl6–,YBHHƒ½(²²²˜1c†›åûÿûqqqÜ|óÍnýÒX ”_ý•µk×’@RR’çέÕ'õQ_ÿ7·>uÑëõìØ±ƒôôt C† ÷(VUU5Y~óÍ7¬ÛáÇùè£øä“OÜ„ÐW^y…]»v!—ˉ‹‹#!!k¯½–øøx—ù¼¨¨ˆ¹sçòù矣R©xå•W¸îºë¸é¦›xøá‡™3g:uâá‡æÅ_#¬:ÛÙRçg³Ù̲eË8yò$þþþÜ~ûíââR}Ñ<õz½¸GÖl6£R©ðõõ%&&ÆE)ýæ›oÄ3k“””Ä‘#G7nœ¸Úb±0sæLL&^^^|üñÇ-~¿Ø_‘ôôtfÏžÍ?ü ^›3gGŽÁf³ñ /xœË.¥%\o_¼•[Ç¢Ro•=ÇÿîJ óz°Ÿ†}ûö0e¼CQ¯:³•á£F»}Ùb%**ê€Ð×üÓÕúÛ%%PBBBBBâ*Áh4¢ÑhÜ”A0™LÍ>«ìbÒÒRJ@S©®®¨7R§sßcÝ9NK]}{×®F¤CÀ[µ#s_Î=M£±>¿Òóh]SW¯üÖíža£&üaJ 4³HHHHHˆäå幸p×fýúõM>FBââ¨O8©{$ÎL&»$êWþœ(Šf}¸TZ’òçDRŠÒ‰ IDAT[µÔ¸ZÀ¿ÓœÞ”sÿ,°)\iwPiv‘‰ŠŠ"11ñÏ®†„„„D‹æj±þæô«¥Ï[ ’(!!!!!!!!!q‘”‘+OKïóµ«W¸]6ªþè®—Š¤JHHHHHHHHH\F$«Ô•§¥÷ù•v•Î ”¸Œ´de¤¥"õyóhñ–ÀÿmmüS ‰+ÅC£Zóñ–Ì?»+®ö>ŸÜ×ëÏ®‚ -^ ””~ ‰«‰ÿÛœ)ɨW©Ï›G‹WíÒÓ–¸Š˜5:ŽÊø³«ñ·BêóæÑâ•@ÉÿWBBBBBBBBâjâƒÓ%õ #õyóø (v šÇì1q.Ÿ?øQZ±ø«£Ë°Ù[Ø@•¸hÛ†÷7¥ÿÙÕø[!õyóø (-G¸~dlò­Ã”ô!š„YÌ3©Éö_£ã0˜m$¯äHZåEÕᆮÁØ=§ËÍ;íÆX~RÔ`Þ05ÕF³M¼߯ŸÂ Cº‡°~>FóÅ…ùõóRRe°6ëžNÑ>èL6rJŒõ—›¸0/²ŠMvßV*d\Ó)ˆÝ§JÅk*¥œÈ@5•z+z÷þ¸¦s ÎV\v…»w;Òòõ.ßÙ9Æ¥\Ή¬ª‹.W!—Ñ!ÊGü\Xa¢¬Ú‚Ÿ—’ëºq2«š¬bƒË=r™ŒÛ¯bKRz“c¬©2& ŒdíÞ|±-VAüÛG«@)—y쳫NÑ>Wš)­¶4)¿B.cX¶-þƒk&!!!qñ,þá|ƒ2êÕ*c5GN¼Úh¬Ï¼Ô z·óçpZaþ·t» \5²ÓM‹W[Úž@ãáhsÛÒ×¼}'5« +wçQmtæn»6ŠP5ŸlËlP¸ÐoS‡Äp0µ‚Ó9Õny÷ž)£BoiRýÞšPPÏdÖ¿C 1!ZÖ'æ‹×îK…Þêvmï™2Rru¨•rnêJ»oŒ;ûÏ–q,ã‚ÐÝXzˆŸš›z… ¡Úhã÷Ó¥œÍÕ‰éÃz†Ð.ÂƒÙÆéœj~?U&¶w]b>½Ûú¤m´Úùs:»šŒ¢ Ï&½HÏÈ„0§U߯Ÿ½gʈ ó"6´áèPÙÅ2Š¿Ÿ—’±}ÃYþ[Zµ¥Üõd“ņſZ¿n­|ùåXI“žÝè>áø{»NrhTröž)çL±毦SŒ¯Ç²2 õd{˜<t ¤ÊXLq¥¹Ñúûªñ÷VŠõתåLÁï§ËÖ3„µûcF©¡V:ú£c”'2«ÜúÂlµc­u­¹íoãÅ*0²Õ…6û{)±Øìtkí¸v:»šäôJºÄú"—9”5™Ìqf‘R.C©püS)ä”ë,$§W¢Qȹ¶s ûÏ–Ó>ÒA°ØìŒîÆï§Ê¸¶s ˆc``§@¦ÜM~¹ …4JÕF+÷%»Øˆ:W!*í"¼ñõRò{-…º>Z…z¡VÊÕÔ_.“¡ËP)d(Žÿ-6Ãç*‡B裢¤Êý¹zkÈ鈟—­Â%_Çh¼Ôr”J:£*ƒ¹LF¯Ê­\¥BFLˆÖ%­¬ºió”„„„Ä•bθvüwcZ½é—SƺœÔ•[õ¹·FÁ-ýÂÙŸZŽF%§M¸»Zr¹Œ0µËµ@Ù%Fu F£’³dk&>*n».’’J 9¥%£¡t¹\Æ„œÊ®fõž|"5Ü:0‚Ò*‹¨ˆœÎÖq0µ“ÅN°¯Šqý#(®4»´ÛÙœ¦Ž³ÚùŒf;§²ª±Úöž)C 6Ä /•œ´½ÇûÛExâEz¡cŒ„ù«)¬0‰åölíOTëÊÕÑŒ*ÎèñÑ*˜0 ¹LF€ŠÑ}ÂØ–TŒÍ.0éšH f;V›íG‹)­rX^~â»ÜÉ„‘lO.&«Ø€B.chz·óç`jÅÅ4åŠðP[Î(Õ|ö·¿Ì Ü À«Ÿ­%uåè;©ÉíÜòvõ%³È@~™‰n±¾¤Ô²d„8½Ÿ—’ÜR#:“ÃeÑ¥ Á½L€FÔ¬<•›˜9*ŽÃç*héVA~™‰ÍGаÛnìŠFÁøþؽ§Ë8™UEÇ(ärgrªÉ/3"—9”¾‚rÑA²Š z«\®•ë,T¬Èå2:Çø²fO.&‹‚r§²«éÚÊ—ìC£é¡~j|µJSʰÙrK ¤èëË®Ž}NÉÅ ¬Úa12˜êöcŒ5ô|d2‡ ¢%:XKx€š@z“ ½É†L†øLŠ+ͤæyVÔý½”xkâ÷ù{+)×YÄω)õ»gT¬,Û™C÷Ö~ú¨\,?!~jŠ+ͬOÌG.—Õ´Éõ~­JΠn!øhüp €rg÷¼jƒ•êfº§æ—‰Ñr<£’`?£|ˆ ÷F.ƒ¿åŠùº·òÅG« .Ü›ü2#}Ûûã­Q U)X—˜Od †ô tF¡žŒšÏÓnlÅO‡ ±X›ævÛ”ööhåÇÙ\£¼Ñ¨ômHIµ™ø¶þÈeŽË'[ç8[.Þë«U2¶_8©y:6$æ£P8Æ¿ÕnÇ” 8Ü!+õzÆùQe°0¨{0¡~jÊtìvo%=[û‘œ^‰Õ&0uH iz¢ƒ/(SƒºSi°2<>”õ‰ù”_X-VÈÁjkx ;9˜z¡þJ¹Œ‘½Ã0Zl|¾-ÓÅ¢ç$Ô_Ma…ÙcÙ)9ÕÜÐ%¥B&>“³¹ÕœÍu|F$„q6Wçò\Á¡ ÿRãò©”ËèÓ>€ _ùe&bC´bš„„„ÄÕÈÜ íywùzÓ/UÆš9*Ž#itˆòA©±ô×lBüÔ %,@ƒÁlcß™2Nd6¼m¡19Ñ×KÉM½B‰ Ñbµ $¯ 1Åñ®˜9*Ž}gÊèÝ._/%GÓ+9’VÁè>áDjÈ-3²qæšw@sêçï¥dXÍ÷ œË×±¥‘­9 õ¹ÎheíÞϨªQÊ}$“Z)#«Ø±kµ œ/ÐîÕè»×O«Ä&v;6»€V%G ±µ¯_n§Å+W³™ÕÉÚ“¹üvt:äíB¥”#—Ë oz½žÌå·óø]«x§É‰ nmîëËÞ3e䕹¦s Zµ½É†\.cÜ€Ÿ«àйrbC½øÇ5QNs5OÛ©§š´Ð5+v;ÜïK—ŽgV±=¹ˆö‘ÞnÂgë0/TJ9§²«°ÛòÊŒDkÉ+3¢%»Ø@µÕõZ‰cßX€V‰J!£ Â$~a…‰­ýš”î¼f·_ø[@ Ô_íÒÖºÓ«µ?µœ=§ÊHÍwUΜ?9OýÓ.Ò›k:á­Q VʱÚÒòuœÈ¬¤LgA W¼ÕŠ ueÖ7nJ>.n•:k³Æy—_~=^ìrOm÷»Í½¬Î1¾ éB~™‰¼2#]b})«6“š¯o²RÕÙ¥®ïÌ”AÑX¬)¹Õl:Xà¶×q×Éd2xpDˆ®ÍÿÝ»`çÆ^!|½Ã ZÞœ´ ÷ÆK­àŽë£± 2™ÃEð`j9ùåîî3Mi¯¿·’®­|Ù–\„—Z—FA•ÁJq•‰39Žq¢PȈÔ¸=¹LÆøüv¢„Œ"^j·]Ŷä"Fć±ü·ñžö‘ÞI« ³–uuêX~± Èå2&ŒähF%+vç aòõÑ”V™Eªº4&'Êd0q@$ç õ|¿?/µ‚É×GSRe!¥fA¯]¤7Ëve£U+˜:8–¨ [ŽRe´ñk¢èÙÆgË›U?™ &^Iz¡žò± Ï“Ææý†ú¼BoqxòÜͯÇJèçX0wè«B¥STaâlžÎmkˆB.cx|([’ŠèÞÊÏUàxF#âÃHL)#ÀGEÿŽlM*j°Îk7ni°=4-^ l)r@qn:}&³€—ZB!ÁN¯ñ7´þ7ZÓ´¶Ôu Ñâç¥$5O‡Éb§¤ÊB—?+'*PƒR.…¸¬"ƒ¸Ú^kÜ6lö¯•v$­{ìQ¤'Ì_ƒ TyÌ °5ÉuÅ&«Ø!L…˜/« Úh#¾¿xí`j9‚J…cŸ—Åz¡@³ÅŽJ)oRzQ…ÉÊ€ŽAì9SJD †¶>WºšïÏ”sä\%1!Z†Ç‡’Qd ¯ìÂdäPÚ<÷O^©‰ ‰T­ŒíÁÉl‡[¦­ZNßv¬Þ“ëê~Û@‹Ï¥æ¥Ü±ËùÙ!,Û)ªgoVV-ws»¬Ï½Ãß[Ɉø0ü½•œÈ¬"¿Ü„ÞdC©p¸d^ß5˜å»rÐ/¬ˆ…¨IhÀ¶¤†WäœxkŒL#«ØÀï§K)k$HT–¢ ³Ë>>›]Àj…ã™U$´ `߇ET&sìñÓ¨äØìßþ–ƒÙjgdBz+ÃãÃØy¼DT°šÓÞ{†:ößÖŽþsì—süU«kÑ6Ò›JUtëÕ›lI« 6Ä‹¤óøi•¢"»ãx cú† ! f¯¢#8L0æš<Éç+)®2ƒ&³],·.±!^nÏY†Ãõ¼9se¯ŠÈ@ ›4˜O¥ajÀÕ4³Ø@L°V´|Wè¬|½#Û%ϨÞa¤äê\~;u‰ ÷⣟Òk~ÛÅtŠŽk1s¿„„Äß“§&uà­u© gº àȹ l5ïʨ@ *¥ŒÄÇö“¼2§²ªéãëq¯¾óž†äÄÈ@->J~;Y‚ @•ÁJRZ£}D%éÀÙrŒf;F³ìÅ•fJj¶›¤äVä°ä5§~QAZ|4Jv/•¨¦ki¨Ï}µJ&^)îù«»ï¯w»¼•õºˆ^ß5˜“YÕ”ÔÈ_ueÃçÊ™8 ’±ý"ðÕ*9‘UEI•¥ÞwÕMq:zöŠG¥V£P(Ò ªIhB&ॖSPf ¼ÚÄÍ}ÂQÈBýԜϯÆl±¢7:”<»Ý&*r˜Ì¶&¥¬ü-›Q}"˜Õ¾-%•&NeUâ£UºÔÑ\£”V‰ RÓ½•/…Vl6;v»à±]µ¯Ù»Kûý½UÜzMûΔPRit)Ïf³×ÛOuÓ-V;v»ãs€·ŠQ½ÃX±+»Þûûw ù|…˜¿]¤2˜,vì‚{;Âý½Ø{º„ôB=r¹LÜ?š[…RA§(S®¥J…Œ±}#XŸ˜ÛäßÞ]ƒcHJ+'é|ÓüâÛGzq:»Ò¥|¹L†Ñlaÿ™R¦c÷Ébìvƒ0[í¬ß—ËÌ›Ûb¶XñR+ˆ Ò°é`©yU íJj^U³Û{2³’P V›¹ lv6›@o%q5ûÚdr‚à>ú(É+3¸\?”êêÊë­q¸ý:ÇGzA5r™ã8‘V¡^œÌ¬Äd±c±Ú)­6c¶Ø±X•Ø;z“gEºî8°ÚìØìžÇ\‡(_ÂÔì=í4&ÐÛ‹ürc£ÏØlqh—µóµô-ù¥ÚGx»•¨!ÄO]£d Î¥UfâBµ¤äVÓ)Ú×±ñÞnÇb»t+µ„„„ÄÁk«N78¯]ªŒ%z³xM­”Q©·b2×–ùLDië­Gcr¢—Úñžœvc+1]!—QXnë]®»P³ÕN¥þBy&‹ ޲šS?­JF…Þ‚ÑÜ´¨ÑNêón8ž^A·ÖþóØxW¶ ÷&ÈGɶ#òÖ’Õ¼Ô þqM?Ì'¿ÌˆL7t ax¯~8ïVÞÕB‹W[žÀüÌTÜ= ÏCè ÞXð~^*f=û<”§ß”©\¶´ÆØH{jíOS*dtõC.ƒÇƵîiZ•‚ð‡€U{8WTê/ì1klÏ[í=ˆ®ù„ˈÓÕÒó~ÅÚdëѪäÄ· «Ø€ Í6ª âÛPe´RVíPfËtf,6;aþjrkÜÂÔUš¡Ñt€ü2#_ý|áÆ)ƒZ‘U¤ot_ítÑ‘´‘çb· Èkß+üv¢˜Ô¼º¿?òºÔý>£ÙV¨C ¡]ûSÊÄ>òT÷qþ|±=P5·^ͳeXmc| P‹n¸NNdV¢Qɹíú|4 ,V;Þ%?Î'»Ø@•ÁŠR!ëÓ)ÚÌ"=eM Ÿê¯F¥q$­~—ºmèíÇï'/ø*—ËËÊŒÕf'³HOÇ(NgWѵ•k÷æ^ðËÆö‹àçäBìvòj3Þ¥˜ÞœöM¯àÆ^aƽàxv©yÕü~ʱR¨RÊy`D·ç©7Z‰Ñ68n„šò‚|Uøh”V™¹{hk¾ØžŽÅf§¨ÂÄ­×F³jw6Æš½ :“•¼R#ƒº… ËÈ/w<‡`_5^jy¥Ft&«Ë÷Í64J¹[]d2Ô=„͇òÝëor,"46îKªL„ú«Å|£}Ih(Žû²j3þÞJ—rw%.Ü›Ô<1!^´òEg²‘–_]ïŠé†Ä\F÷dp÷P +L”T™±Ølnù;FûÒ1Ú±/Úý·'!!!qåxᎮ¼ºòTƒy.Uƪ}OµÑŠŸ—R¼ ÒÕFk½sycrb•Á‚ÞdããŸê¸é^o×69ÿoNý*õ–š(Þîñ ¢¡>ÿíD1A¾jºÖ¸rzj‚gù¬_‡ ü½UÜ;¬µ£Þ>*l6v‘>¬ÞM\˜Ù%òJ 5eÁo'‹yt\‡«ZOù (v š‚ä^ Ô€\Ùl§ ÈՠЂL‹ÇŠv£:`­<¢ùãÍé.ÇBÜz]4=ãøùh2 }¤/©yÕú¨èåË¡Ô2—ïq†k+Ôì9\]ëþ]û£ÉF€·ŠÜZæú.±~(ä2Nd:Î4´XrËŒ ìÌîSÅâ½™Ev æ|Á…ÈŒ6›À‰ŒJnèÊÚ½¹ù¨èçϪßr„ÆÓ¢ƒµŽðËvHh@d†õû®™j¥œqþœÍ­ÆlµîM¯6¬ÛëîºÙ”(Y: á1L¹Îâ1ЈP§OK¯Ô[ Ô ŽÉ:2H+Z‹œ¨r,6;áRs«1šíôlãÍÑôJÕ¸x–›Ù'‚›âÃÉ(гãx‘øÝ[ûSVefÕoޱ¡^ èLNI.b|Ùr¨@Ìk²Ø ñW»Õ¡>tFÞ%•BTd¢]„åFñ <¸àê¬Ãö¤BÑEV.“¡ÉÄ´I×F“š¯ã\ûa×X²‹ .ýÝœöºŒ U»öÄÔó!ƒšÀ=®í8“SÅàŽÍï…ö$Ö.;¾M;Ó¯cg²«D˶Ý.ðËÑ"Æö‹âÛ]YÄ„xÑ9Æ—jƒ#jªÉbG_ã¦ë«µ£VÊ©6XéÓ.39Õb࣢ :»Õñ¦øpòËŒ]l²Š hÕrºµò¿žHÉ©æža­Ùu¼™ †õ ãûļ ó‚Ù.F­Ýÿ_þœ!>co‚ _÷ ‹cýÞ\*ôî¿›Ò* Ëvd·ñÁÝCE·)'áâÛðsR#z‡SVm¡¸òê:KBBâïÃ++N5,;\¢ŒU÷žìb›k:‡°÷t ‘Zz´ögÅ®¬zë‘]lhPNÌ.6`0ÛÜ=”ßO•`µ û9¢HçÕ,À»È4ußµ>7V¿Þí©4X8—§#§Ä€ÎheXÏpv/Â.@t–ì’†nhJŸ»ÔÏC²§´U»]·1ÜØ+Œ …Cç2VI•™º…¢”ËE•¶>僫‰¯¶„à6›@öÁbû÷™Œ¿÷Æ…Dmw²÷êÆÚc.äéÕ&€¤ó”é\-CûÏ–1ºOÛ’ Yµ;›[úGq}· fgs«Ý‚*ŒŸQâçäólHtDl¬½ñÕåï:ŸwŸ*ææ>ÜÒ?ŠmI>WNÛoÔ*9Ç2.¸fê‰íêEf¡^¼7£HOÿŽAdé]êµùpãD1wBL;?'‘^¨krzÇ_t F!—‘Y¬ç«_2Ñ™¦{› Ð¥•7Ň£RÊ(­²°åHgr\£T5õ¼œÃiåLÚš6>èêœã¸-©ÊÁÖ1Ñ·C ÇrœV3ç÷TéVìfJ)Cz„ñà¨6Øíˆç¸Ϩ`׉bòÊŒâ~ÆŒB=¯‰¦¸Ò„Ñlc@§`ޤ•“œVÁu]ƒQ*dâž´¬bý;SXi¢¬ÊLT°ÞJî»±5§²ªÈ,¾°WëLN1!ZfŒjKZ~µ8ÁiÕr|TDjYñ[¶ØÞj£•]'Šx`D'³ª(©4cµÛQ)ähÕ ü¼”l¯±ÚôíÄþ”Rü¼•Ü9¨góªiîÍÁÔ ç7Ö>'31¥”Ƀb(¬ Õ|(µŒSÙUøy)éÓ>ˆ.±~|ýk†ËókN{ÏÞ.8‚ –›Ø}Ò}¿@h€ÚEÙ«2XY·7—;nˆ%5¯Z N“[raÏ©½fÕq{r!¢|iéÃW?;ê*Ã1FSóªéÕ&€N1¾ä”HÍ«&*Ø‹5k÷æˆ{AÀê'ˆÖ¯rÝ…`-i:FôŽ`pPÒòux©ôiˆÕ&°voŽÇ±m· ¬Ø•Åm×ÇÒ#Ο¬bv»@I•Ùå7R¡·p,£’;Ç¢”ËH:_ANé…—´ÉjcÙÎ,—ïÈ,Ö3¸{(Ééøy)‰ ñâãŸÒˆ Ò2ep,_ý’᲎qêE‡(_:Fû°jw¶[½ý¼”d(®2‘]bÀÏ[AaÅÕÿ~øk²àÎn¼ôíÉó\ŠŒU÷ç¼=¶_ƒjd¾­IdÕ¿ßÚn–X¶#“›ûFòø„ŽÈdPRiæ×cEõÖÛ%8¥Ê”®¡úu‰õ#·Ìàˆ -ÀòYŒîÉ܉±ÛÎäT»¼Ÿ/¦ÏÅzÕz8<À.x‚5E¯p ª˜Wfäй2Gq¥JŽJ)gþܫZOñU•——gV«®^ýpû–Ÿðë<€ý)Í?ããJ³àÎnìyµWƒy®{áh£“Å܉°Xíì?[Jâ™Æ~–¸4îÜŠˆ@-çò«Ù¸?¯I÷ú¨Ð¨bà€âJ“K“æ —É¸®k»Oº†ÃWÈg54·„jèëB.#»Ä@JNýa¢|TtŽñ9-×YHÍ«•¹ºhÕ Z…záç¥rìÅ´Ø©4X(¬0aðp”€·FAÛÇ9€ 9V›cyµÑJjnµ8IvmåÏ©,‡åÉG«¤m„7V›Àéìúëî£U¢QÉ)­u`ùMñáèM6ž-ó¸o¬©íNq•µRNç?ÎÕãb˜Sjª¨J)§C”/Á¾*ìœË«¦°æ°_/‚)ƒZñÅöt‚|Õ˜­vâÛгMðù¶óXm~^JÔ*9%•fzÆ0´gëö常õ&´ $:XË=ï=ðÖ(èÓ>ˆP f«³¹UnG5ÔG«0oBk¬¿¹¥qõ·6bü0šmd6 l8QÈeôíDD £ÅFRZ9E5}¢QÉÝ"¿‚Ãõ}Lß(Îè%Õù9 IDAT8™UéÑ ­Ë˜|}¬ãH ›Àêß³ë¢*!!!!ñ÷#ØOÍ­×ÆðéÖóⵉ×Dâ…\&c[RAƒòFcÈdŽ4›àÑûé‘‘áâß?lXwÑaÂâÇPuf+ÃGvËc¶X‰ŠŠú`ô5ÿtµþ6Ư&ž¹ú•@€ïêÖpúò†@ ‰+¢&ð‹S©oŠ ì‰J!Ã.¸×C.sD,ý³ëw5 7ÍUYBBBâ䥻»³`Ù‰?»+ësˆ …Žºº”À«WÓk"Wó†ËÚH„DËãb-¸f«çúØZÈo%PÒ%$$$$$$$$®žû2Y’Q¯0RŸ7¯.¼¯á£$$$$$$$$$$®$2™LRH®0W{Ÿ—–7žé "ÿ³+ !!!!!!!!!ñWâjVFþªH}Þ<$%PBBBBBBBBBâ2"“y:Š[âDêóæ!)—É*uå‘ú¼yHJ „ÄŒÙlþ³« !!!!!!q‘¬RW©Ï›‡¤^aò­#ã³ád|6œüCëšuoÛ¶méׯÿûßÿ.úû_~ùe.\ؤ¼$99ù¢¿«¥s×]wÑ­[7~øáFóž8q‚’’—kŸþ9`üøñ”••ýQÕtcÉ’%ddd¸\[»v-Ë—/¿¤rÍf3kÖ¬ÿ¥¦¦““ÃìÙ³ùí·ßÜî±Z­Ü|óͤ¦¦RYYIee%ùùù 6ŒââbñšÕjï)((p«ÿÕĺuë8{öl“ó›L&æÎûÖHBBBBâj£1«ÔÕ*c5GN¼ÚhŠ%°´´”… RVVÆo¿ýæöoïÞ½W ¦W->:hKÃxøÚܶ€ô5/AßIͺãÆDEE¹]¿í¶Û8qâÿÙ;ï°¨Ž¯¿ì²(b¡ˆbÇ’  "öˆ[ÐØÅ^°a½·Ø½Ç^P1öJ,Ø+¨(E+ˆ4i"(uÙýþàã†u—²ÄÍï¾ÏãwfîÜ™¹³sÏ™sf&___ôôôò_‹-5j]»vU‹›!¬qãÆT¬XQ-lÊ”)tìØ‘>0yòd<<<066fܸqôë×OH›W|`` S§NÅÏÏ ¦OŸÎÏ?ÿ d*'åË—W+ç!C˜7onnnlÛ¶äYÿÍ›7Ó¥Kš7o.„9880vìX† ÆÖ­[™:u*W®\És€iذ¡J>‰‰‰œ|8ééé¼|ù’êÕ««åƒB¡ÀÌÌL %**J%Ý©S§ˆ‰‰!11333,--‘Ëå‚bœ””îܹC`` fee…®®8üŠˆˆˆüWÉk§ÊÏ)c‰d’W›ÇÄÄàììÌØ±c‰åâÅ‹jiôôôhذ¡Zø©S§Ø¹s§JØÒ¥KÕä‰mÛ¶áëëˆ  X‹/‡(…|A"½£P©É(™a¥´T?åÍ›7|XPòr‹üø1Œ;]]]êÖ­K³fÍ8xð sçfZb *$ÔõôéÓ˜šš ¦6( RSS¹uë^^^DÉ’%155E¡P¨¼“êÕ«Ó¶m[y½yó†èèháÚÇLJ… rôèQJ•*Åúõë±¶¶¦Y³f4k֌ٳg³nÝ:ÆdZ/9}ú4ïß¿G"‘°uëVªV­Ê®]»ÈÈÈÀÇÇoooÁ—Edd$...8::²gÏRSS @&“©”ñäÉ“”-[–}ûöaiiɼyóxúô)+VDWW—öîÝË€˜6m-[¶¤e˖ܽ{WÈcþüùXZZ2yòdöìÙ£¢h¦¥¥©¼›ÜȲðÁ_n—ÅŠÃÓÓSÅ¢—ÅãDZ¶¶Ö˜W‡X²d ?~¤pá´k׎víÚ©¤›4iíÚµS³Ö+VŒE‹ eÙ²e /_¾¤N:ܹsGˆùï“—UêïÊXµjÕbðàÁœ={–ääd®\¹B`` Ó¦M# €%J0aÂzôè‘k9ó’#""˜6m^^^èëë3hÐ ~ùåjÕªÅøñãÙ¾};‘‘‘ôíÛ—¡C‡2fÌ|||¨[·.;vì H‘"Z•/44”™3gâéé‰D"¡uëÖ¬]»¶Àmnbb‚››ÉÉÉŒ1‚™3g’’’¢1m‰%Ôdå„„*Uª$ÈŸ²råJìììhÕªUžmþµ *_ˆ7'>~L†ˆëÈt%H$:q¤¤$BÜœ(×ûPÞ™äÀáÇ™0auêÔaÕªUDGGcjjŠ\.gðàÁ :”!C†àééIß¾}¥J•R ˲¾y󆤤$¾ÿþ{!?kkk<˜¯ø¬AàÓEÂOž<ÑX·C‡ѽ{w­ÚãâÅ‹¬]»Vp ÔÓÓ£U«VtïÞŠ+"‘HØ·oŸÚZAmX¶l¿ýö¥J•àÙ³gtîüפA–’5~üxÞ¼yÃáÇY¶l111ÄÅÅaaaAµjÕèСieóññQ{Ž\.gàÀ̘1ƒ¦M›G¯^½øí·ß˜”Ebb"!!!¬Zµ ]]]:tè@… „ø_~ù…"EŠ‘g9¿D%ð LN?@š=)R©” l:4ÁçÄ Ê0ß»wïA›6m022¢J•*œ8q‚¡C‡âííMjj*C† AGG‡† j\C–_œa¾iÓ¦äšþ·ß~S¹nذ!žžž :///† ‚¹¹9ûöíÂ\\\øøñ#:::èëë ÷.\˜?æ+þûï¿ÇÌÌŒõë×3~üxüýý¹|ù²Æµ`aaaxzzª¸æ[[[¶oߎ¹¹9cÆŒQ[϶mÛ8pà€Vùf‘‘‘ÁË—/UÇG1kÖ,áºpáÂòáÃæÌ™£q½¨R©6^Q(ŸuéÒ%Ê–-KÓ¦MÌY0gggîܹCÿþý ”ž9sæðË/¿ðèÑ#BBB€Ì6\±b…0Û׿AÙ*Z´¨ï§xzzj¬wNJcNáããÃúõësM—”””ã,dºvzyy J ¥¥¥°þ1‹œ,Ù¹ví~~~H$æÌ™ƒ»»»µùÖÉËø)ÚÊXƒ Ü@½½½ùøñ#£GF"‘P«V-:wî̉'rTó’}}}yóæ S§NE*•bnnÎÀ9s挠Ž1‚¢E‹R´hQêׯOµjÕ¨\¹2ŽŽŽ‚ò¦Mù>|HTT³fÍêggg—g{äÖæ‘‘‘ 4™LFƒ £C»víâÍ›7Ì™3GãýfffÄÇÇÓªU+ÂÂÂprrbÿþýT©R@¾%D%ð âæd€Ô™2¦Efć§`X ¹RQ`kàáÇqppô:pèÐ!†JLL –––*Ö–rå ªn"<@__Ÿ¸¸8­îoР»wï&>>žØØX*V¬ˆ‰‰ ãÆ#>>ž§OŸ  F©T’’’"(zÙÝôòŠ—ÉdìÙ³‡™3g²cǬ¬¬èСƒŠ«eY.¤ù] …©©iŽqaaa¸¸¸àââBéÒ¥µÊ7‹¤¤$•AåÝ»w¤¤¤`nn®’.99}}}Úµk' FÙ âÊ•+@¦‚¥‰§OŸªXUzöì‰R©úOÖû.]º4 …‚zõêagg‡L&ãÖ­[´oßž"EŠ`hh¨Rg©TŠ¡¡¡ÆçjRö$IŽƒøÅ‹yúô)£FR òä‰Zù5¡§§§rd‡R©äÊ•+´h‘ù›¬V­çÎS»ïÑ£G¼zõ 333•Ls¢R¥JxxxЦM<<<6©ù%° 2Vv—Ř˜,,,HþÚøßÒÒ??¿ïÏKN '55UeÒ3==]å{›]*T¨ÊR }}}᛫MùÞ¾}K™2e´^ç˜[›8p€Î;sòäI­òÌbêÔ©*×;vL-ü[BT¿‘!/¨×§/DÉ,;#£¦Í€w¨Û³/÷÷»jm LIIáôéÓdddP«V- s-RBB?ÆÄÄ„˜˜•{bbb ¬”äF~Îf±³³#!!ýû÷ ³>FFF˜››³ÿ~ÌÍÍ…Á§lÙ²(ÔíÉ“'‚u)¯x€5j¨üØûõë§q6ìСCšº‚"•JU,¥RÉøñãùñÇ œg‘"Eˆ'==™L†»»»°˜9‹àà`ŒÑÕÕ¥[·n·uþñÇ3f ©XjZX²dI>|¨®é½¾zõŠèèh*T¨€““þù'T©R…ádz{÷nácV¢D lmmYµjéééÔ¨QC(÷»wï°µµUó»/Z´( jÏÍÈÈ`åÊ•,Y²D-®D‰„††ª…Š••OŸ>®/]º„››› –+Wް°0•{V®\ÉíÛ·iÑ¢÷ïßçÒ¥K˜˜˜Ð´iÓ-–ëׯgÚ´i,_¾œï¿ÿžÊ•+kܵ×ÃË/Òºuë¿ÕWDDDDD¾.´µæ•W^˜˜˜B¡­°°°\'¬ó’³Ö^»víoŸÁ§MùJ•*Exx¸ÖžA¹µùøñã .°ø)E‹ý[Ë}¾Äs¿ €n!è‘–¦ 19$z Õ}hvÓËsçÎ!‘H¸zõ*.\àÂ… \»vúõësøðaìììP(\¾|È\G§i;\¹\Njjªð—Kǧ+VŒ7oÞ¨„¹»»sâÄ áZ__[[[¶nݪ²K½zõغu«Ši^WW—N:±zõj’’’ 䨱cº½¼â!sS•˜˜Þ½{Çï¿ÿŽ¿¿¿Ê^^^ÄÄĨmþ¡-–––<~üXåúï õ:::üøãìÚµ‹÷ïß³yóf(Ä'&&2a„\Ï1,Z´(W®\aÀ€ 0€áÇk´·iÓ†K—.å¸f2;üñ'NdçÎüôÓOÂÆ1R©”éÓ§ ;¡>|ø½{÷bjjŠD"¡H‘"Âbkd2¦¦¦ìÝ»WE­Zµ*ÞÞÞjÏ]´h5kÖ”þìÔ­[—øøx•þ¦‰V­ZqúôiÒÒÒHIIañâÅŒ7Nˆ722Ž~Èâĉlݺ•Q£F1þ|~øá‚‚‚èÚµ«šÂ˜Eùòå9pà/^ÄÙÙ™òåË«}Èž777Ák©víÚ˜šš²dÉA.Õ$|ÊçlóOyÿþ½ðÿôôtN:U Í¿&DKà #CIèýgXÚ׿¬]úW¤¾5¡wýÈPhßq>L=(S¦ŒJ¸³³3³gÏfæÌ™l߾ɓ'³víZŠ+¦Q1™0a‚ÊaÖÝ»wgÍš5Z•eÔ¨QÌš5‹I“&1{ölúô飲1L 6ÄÛÛ›zõê aõë×g×®]jþÙ¿þú+“&MÂÖÖ–"EŠ0cÆ •\^ñçÏŸg×®]¤¥¥Q¯^=>LñâÅÕÚ°]»v9º+æ—ž={Ò»wonܸ‰‰‰J\öµzúúúlݺUãQéÚ™}ûáY³f1tèP¶nÝÊ”)S?û•+WrðàA†*lúò)Ïž=£zõêÂ.^Ù TYibb† 8p Íš5£fÍš@æºÇ¬ÿg1cÆ ®\¹ÂÕ«W…EìèèèàààÀ¡C‡8wîµkצyóæøúúòâÅ 6nܨ²ë§žžžàb’Ý:ݸqcæÎËòåËiÚ´)ñññìß¿}}}6nܨ±®ºººìÙ³Ž=н½=2™ŒÊ•+Óºuk!¹¹9;wŽÏprrÂÆÆFˆ700P9·ÀÞÞž•+WÒ½{w"##yøð!ÛYdÍ¢ 8!C†|®¢‰äÀÀyòä ,[¶,ÏôJ¥’ÐÐPU!++«|y_)S¦ŒÊ€Å‹ceeÅǹpáBŽÙÚÚj< 5))‰«W¯ŒT*ÅÁÁAPß½{ÇàÁƒ9vì¯_¿¦páÂ9r„cÇŽ!‘H8yò$… âíÛ·|øðÊ•+süøqV®\ÉÚµkUïC‡áëë›ã± qqqìß¿Ÿ/^P¸paZ¶l)¸læ†R©äþýû¼xñ‚ŒŒ lllT”¼,<<<„Eìy‘––Æþýûyüø1E‹ÅÉÉIp;NLLT{é–=sæL7nL»ví4º‚¦§§ãââBjj*lÞ¼Y<çIDDDDDä"88˜Ñ£GsæÌ!lܸq<|øŒŒ fÍš•ã^¹ +>>“}¯ãbÿr½=sò85ml‘ééiåòzÏËSÛÌÉÿħhÙF]MK—caaÑH’þÿïc¶ÿ')¢("ò"ûL–R©T;ãïK“’’"äž¹\þU”ïk kͧˆˆˆˆÈ‡Ïi Éyµ¹R©$55Uegù/Éצ~½šžˆˆˆÖ|mÊDN­hñú‹¯í‰ˆˆˆˆü}¾0""BeYNvNœ8¡ñh©o•¼ÚüÓ£Åþ×%1‘ÏÈ×b ´°°ÀËËëß.ÆákióoqwP‘ψ¨Œ|yÄ6×Q ùŒüÝsõD´Glsí•@‘ψh•úòˆm®ßüšÀwïÞýÛE(Q¢qqqÿv1þ§Û\;DK ˆˆˆˆˆˆˆˆˆÈgDTF¾#¢UêË#¶¹vˆJà¦xñâ*""""ÿéééDFFþÛÅùŸD´J}yÄ6×Q ü‚/^œHïã¼ÞÑ’×;Zé}\+E°N:üøãìÙ³§ÀeX¾|9«W¯ÎWÚÖ­[óèÑ£?ë[gذa4jÔˆI“&åšÎÕÕ•7oÞ¨„9s†£GæxOjj*Ë—/W KJJÂÓÓS-¯¯™ððp­ïqwwçÞ½{ÿ@i ÆÍ›7‘ËåùN_w·~ýzÒÒÒþV9óâùóçüù矤¤¤0qâDÜÜÜØ°aÃ?úÜO‰ŽŽÎ÷ÁÄÚöOOOvîÜ©1ÎÝÝ«W¯ª•åŸø=¥¦¦rôèQ•¿Gq÷î]µðÔÔT=zÄTòÉÈÈ wïÞ¹>ëõë×̘1C¸Ž‰‰ÁÝÝ]-¿¿?~~~øùù§§'7oÞTûKHHP«K~ûó»wïX½z5ñññxzzªýiú]?zôˆ×¯_çZÇOÓ­ßwww^½z•ïôiiiÌž=û,‘È×L^V©¯UÆÒFNüÚÈ%° ãØ•o~wÐo”¨Ðm.ÁGç]g­îwssÃÜÜ\-ÜÙÙ™ÀÀ@®]»†žž^¾óëÔ©ƒæçŸV‹=z4¥K—ÎW>-Z´`ݺuÔ¨QCcü¶mÛðööfóæÍB˜££#åÊ•S 3f ?ýô?~dîܹ\½z•¢E‹2|øpœœœÔò £cÇŽØÙÙ±eË Ó ²xñbnܸALL eË–eôèÑ´iÓ&_ñ[·nÅÕÕ??¿\ë¾wï^ *ĉ'„°ˆˆ 8räíÛ·§OŸ>BüóçÏ ®ãããqqqaܸqüúë¯ìرCí9:u"""‚óçÏS¬X1Ξ=ËîÝ»9xð ööölÙ²…:uê÷íÞ½››7o²}ûv!ŸœÞynqŸÉرc9|ø°P‡,7‹¢E‹b`` vüøñ| F“&M",,L%L¡PÀèÑ£i×®J\`` gÏžÕ˜WãÆ©W¯žZøÆ155¥Zµjù*S~ß]jj*‰‰‰@æ{êÔ©“Z[Q¨P¡×7;ÁÁÁ\¿~GGG‚‚‚¨S§dêÔ©ùª×7xñâÎÎÎ@¦»eËúôé£Õìê7¸qã‰úc5„6Цÿ¤¥¥‘ššJDDAAA$&&"•J144Ò¾|ùRø]dqñâE"##?~|žåöòòâÇ(  r¹œ´´4RRRHMM%99Hbb"›6mbܸqøøøðêÕ+Þ¾}K… (_¾<kÖ¬ÁÁÁB… Ë“'O¸|ù2»vížûøñcúõë'\6Œ~øA¸^¶l½zõ"99™ÄÄD¢¢¢Ø´ioß¾eРABºÁƒÓ±cGž?N“&MË夦¦²oß>!ÿóçϳpáBj×®-Ü—ßþ˘1cpqqáÝ»w\»vM­ e2ÎÊ–" IDATööö*a·nÝ¢téÒB›(•J R©Tã{xðà€ð-É)½6ï 2Çüàà`ªT©¢öÌØØX”J%&&&BXxx8111*éÎ;Gll,>|ÀÄĄҥK#—Ë RË755•{÷îñüùs!¬bÅŠèꊢ×ÿyíTù9e,‘Lòjó‚ŽcÙÙ»w/=â·ß~S wvvV›Pnذ!#GŽÔ²_q$úBdYJ 5…"½SÊ®óß:ê",, ___,,,¸zõ*­[·þ,eîСÃgÉ nÝºìØ±ƒŒŒ ¤R)111Èårž &àààëä‚\.gß¾}<|øÒ¥KóæÍV¯^ÍóçÏÉÈÈ zõê,^¼}}}"##9wîÞÞÞÂoøÄ‰lß¾÷ïßsðàAYÛ÷åãホ››F ÇíÛ·¹{÷. ,¸{÷®Jº”J¥`!­W¯¥K—æãÇÂoýÓvxÿþ½JÜèÑ£5Ží"ÿ=ò²J}NëÓïÕÿ*¹µù£G´Ç>%--_ý•?òòåKµøM›6©œS¸aÃLMMµ(ý—Gì1_÷×RÙi>³w`áŽc¼88Wkkà§œ:uІ bccÉ'T”ÀÇ3sæL"##©]»6&&&ùvAmݺ5«V­¢F888п®\¹Bll,ÖÖÖ,]º]]],X@ll,£GFOOÑ£GÓ¡C<<¥ÿþìܹ“¨ÌZÿ„……©YÆ Ë1­‰‰ äøñã„„„0vìX!îùóçT©R…M›6!—ËUŠ,X¹r%QQQ¬^½šråÊåøœ&MšhU}JõêÕ5–¹mÛ¶¬Y³†¤¤$á7ЪU+µ‰—9sæÐºukµ1ÆØØ˜™3g eÙ½{7ÁÁÁØØØpïÞ=!N䋼¬RWÆrpp oß¾\ºt‰äädNž<ÉóçÏ™?>/^œ#Fйsî2f^râÛ·o™?>ÞÞÞ*Tˆ>}ú㵃ƒ#FŒ`ïÞ½DEEѽ{wú÷ïÏ´iÓð÷÷§víÚ¬]»–Â… hU¾ððp-ZÄýû÷‘H$4oޜŋ¸ÍK–,©Õ8ö©¬¼qãFlmmiÖ¬ƒV»'»§ODD<ø*&ìsCT¿Å‹'Ä͉“!â:2] ‰D\'))‰7'Êõ>T`kà©S§1b¶¶¶üþûïÄÆÆR²dIär9cÇŽ¥ÿþôíÛ—û÷ï3|øpúöí[ ç ëûôéÃéÓ§éܹ3³gÏæÊ•+j® ·oß&99GGGd2™ l[[[sÿþ}ììì033S ˲†……‘œœ¬b©^½:Ç®“““Y½z5›7of‘s"&&†ÐÐÐ…€¼â5Æ©S§˜;w.±±±ÄÇÇcnnŽ••?ýô¹6Ëßß_¸gܸq( Ú´iÊ+¡ï‡~@GG‡E‹qøðaa9;•*UâÇdÛ¶mLŸ>=ßeý'ˆ‹‹£L™2ZÝãîîžëÌ›¦™Ìsçα|ùrlll°±±áÌ™3”/_žæÍ›ç[©ÊÚµk³fÍzõêEáÂ…iݺ5Ë–-£T©R*é úînݺŻwïèׯ2™ ¹\NùòåqvvÖèÚ“ßú¶oß…BŽŽ:::xxx––FïÞ½Q*•Èår¡ŒÙIKKãÚµk¥¤ZYYÆÛ·oñõõeÛ¶mܹs!OÚ¶mK:u¸yó&iAÕÓÓ£K—.ܽ{—³gÏbdd$("111/^œÔÔT<ÈË—/©Q£r¹œÎ;sùòeŠ/Žžž#GŽÜ*µéÏ|øð_~ù…©S§räÈBBB„r‡„„””DõêÕiÕªmÚ´fÚ}||¸|ù2;vìPQÎ D¿~ý;v,%K–ÆÌèèh6lØÀàÁƒ… ccã…µü¾¯·oßbee¥1N&“aggÇÝ»wiÖ¬)€~êFŽ···ÐÇV¬XAÙ²eUÒÌš5  ÀÉ“'s,ÈmwªÔVÆ‚L‹õ¾}ûJ¥ÈårFM×®]Ù³g?fðàÁT¨PAÅ<;yɉ …‚‘#GÒ¤IÖ¬YC||<ÎÎÎT¬XQøn\¾|™?þøƒøøxzö쉯¯/‹-ÂÌÌŒáÇsðàA ¤Uù2221b5bÕªUH¥RþV›dËΰaÃ(\¸0o߾ͳ[·nÅÙÙ9G·÷¯Q üBÄ„S§Ó¦Ä@OŠT*¥›Mð9qíæùÿâÁƒ¼}û–-ZP¤H*UªÄŸþI¿~ýðõõ%--¾}û¢££ƒ½½½0 [z÷î-tèFñôéÓ\ÓÏ;WåÚÞÞžû÷ïÓ¯_?¼½½éÛ·/¦¦¦>|X0`)ôéèè¨Ìâ’””$\ÿþûï8::ªX4‘žžÎäÉ“éÒ¥ U«VÕ:>'–.]ªq}f–™è§øûûSµjU]&“¡§§GÇŽ9pà@®V‘#FеkWaíÖ¿EJJŠŠ{àÇ)\¸pŽmC||¼Æ59šgÁ‚šOkkkLLLHIIáöíÛ¬_¿ž}ûö©–OŸ>å?þPë{9Ëܹs©W¯£F¬$9¡Í»ËÈÈ`öìÙ$&&"“Épuu¥páÂÌ›7Ò¥K³`Á&Nœ(¬S,H}=Jtt´Úšƒ#GŽðöí[F-„íÝ»—ëׯóæÍ5jĸqãX°`*TÈW[eWÐãââ8räüñ‡–µ.µsçÎ<~ü˜Ý»w³aȹ¹95kÖTq‡Õ¦ÿ²víZÆŒC‹-¨^½º ˆ_¼x1G%6ËÕ\^¿~¿¿¿ŠÕS¬[·Ž7oÞ¨­ã,S¦ eË–¥S§N*á±±±Ô®]›uëÖ‘œœLÏž=Y²d‰Ê8R¨P!tuu©]»6;vì Q£FŒ5Š   nݺE½zõHJJâåË— 2Dø=0wî\Á444”—/_bii‰¡¡!R©”5kÖ¨¸ å·?GEEñË/¿ ««Kݺu…ɺ,ÜÜÜ Sñ®€Lwæ={ö0oÞ<5뜱±±°¶.‹>pöìYzôè¡baNHHÈq\ÉïûJNNÎuÒ¨^½zx{{ J`éÒ¥…>EN–Àìܾ}›ëׯ#‘H˜4i’š[´ÈÿyY?E[+랬±Ù××—¤¤$† ‚D"¡F´k׎?ÿü3G%0/91 €°°0~ùå¤R)¦¦¦ôêÕ‹óçÏ ãî Aƒ022ÂÈÈ;;;¬¬¬„ïJË–-åM›òùûûÃĉ…úÙÚÚæÙ¹µyADZ,²¬™yÏ7±)”¨þÃdY!¤ÆÈ”1-2#?<ÃjÈ•Š[Ož7Zµj%¬ÊNHHˆ0‹Ÿ‘‘¡áÂZ¶l©V]]]z÷îM=4hPŽþýeË–¥]»vüþûï4hÐ@%N"‘¨)ž …Bã&]]]¡~áááÌš5KؘGG„âððpnݺ…R©Ìq`õóócÀ€4hй\NzzºànQ¿~}qww&RSS™2e Ë–-ËWù•J%£F¢{÷îtíÚ5_÷hóîöïßL&cýúõ´oßÂÃÃñõõeÖ¬Y4lØuëÖ J ¶õU(ìÛ·O°*eç矦K—.ôë×OXôý÷ßÓ¨Q#*Uª¤Ñå6¿¤§§3mÚ4úô飲ÞÁÑÑ‘.]ºÏZ¶l¡¡¡lÙ²…E‹©­wÔ¶ÿT®\™iÓ¦1zôhac•aƱhÑ¢•@‰D¢²F#;×®]ãÅ‹jn=Ïž=Ë÷&AéV*¬K~üø1–––Â:<Èœ)ß¼y3‰‰‰Ü¹swww0|øpôõõÕÖÑDEEiœpƒü¿/™LFzzºp­T*¹yó¦àòjeeÅ¥K—Ôî{òä ¯_¿ÆÄÄDãxþ)åË—çêÕ«´hÑ‚«W¯IJJJ,Ò"ß6ÚZ "cewYŒ‹‹ÃÜÜ\å{_ºté\-hyɉ‘‘‘¤¥¥©¸bËår•ß\É’%…ÿëéé©Løèëë ;ckS¾èèh,,,´^ç˜[›d+ K—.ÿˆÜõ¹•À/@dÈ êõé QA`òKçÎÃÈ@ƨi3àÝ#êöìËýý®Z[SSS9þ¼°Qd ‰‰‰<}úTãŒHll¬š›Ûç ?Be­ZµHLLäÈ‘#¬O‘"E055åÈ‘#˜šš ƒO™2eÐ××çùóç‚ûógÏwooo"##á/99™ôôtZ·n-̼Êår&OžŒR©dÙ²ej¼âó¢C‡7hÚ´)C‡Ê•µqd î—/_V±ôe ü2™ cccììì¸råJ®.z...üüóÏjît%K–TÛv?,,ìY?hdd$ì~yäÈúõë—ã$CFFgΜáÀ<þœI“&ѧOd2/^äÙ³g<|øPe6°mÛ¶|øð1cÆ‹¡¡!qqqÌž=›Úµkcff&lÀ™¡:uêä[€ "%%%ß  ¶ïîܹs¬\¹R¥ æÌ™Ãĉ‘J¥”)S†ØØØ×÷Ì™3Ô©S333µ²êëëÓ¥KÜÜÜ1b€Ú†J!**ŠiÓ¦Q¶lY5K´&fKKK*V¬H½zõøñÇÕÒç·ÿdQ¬X1ôôô¸tévvv|÷Ýw«íâ¨éÙÉÈÈ`Ó¦Mgj‹/®õÑiii‚—‚¦£@Ê•+‡““~~~ÌŸ?ŸÃ‡“œœÌÞ½{‘H$œ:u ©Tª¢·k×Nè[ééé<þœ°gÏttt˜5k–ÊÑVVV‚õ¬[·nøùù1gÎa"áSeX›þ>>\¿~%JаaÿK—.eþüùlذjÕªQ¡BnÙW¯^åÚµk4oÞœ¦M›æY~‘om-¹‘«D‰¼}ûVeâ7"""×ï^r¢‰‰ ÅŠãôéÓkòPÛò™™™©µ7Gnm®í8Vär9gΜv½þÚùúÕÔÿ €n!è‘–¦ 19$z Õ}¨» æÅ¥K—"ëLªÓ§OcggÇÉ“'±µµE¡PpãÆ SдnÖÖÚYÚœ™–…±±±Ú‡ØÃÃC8· 2g¶¬­­quuUHëÔ©ƒ«««Ši^WWGGG~ÿýw’““yþü9gΜf£:vìȹsç„z÷íÛ—Úµk çpedd0mÚ4Þ¿ÏÒ¥KQ(¤¥¥ 3¹yÅ###n޼ɨQ£5j'NTlïܹCõêÕUv‡{ô葊‹äĉóÜܤT©RtéÒEíÌȶmÛ²{÷n^¿~\.çÞ½{¸»»«ù¶çöÎóÛJ•*%øÆ—(Q‚€€•™vÈtùxñâMš4¡H‘"xyyñóÏ?ãääDçÎ~üÈÓ§OÙ½{·J\~ßW³fÍ8þ¼pÜÈêÕ«U\N‹)¢æžêîîΪU«~üˆ‹‹ r¹SSS6mÚÄ™3gصk?ÿü37oÞ¤xñâ4lØV­Z }òîÝ»¬[·ŽÅ‹ G‚¬X±‚;wî ‘H°´´¤fÍšØÛÛcmm­¢ðÆÆÆ2kÖ,Ö­[‡L&cÅŠÔ«W¦M›2iÒ$†NåÊ•™4iS§NÅÌÌLëþÂÔ©So €™3gâçç‡B¡`„ ï=wî%K–ÄÞÞ¹\Nll,FFF9nÒ’59÷©U0:::×3·r{_Ù¹zõª°E^¤¥¥qäÈž>}Š‘‘:u–$|øðAã„HZZ}v;D IDAT .¤~ýú´jÕJílMÈìã'N$55V¬X!žñ&"ò(è8ö¹P*þò6;sò85ml‘ééiåòzÏËSÛÌ ¾Ÿ^ euKoZº ‹®@2ôÿ³ý?H•À/D^góýÃâEþ=²Ïô+•Jk?DDDD Â×t´R©ÔêÜE‘¼ÉZ)òßäsZEòG^mþoc_›øu|]þ•¼ÿ&â\DDäŸâkQµ#{Dþ>â÷ã¿Í×¢¾}û6Gï±½{÷æéµñ-‘W›‹ã˜*_ÏFDDDDDDDDDä?À×b 477ÿŸ9¯òkióoqwP‘ψ¨Œ|yÄ6×Q ùŒäw§o‘Ï‡ØæÚ!*""""""""""ŸÑ*õåÛ\;¾ù5yíº)"""""""""ò%ÑÑÑA©Ôþ h‘‚óµ·y\lÌ¿]DK ˆˆˆˆˆˆˆˆˆÈgäkVFþ«ˆm®¢("""""""""òÉ:CXäË!¶¹vˆJ ˆˆˆˆˆˆˆˆˆÈgD´J}yÄ6×Q ùŠP(ÿvDDDDDþ&¢UêË#¶¹v|óÃ|kDz'Õg#…j¢”]ç|ß[±bEJ–,ÉСCqqq)ÐóçÏŸ®®.3fÌÈ3mýúõÙºu+¶¶¶zÖ·NïÞ½ñññÁÁÁßÿý‹??11///tuuiÖ¬r¹œ… R´hQÆ/ zr¹œŒŒ ¤R).\ >>^cÞNNN\¿~-Zžž.(žžžlß¾íÛ· ée2‰¹\NûöíÙ°afff$%%Ñ«W/>Œžž†††èêlxÙ°a}úôQÙôéâÅ‹¼zõŠaÆ©¤ åúõë¹æ×´iS,--…²¦¥¥Q¬X1µtþù'?ýô“ÚGd÷îÝ|÷ÝwÔ¯_ŸM›60räH¼¼¼ðññQû-††† ÏË®®®Ô«WÍ›7³`Á<<< Ìñ7ªmþǧT©R4lØ0Ï´ÉÉÉÈd²¿¿ãÇS£F ªT©’¯ô©©©LŸ>U«Vèy""""_#yY¥¾VK9ñk#?–À¸¸86oÞ̈#xôè‘Z¼®®n¾¾•—°ˆHÂ"" t¯égê2¢ø…Iy° Ýæ|th¡œ>} µðnݺ€¯¯¯ ˆç‡-Z0jÔ(ºvíª7yòä| ›vvvìܹ3ÇÁlýúõxyy±oß>!¬qãÆT¬XQ-lÊ”)tìØ‘>0yòd<<<066fܸqôë×O%ß#GްvíZBBB(S¦ ›6m¢V­Zlß¾C‡ñôéSzöìÉo¿ý¦ro^ù»¹¹±mÛ6>žŸþ™{÷îáì쌡¡! ,`Ò¤I°`Á:vìˆR©d×®]ܸqLLLTÿ>}úðêÕ+/^LÛ¶mY¹r%J¥’6mÚP»vmÒÓÓIHHÀÜÜ;;;7nŒŽŽ#GޤqãÆZÕ7))‰ˆˆ.\¸@«V­xøð!>Ú8**ŠÄÄD4h@ãÆyôèÇŽ£W¯^œ?€6mÚpàÀJ”(!ôããÇÅøñãÕÞÉÂ… iݺµÐ‰‰‰üñǼyó†;vпîܹd*Åüñõë×gÛ¶môìÙ###ÂÃÃϳ»SîÞ™]fç̹÷Û¶mcÁ‚´hÑ‚¦M›R¤H.\HóæÍ±··gáÂ…ØÚÚ²zõj/^ŒõêÕÃÊÊ*S}Õj5ÖÖÖ?~œÓ§OÀŒ3ðòòÂ`0ðäÉz÷îÍ|ÀàÁƒiÑ¢jµ:ÏÛĬY³X´hŸ~ú)cÇŽU~ðž>}ŠÑhT^»¸¸(åF%švðÏø:ÍùóçiÙ²%'Ož$""B™—À–-[P©T´oßž˜˜V¯^ͤI“ðððLÿ'ÆŽ €¯¯/­[·ÆÎÎŽóçÏS½zueNŸ>mR‡*u¸ví*•Šk×®aggdzgÏ ¢H‘"lݺ•³gÏÒ¢E &L˜ Ô?·å?|ø¢Ñh¸}û6#GŽÀÏÏ %Ûjccƒ¯¯/*T0)gòäÉ$$$0kÖ,lll˜1c:Ž?üPYæìÙ³;vÌd½ˆˆŒF£²o6lHÉ’%yöìþþþd¤Ó鈋‹3™7qâÄ,³µB‘_䔕z™çX:N.œñü}~öìYÆŽË´iÓhÕªz˜W?þø#»víʧ¤¤0iÒ$ž={ÆÕ«Ws]žÁ`À`0`üó¯Á`Àh4’’’å¼—I¾1¯PÂé¯)ßsÓ‡¼À¼¶qmã¬>>Ó¿† òBïsñâE¶mÛ@§Nغu+½zõâ‹/¾`ÿþý™š*üþ{êöuéÒ jժʼn'¨Q£ÁÁÁÔ¯_“iiYÀÈÈH©R¥ŠR^ÕªUÙ¸q#Ú îêիܾ}›Úµk“œœL‡˜7o^–Ù¬Œr*ÿŸâëëË‚ ”LÖ•+WèÚõ¯‹iAÖøñãÑëõÌš•Út¸páÂLš4‰½{÷f 8oݺEïÞ½ cß¾}\»vƒ0þ|hذ!¾¾¾ØÛÛ+ÍSß}÷]†Î7pttäûï¿ÇÕÕ•¸¸8"##Y¼x1ƒû÷ïó믿©A•™™™I¦/½ŒÁD^¶7­¸qãX²d +W®äöíÛ$''+ÍÓšÇΞ=›ªU«©Á[ZŸv•,ãë41118::иqc7n¬Ì[±bTGµZÍ'Ÿ|©S§èÛ·/Ç7)kÙ²e¤¤¤ðÉ'Ÿ(ŸILLL¦`1;>Äßߟ#F©Ù˯¾úŠ%J(Ó>úè#š4iBÑ¢EóT~šíÛ·?÷jgVWÿýwŽ9b2-íâLbb¢ÒÜ4**Š¡C‡š,Epp0vvv@ê~*]º´É2&LÀÉɉaƱiÓ‹û„âM•ב*ózŽ©Ù­ŸþµZN§cРAôíÛ—mÛ¶qîÜ9zõêE¹rå¨[·n–ï™Óy¢Á``À€xyy±råJbccéÑ£åË—W.±{÷n?~Lûöí áÿû...ôïߟµk×2räÈ<ÕO¯×óþûïÓ¬Y3¾ÿþ{ÌÍÍ9{öìßÚç%J”àéÓ§x{{3{ölLZݼy“ÄÄDªV­Jûöí騱£ÉúZ­–?þ???6oÞœ©ü±cÇbkk˽{÷r¬ç›B‚ÀW$únµ»4K5jµ ŒjtjÌ™À?(•sY:yò$÷îÝ£M›6ØÙÙñöÛoÈСC !%%ÌÌÌhРI¬¼|Ȉ#”f·šE\¿~=¿üò 111tèÐ>úˆãdztéRÖ®]KBBM›65Ù{{ûLÓÒ¤e_d{¯]»ÆªU«pvvfýúõ„……ñÛo¿=wŸV­Z•N:ñäÉ 5Ã(¯;uꤋióss‘R·iذ!§Nbÿþý™ìçÏŸ§Y³f&}>“““MÊ?uê¶¶¶T®\9SùŸ~ú©Éô+Vàî¯¯2M§ÓQ§NŠ-šçò!5Ð|üø1•*UÊÕ6§éÚµ«ÉÿFš´Œdš’%K²wï^“e²Ë¦wøðaÎ;‡J¥bæÌ™ìÞ½;OõBˆ7]N™ÀŒòzŽàíí­\È !!!Ñ£G£R©pww§k×®fætžxöìY"##™¿ÿ>ÞÞÞXXXàéé©$Ò¬ZµŠÈÈH¥%NFóçϧ[·nÙz––í|Q;vì qãÆ&­Úâââ8räíÚ¶ý[egG‚ÀWàöºž€Ô…àé%&i‘:ãÙe(PÑðÂÙÀÍ›7Ó¬Y3åª{§NØ´iC‡%::š’%Kšœ´¥oJ–Wiï`mmMlllžÖ÷ôôdõêÕÄÅÅCÙ²e)Z´(ãÆ#..ŽË—/+M1 ,ˆÑh$99Y9MHHPšù¥ýýàƒ”æxÞÞÞ¬\¹2WA`NåçVrr2£Fâ»ï¾ËqÙÄÄD“ƒDZvËÙÙÙd¹¤¤$¬­­yöìëÖ­R÷}åÊ•)W®œ’uzøð!ÕªUSž·Þz‹¦M›Mƒ سgÒ7®uëÖøùù)ŸaÚvZZZR½zu:ÄŽ;¸xñ"±±±DDDàíí­¬ŸžZ­Î4ðHúy/º½ŽŽŽ 0€E‹ѵkWÊ”)C§NHLL4ùÇÄÄpøðaž‹ŠŠbüøñÊg˜Q»v툎Ž&66–“'OòÕW_áææfÒœ;­À¤I“ðõõÍSù:0NZ³”¨¨(~ûí7ŒFãs¬Ôj5µjÕÊ4=mŸÚØØdšwáÂnܸA±bÅ25½ÎJ¹rå8pàmÚ´áÀܽ{—¤¤¤,ËBˆü(¯™À9ÇJßd1::WWW“Á»J–,ɹsç²]?§óÄ»wï’’’brQO«Õš´¢rrrRž[YY™´V²¶¶F£Ñä¹~< D‰yîçø¼}¾~ýzºvíší@~ÏsôèQ®]»ÆŒ3ò¼nn1Á~Þ±ƒÂ… ñøq=zô¤zõêæg÷o_£^¿þðð&mÂüY³±³±`Ô”OàñêôîÏ逵yÎ&''³sçNôz½2"fJJ Ož¥m†„Á`Àßß_ù‰‹‹cÅŠÊȱ}úô¡T©RFHûöíéܹ³I&ðÇÌ” tpp fÍš,Z´­VKµjÕ”z?~ü˜š5k*?JyÝÞ¢E‹²fÍlmm ÃÉɉ¸¸8víÚ…½½½²Ž‡‡F£‘âÅ‹¤f̦NJLL :ggg,X ì«´í¶··'>>^ ÖÆÆOOO®]»Fll,‡VmÔf7oÞ¬Œàvýúu¬­­•NßQQQôèуѣG+å§å :4Û /;vdÕªUʧ'NÄËË £Ñȵk×”‹&õêÕcÍš5y._¯×³mÛ6víÚÅ¥K—1bÞÞÞXZZ²wï^ÂÃÃ9uêT¦+°~~~Y–·cÇŽ,[øùùqìØ1Z´hÁéÓ§9xð E‹¥iÓ¦Ù6þöÛo™2e _~ù%UªT¡|ùòYŽj|àÀ~ùåÞyç“ÏE!ÞtyÍæTVNŠ-ʽ{÷0 J uçΓ -«užwž˜v®uøðá¿}¾¼ÔÏÅÅ…»wï*æÖóöùøñ㉈ˆx¡ ð‡~ **Š.]º©¿ý–––:tˆU«Vå¹¼¬,^¼˜#GÒÜË‹víÚ²gÏ^xzâëûüVf‡Ü,þ•0€ÊÌ­@e‰Fcài’T– ¶3k ä}ÄŸ}ûö¡R©øí·ßØ¿?û÷ïçðáÃÔ¯_ŸÍ›7ãááÁ`àСC@j?¸¬†ÃÕét¤¤¤(Ü\ÉϨpáÂDFFšLÛ½{7ÊkkkkjÖ¬ÉòåËM_©W¯Ë—/7IÍ›››Ó¥Kþ÷¿ÿ‘˜˜È¥K—ضm=zôP–éÕ«Ë—/çéÓ§ÄÆÆ²zõj“Å´íÒëõ “mËMù¹akkËõë׳Ì"edffFË–-Yµjñññ,[¶ŒAƒ)óŸ>}Ê„ ”þ`÷îÝãèÑ£Ô¨QC髨³gO† ưaÃèÙ³'S§N5 ïÞ½ËñãÇñöö¦aÆ´nÝšÖ­[S @š7o®¼NËžþòË/”+WwwwNŸ>­ô«ÔjµxzzòÁ(ŸUhh(þþþ899¡R©°µµU:OÛØØ`aa““þþþ„††æy{ïܹ£Üþ¤T©Rܾ};ÇýieeÅ;w0`õë×§K—.tïÞzõê1`ÀîÞ½‹•••òãU¼xq¥YçÑ£GY°`ï½÷“&M¢H‘"|óÍ7¬]»Öä}ú÷ïO@@´oßž*¯û÷ïo²lúò‹-ʹsç2}7’’’L^ß¹s___¶mÛÆÅ‹Ù½{7W¯^娱cDEEqòäIe¤Ì¼”ùòe¼¼¼°³³ãèÑ£tëÖ÷ߟ^½z1räH\]]™;w. ,Èqıàà`eŸŒY¾|9£FbΜ94iÒ„›7oÒ­[7îܹ“ey¥K—Vš"<˜Ò¥Kgú¡gÆ Œ1®\¹òÜ: !Ä›äe€õ9VFØØØ°dÉ çÎcûöítîÜù¹ë<ï<ÑÃÅ ³páBe•7näª^^ë·nÝ:eüZµjáääÄ_|¡œ»…„„äø/sŸ§÷ã?rðàA ä½÷ÞcĈ/-P©T|·x15â»ï–РAüüšdN_6 _½ÞHÔé+àT¬Í˜ùõ|¦|ù9X›A±ªD…\FoÈûwóæÍôêÕ‹%J(#T+VŒÁƒ³}ûv 5“1þ|:wîÌôéÓ³¼š>aÂÊ•+§<>þøã<×eÔ¨QLŸ>J•*)Ù™´þzé5hЀèèhêÕ«§L«_¿>ÑÑÑ™Úgúé§ØØØP³fMúôéÃ'Ÿ|bãÆ£qãÆ¼óÎ;¤¤¤ðÙgŸ±nÝ:<==IJJRF®,^¼8^^^888píÚ5F——^^^T®\™%J(¯Ó®"æe{ÃÂÂL2½‰‰‰,]º”¯¿þZy¤õÛ|üø1sçÎeøðá̘1C¹¯!¤Þ&aÚ´i :” (M+V¬¨õë×ç³Ï>ãøñã|óÍ7¼ýöÛ¬_¿ž7näx!äÖ­[ìØ±ƒÐÐP“ϦB… Jùƒ ÂÕÕ•wÞy‡V­ZѲeKš5kƲeËLÊjÓ¦ 111xzzR¦LnݺEíÚµ¹}û6S¦L!..NÙoy)¿J•*|úé§@jSìíÛ·³oß>Ž?ηß~KïÞ½Ù¶m ÈÔöòåËìØ±ƒo¾ù†^½z1wî\~üñGÊ–-›i_Ô­[???BCCÙ»w/¡¡¡|ýõ×L™2…÷ß_6=NÇÉ“'™?>“&MbÞ¼y™–¹{÷.µjÕ¢L™2ÔªU‹»wï>÷3Bˆ7ÉßÍœ¥—Õ9VFæææ¬Y³†ýû÷S±bE† ÂÌ™3Mη²Zçyç‰*•Š€€®\¹‚»»;+VdÔ¨Qyî”›úíÞ½[u\¥R±víZ._¾LõêÕ©^½z–·ÊèEöyÚEP­VûR?³¡R©Xüí·,[º”ÿ-òûG@€¬¶ÖâÞ½{K‹7·¥è/A{±«øí<œsXúÍpl^çÎo8=û6ÛiÒ®¢ 4Ÿ—U5‘AƒN³fÍL‚Ǭ7¤¤¤d9úõ«1óáx¬¬¬rj4)lذá¥on¤'Äœ¹¹ù+ áùM(Ò=Ù8_f†æuœsãe#’ÙÊ™€BˆüèM ïÝ»§ h’Q`` Òÿß §}žñÖ`¯“¥…9'£Ióìo§”ÑÅ x™I:9B!„â%zS2®®®œ8qâuWã•xSöyn´hÙš#GŽàR¼8¥Ë”EýœþF£‘p3â^­Zóà%m¢B!„B¼Dù%ù7ÉOû¼t™2=z„?ïxî(Ý*• GG5iL™Òex‘ùÎ/"ßéÛ× !„B!Ä›®t™2J0ø:È-"„B!„â?D‚@!„B!„øÉ÷ÍAnEDpðà/hµÚ<­wISþª‘B!„x-K'¼î*‘¥;÷îçiy Z¶lõZ›}f'ß·"nräÈêÖ«O}OO,-­rµÞ‚/>㽎mþáÚ !„BˆÜÚ¶3ˆê5j¾îj‘¥;÷î3yê´\-›””Hð±c9r£”)]柭\åû 0$$„Öï´åí ”›Zç–Ñ`äi²î¬B!„È ;ëÔÓR KË×\!²g4Ÿ;šgKK+š6÷¢xñ=ú‡/[LL eÊ–E¯×çyhX½ÑˆÞ†“B!„ø·Òÿy§V«_sM„È^nƒÀ4n¥Kósà?X£“ïƒ@ƒÁ€Z­F¯ËœÑ3œ ÁÙµ8.®Å3Ï7òô! !„Bˆ†QÎÉD>`4M¾«;vì ((ˆÅ‹£Êâ¦ïæjõoäû ²æŒF#çΆòôI<5=ê`ÐgÞùz#’ Bä;Û6oཽŸû\!ò½œ’‰| cÜѸqcæ/XÀˆ‘#ù.›@ðMôï3¤eF#çÏáql -[·A¯Ëº©¨Ñ`Ä A "JìÊî¹Bä'F9~‰| cÜQ¨P!~Þ±ƒæ^^Œ5ŠÅß~›/ÁGˆ£ñ¯ãNd$Q·oQ±rôz}¶)Ø­žd #„ÈÒ»²{.„ù‰µÅ›â,DƸ páB´oߎŋ¿£QÆôíÛç5Õ.÷þA N«#%%EyíèäD©2e¹‰kñâ¨TYw0Nä媓"ÿ‘L âß&¯ü ñ:dŒ;?Žc×®ÝôíÛ—®]»dšÿ&úWYÒS¶\êàÏü_ÕkÖÊr¤)½AFBäOé]Ù=BˆüDŽ_"?ÈwÄÅÅÑ£GO6h€ßÂ/ÞÈ`2ú—YòYºLYnݼF£ÁÊ*óMäetP!D~äÕ¦³rìÊî¹Bä72:¨È2ÆGŽ¡zõêøú.òGÿ‚ P¥RñäÉÔÙtÀ,]¦,–VVh²HËÊè B!„oTäoÑ®m[Úµm›:/‹Ð`0¼‘Åäû ÐÑÑ‘GR¬X±l—INJÊrºŒ*„BñfÑAE~×›Å?|øGGǰF/&ßu8räeÊ”¢zõ¨Õ¹ß$#à`—¹™¨B!„xµ$ùAj)ç P¯×qþü9""nÓ¨IãWP³¼É÷A`é2e8xð.\¸˜§uƒƒý5B!„/êÔ‰à×]!²µlÙ’\/kaaA‹V­(SºÌ?W¡”ïƒÀzÀª-çy]÷—_!„B!Ä¿Sͼ¯óÀ"ô/¿2Ó›×KQ!„B!Ä?&ßfŸ^Þÿº« „B!„ùN¾ [µi÷º« „B!„ù’4B!„Bˆÿ …B!„â?D‚@!„B!„øy¡ ÐÁ±(ŽEù%hïË®B!D¾&çIBˆ7Ý gcc¢_f=„B!þ5ä{lÙº•+W®äzù””ÆŒûÖH!„Ïcþº+ÍðèqôuWã´o/Å‹Ï4½S§Î\¸x‘ðð0¬,-s]^£ÆMøðñôìÑ#Ó¼©S&SÒÍ-WåT«^ƒŸü×âîîžåü¯¾úŠcdziãFeZºõ(W®l¦iŸ|2•÷ºvåÙ³gŒ?ž}û‚(\¸0}4Áƒ)Ëæ4?<<œ }ÄÙ3gquueÆŒtéÒY™?qâ$öîÛÇÇqtt¤G÷îÌœ9sóÔ¯ö–Í›X¶ì{N‡œÎqû¿[ü=zô eËÊ4/¯æŒ5š‘#G°tÙ2¦}ò âèÑç75j¤”sçÎ ȯ¿ 66–ääd“å .LL¦¬Ãoá—9ÖÀgèPnß6 4u:Oâã™2u Ý»u3™wþ¶oÛžeY-ZxѸqãLÓøúâìâLµªUsU§°°0nFD(¯cccéÞ£'3gLgܸñnߤ‹Ož<`Û¶íôíÛ—66&eÙÛÛcmmýÂÛûýòåXÛX³aÃ_ßÓÈÈH (€ÿO©`îÝññÂæÍ›Ñë èt:ô=z½ž”ä’’’HLJ"))‘²eÊ2t¨Ïž>ãóϿ࣠ص{VVÖ ööæÓY3ùìó/Ðéô&ß©¾¾`4ÒÜ«hµâãŸàââBÕjÕiÒ¤ ff0vÌš4iÀîÝ»¹sç.3gÎÈq¿ÿñÇ<}ú½Þ€^¯G§×¡IÑ””HRr2I‰Iذaô¨Qh4®_¿NåÊ•3•^¯ÇÙÙÙd¿=xðÀd¹íÛ‰~­|ŽÎÎθ¹¹¡Õj¹víZ¦r“““9zô(áááÊ´·Þz ‹·O!„߆lnD«NðËòúÿÚ@0£Û·#9B‰%Ø·w;wz)åöêÕ륔РAC¾úúôz=jµš Óé8wî¼É´›7oÒ°A¦Ï˜A||<áa¹qã»t¥R¥J4ðôÌq¾V«¥wŸ¾ôìÙƒŸwì 4ô Ý{ô B… T©’zÂÚ­[7FMáÂ…¸zõ*ýß@åÊ•éÓ§÷KÙæB… Ñ«WO,-,™2y2G%:&š¶mÚd¹Î¾  Ž=ªœøŸ;wŽ5k(óW¯^éS§LÖì=˜wZ·æÁƒôéÛ­VCDÄ-|†~À7ß|¥…=zö¡Hl Øð¿E‹¨X±"+W¬0)ïØñãL2•î=ºÓñÝw3Õ±˜“5ʲþÙ]4¨Q½:gÏœÍêt:%è¸qã)))íß««+áááXZZRºtiúöéMddßíÀãÇ)R¤ÁÁÁ¬^³€G1cÆLÔjÓF ƒ¤yóæÊë¼loHHn%Kâ=x0Þƒ“¢Ñðìé3ú¿ßŸéÓ¦Q©ReÔj… Æh4rÿÁÔj5j• sÌ-,Ø}pçΣuëÖÔ©ãA­tJèß¿?®Z…mÁ‚ 8oKµªUY¿® æü…óŒ3†ãÁÁœ>ž~ýú2Ø{>>ChݪjµZy¤ädl2ÆÙ9{îñññ¨Õj,Ì-°¶±&$$„}û‚ðôô¤~ýz”-SFYþÔ©S¬X¹’Õ«Ve*ëЯ¿òÇðí7ß(ÓΜ9ËGŽ˜,wóæM0¹qó&M7ÆÍÍgÏž±jõšLåê´ZâââMæM2™"EŠäj…Bñ÷¼ò °—ﯨÌÌP©Ì0ÿóDïmW¦÷J=± ð³ÔeµZ=Áë<ñìüª«ùÊmܸ‘æÍšáááÁ† L‚ÀsçÎ1jôhîܹKýzõ(æ\ GÇ\•ë^«6«Wýˆ»»;•*WaĈáìÛ·‡R«v-–.Y‚……'NâáÇôí×KKK¦N™L¯^½Ø¹s­†nï½G­ZîhµZ.\¸@Íš59~<˜Æq+â–É´²eÊàââ‚V«eëÖmlß¶;;;jÖ¬IîÝÙ°aƒä=o~XXwïÞå£ °°° ^½º´lÙ‚õÖ3wÎ<=ë+ÛZ¦lYlmmqptÈóþ7 $§$óÇpìøq.\8Ï7)ZÔ'§b “ϤJå*´oß>˲nߎäáÇÊ눈[”)]Fy=aÂølëáììÌ¡ƒ¿°Ž7o2cú4e^xx8U*WfýúuhµZTªÌ­¹ãââøtölîß»ÏêÕ«([¶l¶ï“>»“Ÿ¦_¿¾\¹r…]»vsðÐAôzûöîQ– XÇý8tèuêÔañwKˆŽ~ÄãÇqlX¿Žÿû¿PZµj©,ß¼ys%À«ïÙ€eK—P°`Á\Õ)7ÛëÿÓOtìØ‘ÀÀÄ?‰Ge¦bÉÒ¥T¬X+W¢× åÂùs˜™™1vÌeÝ{÷îá=dï¾û.ëלœÌ…‹±È©ß¶};¥J•bõš5”tscÆŒ™„‡‡S¾|9ÌÍ-¸q‹U«W3ÄÛ›éÓ>¡q“¦´ióÁ'þ:¶Íœ5 7·’Œ7ž ë×™dä5)¬¬­rµOÒ2|ðg³Ë1c)\¨0gBÿbÅŠeZþâÅ0ªW«žeY]:wfîÜy$$$(ŸIÇŽïÒ±£i ýá¸qtêØÉ$ã P¤H|ÌWê²dÉR®^»†‡GmŽ;¦ÌB!Ä«õʃÀbÊáX¼–*3l,R£½„K©Í…ÿX‡Î#0&FÐvð0ƒKêÐÌ;çæ|ùÙÆ™4i"ø~ù%=ÂÉÉ ­VËû2|Ø0†ƱãÇéÙ³Ã>øà…ÞçÂù ìÚ¹€¶íÚ³yóúöí×_ú²wß¾LÍAûí7èöÞ{XZZâááÁ±cÇ©Y³&ÇŽ§g\\\L§5LÍFFF’˜˜HµjÕ”òªU¯Æºuës5ßh4`fff² /†™¼ž;ï3~ò÷'.>ž©S&Óæwr½?‚öïgÑ¢ÿñèÑCž>}†•¥mÚ¶¡Oï^”+W•JÅê5kˆ‰ŽÉ¹°lDÇÄPºt©<­³eëV>ÿl^¶ó³j6·}{ 3gÍÂã6lÚ¼™òåËÓ®mÛ\UÏS¯^]æÎ›Ç;mRËëÔ©#Ë¿ÿž%J˜,7cÆt µj{ðÃÊXþ0U¨X333&MžÄ¯‡Q¨P!“õú•˜˜ڷ…zŽòo•gô¨QÔªUë…¶÷öíH6nÜÄ"??¢£Kq×âT®\‰.»œ’Lhhh¦òu:}ûõgÖÌ4oÞœ˜˜XºwßBÆoøîÙ³Ÿ!ÞJóM€-[±tÉRJ•Jͬ¦}Ÿ-,,033Ã\õá7ã÷@«Ófj.œ~8Ž5k˜†ݽ{—J•*f9ÏÒÒ’žžüq䈒ùŽŒŒdà Á&ËEEErìØqìììøá‡•&ÙF€1cÆâT̉‘#G°~ýú¼rƒè«7P©T˜ÿ™Éx»xj榙÷i6,ª @¯¡ Ø´b2¡Í¨³¯ºš¯Tpð îÞ½KÛ¶m±··§bÅ lÙ²•#†s:$„ääd††™™6ÄËËë…ßËÇÇGifÖ¬YSÎ_8ôÉvy?¿…&¯5jȱãÇ1b8ÁÁÇ>ì\\\X½f2m䈞8‘Û·#éÝ»µÜÝqrr"99™_ýÏ?ÿœ}{÷šd.\¼ÈªWeú|³͸qãiܨS¦L¦\¹rÏ]>$$„ªUª( €¥¥VVVôé݇~øQɈêõzFË“'O°´´d÷î]ØÚÚ2aÂG”*åÆGOdÎìO•~ŠyÙÞ©Ÿ|‚««K¦ú tz]ês½>Ëm8pà¥J•R²”ŽŽøøøpôØ1¼&êÎìíì˜3{6#FŽâÜùóܺu€;QQÌ_°[[[¼¢R¥J@j3ãfÍšeù¾Y ”ÖÜ:/nܸÁÿ…†²lÙÒç.—˜˜¨Ô1+›4&øx°º¹¹qèà/&Ëd— Lï×ß~ãò¥pT*sçÌaçÎ]yØ!„B¼L¯<œÛì8õÛ-˜nÚɽ€Ôæ mGže‡_UŒ‰$'éèüÑÅW]ÅWnÃÆ xyyaoŸzBÙ¥s6lØÀˆÃyôðnnn&Ù¼f•Ò³··SžÛXÛð8öqžÖoØ ?üð?&::†råÊáääÄÈQ£xüø1áá—hР!¶ b4INNV½„„å„3§ù–––¬[ÀäÉ“Y¾|o¿ý6]»v1ij `kk‹­­-;wâØñãüôS@®ƒ@''§lçEEEá=ćQ#GfÊvå…¹Ú.5ЈŒŒdô˜1lÙœ}PùÓOôíÛWYþЯ¿b0”,KF§O‡0jäHš6mŠV«E«ý+kÔ¤IžÿB ó²½:¾KÅ 2Õïæ›<˜:P^§Ër.]ºœ©ÿc¿~}1ÊÿcLLꈱ%J”À ×ãY¿>uëÔÅÒÒ‚?þøƒN:bggGÁLƒR«ÕÙfg³ öT*•’IÌ(hÿ~.]ºÄ‡FÛ £Zµœñ±´²4‘Õh4rðà!¥Én¥Š•س{O¦õÎ?Ïõk×qvqV¾ßÏS¾|y‚‚‚h×®AAAܹs‡¤¤¤\÷uB!ÄËóʃ@½^…0¢týCo0íÛÔù£‹ü8¿ݧ\zÕÕ{å’““ Ü^¯§RåÔÌF£!>>ž /âT̉èèh“u¢Eÿ­ $;Y5C˨nݺE­VSªTi¥ üó²½½zõÊòv*­Z·fŸõKLLÄ«EËLË8u$$$$Óô¬þO®_¿ÎÃG([¶,]»¾Çû±±±¡b… xña]ÀOÊEGjÕrÇ÷Ë/Ñh4Ô¨‘Úïæ›Ä>~L­Zî8dèókogO|||¦÷Õëõ,XàËÂ/}3Íspt$22*ÓôŒÞzë-.]úëX»ÿÀüýR‚À2eJeZÎ__Žüq„V­[qòÔIØSÑ¢4oÞ,ÛŒåÒ¥Køøã‰|1>U«Tå­·Þ2ɧÙÄþ ý´m×öoÿï !„"k¯ü>:ƒ9zŒ ÿó¡3dŽEÿ  Àî={P«Õ?v”ßÿÆï‡#øø1xz²qãFêxx`08ðKjó«Û·# Ú¿?S9:­Ž””å‘—û¹¥)R¤°Ò”-Íλغm›òÚÚÚwww–,YJÏÊôúžž,Y²TRû>uëö_~¹ÄÄDÂÂÂÙ²e ½{÷ÎÕ|€ÐÐP¢££‰åÛÅ‹9{öRo/±zÍîß¿ÏÓ§OÙ·o6lÈvÀ–œ¸¹•äâ…‹é^»½”“Ð%Šs÷î]œŠ:qöìY4î…—””´„_ºD«V-±··ç?ŽÐ³gDß¾};f Å‹gÖ§Ÿ2ï³Ï0 Êú[¶n¥lÙ2íÛËöm[YøåB–¯XŽV«eÏÞ½4kÖTYÖÖÖ–«W¯fªCv‰ŽŽ&...WËÿöÛaªU¯f2Òchè*W®¤¼ž=ûS¥é N§3ù¾zñ¡eË´h‘Úì9pG õêýôæu{3²··çÐÁƒôéÓ—>}úâí=$Ë ¼}»vìß SÔ¬¬còäI¬X¹’:(ÁZmÎÌÓùp\jÀÂêÕ«)æT •Ê ;;;qtp¤@XXXPÌ©«W¯6 @+UªÄ©Ó§2½ïìÙs¨Y£µk×Î4¯n:<~üØäÿ7+mÛ´!0p) ÉÉÉÌ™3—‰¤Ì·³³ãéÓ§&ëlݺU«WñáØ±|ñùç4kÚŒë7nбS'¢¢²<Ë–)ÃÖ-›ùýða||†P¦LéLãÅ‹a¬c̘ѬY½†Ë—/?·îB!„x1¯<¨Ñ«ÑQš„juyëëòo²aÃúöíCÉ’%M¦ûøø0eêTfÍœÉÚ5«7n<‹-¢Há"Y&cÆŽ5¹ùrïÞ½ùnñ·yªËرc™¤*•ŠŸÞÉìÙsHLL¤lٲ̛;7Û[7ä¤_ß¾tïѓÿÿŽ“SQ“ysfÏVšóY[[³déRV­^e9IIIôï×Oy]©R%åD|Èo¾\¸æ^-07Wc0Ñétt{ï=&Nü˜jU«2onjæªAÃŒ1’ o¿M¡B…XöýrúõíKŸ>½Y¼x1 JÑ:uê°|ù *V¨H¹re =s†ÈÈ(:¼Û‘Žï¾Kݺu•ú´mÓ†Ó§OÓ´Ys¼¼šSÊ­*•Šøøx"£"¹pþ?)Û[ÔÑ‘I?¦U«ÖtîÜ™òåËcieIrR2qñqÜ¿ŸY3g*ƒÕüðÃ|ðÁP"##éÛ¯­[µæ#Gâý×`"EÿÊt}0Ô‡~ýß§j•*˜™™1xÐ@Þ}÷]î߿ϚµkÙ½{7Û22yÙÞô._¾LåJ•?>ó­aaáÊ­GŠ-Êòï—ѯZ¶hAõ?3vµkÕ¢F&ëΜ9ƒƒqèЯìüyÚ×ÐÌ ¼¼¼X¿~{öì¡víÚ´lÙ‚Ð3g¸zõË¿ÿ+«¿²a––Jpœ>Û߸q#>™6/æÏ§yóæÄ=~ÌÚµþXY[±üû¬›õZXX°~]ƒ½‡°yÓfêׯ¹…9o¿õmÛ¶U–sqq¡{÷nôéÓMJ }úô¦fÍšÊ|6mÜ`Rvýúõð]àK¯^=¹ÿ>!ÿÂï‡sîüyzõîÃŽ&Ÿ1¤û§O‡pà—_øåÀÖ¬Í|ëˆ;wïàáQ›²eËR»vmîܹ«ÜE!„/OVíÿ,îÝ»§±´È>>tp,JlL4¿í¥U›vyzÃàCßÒ¸ël“iG¶Ï³ŘlÖøw©V½666ø °a/6§Ƚ~ýús1, ¯æÍùßÿ帼Ñh$22Š'OŸ˜ôÁªðöÛXYånˆþŒt:‹/fܸq&Ó5Mêýèž3àGXX8»wï&E“B:užàFFFĽ{÷Q©U¸¹¹Ñ²E‹l›ÇÇÇsòÔ)îÝ»‡^¯ÇÎÎŽâÅ‹S©bE%ÐN/:&†#ávämå–… ÂÙÙ™–-Z(÷ ܹs—r E ¸ æIDATGñÇ‘#X[Y=7Cz£ñ²eË*Í-çÎû G”e¿±Ünïœ9syûí·IHxÆÞ}Axy5ϲµjÕ¢QÆ™¦'&&rèÐ!nܼ‰Z­¦…——2hOll, d׮܌ˆÀÎÖ– 7²eóÌT*öí݃••÷ïßçÙ³g¼õÖ[lÙº• |YòÝb“`uýú „ž9“ímbbbñ÷_Ë•«×°-XÖï´¦u«VÙîÓ4F£‘“'OqõêUô=î5kšyiöQ¨P!“‹0ÙIÑhð_»– /RȾ}úôV½yúôi–ýWSRR˜4y2Mš4¡cÇŽXeÑT£Ñà=ć””dll ðÃÊry‘/ýó$!„ø;4Z®®®Ý€$ ñÏGBºçI@ò+ß¿”fÝg˜L;¼e.Mß‘§r„"742°ŠÑh̲Ú«”œœŒJ¥ÊTN‡Á`xíõ{h4Ù"_“ Pñºä6|åÍAµzsôÆÌÓ„âŸð¦éo‰’^Z&U¼yŸ™BñoóÊÏ:R¬x¨Éô€áχñÏG–ØV€5`“îoÚsë?ç[ü³uB!„B‘Z Hþó‘ôç#9Ýß”ì2FR£E=©¤PóWÐhüsºB!„Bˆ7ƒŽÔ 0ÐðWV0-#h„¬›ƒ¦¥ ® þsåô >›u…B!„B¼i < ©`ú¦¡J“Ðì¹´, ž¬À´àP!„B!Ä›!-~K{¤eÓb;ä.˜U¨EFB!„Bˆ7IZ —öx¡L`ú0}A !„B!Ä›$m$д¸-ýß IDATxœì{|ŒWúÀ¿3™™ÜD"’ ’ A¥(—RTmݺ«­î¶ÝJ·]-[TÛ¥D«íö¶­km±ªz Uwê²­û] ‚܉È=™d$™™óû#1„™w&“ªçûùÌ'™yßó\Îóœ3gÎ{Þ÷€D"‘H$‰D"‘H$‰D"‘H$‰D"‘H$‰D"‘HîUTv>·÷W"‘H$‰Dbaï¯ÆJ!UJJŠù¶š%‘H$‰DrV‡ŠA—Ì7ýÖb„††Þ~ %‰D"‘HîARSS<¨x™ÓMÍØšÈ/,¬ ;%‰D"‘HîU<©xoø«ªü+•Í1Ìòê¤D"‘H$I ð bÐå”s}½år¥Í1!„•C‰D"‘H$ñ¤bvó Ì\ùÞöŒ˜YΈI$÷4ï½÷|ðùË_øè£ìž/„ ,, ½^ÏÞ½{iÑ¢E-Xy{¹}’H$wžT̆Ý<s£âR¥ÕÅú'[™Û´y³Ãšôï_C%I 9á]»v¥¬¬ŒˆˆöìÞ­x~ÂéÓDµn B’’B§Î8zäMš4©rþ•ÌL"##Ñj44 ·ÚGX£]t4ééélذÎ:9áYõ1Ü×´)eee>>¸¹¹‘ŸŸÏ™³giݺ5eeeÌŠÅ7ß~ƒV£åŸÓþIrr ‘‘­0™ÇÇЦM«íwÞ¼y¼=ýmÌ‚… ,ï{õêEPpë×­G«ÕòÑÇ1`À¶þ´•gžyÆR><¼9†¤ä$ÜÝÝo‘¿dñ/^Lrr2~~~üiÄŸxýõ×Ñh4vuY#2²%§O'pæìYúôí À{ï}€Á` ï#}éÚ­ŸÏ™kÕ§¾ô¥aƒ†üðÃ4iÒ„EÿYÄ×Ë¿æë¯¿ÆÝÝöozõêU£˜I$ÇqvìQÛå¬àNÕAX9ƒ°k1…1'RB˜kT^"‘TŸéÓ¦#„`Ô¨QìÙ³‡ýû÷súÔiZµlÀ„W'GHH111L}}*F£‘   êÖ­‹0 Nœ8T Ĭµß“ñ'hݺ5Â,,ïwíÚň#hÚ´)ñññ|üÑÇôï×ooo:vìÈáljˆˆ gÏžøûû£Óên‘?mÚ4.\H£F1bëׯgÎçsðòôb„ vuY#22€sgÏ!Ì‚¤¤$V¬X››o¾ñfnöiÇöôìÙFÙ3gøè@Z¶l‰ŸŸçÏŸçã>¦gž5Š™D"qÎŽ=j¡œ–Š˜†ŠuaUa ð@W[‹õM&“¢Ækåäb‰¤vزe ûöíÃÇLJ1cÆ‘‘ÁþýûIHHÀl6süøqâââðôôdÍš5ãççÇ‚ hÕª•¥­ÆÇẄµnÝÚjû=uêT•ã×Þ?ž &°råJþþ÷¿£R©0›ÍtîÜ™fÍšqøðaÌ+¯¼ÜÚ7œ:uŠ… âííÍÚµkiذ!ááá̘1ƒíÛ·óÊ+¯ØÕeˆˆÎ;‡ÙlæwÞÁh4òôÓOÓ¢E‹*>ÜìÓèÑ£yë­·˜8q"ß|ó ÑÑÑ|ûí·,_¾œI“&¡V«e'‘Ô"ÎŽ=j»œ3Øž³±hÕÞc-®—¿Hn?F£‘Y³fƒÂÃÃHHH@Áÿþ÷?ºwïNPPP•¶ÙªU+„dggsåÊ rFì¦ök49wLyy¹åýðáÃBœœ\Eæ5 bvÊVŸðÓO?ðÐCÑ A„F¼¼¼Öu3×b‰‰‰9r„ 6àééÉ?þñ‹[>=õÔSUôܬWɉDâzœ{Ôv9g1‰ä7Ì×_Mbb"}ôQ•ÇP\ˆåççP§N„˜L&¶oß\P\› óðð <<ü–ö{îÜ9ÊËË©W¯ 6$!!òòr|}}iÒ¤ BNž¬¸¬wmpd6›9{ö,-[¶´Ù' R©,¤5kÖЧO‹n%]Ö¸ï¾ûððð ??Ÿ)S¦0fÌBØôÉÇLJ°°°*3dÑÑÑUô¶nÝZöqI-ò»ˆ™lL·Ù›†»vÜVy‰D⊋‹-¯Î]ºÐ AÊËÊØ¼y3iiiéõ´ª\°ÿÓO?ñùœ9>tÈ2ó‰Él¶¬3›Í :Ô¢£Ãý÷óÏiÓ8Y9 iÕª&³ù–÷§+‡Ñ²eKLf3ƒ«W¯ðî»ïÒ¼ys^0á?êÞ9sæ°mÛ6^yõU‰çþûïgä3ϰ~ýz»ºlѬY3Nž<ÉÉ“'©_¿>c^xÁr¾-ŸZGEa‚ÔÔTôz=îîî4 ÅtÃÀ¬å ¶H$’Û³cÚ.ç ÕÞâÈþ(ѬX^"‘¸†óæ‘MDDË—-C«­xT…‚6mÛR\\̹3gøÃc±oÏVÿø#‹¿ü’?þñlݺ›ÍÃÃÁl¶Ìô”••qìèQ‹Ž÷ßf3 × -[Vyߺuk0›Ñëõ\ºt©âœÈH0›ñtwgì /°lÙ2Ö¯_O·nݬö Ý|wß}—ùóçóã?Ø cFfü+¯ ussH—-"#",¾½2~<Þžž–ómùÕª˜Íœª,›JEVf&999hÜ܈lÑBöqI-âìØ£¶Ë9ƒÊÊgÚ”””2kFìÙ³‡nu¡º¶*Qñ¶â¢ò¼nÝjlœD"‘H$’ß7ÎŽ=j»ÜͨT*† ¤òU|ÃÿàªÂ]“6*d÷¥ú²[^"‘H$‰¤:8;ö¨ír7âææÛ3b×îZ’H$‰D"‘TFãÐŒ˜úΙ(‘H$‰Dòû¦Ú¯H$‰D"‘¸ÛwMʘD"‘H$ÉmÅæ@,7/¯6íH$‰D"¹ghذ¡CçYˆyxxдiS‚‚‚\j”D"‘H$ɽÎåË—>׿b}ÖöUK‰D"‘H$‰uª3†’wMJ$‰D"‘Ü!ä@L"‘H$‰ä!b’Z¥ØPÆà) 0a.ã>øöN›sO0|ê"â“3î´· Gü{fÆRœ>ïR½J2¿Ùz˜¾ã?§Ïß?s¨îOYÈéTÇ׌Ø"fÜÇ\É+ª±É­¸*FIuqÉ@lçøñ¬Š‰aE»v¬<˜´íÛo9'÷äIV´mKüüù®PyOQTRJŸ¿ÆåœÂ*ŸO™·¦Ú²¾Ú|Á“òÐØùöRR/çÖØ¾/×ïcöW?ÕX€·§ŽgaÒȾ.‘'¹3¸2'\!óÙG»äïR{lÉ,7š˜³j'ÿ}ëÏlû÷Ë´ v©Þ;³q¸9á,w“-‰=\²"?âé§é8u*ÎoÚÄ®‰¾kZoo„ÙÌ‘÷Þ÷ysW¨»çøqçq:·nJPýºÄ.Ý̽گçóU¿ðêŸzã[ÇSQηێ°êçc|ðÒBƒësì\&“ÜôSrïóH§–µ&³@o! ðu¹N‰DòûÃ%±†]ºXþ÷ ÁM§CuÃn—I+Wо=…))®PwOa6 ¾ß~”™cY>›0¢7K7îçÈÙ‹ÌYµ“±ƒ»Û„üwÓ^ùS/"š4 s«¦–c©9Ä.ÝLbZ¾u˜øÔÃtmT\úy¸c¿&^ââ•<žø #útàtêe¦Ì_C±¡£ÉÌÞøŠø};ãyeFƒ§,`öØÇijÿQ?[$0ñó0›c‡vgHL;@¹mOJgæâä3´G´EÖÉ” þñù¬ÿ`juÅ–Á»“ÙÌ?žê£h‡­z±[ùi¯œ­ܸï_m>HNA1mƒ1šÌœLÉà“ñÉ VÌÝšôYÎÄÈ^?a«m*µéáSñö¨Ç,3ªý^ÃÂÉO䯘»öl‘Üh322DNv–¨{§Nßwé"âºwYGZ>¿š—'Ö$ÊŠŠÄÏ/½$NÌ›W-¹÷:?LÏÅ.«òÙ¡ÓçÅ乫œÿ\,Þ\¸V¬ÝuB˜ÌfE9™¹…¢ó¨ÄåœB«ÇG¾½D,X½K˜Ìf±ûx’èõÒ§¢@oB1ìõ/Ä;K7 !„HIÏ1ã>¥eå–²ÿY·W¼»l‹U¹O^ ^x…(,®uñJž]}B±íÐ1öýo}º%;ŸŸõ•øpÅ6Qn4‰”ŒÑwügâbfž0™ÍbàĹâÌ…L!„¥åFÑûåO-vÚ*gÏ?{Ø*§¤oíîâRV¾0›…øùè93îcQl(B±nw¼2e¡HÍÈBŸœ.Ò³ó-õòÏWËÊžø‡êE!ÞX°V|úÝa6 a(-ñÉéÇÂVNØ‹»32•ü»QïþS©U>«‰¶d QÑÖºý¨Z²Ÿ¼@¼òIœ(-+ ç/‹/~".dæZôX«3“É,þ0i¾Xõ¿cÂlbΪ_DçQˆÌÜŠ6>ìõ/ÄSç…B˜ÍB zm¾8žxÉ®-öêÅV”òS©œ­ܰ÷¤õîrQrµLôxñ±ûD²Xºq¿øô»Šå®ùîlŸe ¥)Ù¢Ô6•êlØë_ˆI×ëþ‘W>)•2”bd¯Ï’Üädg‰ŒŒ  z€Ö@(Ðð´.[¬ßaÊÄÅ6h‡ß{a®¸$vìãiù—¿ ­SÇUªî)¾Ùz˜'ûv¬òÙùÌÖ³âD«ÐŠív²+ËÛS€ÞPjùÿùz:¦Êçþ>^äë –÷žî×§íÕj5F³ãkËú×­¶>g±fgVAEülì2Ë1Ci9ÍЧc$³¿ú‰†tgÇásôéXQßöÊÙòÏQn.gOß– |µù yE%¨Õ*òõŒ•kür Š V°ãÆK×:­Æ¡zyqX sWíäÙØeè4^z¢}oÊÅêp;ãnÍ?{¸Ú?Gxtâ\r KX9k\¸×óñ²üïïãEþªbÕñr§žjUÅ¥Gß:ž¸©¯ÿvî×¥£gͤ‘°õ`ýºT]ÓfËgëE)?m¡”ƒu½=,—UÝԪʗ£É~îBÍú,[X‹‘=[”Ú¦3u¶cähŸ%ùmáúÇç«T¨T*ÊõzŠ32È;s†mÛZ§mßNAb"ýë_.Wý[cÅO‡ùcïûѸYŸ˜|öÑ.V?·F]üëzq<éøWí}ëxPf4Rl(³tø¹E%ø9°î @…MàU7½wDŸZ­Â䂎 À×/¾›ùW«Ç£[4¢¨ä*‰iYüòk"‹§>ãP¹kÜ쟣Ü\NI_fn±K61Ò“´®\o4`Â\K½×÷õ&#·ð–rJØó/ЯÓþú(Û!véfútŒDå€ÃÖrâvçYu©‰βñÃmË+*±üŸ[TBTX°bùÕñDÃL¸¡´¼J› ò'¸~]öŸLeÇ‘s|2~¸C¶Ø«kq°—Ÿ¶Ê)åàÆ}§¬Úg¯œ#8›KÖbdÏ[mÓ^¹¹©-ñJ®–YÊÚŠQMëErwRãK“ú‹IŒ‹Ãpå eÄÏ›‡Ñ` :š#FðôÉ“–W㇦ÝË/ËAp%¯ˆ=ñÉ ímÿdyú‘˜÷ÃNÎ^¼B¹ÑÄá„ $]Ê&È¿.á!,ßr!`ωd.eåÓ!²‰Crëùx‘’žƒÙìXÇæˆ¾& ê‘’‘SqZ   ¡¿‹×ï£ÜhÂd6säÌEÒ²ò*.OvˆàÃÛ ò¯k™°WÎÕ(é3”•£Õ¸\€¿&UùRx¬kË7äBfP±À=#Gù‡=ÿvO¶èи¹¡Õ¸9y!*¬û`¬ÕõmŽòÁ߆ðþò­ôŸ0€È& yã¹þ–ã}ˆ nÇQÆ ©V9WcK_h?Ã{µç™KiàçC‹&–;"=Ô†¼¢þöáw•\¿3ËY}Ç“.»t†ÒrÔóazå/pG°•µgON[Œ¡´œì|=Ó­G§Õ0nh º´rÚ?%™5!4¸>C^ÿ³Y0áɇ-ë •êlÖ˜?ðî²-¸k54k€VãVEf¿Î-ù<îgF¶7è5ìÕ‹µ8ØËO[åKrû±öûP›‘‘Q¦Ójð¯/¯;ß®–•óøä…,œô$¡•¿–$‰¤º”Mô{ås–ýó/4iPïN›#‘H*ÉÍɦ¬ÜHppðpÀ”T¾Šoøß\•[Ý®äé3ø!9“H$5bÍ®´h(aÉo×/Ö—Øå¾†õ¸¯¡ì8%‰ó }ý Lf³C—¨%ÉÝ‹ˆI$ÉoÞmÿ$‰Dr×#/MJ$‰D"‘Ü!ä@L"‘H$‰ä!b§(6”1xÊBL˜Ë¸¾­UÝÏÌXÊÓç>øÔEÄ'gÜF‹¬S];/Üíõ2kéf¾X³çN›Q…»©În‡-w“Imã’ØÎñãYÊvíX?x0iÛ·[Žm~ê)¾ŽŠ²¼öLžì •¿ ¦Ì[s§M°‰·§ŽgaÒȾµ®ûÙG»Z¹¯Û|¹~³¿ú©Öì°§Ï–¿wd½TÅd6ÓetÅC®ÿúÎrŽœ¹xË9wSY³Åª+ÓµÝÞ%’Û…KëG<ý4§NEãáÁùM›Ø5q"ÃwíBëí @̧ŸSñ M•››’( »t3Oôj@v¾žÏWý«ê]å¿géÔÒþIw¿;kY/Õçnª³ÛaËÝäŸDRÛ¸d Ö°Ëõ=½CBpÓéª ¸ÔZ-nîÎ?5ý÷Æ„½Yºq?GÎ^dΪŒÜÝ¡AØð©‹x{Ôc´  ß«sX8ù)Bƒü99—·¿ÜHJFîZ ÃzE3æñ‡ì–[²a?«~>F~‘ úuyù‰žÄD7«‘ödž²?èÌš'È-,¦}‹ÆÄŽÄ7[³bëa²óõ|<~8[5*¶™2 ņRŒ&3{ãSøvÆó–§iN¸À´EëÉ),fÜÐFôéÀÆ}§øjóAr ŠiŒÑdædJŸŒNTX0YùzÞ]¶…£gÓ¨ãéÎKÃ{пK+»úlÙyå[ñí¶Ã_ ÷ÍO)·†­r©9Ä.ÝLbZ¾u˜øÔÃtmf‰íÃ#ø5ñ¯äñÜÀѧÇÎ¥1cñFV½sýλ·¾XGóF<;°‹MßíÅH)Ï”êÅ”°[GóúdJ¯Ï_Ãìqƒi¤X/J¾;‹½\r„ÜÂVï}Īž=ÅŽqãDArrµäþ9tú¼˜>yxáý¢°Ø „â╼*åG¾½Dì?•z‹Üÿ¬Û+Þ]¶Åj½üãóÄÕ²r±/>EÄŒûX”–•‹ {OŠQï.%WËD?»O$‹¥÷‹O¿Û!„âùY_‰WlåF“HÉÈ}Ç&.fæÙÕ§dçºÝñbÈ”…"µ²~ã“ÓEzv¾S.7òí%bÁê]Âd6‹ÝÇ“D¯—>zƒÅ÷w–nB‘’žmñÝd6‹çŠ32…B”–Eï—?µÔµ=ßmÅH)Ï”êÅ”°[¥Œ]²I,üq·H8YüaÒ|ñkâ%‹\¥zqÄwk˜ÍB¬þå¸Bˆ_Ž%Ь|½Cuf#g.Š7¬}þþ™˜¹d“H8Ùn¥¾@ÉG|PšL{q·Õþ”rI"©-r²³DFF††=N@k høZ—-Öï0e ââ4ˆÃg¨ÜU¾í¸qôþâ ^´]:üoìXÌF£«ÔÞ“œÏÌcƨÇhäÏÌуP«UJk$S«q#+_Ov–¨°`‡Ê êÖ†_T*èѾ9Þž:Ò³•7›v…Ì}:àãU±çµýÞj˜v¸k5t‰ E­Vq%OTl¼ë鮥ž÷5¬Gpýºä–’žÃ™ ™ŒƒÆMMh?]Û„±ûDrìX·'ž‘ý;Ñ´r=LTX0ÁõíïËj«\fn‰iYŒì× µJE·¶á„ør(á‚¥lßÊË>¡ÁõÑiݸ’§¯Ø½c;ŸàÀ©TúÑ8ÐÏaß­ÅÈ™\£ºqw$—$’» —=ÐUçãƒÎLJ“&±²G²#°CBzô°œÓeæL¾ïÒ…¼„ê·iã*Õ÷ÃzFÐ*´¢ãØ5ªÆ2_ÃÜU;y6v:†—žèAß"í–Ûr ¯6$¯¨µZE¾Þ€ÑdvHç£çZ¾øVÎEã~Ëlè_·š*sã¥]Vƒ±ò‡‚Z]±Ýª›ZUùRc4™É*¨èðŸ]f)g(-§Y£ší¿šSPL°‚o¶êÌV¹|½Fƒ·§Îò™¿ùzƒå½§ûõÍŽÕjµÅ÷>#™ýÕO¼0¤;;Ÿ£OÇŠ|pÔwk1r&Ïj⃶b öspßɢ‚Ùrà´å’¥½zq¶¹šÜ¢r Šéysš7ÄËCg¿Ð]JuãîH.I$w®²¾J…J¥¢\ë/µFƒJ­F˜L.W{/òì£]ìŸtnnjL••PrµÌr,ЯÓþú(Û!véfútŒD¥²].3·ˆØ%›˜?éIZ‡0`Â\„¹jµÊRöf6~øâ-Ÿ9"¬ïFoÜ"ÇY|½ññòà»™u©¾ú¾ÞdäÚÈ…Ì< âFƒŒû—zm• ò¯KxHË·DØs"™KYùtˆlbW¦Z¥¢w‡>\± ÿº–Ù7G|·…RžÙ¢&>8ƒ#9è¦VããåÎéÇûË·’SPl·^œñýváå¡ã‰^íùzús¼þç~œN½Ì{<êA©¹Û°Öþj;—$WPã1•FCêš5}ÿ}L¥¥øEDÐsî\t¾¾²²ˆŸ;—ÂÔT„´kG¯ùóQë~»Såw3£þЕ7¬cÛ¡3tly_•ËqÇ“.»t†ÒrÔóazå/w¥r¡Aþ ïÕžgf,¥Ÿ-šÞrw_³F ìÅã“¢RÁºÆRÇÓö²ŽÈ´Å“Óc(-';_Ï´EëÑi5ŒÀʻÖîÁ†½'0q.:q³þÏrפ3|ð·!¼¿|+ý'Ì ²ICÞx®¿å¸-}Jvz¨ yE%üíÃï(*¹~÷£=”ÊÅŽDì’Í,ßrˆ_ofŽäð @Ÿ"ˆÛq”qCcªå»-”òL©^jâCu©NvkN÷èf¼óß-|øòPÅzQòÝYìå¼#D7oDtóF ª”úWØr35‘i«ýÕf.I$®ÀÚï5mFFF™N«Á¿~ÍÖÃH$‰D"‘üÞÈÍɦ¬ÜHppðpÀ”T¾Šoøß\•[I$‰D"‘Ü!ä@L"‘H$‰ä!b‰D"‘H$w9“H$‰D"¹CȘD"‘H$ÉBÄ~gäë üñÍÿPZ^;ÛL=3c)NŸ¯]73îc®ä9|¾«í|õÓ•9sÑ©²wªÎ¬q7ÙrêÆÖç.">9ÃEÕŒ»Å–bCƒ§,dÀ„¹ŒûàÛ;mŽ…o¶¦ïøÏéó÷Ï\VOµ•׎Ķº¶Ô4_\åûÝš/Ö¸[Ú˜-\2Û9~<«bbXÑ®ë&mûvË1sY‡bc‰ëÖo;t`ßÔ©®Pù»`ʼ5Õ:ßd6Óeô¿øë;Ë­þ»éƒºµÁ]ëúM¬ñì£]­ÜñnÆ;¿\¿Ù6’ùLÿNÌ_½«Öl¹]X³Å‘<»[PŠQms7Ùb oO?Îä‘}ï´)Ê&æ¬ÚÉßú3Ûþý2mÂíïßéH~ÞMy]ÛíÝUúîÆ|¹ÛÛ˜-\òmñôÓtœ:‡ç7mb×ĉ ßµ ­·7G?úˆ¼3gè÷ÕW¸×«Gajª+TÞÓÄ.Ý̽گçóU¿ðêŸzWy¸¢3”M¬ßÏÒ·þì 3â‘ÊM{ïv\mg‡ÈûHÏÞ@Jza!õï¨-5án²Eòû£@o! ðu©Ü»)¯kÛ–»ÉwI.ˆ5ìr}ODïÜt:Tnn˜F’V®äÑï¿Ç'4€Àzõ\¡òžfˆÞ,ݸŸ#g/2gÕNÆî^ãAÀ©ÔËxyèºi³æáSñö¨Ç,¿6û½:‡…“ŸªxùÔE<Ü1‚_/qñJÏ |}:pþr.o¹‘”Œܵ†õŠfÌã—Vl=Lv¾žÇ§s«¦}'S2˜þŸ ä–0¼W{Vütˆ•A=E}YùzÞ]¶…£gÓ¨ãéÎKÃ{пò ÜǓҙ¹x#9…Å ííp(ÙiË–Ó©—™2 ņRŒ&3{ãSøvÆó–'ù«TpDcöœHvx ¦d‹£ä–°zçq²óõv©*ÅݶÜÌ’ ûYõó1ò‹ Õ¯ËËOô´l¨­wgbëHŒ'\`Ú¢õä3nhŒCy¦dgmÛb‹cçÒ˜±x#«Þmùì­/ÖѼQ Ïì¢%”òÅ;R3rˆ]º™Ä´,|ë0ñ©‡éÚ& €q|KZV>eFƒ§,`öØÇiU¹?¨3¸:¯½6ŸÏ'ü‘Ðàëm\è;þ3V¼ý`;¶ölY¾åßn;Lañõ4®íaK¦³¾+õå΢”Júœ±¥&mÌÙ~év£ÍÈÈ9ÙY¢:ì:U|ߥ‹ˆëÞ]d=*„¢ 9Y|ßµ«81ožøþÁŽ{‹Ä￯–Üß#‡NŸ“ç®Oþs±xsáZ±v× a2›í–3›…XýËq!„¿KYùú*Ç¿ßqT¼òIÜ-冽þ…8‘”nyÿÈ+Ÿ‹”Œ˱w–nB‘’ž-bÆ},JËÊ…B¼±`­øô»ÂlÂPZ&â“Óo‘=òí%bÿ©TË{“Ù,†LY(¾ßqT˜ÍB,X½KtõÈÌ-´«ïùY_‰WlåF“HÉÈ}Ç&.fæ “É,þ0i¾Xõ¿cÂlbΪ_ªÈt„›í´g‹BügÝ^ñî²-6eþgÝ^ñÖë¶AÉ{9sQ¼±`­èó÷ÏÄÌ%›DÂùËvË(Å]É{yf‹µ»OˆKYùÂlâç£çD̸E±¡Ôb‹µº®ilmÅhØë_ˆ|þƒ¸ZV.öŧ8”gJvÞ [la2›ÅÀ‰sÅ™ ™B!JË¢÷ËŸŠ‹W*Ê)ÅA!¶:#ƾÿU;må‹3v Q‘_ Vï&³Yì>ž$z½ô©(Ð,Ç3s E÷±Ù•s#Žä§«òzòÜņ='«|vþr®xìó„ʱU²eÝîx1dÊB‘ZY¿ñÉé"=;ßa™JXÓçH_n [ù¢”Jújb‹3mÌ™~Ér²³DFF††=N@k høZ—-Öï0e ââ4ˆÃg0›)/.¦\¯§äòe†ýü3ýë_œ5‹‚¤$W©½'9Ÿ™ÇŒQÑ4ÈŸ™£¡V«(6”Ú-§RÁà˜¶ÄD7#À×»Êñ¢â«x+ìi‹¾•SÙ¡ÁõÑiݸ’§@«q#+_Ov–¨0ûë7’Ò²É×Ö3• žz¤£CúRÒs8s!“qCcи© ò§k›0vŸHæ\Z…ÅWÜ£*Œ|äjûX]ßÁÇÓ¢â«.³ÅGÎ\äééKøôûÿñ@ËûXóÞÞ|¶?‘÷5¼m:íå™-ukCH€/*ôhßoOéÙ×7<·V×·3¶CbÚá®ÕÐ%*µZe7Ï”ì¼S¶XC­RÑ»c;ŸàÀ©TúÑ8°bSw{q¨.ÎÚ™™[DbZ#ûuB­RÑ­m8!¾J¸à´-à|~:S®mx0§Ï_Æh23`Â\’.e“p>“6á!–s¬ÅÖëöÄ3²'šV®åŠ &¸þõ˳ÎÈT™¾\ {9¡¤ÏÕ¶\ÃV9Ó/¹—­ØÖùø óñ¡Ã¤I¬ìуìcÇÐÕ­‹0™hõüó¨u:;t ~TW·™ý©ðß+ÃzV\~iZñe:°k”Käz{ê0”–W»œ§ûõ³Õj5F³€‡Å0wÕNž]†N£á¥'zÐ÷HEYyúüêx¢VUlsêã固êïkú² *’ÿÙØe–c†Òrš5   Ø@=/‹Lß:ž·Èt[¾;BÉÕ2§¾Õ!·¨„œ‚bzÞßœæñòÐÝV}5a˾Ú|¼¢ÔjùzFÓõú´V×·3¶7^î×i5vóLÉÎ;e‹-útŒdöW?ñÂîì8|Ž>¯·K{q¨.ÎÚ™¯7 Óhðö¼ž³þ>^äë NÛRÛ´iÂÏ+!>9?oöŸJ%+OOÛn*°[{ä|Ó’qF¦ÎôåJØË %}®¶å¶êÌ™~ÉÕ¸þÖ9• •JE¹^O½V­P¹¹UüÔ¨DQq]b—gíbÿ¤j\Ÿ¸ÇnùÜÍM©2¹„¨@8B _¦ýõQ¶:CìÒÍôéyc¸o¡^ŠŽÖ,j•Š¢’«ÝJøzããåÁw3ÿz˱³¯ ¿aÆÐPZîÌš¢¢2Ÿmp>3·Ú õ«Kß"éÖ&Œ ûNñÎ7c‚Ç»·åÑ[SÏÇK±¬³qw†ÌÜ"b—lbþ¤'i]¹ÆgÀ„¹ŠõàWdzF±µ£›QʳšR›¶D·hDQÉUÓ²øå×DO}p,jµÊjÛÊgíô­ãA™ÑH±¡Ì2Ë-ªø¡ö[¡eÓ†$§gsàÔyÆéÎ;OPTr•qCcj$·¾¯7¹….²Ò>Îôå×°–/örBI_Ml©ns¶_r55þi©¿x‘ĸ8 W®PVP@ü¼y ¢£ÑxzÔµ+g—/G˜LäÄÇ“{ò$ :ur…í’jÒ6<„¬|=yE%U>oèlj¤tvþšH¹Ñä¼ÝÇ“-²4nnh5nvK³Æøz{òã/ÇønÛQ‡t…‡ÐÐ߇Åë÷Qn4a2›9ræ"iYù4oT1tðtÅ%-’YSêùx‘’žƒÙl½ÑþzîF…Þv;¼(Ùi‡;F°aïILœ‹NãFܬÿ³Ü¡s*õ2î:MµÖ7ÔÄ–kD7oDtóF ª”âî [n$4ÈŸá½ÚóÌŒ¥4ðó¡E“@Ë`JÔ$¶ #[ØÊ³šRÛ¶ôy ‚¸G«ÌÎ8‡fØ5ŠÇ'/D¥‚uŒ¥Ž§»b¾8kgì˜AÄ.ÙÌò-‡ðõfæèA·uFÌÕy Ð&<„Ë9…hÜÔ´kBna±CÏiT²eÐCmÈ+*áo~GQÉõ»&k‚’>¥¾Ü¶òE)'”ôÕÄ–ê¶1gû%WcíÛO›‘‘Q¦Ójð¯o-‚ä·ÅåœB^ù÷J–O{ÖekmjBY¹‘žû”íŸý½Êµøß:o.\GŸ"éÝ¡Å6E"‘H$µLnN6eåF‚ƒƒ‡ ¤òU|Ãÿàjí<^]r×T¿.ŸOøÓ]¦w")F~ø×õbíîx¢Âƒï©AÀËOô¼#¿¬$‰DòÛBÄ~‡8z;÷í"1-‹×欠Q /o=ïøÔóo9“H$‰#Ș¤ÖÚ3š¡=ú½D"‘H$÷*w~‘D"‘H$Éï9“H$‰D"¹CȘÄ!ž™±”§Ï[ÞÊ9Cñœêæ„#2]©Ob㞁ý|U\2Û9~<«bbXÑ®ë&mûvòø:*ê–WÆ®]®P{Ï3eÞšjŸSPÌË}OÌ‹Ÿðôô%œra¢?ûhB+÷=ƒŠí’~œ=†I#ûÞr®Ò1‰2_®ßÇlÆêJnŽ­#Ü ;«üÛƒ39ñ[Òçjj»=Ü-íïv~çüžpÉ@,âé§Çð;‰xúivMœHyq1õ"#qäˆåÕÿ›oÐÕ­KÃÎ]¡öž%véfÎg¯gú—nyʵ5Þ_¾•ú¾Þlûô%þðP[^Ÿ·Æe[ý<Ò©% êÉ;ïEdl%7SÛ9!sð·ÉíüÎù=á’»&v¹¾'¢wHn:eI7÷ë›§®_OÓGE­»{7&¾˜0¢7K7îçÈÙ‹ÌYµ“±ƒ»Û}Ú}i¹‘]Ç“øï[A§Õð§>÷³híŽ'¦sDc›å½6ŸÏ'ü‘Ðàë{" }ÇÆŠ·ŸcûᳬØz˜ì|=NçVM]æ§-¶H`âç?`6 ÆíΘvdåëywÙŽžM£Ž§;/ ïAŸˆ½|Ë!¾Ýv˜ÂâëO©nèïCjF±K7“˜–E€o&>õ0]Û„ÓüwŒà×ÄK\¼’ÇsdDŸ;—ÆŒÅYõÎh‹ü·¾XGóF<;°‹];OYÈŸtfÍÎäÓ¾EcFö{€)ó×Pl(Åh2³7>€og<‡N«(óxR:3o$§°˜¡=¿õ›­‡mÆÖ–ï§S/+Ú©TŸJ,Ù°ŸU?#¿È@Pýº¼üDOb¢íïÀaËN°/örÞÖ€À^ÜkâÃÛ££MåFÑý^ÃÂÉOäïTÎÛóàp¦-ZONa1ã†ÆXêL)'Àv;R’©„’¾ó—syûˤdäà®Õ0¬W4cȮ̓)LÿÏr KÞ«=+~:ÄÊwFYâj­ýÅŽ¤X×¶bk¯=8ÓÄŽdÓ7{ú”â ”ŸJíÈÎ~ç\ÃÙ~ÞVÚóÏVSʳš|çT—=¾bßo¶m*­–Þ  ñð¨rÜ\^Nêºuôœ3ÇU*ïYN§^æüå\ê×õÆh2q(á»E¡VØ(=«“ÙLH€/»ƒ§y€Æ ü8Ÿ™«Ø(Ú„‡p:5³J§}ñJžîZÔóáɾy²oGž™±Ô¥>*‘š‘ÃêwG“’‘Ø÷¾¡cdš4¨Çä¹?Ò&<˜÷_BZV>£gMTX°e=[¬ßs’¸GùìÕ?Ò4ÈŸ“)˜Eů¶7¿XGèæ,œüûâS˜º`-?ÎC]ïŠü-,¾ÊÂÉO‘š‘Ã_f.chv´kÞˆÒ2#g/^!¢IÊŒ&vŸHæ…!ݲsëÁæLü#>^¤eåÓ8ÐgáËõû¸’WÄ”g©âƒ-™!¾¼¹p-Ï|!=¢™·z'eîi/¶Ö|o¤h§½ú´E€Ÿ7ó_{’àú¾ìü5‘7¬eÓG/âåaÿG›5;uZÍ:³—ó¶°÷šø` grÞÿâS2øúíç8v6׿¬¶Ô™RN(µ#%™J(éûbÍÚ·hÄ^Iiy9I—²íÖ—YÞ\¸Ž‘ý;1¼g{¾X³Ûj{¸¹ýr]ÛŠ­½öàL_ „=}`;öòÓV;²…³ß9×p¦ŸWÊAgÛŸRž9ûS]\¶X¿Ã”) ˆ‹#lÐ ¿÷â¦éÉ´;Ðùú-Ÿeó™yÌõMƒü™9zjµŠbC©bCY977®–•³aïIÒ®äá¡Ób¸Z®X®mx0§Ï_Æh23`Â\’.e“p>“6á!®t©Z ïÝVCä} ‰nш½ñ)¤¤çpæB&ã†Æ qSäO×6aì>‘lWÞº=ñŒì߉¦•kP¢Â‚ ®ïKfn‰iYŒì× µJE·¶á„ør(á‚¥lßN- ®NëÆ•<}ņÊ#Øqø,N¥Ò8ÐÆ~Û9¢O|¼*'•µ’ÌsiY_epv¨T0ò‘¯h;Xó] GêÓƒºµ!$À• z´oŽ·§ŽôlÇ69¶f§R9›óJq¯©Öp6çñoHL;ܵºD…¢V«ìÆl·£šÈTB«q#+_OvÖ¡}[“Ò²É×Ö3• žz¤£ÕónnöêÚ™ØÞ޾ÀlÅÁžÕmïÎ~ç\Ù~^)m¶ò¬&ß9ÕÅe3b:t>>t˜4‰•=z}ì®Om&¯ZEøã»JÝ=Ͱʇ¶ mÀÀ®QvËxê´M&êz{ðÓ'/p5îg<=”·jÓ,„ŸWþB|r:~Þì?•JVžž¶áŽoVíjêùxYþ÷÷ñ¢@•¬‚ŠNáÙØe–c†Òrš5²¿jNA1Áþuoù<_o@§Ñàíyý“¿ù7¬Ç»që%µZ±òFŸŽ‘Ìþê'^Ò‡Ïѧc$€Ãv6´b-”d¨çãe™-õ­ãé²=Dmùn GêÓ[$ðÕæƒä• V«È×0š[kbÍN¥:kߢ±Ó9o+î5õÁÎæ¼#múÆ¥:­ÆnlÁv;ª‰L%^ÃÜU;y6v:†—žèAß"ËäéKð«ãii>^VÛÃÍíÏ^];ÛÛÑ8‚­8Øó¡ºíÝÙïœk8ÓÏ+å ³íÏVžÕä;§º¸þÉú**•ŠrýõÑtIf&—÷î¥Ó´i.Ww/óì£]ìŸTIH /nj5ç/ç€Ù,H»’OÓ†Êw"µlÚäôlœ:ÏØ!Ýùqç ŠJ®2nhŒCzÕj•ÍÅ™JÇ”È+*±üŸ[TBTX0¾ÞøxyðÝÌ¿V[^}_o2r oùÜ·ŽeF#ņ2Ëà!·¨¢#·Gt‹F•\%1-‹_~MdñÔg¶ÓÖEf nÚTIæÙ‹WÐß0[j(-¯•ŲÖìt¶>3s‹ˆ]²‰ù“ž¤uh&̽E~uPª³Òr£Ó9o+îŽø`«=¸¹©-Ÿ %WËìú DMÛ´-lµ£ÛE _¦ýµbû³m‡Î»t3}:F¢°Bƒzu*þf!P«T•\µZç7‹PªkGb[Ýv«d‹#XÓ§ÄíhcÎ~ç\Ù~ÞVÚóÏVÛyV“ïœêRãŸÎú‹IŒ‹Ãpå eÄÏ›‡Ñ`¨r 2åÇ ìØïà;7Ër¯ã®Õн]3¾Ú|£ÉLÜÿŽâí©£m3åË-îZ ýØr £Â0šÌ$]ʦeÓ†émÒ )9VïêT:¦ÄÊÇ(+7ræÂŽ'^¢kÛ0ÂChèïÃâõû(7š0™Í9sÑîš €ÇºF±|óA.dækð2r ò¯KxHË·DØs"™KYùtˆlbW¦Z¥¢w‡>\± ÿº–55±*~%¦¤ç`6_ï •d6oˆ—‡Žƒ§+.ÿm9àžšbÍNgëÓPVŽVãFX嚦¿&Ué¤A©Îj’ó¶âÚC£@?N$¥W–K¤¼rM“³¹TÓ6m [íèv±ûx²¥5nnh5nŠƒ0€fðõöäÇ_Žðݶ£éRªkGb[Ýv[S¬éSâv´1g¿s®áL?o+íùg«í<»ñ»™ψ©4R׬áèûïc*-Å/"‚žsç¢ó½¾v yõj¢^x¡¦ª$vxmd_¦ÿg=½_þ7ýxwìãhÜìµÛ„‡p9§›švÍBÈ-,ƽr‘æ“Óc(-';_Ï´EëÑi5ŒÀÊ;Gš5 ``×(Ÿ¼• Ö}0–:žîv)\Ÿ!¯Ù,˜ðäÖuümï/ßJÿ 7|D6iÈÏõ·+oÐCmÈ+*áo~GQÉõ;mbÇ "vÉf–o9D€¯73GrhF  ÏÄí8zËLƒ³v<Ü1‚ {O2`â\t7âfý:­M™jµŠYcþÀ»Ë¶à®ÕЬQZ›CºìÅÖ;©ÏÐ †÷jÏ33–ÒÀχM]²iºR”rÞÖâÚè?tåëØvè [ÞWåÒ’³¹ä¬J9¡ÔŽœEIßñ¤KÄ.Ý„¡´œõ|˜^9k¡„Z¥bÖ ƒ˜þŸ Ì[½‹'z·G§qCeo‡íºv$¶Õm·5Å–>[Ü®6æìw8×ÏÛÊÁÐ _Eÿ”Ú˜RžÝ®øÝŒµìÔfdd”é´üë»þZ¨D"‘H$µAY¹‘žû”íŸý½Ê(‰äv“›“MY¹‘àààá€(©|ßð¿¸*·8’H$É=ɤtr +.5­ÝOTx°„Iîj\¿X_"‘H$’;DbZ¯ÍY @£@_ÞzÞþ%M‰äN"b‰D"¹gÚ3š¡=åó*%¿ä¥I‰D"‘H$’;„ˆI$‰D"‘Ü!ä@ìwÆ7[ÓwüçôùûgÄ'gÔHÖð©‹j,Câ1ã>æJ^Ñ6C"‘H$5Ä%kÄvŽOÖ‘#”P7,ŒèñãiüðÃäž<ÉéÓ)HJÂ30ö¯¾Ê}¸Bí=Ï”yk˜=ÎuÛB•MÌYµ“og€ì|=Ó¿ÜPí§Ó[£@o!ª5“H$‰DrûpÉŒXÃ.×÷Dô ÁM§C忆0›)NO§Iß¾¨ÔjBbbPk4gdà k‹ #z³tã~Žœ½ÈœU;;¸{•'Û"5#‡Ø¥›ILË"À·Ÿz˜®mÂ÷Á·¤eåSf41xÊBf}œV•ûrYãtêe¦Ì_C±¡£ÉÌÞø¾ñ¼å)·.0mÑzr ‹74†}*6zÏÊ×óî²-=›FOw^ÞƒþvžØ>èµù|>á„VnSû‚õÿ+Þ~Žõ9˜…J IDAT|uozŒ6•0÷{u '?Uñäë©‹x¸c¿&^ââ•<žø ¥>'¥3sñFr ‹ÚCÞ&‘H$÷ .{|ž7Þ mÛ6TZ-½,@ãá@HL 6oÆ·ysÒwí½^=üZ´p•Ú{’Ó©—99—úu½1šLJ¸ÀÀnQ¨ílÓñæëèÝœ…“Ÿb_| S¬åÇÙc¨ëíÁ¼×Fp%¯ˆáSñãì1ÙÑ*4ˆgQ¼4Ÿ’Á×o?DZ³i¼6g5C{´C§Õ0yî´ æý‡–•ÏèÙ_lÙ›ÏmÂC8šYe vñJžîZÔ»¾]ÅÖƒ Ì™øG|¼<,û~øy3ÿµ' ®ïËÎ_ycÁZ6}ô"^:K¹ÅoŒ°UhCv²[&_o@§Ñàíy}¶ÆßÇ‹|¬-SâÆK¦:­£ÙLV€gc—YŽJËiÖHùrt›f!ü¼òâ“Ó ðófÿ©T²òô´­¼Œw†þuo)»å@_m>H^Q jµŠ|½£Él9^Çëúfãu<Ý«ÔË£çZ¶DY9k”eÖΞLk¶Ô47nÅ¢V«1šÍ¨çãe™õ­ã‰›ZÞð,‘H$÷®²¾J…J¥¢\¯§ )‰âŒ š *÷ßOݰ02÷í“1xöÑ.öOªÄ·ŽeF#ņ2Ë ·¨?Ö–ÙC!>?À×/¾›ù×jéiÙ´!ÉéÙ8už±CºóãΕ\eÜИ[칑ÌÜ"b—lbþ¤'i]¹æmÀ„¹Ul¾6ЂŠz¹ÿ†Ë„?|ñ[‘iÍ{qpsScªœ-J®–Ù©ð«ã‰þ†QCi¹E†D"‘H~ÛÔøgµþâEãâ0\¹BYAñóæa4ˆŽÆ+(•JEÊš5 y äŸ=Kûîs…í’ò¯KxHË·DØs"™KYùtˆlRcÙõ|¼HIÏÁlvl0@C¯ßG¹Ñ„ÉlæÈ™‹–5T¶p×jhèÇ– <†Ñd&éR6-›6T,g(+G«q#¬rmÙÎ_“È+*©rÎÊÿ£¬ÜHÂùLN&gð`”òGdZÃ^úq")½Rf"å¬õjÞ(/OW\ÞÜr á–s.ç2|ê"vW¾ü+‘H$’»‹ψ©4R׬áèûïc*-Å/"‚žsç¢ó­XýпþůŸ~ÊþéÓq÷õ%jôh‚úöî;¬©ëø7! {C¢Fq ˆ"Vpá@ë¤u`‹­ÖjÝ­¶þlmÕ­b­ÕV­ukÕZë¨uï½ʰ ÌŠ„„M $9¿?Ð(’¢ø~ž‡çsï9ç=÷ž{ïáÎÎN*‹ŠˆMG±íØ ¸Ø[cÞ¸P£œ i× ‡.Ç¢ïg+!à™a×ü1ª§&«²èãAøqÛ ô™¶м¾¾ÕGk]­{"Cœž­½=!É/‚9_s7º;!¬»?FÌÝŒ×lÑ´¾+Üœl+ÌÓÐÝ ƒf®ƒRÉðù»!¨çªùF}]Ê¬Š¦õ0öÍŽøjÍœ¼v> tz–Ëå`þø7±à÷c0çóà]Ï|žY…yär%Ò²rQ\ªý !„‡ºÇðø"‘H&àóàäL¯˜ /¿Ð髱èãA_ÕA!„‹Dœ Y™a¤Šÿ=ó»@ ÝñK!„b"4#„B1ã?5IÈ æÀ¢‰¦BQ‹ÎˆB!„˜ Ä!„BL„b¤F„ÍZ˜$‘©Ãxa˜»×þM­µúr ¥xûë (-“×Zº*’Ê0pÆZô¶“í0u8um›Uû߲ݸÿ Vêš¿ù(Öí»T+uiò2nž¸‰^ŸþŠžŸ,×Ú—_†öe vþÓO±'8Û[·ÆÁ‘vê”jZæÕ«8ðæ›Ø€ÃaaÄÆ£ÊWÂŒUûª5L’£çoEç‰?£ï´•˜³áP EöÔo¯à‡­Çk¼žºæƒ~Aº;ÕZ}[Ž\Ch§VÞɦP*4n1àÃï·ÕÚèyÖ–üóÃx|1¼—Iê¯-µ½­¼(Û¦8¯S~Þ‰à–â½9›p7%C5­¶û ¦X`DŸöX½÷BÆð¢yÙ¶¿2¹+öœÇ–oÞÇÉ_¦ ÕsŸÀ{ÞËÐ>£ Äš½÷úîÚ…°óçÑì½÷pá³ÏPVTEI Îÿïh9v,ÂoÞ„÷!8ÿé§` ío•El>ЏÔL@vn!æüvyZ¾U(+“cÚò=èÛ¡%Nþ2[g€VÞžóÓy£½^sÔí±†*“+pðb úthQ+õò¬·€³½5N.›Œ7;ûaæª}&ûD—¶Xš7@zv’ÓÅ&‰h—W(ƒ§‹æ—r¿LŒòÔ¤[ÐÓo"Z{zÂL ÇÌ ¹ `r9 |Àv{ÉHîÞ…³ŸŸ1ª®“¦…÷ÀæÃWqëÞ¬ØsvÑúö‡Yy((.ÁÛ!mÁåp`!àchwÕô‘›"!- .ö6øìÝtl¥ÿ÷>ÿMÉÀŒÕûP$-…\¡Äå˜dÀ޹£UoÝ¿÷f¯?q~& FxÏ@Vn!ü~ ‘÷Ò`ciŽÉa]Ñ'Hû ¡ª|y…RŒ˜»ó'¼‰ÖÞžÈ)(ƈ¹[ðãGáÛÈ¡ÓW#¨¥IéÙ((.ŨAíÔJUîÀkñ~ß@ì; I~ü›z!b|¨Æ8S3$øî·ÃH‰aÎçaH÷6ÿVg­Óþ¡­}Um+ÚÚPU,Úè³mjjƒ>}0éa6 ·ˆ—ÈØÏžbâ|6rÞö÷¹;Œ1Í}P›[ñØWkö³žŸ,gó6aq©ÅòĆ—Ù7ët;FºËÆ.ØÆŠKd¬ëGKÙÅè$¶ùðU¶ì¯ÓŒ1ÍË3bÓ¶öŸ‹,.5ƒ½ùÅjv'ᡪ\}÷=šè³ý}¹òvèRl…´Ô ðù*­e™¹Ž]»›Ê+_Ï¡ÓW³¨ÇmÔ· Œ1–)Ég]&þl”öi‹EßccŒ‰³³˜H$b†è €öZx €-¾ÑnÖ˜1}wíB£ÐPÜ\¸L©„CÓ¦àš›#q÷n0…ñÛ¶A!“A!Õ|™íU—š™ƒ¹c ¡»æ —ËA‘´Tc k¾†ü")>Y²ý>[‰mÇn2%HHËÂðÞíÁåpÐɯ1<]ìq#î¿mÇ àÖ0çóä+—ËÁ£œB$§‹ÿ_&& ÏŒ ¡»:¶j„‹Ñš?V­-_¯üaÂÛ!Î+Âè*äïèpu°A«Æž¸“RazxÏØZY¼\´ÖÇç™!+·Ùy…°ðáÛèé} š¦UE—uÔ«}y„ÎðÍð(§Pk¹PPTkKóJé00¸üÌtpo¸Ø[«¦…vjO{p8@Wÿ&°¶ =;Oc=\=Ú5Ãé›÷×î¦ÀËÕ^®z—©‰¾})1-¹…R éÖðîíÔÎWÝ>¡OûtmÃó±Jݶ©KªÛ¥²2ðÌÌP"+á˱H{” Ò’2šû`UnÅ?À{s6aÙÎ3xݧö-¯?èƒæ Ü Šå [Ks•hã‰z®°4çÃÑÖ ÜáálI~1íË3ña6¦,Ù…éïõBëÇ·’²ïÑDŸþéרÿ¦f@®P¢ï´•H|˜¸ÔL´j쩵Ì>A-püú¿€è¤t˜q¹ð{ÜF}Û`ìöiŠEßý‹>ŒöBW­-¶¶øâ ìîÚÙ·oÃ5 ]~þ7æÏÇÍ à—6mÀ·±1VµuÒnm-„å;–þ}uÊ'ôpƼq¡` ˆ¼ÿÓ~ÙƒB7X[˜CÀãÁÚR š×ÉÖ ¹Zî;3Ô³—S|äJ%²òÊwÜDü®š&--ƒw=Íß5Õ%ßà®m°ãä-ÌÙ[u:ü «§KóJmw{î²¶ú>Œ•{Îトß!àñ0yhWôz½¹ÖiUÉ-”j]G–æO?´Îår!×ñ>kK¤¥eÚg|ƱkqØzô:r ŠÁår[(…\¡½¾žíšã‡­Ç1aPœ¾y=Û=m·¾eVEß¾”SX Kp9å}ÄÖÊfÜÊÿ“V·OèÓ>]Ûð|,†R·mÚÛPÝ>h)àC®PÀÎÚÇ—N”ì: K ¾Æ|šH Š!Î+B·¶MÐÄËV홪Kq‰Lí?.Uy²¯1ãrÿpUËLÛò¼› ßF8ví_Õe4Cö=šèÓ?[y{âìîsˆIJ‡‹ƒ5®ÞMAVN!üß& ©ÌÞA-0î‡?ðÅð7pâzzù¨ÊÕ· ÆnŸ¦XôÝ¿èÃøoÖçpÀápPVXÞ÷º?@)“aO·npôñÑTyìƒ~AÚgRƒÃšÕG«ÆHJ£KëÆÉå(’ÊTzIAùÁÈPŒ1çw±·†­•þš÷aµêÑ–O©dø~ËQ„÷ Àº."¸µ7œŸùïúɨ@yÛÛZ[TjGuêsu°ÁìûNÞˆGÄæ£èÙ®98ÍÓªbocQcëHèáŒ]§oë<¦¤›Ž`õÃÐòñ‡ÒûN[©ÓznÓ´ ŠK–…sw°qÖËär9joâ63ãªÒ+?Pú÷%G›ò®’1p9—¨­·:}B—ö©ÛVtmƒ†®£1Ou¶MCÖ{U<]íaÆå"5C‚Æž.P*Ò墡›þO ÷z½9:µj„CWîâû-G¡d ouñC¿-áhkep,©™îÓF—å9¬W; ïÝÃfoÄÉñèùzsƒö=†Ä¢nûói膤ôl\»›Š‰ƒºàŸóÑ((.Á¤ÁÁZ˺;ÁÃÙWcSpúÖ},ý4Ì 6hbÈþ¥ªXôÝ¿èÃàK“… a×.H=‚,/1«VA.•Â¥MùYœøx”æä@š•…ksç±E Ø …†VKžS(-Åúý—!ÎG™\qÿ!&I„¦^®pw²CcOl;vŒ—¢“ð0+Íë«ò—–ÉñÃÖãÕ~|ÜÑÖ Ééb(•ºí¬{ºÀÍÉ^A™\…R‰[ñ–•kP¾‡®ÀÆÊÓ†…`H7ÌÛt¤BþÝgnCV&G\j&b“Dèà«ùAmõ]ŒJBNAùàŽgf>ÏLµÑ4­*º¬#}ù5öDVn¡*&m¤²2ðyfhôøÝówuÎËåpÐ# ~Ú~ îNvðzÍAç2ë¿æˆd‘¸ÒÂõ\˜þ8_ÊäåO]ëÛ—¼½\`om‰ÎEþ:©SÛ4Õ§KûÔm+ú¶AÕÝ6 YïU1çóÐ¥µ7¶½¹B‰]g"am)P]¢Ò—•…C»ûã9£0óýÞø7% µ¼ªC×Xî܈¾Bƒât[žf\.l­ÌñÕÈÞøqÛ ˆóŠ Ú÷‹ºíÏœÏC=W»‡¾ W(‘ø0> Ýt*³OPK,ß}¶VæÎ$éÓ†šhŸ¦XjrÛ|žÁgÄ8<RöíCä?BQZ ‡fÍÐmåJìË-͸x1kÖ€ÉåðèÒ]/68hRŸg†Ä‡Ùø âwä—ÀÍÑ“£M“z€ˆñ¡ˆØtÛŽÝ€‹½5æ ­p¶¥¤´ Ÿ½Ÿ†nÕ:ø‡´k†C—cÑ÷³•ð̰kþÕ“YUYôñ ü¸íúL[h^ß _ꣵ®ªòÅ&‹°óT$¶Îþ0j@Æ,øº…wBÊŸêjèî„A3×A©døüÝÔsÕþ賦8£"bóHKËðš£-æ<þJÛ´a³7BZZ†ìÜBÌ^>“£oP ­ëH_–æ|ônïƒ×ãñvH[­ó ÝÖÝ#ænÆk¶hZßnNº¿j£çëͰët$& ®V™Þõ\п£/Þúr-8œòo„ÚXšcì›ñÕš8y#í|T¸¬¦O_âr8˜?!s6ª½0´‡?<3pt8TUŸ.í«j[Ñw{ЦºÛ¦¡ë½*Ó‡÷œ ÑcÊ/ðruÀ‚‰ogf¼w‰·iRmšÔS Ð ‰ånJÌ<£Ü³TåÙɯ1º´ñÆ÷[Žá§)ƒõÞ÷KUÛ_«ÆžÈçƒgÆEkoOHò‹`ÎçéTfï@üºë,Æ ¬øD¤>m¨©öiŠ¥¦¶Íç©ÛóðE"‘LÀçÁÉÙø×BÉ‹éÚÝTÌXýþùa¼ê¦àº"túj,úxZ<>eý*Êçcê/»±möjï‡z•ÉÊäèöñ2œZþI…{ È«çëµÐóõæèÐÔÔ¡Ô 2¹½§þŠß¿‰ú¯9š:œZ%gCV&‡‡‡G)€âÇ?EÏü.Pbü{ÄÈKéÖ½ ¨sƒ0RÎÝÙ¿N{ÜîS§D'¦£ž«œì¬°ÿb |{Ð Œ`ÊÐnF9 HÊí»¦^®¯Ü ¬ºh Fu1u¤†éòj€WEBZ¦¯Ø ¨çjoFvi„Ô 43žÁ3×A¡Tbᤦå…G—& !„BŒ¨:—&éfB!„¡!„Bˆ‰Ð@ŒB!ÄDŒ:“ÄÆb»ŸbV¯V¥•dgãÔØ±Ø€CƒAcÌ*ë´«öiœ^P\ŠžŸ,G†8¿–""„Bˆ1m Æ”JÜZ¸öMšTH¿>o,\\0ôòe42¦NShñÞ«,bóQÄ¥f²s 1ç·C•Þ ÿœB`ˆpw6îwè!„R;Œ6Kܽ.þþ°ñòR¥)JJððÌ´3fææh>|8d……ÈŠÔí“"¯ªiá=púÖ=ܺ÷+öœÇÄ]*¼M(ÿ¶âÎS‘x÷×M%!„B e”Xin.â¶lïøñÒ >„R¡€—n-\iVl4@~JŠ1ª­³þMÉ@j†ÎvÖ+Ê¿©|îMœ§n݃“ZøÍ6B!„˜ŽQb·—,ÏÈ‘àÛØTH—K¥àòxK¥Húçü÷xö!Ùº.53sÇ@Cw'Ì .—ƒ"ii…yþB!„¼Ì ˆ5 GÓðpÕßç¦L“¯/ZMœ¨×½;þýí7΋„;À·¶†‹¿¿¡Õ¾²åàRL¾ÞËÔ¡B!Ä@5~Jåõ¯¿Fqf&vâþ_!xéRpyô­q}í<‰Þ-`gmaêP!„b £ˆº._^áoKWW„lØ`ìj^I%²2üs!k¿fêP!„bt“ÑKäQN!Æì ¡‡³©C!„BˆÐ5—H7G4ps4u„B1:#F!„b"4#„B1ˆ™XQa>JK*ЛB!u ÄLH©TbÕ³pxÏ)ärü½m –Îý;qÑ7u.7;;Í›7‡TZy€çïï'N·±TKÿþýqæÌ½Êܰaêׯ֭[!„RóŒ:“ÄÆb»ŸbV¯V¥¥:„£ááØÞº5®}÷1««ÓR“âÆÍ|Ñwðxx uλpáBŒ5 –––•¦Íœ9>>>FŒTUÅ2}út|óÍ7z•ùÓO?aùò刊Š24ÃçÎðaÃТE $''cìØ±Õ.£º±´lÙ‘‘‘Õ*7!!YYYðôô4(>B!¤¶e v{ÉøŒ >õÒYƒÆÍáë¤vš¯ê5h ¨/lŠVm;ÀÞQ··éçääÀÎÎÎ(1ž9s~~~øì³Ï‚ÔÔTlذF)_äääè<ÿèѣѼysLŸ>5!„b<ÄÄ11DGÃ;,ÌñÙÙÙ¡¨¨È(e=zôð÷÷GëÖ­akkk”ruQPPP­åÆqëÖ-üüóÏÈÍÍ­ÁÈ!„ã1x &‰EN|<¶ûùá__¤:…¨åËqñóÏ©¦-ZàþýûF)ëwÞARRÚ¶m‹ñãÇÃ××?ÿü3²²²´æåñxËåÆ ªUw||<|}}«•§M›6°··GJJJµòB!¦bð@¬ix8Þ‹Uýx…„ õ”)è¼x1€)P”–‚)•`Jeùï …Á¿ÌJK¤ˆ‰¼‚ØÛWùyÄD^ABœá¯\èØ±#ÒÓÓu,éÂÖÖ}ô¢¢¢°fÍܸq'NÔšÏÛÛ—/_ìÛ·2™¬Zõ^¸p}úô©v¼Ï !„]¿ÐõþŽØ€û;v q×.ì@®]5]í ­¨0GþÞªz2ò‘( GþÞŠ 'ö\¶µµ5† †;v}ªËV IDATTH÷õõ…P(ÄÝ»w1bÄ…BlÛ¶­ZewéÒüñ¶oß®uÞo¿ý+W®D`` .]ºgç§÷¸i‹åúõë°²²B```µâÊ_ «v>B!ÄÔ=çωD2Ÿ'g—Zˆ.55ýû÷Ç;wÀãíUqµfذaxçw0dÈjç ĤI“0zô舌BÑN"Ά¬L0RÅŠžù]  „bu”H$‚‹‹ ø|¾©C©¶ ~ýúzå=pàf̘.—Ko×'„b4#„B1‘ê Äè£ß„B!&B1B!„¡!„Bˆ‰Ð@Œ˜Ìˆ¹›qíßÔjçË-”âí¯7 ´¬âûÂþ·l7nÅ?0Vxµ"xÒ<Ê©ÞËn]æŸ'n¢×§¿¢ç'Ë“$2j,Õ¥oŸxYÔÕö…ÍZ¯µïÔÕ¶ëâen».ë–ƨ1Il,¶ûù!fõjå/s½úÍ7ØÓµ+þlÓGß}’ØXcVIôPP\ŠžŸ,G†8¿BúŒUûj5ŽúAèîT)ý·ƒWðÃÖãUæÛräB;µ‚9¿â«9FôiÕ{/5Fm±¼ìÊä ¬Øs[¾y'™‚Vkö;Ú–gU}±Ôc·¯¶Û`H}µ¹nkÛ‹Ô¯õUS}IÛq¥ªãÑ«Äh1¦TâÖÂ…°oÒ¤BšÀÎ=û ƒNŸ†«¿?Î~üñ+ÿf}Sûç|[6„»sù·#6E\j& ;·s~;„¼BiÇñF{¼æX½ïW–É8x1}:´¨4- y¤gç!9]l¬ë¼¼B)À<]ìM ýúÄˤ®·Ojû«Õv]+Ï^EF{ÛgâîÝpñ÷G~r²*Ëç£íô骿[Œ¸-[ ÍΆ•››±ª&Õ T2ì<‰yãCUiÓÂ{`ó᫸uïVì9‰»ÀÞÆRkYY¹…Xðû1DÞKƒ¥9&‡uEŸ È+”bÄÜ-˜?áM´ööDNA1FÌÝ‚?ßFøóÄMl?qÙ¹…Xòi[4ü›’«÷¡HZ ¹B‰Ë1å}iÇÜѰ”¿ínJ¬,pwª¼Ñr8@Ûf^¸„FžÎ•¦«“š!Áw¿F²H s>Cº·Áø·:keÓ¡«Øsö6r ¤pw¶Ã”¡ÝÜÆ@ù©üvÍp'á!<ÊÁ¨þÞ3•˜ŽyCœ_„Á]ÛTˆES™0pÆZ¼ß7ûÎGC’_ÿ¦^ˆª±LM&-Ú´¬\Èä œ±ðÃÄ·ÐB莰YëñÝØª3d½ÿ·k¿|Bw'í€mÇn`ÇÉ›È/*Ðà ' „$¿Hãò¬ªO@ŠHŒˆÍG‘–{|ön:¶j¤uYWEÛº­ª_kZ[7ÆÖ£×!Î+B«Æ+”ˆMaé§aû¼¶6TÕ' iCU}Þe7ãþÃìõ!Î/¤ÁÁª6hj»>±úï{´­[u}×ÍɶÊíAZ"{aú5„N_ –B$¥g£ ¸£!´S+ú÷%MëV]Ž+êŽG¤_$1qvÓUINÛÊdììäÉ,zÕ*µó=<{–íéÞ)årË&Æuüzñ{…´ÿ¦²/WîeþÝȾ^»Ÿí¿ÍJ¥Ö²FÏßÊ~Ú~’•É,Y$f½>]Îdæ0Æ»“ÌÂf­gÅ%26}Åßlý¾K•òÿn»z7¥Rú†—Ù‚ß©­sçéH6ué®*cÚpà2ûfÝ­±?ñÕšýlÙ_§™Rɘ´TÆb’ÒuŠeÿÅhö0+—)•Œ¼Ï‚'-aEÒRÆcCf®cßo>Êc,9=›OZÂJeeL¡P²7¿XÍöœ¹Í”JÆVì9ÇÇ.b™’|­e2ÆØ[_®a~ÜÎò‹¤Œ1Æ<ÊÑZ¦6™’|Öeâϕ҇Ì\Ç¢Ÿ.‹7¦þÊ’EbícŒ±cØ kYÊãyc’ÒYzv®Öåù„º>1ü»MlÍÞ L¡T²‹Q‰¬ûäe,¯Pª5mªŠES¿fLýz8t9–]°—ÈX×–²‹ÑIlóá«lÙ_§µ¶OS´õ }Ú ­Ïë³Ì†Ì\Ç>ÿõoV"+cWb’Õ®um×7}÷=šòi껚¶MËESÛk¢_ø|›ûÛaÆcr XÏO~QµAß¾¤ËºUG—㊺ãQ]!ÎÎb"‘ˆ €nÚh @à5¶øF¹4y{ÉøŒ ¾M•óÈòóqcþ|´›933cTKôð牛Ö«]…´ÔÌÌ; Ý0o\(¸\Ф¥ËIN#þ¿LL žBw'tlÕ£“A¾Btòk„ ?n‡8¯£t0JüE%°¶4¯rº­¥9 ŠJt.Ï3CVn!²ó a!à÷‘n÷H…vjO{p8@Wÿ&°¶ =;O5½W{€Ðþåâ~Zò‹J0°kkp8Àð7^¯V™Þ3¶V/W­eÖu퀗b0¼O{4||?Œo#x8ëÙ3SR€„´, ïÝ\üÃÓÅ7âþÓ‹>´õë'ž_PÏÕ–æ|8ÚZ¡›#<œí É/Ö©ÞªÚ KŸ¨nôíóÚ n s>A¾Bp¹Öƒ>±è»ïÑ–ÏØ}W“šì×½Ëó¹:Ø UcO\ŽI __zBŸu«ËqEÝñèUdð¥IqL $ÑÑœ=»Êy%%8ûñÇhs¯IU±èC—~ T^åu—¯3.çñ·Òú«JUmÐ¥OT· úöymž½ì$àótZúÄ¢ï¾G[>c÷]Mj²_ÛX=ÝÿÙXš«ÊÔ§/=¡ÏºÕv\©êxô*2x &‰EN|<¶ûù©ÒÒNB^B:/^ ¥\Žóÿûœ|}ÑjâDC«#Ø~ü&ÞîÑ<3õêúé\–‹½5l­,ð×¼ÕNW*¾ßrá=°îŸ‹ní g{kÊæ`Œ©&ôpƮӷ«Ì›š)Ñùþ0 ü¿ÆÙöœ¼ˆÍGѳ]s<ר%SR€ˆMG°ú‹ah)tô¶²Ê˜Ÿp°±Dá3ÿJKË x¼CÓµÌ燳šÊ4„™WUcå\]8Û[C$©úé'MëV{ ÈärIeªƒ–¤ :ÜèºX´õëgóÖ4]ú„>mÐÖç5©îúÓFŸXôÝ÷h˧©ïjÛ^¤~ýìYXIA1ÚZ[èÝ—Œ¡ªãжãÑ«Äà%Ð4<ïÅÆª~¼BBÐzÊt^¼L©Äå3À·±ÿÔ©P”–BQZZÞ“I­z”S€K1IÜM÷›¹5iìé7'[lϬÂA@],RYø<34ò(ð¿“Xe<ÏjRÏV\ÿ·üòñkq5Z¦!ê¹: :1ýq, (“ëö¤ó€Ž¾Øvô:þËÌP~“·Hüôò‡¦u«Ž»“{º`Û±ë` ¸„‡Y¹h®ßG៥.mýº6éÒ'ôiƒ¶>¯Iuן6úÄ¢ï¾G[>M}WÛöð"õëÝgnCV&G\j&b“DèàÛHï¾TSŒ}ˆMaç©Hlý`Ô€ ŒYðþ:u ï„`Øì––!;·³×„€ÏäÁÁèûøé¥vÍpèr,ú~¶žvÍ£zzÇÒœÞí}pâz<Þi[!ž»)0ðªuÏKTâCDl>ii^s´ÅœÇÿ?¡.¡»ºûcÄÜÍxÍÁMë»ÂÍIû£é\.óÇ¿‰¿ƒ9Ÿïz.àóÊï—¬‰2 1öÍŽøjÍœ¼v> tzŠB;·BNA1>þé/?}ò쉪֭¦>1>›ŽbÛ±p±·Æ¼q¡F9sPU,UõkChëóêèÒ'ôiƒ¶>¯‰¦mSŸ¶ë‹¾ûMËESßÕ¶=¼Hýº¡»Í\¥’áówCPϵü>7}ûRM¨‰ãÑËLÝÿ|‘H$ðyprvQ3™¼lJdexë˵XûÅ0=t¿l÷¢Êçcê/»±möî‡úzíô|½9z45at„b¡ÓWcÑǃÐâñåÇQ];UE"Ά¬L0RÅŠžù]  ¤Fψ‘ãœBŒعÎtzwg;ü:íJW¸§ í¦ÓY$B!¦Q׎GÆ@±W@7G4ps4uF墿Æ„BÈ‹­. E1B!¤8°ˆÞLð2¢çF !„BL„b„B!&B1¢œ8q¢Úù²³³Ñ¼ysH¥Rí3?Ö¿œ9s¦ÚuB!/£Ä$±±Øî燘իUiç?ý{‚ƒ±½uk8i§N³JRKfΜ ŸJ阨ዠ.ĨQ£`iùôý8EyØùÛXúíXlZö2Ò’+ä™>}:¾ùæãO!„¼ Œ6cJ%n-\û&M*¤7{ï=ôݵ açÏ£Ù{ïáÂgŸ¡¬¨ÈXÕ’Z//¯jå‘ÉdØ´i†^!ýľͰ¶±ÇäoWÁïõ®Ø÷Çr(•OßTݽ{w$''ãîÝ»F‰ByQm –¸{7\üýaóÜÁÚ-(VnnØÛÃÚÓf8f†¿ù›TÏÇ ;;;Ô¯_üñ@,£~ýú¸téàÑ£G¨W¯®]»Xºt)„B!A…K“7nÜ€P(ÄO?ý„mÛ¶A(B(¢¸øég3®]»[[[4hÐ@•&/“!1î6» ÇGÛŽ½PZRŒôÔÕ<]»vÅ¡g¾Æ@!„ÔEFˆ•ææ"nËøŽ¯vú•¯¾Â®pyÖ,ôX³< ú¬Am2d¼½½!‹qüøqL™2 pvvƆ 0jÔ(a„ ˜0aS§NEJJ Z¶lY¡¼×_)))øì³Ï0|øp¤¤¤ %%VVVªy¢¢¢*]ÎÌËÉ‚R©„½£+NüEyppvƒ$[Ta¾–-["22²R;ÀápðçŸkÑB!&c”Øí%Kà3r$ø66j§̘¾»v¡Qh(n.\öø+ö¤vܽ{‘‘‘øþûïÁçóáãヾ}ûªÎ8õîÝýúõCpp0222ðÕW_¥ÞœœØÙÙUH+“É`Æ5C™¬±·. Gœ >ße²Ò ó988 ''§R™Í›7¯T.!„ò22x &މ$:ÞaaUÎ#°µ…—¾ø…iiȾ}ÛÐjI5¤§§Úµkøøøàܹs.#N˜0‘‘‘øðÃaf¤KÇvvv(zî~@¾@…R +kLþf%4n²²Rðææ+((P;ØjРâââп£ÄH!„˜’ÁoÖ—ÄÆ"'>ÛýüTii§N!/!/®83‡‡ƒ²ÂBC«%ÕàááGGGÄÅÅ©®P(0nÜ8|òÉ'˜={6Þ|óM¸»ëöÑX‡öüGkÑ¢V¬XQ!ÍÞÑ\.’¬ ¸¸ÕS*‘+΄“‹G…ùâããáëë«S „BÈËÊà3bMÃÃñ^l¬êÇ+$­§LAçÅ‹Qøàví‚ôÑ#Èòò³jäR)\Ú´1FìDG¾¾¾¨_¿>æÏŸ™L¹\Ž3gÎ 11ðý÷ßÃÁÁË–-Ãĉ1zôhËvuuÅÝ»w¡P(*MëØ±#ÒÓÓ‘••¥JãñðöñÇõó‡ T(yõ$æ–ðlPñiÛ . OŸ>•Ê”J¥˜8q"½gŒBHP£/tåðxHÙ·BC±§kW¤:…n+WB`o_“Õ5öîÝ‹«W¯ÂÕÕÎÎΘ3g€ò'ýõW¬_¿0kÖ,dggcùòåÊqB¡wïÞň#  ±mÛ6U¹C‡¸¹¹ÁËË«ÂåNkkk 6 ;vì¨K¯·F¢ O‚_¾›€¨k§ñÖð)à>s9ôúõë°²²R=0ð¬ââb¬Y³÷ïß7΂!„BLˆ£&/‰d>NÎ.µ©[RSSÑ¿ܹs<žnW‡ †wÞyC† ©4íøñã:t(RRRàèèhìp !„ƒIÄÙ•Éááá@  øñOÑ3¿K”|!š4lØ'Nœ¨ò>2u-Z„úõë«vöìY|òÉ'4#„R'Ð1B!„#ªÎ1úè7!„Bˆ‰Ð@ŒB!ÄDh F!„b"43‘1cÆÀÓÓÓ¦M3u(„B1£Ä$±±Øî燘ի«5íU´aÃDFFbéÒ¥ÈÏÏ7u8„B1£ ĘR‰[ ¾I“jM{•¹¹¹A    ÀÔ¡B!ÄŒ6Kܽ.þþ°ñòªÖ´W‡ÃR©4u„B1£ ÄJss·e |ǯÖ4xyyáâÅ‹¦ƒB!&`”Øí%Kà3r$ø66ÕšF€Å‹ãý÷߇©C!„BH-3x &މ$:ÞaaÕšFÊÍ™3+V¬@\\œ©C!„BH-3ø[“’ØXäÄÇc»ŸŸ*-íÔ)ä%$àµöí«œÖyñbC«®îÝ»‡Þ½{›: B!„˜€Á±¦ááh®úûÜ”)pòõE«‰UÓ«šF…B¾½N!„¼Šè…®&ƃ™™™©Ã „Bˆ ýTL×åËõšö*zr_˜“““‰#!„Bˆ)Ð513f Ξ=‹ ÀÜÜÜÔáB!Äh f"6l0u„B11ºGŒB!ÄDh F!„b"4#„B1ˆ=6fÌxzzbÚ´i¦…B!¯Žš4¾H$’ ø<89»T«0Il,Ž¿?V½´õè»ïB¥šGŠN sÉÌÌ„‡‡rssagggêp!„ò’ˆ³!+“ÃÃÃ# €@ñ㟢g~—(1ÚS“L©Ä­… aߤI¥iÁË–Á38Ày_^êææ@€‚‚ˆB!¤Æm –¸{7\üý‘Ÿœ\i—χÙKò®,‡¥Riê0!„ò 0Ê=b¥¹¹ˆÛ²¾ãÇ«~cÞ<üݽ;Î|ô‘ÚÚ‹ÄËË /^4u„Bye v{ÉøŒ ¾M¥i~“&¡ÇºuY¿œ™8J¹ÜÕֈŋãý÷߇©C!„BHgð@LIt4¼ÃÂÔN÷ìÚvÁ¾IÍ›‡âÌLä<þÆâ‹hΜ9X±b…ê;„B!5Åà{Ä$±±È‰Çv??UZÚ©SÈKH@çÅ‹+ÌËåñÀárÁ C«­1÷îÝCïÞ½M!„B^Äš†‡£ix¸êïsS¦ÀÉ×­&ND‰D‚¬[·ðZ»vcˆ]·æpjÑÂÐjkŒB¡GŸà$„BHÍ«ÑS(³r%òSRÀƒKëÖè¾z5¸AMVkÆÌ^àWlB!¤î0ú@¬ëòåªß-]]ÑoÏcWQcžÜæäädâH!„ò* kp3gϞł `þ’¼óŒB!/7ˆ=¶aÃS‡@!„W }ô›B!ÄDh F!„b"4#„B1ºGL‹«çáüñ}—‹ÏæüRkuoذsæÌ££#¢¢¢j­^B!„Ô£ž“ÄÆb»ŸbV¯V¥)e2܈ˆÀ®N°# WfÍ2f•5λY+ô<ήîµ^÷O?ý„åË—Ó ŒB©£ŒvFŒ)•¸µp!ì›4©ùóÏȉGï­[aîèˆü”cUY+\Ü<áâæ‰»w®C"~T«uÀËË«Vë$„BHí1Ú@,q÷n¸øû#?9Y•¦”Ë‘¸{7úíÜ [¡àêèh¬**3ý?œ8ð‰ÀÊÆ]Þ@Û ®Zó¥$ü‹Ó‡wC"~ss 4kÙ½¾kP™O(•Jp8½ÛD!„›Q.M–ææ"nËøŽ_!½ðÁpù|¤9‚];boHwí2F•F%+-Á®-+‘Ÿ+Aðáêæ‰“ÿBJ¿Zóù{+”J%B‡ŽB·ÞƒÀãó .••OOOƒÚF!„—Qb·—,ÏÈ‘àÛØTH/+*BYa!Š320äìYt^¼×çÏG^b¢1ª5š¤ûw!-.DûÎ=áÐ=¼ ø7ê†Ö¼ €LV ™¬šù"¤ÿPƒË=z4š7oŽéÓ§ÃÃÃCÿ†B!ä…fð¥IqL $ÑÑœ=»rá` ZŒ ®@×€8ûúâѰ÷ö6´j£)*Èœ9ú7Îýûiza¾Ö¼=¼S‡váèÞm‡¿¶ÐgÐpƒÊܸq#¦NŠ:`úôéppp¨n“!„ò0x &‰EN|<¶ûù©ÒÒNB^B‚æÍÇÌ xæ>'ÆÀ˜¡Õ•µ- ¨ko½[¨Ò-,­T¿óx<0¥ ¹f¼§‹­YK4kéqV.œ<€è[—Ñ®cÊÔ¤M›6°··GJJ üýý j!„B^LÄš†‡£ix¸êïsS¦ÀÉ×­&N¸wìˆ{Û¶!à‹/ ù÷_Hbc4w®¡Õ•°IKXXZáîëàóÍÁ™þ<¼ÁÕ½ÀÉÅ I÷bqêð.xx áY¿œ\ܰÇx ›ÀÆÎJ…@ùûÆt)S¹\^cí&„BˆiÕø ]ƒ¾û—gÍÂÎ °µEû¯¿~¡.Kåg©†ŽügŽìÁ•³GήîhÕ¶£jžvB–šˆ¨qçú¼ñæ08¹¸Çàò™#ÂÒÊzôW½sL[™Úp¹Üò3ˆ„B©“Ô½/‰d>NÎ.µy*00“&MÂèÑ£M !„Bt$gCV&‡‡‡G)€âÇ?EÏü.PBßš|}ûí·øé§ŸÐºukS‡B!„@ßš|…††"44ÔÔaB!¤†Ð1B!„¡!„Bˆ‰Ð@ŒB!ÄDh öŠ1w3®ý›ú—ù* ›µ1I"S‡ñÒ(’Ê0pÆZô¶“í0u8/ ]úÙ‹´M¿H±RŒ:“ÄÆb»ŸbV¯äÄÅá_ßJ?¢ ŒYíK¯ ¸=?YŽ qÅÏÍXµ¯Zå(”J[ øðûm¸ÿ Ò<ô ‚ÐÝ©Úù4QWæËä·ƒWðÃÖãu¶¾ºÊÚR€~/†÷Ò+¿±×ƒ8¯S~Þ‰à–â½9›p7%Ã(åê§!í{‘¶i}b1¤íÚö»Uí¯ Ñ—ÑbL©Ä­… aߤ‰*ͱys„ߺ¥úéóçŸØÙÁ-0ÐXÕÖ ÿœB`ˆpw¶Dl>ЏÔL@vn!æüvy…R£ÔõF{¼æhk”²j²LB^6?n;g{kœ\6ovöÃÌUû P*M–^^¤mº¶bÑu¿ûüþšCíõ‰»wÃÅßùÉÉO9˜™›«þL9x ûõW 0Vµ/=¥’aç©HÌÿô5ÓÂ{`ó᫸uïVì9‰»ÀÞÆÒ zþ’ü"ø7õBÄøPdåbÁïÇy/ 6–æ˜Ö}‚Ê¿ñ¹éÐUì9{¹R¸;ÛaÊÐnnãS20cõ>IK!W(q9¦¼ïî˜;¾Æ25ÅRmõÀ͸ÿ0{ýAˆó‹0ip0Â{hlP~©)¤]3ÜIxˆr0ªU>MRDbDl>Š„´,¸ØÛà³wCбU#½Û@ã2KHË·ëB$ÎGŸ 8y˦E³ú¯!lÖz|7vZ5öôþß ¬ýò]Ý4¶]ÚÖƒ¶å¢Ni™¢±å›‘ðyx§g[¬ß Q éhÛÌKc^}û§¾íªîg5±M‡N_ –B$¥g£ ¸£!´S+šû ¦Xªêóú.3@·ý®ºý5!5/‰˜8;‹éª$'‡í e²‚vvòd½jU¥y2Ûx Ô IDATÕ¹3˺}[çr_ǯDZQ¿WH»ño*ûrå^6ìÛìëµûÙþ ÑL¡Tj-K©dlï¹(Æcçn'°¬ÜÂJó ÿn»z7¥Úù4QWæWkö³efJ%cÒR‹IJ×ZŽB©dƒf¬e;OG2¥’±5{/°À±‹X¦$_5Ï[_®a~ÜÎò‹¤Œ1Æ<ÊaŒ16zþVöÓö“¬L®`É"1ëõérö ³|Úþ‹ÑìaV.S*;yŸOZФ¥ª27¸Ìü~¬R<šÊÔ‹6UÕ7dæ:öù¯³Y»“Ì‚'-a¥²2­m2sû~óQÆcÉéÙòi2ü»MlÍÞ L¡T²‹Q‰¬ûäe,¯PjPû4-³wgod¿¸Ì”Jƶ¹ÆÇ.bñÿeªÚø´¼1õW–,km;cŒ¼Ï&þø§ÖØžWÕzж\ÔIz˜Í‚Æ-bÅ%2öóŸ§X†8Ÿœ·…ý}îŽÖ8ôíŸú¶OS?{ÂXÛ4cŒ ø|›ûÛaÆcr XÏO~aéÙ¹ªz´-ku±hëóú,3]ö»êöׄ¨#ÎÎb"‘ˆ €nÚh @à5¶øF¹4y{ÉøŒ ¾M•ó¤> ½=\Ú´1F•uÆŸ'nbX¯vÒR3s0wì4tw¼q¡àr9(’–j-‹Ãû‚ÛxÃÅÞZ§ôͧ Ÿg†¬ÜBdçÂBÀ‡o#­yÓ²‘[(ÅnmÀáï¾ÑNí|á=`keðru@rºñÿebÒà`ð̸º;¡c«F¸íÔ ž.öàp€®þM`m)@zvžÆX´•YU,†Üæ|‚|…àr9x”S¨Szµ÷=œ!à›©òU%SR€„´, ïÝ\üÃÓÅ7âþÓ»}š–Y¦¤IéÙïx»gxfºí~ôYúÒu¹wOLuÚ§i™=©ÏÊ¢¼>Ï 6–æjËyž>ëO_º.—çY ø+°³¶Àñ¥“%»ÎÂÒBóå0 vÛ÷DUýL}¶é'l¬ž®kKsäJõ^ÖOT·Ïk£m¿[ÕþšC<“ÄÆ"'>ÛýüTii§N!/!—?‰Wœ™‰ŒË—Ñ^Ë`íU³ýøM¼Ý£m•g>èTË«ƒ fØpòF<"6EÏvÍÁQ÷™ùÇmÊwÂJÆÀåpPP\¢öfçç‹p±·†­•þš÷a¥y3%ˆØt«¿†–Bw@ßi+Á«PÞ³k+SS,ºPWŸ&º´¡ºìm, “ËQ$•©„’‚òðó±êJÛzÉå––ÁÒœ2¹…Ïœm03ãªÖ5c@q‰L•O[Û¹\Ž^7Å«[º.—çyºÚÃŒËEj†=] T2¤=ÊEC7ÍOûéÛ?õmŸ!ôÙ¦Ÿä?ý½ m­-ô^Öº0¤íUíwµí¯ Ñ—Á=ªix8Þ‹Uýx…„ õ”)ªA$ÿó\Ûµƒµ‡î§²ëºG9¸“„ÁÝêæ¥Ú‹QIÈ)(ßùòÌÌÀç™iÝa{{¹ÀÞÚÿœ‹üu2R§º{ºÀÍÉ^A™\…R‰[ñ–• ©¬ |žy8ÎßITÅõ„£­’ÓÅP*™NeJ]}šèÒ†êrw²CcOl;vŒ—¢“ð0+Íëë]¦¦eææd ïz®øëä-0ì:}»ÂYŸz®ˆNLܾ”Étk{ýב,WûÉbuëAßåbÎç¡Kkol=zr…»ÎDÂÚR?oOùôíŸú¶ÏúlÓOì>s²29âR3›$BßF5ÒŸ0vÛëúþš˜V­|ô;iï^øN˜PU½4vžŠDïÀ°³¶¨•ú†ÍÞii²s 1{ýAø[©z}©»B§¯Æ¢¡ÅãK¯/Ú_}HÄÙ•Éááá@  øñOÑ3¿K”ÐÅnx”Sˆñ;ÓF­Ftbºê~’ýcàÛØƒa„“¡ý5©iµri’TÔÀÍ ÜMÆ )!- ÓWìÔsµÇ7£u¿üA!ÆFûkRÓèÒ$!„BˆUçÒ¤NgÄÒÓÓk*VB^:õêÕ«rÚÇk1B!/OOÍOJ«C÷ˆÕAù…HK‹L!„B´ X£P*ðí/#ðÇþŸjµÞ1§0õûþ¸u÷¬Îy–-[†/¿ü²£zq½ñÆ8þ¼©Ã „bbF½Y¿àÞ=Üš2‘#ÑpøpUÚ½¥KQ”š sgg43®Ýº³Zò’êÞ½;Š‹ {1©.RïßAÜí ÈÉ¡q‹vì1X5MZT€Ë'þBVz l\g7¯j•ïàà€””´©ÆwT§L™‚&MšT«B!uÑbL©DâêÕ°jذBzlDÜBBðë¯Ü¸˜o¿EG??œ4úƒèÇŒk†¥³™: Tgàbs +´z=ÿ%DWšvãÜ?°´²ÅÐñ³‘sŽlÛï.×LçòLJãÇ#55UçBg¿Þ<ñðL¶îYÃÖ=kxá‰ùÜÕ´Óß ¥™g4j ç’þ$(` z€Ø³¿òÕŽe¤¦ÿ…­ÞžN~÷2zðs,ûì Nœ>@Ç6Ý™0òõÒ:Æîå‹m R©èÔî^öú–'|÷ƒÖw>éO¾Ø¶˜ ÉgpthHÿЫk(»nä»=kh`ë@@Ûž÷ûöí¼úê«deeñÐC1wî\EŽëÍ4iÖ€¤sb2K· Å\ˆûƒÁ£§¢Ñhiݱ;1¶s)é›6·¨lFÔ)S3fŒEû/_¾œ+VœœÌêÕ« ®z‡„BÔŠÜ#Vœ•Å… ð¹á‘J­Æõž{Hݽ³ÁÀ¥ýûÑ9;cïë«DµuÚ…¤?éê‚·G öÞÌÅ´ ¬ÝôL&}‰ûŽG§ý{)—n3æieÊÊÍÏfÍ·ïb2ê4CÇ~´¨¾‚Â<–¬Œ¬Tì;O÷»øbÛbbÏþJZf_íXŽN«'°]/öÿ¶Õâ¾ 0€^#£œœ¬tÌf3N®Þ»™‚¼]ÜÈÊLµ¸Œ#F’’ÂO?ýdÑþ'NäÀ´iÓ¦Üôøøxš6mÊÆ-nƒBˆÚK‘@ììÊ•xŽÖÞ¾LZ«ˆ.FG³kð`þxûmÚLŸŽÚ¦òuàê»fž­¹·Ëtöë @FÖÕàÀLaQ…Eùø·êÆð¯áÙÆ7»;ö+SÖé„£Ò¯Ç(¸ïqúuiQ}œ=Dn^}‚†Ôi #Nà×ãÑü™ƒÙlbà½cx°ïSÜÛå…Àõ–-[F‡ʼ¦L™Rí2 ÅŨUj ÅEœýãW²/§¡Õê1Š-.cÚ´i,X° Úm¸‘N§£eË–8:Ö|-I!„w¾Mføàƒj•éàäŠJ¥"+ã.<0›Ldg^ÂÉÅÝ¢ü/¼ð‹-¢¸Øò+hB!ĵjˆy…†âZúó±7ÞÀ±Mî;–¢ÌLRvìÀ£rΞ%7.ÛjÌ<[—Øèí°³±'î ŸØÅoX>ŸÔª oÑÒ§#ÎŽ0 ¨Tj óˆ9ùæ+Á]ÆåT~‰Ù­­|:¢ÕèØùóŠØ}вûüZÞ­íD¯·E§µáBòi|›¶£m‹.¨T*¢ù Ά}G¾«ú¨‚qãÆ1tèÐ2Û-¹"f6™0™K^fÌÔ*5­ïæ~üqd7ÝûŽàÔ±ŸÑémq÷¼«Ò2½½½2dÏ>ûlµús3¼ñÆ 6Œ=z(Z¶Bˆ;Ï-ÐUïâBûW^!aÝ:v=ð1/¿Ì]cÆàz÷Ý·²Ú;žJ¥"´Ï“å³e×ÿðñ*ÿÆíòèt6|¿omx‹s‰'<–&n>\ÎIcí¦ù¬Û\rÕèBÊÖnšÏ–]ãhß1¡/`6›‰>°v-º–¶£"v¶L‹¢‘³Ûö®cSô*’/Ãíî ½ÚïiÒ2“ùzû2ü®”y«888àééYæÕ°aå‹ñþyìë?xÓÇpæøAÖðgN”<]zÏ}CÉ˹ÌgKßàÌñ_2•ºò¯Å”)SX·nééU»اO‚‚‚8uêS§N%((ˆ 6”¦ççç³zõjΞ=[¥r…BÔN-ú-kMÖ~&“ õ•cÿo[Y¿å=Æ=4ƒ»;ô±Z›Þ}÷]ÒÒÒxë­·¬Ö†êhݺ5çÎ#88˜?þøãº´š®5¹{÷n&MšÄpvv®QYB!n¯«kM*¾è·¨ýÖ|;'WØ9²÷×M¨ÕjZx··Z{ŒF#¤ÿþVkCuy{{óú믗 ”°ÿ~žzê) „¢ž@¬žp°wáçß¶QXœOC' Ž«‹‡UÚÒ³gO’““éÒ¥ £G¶JjâÔ©Sœ:uê–”]_×ÞBˆúJ±zâáþ“x¸ÿ$k7ÀâÉO…BˆºÎ¢@Ì«ž?å(ĵÌf³µ› „¢Ž¸¥OM !„Bˆ›“@L!„ÂJ ÄÒg]ÇŽ[²¤t[ÊlzðAÖwéÂw#F~ü¸’U !„BÔZŠbf“‰ÃsçâܪUé6cA{^xöO?Íè_¥åðáìyþyÌF£RÕ !„BÔZŠbg¾ü·À@¼½K·ež>Ù` ÅС RÑæÑG)ÌÌ$ýÄ ¥ªB!„¨µ Ä 33‰ýßÿðŸTvz„ò®~eŸ;§DµB!„µš"ØoÿùíƒÃuÛ]Z·FmcÙ/¿Äl4rrÍŒEEóó•¨V!„¢V«q –vìé¿ÿNË#ʤillè5>¬ZÅçAA¤ÅÄàÖ©S™€M!„¢>ªñÌúéÇ“qò$ë:v,ÝvaçN.Ÿ>ͽóæÑ¤{wB¿ýSQíÚÕ´Z!„BˆZ¯ÆXëÑ£i}Íz»§NÅÕߟáádœù$vvveÒfÍšE»Û°²AlÌÏÚ»•‹‰çèxwo {òºô3fðÚk¯±gÏž*—ýî»ïòþûï3lØ0…Z+„BX‡bº/\ˆWp0*¦tûÁÈHlÝܹ?®_ÏÞiÓxhÛ¶ëö©¯Ôj5ÿ÷æËMËÍÉ ]Ç®´ñïlq™EEE¬ZµŠ_-ÿ ÚèkVA¸•ì8УÏPNþþK¹é!!!ÄÅÅqâÄ Ú·o_¥²³³³ñööV¢™B!„U)64©ÖéÐØØ ±±A­-‰ïŒüMû ÐØØÐvìXŠrrH=rD©jk­ «—0ïõ)Ì{} _¯]v]Ú»³ŸcÛ×køfýÊ* MþòË/8::âããsÝö àëë‹^¯¯öÐdJJ QQQDDDTºï]­:ÐÒ¯36¶ ÊMW©TôîÝ›-[¶T¹&“ •ª¼¹ˆ…BˆÚE±@ìPd$_…„AV\9ý…ÉhÄÁÛ›Ãsç’ŸšŠ£YññJU[kÝݳ÷Ú acéй;ƒz3èáqMÆÄÄ”;ô8mÚ4âãã«|õ `÷îÝ„……áççG\\O?ýt•Ë(Oûöí9RÅ üôéÓ¤¦¦âåå¥H„BkR$ë8y2}–/§ïŠèˆÇd0`ÈÏG­ÕbÈÏçìÆdŸ;‡ÖÖC^žÕÖj>-ÚâTnš`M}ZÐÌ·5:wǹa#‹ÊÍÈÈÀÉÉI‘6FGGÓ±cG^|ñEúöíKBB+W®¤K—.Š”ïââBFF†Åû?ž¶mÛ2cÆ <==iƒBaMŠb^½{ãÔ¼9έZI^J ±±híì0 Ø8;3ò§ŸðèÖ CAÚåW‰šsrr"77W‘².^¼Hrr2àèè¨H¹WeggW)hüè£8|ø0óçÏ'33SѶ!„Ö øôj­•ZÙhÄ¡iSÔMéP¥Ùh$ûÜ9œ|}•®V\áççÇŸþ©HY£FâìÙ³tîÜ™I“&áïïÏüùóIMMU¤ü“'Oâïï_¥<:uÂÙÙ™xÞBQÔ8+HOçüŽfdP˜žÎ‘yó°qqÁÕÏ­-MCBøãÃ1 üùé§èìíq T¢íµVaA>ÇŽüÌñßu9cG~ætlL%9+×£G –‰ˆˆ &&†¥K—rèÐ!ÂÃÃ+Íg6™0Š1™M˜Ì%ïÍ&ÓuûìÝ»—ûï¿¿ÊmÒjµ †*çB!î45ž¾Âl4rlñb²âã1›Í¸²d j½€»_}•ý3gòy·n84kFð‚¥OUÖW¹9YlýjuéÏ“.°õ«Õ¸5ö¤U»šMRjooOXXëׯgÊ”)¥ÛýýýÉÍÍ%11‘qãÆakkËœ9s;¶üÊÓ«W/zõêEQQQ¥ûþv`'?|û÷Dµ¿ÜÅ€¡OÐ)¨/¤AƒtëÖ­ ½+¡V«1›ÍUÎ'„BÜiÊ›@—””T¤×iqmävÛ$j.!!!C†pôèQ´whÐƨQ£>|x•óvëÖÉ“'3~üø[Ð2!„¢fÒÓ.QTlÀÓÓsä]yå^ó>(@¬ŽJJJÂÍÍ Ngí¦”ëüùó4kÖ¬Zy7mÚÄÌ™3Q«ÕÄÄÔ|8W!„P’bB!„VR•@LýB!„° Ä„B!¬D1!„B+‘@¬ž‰ŠŠ²h°Ú*00°Ú‹š×ãÞü˜_þH¸ã˼ró‹:sƒ¦/fò¿×[»9µÆˆ—WpìlR…ûÜIŸ‰;©-BÜ ŠbÛÆŒa­¿éë§—^*MKز…m£G³. €_þùO%ª50hÐ ÂÂÂny=×¼Ïâ·¦2ÿÕ§XµðeNŸ8\å2233qqq!!Áò“ð¬Y³Ê]ôüVÊÎ+¤ßs–uÝö™|S¥rŒ&AçðÔ[k8|ò|™}ž„o×*ç«HyeÖövz6¾3‰Œí_­ünþ™wVoW¬=i—s™:ÿs‚#ðèìUœˆOV¤Üê¶³&ý»“>ÕiKMú^Ù÷öfßw!ªK±I¦‚.Ä+8•FSºÝÆÅÿðpÎmÛ¦TU¢î¾ûîÛROçîýè:Þ†“1øöÓE<ûÊ"ô6¶—±|ùr À]wÝeqžÑ£GW§¹5²qO ÝÚßE“F%ëfF}¼‘!%«G\ÊÌá¿vó¨>8;ØÕ¸®÷(dÞŠ2룭ÙA#g{~X8…/£2ëƒoØðöÓhÔµoàáNúLÜ®¶Xú½½ñû.DM)ˆ©u:466e¶7éÙ€ä}û0JU'ªèÛo¿eêÔ©\¾|™Ñ£G³dÉ’[ZŸOËö¥ïº¡ÑèPUá’Ñhä¿ÿý/ëÖ­³hÿ °`ÁÙ²e ýûWï*IU™Lf>ßy„ÈI¡¥Û¦îÃÇßàð©ó,Ú°‡ð¡½j„}ºãWÖíø•K™9üçùtó³<8­N™ ÉéüóÃïˆKJÃF§exH'&=to¥e¦fæðö'ßsäÔìl˜2¢7÷ùpúB*¯¯ØLRZ÷ù±ëÈŸ,œ6’6Í3âåüóéèЀ/,bÙKcðmâʪ-ذë72³óiÒȉ©#ï#¸SËj÷ûødf.ù†ÜüB Fû•¬…»þÍñØêuÄ'¥õñ6N_HÅÍÙÇô¥G‡æ–YXl`oÌþ÷ÚãèuZFõëÌŠo"æt"ÛxW˜÷fý«¬ÕíÀ¯±çxcÅfÒ²r™üp0£ûunÍg"tÆ‚Úûr6ñÙy…<ù@¡=;Tx¬+jˈ—WзkŽžþ‹ó3xrHwF÷ëRíc–}oËû¾ QSŠb‡"#ùå7hؾ=]fÌÀ©yÅ'.q{=øàƒ<øàƒDEEqáÂ…ÛRçÖ/Vðç‰_Ñh4Œÿètz‹ó~ùå—xxxÐóJ _™iÓ¦1mÚ4o²ŽééÓ§iݺ5ëÖ­SthvçáS¸:5  ¥Wé¶?â“IHN§‘“=£‘C±çÒÓµª¼iûþ¦V©yùñ’µ7Ç?Пk†cÂúw%¬Wƽùq•òU¤¢2—ó­›²rÖX ‹‹9ó×%‹Ê|iñF:´ðä_øšÉÄwÖâßÜïÆ.¼¾b3îiÇ“Cº³öûƒ¤gåYT¦›‹=Kf„áÙÈ™=GOóÊÒoÙ:?‚¶–ž®åçÛ„ïLâÃÍ?s1#›™ã\—þêòMôîÔŠe/áçcq¼¼ô[6¾3 'û›_ÍML½ŒÑdÂËÍ™ÿ¬ÿ‘GÜwcRÒ+ ÄnÖ¿ÊÚYÝþ‹Kbí?Ÿä·S˜±èkî€^§½%Ÿ‰«>ze©™9Œyã#º¶m†g#ç uEmÈÊ-`ÙKcˆOJãñÈOx¸w@µXö½-ïû.DM)rͼãäÉôY¾œ¾+V wp :<“,Ê\ëÍŸ?77·2/K×§ìú(O}¿Àžü¸ym•Ö‡\°`Ó¦M«nÓËÐëõ´mÛ''e‡>Ýñ+aý»^·-!%ƒ7Ÿ~€»š¸91µZEn~a¥e©T04¸#ÁZâæloQª›¯":­†ÔÌ.]ÎÁV¯Ã¿¹g¥yâÓ8y.…É£Õ¨ñmâJÍÙ÷ûYRÒ³9›x‰Ñýº RÁ#ýº ÕXvú íÙ/7gT*èØ {;=‰—.×´‹åJIÏæô…TƼµJEÏŽ-ðrsæPì¹ óÛgl“ IDATå£Õh((*fËþã\¸˜­^G~Aq¥uÞÎþ]5,8– _Ôj3r*ÍSÏÄU»• /º»8С…ûÅWûX_ÕÿÊ¥¯g#ô:E}¨ˆ%ßÛò¾ïBÔ”"Wļz÷.}ÉçAAdÄÆÒ¨C%ŠV2qâDFUf»eÃl6¶ °±m@Ÿ!cXüÖTþ¤©o›JóýòË/œ;wŽGy¤Êm¾bcc+àx\ÉiYô»»íuÛ‡ß× ?_†ôðW´ÞÛ!bx0‹7ìቨOÐkµLÙ›þ7ôóF©—Kþ>õ÷bïù…Å´lêFfN>z­¶ô*–^«ÁÁ®ì­ åùþ—XVo;HFvjµŠÌœ| FS5{V±«í´·ûûj›«c2sò+Ìg§×a0q²·eû‚)|± ;ÛÊ—»ý»êÚ!7½N‹ÁTy}ÕùL\åÐàïßµƒ ™9ùÕ>ÖWÙÙü}lÕjµE}¨HeßÛ›}ß…¨)ÅW„Vkµ¨ÔjÌr?X­·téR¢¢¢Êl4hŸ~ú©å©T RSXhÙ ö?ÿùÏ>ûì»NæUë¶ÿÊ#}:ßôÊ΃ƒns‹”ãîâÀO à‡C'‰úxýº¶¥¢ÑU7g{ØòYäSeÒRÒ³)2È/,ÆÎFG±ÁHÎ5W45Æ+HÍfÈ+(*͵j+KþF{ß& š¾øº««jµª4oU¨ ÌUZg[Š ró‹J„ôì<\*¹ÇÏËÝZMBr:-¼Ü0™Ì\¸˜É][Ò¿òÚYÝþÕDu>W]; žGg{ÛjkKÔ¤ï7ûÞVö}¢ºjü‰*HOçüŽfdP˜žÎ‘yó°qqÁÕ¯ä]³Ñˆ±°³É„Ùd*y/AZ­ðÌ3ÏpìØ±2¯E‹U˜/3ý"1£ÉÉʤ ?—ý;¿¦¸¨/ŸV•Öyá¶lÙÂ3Ï<£T7ÈÏÏ'<<œèèhEÊ»˜‘ÍOÇÎòð•ÿE×5ûbÎ’‘]òÇS«Ñ Ój*ýƒÛÂË WG>Úü3Å#F“‰Ã'Ïs!5WGZ6uç³c6Ã?þvÝUŸ¦î.ü~&€=GOSl(9Gä£ÓjhîÙèJÚ™Òv]Õ¬qCâ’Ò¸lá•”«:6 .1 “éï?ØM\háåÆšïb6ÃO¿Ÿå¯ÔLº´­xz–^-Y½í £‰/¢`o§§c%÷YÒ¿òÚYÝþÕDu>W}ýEÅbR8~6‰îþÍ«}¬-¡tßëú÷]XW¯ˆ™FŽ-^LV|"¿°˜K™9¼±b3z–É3èʉJ—sæ/¢>ÞJ~a1:2ûÊ•ÊüûÙaükÍîŸ^¬·mæÁ+O–w5qeجå˜LfþoL_šº;Tx¬kò™¯î1»™Ûý}õKyÿŸÑ%%%éuZ\¹Ýö‰[köìÙ¤¦¦VzUËòòòðññaÏž=øùU?À(ÏöíÛ9r$ñññ4lذFeóÐKËXö0|¯\ÉU7øÅÅ¥ÓWˆº+tÆþýì0ü® ½Ö6ò}Õ‘žv‰¢bžžž#€| ïÊ+÷š÷ù@ v×#F£‘}ûöѦMå7Ì[Ã… xóÍ7ÂvíÚÅsÏ=Wã àbF“†Þ+'e!êù¾‹[Mñ›õÅ©eË–$&&Äøñã­ÝœrµiÓæ–‰å=tP]> ññ¨y@'„¸óÉ÷]Üj24)„B¡ šB!„¨$B!„° Ĭd„ xyy1}útk7E!„V¢È=bÛÆŒ!-&¦ôgßÐPz΋Ùhä—Ù³ùk×.Š._¦aûöÜó꫸ú×¾%_n…””<==ÉÌÌT| D!„BXGUîSì©Éà… ñ @¥Ñ`6™Ð;9ÑïñquåÄòåìzöY†ýðCé>õ™‡‡z½žììl Ä„BˆzH±¡IµN‡ÆÆ j­¶t[ç3pnÕ [WWüÆ'?5•üK—”ª¶ÖS©T˜j¸X­B!j'űC‘‘|BtDYqqåî“‹]ãÆØ¹É´Wy{{³oß>k7C!„V H Öqòdú,_Nß+Ð;8ŽÉ`¸nŸ¢¬,Í™C×Y³dXòóæÍã±Ç£]»vÖnŠB!n3E1¯Þ½qjÞçV­ŠŒ$/%…ŒØØÒtcA»ž}–?ŒÏÀJTYgÌž=›E‹{ÍñB!Dý øôj­•ZÙhÀd0°ç…põ÷§Cx¸ÒÕÕz§Nb §B!D½Tã§& ÒÓI=|˜Æ]»‚ÙÌñå˱qqÁÕϳÉÄþ™3Ñ988mÆÂB4z=¨Ê›9£þ1hµ²ä§BQÕ80[¼˜¬øxÌf3n„,Y‚Z¯'/%…„ï¾ aË–Ò<ƒ>ûLæ»Âl6£‘{æ„Bˆz©Æ˜»;ƒ7l(7­‡?^Ó*ꬫ÷…¹ººZ¹%B!„°³’ &°k×.Þ~ûmlll¬Ý!„BXbV²råJk7A!„V&‹~ !„BX‰bB!„V"˜B!„•H &„Ba%ŠÜ¬¿mÌÒbbJö ¥çܹìyþyR¦ðòeœš7§ÓóÏãÝ·¯Õ !„BÔjŠ=5¼p!^ÁÁ×-êÝæÑGéúòËhmmIغ•½/¾Èˆ½{ÑÙÛ+UµB!D­¤X ¦ÖéД3–GPPé{{//4zýušB!D}¥X v(2’_Þxƒ†íÛÓeÆ œš7/Mûù•W¸ðèt:ú,]ŠÖÖV©j…B!j­òVÞÖ%%%éuZ\¹YTHâîÝ84k†Ùhäø²e\:z”ÐÍ›Q_Y̺(;›¢Ë—9µf ©¿ýÆÀ5kP©å9!„BÔ=éi—(*6àéé9Èò®¼r¯yŸ( yõîSóæ8·jEPd$y))d\YG@ï舃·7]þñr.\àÒo¿)Q­B!D­¦øe)µV‹J­Æl4–MT©P©Tçä(]­B!D­Sã{Ä ÒÓI=|˜Æ]»‚ÙÌñå˱qqÁÕÏœóçI>p€¦½{£±±áÔÚµòóqëÔI‰¶ !„BÔj5ÄÌF#Ç/&+>³ÙŒ[@!K– ÖëQiµÄó Gþõ/Œ……¸´iÃ}‹£wvV¢íB!„µš"7ë !„Bˆ·ýf}!„BQuˆ !„BX‰bB!„V"˜B!„•H fe¹9Yä[»B!„° ĬÈd2ñÁ¿^æ» Ÿ”I3 |µf) Þ|y¯O!ö÷_-.÷Ò¥K´mÛ–üü²^`` ;vì¨Q»Å­3dÈ¢££«•wåÊ•4kÖŒ€€e%„â–QdÑïmcÆSú³oh(=çνnŸôãÇÙFÇgŸ¥Cx¸ÕÖi gc9sòwÚ´¤EÛxzûZœwîܹ<ù䓨ÙÙ•I›5kíÚµS°¥U—›}™-Ÿ/坸S¸4ò`Ј§iâݼFù6¶„?~ÛÝþÝûÆ «r^!„Ö¡H ¼p!^ÁÁ¨4šëÒÌ&‡çÎŹU+¥ª«Ôj5ÿ÷æËMËÍÉ ]Ç®´ñïlq™EEE¬ZµŠ_-ÿ ÚèÑ£«ÞP…íøæc윙òú=°“oÖ¾ÏÓÿ÷oÔjMòuîÑŸû‡•faùÚ’B\\'Nœ }ûöeggãíí]¥¶&“ •ª¼9š…BÜ© ÄEFòUHÑdÅÅ•n/ÌÌ$öÿÃÒ$¥ªªîîÙ‡û‡-7mа±tèÜ€ÎA½ôð8‹‡&cbbÊzœ6mñññU¾Ê°{÷nÂÂÂðóó#..ާŸ~ºÊe\u9#“É„sCw~ܼ–Üì˸4ò ýRv ¸ø¾û|9ÅE…|ÿõ*:u냧w‹ óÕ5íÛ·çÈ‘#UÊsúôiRSSñòòºE­Bq+(24Ùqòdš5Ãl4r|Ù2¢Ãà ݼµVËoÿù탃UÕ>-Úb2™J¯|]Ë?0“Ñȱ#?ÓÌ·u•†&322prrR¤ÑÑÑL:[[[&NœÈòåËqtt`þüù¼õÖ[eòÜÿý¬YS¶OW¡Qk(.*äøá½´ôëŒNgCqQ!¾­;мmë–ÍA£ÑÒ=dŠEùb~ù‘?~û©ôçqÏÎÆ¹¡{­Jpqq!##ã¦ÇðFãÇçÿû3gÎÄÓÓÓâ|B!¬O‘@Ì«wïÒ÷A‘‘|DFl,é¿ÿN·7ÞP¢a'''rss)ëâÅ‹$''3lØ0Jƒ0€‰'2jÔ¨2yÊ{@àZ:½£Éˆm{¦¼¶€]ÅŸ¢ÓÛ”îÓ©[ÿ´Guåþ)Kòùö¤g¿¿oTwpt©uiPr¯WU‚é>úˆiӦѽ{wf̘‹‹K噄BÜ»Yÿ*µV‹J­Æl4’KÆÉ“¬ëر4ýÂÎ\>}š{çÍSºjøùù±hÑ"EÊ5jƒæ“O>aÒ¤IF&L˜Àc=ÆÇLTTT™<ƒ âÓO?½i™Î ÝQ«Õ¤§&ãæÑ³ÉDfZ ®n%WrÌ&Û6|D—žØ·ã+Z¶ëŒ½£s¥ùtz]Ë­·¶¤œLã®]Álæøò娏¸àêç‡[§N´¾æ)½ÝS§âêï_璘(,ÈçÏ?Žb6›ȺœÎ±#?ck×€Víj6T=HLL$55ww÷Ê3TÂÑÑ‘ˆˆ"""Ø»w/‹/fß¾}¬ZµŠ°°°2ûWvEL«ÓÓ²] ÷láþ‡Ÿâ·_v¢·±Ã˧ä‰ÚŸ£¿ÅÖ®}CÇa×À­_.gÄ“ÿWi¾ºdïÞ½Õz B«Õb0nA‹„BÜ*5ÄÌF#Ç/&+>³ÙŒ[@!K– Öë•h_”›“ÅÖ¯V—þ|1é[¿Z[cÏbööö„……±~ýz¦L™RºÝßߟÜÜ\7n¶¶¶Ì™3‡±cË` <½zõ¢W¯^¡×믪¬Šþ=ÎæÏ–òÞ?ŸÁ¥Qc;µFCÒ…³ùyOL (äAÖ~ÉáýÛéÒcÀMóÕ%¤AƒtëÖ­ÊyÕjuip/„¢v(ïYw]RRR‘^§Åµ‘Ûmo¨¹„„† ÂÑ£GÑj}·PXX£FbøðáUÎÛ­[7&OžÌøñãoAË„BX*=íEÅ<==Gù@Þ•Wî5ïó Äꨤ¤$ÜÜÜÐétÖnЍ‚óçÏÓ¬Y³jåÝ´i3gÎD­VsÍJB!n/ Ä„B!¬¤*˜,ú-„Ba%ˆ !„BX‰bB!„V"X=XíE¿…B¡,Eæ6Ø6f i×<¥åJϹs+M·ß¬Y³Ê]üN±qÍûü•pŠ‚¼\\Ý›ÐkÀHZµïbíf !„·„b“L/\ˆWp0ª&Ù¬(MÜ^£¯YéàNÔ¹{?ú†ŽE§·ád̾ýtϾ²½­µ›&„B(N±¡IµN‡ÆÆ ê&­(MÜ ,À××½^_í¡É””¢¢¢Ê]~§¢´ªðiÙGgWlíìqjè†F£+]ø[!„¨kû w(2’¯BBˆŽˆ +.Îâ4q{L›6øøxÚ·o_å¼»wï&,, ???âââxúé§-J«®­_¬àý7'óÝçË9þÿÐéþ^.ëôéÓ¨Tª B!j E±Ž“'Ógùrú®XÞÁèðpLW®(MÜÙ¢££éر#/¾ø"}ûö%!!•+WÒ¥K— ÓæÏŸ››[™—¥ëZö }”ǧ¾‰_`O~ܼöºõõz=mÛ¶ÅÉÉéVu[!„¸m'ôêÝ»ô}Pd$Ÿ‘K£*Lw¶‹/’œœÌ°aøn‘ïŠÒ&NœÈ¨Q£Ê”ggggQ½6¶ °±m@Ÿ!cXüÖTþ¤©o|||ˆ­aÏ„Bˆ;ƒâ7ߨµZTj5f£±JiâÎ3jÔ(Ξ=KçΙ4iþþþÌŸ?ŸÔÔÔ Ó–.]J‡ʼž}öÙª5@¥•šÂÂü[ÓA!„ÂÊj|E¬ =ÔÇiܵ+˜Í_¾\ýü*Lµƒ££#DDD°wï^/^̾}ûøòË/oš¶jÕ*ÂÂÂÊ”UÙ±Ìô‹œ;s‚mÑêtÙ¿â¢B¼|Z•ŸÏ /¼@XX!!!JwW!„¸­j¼èw~j*ÑÏ'O2põjl6$+>^©*k=ôz=ÙÙÙˆ !„õb˜Z§CccsÝ6“ÁÀ™/¿dðçŸãèë €»Ìÿt•J…Éd²v3„BaŠÝ#v(2’¯BBˆŽˆ +.€œóçQët$lÝÊ=zðuß¾œùâ ¥ª¬¼½½Ù·oŸµ›!„B+P$ë8y2}–/§ïŠèˆÇd0Pœ›KqNyÉÉ ßµ‹{çÍãàœ9\>sF‰jë„yóæñØcÑ®]»ÊwB!D¢H æÕ»7NÍ›ãܪA‘‘䥤‹ÖÖ³Ñˆßøñ¨õzÜ»t¡‘¿?R¢Ú:aöìÙ,Z´ˆØØXk7E!„·™âÓW¨µZTj5f£û¦MKnÜWýýp¦Ùl³Yéjk­S§N1pà@k7C!„VPã@¬ =ó;vP˜‘Aaz:GæÍÃÆÅW??´vv4éуSkÖ`6I;vŒôãÇi|Ï=J´½N0hµ²ä§BQÕ80[¼˜¬øxÌf3n„,Y‚Z¯ èŸÿdÿË/óy÷îè¹çÕWqnÙ²Æ ¯+Ìf3šk¦ûB!DýQã@ÌÎÝÁ6Ü4½A“&ôûðÚVS']½/ÌÕÕÕÊ-B!„5Ș˜•L˜0]»vñöÛocsÃükB!„¨$³’•+WZ» B!„°2Yô[!„ÂJ$B!„° Ä„B!¬Dî»ÃØó={¶€J­æÅÙïݶºW®\ÉìÙ³iذ!111·­^!„¢¾R$Û6f i×üáö ¥çܹdÄÆò݈eöï³t)ž½z)QuÓ²Mìœ8¸wéiokÝï¾û.ï¿ÿ>Æ »­õ !„õ•bWÄ‚.Ä+8 dY# aÛ¶Œ>|¸tŸÌS§øqÒ$<ºuSªÚ:ÇÍà 7/N=xÛ±ììl¼½½okB!D}¦X ¦ÖéÐÜ8–JuݶøÍ›¹kðàÒY÷ë³”ÄsìØô“ÎÓÀÁ‰n½Ð9¨w¥ùâOÿÁß}IzÚEllliÓ¾3‡Ž©Q™W™L&T׬ *„Bˆ[K±›õEFòUHÑdÅÅ•I7¿i͇UªÊZ«¨°€/þ·˜¬Ìt‚ ÅÝË6Füé?*Í»õ«Õ˜L&BG>É}‡¡Õéj\&ÀéÓ§IMMÅËË«F}B!„å Ä:NžLŸåËé»bz¢ÃÃ1 ×ísáÇÑ;;ãÖ©“UÖjgÿ "#6–F:”n?»a-zH‰êj½ÜìËDoûŠèm_ý½='«Ò¼ýx„[¾`Û×k@¥¢cçîÜ?llÊü裘6mÝ»wgÆŒ¸¸¸TµKB!„¨ŧ¯Pkµ¨ÔjÌFcé¶¼”’÷ïçž7ÞPººZÉÞÁ€ ÞñméWºÝÖ®Aé{­V‹ÙdÂh0 ÑþýkjÓ>6íIKMfï›øýð~ºöècQ™éÔ©ÎÎÎÄÇÇX£þ !„Â25Ä ÒÓI=|˜Æ]»‚ÙÌñå˱qqÁÕïï` nãFÜ»vÅ^†½ðmÕ[»œ8zÎ^OJâ9<½›ãÞ¤)®nœ=uœß}§·/^ÍšãêæÁ·ëWâíÛ 'LW‚]•ZmQ™•ÑjµnRB!Ä­Sã@Ìl4rlñb²âã1›Í¸²dÉuOFžýúküŸy¦¦UÕ¶v ùø³DoÝÀÏ»¶ÐȽ :÷(ݧkϾ\H8CÌ¡}=¸—†áêæV§gôVòór°kà@Ï>ChäÞ Ò2+£V«1›Í öT!„)o®]RRR‘^§Åµ‘Ûmo°žnݺ1yòdÆoí¦!„µVzÚ%ŠŠ xzzŽò¼+¯ÜkÞç²Ö¤(õúë¯óî»ï`í¦!„õ‚¬5)J…††jíf!„õ†\B!„° Ä„B!¬D1!„B+‘@¬ž dÇŽu¶¾úlÜ›óË w|™õш—Wpìl’µ›Qkäæ1tæ2M_Ì䯷vs„¸¥ ĶÃZÿÒ×O/½Tš–~ü8[y„õ]ºðÍý÷snëV%ªÕ4kÖ,ÚµkWgë+OlÌϬ^<›ù¯>Åö¯WÝÖº³ó é÷Üû$§]¿ÔÔ̾©R9F“‰ ‰óxê­5>y¾Ì>O ·‰k•óU¤¼2k“7ÿÌ;«·×Ùúê*{;=ß™Ä?Æö¯V~¥i—s™:ÿs‚#ðèìUœˆO¶(ßöƒ±ŒŸ³šžÏÌ/ÓžŠÊ¬-i–¨ì\w³sd}¢Ø±à… }ø0£¦ûœ9¥Û÷¾ø"^½{3êÐ!î~õU~zé% .]RªZQE£GÆÛÛ»ÎÖW»ôè3”vA·½î{bèÖþ.š4r êãmÄ&¤p)3‡ÙnárN¾"u ¸§:*RÖ­,SˆÚæ_kvÐÈÙžNáÁ{;2ëƒo0šL•æs¶·ã©Ð ìVö?£•Y[Ò*bé¹îÆsd}¤X ¦ÖéÐØØ ±±A}emD³ÉDnb"Íú÷G¥VãŒZ«%7I.Ñßn ,À××½^[† •¨/%%…¨¨("""ª”v£»Zu ¥_gll-[wS)&“™ÏwaÌ€»K·M݇Ÿâð©ó,Ú°‡ð¡½pv°«Q=Ÿîø•¡3—qoø|ņ+*3!9§ÞZCŸ©ï1húb–}³Ï¢2Ç%ñÈ«+é÷Üû,Þ°‡àÉÿábFviúÐ™Ëø"ú7ü„ÐKxuÙ&R3s˜þþúL}ÿ±”mþ(ͳjËzi)½#0êµÙsô Ä'3tæ2Ö~­?Ÿ`èÌe ¹Œ‚¢âJˬ¨-7SY}¿ÆžcÄË+™²õ?®´P2¤¹èËÝLš»ŽÁ/.¾._Eâ“Òxúµ„LYÈÈWV²ÿX\ú³ÓRytö*úL}wVogð‹‹9uþbi®–øÂ"â“Ó+í{uTö{¨ì6Ïn IDAT¸”§°ØÀÞ˜3<6¨z–Qý:““_HÌéD.çäóà?–s&€Œì<˜±„ãq%ýíÖþ.‚;µÄÞÎÆâ2kKZe,9וwެ ÄEFòUHÑdÅ•|¸¯_ç¶mÃT\Ì…ĦaC\Z·VªZa¡iÓ¦OûöíïøúvïÞMXX~~~ÄÅÅñôÓO[”V]§OŸF¥Rñé§ŸÖ¸¬kí<| W§´ô*ÝöG|2 Éé4r²Ç`4r(ö& –•R«Ô¼üøýŒ ;>× †õïÊÆw&ÑÜ«Q•òU¤¢2—ó­›²ó½çøú‰ÜÛ±E¥å™Ìf^]¶‰Ñý»²cáT´5Ec™ývŒeÑ‹°éßá„?Ü €—oÄÛÝ…í ¦ðþôG˜·î.\ÌÀÍÅž%3ÂØµhSFô敥ߒWP„Ÿo6¾3‰GÞàîíÙøÎ$6¾3 [½®Ò2+jËÍTVÀ±¸$ÖþóIæNÊ¢/wSTl¨°Weå°ì¥1|ð£¯ËW‘W—o¢›ß]ì|ÿ9¦‡õáå¥ß’•[PíþUvÌ^_±™÷´cç{ÏÑÌÝ…ô¬¼J˳¤ïUUÙïÁ’ãr£ÄÔËM&¼ÜœùÏú¹”™‹wcRÒqv°ãÕ'îçÍ¿#¿°˜·?ùžá½;áß¼âu•+*³¶¤UÆ’s]yçÈúH‘@¬ãäÉôY¾œ¾+V wp :<Ó•Å£»ÎšEÂwßñi` ?ýãt{óM4¶¶JT+n±ùóçãææVæ5vìØ[R_tt4;väÅ_¤oß¾$$$°råJºtéRaZMéõzÚ¶m‹““²—Æ?Ýñ+aý»^·-!%ƒ7Ÿ~€»š¸91µZEn~a¥e©T04¸#ÁZâæloQª›¯":­†ÔÌ.]ÎÁV¯«ôÀ™ —ÈÌÉgø}P©`Ì€®åî7º_”œ¼Ý]ˆKLãä¹&?ŒV£Æ·‰+=:4gßïgíÙ/7gT*èØ {;=‰—.WØ–ÊʼY[jjXp6:-Aþ¾¨Õ*.fäXÔ‡þ÷” kùz6B¯Ó”æ»™”ôlN_HeìÀ{P«TôìØ/7gÅž«vÿ*:f)éÙœM¼Äè~]P©à‘~]Ðj,ûÓRß_uYz\n”_TŒV£¡ ¨˜-ûsáb¶zù%WÙ‚ü}éÙ±9Ïüki—sÿ@÷JÛRQ™µ%­2–œëÊ;GÖGŠÌ¬ïÕ»wéû ÈH> "#6—Ö­Ù9aþ“&Ñü¡‡H;vŒ] \»§æÍ•¨ZÜB'NdÔ¨Qe¶ÛÙÕl(íf.^¼Hrr2Æ # GGG‹ÒjÊÇÇ‡ØØXÅʃ’a¸ä´,úÝÝöºíÃï뀟¯Czø+Zïí1<˜ÅöðDÔ'èµZ¦ŒìMÿúy£Œœ<\ìP«J–·ul`‹F]öµ‡ëõÁpê咠㉨OJ·åÓ²iÉ:¸ßÿËêmÉÈÎC­V‘™“ÁXñý+••y³¶ÔÔµÃ2zÕûl*ëƒÍßWÕÔjui¾›ÉÌÉG¯Õbo§/ÝæêØ€ÌîÏ©Jÿ*:fWëk`[RŸ^«Áᆡ¸›©Îﯺ,=.7²Óë08ÙÛ²}Á ¾Ø…íß¿—‡{wbý‡™õø@Ôêò–p¶¼ÌÚ’V™ÊÎu7;GÖGŠ/q¤ÖjQ©Õ˜F.Ÿ9CnR-‡• ÷ÎqjÞœ”Ÿ–@¬Xºt)QQQe¶4Hña<€Q£F1xð`>ùä&Mš„Ñhd„ <öØc¦¹»»+Þ–šZ·ýWéÓù¦Wž|ûPŠ»‹o<5€$êãmôëÚU:”üÁ3™Í¨U*²ó ʽá÷Æ"Üœíql`Ëg‘O•Ù7%=›¨U[Yò0Úû6`ÐôŘ¯þPÁu?WVfEm±DyõUÄ’>T•³ƒ-E¹ùE¥AGzvI |c[-UÙï¡È` ¿°;Å#9×\ùÐhÔ¥¿k³™Ò¡GKú®V«,º1üFåý,=.7òrwF£V“œN /7L&3.fr—GÉ0¿Édæ­ÿmct¿.,ß¸à€–4ªäÊsEeÖ–4KÝì\WÙ9²>©ñ(HOçüŽfdP˜žÎ‘yó°qqÁÕÏMš R©ˆûæ0›Éˆ%óÔ)||”h»¸ÅžyæŽ;VæµhÑ¢[V§££#ÄÄİtéR:Dxxx¥i1›L ŘÌ&Læ’÷ækNîùùù„‡‡­H.fdóÓ±³<|å„u;˜³dd—ܤÕhÐi5a-½Ýp¶·cãî>ûáˆEuµðrÃÃÕ‘6ÿL±ÁˆÑdâðÉó\HÍ$¿¨VCsÏ’ûØö=SÚ®«:6 .1 “ÉlQ™5U^}±¤UÕÄÕ‰^n¬ùþ f3üôûYþJͤKÛfÕ.³¢cæáêH˦î|öÃaÌføâÇß®»ªÕÔ݅߯Ü̾çèiНÜhIß›5nH\RZ•Ÿ,.ï÷PÝãb£ÓÒ+ %«·Ä`4ñEôìíôt¼r_ÓG[~Æ¡-ÓÃú2ü¾@"Wý=E“Éd¦¨Ø€ÉdÂd2]yo®°ÌÚ’VuýYU5¾"f69¶x1Yññ˜ÍfÜY²µ^­«+÷ΛÇÑ… 90{66ÎÎøOœˆç½÷*ÑvQþþþäææ’˜˜È¸qã°µµeΜ9ÞïåèèXí!ÀêÔw£^½zÑ«W/ŠŠÊÞ¼[QÚ~;°“¾ý{Hå÷ƒ»0ô :õ //¥K—ÒµkWBBB,nßÍ|¾ó»ùád{î… {ã#ò ‹¹”™Ã+6£×i™üp0ƒ‚ünI™1gþ"êã­äÓ¸¡#³¯\«ˆZ¥bÎ3¡Ì^¹…¾ÞËÈ>èµT•EpÀ¿ŸÆ¿Öìàþé%ÿhÛ̃Wž¼ß&®Œ dܛӨőÖÍÜñp½þóÚ·k¶ì?Π£×jøbÎlõº›–YS7«ïf,éCuDM %jÕ6Ö|7g{"'†Vzå§2³NÂë+6³ê» îÞW§¿ŸP~úÁ¼²t?:I×v>¥C´–ô½eS7†ôðç¡—–¡RÁ¦‡[4ìy³ßCuËŒ±ý™½r3}¦¾‡·» o‡?„V£æx\Ÿï<Âê7žàÉ‚˜ðöZ>Ûy˜Q}»ðeôoÌ[÷Ci9÷üÎKã0ü¾N7-³¢úî´´êºÝçÈ;]ygA]RRR‘^§Åµ‘[9ÉBÔ-Û·ogäÈ‘ÄÇÇÓ°aÕUPTÌC/-cÙ?Âðõ,ûÄ¡(QTlà¾g²óýç®»JÔ ƒ_\ÌÂi#iÓ¬±µ›"î0õ噞v‰¢bžžž#€| ïÊ+÷š÷ù@ Ίzo×®]<÷Üs5Â.fä0iè½uúS]¿ŸI,ÖàÛ}Çðoá)A˜õŒœ#ËRüf}!j›òH¨.†øxÔ< «‹N_HeÆ¢¯hêîÌkã+ÒBÔ-rŽ,K†&…B!$C“B!„µ€bB!„V"˜•L˜0///¦OŸní¦!„ÂJ¹GlÛ˜1¤ÅÄ”þìJϹsH9p€ƒQQäþõNÍ›ô書ú×¾e]n…””<==ÉÌÌT|C!„BXGUîSì©Éà… ñ @¥Ñ`,(`Ï /Ð套hñÐCœZ»–=Ï?ÏCÛ¶•îSŸyxx ×ëÉÎΖ@L!„¨‡šTëthllÐØØ Ö–Äw™§Oc6h1t(¨T´yôQ 33I?qB©jk=•J…©k© !„¢öS,;ÉW!!DGDWºÝl4–Ù7ûÜ9¥ª­õ¼½½Ù·oŸµ›!„B+P$ë8y2}–/§ïŠèˆÇd0àÒº5jþŸ½óŽ‹êØâøoYvaé½H[ƒŠ‚k|j4&KУQM!FS$/&KÌ‹&¦ÈSã‹hT¬‰•X£&Q°+ˆˆ…Ž4© Ëîž÷ÇÂÊÊ6v)–ù~>|ع3sÎÌ™™³wæÞÉܹ$•"}Ó&HÅbHE-;ÀõqfÙ²exíµ×ÐÑ¢0 ƒÁhgZÅë4`¬¼½aíë‹°… QSXˆ²k×À51A¿o¿EZ\¶‡…¡äÒ%8gaÑÅ>ÌŸ?+W®Äµk×:ZƒÁ`0íL«qddl Ž‘‘bIÒ%<£öîÈÄbü6p lÙÝׯ_ǰaÃ:Z ƒÁ`0€ÁŽXmi)ŠÎƒSH@„«?ÿ Øuí (KO‡™“d .~ÿ=l»v…¥Phh± R©ÆÆìÈOƒÁ`0žD öH*Å•ØXTܾ "‚C´jŒø|@ÁÉ“¸²z5H"k¿~è·l™ÁB?N¸ìU ƒÁ`<‘°C¿;k×®!((011éhq ƒÁ`´òBWF˘:u*Nœ8¯¾úŠ9a ƒÁ`<¡0G¬ƒøßÿþ×Ñ"0 ƒÁè`Ø¡ß ƒÁ`0sÄ ƒÁ`0:æˆ1 ƒÁ`tÌc0 ƒÁè ZÅ“‰ÅHY´;""°58IŸ~ªˆ«-.ÆŸÓ¦akp0FFÉ•+­Q$ƒÁ`0 Æ#O«<5yþÛoQ–žŽa7ÂÄÖ·o+â’.„©ƒÆ:…Œ­[ñϬYxáàApØKL ƒÁ`<á|GL&‘ sçN„/\«Îabk Ç^½ÒÚZä?ާ¦N×Äþ¯¼qUŠÎŸ7XpƒÁ`0ŒGƒ±ªìlñx¸sàvôí‹]Ï<ƒÌ;äq¹¹I¥°pwǹ¯¿†¨¨–žžJwÌ ƒÁ`0žT ^𬝮F}Uj 0æÄ ”\¹‚£S§Â¡W/HD"C"áæîÝp<Ʀ¦ÔÔ´†ì ƒÁ`04ß365I¥è:e Œø|8Ã>0wSR`,@&‘ÀÄÚãáܧ$µµ063k Ù ƒÁ`0i vÄÌÝÜäï9÷Ï'"€nn0ârQqë–<\*EeV¬„BC‹e0 ƒÁxä1üŽ˜@—¾}q}Ó&TŠ’+WPzõ*œBCÁ55…Û AHûåÈ$dlÙž¹9zöl Ù ƒÁ`0iZå=ba à^F¶‡‡ãïèh„~ö¬}|½?û 5……ØÞ§2¶mCÿ+`dÌÎg0 ƒÁà¨ãåçç‹ù™¡‹Fý`Ó¡l=zÕµºÚã뙑(­¨ÖXŸ[ŽœEü‘³(¾W…ïÞ‹>]½ùi²%m²¨B[ÛÝ«ÂW¿Âùë9°˜àݱ0<ì¾ã¯ªžîÑ&£¤¼Ý:»B"•áê­|¬x,½]5ê§Iu6aˆêlÞ:€³×²ðÅÚý(©¨ÆÌû+tФ»>²P«_y•¯~¹‹ßz=|:¡¬²¯~¹ÿy;Þ®ZÛV•í:ÛYªí¢ZñCc×0ê£U{Jˆ›yŨ¬©ÃäçÂ0*¢ýmISÛjB—9GÕ\Åh;xùùùTR\DºP~ó&mïÛ—.ÿ÷¿´=<œ~<˜nlßÞìºä… éôüù:åù$q8ùM^ô«RXJÚú$vMø|}¶f/íýç2Ie2­yí=y™r‹î‘LFtâ|õŸùU‹êˆˆè…OVÓ¬;¨N\O×îЀ·WPVa)½² ŽVïú‡¤2¼”IƒÞýžÊ«DŠ|_ød5½õŸxª¨–‡eß-SÄýoß)úê×C*åÙ~ì<ÍZ±C­¼ÿÛwŠæý¼O«^ü{õ^ú~Û1’ɈDubºr3¯Y~ªdÑT/cb~¦%ëÑ­¼bê?ó;ªדT*£ç?^E¿¿@2ÑÊßþ¢>Ó¾¡ÂÒ ­y©®3myj£°´‚úÍø¶Yø˜˜Ÿéræýº:ë'º•_¢Q?"¢}'¯Ðè¹kèvõWnæQ^ñ=­õÙÈ+ âètêífaêlI“,ÚP'Ë”ÅiyüQª—HéV~ ýëý)»ð¾}ªj‡„SWiÚW›¨¦VLÞ^A'/ߤõœ¦ï·ÓªŸ&´Ù„>:h³y}êlLÌÏôáO¿S­¸ž’®ÜRÙªt×WMú%]¹Ec?]K5µbúhåï´vO¢Né4Ù®¦þ ©^4éÞvý܇ÿ¥/ùƒˆˆî–UÒè:èkKº´­*t™sTÍU õ”Q~~>`€B<@À €%žÁK“õÕÕ¨¯ªBMAÆœ8§—-CòâÅ(ÏÌ44ë'‚-GÎb¿B”Âî–áËiÏÁËÅ §‚‘Õ¢:­yŠè†NÖàp€=}a.à#¯¸\?vpOðyÆð÷tFP7œºr …¥•¸‘S„W†…ˆÃAD÷Îèä`”kYJyG †¥™)ÀÝÑF'Ý*«ka.0Qo)0Aeu­NyϘ‹¢{U(.¯‚)Ÿ‡@oÝöHi«—…„®öàó¸¸[V…Œœ"TT×"r@p8À+C{·(O yi˳­P¥ìK¼‚W†‡Â«a?L ·+\íõ_öÔÅ–ÔÉ¢·òJžUˆ™/ö‡1×B;ôíæ“—o*]§ÊvÝm 0áÁÖÒ žÎ¶pµ·BiENåªÓA›h©úÚ¼6F÷ïž1Â…02âèÔúÈ¢M¿°@!"º{ã­ÿÄ£¤¼Sž ×)]kÛ®&ÚÒ®‡õ‘§s´±@·ÎpêÊmúÙR#ú´­.sŽª¹ŠÑ:¼4ilj ’JÑuÊñùp †}` (þf¨æê­|”T`Ho¥ð1åKV]…΀‘}uÊïЙkØx0e•502âà^•©Loki¦ølgi†òªZÜ«ol s_)îÞûœU,/jÃ\À‡¨®^m|M­X££ö oéØßþÆë‹~ߨ=PwªÐV/žâ³‘‘$2Ê«E°µ4ƒG~«µ…\##óš×™¶<Û Uú@Iy5\õhWuèbKêdч¢rùóú¢_a¢ºzø¸)Ÿ‘«ÊvŒämÀ5â4ü5k?u¨ÓA›h©úÚ¼6š.;ñyÆ:µƒ>²èÒF/ÂÖ£ç3i˜¢]´¥kmÛÕD[Úµ…ÙýñÏB`¢ÈS[jDŸ¶Õ6稛«­ƒÁŽ˜¹›8\®|ÓODšõcOüá³?¸Œ¹ª'ã×G„éœWai%ÅÀª'à)¡ àÙÙ±ò¶h ¬òþ/þÒÊz»ÂÚÂb‰Õ"±b )­¬ÍûTßNjÚZèjÇ.¨•ùNa©ÎûÃù¯Æ/Þ8š’ŽEëbHˆ¿ÂôTÉ¢K½¨ÂÆB€ª&¿Euõ6 hºæù`iÊÓ¸\#E>DrWì­Í‘_ªþé'Mm« ]mITÉâ`mK3Sl[ø†Ö´m.6¡Úl^-m?mè#‹6ýd2Â’ 5$?ï>‰þ=|`om®5&ÛÕÖ&»nz¶´²½ÌMõ¶¥Ö@Ýœ£m®b†Áµj,À¥o_\ß´ $•¢äÊ”^½ §ÐPI¥ÖÕd2L&ÿÌ6íãnY%¯ÜÄ‹uß°­ ‘¸’ÓäˇÎ\kÓ< ÁÍÑ—3ód¹z‰nýë¹¾Øt0Y…e䛼óKî/hj[UjKšP%KçNp¶³ÄºýI¨—H!•Ép.=9E÷ .¯¥èbúè Íæ5ÑÒöÓ†>²hÓo]B,ÌL1{Â33°'ÆÐ)&ÛÕÖ&»Þy\>&_»Sˆ«7óè­·-µ­=W1šcð1[°§>ýÛÃÃÁ·´DègŸ)–%3¶nEÊâÅŠk3wì@è矣KTTkýȲýÏóÖ§+¬ÌM[%?¡‹Æê‰W¿\'Ktñp„³ò#ØBW{ŒŽù2aö„gûe½9 ‹âbÓ¡8X›cáôQ:ÿÚ{&Ä §®âÙ9±às±cñTÅÓ;†…àHr:Æ?ÓK)]êí˜ð[´çåRf.­?Q]=œl-1¿á×¹&Yt©Uq°øÍçñÕ¯‡`Â3†›xÆ\ºÕuKó4„iÏ÷Å¿WïÃÑ”t„xêô„-ŒzºÊ*kðÎòm¨¬¹ÿäY#êÚvÂë ª«Gñ½*|±v?øÞýy'¶þs^gy[ ]ë“Á`<™Ø[šcã¯"ÜÏ æ¦|\¾“âöàÏË€Ûk>‡—ãýÍî¹%åpŸ6_çü§í‹5o¿„ƒç¯áÙ/WÐoüÌ,(Fò7³›]3þ›8ìH¼¾1_OzûÃÎÒ Wî ìãïPÿ¼|]“îê꺻—+âgO‚À„‡7~ŒÇ‰«†­Ý"GL"•±ýbíÌõÜ»¨­—ètmm½×rï¢NËõ-ÉSÎ6ò§·üs;/j½žÃá`Óì×PVUƒ[bx/|;e4œ»†´œB¥k_ ‘¸;OiÏWúØ®®õÉ`0žLl-ð°·Áûÿ†T&ÃìaϧÓà>m>îUËÏXùæXôêìŽÂ{•øú·£XùÇ?XôÊH¼Öf&|ä•–ãny†ùã•ï~Åî3Wô–…Çåbé¤QxmPoX› p63QËÖ#»w£Ú:OsÊ6.ÁÖÎcÂò ˜?áY|5}?Y¡“Æö“ì\®xIëö&&.߀-î^*EµHË)ÄöÄ 07å#ÜOˆšºæç#¾?j~Jø©L£œI×卑A@½ív÷rEʲ98›™ˆ¹ßã»7FcÖó1ù‡ÍX,Y¯úd0O· KÑ}Öç>:Z[àýàíl‡ó7s‡/¤cî¯ûZœ÷ÓÇ éúôõ*Âô?³ŠÊðîš®‘²×~ëyE8•~&û4üÝœp:# S~ŒGÊlÀŒUÛ1åÇx\ÎÊWJûúàPìM¹Š·WïÀÅÛy07å#aÞ›èÒÉ_í<±D‚-s&¡§·›F}\ðÝÔѨ“H±=ñ"ÞÖWgefŠŸ¿/';Äüº—ïäã§7Çbx¯@—NŽX,Þ¨Õ!»ä^¢·,ðåË#0û…AHË.Äâí‡q¯Z„NvÖZÓµwžêÐÖ~oü´뎞¬üãLù1^§¥Éñÿ‰Cÿ§:ãÚO1˜;fÞY³wŠÊ”®ÖÓB';ü|8IgyUÙ  Þv/ßÉÇ—[¢¯¿3†G`æ³OãsiÌ c0:!•ÉN˜‡ƒ¾þBÜ«!=·HqÍ»#ûC¼c.ÿ1w÷Õ)ßQ½ñ\ÈS˜¹j{³8CÇÏ‘!]ájk…uGO|]`fÂG€›Ê6.Añ†Eøí“7žˆ¾µé®®®—þvß½1{ÿ= _n;¡“½2ŸŽû—^rè|Gìè¥ë0æáïNPŸ|# ÿ=p¦|côõÂÓÁ‡/¦ãVa Fõ~ ½}=°éÄY•{ÄVþñ>Û” øÙ§œm,ññú½øfן8|!ÿ|—ã­\µ2êæ # ·Dì'ADødÌÀˆà®p°2LJq»ñËÑÓØuú2F†|†‰ýƒ‘SrEåUøaß_ø"j8~?} \##t²³Â¿zøé% L~¦ îUbØ‚UŠå­¦ÇüèC[䩎[…%Ûoñdð¹˜2¤Ž_¹¡t—°‡°ÖÌ|Iñ}åÿà×ã)àp8ˆ}k<î–WáÝ5;1ip(¾žô<ö&_E~Y…âúYÏĆãÉ-º•¯ÊÓsïj´Ý¯?Šû#ö­q¨ÕáÍØm-­&ƒÁÀò)‘èåí†W¾Û¨¸Cu.3™Ű˜àµ½±çÓið¹…÷*Õæcaj‚Ø·Æaþ–ƒ¸}·T)®5ÆÏ7†„A*“)~pZ ägH¸9ãÝŸwâ_=ü0."úc㉃ëåaF“î›þ:«¶®ÿ8—†No|Q½1¤Gøº:àçC§p³°‹_y®År´Ú ^QS ¨—È\#UÇXªæAcsµµdn4üo W‡… #O~ýõ¼û¿JÓ.›‰²K¹ê3¥p"@Öðˆ Œ¹FzËÂápàbc‰ôöIe2éÚ;϶ÂJ`Š0?/ÅŸ[Ã]»î^®èÕÙ KvÁúcɈ^ûlÌx>4P‘ÖßÍ Ãzúãû}µ¨L}lP"•aÃ1¹ƒxäÒuä”è¿lÌ`0žL>? ³žˆ~Ù…ø¿Ï)ÂÇ|ý >Z¿3WmÇœ¸Ý°05ÁšÏ×ê× ®¶Vp³·Æ²É‘0åÃßÍ “Ÿécðøédmçz?…?Î¥)7‘¸p.«&âø݀^µ¯ú<êhÒ]S]ôÁÓÇ€ˆðÙæ„ûy!qéûx{ÄÓzÉÑ.OM6ž3ÈQ3/>xaAï…Î.òó­|]ä‡7õøUQV-÷þ]l-•þPüùjçº~?MU Æ?ÝSe~G'Yœ¬-à×É y¥å¸YXÒ ¡à^%ü:9‚oÌ…X"ßõhÄá(¾–Òy6¦k¼«j½[[û©âŸ´›*7Ç›ËMΔ'ÿoÆçËÃy÷MqÖóqð|:Òsï¶HN}p¶±ÄçQÃPVUƒ1á=0¤‡Ž^ºÞ*y3ŒÇŸ÷G À—GàøÝ<’Žc4kc®Þ5@&t²Ãè°î¸šU åãg#¯ ê —‹_–%àfa dDà7ŒÍy5:)3št×4WL»…¿ž”\0ñYTÔÔâÕ±÷ßÓõ’C'GÌÚÌ/†÷€QÃLìé`‹ÉÏôAYU vŸ¹¢5ýÝò*À¿Ç ŵܻ8|1]ñ´†*_LÇÝò*Ì3æ&|Œ‹‚T&Sú¥¡ŠW2AD˜ý Ԋ%˜1ü¾wzàü5”UÕàÕ½Q]+Fu!>îHJ¿£1O]dòÖ½7+ÿøG±!/Ý}üâ3øãó·päâuôõbñŽÃ8}]s™šhí<+Eu¸W-ÂÓ];cB¿^xI…SÚÒöÓÄå;y(®¨Æü ÏÂÙÆcÂ{€ˆpüÊ ò»š“õFd“‡At•SÚl7ö­q°1 ô£o±;fÖ¾…nïêÚæ›_ £)ýºvÆwoŒF^i9º¸:bÕŒñ€ov׈ƒ•oŽÃù[9°³0CT¿^¨ÕáÈÅû?ôF†tÅžO§áëßþÄ¿7í¬:˜ˆU×ÜÛô’ÒocôWÿƒ)ÏX¯ñ³‘)Ï„ányö%§*Â*jjqôÒuŒ éŠÿ¼þ¼âဃ篵j]=ŒhÒ]Ó\ÕtŠkd„z©¢ºz´à^…:-MºÚZaÝ{{lzuvú÷&ê¼{à\º‡9‘ƒ±î½‰èîéªñúêZ1ž[´7 KðïñC!àóðÊwO¡¨##¿ÆíAgg{|ûF¤’!•UÕ`ø‚Õ¸}·Ÿ½4 _½6 Oy¸4{ä·µd€y›°bï ôðꄟ…‹­¥Ö»zí'áÓûaaÊÇâWŸCrFv³kZÚ~š¨­—`Ì׿ ·´1cÿK ¦­ÜŠËwä¼9¬/n–( VºÊ© M¶Õ¯Æ„÷ÀÿŽœÆù›¹øls„NvXúÚ(½õc0O.¶–àp8èdg·†G(þ\m­P)ªƒµ¹)Þѯ Åå;ùxöËÕŠ¶€ü)x®‘$2ÝÞ¡ïø a~^ôtÁÆ)ÍÞ6õ§-8~墟¿NN˜½nþN½i@Í<:¨Ó][]7²2áx;ÛãÐü˜·ù½dPåÀñòóóÅ|ž1ììåËpìÝaíÏÒ×Fá“1C •Éðñú½øvÏq­iÂü¼pò«hpŒpâj&}ö“Áy¶'Æ\#ÜZ= ¶ÄÚ<-ÙVh«OƒÁ0„ŸÅ¿Ç …ÿ;_)ö!ëËÃ6~>©4ž5YZR q½®®®cˆÔ4üU7ù,PÛ.{Ä-绽'°ñÄYÚ÷Æ5révz~° P­â½2úäÙžt²³ÆÚÃIØxüáxRG[}2 †! ôÅæ¿Îì„ßøÉÐG¦“Í_îÉ`0 ƒÑÞ<wĺ¿ÿµq­ñ«‚Á`0 £½ÐÉÓtŠÁ`0 ƒ¡ÿ ƒÁ`0)-vÄzöŽ­FD011AFF 0tèPtïÞÉÉ÷WwáÂp8œflÙ²}úôÇÃŒtÂnݺ5˳¶¶VoÝ­¬¬pûömÄÆÆêG{!‘HÀixpxx8Ž?Þfe=Jõò8`hÛ¶Ç8¡ ‹-jQ6±XŒ˜˜œ={÷îÝCxxx»•ý0ÐÖíÞbG,* pwo Q@2øVVòË/}ì{öĉwÞIu{á_{bbcƒÀ3à5rdG‹b0QQQpocÃîÒ¥ ²²²” “Éàíí·ß~...(++Ão¼qãÆA"‘Ÿ)ª..(("‘HñwúôiØÚÚbðàÁäÎßgŸ}† šx®‰sçÎA$ËåâäÉ“‰D055mŠ`0QÚcœx)..ÁÛÛ»£EéÚºÝuvÄV¬„B€Ïo¾4éë Ì ô︸?ü OI‘§Y¾Ø´IþY(jš/±±@HˆÜÁkœ/ÒÒ€ˆÀÂðó~àk%1ð÷¬­?VŽËÍF¬¬`ófyøÆ@Pàì DF#FööÀ™3†ÉÈu÷ô”§ ²µ¼ÞˆÇC¯>‚µ¯/LíìÐuÊˆŠŠ *Öí‰Ð´¸8ì2Ûz÷Æ—^BMül²Š›7qè•W°­woì9ùÿü£»jp‰ˆ€ûàÁà[Xœ _ÆLKKS #"ØØØ ''K–,§§'ÌÌÌ€½{÷*]+ ‹¸»»+œ___Ì;ýû÷‡‹‹ ~h4PÈo· …Bðùüf·ž5¥;sæ üýýaccƒ˜˜˜f·º³²²€„„EX£#–““‡ƒ]»v!++ B¡õõõØ·o>ù䘚šâ½÷ÞCyy9!‰ÔÆq8˜šš*þ6oÞŒ¨¨(˜˜ÈÏâ:t(^xáX[[«¬sUrŸÏW8^M?k«X¾|9<==aaaÐÐPdk3z4_NrppÀµkò“1áïïkkk|ü@§ÎÍÍŨQ£`eelnìÔZÒé‹&9ÓÓÓ+++8;;ã‹/¾ÐINMhJ§©>>4½Á@SSSI ¨©QPP~À°Õ¥“J¥äííM+W®$™LFóæÍ#JzfddŠW„}ùå—M{öì!wwwš7omÛ¶FŒAW¯^%‡CUUU4kÖ,ÊÊÊ¢Z³fƸ¦ÔÕÕ‘ƒƒ:uªYݾóÎ;ô–ŠN¨JΦp¹\JNNÖ©^ˆˆâââÈÛÛ›®5}RRÝjbôÛ·o§6+ÇÇÇGIn{{{JKK#‰DB´jÕ*’Éd£T×}úô¡èèh‹Å”––Fvvv”‘‘¡5&d2ýüóÏDD´{÷nÊËËÓ*'QTTÍ™3‡d2UWWSRR’â:urj«Mé4•§)N>>>I555tðàA¥¶Õ$‹º¾©oû5¢®O뫃¦¶ÕUã„!u­®ѼyóH*•ÒþýûÉÒÒ’JšL: .TÙŸµ¡®>µµCvv6™˜˜4ËOßöÓ”Nßñ¥-Æ‚FZ2?4RR\Dùùù` €ð!'–x­æˆ9rÿ»ÜÁiD›#¶c‡rXV‡CT^~?¬G¢íÛUçÑȹsDr‡‰ˆ¨¸ø¾#võ*GTUuÿú—_&úþ{¹#öê«ò0¡Pî nÙ"ÓW"¢AƒˆV®Ô|&G¥®¼œvFwÔ^yýuº¾ys³ðêü|ÚHâÊJEØþÑ£•ò}±o¾ù†Þÿ}‹ÅäèèH—.]¢Í›7ÓØ±cU^ïììL/^T|÷òò¢É;Ì‘&jcc£4X©ïhªÒ]¸p,--IÚ`h¥¥¥:uìøøx=z4-X°€,X@Ï=÷-[¶Œ¢££éÌ™3Äçó©°°ìììèÏ?ÿ¤þýûÓ·ß~«1®)Û·o'???•e«sÄ´¡ÎSWŸƒ ¢•Œ¾¥ŽØ¹sçÈÂÂBQ×ÅÅÅŠº¾zõ*ñx<ªjÒ©_~ùeúþûï5¦3MŽØ¤I“hâĉ”Óðã§Mr6¢ª^´¥SWž¶8múíÛ·OñÝ‚222tÒ¡)}SßökD]ŸÖG‡Ö@Õ8aH]«êGYYYÄáp¨¼É¤Ó£GÚÞdÒ1Ä{°>uiUŽ˜¾í§->ãK[-™i‰#Öj¯¯07¿ÿ™Ë¶¶è„§§ò÷âbùÓŽVV÷Üœäáš()£­ìíã†7¥ååÉÿ‡„È6þúëþ2)—{ÿãŸD¢¿,Ÿxyi¿NÒÚZœxçt~ñEx¦SQq1Ì;uj^WV®‰ xM–MííQWV¦ŸpmDxx8RRR””„N:áðáÃHIIQl GHH<<<  Q\\Œúúz¥<<4¦Ì›(—ËUì½Ò†ªtEEEppp€Qƒ¡ÙÚÚÂØXû+ù—&/\¸€ &àÎ;ÈÊÊB—.]`nnŽúúzØÙÙ¡¤¤ƒFMM ,,,4Æ5å—_~Á¤I“tÒËPÔÕg~~>¼ô5z”””ÀÑÑQQ×öööŠºÎkèÔ!!!@@@þúë/ÔÔÔhL×V,Y²<½{÷†··7¶mÛ¦UNMhK§®>>زe †Žúúz\¹r!!!¨®®ŸÏG×®]{öìAQQ‘ÞeB÷îÝaooŸþðã?6»&++ ¾¾¾ØßÄ(,--Áåráàà‡ƒÐÐP$%%¡K—.5j¾ùæÔ××#66VVVèÛ·¯Æ¸FÖ¯_þýû7ûõ)•JQ[[ ©TªôY“œ€üqõÆ×U4ý¬I“&aÙ²e¸Þ`ô)))¸ÝÄè»té‚ÔÔT”””(¥óññÁ©S§ÈÛV,+êÚÒÒG:õ–&:00X¼x1Äb1$ Ž?ŽÌÌLé Aœ°ÿ~ܽ{ÀãñÀçóÁáp4Ê©©^´¥SWž¶8}Ð$‹¦¾©oûé‚:ÛmoZ»®===Ñ­[7,[¶ D„„„dff*½gÎÑÑ©©©*Ô´}Û¡½ÓêÇ—Ž Z±À@ùŽ©©À«¯Ê?oÚ¤[ÚqãäÿåOFêò€G|>^éŽØ¸†IÕÙÙîîî:?5©}Û¡½Ói_Úb,Ðg~ÐUn;/??_ÌçÃÎ^‡õ7†A¸»»#))é±}7Íã®ÔÖÖÂÜÜJ{ ƒñdRZR q½®®®cˆÔ4üU7ù,PËΚd0ôàÔ©S(,,¬[·aaaÌ c0 F‹i—Íú­‰¦;˜Ó¦=zoýŸ={¶ÒÓ1«~—.]ÂèÑ£ADðññÁºuë:Z$C+𖀦M›öXß¹f0VØÒ$ƒÁ`0 F+–& ƒÁ`0˜#Æ`0 ƒÑA´¹#öà!¹ …prrRzÇKkѳgÏf>Œ<*r> 4=0÷IçÁƒÒ ãI¤Õ±E‹aF Þÿ¨•§ +++ܾ}±±±z¥×¦CLL ô¯ÝP'gk·Q·nÝÀáp”þš¾Ûêa° ƒÁ`0ZÂ#÷Ôä“DTTTG‹ í%ç¹sç “É`aa¿þú ÁÁÁ055m—² ƒÁh ¾#–’’¡PˆåË—cÓ¦M … …Joú=vì|}}aii‰~øAž››‹Q£FÁÊÊ ؼys«”' ‹¸»»c„ 䇳zzzÂÌÌ Ø»w¯"¯¯/æÎ‹þýûÃÅÅEIÎôôt„‡‡ÃÊÊ ÎÎÎøâ‹/tªuåiÓaÅŠ …àóùÍ–üÒÒÒ øùùáÀ:é ‰—gviÊSœº´‘>ðù|…ãÕô³¡å-_¾\ñFóÐÐPdggÐß^´WWW899)½å^ŸþЈ:›W—çÆgggDFFbĈ°··Ç™3g¨·³¿ÿþ>>>Je¿üòËøê«¯´ê˜˜X[[ãã?ÖY7ƒÁxÒàåççSIqµ„… Ò[o½Õ,ÜÇLJ"##©¦¦†Q> IDATëÖ­£›7o’L&£]»v‘@  ŠŠ …œÓ§O'"¢ÔÔT%9£¢¢hΜ9$“ɨººš’’’”ÊÛ¾}; 8°™šÊÓ¦QPP>|¸YؼyóH*•ÒþýûÉÒÒ’JJJ´ê  :uê”⻽½=¥¥¥éœ§*9uÑO_¸\.%''·JyqqqäííM×®]#"¢¤¤$ºuëéo/šðòò¢#FH$¢³gÏ’™™]¿~ˆ ëêl^]ž¿þú+EDDPee%™™™QBB-]º”æÌ™CDêíL*•’««+?žˆˆjkkÉÊÊJky‰„<<4 ;;S§Nʼn' @>¹è"³››Ö¯_ؾ};¦NŠñãÇ+Êàr¹J¥-.¯¥ufooÚÚZTTT(&É»wïÂÁÁ°ŒN¡²²Ò üi©~Qž««+îܹÓ,Ü{ÑÆÝ»w•>‡……Ü€æ6¯)Ï7ªÌƒˆ´ÚY¿~ýPVV†K—.aÏž=8}ú´Öò.\¸€òòrÅ÷ªªªÇÊ¡g0 }iµ;bŽŽŽHMMmæ¨#00X¼x1Äb1$ Ž?ŽÌÌÌ6)¯ºº|>]»vìÙ³EEE:¥Ý¿¿bòäñxàóùJ“^—.]ššŠ’’’•×R<==Ñ­[7,[¶ D„„„dffü3œ:uJ!§X,6(¿F4é—••___ìß¿_çüÄb±âuM?ëRž:&Mš„eË–áúõëäÿoß¾m½h#66µµµ8þ¿Ù­nMéΜ9ØØØ &&¦Ù’CVV ktÄrrrÀáp°k×.deeA(¢¾¾ûöíÃ'Ÿ|SSS¼÷Þ{(//Gbb¢"ýÚµkÑ·o_¥IžÏçcÙ²e „““>úè#äç磠 @cœ&9ómt¼š~ÖV/‰‰‰ð÷÷‡µµ5>~ ãjªkMí—››‹Q£FÁÊÊ ØÜØáX¾|¹â4ŒÐÐPdgg#%%B¡Ë—/ǦM›  ! u>|]Y „°°0ÔÕÕ)Êk\vÓ¦ƒ>åijuõ¢‹,êÐÔ~éé釕•œñÅ_è”' ?ýÁÕÕNNNøùçŸášäl«~«Š7"((ÎÎΈŒŒÄˆ#`oo3 ‹¦qISЧ´ÙuZZ"""`aa???Ða’Ó¥¯;v ¾¾¾°´´TªO}mÉÝÝS¦LAŸ>}àç燸¸8Eœ&ôiwmú髃®ðòó󩤸ˆTDtø°r˜ÑôéòÏ©©D‘Ht?~áB¢·ÞR™yy @TZ*ÿ~ãÆýræÍ#’J‰öï'²´$*)QG# ‘‡ѪUD2QL @”-ïÓ‡(:šH,&JK#²³#ÊÈ úõW¢ˆ¢ÊJ"33¢„¢¥K‰æÌÑ_"¢¸8"oo¢k×äß“’ˆnÝR¾ÆÍͲ|€ä… éôüù*ã¤b1íxúi*ºpA» D”¹kí6ŒÊoÞ$"¢â‹©*'‡ˆˆ^|‘.þðɤRÊ=q‚¶…†Rݽ{Š´w¤Ã¯¿®S9ºèP[VF{G"qe%x÷]ºüßÿ6K§©^dìØ±´aÃ¥°ôôtrss#"¢uëÖÑÍ›7I&“Ñ®]»H PEE…âZ///0`•6á#ôññ¡é †ššJ€DM ›ˆ‚‚‚èðB]:©TJÞÞÞ´råJ’Éd4oÞ< ¤gFF øøxEØ—_~IÑÑÑ´gÏrww§yóæÑ¶mÛhĈtõêUâp8TUUE³fÍ¢¬¬, ¡5kÖQqq1uíÚ•ÊËË)22’.\¨²÷ïßO:u"‰D¢Sœ*9›Âår)99Y§z‘H$äááA«V­"™LF111ÍêE]]©o¿>}úPtt4‰ÅbJKK#;;;ÊÈÈ "¢¸¸8òöö¦k 3))‰n5éœ .¤·Ô ZÐG"¢ììl211i–Ÿ¶tú”§É®5Õ‹6Y´¡ªý¢¢¢hΜ9$“ɨººš’’’tÊËËË‹FŒA"‘ˆÎž=Kffftýúuålí~«Š_ý•"""¨²²’ÌÌÌ(!!–.]Js&uã’¶þ`H;¨³ë   š7oI¥RÚ¿?YZZR‰.“œ†<}||(22’jjjèàÁƒJv¦¯nnn4yòd""ÊÉÉ!…}ê¢CKÚ]›~Út().¢üü|0À„x €€K¼V{j2*Jþ¿kWÀĤe䣣[[ùgù]£K—€?ŒŒ€‘#ooàÏ?5çséPVLŸp8Àœ9÷ãRSóç%KO¾ÏíÙgÆô;ËïZ99Éïz …@a¡þ²@\œ<¿¿ü{X˜<ßÖ çØ1ð­­á¤Óõ·~ÿ]'O†UÃ]û=`îæ†š‚”]¿Ž®S¦€cd„NÀÜÍ ìIjM.|÷&MOÍݲ–Ò¸‡©¾¾NNN¸|ù2Ξ=«Øg3yòdx{{ƒÃá 22VVV¸uë–RÑÑѰm0ÂÆ³ù­l@~>¤‰‰‰ÎfU¥»|ù2Š‹‹1cÆ p8|ðÁÍÒùúú‚ˆw6€ûwÄΟ?éÓ§ãܹsÈÊÊB—.]P]] ‡êêjlذ7nÜ€™™ªªªsçÎŬY³`ee¥VÖ²²2¼÷Þ{øþûïÁåruŠS%§¾õréÒ%”••aúôéàp8˜Ó´ãêȃ헚šŠóçÏcÉ’%àñxÀ³Ï>«¸ƒ‡?üþ 3,, ÂVêœ-•Eº¦Ó§»äççãéé©·‹»»»Ev©Ííå—{³Á‡×jðÅÅÅtîÜ€óçÏÓ¶…gCu1†¥ñ“ž±zmÌ.̓9,XÀ_ÿúW"""°³³ãý÷ßgøðáÅõòò28ÎÏÏo²žÍÙnkdÔü­ùÕØÚX¿TPP`´=´D9äååagggð°æååEž%793¸»»ëU*•••M΃«««Áq^^^“óÐÐ~¾¹Ë¡Ù1S( „éðÚ¸»Ci)Þr€.]3{{xÀµk·þ/*ºåúúêFÝNœ¨ïË/ë—'Dãu©IóìYó×5”/raï^"àÌØ{xP\ãÖÂÖÕ•ª²2*ŠŠôÎXi~>ªš!J@ae…¨ªjºâèÞ”,HO'®V…Íùé'®>M¯… %3<<œãÇ“˜˜È¼yóX¶lÌŸ?ŸììlÆÏ®]»ˆŒŒt TÜV!·WÂÀÓÓ“¼¼<ª««±²²¢  À"Ç®}ûödgg#„ $$„6mÚ°ÿ~ýSŸ ééé„……QUUÅéÓ§ åÀüöÛo#Yß~û-ÇŽ#>>žŠŠ žyæÂÃÃùÛßþf¦©°æÆÃÃkµnQQ‘Åo ·—Ÿ¯¯/nnnœ¨¯Áß ?k¢q*Š:u¤¥t1†¥ñš+½š¸õÙ¥)2MáççǪU«Ø°aãÇgذaµÇK—.GEEµˆžm·ÆB˜ì—Lµ‡¦æ¯¾zíîîNii)………zGæÒ¥KxXr“3"ÓMÍCíµª/^䡇jrLQ_þš»žÝ‘ºzzê¦-½—@§N°p¡ÎÚº22 o_Óñ:wggøñGÝÿññ·ÂÂÂt ôçχòrƒ¶s§NnSuÉÊÒ½°`wÌ]¼“'uÿ§¤@f¦ùü‹ª*ªÊÊÕÕˆêjÝq-ãùö[<ÃÃqôõ5/ì&C†¶r%×o*påøqŠÏÃÑ××ÒV¬!Èݽ›¢ìl¼ovÎmÛr-#ƒ²«W-NÏXBbbuü¸þ§~ôQºL™Òh' ÀÞÞž   âããéß¿?;vŒððpŠ‹‹±µµ¥C‡lÞ¼™Ë—/7:­¦Ð¹sgÜÝÝõ ‹—,YR皬¬,‚ƒƒI¨U™œ±¶¶ÆÃÃ…BAdd$III„„„`ooÏàÁƒùàƒ¨¨¨ 66|ðA&NœˆBÿ2dï½÷ñññTWWóÜsÏѪU+þþ÷¿SZZJii)B“a¦ôÝgj>WQûØœ]œùñfïÝpIXXþþþÌŸ?Ÿòòr*++Ù¹s'7ü˜1cX¸p!'o6Δ”2k5NOOORSS©j†sºÜ+ñÀ¸]š"Ó z‡J©TbkkkñCQll,¥¥¥:tˆ_ý•¶ˆž–´Û†bª_2Õšš¿úêu@@:ubáÂ…!غu+ô5wÃ5!ÓMÍÃ'Ÿ|Bii) 99™þýû79¦¨/Í]Ï,vÄÂÂtë›RSáÙguÇkÖX·fVÃÛ[÷f¤%/ ÅÅÁ?èÖmMªûßœskm­s¾fÌ€èhHJÒ½åYæMœ¬s ÝÝáí·-Óßœ.åå:çìúuÃxãÆé¾ŸÖ¯Ÿ.î¤I·¦@MqjÝ:ÖõèÁ©uëÈøê+ÖõèÁ鯾҇ÿ¾iC†X¦üMÚ=õÁÇóã /°>"‚}#â¦2½>ø€ó{ö°>"‚” èµp¡Áˆ˜kHí† áÛ›o\VÜžÑF䡹‰ŽŽ&44¥RIÏž= ÄÞÞ­VˤI“èÞ½;}ûöåÇÄßß¿Éé………é×Î<ûì³h4Ö˜iVVVÄÇÇóÏþªªªP©T7žòòr222¸~›ƒƒƒ‰ˆˆ 22ýÒÒ¥KÉÉÉÁÅÅ…Ï>ûŒ¯¾ú ¥RiR—ÜÜ\Ö­[G\\ØÛÛcooÏL†™Ó³GØÛÛSUUE¯^½°··7ëŒY[[ÏŒ3ˆŽŽ&)) ÛZ ·1¶Ø´iÉÉÉxzzâîîÎÛµü¸qã˜8q"ýúõÃÉɉI“&ŒÖLÅz{{£V«-~k²1ºÜKñLÙ¥±2M•ßž={èÒ¥ ÎÎÎÌ™3‡Õ«W[$tëyéß¿?~ø¡~m§)=[ªÝ6Sý’¹öÐØrãõ:..Ž~ø'''¦NJ\\œÅ£Ii+MɃV«%00²dÉÚµkg6íCLå¯)y¸új’òüùóå¶JZ»7}XObµZMRRÒ=ùm“»Éÿ‚]JKKqtt¤°°Ð`‚D"¹w‘íöî¡V«Ù´i“þ¡ô^æJ~啸úúJ€7ŵŽK€R¹×¤DrÙ»w¯þ­©+V%;s‰äG¶[IKrGë7'¦Fÿ^|ñþûêÿŒ3L~Zà•?ª]Ž9“O>‰‚   V¬Xq·U’H$fíVÒ’È©I‰D"‘H$’fDNMJ$‰D"‘ÜHGL"‘H$‰ä.qW±àà`’’’L^Ó­[·z7úmŠÌæLïNRXXˆF£ÁËË«Y¾Ò\Üé2ªÚ%K$‰Dr¿pψÍ;­V{×Ó›7o'N¼czÔ‡‹‹ ™™™ÄÆÆÞU=n§¹Ëè^°õáÇQ(¼ñÆús=öŸ~ú)§OŸF¡Pè÷sèÔ©_ÞÜ¢á±Çc¡‘Ôš “H$Éÿ÷¼#sG¿%u§Óû#ðGµ™ _|ñE³|]]"‘H$’úh#¦Ñhˆ%<<µZ͈#L^¯V«IKK38'„ÀÕÕU¿»ùŽ;ÆÙÙ™>úHÝâÅ‹Ñh4ØÚÚÖ;íµhÑ"prr"22’ììl}˜1™¦0–^JJ †E‹±fÍ4 FÿuÝôôt¢££qqqÁÛÛ›·,ØÿñçŸÖº†Q£Fñ÷¿ÿÐm„€ƒƒZ­–-[¶X”‡Û§ü<<<ô{a;wŽÁƒãââ‚¿¿?k×®5+ïË/¿¤k×®x{{3dȈ»»;ûöíL—Ѿ}û ÅÕÕ•¹sçbggg°£}}edÎÖæˆ‹‹Ã××///ýv$Í;è6©íÖ­ß}÷E×K$‰DÒP<"¶nÝ:¶oßNNNóçÏ7ymtttu;§NÂÉÉI?‚’œœÌÑ£GÙ¸q#sæÌÑo‡2mÚ4233騱c¹«V­béÒ¥$&&RTTÄÇl0jaL¦)Œ¥Aff&3gÎdôèÑdff’™™‰ƒƒo½õ½{÷æÚµkœ9s†Aƒ™M«W¯^”””pøðaÊÊÊHHH`øðá´iÓ†]»vQ\\Ìûï¿OLLL­dÊÓO?MPPùùù$&&2eÊNŸ>m6ž““lß¾©S§2{ölÖ¯_·Yuu5#FŒàµ×^£  ¥RIYY™Á5õ•‘9[›#--3gΰmÛ6¦M›Æ©S§š”w€—^z‰ÿûß]+‘H$ICi°#6uêTÜnîCxû¨ÎíDGGsàÀ***ðòòâèÑ£8p€èèhý5&LÀÞÞž'žxkkkƒQc¬\¹’Y³f @TT¦I2‹J¥"77—ÜÜ\ˆŠŠ2ÇÊÊŠ¡C‡²qãF ÒÛsìØ±¢P(2d...œ9s¦Ñ:¦¦¦rèÐ!,X€R©D«Õ2`À¶nÝj6n»víprrÂËË‹öíÛ£Ñhô_˜6ÆÑ£GÉËËcâĉ( ¦OŸ^çš–(£É“'cggG=èÝ»7Û¶mkRÞ @ZZšÁˆ«D"‘H$ÍEƒ±€€‹¯­KJJ¢M›6$&&’’’bàˆ¹»»ëU*•••fåž?^¿áq}4Ffc©¹ÁGDD¨-2ǰaÃôŽØÆ6l˜>,..ŽððpüýýÑh4äååQQQÑhsssG«Õ¢ÕjÙ½{·ES~5þZ[[ëæìyùòe<<<°²ÒU/777ll 7qh‰2òòò28ÎÏÏoRÞAç4;–eË–éÏÛì·)›K$‰ä“oqÔ›Mxx8Ç'11‘yóæ±lÙ2 ÌNišÃ××—³gÏ6IFCQ(!êœ÷óócÕªUlذñãÇ3lØ0³vêÝ»79r„Í›7“œœ @vv6ãÇg×®]DFF:§¢vÚÖÖÖõ. ·±±Ñ;4Být¦¯¯/nnnúõbM¥>;ÔÆÓÓ“¼¼<ª««±²²¢   AŽ–1[›ãÒ¥KÇQQQÍ’÷ñãÇÓ«W/ôS¥µË ªªÊâ)T‰D"‘HjhÑ·&ííí ">>žþýûSQQÁ±cÇo’Ü1cưpáBNž< èygff6ƒÆÆñôô$55µŽ” w”J%¶¶¶9«5Ó“S§N% €àà`Š‹‹±µµ¥C‡lÞ¼™Ë—/Ä !55•üü|ƒóAAAìÝ»W¯¼¼€°°0üýý™?>åååTVV²sçN222a ótîÜwwwý‚ù%K–4(¾1[›#66–ÒÒR:į¿þÊÀ›%ï~~~téÒEÿ"„þþþ¬ZµŠòòrvïÞMff&Ý»w×Ç©¬¬¤´´Tÿ«ïj˜7 IDAT=¢i*,++‹àà`”w‰D"‘ÜŸ´øç+¢££ E©TÒ³gO±··7/,, FCjj*Ï>û,†5kÖ0nÜ8&NœH¿~ýprrbÒ¤Iú)´Æb*=€gžyoooÔjµ~jkÏž=téÒgggæÌ™ÃêÕ«-NsذaìÚµË`ZR«Õ2iÒ$ºwïNß¾}ùñÇñ÷÷7ˆ×©S'ÆŒ£kôÚµk¼ùæ›ÄÆÆòÀ°gσé¿M›6‘œœŒ§§'îîî¼mj÷t 1f3+++âããùç?ÿ‰‡‡UUU¨T*‹GSÙÚ:t 00þýûóá‡ê×Ü5GÞ_~ùeýK …‚õë×óŸÿüGGGž}öY>ûì3ƒuŠsçÎÅÞÞ^ÿ9r¤Eaåååddd4ùå ‰D"‘ÜÈM¿%-Nii)ŽŽŽâèèx·Õ‘H$‰¤E‘›~Kî:{÷îÕ¿]¹bÅ ¢¢¢¤&‘H$Ém4x±¾Db GŽáÉ'ŸDAPP+V¬¸Û*I$‰DrÏ!§&%‰D"‘Hš95)‘H$‰Dr 1‰D"‘H$’»Dƒ±nÝ ž=¸ïYìì w8j2jµºE·`j EE|ûøãlìÓ‡ícÇÞÑ´ïe»Ô¦[·nõnJ/©Ëí›Òßo¢Ñhðòò¢oß¾w4íŋӺuk\]]›lCKÊ¡¹êuKÛì~Ñó^âN÷Yw"½û½üìˆÍ ZmÃâÌ›'64%É•ãljëÜ™cŸ~ª?wvëV¾‰!®Kö½óN‹¦¯trbHb"‘o¼Ñฦôü~äHÖ†…é{^½¹T¾ãÌ;mCDqww×ï¼Pƒ•JÅ©S§¸pá?þ8ööötîÜ™ýû÷ë¯+++ãÕW_ÅÝÝ{{{ÆÖr¨ãããyàP*•L¼­š’iŒ P(êüœœœšf€{233‰5zͼyóêØ²©”——3wî\8ÀÕ«W ¶ˆ3ESti®zm‰ÍšÂý¢çÄ\¹ß‰>ëN§w¿—_ƒßšŒ‰i 5$·#ª«9øþû´ºùÅýT®®„MœHÖ÷ßß%Í,Üž}>ü6}ú hâÇxï&1w A„„„••e°¡ü… ¨®®&00áÇãããCAAŸ|ò Ï<ó ØØØðúë¯óÛo¿ñË/¿àééIzzº^†»»;ûÛߨ°aC4'OžlT¦1¶lÙ¢ß ÁÕÕ•~øx@îÁÙDòòòBè·Øº܉zÝÜ/zÞKÜi›É22Å#b‹ƒF¶¶u§&ƒƒaÎèÓ||à£tçSRtq-‚5ktÇ ÔþPºF±±j5Œ¡;Ÿ–={‚“´oÛ¶Y¦çž= ­ZÁìÙ†açÎÁàÁàâþþ°v­îü—_B×®àí C†ÀÀàîûö5MÐå= @72²³-‹—±q#ݺá¤Vœ÷éÙõ#`ÛˆQ†´•+ÙÔ¯ë#"Ø6|87.\ ð÷ßùaôhÖGD°eÐ ÎÿòKƒeߎ9=­”J¬U*¬U*¬LÜÜ-A­V“––fpN««+999,X°€€€ÐjµlÙ²ÅàZFCll,ááá¨ÕjFܬ„ÁÁÁÌ™3‡>}úàããÃG5ÝT‘F£ÁÖֶΰ»©xûöí#44WWWæÎ‹ÁlVVZ­–­[·êÏÕ8b999( 6mÚDVV†ŠŠ ¾ûî;^ýuììì˜2e ×®]cÏž=TTT°|ùr–/_N‡ððð W¯^z¹?þ8ùË_hÕª•þ%%%FešÒS©Tbgg‡¶¶¶ØÙÙ¡R©ô×ìØ±ƒàà`œ ìrîÜ9Œ‹‹ þþþ¬­iœ`¬üLÉLOO'::¼½½yë­· ʯöÔ‡‡‡Ù½JSRRÐh4,Z´ˆ5kÖ ÑhÐh4í ‘––FÏž=qrr¢}ûöl«ÕÁôíÛ—¨¨(ÊÊÊô2SRR𬋱r0U¯MÙ¬±˜Ê»©¶bJO€E‹éw‰ŒŒ$ûfÇk®/hî<¨ÕjÆÇ<@ûöíY¹r¥>Ì\7V¯åÁ\¹›²™©<˜êÏLÑu©1åרûCrr2>>>[íMŸ>)S¦4)–¢<þ¼ÈÏ»,ê£kW! Ï 1a‚î85U{{!JJn…¿÷ž/¿\¯8Ѷ­=$Ä•+ºÿOŸ¾•ÎoQU%DB‚ÎÎBäç×/£†ÊJ!üý…øôS!ª«…˜;W";[þÀBL*Dy¹iiB´n-Ä©SB|ñ…={ qýºBlÝ*Ä?þ!ÄÌ™×E!V®"0Pˆ'tÿ'% qæŒá5~~~"»FÁ›”ˆ-ƒ‹òë×Å®W_G?ù¤Žìýï½'’ß~Û¼7ÉØ´I|ûÄâÚï¿ !„Èûí7Q”“#„bëSO‰ß>úHTWU‰s»v‰õ‘‘¢ìêU}ܳß/ŸÞâ´Ìé¹mı©_?ñõË“&éuªM}v1ÆÐ¡CÅêÕ« Î¥§§ ???!„+V¬¿ÿþ»¨®®›6mööö¢°°PmÛ¶mÅC=$®Ü¬„§oV   1áfÅNMMööö¢¤vÅBtíÚU$ÞÖ ŒÅ«ªªbéÒ¥¢ººZ¼ñÆ0Èç©S§ âââôçÞ}÷]1uêT±yóf¡V«Åo¼!Ö¯_/(Ž?. …(**Ó¦MYYY"<<\üûßÿ'Nœ­[·ï¾û®pssjµZ|þùçuì÷Ê+¯ˆ—k5PS2MéY•J%öîÝ[Ç.C† 7nÜßÿ½=xà1uêTQ^^.ÒÒÒDëÖ­Å©S§ê•};ÆÊϔ̘˜1sæLQ]]-Š‹‹ERR’žµuwwwiiiúÿ7lØ ~øázuyï½÷ li ]»vo¼ñ†¨ªª ÂÙÙYä×ê`²³³…J¥jLSº˜*‡Ú:Ý^¯MÙÌÆlf,ï–´cz®\¹RŠ7;Þ¤¤$qæfÇk®/0U¶Æ0U~~~~bìØ±B!rrr„«««^suÞX½6—su°>›™Êƒ%ý 9û4W]jLù5åþ$¶oß.„¢ººZ¨Õj±gÏ‹òŸwYœ?^O‡H # ¼g@ÙloMÖŒ>vè*UÃÈO nnºã  ݨё#0kXYÁ A?ýdZΑ#PP&€B3gÞ KM…C‡`ÁP*uëÜ €šúvít£V^^ºQ/.^l¼.+Wêâ…†êþŠÒÉ5Çáý í˜1(›qmÍ™o¾¡Ãر¸ÜœÞpïÒG??n\¸@ÁÉ“t7…•mzG??.ܶ&©9é}zxÁÁÁ!ôO¿pkDìСCL˜0ƒ’••EHHÅÅÅ(•JŠ‹‹Y½z5§OŸÆÁÁ¢¢" ),,$''‡óçÏÇ«¯¾JjjªIÝMÉ4¥§%L˜0{{{žxâ ¬­­ÉÉÉ!55•C‡±`Á”J%Z­–Œ¶™ãöò3'S¥R‘››Knn.Ó¾w’ììlŽ9¬Y³°²²bРAò“%L¨¯ÌÑÜ63•wKÚŠ1V®\ɬY³½ÙñFEEé÷µ¤/h®<ÔP³—¬ŸŸÑÑÑlÛ¶Íâ:__¿t7òÐØ~ЭKÉ{Sî£F">>ÐícccÃ>ؤ<ÔG³9bµw¯±¶††ÜW ÿÏËÓ½íèâr뜗—î¼)òóÁÓSç0nz±fÖ+7W÷7<\ç„iµ°{÷­iÒšeJÖÖ·~••×àüyhÛÖüuy8vŒ+G4thÃ"š¡$/Ç6mêœ/+(ÀZ¥2púìÜÝ)+(hÖôkÓæ¡‡p ¤Up0Qï½Ç‹)03õcŠèèhRRRHJJ¢M›6$&&’’’¢ohqqq„‡‡ãïïF£!//ŠŠ ·W›ÔÞ–ÉÚÚšJ +v}ñ._¾Œ‡‡V7+¨›››É5W5Ô8b‡fĈœ={Vïˆ9::RQQAëÖ­ÉÏÏç‘GáÆ899áàà@ee%³fÍB¥RÑ»wo"""ؽ{·YÝÉl*µ7¢W©TTVV’{³q†‡‡£ÕjÑjµìÞ½ÛâÍÞ¡nù™“YsŒˆˆ 00õë×75k"//;;;\ju0^^^äYÒÁ4úÊÁÍm3Syol[8þ›™Ê{cÛ èÊþl=¯%}©²­KÊïÂ͵¸/^䡇²¸Îßn[Kòp/ÕAc4¦.5¶üšrÐjµ´mÛ–~ø7ŒX6¥=ÜÎù «§§njÐÒú:ÁÂ…:ghëVÈÈsŸéÜœáÇuÿßQ ,L·@þ|(/×9h;wêä6U—¬,Ý †qÇŒÑÅ;yR÷J dfšN/$&†QÇëêG¥Ë”)z'LTUQUV†¨®FTWëŽ-0là!¤­\Éõ› \9~œâsçpôõÅ5$„´+@rwï¦(;À¹m[®edPvõªÙtj0¦gé•+doßNYAeW®pháBT®®´îÐÁbÙ·cooOPPñññôïßŸŠŠ Ž;Fxx8ÅÅÅØÚÚÒá¦üÍ›7sùòåF§Õ:w»;Ÿþ9K–,©sMVVÁÁÁ$ÔªLÎÎÎX[[ãááB¡ 22’¤¤$BBB°··gðàÁ|ðÁTTT‹‹‹ >ø ŽŽŽ<þøã,Y²„ªª*öïßÏxøá‡¨ªª¢´´”ªª*ƒcS2MéÙXÂÂÂð÷÷gþüù”——SYYÉÎ;É0×8› 3!!K—.º— lmmõhPP{÷îtõ¥¼¼Ü@vHH©©©äçç×I×ÓÓ“ÔÔT‹oætêÔ‰… "„`ëÖ­ddd4Ë·ª‹9LÙÌõÙÌTÞ-i+Æ3f .ääÍŽ7%%…ÌÌL‹úSe[–”ß'Ÿ|Bii) 99™þýû7ºÎ[’‡{©£1u©±å×ÔûÃèÑ£™={6®®®t®5@Ò”ö` õ.ÖïØQ·°^©ÂÛ[wüå—âæ‚6!j¯Ëuw×-†×/ZË¢woÝy??!Š‹o…µm+Äþýuå;&DT”nñ|P›7×½¦>öî¢K]Üñã…°µ½µX?;[ˆ?ÿYÝïá‡u/|ñ…5kу‚t ê7l"&Æ2]NÒ½Pߺå÷ßB­ÂÑQˆˆ!²² ÃÍ-J¿}±~úš5bMÇŽ¿“ññÙæø²eâ›GëÂÃŇ ÅçÏ !„¸zê”Ø6b„X×£‡ø¶‘³cG¸þñ±®G±.<\”×Zi czÞ¸tIl}ê)ß½»ˆëÖM$Ž# ÒÓëÄoÈb}!t Î,„bÞ¼y"<<\6gÎ,~øa1uêTáïï/öתtmÛ¶5ø¿S‹¶;vì(Ú¶m+”J¥ðöömÛ¶_Þl¦â%%%‰öíÛ wwwñæ›o •J%rn¾4!„ñEð½{÷sçÎB±iÓ&¡T*Eee¥BˆÜÜ\ѯ_?agg'ÂÂÂDrr²>^VV–xôÑG…“““ðóó3X¬¿dÉü>¹Y×LÉ4¥g Æë³Kvv¶øóŸÿ,\\\„‹‹‹xøá‡õ‹“Ía¬üLÉüë_ÿ*¼½½…“““  úxIIIB£ÑˆÈÈH1{öì:‹õ…bÚ´iÂÁÁA8::Š«µ^lÉÏϽ{÷îîîÂÏÏO×îìŒpìØ1%DPPØ|[ÓØÅúÆtil½6e3K¨Ïf¦ònª­˜ÒS!Þÿ}¡V«…£££ˆˆˆY7;^s}1=Ma*~~~bÚ´iÂÇÇGxzzŠåË—ëÃÌÕycõÚ\Œ•»)›™Êƒ¹—WŒÑu©±å×”ûCNNް²²ï½÷žA:æòÐÅúrÓﻌZ­&)) õmŸ©ø_çÁ.¥¥¥8::RXXh°C"‘r¿¶µZͦM›ˆˆˆ¸ÛªHIYYåååTVV²sçN222ôq³²²&!!¡%³'‘H$‰DÒ$ZtDL«Õ2iÒ$ºwŸ]»vÅßßßàšN:1fÌP(œ;wŽV­Z±gÏÆOqq1~~~¬^½ZgÓ¦MLž<OOOºwïÎòåËõáååådddpýúõ–ÌžD"‘H$I“›~K$‰D"‘4#rÓo‰D"‘H$’ûéˆI$‰D"‘Ü%¤#&‘H$‰Dr—°p±þ†–ÕB"‘H$‰ä¾gXƒcÈ1‰D"‘H$’»Dƒ±nÝgûvï–Ð¥E°³JNŽýÝVÃ(jõDrròÍ_x¨(*ãÛdz±Ïl»òަ}/Û¥6ݺý?¶o?jþBI³ag7ºNÝhl9X¯¾ô,ÁÒxÍ+¤¤d˜½î^¥°°æ¼¼^¤oß·ï¶:O!)é”ÉkZ_,‘y/Q_þŒÕ³{­üþi°#6wî ´ÚÂÅ™7¯'†74©ÿy®Ï%®ó;ût—Á¹mÃ>c]ylîÿ!YÛŽ·XúJ'C§ùÆŸOTU“üÆ·|ýÐÄw}—ïG.ãÊñ\}ø÷#—±6ìmýoÏë_7·êwŒ¹sŸB«mÓ¢i¸»¿@r²áM@J5ŠS§ÎsáÂUü=ìíGÓ¹óLöï¿ÕÙš ûé§ctì8{ûÑtï>Û “:tÞÞP*GÒ©ÓL¾ýv¿Eºvê4…b¸Á¯´ôÖ–fóæmdâÄÏk £4¶îDùýÑqq±'3s)±±/ÞmU,æ^î ÉßýX~4üAט˜ì–ÐCr¢Zpðýïiìepþ—™Ðü© ý×½Äù_O³ûÕ8¼"Úbçát—4­‹¨غØÓï?Ï£jíHêç¿°ë•8žüq: kïßçÃÚô П»‰‰éÙâi„„ø’••GTTˆþÜ… W©®z1|ø¿ðñq¥ `%Ÿ|òÏ<³ˆŒŒ%ØØX3yò²zÃ**ª6ìŸüóŸÏ3fÌC|üñ6†]Äᅩµµ¯¼ÒŸ?‹ƒƒŠõë÷³˜Ë——áìlztùàÁ÷©®89=ÇîÝïУG;ìì”-m¢F—Ã(?ɽǽÜÿèùû£añpñâ4š?ak;´ÎÔdpð@æÌéLŸ>àãóg>úHwÃHIqC£ù‹…²fMÍŸÐhþÄÖú¸ÍŸˆ "<ü1ÔêÁŒ @Zš ={>Š“ÓS´o?mÛ|,ÒsÏwBCЪՓ̞ÝÅ ìÜ9{î‹ËSøûfíÚ¾ü²-]»>·÷_2¤öÁÝ}ûöµn’.‹µ' àO89=Edäcdg;X/cãA<ºùã¤vÓŸÕ‚âÜkø?¦Ea¥ MŸ¬l¬)>Í"™i+÷°©ß?Y1ŸmÃÿÍ º‘ÍÂßóøaôrÖGÌgË %œÿå´Åù«+¥5Ýÿß´ ö®µ#Æõ¤äòuJòŠ ®±VÙ`­²ÁʦiŽ˜Z=‘´´s焸ºŽ%''Ÿ ¾! `Ï¢ÕNcË–×j4¯û=áᯣVOdĈŀn:bΜ5ôéó&>>øè£ÿêã,^œ€Fó ¶¶#ëL˜Š·oßiBC_ÃÕu,sç®­3}•••‡V;­[éÏ…„ø••GNN> Åp6mÚOVV'U|÷Ý^ýIìì”L™2€k×n°gÏIJJʆ;–MEEÏ?ÿ0 …‚W_@~þuø€Gí„ZíNëÖN´mëJeƒu-‡¹>=lmmôŽWíã”” 4šWX´è;Ö¬ùæ4šW¸q£ÌlùîÙ“Nhèk´jõ<³gif¬~þ9  )׎õ!ÿû7fËÏTzçÎ]aðààâò<þþ“X»ö‹â™#.îW|}_ÂËëE>ÿüG’“Oáã3ªªjýuÓ§¯bÊ”ÿ˜•g®Îׇ9›5F&ÔÖóðωºöjÊžÆ0×Þvì8FpðœÇXÜn-ÚB@À$œœž#2r.ÙÙ·Ú¦1™æt7.–˜Kûö¯±råN}XZÚ9zöüNNÏѾýklÛvX–žžKtôÿáâò<ÞÞxë­õ…™Ë_}õÌM©ƒ/¿üoÔꉨÕiÓæeŠá\¸p0_îÆúdS6»Ÿ±ø8mÚ)23èØ±þiÉ+WlùùçìØ±‹9s:SZjMDD™™ Ìœ™ÎèÑYdf&™™€ƒƒá&ßëÖù³}ûnrr¾cþücŒÅc]¤°p‹føð¹rÅÖ¤ŽUU FŒˆfÆŒ“\½º AYÙ­,>ýtO‚‚ŠÈÏÿ–ÄÄ]L™ÒÓ§u#INN•ddleûvo¦N=ÅìÙé¬_ïßh]V­Ò°ti0‰‰»)*ú†?>HUU}›Rvõ'Vï%ì¥>çuÎW0Yß§R]QEÎŽtTn¸†x‘t‹ß¿ýSqûytÙ†§ü‘„¸Ù¸~µŸè@†íû+ásðËŒ ”_+1+ÓR N\ÀÞËûZ£v)ï%ðMßE으–Â3yM’RgíéSpr²C­v§M7víz‡ââ/xÿýÑÄÄü‹ë× ó·nݶo“œœO™?¤þü•+Eüüó»ìØñ6sæ¬ÑO³M›ö'23—Ò±£º^ê‹W]-1b1¯½6ˆ‚‚(•Ö”•UÄ+/¯$==—ÂÂúsíÛ·!++C‡2Q«Ý9xðw²²ò ñåÌ™KTVVèÅôé«8þ*ÁÁ>¤§çš  :×NŸ¾ ?7.7·q<ÿüR¶mû?T&õ4EDD™™K™9s0£G÷!3s)™™K dÖGUUÉ7'þ IDAT5#F,fÆŒÁ\½ºC›+‡^½´”””søp&ee$$døðž&ã™Kïé§äM~þHLüS¦ü‡Ó§/˜gŽ´´sœ9£³ó´i+9uêw ~ ²ó¤‡yäóçxtÙsØ:©Ø9q Õ•uK‰ŽnÏ¿SQQ…—׋=šÅ¿­™;¶/^( † ‰ÄÅÅž3g.Ș:unnŽÝñ­âïÐÁ•Jiñ¢íúâ=šE^Þu&N|…BÁôéƒëÄ öAˆõŒÑK®fDìС3L˜ÐƒÏÜtÄ|(..C©´¦¸¸”Õ«wqúôT•š ëÜ9;;%Ë—ÿDUU5K–l£¬¬Ò`„ê_ÿzžƒßçÙgû0}ú*ª«…I=[‚#GÎRPPÌ„ ¡P(˜9³®ÍêÃÊJÁСQlܘ @bâ‚‚| ʶ¡é¥¦æpèÐ,…RiVëÇ€ÝØºõP£õ¬aòä'°³SÒ£G ½{kõOú£Fõ&>~{÷žÄÆÆŠloVž%uþvÌÙ¬12MaÊž¦0×Þ&L臽½-O<Ñkk+‹ÚíÊ•;™5ëÏ„†êÖVEE… Ñx6I&ÀÈ‘º6âçךèè¶m;Lvv>GŽd1kÖ_°²R0hPw½øé'Ý@„J¥$7÷ ¹¹88¨ –%˜ 3‡±zfŠÆÖÁvì8Îòå?ñů¢P(,.÷Ûûds6»Ÿi6GÌÑñÖ(—µµ ²ÒüÈO †OÕyy¶ØÙUáârë‰ÃË«”¼<ÓOÏùù*<=˰²ÒÝ0ÜÝ˱±ÑçæêÃððÇÐj Õ`÷nOý4©µµÐÿ­ùUVZ5Z€óçíhÛÖ²}ŽåråhAC{Ô «*«ä§ñ« {©#¿Á#ÿ~Ž_gn°hD©$¯Ç6®uΗc­²1púìÜ)+h˜ÞõQUZÁ®WÖÒî©n<ÑQ¾ÍC!¸zÐ*Ø‹¨÷†pãb!'L?›¢æ 9)é$mÚ¸‘˜x„”” ¢£uE\ܯ„‡¿Ž¿ÿ$4šWÈË»NE…á¨l@@ýûª::Úé­­­¨¬¬ª÷:Kâ]¾\ˆ‡‡3VVº¶áææˆµ1zjÖˆ>œÉˆ½8{ö²~DÌÑQEEE­[;‘Ÿÿy$Œ7Êpr²3fg§dýúé,Z´…V­ž'9ùÑÑ!¸¸Üš:wuu$0ЋE‹ÆðûïÙ³'Ý„–-C~~žž.z›¹»;[d3€aÃdãÆ$6nLfذè&¥—›[@xøëhµÓÐj§±{w7n”5IO/¯VµŽ]ÈÏ×=åÕ›¯¿N¦¢¢Šõë÷2r¤ù‘°¬Îׇ)›5V¦1LÙÓæÚ;èì_ƒJ¥´¨Ýž?_@Û¶žFÃ#tí¨öq^^!yy…ØÙ)qq¹5`áååB^žî¡}Á‚‘(•6DDÌ!0ð֯߫¿ÎT˜9ŒÕ3S4¶\ºt1c>fõêWõi[Zî·÷Éælv?ÓàÅúA¡!L…º»—SZjMa¡Rï]ºd‡‡‡éêáQƵk·F‡ŠŠlô¡¯o nnœ8±­N¼/¿l[¯}ÐÐ6&ÃúõëLjê¿Ý4”¯ïKt릩“¾B¡ÀÊJAaaÓ§« EÛ›ÂÃÙk×n=•Z|ìÝ[KAA1GŽœeóæ’“4)=__WÜÜœ8qbqx‡g6ZOÐݰnêG9´Z?Ú¶õä‡~cãÆd¶nkV–¥u¾>ŒÙÌ™ÖÖVõNwÛØXëm!„ÐOgš²§)Lµ÷¦àëëÆÙ³—›$£>jÖE\¼x•‡ꀻ»3¥¥–è‹K—tj =[µê6lØËøñŸ2lX4 …Âd˜9ŒÕ30^~©ƒ +ëçžû˜ñãå‘GÂôç--÷Û³cÎf÷3wäu5OÏ2RS],Zº²N®±pa{„€­[}ÉÈp¤o_Ó¤sçk8;WòãºiÃøx}XXX!þþ7˜?¿ååVTV*عӓŒ ÓoZ¢KV–ÁÁIHð5ˆ;fL& †rò¤®¢¤¤¸‘™éˆ)Bb"uümýOý¨–.S¡×ÂgpðqA¡€3›!(8q«'/âànR&@த­ÜËõLÝpú•㹟»Š£o+\C¼H[ñ+AîîSe_Á;R£ëÜÖk—)»jÙ(™¨ìó5J'ݦõ£ª¬’ª²J‚Ò+ÅdoO£¬àeWŠ9´ðT®´î`ù ·cooKP7ññ{èß¿•;–Mxx;Š‹K±µµ¡C?6oNáòå†}~¥¹èÜ9ww'>ÿ|;K–Ô]𛕕GpðêÏ9;Ûcmm…‡‡3 …‚ÈÈ ’’N⃽½-ƒ‡óÁ›©¨¨"6ö{\\ìyðÁö&Ã~ûí,yy×9¾€I“–ѽ{ íÛû’‘q‘Ï?ÿ‘ÜÜ®\)âÝw¿¢¸¸Ì`ê§>=A·v¬fíLíã<=]HMÍ©·Ã7f3gg{~üQ·ð8>þW‹âÁ­©¶©SWàAp°ù:f*½°0üýÝ™?ÿkÊË+©¬¬bçÎãdd\l’ž±±?PZZÁ¡Cgøõ× xkÝÏèѽ™=ûK\]èÜ9À¬¬¦Ôyc6³DfHˆ/©©9äçŽPy³wïI}¼òòJÀ´=Maª½7…1cbáÂ-œ<©[7•’’¡_ÏÕ>ùDW¶üNròiú÷ïJ@€:ù³páf„lÝzˆŒŒ ôí«sXê&¥Ò[[½£e*̦꙱òƒ†×A€üc•¼ùæ3ç[îælÆû¥{‹GÄÂÂúS\lCn®Ï>ûvvÕÌŸ”Ñ£³ÌÆ}晾ø¢-ÞÞÁÎ®Š“'ÿ[gÁþíÄÅ%1~|$‹…âë[B\\²ÙQ(kkA||/¿޽}:]ÃÖöV‡¿iÓ¯LžÜOϿнûU–/O1«¿9]ÊË­ÈÈpâúuCsŽ—ÉåË*úõ{˜‚%:\çë¯÷˜MÏv­éµp¿}ø#Éo‡ª•=aúàÛ+ÈlÜvOu§ôJ1?¾°ŠòÂ\ÚyòÐG#èõÁP’ÞØÌ‰•{±ót¢×Âa#b®!^´Òoûý ðÔŽ™(íŒ%EÉåëœý¯nÞþìÖ[ó÷Ö¿„½—3ÇbwR˜©áñèâGßOGceÛ´ÁÙèèΞÍC©´¦gÏP.^¼†½½-Z­“&=A÷î³ñókM×®mñ÷7︚#,lÅÅeäæ^áÙg?ÂÎΖùóG0zt£q¬¬ÄÇOc̘ù¿ÿ‹ç•Wú£R) :ÑòòJ22.ÖYìCD„®œ##ƒ°±±ÒO£,]:žçžû—1ùðÕW3Q*­Í†ýðÃoÌ›·‘ÊÊj èF|ü4”Jk¾øb73g®¦´´œÎزåuZ·¾õÐbLÏ=^çøqÝzÑ^½Þ ¤dþíÉgž‰æ‹/vãí=;;%'O~hrÁ¾µµññÓxùåcooK§NþØÖª+æÊaذYºôû:£%¦â™JoÓ¦ÿÇäÉËðô@÷î,_>ɬžæèÐÁÀÀW¨ªªæÃǬe1¢³gÉ;ï ·HVSë|}6³Df§NþŒó0“Q(àܹÏhÕÊ7ß|†#³aÃ^y¤“ÁŸ1{šÃX{7‡©r7î._.¤_¿w)((¢C5_=ËR³E«½U¶K–¼@»vº²‹{ñã?eÑ¢ïðõu%.nš~tgÏžtÆÿ„ââ2üüZ³zõ«zy¦Â̵SõÌXùAÃë èÛgd\ÄËëÖ÷ÉRSÿ‰—W«F—»)›ñ~é^§>7Zyþüùr[¥ ­Ýk¦»ä^“-…Z=‘¤¤ùú·}$:þìRZZ£ã³®ÆÑÑüšCÉÿ&eexxŒçàÁ÷ ñ5ArÏ VOdÓ¦ÿ§ˆº_‘u°!èöš¼’ŸGyE%¾¾¾CàÆÍ_q­ã ôþý’¦Dr²wïI.^ÔM+¬X±ƒ¨¨é„IL²|ùOtéÒVÞ%w Y[–;²X¿9yûí0£a/¾ø;jõý5$9cÆ`ƒ7Õ$:þ¨v9rä,O>ùB‚‚¼Y±bòÝVIrӮݫTVV5Ë™DÒdlyäÔ¤D"‘H$I³Ðð©I GƵ€²‰D"‘H$ÿÛÈ5b‰D"‘H$w‰;bݺÁöí-¡JË`g99w[ ã¨ÕjrîQ+ŠŠøöñÇÙØ§ÛÇŽ½£ißËv©M·nÝØ~?5ˆ?vvvuêFcËÁ’xõ¥g –ÆÓh4¤¤˜ÿŒŽD"ùcÒ`Glî\ÐjgÞ<˜8±¡)ýïòýÈ‘¬ Óÿö¼þº>ììÖ­|C\—.ì{çRšŽÒɉ!‰‰D¾ñFƒãšÒóbr2ßýùϬëуÿÊ•ãÇ›Kå;ÎܹsÑ6´A4www’““ Î !P©Tœ:uŠ .ðøãcooOçÎÙ¿¿þ:Sa?ýô;vÄÞÞžîÝ»ëÇ£P(êü¶m«»+ÅítêÔ©N¼ÒÒR}ø¼yó˜ØAcËáN”ŸD"‘˜¢ÁŽXL ¨ëߨ]ÒŒôùðCb$æàA¢çÏןW¹º6q"m º‹Ú™Ç˜žU¥¥ü<}:_|‘˜zúi~~í5DUã÷¬»›ÄÄÄ náBV–ᇓ/\¸@uu5Lž< xá…xæ™g¨¬Ô}½ÜXXII Æ ãõ×_çÆ¼ð :”ªª*ºvíJII‰þ—œœŒ››<òˆY]"‚-ƒqþ—_,ûvŒéyõôiDe%í† …‚ö£FQvõ*WRS–Z­&--ÍàœWWWrrrX°`888 ÕjÙ²e‹Áµ†ØØXÂÃÃQ«ÕŒ¸Y ƒƒƒ™3g}úôÁÇLJj*6°xñb4 ¶¶¶u¦¶LÅÛ·o¡¡¡¸ºº2wîÜ:ÓWYYYhµZ¶nݪ?Wãˆåää P(Ø´iYYYh4***øî»ïxýõ×±³³cÊ”)\»v={öPRRb4ìØ±cTTTðüóÏ£P(xõÕWÉÏÏçÀ( ìììô¿µk׃J¥2©'€­­­Þñª}œ’’‚F£aÑ¢E¬Y³FƒF£áÆ óÛfíÙ³‡ÐÐPZµjÅìÛµ±røùçŸ 2üˆæ¨Q£øûßÿn¶üL¥wîÜ9Œ‹‹ þþþ¬­éDÌÄ3G\\¾¾¾xyyñù矜œŒUµR¦OŸÎ”)SÌÊ{ùå—Q«Õ¨ÕjÚ´iƒB¡àÂÍön*`¼=¤¥¥Ñ³gOœœœhß¾½E#¤‰Ä<;bÓ¦Af&tìXø•+ðóϰc‡Î)+-…ˆ]œ™3aôhÝqf&8Üöy¨uëtÎ]NÔ þŒ =……:'pøp]¦¨ªÒ9r3fÀÕ«`ceµvEzúi ‚ü|HL„)Sàôi]˜“ddèô˜:UçÄ­_ßx]V­‚¥KuiÁÇët´„”÷Þ㛾}Ù9y2…gÎXÉ¿û-§ââxtÙ2†§¤ù·¿éG¡~5 Ÿèh†íÛGøœ9ü2cå×®™‘Øxêýºže~«,cDGG×YcsêÔ)œœœô7¢]»vQ\\Ìûï¿OLL ׯî§¶nÝ:¶oßNNNók@^¹r…Ÿþ™;v0gÎý4Û´iÓÈÌ̤£‘Q_¼êêjFŒÁk¯½FAAJ¥’²2Ãm»ÊËËIOO§°ðÖ>~íÛ·'++‹C‡¡V«9xð YYY„„„pæÌ*++ dúôéœ?žàà`ÒÓÓM†7øN×4ˆZú¬Y³†çŸÞ¬ž¦ˆˆˆ 33“™3g2zôh233ÉÌÌÄáöÎà6ªªª1b3fÌàêÕ«ØØØØÌX9ôêÕ‹’’> @YY >Üdœ+–t„‰Ä$ÍöÖdLŒîo‡ R5lüÔ©àæ¦; Ò9òÿÛ»÷訪Cãß™IH†Ç3ÃϽ÷9ž}Ìf˜9²³áý÷Ão§²œNX°Àxrû¯ݾ¬ª **`Ɉ7ƹ͘ÿ¡1Âc™™F«WVœ={ùuX¹ÒXoÔ(ãï ŒíFR´p!Sÿô'~ðæ›ôINf×SOÑæïjº\_¾÷óæ‘š €mÌ’æâ™38£àñÇ1™Í ºë.’æL§1IWKZ^愪ׯÇçõrôÝwñºÝx/]þxKJJ8xð ‡ÌÌL>ÌÁƒ)))`Þ¼ydggc2™˜5k©©©|Ù)Ü–––’î? C[RòŸØ$$$D=h»»õ>ŒÃáà©§žÂd2ñÌ3ÏtY/77ŸÏl…€ö±ŠŠ ,XÐ!ˆ577Oss3«V­âøñãôíÛ—¦¦¦°ËŠŠŠHLLdùòåx½^^ýu\.W—ªM›6Ñ¿ÿà± WÏk¡²²§ÓÉ‚ 0™Lü:ôK†Ùlæç?ÿ9ëׯ`Û¶määäti%ëMyUUUTTT°dÉâããÉÏÏgÆŒlÙ²å²ëðôÓO“˜˜Èرc™„êü}¨©©¡²²’gŸ}³ÙÌÌ™3ÉÎÎæýh~E$¬«Ä’’Ú_[,ЛÜ0¬ÓÃÜãjÇÔÔö÷23÷髃Œ #0ѽèÕûæc^\l„°ü|س§½›ÔbiŸ¦ÖÖ˯ ÀéÓ0|xäÏu6è®»HÍΦ_n.~ÿ{.ž=‹ó³Ïz¿¡—’ êò¾ËéÄ’@|Hb¢Í†Ëé¼¢òzbIH`ò«¯òéÊ•üeÂê*+±ßzk‡ò{+Ð"V^^ΠAƒØ¶m†‡Õ«WS\\ÌСCÉÊÊÂápàñx:lcXç“Ð/)äĶX,Á±W‘t·^mm-v»³ÿMOO'..ò­üAìСCÌ™3‡'NƒXRR‡þýûSWWÇÔ©S¹xñ"ÉÉÉa—%&&²víZ^yåúõëǾ}û())!5ôDÞzë-æÎÕ>_ uuuddd™Íf‹ê˜Ìž=;ÄÖ¯_Ïìّ¼oü?"ÅÅÅäç瓟ŸÏž={¸xñâÕ 33³Ã뺺:Àb6lÀãñ°víZ~øáž6ÑŹsç˜;w.«V­ n?Ü>„êü}p8$&&v8?233qDóC("a]—G™Làó…_Êf3º6Ûйs`·w]7”Ý¡=jMMípà@£Õ­»<óç?w¿=Ÿïòë(óĉȟ LJÉl¾âÁìV»æ@ Ñ'- ¯Ë…§©)†ZêêH4QÂU)?Ô-%%Üç§Õæv³áî»I¿‚+׊‹‹ùä“Oضm/¾ø"o¾ù&N§“Å‹SSSÃüùóÙ½{7ãÇŒ@|NHSç“ðÈÈÈÀápÐÖÖ†ÙlÆétFìFŽIMM >Ÿ¼¼< Äþýûƒ­qqq=z”ÂÂB¼^/ÇgÔ¨Qa—L›6*ÿØ<—ËÅÀ¹í¶Û‚åž:uŠíÛ·óÆo\µc`2™ºûpìv; !_ꦦ¦¨ÃðäÉ“q:TVV²iÓ¦.Wžö¶¼’žžÎgÝüˆ:tè²ë Fh }=aÂòóó>|8[·neýúõ]Z®zâóùxì±Ç˜?~‡‹,ÂíC¨Îß›ÍFKK Á0vîÜ9ìÑüŠHX×冮F×`´ÿ–£GÃÒ¥Fڲſ5eJøõŠŠ %vì0þö·èPXh Ð_¼Ün# íÚel÷Jëòõׯ ›7w\wî\c½cÇŒ¿0ÆÈ…ÓR_OÍöí¸œN\õõT,]JBZý c|•×åÂ×Ö†¯­ÍxÅÍž5‹OW®ä‚¿õŸ|Bó©S$ HZ^Ÿ®X>ßìÙCSM ü¡ eøpª«q?±œ€põt=ŠËéäRm-ÿúÝïH/( %š>ÛX­Vrrr(++cúôéx<Ž9Bqq1ÍÍÍôéÓ‡ÿñÛ´iµµµ—]Ö•(**Âf³c¿þúë]>óõ×_“››Ëæ“)%%‹Å‚ÝnÇd21~üxÊËËÉËËÃjµrß}÷ñòË/ãñxX¶l©©©Lœ81ì2€?þ‡ÃÁéÓ§Y¸p!·ß~;#GŽ –ûöÛosçwvÛZØ]=Á;Gú: ##ƒªªªnǧõtÌRRRØáÿR—…~©#tO–––2lØ0rss¯¨¼ÂÂB†ÊâÅ‹q»Ý´¶¶²k×.ª««¯¨žË–-£¥¥…ŠŠ >øàî¹çžà²_üâüö·¿%--¢¢¢¨¶÷ÒK/áñxxî¹ç:¼nÂ6l£GféÒ¥ø|>¶lÙBuu5SB~{:'D$¼¨ƒXa¡1¾©ª }Ôxýî»Ñ­ûÀÆ|ÀãÊÈ(.”bõjغÕ·UZjüé¾,#|-Z%%P^n\å°q#ìÛgC› ž>ºúGª‹Ûm„³Nã¿yüqãþiÓ¦ë.\ØÞÚŸ×Ë‘eËØ8mïM›F}USÞx³G>_³†5cÇòùš5T¯[Çš±c9¾n]Ä}qÿýä>ø ;~ùKÖŽÇ¿^x“¿2w¼ü2§?üµãÆq`ÉîXº´C‹XZ^#fÍâ¯þ+.=w´áêyæƒØ4c›1Ï… L^º4âö")))aÔ¨QÄÇÇ3iÒ$²³³±Z­äççCÆ”)SرcC‡½âò ÉÊÊ¢ªªŠG}”¬¬,Þð…0›Í”••ñꫯb·Ûñz½$$$th}p»ÝTWWw¹˜ 77—qãÆ0~üxâââîï÷þÃþÀÉ“'IMMåü#ëÖ­#>>>â²­[·’““Cnn. ]ÂÃÊ•+{ì–쩞cÇŽÅjµâõz¹ãŽ;°Z­ÂØþƒ0dȈWMZ,ÊÊÊX´h%%%”——Ó'äKé¿Ãìٳٽ{w—nÉžÖ‹TÞÆÙ·oØl6ž÷ÿˆDZ/’‚‚²³³™>}:¯½öZ‡±lsæÌá³Ï> Ž;ŒÆš5kØ¿?™™™Øívìv{°Õ­§}ˆdõêÕlݺ•äädJKKY½zu‡±žÎ Y†ž«IDAT /ʇ~˵2dÈÊËËu/£N¾ Ç¥¥¥…¤¤$;Œ) år¹°Ûí|ôÑGäååź:"…Þ<ô[Ïš¹ŽöîÝËÙ³gX±b&LP“°–/_Θ1cÂDnR×e°þÕ®ýW¿ºñîú¿hÑ¢.WªÉÍ{\*++ùéOŠÏç#''‡+VĺJò-6bÄZ[[Ù°aC¬«""׈º&EDDD®¢ÞtMFÕ"öÂko_«ºŠˆˆˆÜþãßÿ-ò‡:Ñ1‘‰é±ŸüpMÙU~èš—•Ð'ž…þ„ø¸8jëX¹îÛùÀÚpõ¼QöADDD¢óis¹=üç[ëÙ¼³<ÖU +\=o”}‘è|g‚˜ˆˆˆÈ·M¯º&û¥$ñØý?â÷àó¯N0&“ŠG“Ü×ÊÉ3µX,f°óî_·sꌃ;Ç1®h}­‰4\hbë?r싚.Û|‹gNaÍæ]|sÖAJr_~üƒ‰ <€·‡íÿ<Èá£_DUωc )¹­kbµõ ¬Ù¼“Æ Ía× W^¸}(÷3ª>?ÁÐA™ØÒRø¿ý‡ÙwèÓˆuŒö¸ˆˆˆÈÍ«WAÌb1cKïGBŸøï»=þkåž}â!ÖnÞÅ{:…yYœ:ãàBó%V¬ûç›5b(³ï¹›—ÿ´·Û\`¦gNaÝß÷ðÍYÝ;•“gj)ûŸôï—Â/¼‡Sgk©?þñ·äðý[óYõÞ6êœ ¾ÅŽ9Š:‡+/Ò>Xû°â/ÇÞ¿O>üc>Fk„géEs\DDDäæÖ«®Éúóxáµ·9rìËï;šp{Zi¾ØB³‘óM$õµp¨ê8ç›8úE .·›ôÔäນ¶4»ÿGlÙµšÓƳÐ2ú§10³?;>üˆ¶¶6ÎŽŸ8E^V仵Þö½\>üèž~lßËË¢êó¯¸Ð|‰K-nþ{ÕÆ^—{¡ùi)=?»¯­Í‡©SWe¸ò¢Ù‡ÞŠf›ÝÕ3še"""rãèUL¿”$JçýŒ¼ìèèØ'.¯×‹£ÞhY5b(}­‰>ÓæóÑâró·í{¹wj É}­ÔÖ§±©™;¿?‹ÅŒÙl"kÈ-¤÷K‰XæÇŸV3©x4¶tã9…ƒØH éò«?ßHFÿ~X‚ï…+/š}è­h¶Ù]=£Y&"""7Ž^ÖOï—BB||ägûåÉG~…拜©­ïñêÅÏ¿:ɱ/køñ'±zÓÊþö>÷N-á7OÌàLm=ÝöAÄ2U'ÉšÈÜŸMÇšÐ'xÕdÀ¹ºó|üi5ÏÌ|ðÊò¿àr¹{,¯7û­h¶ÙS=#-‘GTýÖ³&EDDD AdLint 3.2.14 User's Guide

AdLint 3.2.14 User's Guide


Next: , Up: (dir)

Overview

AdLint is

AdLint is an open source and free source code static analyzer.

It can point out insecure or nonportable code fragments, and can measure various quality metrics of the source code.

For a part of utilization examples, see screenshots.

It (currently) can analyze source code compliant with ANSI C89 / ISO C90 and partly ISO C99.

AdLint is written in Ruby. So, it is available for Windows, Mac OS X, GNU/Linux, FreeBSD and any other platforms supported by Ruby.

License

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/>.

Index


Next: , Previous: Top, Up: Top

1 Installation

1.1 Operation requirements

AdLint requires installation of Ruby version 1.9.3-p0 or later.

And it recommended to install GNU Make version 3 or later to enable to auto analyze by using the GNUmakefile which created by adlintize command.


Next: , Previous: Requirements, Up: Installation

1.2 Hardware environment

For the recommended hardware environment, it can't be completely defined because it depends on the size of software. The following is the test environment of AdLint and the analysis time.

1.2.1 MS Windows

  • Environment
    • OS : MS Windows XP (SP3)
    • CPU : Intel Core i5 3.33GHz (660)
    • Memory : 2 GB
  • Tested code : Ruby 1.9.3-p0 (lines of code : 620,000)
    • serial analysis : about 7.9 hour
    • run 3 parallel to single module analysis : about 3.7 hour

1.2.2 GNU/Linux

  • Environment
    • OS : Fedora 14
    • CPU : Intel Core i5 3.33GHz (660)
    • Memory : 2 GB
  • Tested code : Ruby 1.9.3-p0 (lines of code : 620,000)
    • serial analysis : about 6.5 hour
    • run 2 parallel to single module analysis : about 4.2 hour

1.3 Installation instructions for MS Windows environment

1.3.1 Install Ruby

Get the RubyInstaller for Windows 1.9.3-p0 or later from the download page.

Execute RubyInstaller and install ruby with the instructions in the installer.

1.3.2 Install DEVELOPMENT KIT (DevKit)

Recommend to install DEVELOPMENT KIT (DevKit) including GNU Make.

Get the DEVELOPMENT KIT (DevKit) from download page distributed in RubyInstaller for Windows

When user execute the DevKit-*.exe ,DEVELOPMENT KIT will expand to the specified directory.

1.3.3 Set PATH environment variable

Append the following path to PATH environment variable : bin of Ruby directory where Install ruby, bin mingw\bin of DevKit directory where Install DEVELOPMENT KIT (DevKit)

1.3.4 Install AdLint

Start command prompt, and download and install the latest AdLint by the following command.

> gem install adlint

If you have to use HTTP proxy, set --http-proxy http://user name:password@proxy host:port number to gem command as follows.

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


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

1.4 Installation instructions on Unix environment

Install Ruby interpreter by following Download Ruby.

And download and install the latest version of AdLint.

% gem install adlint
or
% sudo gem install adlint

If you have to use HTTP proxy, set --http-proxy http://user name:password@proxy host:port number to gem command.


Previous: Install on Unix, Up: Installation

1.5 Evaluation test and trial use AdLint

AdLint provided with small sample C language projects. Evaluation test can be execute with intro_demo project by the following procedure.

Copy intro_demo project to user's workspace.

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

Generate the setting file for static analysis by adlintize command

% cd intro_demo
% adlintize

The following files will be generated.

  • GNUmakefile — Make file for GNU make describing the analysis procedure
  • adlint_traits.yml — Traits file for customize AdLint analysis behavior
  • adlint_pinit.h — Initial header file of specific project
  • adlint_cinit.h — Initial header file of compiler
  • adlint_all.sh — Shell script describing the analysis procedure
  • adlint_all.bat — Windows batch file describing the analysis procedure
  • adlint_files.txt — Analyzed file list for shell script and batch file

If GNU Make version 3 or later installed, it can analyze by the following commands.

% 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

If GNU Make doesn't installed, use adlint command directly as follows.

% 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

When the analysis process is finished with no errors, the following file will be generated.

  • intro_demo.i — Source files with pre-processed.
  • intro_demo.c.met.csv — Code information of single module analysis and metric information
  • intro_demo.c.msg.csv — Warning message list of single module analysis
  • intro_demo.met.csv — Metric information of cross module analysis
  • intro_demo.msg.csv — Warning message list of cross module analysis

The body of intro_demo.c.msg.csv ,"doesn't reach the control " "divided by zero ".


Next: , Previous: Installation, Up: Top

2 Sample session

2.1 Analyze GNU Screen

2.1.1 Preparation for project

Download ftp://ftp.gnu.org/gnu/screen/screen-4.0.3.tar.gz, unpack the appropriate directory.

% 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 Investigate project

Confirm how to build in analysis runtime environment by building 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 Preparation static analysis

Generate the file template of static analysis by using adlintize command. Edit setting file depending on the analyzed project.

Investigate computer environment, compiler environment of project build.

% 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.

Shows the preset build environment which supports adlintize command. Select near the build environment. In this session, GCC 4.5.1 on GNU/Linux i686 architecture is using.So select 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

Generate file template which required static analysis by using adlintize command.

% 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

Compare make.log file which generated at Project investigation and SOURCES list in GNUmakefile which generated by adlintize, edit equally.

% 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 \

Then find project specific include path from make.log file which generated project investigation. Edit the path to 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 Execute the static analysis

Execute static analysis by using GNUmakefile which generated Preparation static analysis.

% 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 Distributed parallel analysis with distmake


Next: , Previous: Sample Session, Up: Top

3 Command specification


Next: , Up: Command

3.1 adlintize command

3.1.1 Function

Generate the following files which required static analysis by AdLint.

  • GNUmakefile — Make file for GNU make describing the analysis procedure
  • adlint_traits.yml — Traits file for customize AdLint analysis behavior
  • adlint_pinit.h — Initial header file of specific project
  • adlint_cinit.h — Initial header file of compiler
  • adlint_all.sh — Shell script describing the analysis procedure
  • adlint_all.bat — Windows batch file describing the analysis procedure
  • adlint_files.txt — Analyzed file list for shell script and batch file

When it run a adlintize command, all *.c files under the directory will set to SOURCES variable in GNUmakefile.

3.1.2 How to use

When it run a adlintize command at the root directory of analyzed project, generate required files for static analysis to adlint directory.

% 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 command provides some preset build environment. To specify the preset build environment, more information can set automatically to the file templates.

-L option shows the list of preset build environment.

% 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 option can set the preset build environment.

% 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 Help message

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 command

3.2.1 Function

Run both single module analysis ( correspond to the compile phase ) and cross module analysis ( correspond to the link phase ) at once.

It supports the following method to specify the analyzed source code : from command line and set to the list file.

Its activity is same as the following steps. Run a single module analysis by using adlint_sma command with specify all analyzed source file. Then run a cross module analysis by using adlint_cma.

The result of single module analysis, the following files will be generated for each source files.

  • *.i — The result of preprocessed.
  • *.c.msg.csv — Output message of single module analysis.
  • *.c.met.csv — Metric measurement result by single module analysis.
  • *.c.log — Log message of single module analysis.

The result of cross module analysis, the following files will be generated.

  • project_name.msg.csv — Output message of cross module analysis for whole project.
  • project_name.met.csv — Metric measurement result by cross module analysis for whole project.
  • project_name.log — Log message of cross module analysis for whole project.

3.2.2 How to use

When it run a adlint command as follows at the directory which generated the template of setting files by adlintize, run a single module analysis and cross module analysis at once.

% 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

When it collaborate with text editor or integrated development environment, the message can output to stderr without display the progress by not specifying the -v,--verbose option.

% adlint -t adlint_traits.yml -o . -p 1 -l adlint_files.txt
../intro_demo.c:6:9:warning:c_builtin:W0492:UNC:X99:The same identifier name `i' is also used in the member of structure/union, label, tag or normal identifier.
../intro_demo.c:12:13:warning:c_builtin:W0027:UNC:X99:Comparison operation is being made by pointer variable.
../intro_demo.c:16:14:warning:c_builtin:W0422:UNC:X99:Value of the dereferencing pointer may be NULL.
../intro_demo.c:31:13:warning:c_builtin:W0613:UNC:X99:This controlling expression always makes false.
...snip...
../intro_demo.c:55:9:warning:c_builtin:W9001:UNC:X99:Control never reaches to this statement.
../intro_demo.c:2:1:warning:c_builtin:W0071:UNC:X99:Included "../useless_header.h" is not referenced in the translation unit. It can be removed.
../intro_demo.c:61:19:warning:c_builtin:W0628:UNC:X99:A function `int bar(void)' is defined, but this is not used in this project.

3.2.3 Help message

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 command

3.3.1 Function

Execute only single module analysis (correspond to the compile phase) which specified by command line.
For the result of single module analysis, generate the following files for each source file.

  • *.i — The result of preprocessed.
  • *.c.msg.csv — Output message of single module analysis.
  • *.c.met.csv — Metric measurement result by single module analysis.
  • *.c.log — Log message of single module analysis.

3.3.2 How to use

When it run a adlint_sma command as follows at the directory which generated the template of setting files by adlintize, run only single module analysis.

% 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

When it collaborate with text editor or integrated development environment, the message can output to stderr without display the progress by not specifying the -v,--verbose option.

% adlint_sma -t adlint_traits.yml -o . -p 1 ../intro_demo.c
../intro_demo.c:6:9:warning:c_builtin:W0492:UNC:X99:The same identifier name `i' is also used in the member of structure/union, label, tag or normal identifier.
../intro_demo.c:12:13:warning:c_builtin:W0027:UNC:X99:Comparison operation is being made by pointer variable.
../intro_demo.c:16:14:warning:c_builtin:W0422:UNC:X99:Value of the dereferencing pointer may be NULL.
../intro_demo.c:31:13:warning:c_builtin:W0613:UNC:X99:This controlling expression always makes false.
...snip...
../intro_demo.c:55:9:warning:c_builtin:W9001:UNC:X99:Control never reaches to this statement.
../intro_demo.c:2:1:warning:c_builtin:W0071:UNC:X99:Included "../useless_header.h" is not referenced in the translation unit. It can be removed.
../intro_demo.c:61:19:warning:c_builtin:W0628:UNC:X99:A function `int bar(void)' is defined, but this is not used in this project.

3.3.3 Help message

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 command

3.4.1 Function

Execute only cross module analysis (correspond to the link phase) which specified by command line.
For the result of cross module analysis, generate the following files.

  • project_name.msg.csv — Output message of cross module analysis for whole project.
  • project_name.met.csv — Metric measurement result by cross module analysis for whole project.
  • project_name.log — Log message of cross module analysis for whole project.

3.4.2 How to use

When it run a adlint_cma command as follows after finished the single module analysis by adlint_sma command at the directory which generated the template of setting files by adlintize, run only cross module analysis.

% 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

When it collaborate with text editor or integrated development environment, the message can output to stderr without display the progress by not specifying the -v,--verbose option.

% adlint_cma -t adlint_traits.yml -o . intro_demo.c.met.csv
../intro_demo.c:61:19:warning:c_builtin:W0628:UNC:X99:A function `int bar(void)' is defined, but this is not used in this project.

3.4.3 Help message

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 command

3.5.1 Function

It can validate the body of traits file by execute only preprocessing to analyzed source file which set by command line.

3.5.2 How to use

Create the template of setting file by adlintize, and edit the traits file. Then run a adlint_chk command as follows. It can validate the body of traits file by execute preprocessing.

% 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

If the include path of header file doesn't set properly,the error occurs as follows. It can check which header file doesn't included by referring the *.c.msg.csv file which correspond to the source file.

% 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,A header file of <stdio.h> doesn't found.
X,../intro_demo.c,1,1,X0003,Analysis processing has been stopped due to unrecoverable error. For the details, refer to `intro_demo.c.msg.csv' and `intro_demo.c.log'.

3.5.3 Help message

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 Input specification


Next: , Up: Input

4.1 Input files

Analysis action can set the following two kind of files.

traits file
Describe how to process the analysis. Edit by YAML style.
Message definition file
Describe the message catalog.Edit by YAML style.

Traits file sets the path by the command option --traits of adlint , adlint_sma , adlint_cma.

Message definition file is installed in etc/mesg.d at AdLint install path. adlint , adlint_sma , adlint_cma command selects the appropriate the message definition file by following the language which specified in language of message traits.


Next: , Previous: Input Files, Up: Input

4.2 Traits file

Describe Project Traits , Compiler Traits , Linker Traits , Message Traits to a single YAML format setting file ( sample ).

When it run a adlintize command at the root directory of analyzed project, generate the template of traits file for the project, GNUmakefile and shell script.

% 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

You can specify environment variable as items in the traits file to be described.

For example, specify the environment variable ENV_VAR as the item item like below;

  item: $ENV_VAR

And embed environment variables in a string value like below;

  item: "prefix${ENV_VAR}suffix"

You can also specify multiple values of directory pathname list item by one environment variable like below;

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


Next: , Up: Traits

4.2.1 Global Traits

Global Traits can be configured by root items in traits file.

No. Items Styles Contents
1 version string This item represents the format version of this traits file. You should not edit this item manually.
2 exam_packages array of string This item represents list of the source code examination package names to be used by AdLint.

"c_builtin" is a builtin examination package name bundled with AdLint core. New optional source code examination packages will be released in the future.

For example, If you install adlint-exam-c_ansi optional examination package which checks whether the source code complies with ANSI C, you can edit exam_packages item as below;

In this case, only ANSI C compliance check will be run.

     exam_packages:
       - "c_ansi"

In this case, both AdLint builtin check and ANSI C compliance check will be run.

     exam_packages:
       - "c_builtin"
       - "c_ansi"



Next: , Previous: Global Traits, Up: Traits

4.2.2 Project Traits

Project Traits can set under the project_traits in traits file.

No. Items Styles Contents
1 project_name string Set project name.
2 project_root string Set pathname of the project root directory.
3 target_files:inclusion_paths array of string Specify directory paths which contain analysis target source files. An entry can have multiple pathnames with `:' (or `;' on windows) separators.
4 target_files:exclusion_paths array of string Specify directory paths to eliminate analysis target source files under the directory. If omitted, AdLint will check all the files included by the target source files such as 3rd-party library headers under target_files:inclusion_paths. An entry can have multiple pathnames with `:' (or `;' on windows) separators.
5 initial_header string Set the header files which is included at the top of specified source files. For example, project specific macro definition will be described in this file.
6 file_search_paths array of string Set project specific include-file search paths. An entry can have multiple pathnames with `:' (or `;' on windows) separators.
7 coding_style:indent_style string Indent style which is a convention governing the identation of blocks. Select from "K&R", "Allman" and "GNU".

"K&R" style is

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

"Allman" style is

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

"GNU" style is

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


8 coding_style:tab_width integer value Set the appearance number of digits of tab character
9 coding_style:indent_width integer value Set the appearance number of digits of indent
10 file_encoding string Set the character encoding. If the value is not set, process as "ASCII-8BIT".


Next: , Previous: Project Traits, Up: Traits

4.2.3 Compiler Traits

Compiler Traits can set under the compiler_traits in traits file.

No. Items Styles Contents
1 initial_header string Set the header files which is included at the top of specified source files and automatically included before project specific initial_header. This file describes compiler specific macro, type definition and others.
2 file_search_paths array of string Set the compiler specific include-file search paths. An entry can have multiple pathnames with `:' (or `;' on windows) separators.
3 standard_types:char_size integer value Set the size of char type family by bit quantities.
4 standard_types:char_alignment integer value Set the memory alignment of char type family by bit quantities.
5 standard_types:short_size integer value Set the size of short type family by bit quantities.
6 standard_types:short_alignment integer value Set the memory alignment of short family by bit quantities.
7 standard_types:int_size integer value Set the size of int type family by bit quantities.
8 standard_types:int_alignment integer value Set the memory alignment of int type family by bit quantities.
9 standard_types:long_size integer value Set the size of long int type family by bit quantities.
10 standard_types:long_alignment integer value Set the memory alignment of long int type family by bit quantities.
11 standard_types:long_long_size integer value Set the size of long long int type family by bit quantities.
12 standard_types:long_long_alignment integer value Set the memory alignment of long long int type family by bit quantities.
13 standard_types:float_size integer value Set the size of float type family by bit quantities.
14 standard_types:float_alignment integer value Set the memory alignment of float type family by bit quantities.
15 standard_types:double_size integer value Set the size of double type family by bit quantities.
16 standard_types:double_alignment integer value Set the memory alignment of double type family by bit quantities.
17 standard_types:long_double_size integer value Set the size of long double type family by bit quantities.
18 standard_types:long_double_alignment integer value Set the memory alignment of long double type family by bit quantities.
19 standard_types:code_ptr_size integer value Set the size of function pointer by bit quantities.
20 standard_types:code_ptr_alignment integer value Set the memory alignment of function pointer by bit quantities.
21 standard_types:data_ptr_size integer value Set the size of data pointer by bit quantities.
22 standard_types:data_ptr_alignment integer value Set the memory alignment of data pointer by bit quantities.
23 standard_types:char_as_unsigned_char boolean value If `char' type treat as `unsigned char', set true.
24 arithmetic:logical_right_shift boolean value If right shift expression `>>' treat as logical shift instead of arithmetic shift, set true.
25 identifier_max integer value Set the maximum number of length which compiler can identifier.
26 extension_substitutions map of string Set the token replacement pattern to adjust compiler specific extension. AdLint puts the warning message W0061 all uses of this extension. If `__attribute__ ( arbitrary token row )' delete after pre-process and puts the warning W0061, set as follows.
     extension_substitutions:
       "__attribute__(__adlint__any)": ""

And if the token `__restrict' replaces `restrict' and put the warning W0061, set as follows.

     extension_substitutions:
       "__restrict": "restrict"


27 arbitrary_substitutions map of string Same as extension_substitutions, replace the token after pre-process, the difference is doesn't put the warning W0061.


Next: , Previous: Compiler Traits, Up: Traits

4.2.4 Linker Traits

Linker Traits sets under linker_traits items.

No. Items Styles Contents
1 identifier_max integer value Set the maximum number of length which linker can identifier.
2 identifier_ignore_case boolean value Set whether check case sensitive by linker when identifier external symbol.


Previous: Linker Traits, Up: Traits

4.2.5 Message Traits

Message Traits can set under the message_traits in traits file. .

No. Items Styles Contents
1 language string Set the language of message body.(Currently) it available "en_US" or "ja_JP".
2 individual_suppression boolean This item enables message suppression by source code annotations.

In case of true, message suppression by annotations will be enabled.

3 exclusion:categories array of string This item represents excluding code checks by its message categories.
4 exclusion:severities regexp string This item represents excluding code checks by its message severities.
5 exclusion:messages map of Message ID and string This item represents excluding code checks by its message ID.

Because a message ID is not unique in multiple examination packages, you should also specify the name of the examination package including the message.

6 inclusion:messages map of Message ID and string This item represents messages which is excluded by settings of exclusion section but will be used by AdLint.

For example, you can bring back the specified code checks which is excluded by exclusion:categories.

7 change_list map of Message ID and changed contents This item represents overriding contents of existing one in the message definition.

For example, you can change contents of W9999 message in "c_builtin" examination package as below;

     change_list:
       W9999:
         package: "c_builtin"
         classes:
           - "<name of new message category #1>:<severity of this message #1>"
           - "<name of new message category #2>:<severity of this message #2>"
         format: "new message format of this message."


Next: , Previous: Traits, Up: Input

4.3 Message Definition file.

Describe all error and warning message to setting file by format. Normally this file doesn't edit directly. If it need to change the message body, set the changes to change_list in traits file.


Previous: Message Definition, Up: Input

4.4 Source Code Annotation

You can write an annotation which controls AdLint's analysis behavior as an ordinary comment of the programming language.

4.4.1 Warning message suppression annotation

An annotation starts with ADLINT:SF in an ordinary comment specifies that messages listed in the annotation of the annotated file will be suppressed.

An annotation starts with ADLINT:SL in an ordinary comment specifies that messages listed in the annotation of the annotated line will be suppressed.

The following describes format and usage of the annotation.

• Common definitions

     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 : any string specified in exam_packages of the traits file.

• File-wise message suppressor

     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 message suppressor

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

• Sample code

/* 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 Output specification


Next: , Up: Output

5.1 Output files

Print the result of single module analysis to the following four different files.

No. Name File name Contents
1 Preprocessed source <source file name except the extension>.i The line beginning with # is line marker.
2 metrics file <source file name>.met.csv Print the metrics and the code information by CSV format.
3 message file <source file name>.msg.csv Print the error and the warning message by CSV format.
4 Log file <source file name>.log Print the log of single module analysis.

Print the result of cross module analysis to the following three different files.

No. Name File name Contents
1 metrics file <project name>.met.csv Print the metrics information by CSV format.
2 message file <project name>.msg.csv Print the warning message by CSV format.
3 Log file <project name>.log Print the log of cross module analysis.


Next: , Previous: Output Files, Up: Output

5.2 Common definition

     version_number
       : major_version '.' minor_version '.' patch_level
     
     major_version : integer value
     
     minor_version : integer value
     
     patch_level : integer value
     
     exec_timestamp : Year '-' Month '-' Day ' ' Hour ':' Minute ':' Second ':' Time zone
     
     exec_working_directory : Full path name of run the analysis.
     
     new_line : line feed string depends on runtime environment.
     
     file_path : file path name depends on runtime environment.
     
     line_no : integer value
     
     lines : integer value
     
     column_no : integer value
     
     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 : arbitrary string
     
     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 : arbitrary string


Next: , Previous: Common, Up: Output

5.3 metrics file

5.3.1 Version records

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

• Output example

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

5.3.2 Declaration records

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

• Type definition records

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

• Global variable declaration Record

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

• Function declaration record

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

• Output example

 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 Declaration records

     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"

• Variable declaration records

     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

• Function definition records

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

• Macro definition records

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

• Label definition record

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

• Output example

 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_record
       : initialization_head ',' location ',' variable_name ',' initializer_rep
     
     initialization_head : "INI"

• Output example

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 records

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

• Output example

 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 records

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

• Include records

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

• Caller function records

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

• external reference records

     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

• Output example

 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 records

     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

• Output example

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_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"
       | "#"

• Output example

 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 value records

     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"  <- Number of statements
       | "FL_FUNC"  <- Number of functions
     
     func_metric_name
       : "FN_STMT"  <- Number of statements
       | "FN_UNRC"  <- Number of unreached statements
       | "FN_LINE"  <- Number of lines
       | "FN_PARA"  <- Number of parameters
       | "FN_UNUV"  <- Number of not use /not reuse variables
       | "FN_CSUB"  <- Location number of call function
       | "FN_CALL"  <- Location number of called from function
       | "FN_GOTO"  <- Number of goto statement
       | "FN_RETN"  <- Number of return point in a function
       | "FN_UELS"  <- Number of 'if' statement unless 'else'
       | "FN_NEST"  <- Maximum number of nest of control flow graph
       | "FN_PATH"  <- Presumed  number of static path
       | "FN_CYCM"  <- Cyclomatic complexity
     
     metric_value : integer value


Previous: Metrics File, Up: Output

5.4 message file

     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 Message list


Next: , Up: Messages

6.1 X0001

6.1.1 Message body

An unknown exception `%s' is found.

6.1.2 Content

If you find this message, please send appropriate source file, traits file, message file and log file to AdLint development team. It will lead to improve quality of AdLint.

6.1.3 Sample code

None.

6.1.4 Related message

None.

6.1.5 Since

1.0.0


Next: , Previous: X0001, Up: Messages

6.2 X0002

6.2.1 Message body

An illegal message ID `%s' is found.

6.2.2 Content

There's a possibility that the message catalog which AdLint using in internal is broken. Please reinstall AdLint. If you still cannot solve this issue, please report it to AdLint development team.

6.2.3 Sample code

None.

6.2.4 Related message

None.

6.2.5 Since

1.0.0


Next: , Previous: X0002, Up: Messages

6.3 X0003

6.3.1 Message body

Analysis processing has been stopped due to unrecoverable error. For the details, refer to `%s' and `%s'.

6.3.2 Content

AdLint cannot process the analysis. This error occurred because it cannot find header file or it cannot parse the source file. This error can be solve by reviewing the traits file.

6.3.3 Sample code

None.

6.3.4 Related message

None.

6.3.5 Since

1.0.0


Next: , Previous: X0003, Up: Messages

6.4 X0004

6.4.1 Message body

An illegal message format `%s' is found.

6.4.2 Content

There's a possibility that the message catalog which AdLint using in internal is broken. Please reinstall AdLint. If you still cannot solve this issue, please report it to AdLint development team.

6.4.3 Sample code

None.

6.4.4 Related message

None.

6.4.5 Since

1.0.0


Next: , Previous: X0004, Up: Messages

6.5 E0004

6.5.1 Message body

Corresponding #endif doesn't found.

6.5.2 Content

This error occurred when it cannot find #endif directive correspond to #if, #ifdef, #ifndef directive.

6.5.3 Sample code

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

6.5.4 Related message

None.

6.5.5 Since

1.0.0


Next: , Previous: E0004, Up: Messages

6.6 E0007

6.6.1 Message body

Syntax error is found in conditional expression token `%s'. Conditional expression evaluate as false.

6.6.2 Content

This message will be output when it find syntax error while evaluating the conditional expression of #if, #elif directive.

6.6.3 Sample code

None.

6.6.4 Related message

None.

6.6.5 Since

1.0.0


Next: , Previous: E0007, Up: Messages

6.7 E0008

6.7.1 Message body

Syntax error is found in token `%s'.

6.7.2 Content

This message will be output when it cannot parse preprocessed source file.

If you use compiler specific extension to build, it can be solve by deleting specific token row in traits file.

6.7.3 Sample code

None.

6.7.4 Related message

None.

6.7.5 Since

1.0.0


Next: , Previous: E0008, Up: Messages

6.8 E0009

6.8.1 Message body

A header file of <%s> doesn't found.

6.8.2 Content

It includes header file in #include <...> directive, but it doesn't exist at the include path specified at traits file.

This error can be solve by reviewing the setting of include path in traits file.

6.8.3 Sample code

None.

6.8.4 Related message

None.

6.8.5 Since

1.0.0


Next: , Previous: E0009, Up: Messages

6.9 E0010

6.9.1 Message body

A header file of \%s\ doesn't found.

6.9.2 Content

It includes header file in #include "..." directive, but it doesn't exist at the include path specified at traits file.

This error can be solve by reviewing the setting of include path in traits file.

6.9.3 Sample code

None.

6.9.4 Related message

None.

6.9.5 Since

1.0.0


Next: , Previous: E0010, Up: Messages

6.10 E0013

6.10.1 Message body

Statement cannot include in syntax.

6.10.2 Content

This message will be output when GCC extension (Statement Exprs) is using.

6.10.3 Sample code

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

6.10.4 Related message

None.

6.10.5 Since

1.0.0


Next: , Previous: E0013, Up: Messages

6.11 E0014

6.11.1 Message body

'&&' monadic operator to get a label address is GCC original add-on.

6.11.2 Content

This message will be output when GCC extension (Labels as Values) is using.

6.11.3 Sample code

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

6.11.4 Related message

  • E0015 'goto' statement with specified label address is GCC original add-on.

6.11.5 Since

1.0.0


Next: , Previous: E0014, Up: Messages

6.12 E0015

6.12.1 Message body

'goto' statement with specified label address is GCC original add-on.

6.12.2 Content

This message will be output when GCC extension (Labels as Values) is using.

6.12.3 Sample code

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

6.12.4 Related message

  • E0014 '&&' monadic operator to get a label address is GCC original add-on.

6.12.5 Since

1.0.0


Next: , Previous: E0015, Up: Messages

6.13 E0016

6.13.1 Message body

Unfinished comment block is found.

6.13.2 Content

This message will be output when the block comment begging with /* is not finished by */.

6.13.3 Sample code

None.

6.13.4 Related message

None.

6.13.5 Since

1.0.0


Next: , Previous: E0016, Up: Messages

6.14 E0018

6.14.1 Message body

Extra semicolon appears in the global scope.

6.14.2 Content

This message indicates that a standalone semicolon appears in the global scope.

6.14.3 Sample code

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

6.14.4 Related message

None.

6.14.5 Since

3.2.6


Next: , Previous: E0018, Up: Messages

6.15 W0001

6.15.1 Message body

Nesting depth of round bracket `()' exceed 32. This program doesn't meet the strict ISO C90 standards of the term.

6.15.2 Content

Under construction.

6.15.3 Sample code

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

6.15.4 Related message

None.

6.15.5 Since

1.0.0


Next: , Previous: W0001, Up: Messages

6.16 W0002

6.16.1 Message body

Identifier and declaration of formal argument described separately in the definition of function `%s()' is old style.

6.16.2 Content

Under construction.

6.16.3 Sample code

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

6.16.4 Related message

None.

6.16.5 Since

1.0.0


Next: , Previous: W0002, Up: Messages

6.17 W0003

6.17.1 Message body

This switch statement doesn't have default label.

6.17.2 Content

Under construction.

6.17.3 Sample code

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

6.17.4 Related message

None.

6.17.5 Since

1.0.0


Next: , Previous: W0003, Up: Messages

6.18 W0007

6.18.1 Message body

'break' or 'return' statement doesn't found in the last 'case' or 'default' section.

6.18.2 Content

Under construction.

6.18.3 Sample code

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 Related message

None.

6.18.5 Since

1.0.0


Next: , Previous: W0007, Up: Messages

6.19 W0010

6.19.1 Message body

There is a side-effect in this ternary operator (conditional operator).

6.19.2 Content

Under construction.

6.19.3 Sample code

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

6.19.4 Related message

None.

6.19.5 Since

1.0.0


Next: , Previous: W0010, Up: Messages

6.20 W0013

6.20.1 Message body

'continue' statement is used in repetition statement.

6.20.2 Content

Under construction.

6.20.3 Sample code

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 Related message

None.

6.20.5 Since

1.0.0


Next: , Previous: W0013, Up: Messages

6.21 W0016

6.21.1 Message body

The field width of conversion specifier exceeds 509 characters in 'printf' function.

6.21.2 Content

Under construction.

6.21.3 Sample code

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

6.21.4 Related message

  • W0017 The field width of conversion specifier exceeds 509 characters in 'scanf' function.

6.21.5 Since

1.0.0


Next: , Previous: W0016, Up: Messages

6.22 W0017

6.22.1 Message body

The field width of conversion specifier exceeds 509 characters in 'scanf' function.

6.22.2 Content

Under construction.

6.22.3 Sample code

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

6.22.4 Related message

  • W0016 The field width of conversion specifier exceeds 509 characters in 'printf' function.

6.22.5 Since

1.0.0


Next: , Previous: W0017, Up: Messages

6.23 W0018

6.23.1 Message body

This accuracy width of conversion specifier exceeds 509 characters.

6.23.2 Content

Under construction.

6.23.3 Sample code

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

6.23.4 Related message

None.

6.23.5 Since

1.0.0


Next: , Previous: W0018, Up: Messages

6.24 W0019

6.24.1 Message body

This pointer cast is danger because it delete const qualifier.

6.24.2 Content

Under construction.

6.24.3 Sample code

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

6.24.4 Related message

None.

6.24.5 Since

1.0.0


Next: , Previous: W0019, Up: Messages

6.25 W0021

6.25.1 Message body

This pointer cast is danger because it delete volatile qualifier.

6.25.2 Content

Under construction.

6.25.3 Sample code

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

6.25.4 Related message

None.

6.25.5 Since

1.0.0


Next: , Previous: W0021, Up: Messages

6.26 W0023

6.26.1 Message body

Arithmetic operation is being made by pointer variable.

6.26.2 Content

Under construction.

6.26.3 Sample code

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

6.26.4 Related message

  • W0024 Increment or decrement is being made by pointer variable.

6.26.5 Since

1.0.0


Next: , Previous: W0023, Up: Messages

6.27 W0024

6.27.1 Message body

Increment or decrement is being made by pointer variable.

6.27.2 Content

Under construction.

6.27.3 Sample code

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

6.27.4 Related message

  • W0023 Arithmetic operation is being made by pointer variable.

6.27.5 Since

1.0.0


Next: , Previous: W0024, Up: Messages

6.28 W0025

6.28.1 Message body

`%s' is already included by this file directly.

6.28.2 Content

Under construction.

6.28.3 Sample code

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

6.28.4 Related message

  • W0026 `%s' is already included by this file indirectly.

6.28.5 Since

1.0.0


Next: , Previous: W0025, Up: Messages

6.29 W0026

6.29.1 Message body

`%s' is already included by this file indirectly.

6.29.2 Content

Under construction.

6.29.3 Sample code

test.h

#include "test2.h"

test.c

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

6.29.4 Related message

  • W0025 `%s' is already included by this file directly.

6.29.5 Since

1.0.0


Next: , Previous: W0026, Up: Messages

6.30 W0027

6.30.1 Message body

Comparison operation is being made by pointer variable.

6.30.2 Content

Under construction.

6.30.3 Sample code

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

6.30.4 Related message

None.

6.30.5 Since

1.0.0


Next: , Previous: W0027, Up: Messages

6.31 W0028

6.31.1 Message body

Dereferencing a pointer constant of NULL.

6.31.2 Content

Under construction.

6.31.3 Sample code

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

6.31.4 Related message

None.

6.31.5 Since

1.0.0


Next: , Previous: W0028, Up: Messages

6.32 W0030

6.32.1 Message body

Arithmetic operation is being made by NULL pointer.

6.32.2 Content

Under construction.

6.32.3 Sample code

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

6.32.4 Related message

None.

6.32.5 Since

1.0.0


Next: , Previous: W0030, Up: Messages

6.33 W0031

6.33.1 Message body

A formal argument `%s' is not used in this function.

6.33.2 Content

Under construction.

6.33.3 Sample code

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

6.33.4 Related message

None.

6.33.5 Since

1.0.0


Next: , Previous: W0031, Up: Messages

6.34 W0033

6.34.1 Message body

A label of `%s:' is not used in this function. It might be removed.

6.34.2 Content

Under construction.

6.34.3 Sample code

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

6.34.4 Related message

None.

6.34.5 Since

1.0.0


Next: , Previous: W0033, Up: Messages

6.35 W0035

6.35.1 Message body

Right operand of “&&' or `||' must arithmetic type or pointer type.

6.35.2 Content

Under construction.

6.35.3 Sample code

struct STR {
    int x;
    int y;
};

extern struct STR str;

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

6.35.4 Related message

None.

6.35.5 Since

1.0.0


Next: , Previous: W0035, Up: Messages

6.36 W0036

6.36.1 Message body

The number of qualification operator exceeds 12.This program doesn't meet the strict ISO C90 standards of the term.

6.36.2 Content

Under construction.

6.36.3 Sample code

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

6.36.4 Related message

None.

6.36.5 Since

1.0.0


Next: , Previous: W0036, Up: Messages

6.37 W0037

6.37.1 Message body

Nest of structure or union exceeds 15. This program doesn't meet the strict ISO C90 standards of the term.

6.37.2 Content

Under construction.

6.37.3 Sample code

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 Related message

None.

6.37.5 Since

1.0.0


Next: , Previous: W0037, Up: Messages

6.38 W0038

6.38.1 Message body

The size of object `%s' exceeds 32767 bytes. This program doesn't meet the strict ISO C90 standards of the term.

6.38.2 Content

Under construction.

6.38.3 Sample code

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

6.38.4 Related message

None.

6.38.5 Since

1.0.0


Next: , Previous: W0038, Up: Messages

6.39 W0039

6.39.1 Message body

The number of local identifier in the block exceeds 127. This program doesn't meet the strict ISO C90 standards of the term.

6.39.2 Content

Under construction.

6.39.3 Sample code

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 Related message

None.

6.39.5 Since

1.0.0


Next: , Previous: W0039, Up: Messages

6.40 W0040

6.40.1 Message body

A bit field is declared without 'signed' or 'unsigned'.

6.40.2 Content

Under construction.

6.40.3 Sample code

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

6.40.4 Related message

None.

6.40.5 Since

1.0.0


Next: , Previous: W0040, Up: Messages

6.41 W0041

6.41.1 Message body

The number of member of structure or union exceeds 127.This program doesn't meet the strict ISO C90 standards of the term.

6.41.2 Content

Under construction.

6.41.3 Sample code

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 Related message

None.

6.41.5 Since

1.0.0


Next: , Previous: W0041, Up: Messages

6.42 W0042

6.42.1 Message body

The number of enumeration literal exceeds 127. This program doesn't meet the strict ISO C90 standards of the term.

6.42.2 Content

Under construction.

6.42.3 Sample code

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 Related message

None.

6.42.5 Since

1.0.0


Next: , Previous: W0042, Up: Messages

6.43 W0043

6.43.1 Message body

The initial value of the array is short of declared array's size. The residual array will be initialized by zero.

6.43.2 Content

Under construction.

6.43.3 Sample code

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

6.43.4 Related message

None.

6.43.5 Since

1.0.0


Next: , Previous: W0043, Up: Messages

6.44 W0049

6.44.1 Message body

Nest of control structure exceeds 15. This program doesn't meet the strict ISO C90 standards of the term.

6.44.2 Content

Under construction.

6.44.3 Sample code

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 Related message

None.

6.44.5 Since

1.0.0


Next: , Previous: W0049, Up: Messages

6.45 W0050

6.45.1 Message body

The number of 'case' label exceeds 257. This program doesn't meet the strict ISO C90 standards of the term.

6.45.2 Content

Under construction.

6.45.3 Sample code

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

  ...snip...

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

6.45.4 Related message

None.

6.45.5 Since

1.0.0


Next: , Previous: W0050, Up: Messages

6.46 W0051

6.46.1 Message body

An external identifier `%s' cannot distinguish other identifier name from the range of number of characters defined in linker property.

6.46.2 Content

Under construction.

6.46.3 Sample code

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

6.46.4 Related message

  • C0001 A warning is detected as a pair of this identifier `%s'.

6.46.5 Since

1.0.0


Next: , Previous: W0051, Up: Messages

6.47 W0052

6.47.1 Message body

An identifier `%s' cannot distinguish other identifier name from the range of number of characters defined in compile property.

6.47.2 Content

Under construction.

6.47.3 Sample code

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

6.47.4 Related message

  • C0001 A warning is detected as a pair of this identifier `%s'.

6.47.5 Since

1.0.0


Next: , Previous: W0052, Up: Messages

6.48 W0053

6.48.1 Message body

Nest of `#include \%s\' exceeds 8.This program doesn't meet the strict ISO C90 standards of the term.

6.48.2 Content

Under construction.

6.48.3 Sample code

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 Related message

None.

6.48.5 Since

1.0.0


Next: , Previous: W0053, Up: Messages

6.49 W0054

6.49.1 Message body

The maximum number of `#if...' nest exceeds 8. This program doesn't meet the strict ISO C90 standards of the term.

6.49.2 Content

Under construction.

6.49.3 Sample code

#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 Related message

None.

6.49.5 Since

1.0.0


Next: , Previous: W0054, Up: Messages

6.50 W0055

6.50.1 Message body

The number of macro definition exceeds 1024. This program doesn't meet the strict ISO C90 standards of the term.

6.50.2 Content

Under construction.

6.50.3 Sample code

#define MACRO_1
#define MACRO_2
#define MACRO_3

...snip...

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

6.50.4 Related message

None.

6.50.5 Since

1.0.0


Next: , Previous: W0055, Up: Messages

6.51 W0056

6.51.1 Message body

The number of formal argument of function-like macro exceeds 31.This program doesn't meet the strict ISO C90 standards of the term.

6.51.2 Content

Under construction.

6.51.3 Sample code

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

6.51.4 Related message

None.

6.51.5 Since

1.0.0


Next: , Previous: W0056, Up: Messages

6.52 W0057

6.52.1 Message body

The number of actual argument of function-like macro exceeds 31.This program doesn't meet the strict ISO C90 standards of the term.

6.52.2 Content

Under construction.

6.52.3 Sample code

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

6.52.4 Related message

None.

6.52.5 Since

1.0.0


Next: , Previous: W0057, Up: Messages

6.53 W0058

6.53.1 Message body

The number of characters of string literal exceeds 509.This program doesn't meet the strict ISO C90 standards of the term.

6.53.2 Content

Under construction.

6.53.3 Sample code

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

6.53.4 Related message

None.

6.53.5 Since

1.0.0


Next: , Previous: W0058, Up: Messages

6.54 W0059

6.54.1 Message body

Ctrl-M(^M) control character is found at the end of line.

6.54.2 Content

Under construction.

6.54.3 Sample code

None.

6.54.4 Related message

  • W0060 Ctrl-Z(^Z) control character is found in this file.

6.54.5 Since

1.0.0


Next: , Previous: W0059, Up: Messages

6.55 W0060

6.55.1 Message body

Ctrl-Z(^Z) control character is found in this file.

6.55.2 Content

Under construction.

6.55.3 Sample code

None.

6.55.4 Related message

  • W0059 Ctrl-M(^M) control character is found at the end of line.

6.55.5 Since

1.0.0


Next: , Previous: W0060, Up: Messages

6.56 W0061

6.56.1 Message body

`%s' is not actual reserved keyword. It will be considered as language extension and ignored.

6.56.2 Content

Under construction.

6.56.3 Sample code

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

6.56.4 Related message

  • W0062 `__typeof__' is not supported ISO C standards. It will be considered as language extension.
  • W0063 `__alignof__'is not supported ISO C standards. It will be considered as language extension..

6.56.5 Since

1.0.0


Next: , Previous: W0061, Up: Messages

6.57 W0062

6.57.1 Message body

`__typeof__' is not supported ISO C standards. It will be considered as language extension.

6.57.2 Content

Under construction.

6.57.3 Sample code

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

6.57.4 Related message

  • W0061 `%s' is not actual reserved keyword. It will be considered as language extension and ignored.
  • W0063 `__alignof__'is not supported ISO C standards. It will be considered as language extension..

6.57.5 Since

1.0.0


Next: , Previous: W0062, Up: Messages

6.58 W0063

6.58.1 Message body

`__alignof__'is not supported ISO C standards. It will be considered as language extension..

6.58.2 Content

Under construction.

6.58.3 Sample code

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

6.58.4 Related message

  • W0061 `%s' is not actual reserved keyword. It will be considered as language extension and ignored.
  • W0062 `__typeof__' is not supported ISO C standards. It will be considered as language extension.

6.58.5 Since

1.0.0


Next: , Previous: W0063, Up: Messages

6.59 W0064

6.59.1 Message body

A binary integer literal is used. This is the language extension.

6.59.2 Content

Under construction.

6.59.3 Sample code

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

6.59.4 Related message

None.

6.59.5 Since

1.0.0


Next: , Previous: W0064, Up: Messages

6.60 W0065

6.60.1 Message body

Must not cast left operand of assignment operator.

6.60.2 Content

Under construction.

6.60.3 Sample code

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

6.60.4 Related message

None.

6.60.5 Since

1.0.0


Next: , Previous: W0065, Up: Messages

6.61 W0066

6.61.1 Message body

`main()' function must `int (void)' or `int (int, char *[])'.

6.61.2 Content

Under construction.

6.61.3 Sample code

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

6.61.4 Related message

None.

6.61.5 Since

1.0.0


Next: , Previous: W0066, Up: Messages

6.62 W0067

6.62.1 Message body

Directly access to the member of nested structure. This is the language extension.

6.62.2 Content

Under construction.

6.62.3 Sample code

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

bbb.ma = 1; /* W0067 */

6.62.4 Related message

  • W0068 `.' is used to get access to bit. This is the language extension.

6.62.5 Since

1.0.0


Next: , Previous: W0067, Up: Messages

6.63 W0068

6.63.1 Message body

`.' is used to get access to bit. This is the language extension.

6.63.2 Content

Under construction.

6.63.3 Sample code

unsigned short a;

a.2 = 0; /* W0068 */

6.63.4 Related message

  • W0067 Directly access to the member of nested structure. This is the language extension.

6.63.5 Since

1.0.0


Next: , Previous: W0068, Up: Messages

6.64 W0069

6.64.1 Message body

`/*' is found in the beginning with `/*' comments. Nested comment doesn't allowed in ISO C standards.

6.64.2 Content

Under construction.

6.64.3 Sample code

/* /* W0069 */ */

6.64.4 Related message

None.

6.64.5 Since

1.0.0


Next: , Previous: W0069, Up: Messages

6.65 W0070

6.65.1 Message body

Included <%s> is not referenced in the translation unit. It can be removed.

6.65.2 Content

Under construction.

6.65.3 Sample code

None.

6.65.4 Related message

  • W0071 Included "%s" is not referenced in the translation unit. It can be removed.

6.65.5 Since

1.0.0


Next: , Previous: W0070, Up: Messages

6.66 W0071

6.66.1 Message body

Included \%s\ is not referenced in the translation unit. It can be removed.

6.66.2 Content

Under construction.

6.66.3 Sample code

None.

6.66.4 Related message

  • W0070 Included <%s> is not referenced in the translation unit. It can be removed.

6.66.5 Since

1.0.0


Next: , Previous: W0071, Up: Messages

6.67 W0072

6.67.1 Message body

A character except for basic source character is used in header file name.

6.67.2 Content

Under construction.

6.67.3 Sample code

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

6.67.4 Related message

None.

6.67.5 Since

1.0.0


Next: , Previous: W0072, Up: Messages

6.68 W0073

6.68.1 Message body

No include guard in this include file.

6.68.2 Content

Under construction.

6.68.3 Sample code

None.

6.68.4 Related message

None.

6.68.5 Since

1.0.0


Next: , Previous: W0073, Up: Messages

6.69 W0076

6.69.1 Message body

Hexadecimal constant without `U' or `u' suffix.

6.69.2 Content

Under construction.

6.69.3 Sample code

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

6.69.4 Related message

None.

6.69.5 Since

1.0.0


Next: , Previous: W0076, Up: Messages

6.70 W0077

6.70.1 Message body

Lower case `l' is added to integer or floating-point number.

6.70.2 Content

Under construction.

6.70.3 Sample code

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

6.70.4 Related message

None.

6.70.5 Since

1.0.0


Next: , Previous: W0077, Up: Messages

6.71 W0078

6.71.1 Message body

A function is declared without list of formal argument.

6.71.2 Content

Under construction.

6.71.3 Sample code

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

6.71.4 Related message

None.

6.71.5 Since

1.0.0


Next: , Previous: W0078, Up: Messages

6.72 W0079

6.72.1 Message body

This array cannot keep final character `\0' which initial value of string literal.

6.72.2 Content

Under construction.

6.72.3 Sample code

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

6.72.4 Related message

None.

6.72.5 Since

1.0.0


Next: , Previous: W0079, Up: Messages

6.73 W0080

6.73.1 Message body

A global object which const qualified is defined without explicitly initialized.

6.73.2 Content

Under construction.

6.73.3 Sample code

const int num; /* W0080 */

6.73.4 Related message

None.

6.73.5 Since

1.0.0


Next: , Previous: W0080, Up: Messages

6.74 W0081

6.74.1 Message body

A monadic operator `-' becomes unsigned type if it use 'unsigned int' type, 'unsigned long' type or 'unsigned long' type operand.

6.74.2 Content

Under construction.

6.74.3 Sample code

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

6.74.4 Related message

None.

6.74.5 Since

1.0.0


Next: , Previous: W0081, Up: Messages

6.75 W0082

6.75.1 Message body

Unary operator `-' is applied to an operand whose underlying type `%s' is unsigned.

6.75.2 Content

Under construction.

6.75.3 Sample code

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

6.75.4 Related message

None.

6.75.5 Since

1.0.0


Next: , Previous: W0082, Up: Messages

6.76 W0084

6.76.1 Message body

Left operand of this comma operator `,' doesn't described the statement which has side-effects.

6.76.2 Content

Under construction.

6.76.3 Sample code

int a = 0;
int b = 1;

a, b++; /* W0084 */

6.76.4 Related message

  • W0085 This statement doesn't have side-effects. It is highly possible that it having error.
  • W0086 Second or third operand is verbose statement which doesn't have side-effects in ternary operator (conditional operator).
  • W0087 The right side statement of comma operator is verbose statement which doesn't have side-effects.
  • W0088 The right side statement of logical operator is verbose statement which doesn't have side-effects.

6.76.5 Since

1.0.0


Next: , Previous: W0084, Up: Messages

6.77 W0085

6.77.1 Message body

This statement doesn't have side-effects. It is highly possible that it having error.

6.77.2 Content

Under construction.

6.77.3 Sample code

a; /* W0085 */

6.77.4 Related message

  • W0084 Left operand of this comma operator `,' doesn't described the statement which has side-effects.
  • W0086 Second or third operand is verbose statement which doesn't have side-effects in ternary operator (conditional operator).
  • W0087 The right side statement of comma operator is verbose statement which doesn't have side-effects.
  • W0088 The right side statement of logical operator is verbose statement which doesn't have side-effects.

6.77.5 Since

1.0.0


Next: , Previous: W0085, Up: Messages

6.78 W0086

6.78.1 Message body

Second or third operand is verbose statement which doesn't have side-effects in ternary operator (conditional operator).

6.78.2 Content

Under construction.

6.78.3 Sample code

int a;
int b;

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

6.78.4 Related message

  • W0084 Left operand of this comma operator `,' doesn't described the statement which has side-effects.
  • W0085 This statement doesn't have side-effects. It is highly possible that it having error.
  • W0087 The right side statement of comma operator is verbose statement which doesn't have side-effects.
  • W0088 The right side statement of logical operator is verbose statement which doesn't have side-effects.

6.78.5 Since

1.0.0


Next: , Previous: W0086, Up: Messages

6.79 W0087

6.79.1 Message body

The right side statement of comma operator is verbose statement which doesn't have side-effects.

6.79.2 Content

Under construction.

6.79.3 Sample code

int a = 0;
int b = 1;

a++, b; /* W0087 */

6.79.4 Related message

  • W0084 Left operand of this comma operator `,' doesn't described the statement which has side-effects.
  • W0085 This statement doesn't have side-effects. It is highly possible that it having error.
  • W0086 Second or third operand is verbose statement which doesn't have side-effects in ternary operator (conditional operator).
  • W0088 The right side statement of logical operator is verbose statement which doesn't have side-effects.

6.79.5 Since

1.0.0


Next: , Previous: W0087, Up: Messages

6.80 W0088

6.80.1 Message body

The right side statement of logical operator is verbose statement which doesn't have side-effects.

6.80.2 Content

Under construction.

6.80.3 Sample code

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

6.80.4 Related message

  • W0084 Left operand of this comma operator `,' doesn't described the statement which has side-effects.
  • W0085 This statement doesn't have side-effects. It is highly possible that it having error.
  • W0086 Second or third operand is verbose statement which doesn't have side-effects in ternary operator (conditional operator).
  • W0087 The right side statement of comma operator is verbose statement which doesn't have side-effects.

6.80.5 Since

1.0.0


Next: , Previous: W0088, Up: Messages

6.81 W0093

6.81.1 Message body

This expression may cause division-by-zero.

6.81.2 Content

Under construction.

6.81.3 Sample code

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

6.81.4 Related message

  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.81.5 Since

1.0.0


Next: , Previous: W0093, Up: Messages

6.82 W0096

6.82.1 Message body

It divided by a constant expression which definitely zero.

6.82.2 Content

Under construction.

6.82.3 Sample code

#define A (0)

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

6.82.4 Related message

  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.82.5 Since

1.0.0


Next: , Previous: W0096, Up: Messages

6.83 W0097

6.83.1 Message body

This expression may cause division-by-zero.

6.83.2 Content

Under construction.

6.83.3 Sample code

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

6.83.4 Related message

  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.83.5 Since

1.0.0


Next: , Previous: W0097, Up: Messages

6.84 W0100

6.84.1 Message body

The variable `%s' has not been reassigned since the initial value is assigned. It may be able to be defined as `const' with an initial value.

6.84.2 Content

Under construction.

6.84.3 Sample code

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

6.84.4 Related message

None.

6.84.5 Since

1.0.0


Next: , Previous: W0100, Up: Messages

6.85 W0101

6.85.1 Message body

An address of auto variable is substituted for a pointer which has a longer life. This program is danger.

6.85.2 Content

Under construction.

6.85.3 Sample code

extern long *ptr;

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

6.85.4 Related message

None.

6.85.5 Since

1.0.0


Next: , Previous: W0101, Up: Messages

6.86 W0102

6.86.1 Message body

An address of auto variable is returned via formal argument to functions. This program is danger.

6.86.2 Content

Under construction.

6.86.3 Sample code

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

6.86.4 Related message

  • W0103 An address of auto variable is returned as return value from a function. This program is danger.

6.86.5 Since

1.0.0


Next: , Previous: W0102, Up: Messages

6.87 W0103

6.87.1 Message body

An address of auto variable is returned as return value from a function. This program is danger.

6.87.2 Content

Under construction.

6.87.3 Sample code

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

6.87.4 Related message

  • W0102 An address of auto variable is returned via formal argument to functions. This program is danger.

6.87.5 Since

1.0.0


Next: , Previous: W0103, Up: Messages

6.88 W0104

6.88.1 Message body

The value of formal argument `%s' is not change. It can be declarable with 'const'.

6.88.2 Content

Under construction.

6.88.3 Sample code

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

6.88.4 Related message

  • W0105 The object which points the formal argument `%s' is not change. It can be declaring as pointer type which points const object.

6.88.5 Since

1.0.0


Next: , Previous: W0104, Up: Messages

6.89 W0105

6.89.1 Message body

The object which points the formal argument `%s' is not change. It can be declaring as pointer type which points const object.

6.89.2 Content

Under construction.

6.89.3 Sample code

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

6.89.4 Related message

  • W0104 The value of formal argument `%s' is not change. It can be declarable with 'const'.

6.89.5 Since

1.0.0


Next: , Previous: W0105, Up: Messages

6.90 W0107

6.90.1 Message body

An address of auto variable is substituted for local pointer with 'static' option. This program is danger.

6.90.2 Content

Under construction.

6.90.3 Sample code

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

    p = &b; /* W0107 */
}

6.90.4 Related message

None.

6.90.5 Since

1.0.0


Next: , Previous: W0107, Up: Messages

6.91 W0108

6.91.1 Message body

An assignment-expression appears in the logical expression.

6.91.2 Content

Under construction.

6.91.3 Sample code

int a;
int b;

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

6.91.4 Related message

None.

6.91.5 Since

1.0.0


Next: , Previous: W0108, Up: Messages

6.92 W0109

6.92.1 Message body

The definition of this function doesn't found. It consider it was omitted, and insert `extern int %s()'.

6.92.2 Content

Under construction.

6.92.3 Sample code

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

6.92.4 Related message

None.

6.92.5 Since

1.0.0


Next: , Previous: W0109, Up: Messages

6.93 W0110

6.93.1 Message body

A variable number with floating-point type is used by loop counter in for statement.

6.93.2 Content

Under construction.

6.93.3 Sample code

double d;

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

6.93.4 Related message

None.

6.93.5 Since

1.0.0


Next: , Previous: W0110, Up: Messages

6.94 W0112

6.94.1 Message body

The statement of floating-point compares by equivalent operator.

6.94.2 Content

Under construction.

6.94.3 Sample code

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

6.94.4 Related message

None.

6.94.5 Since

1.0.0


Next: , Previous: W0112, Up: Messages

6.95 W0114

6.95.1 Message body

This control expression is not explicit logical operation.

6.95.2 Content

Under construction.

6.95.3 Sample code

int a;

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

if (a) { /* W0114 */
}

6.95.4 Related message

None.

6.95.5 Since

1.0.0


Next: , Previous: W0114, Up: Messages

6.96 W0115

6.96.1 Message body

Unsigned left shift operator `<<' drop the high-order bit.

6.96.2 Content

Under construction.

6.96.3 Sample code

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

6.96.4 Related message

  • W0116 Unsigned left shift operator `<<' can be drop high-order bit.
  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.96.5 Since

1.0.0


Next: , Previous: W0115, Up: Messages

6.97 W0116

6.97.1 Message body

Unsigned left shift operator `<<' can be drop high-order bit.

6.97.2 Content

Under construction.

6.97.3 Sample code

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

6.97.4 Related message

  • W0115 Unsigned left shift operator `<<' drop the high-order bit.
  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.97.5 Since

1.0.0


Next: , Previous: W0116, Up: Messages

6.98 W0117

6.98.1 Message body

`%s' has external-linkage without any prototype declarations.

6.98.2 Content

Under construction.

6.98.3 Sample code

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

6.98.4 Related message

  • W0118 `%s' has external-linkage, but no prototype declaration is in header files.

6.98.5 Since

1.0.0


Next: , Previous: W0117, Up: Messages

6.99 W0118

6.99.1 Message body

`%s' has external-linkage, but no prototype declaration is in header files.

6.99.2 Content

Under construction.

6.99.3 Sample code

test.c

extern int val; /* W0118 */

6.99.4 Related message

  • W0117 `%s' has external-linkage without any prototype declarations.

6.99.5 Since

1.0.0


Next: , Previous: W0118, Up: Messages

6.100 W0119

6.100.1 Message body

An implicit type conversion from char to signed char.

6.100.2 Content

Under construction.

6.100.3 Sample code

extern void foo(signed char a);

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

6.100.4 Related message

  • W0120 An implicit type conversion from char to unsigned char.
  • W0121 An implicit type conversion from char to signed short.
  • W0122 An implicit type conversion from char to unsigned short.
  • W0123 An implicit type conversion from char to signed int.
  • W0124 An implicit type conversion from char to unsigned int.
  • W0125 An implicit type conversion from char to signed long.
  • W0126 An implicit type conversion from char to unsigned long.
  • W0127 An implicit type conversion from char to float.
  • W0128 An implicit type conversion from char to double.
  • W0129 An implicit type conversion from char to long double.
  • W0130 An implicit type conversion from char to signed long long.
  • W0131 An implicit type conversion from char to unsigned long long.

6.100.5 Since

1.0.0


Next: , Previous: W0119, Up: Messages

6.101 W0120

6.101.1 Message body

An implicit type conversion from char to unsigned char.

6.101.2 Content

Under construction.

6.101.3 Sample code

extern void foo(unsigned char a);

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

6.101.4 Related message

  • W0119 An implicit type conversion from char to signed char.
  • W0121 An implicit type conversion from char to signed short.
  • W0122 An implicit type conversion from char to unsigned short.
  • W0123 An implicit type conversion from char to signed int.
  • W0124 An implicit type conversion from char to unsigned int.
  • W0125 An implicit type conversion from char to signed long.
  • W0126 An implicit type conversion from char to unsigned long.
  • W0127 An implicit type conversion from char to float.
  • W0128 An implicit type conversion from char to double.
  • W0129 An implicit type conversion from char to long double.
  • W0130 An implicit type conversion from char to signed long long.
  • W0131 An implicit type conversion from char to unsigned long long.

6.101.5 Since

1.0.0


Next: , Previous: W0120, Up: Messages

6.102 W0121

6.102.1 Message body

An implicit type conversion from char to signed short.

6.102.2 Content

Under construction.

6.102.3 Sample code

extern void foo(short a);

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

6.102.4 Related message

  • W0119 An implicit type conversion from char to signed char.
  • W0120 An implicit type conversion from char to unsigned char.
  • W0122 An implicit type conversion from char to unsigned short.
  • W0123 An implicit type conversion from char to signed int.
  • W0124 An implicit type conversion from char to unsigned int.
  • W0125 An implicit type conversion from char to signed long.
  • W0126 An implicit type conversion from char to unsigned long.
  • W0127 An implicit type conversion from char to float.
  • W0128 An implicit type conversion from char to double.
  • W0129 An implicit type conversion from char to long double.
  • W0130 An implicit type conversion from char to signed long long.
  • W0131 An implicit type conversion from char to unsigned long long.

6.102.5 Since

1.0.0


Next: , Previous: W0121, Up: Messages

6.103 W0122

6.103.1 Message body

An implicit type conversion from char to unsigned short.

6.103.2 Content

Under construction.

6.103.3 Sample code

extern void foo(unsigned short a);

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

6.103.4 Related message

  • W0119 An implicit type conversion from char to signed char.
  • W0120 An implicit type conversion from char to unsigned char.
  • W0121 An implicit type conversion from char to signed short.
  • W0123 An implicit type conversion from char to signed int.
  • W0124 An implicit type conversion from char to unsigned int.
  • W0125 An implicit type conversion from char to signed long.
  • W0126 An implicit type conversion from char to unsigned long.
  • W0127 An implicit type conversion from char to float.
  • W0128 An implicit type conversion from char to double.
  • W0129 An implicit type conversion from char to long double.
  • W0130 An implicit type conversion from char to signed long long.
  • W0131 An implicit type conversion from char to unsigned long long.

6.103.5 Since

1.0.0


Next: , Previous: W0122, Up: Messages

6.104 W0123

6.104.1 Message body

An implicit type conversion from char to signed int.

6.104.2 Content

Under construction.

6.104.3 Sample code

extern void foo(int a);

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

6.104.4 Related message

  • W0119 An implicit type conversion from char to signed char.
  • W0120 An implicit type conversion from char to unsigned char.
  • W0121 An implicit type conversion from char to signed short.
  • W0122 An implicit type conversion from char to unsigned short.
  • W0124 An implicit type conversion from char to unsigned int.
  • W0125 An implicit type conversion from char to signed long.
  • W0126 An implicit type conversion from char to unsigned long.
  • W0127 An implicit type conversion from char to float.
  • W0128 An implicit type conversion from char to double.
  • W0129 An implicit type conversion from char to long double.
  • W0130 An implicit type conversion from char to signed long long.
  • W0131 An implicit type conversion from char to unsigned long long.

6.104.5 Since

1.0.0


Next: , Previous: W0123, Up: Messages

6.105 W0124

6.105.1 Message body

An implicit type conversion from char to unsigned int.

6.105.2 Content

Under construction.

6.105.3 Sample code

extern void foo(unsigned int a);

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

6.105.4 Related message

  • W0119 An implicit type conversion from char to signed char.
  • W0120 An implicit type conversion from char to unsigned char.
  • W0121 An implicit type conversion from char to signed short.
  • W0122 An implicit type conversion from char to unsigned short.
  • W0123 An implicit type conversion from char to signed int.
  • W0125 An implicit type conversion from char to signed long.
  • W0126 An implicit type conversion from char to unsigned long.
  • W0127 An implicit type conversion from char to float.
  • W0128 An implicit type conversion from char to double.
  • W0129 An implicit type conversion from char to long double.
  • W0130 An implicit type conversion from char to signed long long.
  • W0131 An implicit type conversion from char to unsigned long long.

6.105.5 Since

1.0.0


Next: , Previous: W0124, Up: Messages

6.106 W0125

6.106.1 Message body

An implicit type conversion from char to signed long.

6.106.2 Content

Under construction.

6.106.3 Sample code

extern void foo(long a);

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

6.106.4 Related message

  • W0119 An implicit type conversion from char to signed char.
  • W0120 An implicit type conversion from char to unsigned char.
  • W0121 An implicit type conversion from char to signed short.
  • W0122 An implicit type conversion from char to unsigned short.
  • W0123 An implicit type conversion from char to signed int.
  • W0124 An implicit type conversion from char to unsigned int.
  • W0126 An implicit type conversion from char to unsigned long.
  • W0127 An implicit type conversion from char to float.
  • W0128 An implicit type conversion from char to double.
  • W0129 An implicit type conversion from char to long double.
  • W0130 An implicit type conversion from char to signed long long.
  • W0131 An implicit type conversion from char to unsigned long long.

6.106.5 Since

1.0.0


Next: , Previous: W0125, Up: Messages

6.107 W0126

6.107.1 Message body

An implicit type conversion from char to unsigned long.

6.107.2 Content

Under construction.

6.107.3 Sample code

extern void foo(unsigned long a);

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

6.107.4 Related message

  • W0119 An implicit type conversion from char to signed char.
  • W0120 An implicit type conversion from char to unsigned char.
  • W0121 An implicit type conversion from char to signed short.
  • W0122 An implicit type conversion from char to unsigned short.
  • W0123 An implicit type conversion from char to signed int.
  • W0124 An implicit type conversion from char to unsigned int.
  • W0125 An implicit type conversion from char to signed long.
  • W0127 An implicit type conversion from char to float.
  • W0128 An implicit type conversion from char to double.
  • W0129 An implicit type conversion from char to long double.
  • W0130 An implicit type conversion from char to signed long long.
  • W0131 An implicit type conversion from char to unsigned long long.

6.107.5 Since

1.0.0


Next: , Previous: W0126, Up: Messages

6.108 W0127

6.108.1 Message body

An implicit type conversion from char to float.

6.108.2 Content

Under construction.

6.108.3 Sample code

extern void foo(float a);

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

6.108.4 Related message

  • W0119 An implicit type conversion from char to signed char.
  • W0120 An implicit type conversion from char to unsigned char.
  • W0121 An implicit type conversion from char to signed short.
  • W0122 An implicit type conversion from char to unsigned short.
  • W0123 An implicit type conversion from char to signed int.
  • W0124 An implicit type conversion from char to unsigned int.
  • W0125 An implicit type conversion from char to signed long.
  • W0126 An implicit type conversion from char to unsigned long.
  • W0128 An implicit type conversion from char to double.
  • W0129 An implicit type conversion from char to long double.
  • W0130 An implicit type conversion from char to signed long long.
  • W0131 An implicit type conversion from char to unsigned long long.

6.108.5 Since

1.0.0


Next: , Previous: W0127, Up: Messages

6.109 W0128

6.109.1 Message body

An implicit type conversion from char to double.

6.109.2 Content

Under construction.

6.109.3 Sample code

extern void foo(double a);

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

6.109.4 Related message

  • W0119 An implicit type conversion from char to signed char.
  • W0120 An implicit type conversion from char to unsigned char.
  • W0121 An implicit type conversion from char to signed short.
  • W0122 An implicit type conversion from char to unsigned short.
  • W0123 An implicit type conversion from char to signed int.
  • W0124 An implicit type conversion from char to unsigned int.
  • W0125 An implicit type conversion from char to signed long.
  • W0126 An implicit type conversion from char to unsigned long.
  • W0127 An implicit type conversion from char to float.
  • W0129 An implicit type conversion from char to long double.
  • W0130 An implicit type conversion from char to signed long long.
  • W0131 An implicit type conversion from char to unsigned long long.

6.109.5 Since

1.0.0


Next: , Previous: W0128, Up: Messages

6.110 W0129

6.110.1 Message body

An implicit type conversion from char to long double.

6.110.2 Content

Under construction.

6.110.3 Sample code

extern void foo(long double a);

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

6.110.4 Related message

  • W0119 An implicit type conversion from char to signed char.
  • W0120 An implicit type conversion from char to unsigned char.
  • W0121 An implicit type conversion from char to signed short.
  • W0122 An implicit type conversion from char to unsigned short.
  • W0123 An implicit type conversion from char to signed int.
  • W0124 An implicit type conversion from char to unsigned int.
  • W0125 An implicit type conversion from char to signed long.
  • W0126 An implicit type conversion from char to unsigned long.
  • W0127 An implicit type conversion from char to float.
  • W0128 An implicit type conversion from char to double.
  • W0130 An implicit type conversion from char to signed long long.
  • W0131 An implicit type conversion from char to unsigned long long.

Under construction.

6.110.5 Since

1.0.0


Next: , Previous: W0129, Up: Messages

6.111 W0130

6.111.1 Message body

An implicit type conversion from char to signed long long.

6.111.2 Content

Under construction.

6.111.3 Sample code

extern void foo(long long a);

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

6.111.4 Related message

  • W0119 An implicit type conversion from char to signed char.
  • W0120 An implicit type conversion from char to unsigned char.
  • W0121 An implicit type conversion from char to signed short.
  • W0122 An implicit type conversion from char to unsigned short.
  • W0123 An implicit type conversion from char to signed int.
  • W0124 An implicit type conversion from char to unsigned int.
  • W0125 An implicit type conversion from char to signed long.
  • W0126 An implicit type conversion from char to unsigned long.
  • W0127 An implicit type conversion from char to float.
  • W0128 An implicit type conversion from char to double.
  • W0129 An implicit type conversion from char to long double.
  • W0131 An implicit type conversion from char to unsigned long long.

6.111.5 Since

1.0.0


Next: , Previous: W0130, Up: Messages

6.112 W0131

6.112.1 Message body

An implicit type conversion from char to unsigned long long.

6.112.2 Content

Under construction.

6.112.3 Sample code

extern void foo(unsigned long long a);

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

6.112.4 Related message

  • W0119 An implicit type conversion from char to signed char.
  • W0120 An implicit type conversion from char to unsigned char.
  • W0121 An implicit type conversion from char to signed short.
  • W0122 An implicit type conversion from char to unsigned short.
  • W0123 An implicit type conversion from char to signed int.
  • W0124 An implicit type conversion from char to unsigned int.
  • W0125 An implicit type conversion from char to signed long.
  • W0126 An implicit type conversion from char to unsigned long.
  • W0127 An implicit type conversion from char to float.
  • W0128 An implicit type conversion from char to double.
  • W0129 An implicit type conversion from char to long double.
  • W0130 An implicit type conversion from char to signed long long.

6.112.5 Since

1.0.0


Next: , Previous: W0131, Up: Messages

6.113 W0132

6.113.1 Message body

An implicit type conversion from unsigned char to char.

6.113.2 Content

Under construction.

6.113.3 Sample code

extern void foo(char a);

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

6.113.4 Related message

  • W0133 An implicit type conversion from signed char to char.
  • W0134 An implicit type conversion from signed short to char.
  • W0135 An implicit type conversion from unsigned short to char.
  • W0136 An implicit type conversion from signed int to char.
  • W0137 An implicit type conversion from unsigned int to char.
  • W0138 An implicit type conversion from signed long to char.
  • W0139 An implicit type conversion from unsigned long to char.
  • W0140 An implicit type conversion from signed long long to char.
  • W0141 An implicit type conversion from unsigned long long to char.

6.113.5 Since

1.0.0


Next: , Previous: W0132, Up: Messages

6.114 W0133

6.114.1 Message body

An implicit type conversion from signed char to char.

6.114.2 Content

Under construction.

6.114.3 Sample code

extern void foo(char a);

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

6.114.4 Related message

  • W0132 An implicit type conversion from unsigned char to char.
  • W0134 An implicit type conversion from signed short to char.
  • W0135 An implicit type conversion from unsigned short to char.
  • W0136 An implicit type conversion from signed int to char.
  • W0137 An implicit type conversion from unsigned int to char.
  • W0138 An implicit type conversion from signed long to char.
  • W0139 An implicit type conversion from unsigned long to char.
  • W0140 An implicit type conversion from signed long long to char.
  • W0141 An implicit type conversion from unsigned long long to char.

6.114.5 Since

1.0.0


Next: , Previous: W0133, Up: Messages

6.115 W0134

6.115.1 Message body

An implicit type conversion from signed short to char.

6.115.2 Content

Under construction.

6.115.3 Sample code

extern void foo(char a);

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

6.115.4 Related message

  • W0132 An implicit type conversion from unsigned char to char.
  • W0133 An implicit type conversion from signed char to char.
  • W0135 An implicit type conversion from unsigned short to char.
  • W0136 An implicit type conversion from signed int to char.
  • W0137 An implicit type conversion from unsigned int to char.
  • W0138 An implicit type conversion from signed long to char.
  • W0139 An implicit type conversion from unsigned long to char.
  • W0140 An implicit type conversion from signed long long to char.
  • W0141 An implicit type conversion from unsigned long long to char.

6.115.5 Since

1.0.0


Next: , Previous: W0134, Up: Messages

6.116 W0135

6.116.1 Message body

An implicit type conversion from unsigned short to char.

6.116.2 Content

Under construction.

6.116.3 Sample code

extern void foo(char a);

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

6.116.4 Related message

  • W0132 An implicit type conversion from unsigned char to char.
  • W0133 An implicit type conversion from signed char to char.
  • W0134 An implicit type conversion from signed short to char.
  • W0136 An implicit type conversion from signed int to char.
  • W0137 An implicit type conversion from unsigned int to char.
  • W0138 An implicit type conversion from signed long to char.
  • W0139 An implicit type conversion from unsigned long to char.
  • W0140 An implicit type conversion from signed long long to char.
  • W0141 An implicit type conversion from unsigned long long to char.

6.116.5 Since

1.0.0


Next: , Previous: W0135, Up: Messages

6.117 W0136

6.117.1 Message body

An implicit type conversion from signed int to char.

6.117.2 Content

Under construction.

6.117.3 Sample code

extern void foo(char a);

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

6.117.4 Related message

  • W0132 An implicit type conversion from unsigned char to char.
  • W0133 An implicit type conversion from signed char to char.
  • W0134 An implicit type conversion from signed short to char.
  • W0135 An implicit type conversion from unsigned short to char.
  • W0137 An implicit type conversion from unsigned int to char.
  • W0138 An implicit type conversion from signed long to char.
  • W0139 An implicit type conversion from unsigned long to char.
  • W0140 An implicit type conversion from signed long long to char.
  • W0141 An implicit type conversion from unsigned long long to char.

6.117.5 Since

1.0.0


Next: , Previous: W0136, Up: Messages

6.118 W0137

6.118.1 Message body

An implicit type conversion from unsigned int to char.

6.118.2 Content

Under construction.

6.118.3 Sample code

extern void foo(char a);

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

6.118.4 Related message

  • W0132 An implicit type conversion from unsigned char to char.
  • W0133 An implicit type conversion from signed char to char.
  • W0134 An implicit type conversion from signed short to char.
  • W0135 An implicit type conversion from unsigned short to char.
  • W0136 An implicit type conversion from signed int to char.
  • W0138 An implicit type conversion from signed long to char.
  • W0139 An implicit type conversion from unsigned long to char.
  • W0140 An implicit type conversion from signed long long to char.
  • W0141 An implicit type conversion from unsigned long long to char.

6.118.5 Since

1.0.0


Next: , Previous: W0137, Up: Messages

6.119 W0138

6.119.1 Message body

An implicit type conversion from signed long to char.

6.119.2 Content

Under construction.

6.119.3 Sample code

extern void foo(char a);

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

6.119.4 Related message

  • W0132 An implicit type conversion from unsigned char to char.
  • W0133 An implicit type conversion from signed char to char.
  • W0134 An implicit type conversion from signed short to char.
  • W0135 An implicit type conversion from unsigned short to char.
  • W0136 An implicit type conversion from signed int to char.
  • W0137 An implicit type conversion from unsigned int to char.
  • W0139 An implicit type conversion from unsigned long to char.
  • W0140 An implicit type conversion from signed long long to char.
  • W0141 An implicit type conversion from unsigned long long to char.

6.119.5 Since

1.0.0


Next: , Previous: W0138, Up: Messages

6.120 W0139

6.120.1 Message body

An implicit type conversion from unsigned long to char.

6.120.2 Content

Under construction.

6.120.3 Sample code

extern void foo(char a);

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

6.120.4 Related message

  • W0132 An implicit type conversion from unsigned char to char.
  • W0133 An implicit type conversion from signed char to char.
  • W0134 An implicit type conversion from signed short to char.
  • W0135 An implicit type conversion from unsigned short to char.
  • W0136 An implicit type conversion from signed int to char.
  • W0137 An implicit type conversion from unsigned int to char.
  • W0138 An implicit type conversion from signed long to char.
  • W0140 An implicit type conversion from signed long long to char.
  • W0141 An implicit type conversion from unsigned long long to char.

6.120.5 Since

1.0.0


Next: , Previous: W0139, Up: Messages

6.121 W0140

6.121.1 Message body

An implicit type conversion from signed long long to char.

6.121.2 Content

Under construction.

6.121.3 Sample code

extern void foo(char a);

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

6.121.4 Related message

  • W0132 An implicit type conversion from unsigned char to char.
  • W0133 An implicit type conversion from signed char to char.
  • W0134 An implicit type conversion from signed short to char.
  • W0135 An implicit type conversion from unsigned short to char.
  • W0136 An implicit type conversion from signed int to char.
  • W0137 An implicit type conversion from unsigned int to char.
  • W0138 An implicit type conversion from signed long to char.
  • W0139 An implicit type conversion from unsigned long to char.
  • W0141 An implicit type conversion from unsigned long long to char.

6.121.5 Since

1.0.0


Next: , Previous: W0140, Up: Messages

6.122 W0141

6.122.1 Message body

An implicit type conversion from unsigned long long to char.

6.122.2 Content

Under construction.

6.122.3 Sample code

extern void foo(char a);

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

6.122.4 Related message

  • W0132 An implicit type conversion from unsigned char to char.
  • W0133 An implicit type conversion from signed char to char.
  • W0134 An implicit type conversion from signed short to char.
  • W0135 An implicit type conversion from unsigned short to char.
  • W0136 An implicit type conversion from signed int to char.
  • W0137 An implicit type conversion from unsigned int to char.
  • W0138 An implicit type conversion from signed long to char.
  • W0139 An implicit type conversion from unsigned long to char.
  • W0140 An implicit type conversion from signed long long to char.

6.122.5 Since

1.0.0


Next: , Previous: W0141, Up: Messages

6.123 W0142

6.123.1 Message body

An implicit type conversion from unsigned char to signed char.

6.123.2 Content

Under construction.

6.123.3 Sample code

extern void foo(signed char a);

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

6.123.4 Related message

  • W0143 An implicit type conversion from unsigned short to signed char.
  • W0144 An implicit type conversion from unsigned short to signed short.
  • W0145 An implicit type conversion from unsigned int to signed char.
  • W0146 An implicit type conversion from unsigned int to signed short.
  • W0147 An implicit type conversion from unsigned int to signed int.
  • W0148 An implicit type conversion from unsigned long to signed char.
  • W0149 An implicit type conversion from unsigned long to signed short.
  • W0150 An implicit type conversion from unsigned long to signed int.
  • W0151 An implicit type conversion from unsigned long to signed long.
  • W0152 An implicit type conversion from unsigned long long to signed char.
  • W0153 An implicit type conversion from unsigned long long to signed short.
  • W0154 An implicit type conversion from unsigned long long to signed int.
  • W0155 An implicit type conversion from unsigned long long to signed long.
  • W0156 An implicit type conversion from unsigned long long to signed long long.

6.123.5 Since

1.0.0


Next: , Previous: W0142, Up: Messages

6.124 W0143

6.124.1 Message body

An implicit type conversion from unsigned short to signed char.

6.124.2 Content

Under construction.

6.124.3 Sample code

extern void foo(signed char a);

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

6.124.4 Related message

  • W0142 An implicit type conversion from unsigned char to signed char.
  • W0144 An implicit type conversion from unsigned short to signed short.
  • W0145 An implicit type conversion from unsigned int to signed char.
  • W0146 An implicit type conversion from unsigned int to signed short.
  • W0147 An implicit type conversion from unsigned int to signed int.
  • W0148 An implicit type conversion from unsigned long to signed char.
  • W0149 An implicit type conversion from unsigned long to signed short.
  • W0150 An implicit type conversion from unsigned long to signed int.
  • W0151 An implicit type conversion from unsigned long to signed long.
  • W0152 An implicit type conversion from unsigned long long to signed char.
  • W0153 An implicit type conversion from unsigned long long to signed short.
  • W0154 An implicit type conversion from unsigned long long to signed int.
  • W0155 An implicit type conversion from unsigned long long to signed long.
  • W0156 An implicit type conversion from unsigned long long to signed long long.

6.124.5 Since

1.0.0


Next: , Previous: W0143, Up: Messages

6.125 W0144

6.125.1 Message body

An implicit type conversion from unsigned short to signed short.

6.125.2 Content

Under construction.

6.125.3 Sample code

extern void foo(short a);

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

6.125.4 Related message

  • W0142 An implicit type conversion from unsigned char to signed char.
  • W0143 An implicit type conversion from unsigned short to signed char.
  • W0145 An implicit type conversion from unsigned int to signed char.
  • W0146 An implicit type conversion from unsigned int to signed short.
  • W0147 An implicit type conversion from unsigned int to signed int.
  • W0148 An implicit type conversion from unsigned long to signed char.
  • W0149 An implicit type conversion from unsigned long to signed short.
  • W0150 An implicit type conversion from unsigned long to signed int.
  • W0151 An implicit type conversion from unsigned long to signed long.
  • W0152 An implicit type conversion from unsigned long long to signed char.
  • W0153 An implicit type conversion from unsigned long long to signed short.
  • W0154 An implicit type conversion from unsigned long long to signed int.
  • W0155 An implicit type conversion from unsigned long long to signed long.
  • W0156 An implicit type conversion from unsigned long long to signed long long.

6.125.5 Since

1.0.0


Next: , Previous: W0144, Up: Messages

6.126 W0145

6.126.1 Message body

An implicit type conversion from unsigned int to signed char.

6.126.2 Content

Under construction.

6.126.3 Sample code

extern void foo(signed char a);

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

6.126.4 Related message

  • W0142 An implicit type conversion from unsigned char to signed char.
  • W0143 An implicit type conversion from unsigned short to signed char.
  • W0144 An implicit type conversion from unsigned short to signed short.
  • W0146 An implicit type conversion from unsigned int to signed short.
  • W0147 An implicit type conversion from unsigned int to signed int.
  • W0148 An implicit type conversion from unsigned long to signed char.
  • W0149 An implicit type conversion from unsigned long to signed short.
  • W0150 An implicit type conversion from unsigned long to signed int.
  • W0151 An implicit type conversion from unsigned long to signed long.
  • W0152 An implicit type conversion from unsigned long long to signed char.
  • W0153 An implicit type conversion from unsigned long long to signed short.
  • W0154 An implicit type conversion from unsigned long long to signed int.
  • W0155 An implicit type conversion from unsigned long long to signed long.
  • W0156 An implicit type conversion from unsigned long long to signed long long.

6.126.5 Since

1.0.0


Next: , Previous: W0145, Up: Messages

6.127 W0146

6.127.1 Message body

An implicit type conversion from unsigned int to signed short.

6.127.2 Content

Under construction.

6.127.3 Sample code

extern void foo(short a);

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

6.127.4 Related message

  • W0142 An implicit type conversion from unsigned char to signed char.
  • W0143 An implicit type conversion from unsigned short to signed char.
  • W0144 An implicit type conversion from unsigned short to signed short.
  • W0145 An implicit type conversion from unsigned int to signed char.
  • W0147 An implicit type conversion from unsigned int to signed int.
  • W0148 An implicit type conversion from unsigned long to signed char.
  • W0149 An implicit type conversion from unsigned long to signed short.
  • W0150 An implicit type conversion from unsigned long to signed int.
  • W0151 An implicit type conversion from unsigned long to signed long.
  • W0152 An implicit type conversion from unsigned long long to signed char.
  • W0153 An implicit type conversion from unsigned long long to signed short.
  • W0154 An implicit type conversion from unsigned long long to signed int.
  • W0155 An implicit type conversion from unsigned long long to signed long.
  • W0156 An implicit type conversion from unsigned long long to signed long long.

6.127.5 Since

1.0.0


Next: , Previous: W0146, Up: Messages

6.128 W0147

6.128.1 Message body

An implicit type conversion from unsigned int to signed int.

6.128.2 Content

Under construction.

6.128.3 Sample code

extern void foo(int a);

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

6.128.4 Related message

  • W0142 An implicit type conversion from unsigned char to signed char.
  • W0143 An implicit type conversion from unsigned short to signed char.
  • W0144 An implicit type conversion from unsigned short to signed short.
  • W0145 An implicit type conversion from unsigned int to signed char.
  • W0146 An implicit type conversion from unsigned int to signed short.
  • W0148 An implicit type conversion from unsigned long to signed char.
  • W0149 An implicit type conversion from unsigned long to signed short.
  • W0150 An implicit type conversion from unsigned long to signed int.
  • W0151 An implicit type conversion from unsigned long to signed long.
  • W0152 An implicit type conversion from unsigned long long to signed char.
  • W0153 An implicit type conversion from unsigned long long to signed short.
  • W0154 An implicit type conversion from unsigned long long to signed int.
  • W0155 An implicit type conversion from unsigned long long to signed long.
  • W0156 An implicit type conversion from unsigned long long to signed long long.

6.128.5 Since

1.0.0


Next: , Previous: W0147, Up: Messages

6.129 W0148

6.129.1 Message body

An implicit type conversion from unsigned long to signed char.

6.129.2 Content

Under construction.

6.129.3 Sample code

extern void foo(signed char a);

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

6.129.4 Related message

  • W0142 An implicit type conversion from unsigned char to signed char.
  • W0143 An implicit type conversion from unsigned short to signed char.
  • W0144 An implicit type conversion from unsigned short to signed short.
  • W0145 An implicit type conversion from unsigned int to signed char.
  • W0146 An implicit type conversion from unsigned int to signed short.
  • W0147 An implicit type conversion from unsigned int to signed int.
  • W0149 An implicit type conversion from unsigned long to signed short.
  • W0150 An implicit type conversion from unsigned long to signed int.
  • W0151 An implicit type conversion from unsigned long to signed long.
  • W0152 An implicit type conversion from unsigned long long to signed char.
  • W0153 An implicit type conversion from unsigned long long to signed short.
  • W0154 An implicit type conversion from unsigned long long to signed int.
  • W0155 An implicit type conversion from unsigned long long to signed long.
  • W0156 An implicit type conversion from unsigned long long to signed long long.

6.129.5 Since

1.0.0


Next: , Previous: W0148, Up: Messages

6.130 W0149

6.130.1 Message body

An implicit type conversion from unsigned long to signed short.

6.130.2 Content

Under construction.

6.130.3 Sample code

extern void foo(short a);

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

6.130.4 Related message

  • W0142 An implicit type conversion from unsigned char to signed char.
  • W0143 An implicit type conversion from unsigned short to signed char.
  • W0144 An implicit type conversion from unsigned short to signed short.
  • W0145 An implicit type conversion from unsigned int to signed char.
  • W0146 An implicit type conversion from unsigned int to signed short.
  • W0147 An implicit type conversion from unsigned int to signed int.
  • W0148 An implicit type conversion from unsigned long to signed char.
  • W0150 An implicit type conversion from unsigned long to signed int.
  • W0151 An implicit type conversion from unsigned long to signed long.
  • W0152 An implicit type conversion from unsigned long long to signed char.
  • W0153 An implicit type conversion from unsigned long long to signed short.
  • W0154 An implicit type conversion from unsigned long long to signed int.
  • W0155 An implicit type conversion from unsigned long long to signed long.
  • W0156 An implicit type conversion from unsigned long long to signed long long.

6.130.5 Since

1.0.0


Next: , Previous: W0149, Up: Messages

6.131 W0150

6.131.1 Message body

An implicit type conversion from unsigned long to signed int.

6.131.2 Content

Under construction.

6.131.3 Sample code

extern void foo(int a);

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

6.131.4 Related message

  • W0142 An implicit type conversion from unsigned char to signed char.
  • W0143 An implicit type conversion from unsigned short to signed char.
  • W0144 An implicit type conversion from unsigned short to signed short.
  • W0145 An implicit type conversion from unsigned int to signed char.
  • W0146 An implicit type conversion from unsigned int to signed short.
  • W0147 An implicit type conversion from unsigned int to signed int.
  • W0148 An implicit type conversion from unsigned long to signed char.
  • W0149 An implicit type conversion from unsigned long to signed short.
  • W0151 An implicit type conversion from unsigned long to signed long.
  • W0152 An implicit type conversion from unsigned long long to signed char.
  • W0153 An implicit type conversion from unsigned long long to signed short.
  • W0154 An implicit type conversion from unsigned long long to signed int.
  • W0155 An implicit type conversion from unsigned long long to signed long.
  • W0156 An implicit type conversion from unsigned long long to signed long long.

6.131.5 Since

1.0.0


Next: , Previous: W0150, Up: Messages

6.132 W0151

6.132.1 Message body

An implicit type conversion from unsigned long to signed long.

6.132.2 Content

Under construction.

6.132.3 Sample code

extern void foo(long a);

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

6.132.4 Related message

  • W0142 An implicit type conversion from unsigned char to signed char.
  • W0143 An implicit type conversion from unsigned short to signed char.
  • W0144 An implicit type conversion from unsigned short to signed short.
  • W0145 An implicit type conversion from unsigned int to signed char.
  • W0146 An implicit type conversion from unsigned int to signed short.
  • W0147 An implicit type conversion from unsigned int to signed int.
  • W0148 An implicit type conversion from unsigned long to signed char.
  • W0149 An implicit type conversion from unsigned long to signed short.
  • W0150 An implicit type conversion from unsigned long to signed int.
  • W0152 An implicit type conversion from unsigned long long to signed char.
  • W0153 An implicit type conversion from unsigned long long to signed short.
  • W0154 An implicit type conversion from unsigned long long to signed int.
  • W0155 An implicit type conversion from unsigned long long to signed long.
  • W0156 An implicit type conversion from unsigned long long to signed long long.

6.132.5 Since

1.0.0


Next: , Previous: W0151, Up: Messages

6.133 W0152

6.133.1 Message body

An implicit type conversion from unsigned long long to signed char.

6.133.2 Content

Under construction.

6.133.3 Sample code

extern void foo(signed char a);

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

6.133.4 Related message

  • W0142 An implicit type conversion from unsigned char to signed char.
  • W0143 An implicit type conversion from unsigned short to signed char.
  • W0144 An implicit type conversion from unsigned short to signed short.
  • W0145 An implicit type conversion from unsigned int to signed char.
  • W0146 An implicit type conversion from unsigned int to signed short.
  • W0147 An implicit type conversion from unsigned int to signed int.
  • W0148 An implicit type conversion from unsigned long to signed char.
  • W0149 An implicit type conversion from unsigned long to signed short.
  • W0150 An implicit type conversion from unsigned long to signed int.
  • W0151 An implicit type conversion from unsigned long to signed long.
  • W0153 An implicit type conversion from unsigned long long to signed short.
  • W0154 An implicit type conversion from unsigned long long to signed int.
  • W0155 An implicit type conversion from unsigned long long to signed long.
  • W0156 An implicit type conversion from unsigned long long to signed long long.

6.133.5 Since

1.0.0


Next: , Previous: W0152, Up: Messages

6.134 W0153

6.134.1 Message body

An implicit type conversion from unsigned long long to signed short.

6.134.2 Content

Under construction.

6.134.3 Sample code

extern void foo(short a);

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

6.134.4 Related message

  • W0142 An implicit type conversion from unsigned char to signed char.
  • W0143 An implicit type conversion from unsigned short to signed char.
  • W0144 An implicit type conversion from unsigned short to signed short.
  • W0145 An implicit type conversion from unsigned int to signed char.
  • W0146 An implicit type conversion from unsigned int to signed short.
  • W0147 An implicit type conversion from unsigned int to signed int.
  • W0148 An implicit type conversion from unsigned long to signed char.
  • W0149 An implicit type conversion from unsigned long to signed short.
  • W0150 An implicit type conversion from unsigned long to signed int.
  • W0151 An implicit type conversion from unsigned long to signed long.
  • W0152 An implicit type conversion from unsigned long long to signed char.
  • W0154 An implicit type conversion from unsigned long long to signed int.
  • W0155 An implicit type conversion from unsigned long long to signed long.
  • W0156 An implicit type conversion from unsigned long long to signed long long.

6.134.5 Since

1.0.0


Next: , Previous: W0153, Up: Messages

6.135 W0154

6.135.1 Message body

An implicit type conversion from unsigned long long to signed int.

6.135.2 Content

Under construction.

6.135.3 Sample code

extern void foo(int a);

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

6.135.4 Related message

  • W0142 An implicit type conversion from unsigned char to signed char.
  • W0143 An implicit type conversion from unsigned short to signed char.
  • W0144 An implicit type conversion from unsigned short to signed short.
  • W0145 An implicit type conversion from unsigned int to signed char.
  • W0146 An implicit type conversion from unsigned int to signed short.
  • W0147 An implicit type conversion from unsigned int to signed int.
  • W0148 An implicit type conversion from unsigned long to signed char.
  • W0149 An implicit type conversion from unsigned long to signed short.
  • W0150 An implicit type conversion from unsigned long to signed int.
  • W0151 An implicit type conversion from unsigned long to signed long.
  • W0152 An implicit type conversion from unsigned long long to signed char.
  • W0153 An implicit type conversion from unsigned long long to signed short.
  • W0155 An implicit type conversion from unsigned long long to signed long.
  • W0156 An implicit type conversion from unsigned long long to signed long long.

6.135.5 Since

1.0.0


Next: , Previous: W0154, Up: Messages

6.136 W0155

6.136.1 Message body

An implicit type conversion from unsigned long long to signed long.

6.136.2 Content

Under construction.

6.136.3 Sample code

extern void foo(long a);

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

6.136.4 Related message

  • W0142 An implicit type conversion from unsigned char to signed char.
  • W0143 An implicit type conversion from unsigned short to signed char.
  • W0144 An implicit type conversion from unsigned short to signed short.
  • W0145 An implicit type conversion from unsigned int to signed char.
  • W0146 An implicit type conversion from unsigned int to signed short.
  • W0147 An implicit type conversion from unsigned int to signed int.
  • W0148 An implicit type conversion from unsigned long to signed char.
  • W0149 An implicit type conversion from unsigned long to signed short.
  • W0150 An implicit type conversion from unsigned long to signed int.
  • W0151 An implicit type conversion from unsigned long to signed long.
  • W0152 An implicit type conversion from unsigned long long to signed char.
  • W0153 An implicit type conversion from unsigned long long to signed short.
  • W0154 An implicit type conversion from unsigned long long to signed int.
  • W0156 An implicit type conversion from unsigned long long to signed long long.

6.136.5 Since

1.0.0


Next: , Previous: W0155, Up: Messages

6.137 W0156

6.137.1 Message body

An implicit type conversion from unsigned long long to signed long long.

6.137.2 Content

Under construction.

6.137.3 Sample code

extern void foo(long long a);

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

6.137.4 Related message

  • W0142 An implicit type conversion from unsigned char to signed char.
  • W0143 An implicit type conversion from unsigned short to signed char.
  • W0144 An implicit type conversion from unsigned short to signed short.
  • W0145 An implicit type conversion from unsigned int to signed char.
  • W0146 An implicit type conversion from unsigned int to signed short.
  • W0147 An implicit type conversion from unsigned int to signed int.
  • W0148 An implicit type conversion from unsigned long to signed char.
  • W0149 An implicit type conversion from unsigned long to signed short.
  • W0150 An implicit type conversion from unsigned long to signed int.
  • W0151 An implicit type conversion from unsigned long to signed long.
  • W0152 An implicit type conversion from unsigned long long to signed char.
  • W0153 An implicit type conversion from unsigned long long to signed short.
  • W0154 An implicit type conversion from unsigned long long to signed int.
  • W0155 An implicit type conversion from unsigned long long to signed long.

6.137.5 Since

1.0.0


Next: , Previous: W0156, Up: Messages

6.138 W0157

6.138.1 Message body

An implicit type conversion from signed char to unsigned char.

6.138.2 Content

Under construction.

6.138.3 Sample code

extern void foo(unsigned char a);

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

6.138.4 Related message

  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.138.5 Since

1.0.0


Next: , Previous: W0157, Up: Messages

6.139 W0158

6.139.1 Message body

An implicit type conversion from signed char to unsigned short.

6.139.2 Content

Under construction.

6.139.3 Sample code

extern void foo(unsigned short a);

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

6.139.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

Under construction.

6.139.5 Since

1.0.0


Next: , Previous: W0158, Up: Messages

6.140 W0159

6.140.1 Message body

An implicit type conversion from signed char to unsigned int.

6.140.2 Content

Under construction.

6.140.3 Sample code

extern void foo(unsigned int a);

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

6.140.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.140.5 Since

1.0.0


Next: , Previous: W0159, Up: Messages

6.141 W0160

6.141.1 Message body

An implicit type conversion from signed char to unsigned long.

6.141.2 Content

Under construction.

6.141.3 Sample code

extern void foo(unsigned long a);

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

6.141.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.141.5 Since

1.0.0


Next: , Previous: W0160, Up: Messages

6.142 W0161

6.142.1 Message body

An implicit type conversion from signed short to unsigned char.

6.142.2 Content

Under construction.

6.142.3 Sample code

extern void foo(unsigned char a);

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

6.142.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.142.5 Since

1.0.0


Next: , Previous: W0161, Up: Messages

6.143 W0162

6.143.1 Message body

An implicit type conversion from signed short to unsigned short.

6.143.2 Content

Under construction.

6.143.3 Sample code

extern void foo(unsigned short a);

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

6.143.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.143.5 Since

1.0.0


Next: , Previous: W0162, Up: Messages

6.144 W0163

6.144.1 Message body

An implicit type conversion from signed short to unsigned int.

6.144.2 Content

Under construction.

6.144.3 Sample code

extern void foo(unsigned int a);

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

6.144.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.144.5 Since

1.0.0


Next: , Previous: W0163, Up: Messages

6.145 W0164

6.145.1 Message body

An implicit type conversion from signed short to unsigned long.

6.145.2 Content

Under construction.

6.145.3 Sample code

extern void foo(unsigned long a);

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

6.145.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.145.5 Since

1.0.0


Next: , Previous: W0164, Up: Messages

6.146 W0165

6.146.1 Message body

Implicit conversion from `signed int' to `unsigned char'.

6.146.2 Content

Under construction.

6.146.3 Sample code

extern void foo(unsigned char a);

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

6.146.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.146.5 Since

1.0.0


Next: , Previous: W0165, Up: Messages

6.147 W0166

6.147.1 Message body

An implicit type conversion from signed int to unsigned short.

6.147.2 Content

Under construction.

6.147.3 Sample code

extern void foo(unsigned short a);

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

6.147.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.147.5 Since

1.0.0


Next: , Previous: W0166, Up: Messages

6.148 W0167

6.148.1 Message body

Implicit conversion from `signed int' to `unsigned int'.

6.148.2 Content

Under construction.

6.148.3 Sample code

extern void foo(unsigned int a);

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

6.148.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.148.5 Since

1.0.0


Next: , Previous: W0167, Up: Messages

6.149 W0168

6.149.1 Message body

An implicit type conversion from signed int to unsigned long.

6.149.2 Content

Under construction.

6.149.3 Sample code

extern void foo(unsigned long a);

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

6.149.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.149.5 Since

1.0.0


Next: , Previous: W0168, Up: Messages

6.150 W0169

6.150.1 Message body

An implicit type conversion from signed long to unsigned char.

6.150.2 Content

Under construction.

6.150.3 Sample code

extern void foo(unsigned char a);

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

6.150.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.150.5 Since

1.0.0


Next: , Previous: W0169, Up: Messages

6.151 W0170

6.151.1 Message body

An implicit type conversion from signed long to unsigned short.

6.151.2 Content

Under construction.

6.151.3 Sample code

extern void foo(unsigned short a);

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

6.151.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.151.5 Since

1.0.0


Next: , Previous: W0170, Up: Messages

6.152 W0171

6.152.1 Message body

An implicit type conversion from signed long to unsigned int.

6.152.2 Content

Under construction.

6.152.3 Sample code

extern void foo(unsigned int a);

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

6.152.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.152.5 Since

1.0.0


Next: , Previous: W0171, Up: Messages

6.153 W0172

6.153.1 Message body

An implicit type conversion from signed long to unsigned long.

6.153.2 Content

Under construction.

6.153.3 Sample code

extern void foo(unsigned long a);

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

6.153.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.153.5 Since

1.0.0


Next: , Previous: W0172, Up: Messages

6.154 W0173

6.154.1 Message body

An implicit type conversion from signed char to unsigned long long.

6.154.2 Content

Under construction.

6.154.3 Sample code

extern void foo(unsigned long long a);

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

6.154.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.154.5 Since

1.0.0


Next: , Previous: W0173, Up: Messages

6.155 W0174

6.155.1 Message body

An implicit type conversion from signed short to unsigned long long.

6.155.2 Content

Under construction.

6.155.3 Sample code

extern void foo(unsigned long long a);

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

6.155.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.155.5 Since

1.0.0


Next: , Previous: W0174, Up: Messages

6.156 W0175

6.156.1 Message body

An implicit type conversion from signed int to unsigned long long.

6.156.2 Content

Under construction.

6.156.3 Sample code

extern void foo(unsigned long long a);

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

6.156.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.156.5 Since

1.0.0


Next: , Previous: W0175, Up: Messages

6.157 W0176

6.157.1 Message body

An implicit type conversion from signed long to unsigned long long.

6.157.2 Content

Under construction.

6.157.3 Sample code

extern void foo(unsigned long long a);

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

6.157.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.157.5 Since

1.0.0


Next: , Previous: W0176, Up: Messages

6.158 W0177

6.158.1 Message body

An implicit type conversion from signed long long to unsigned char.

6.158.2 Content

Under construction.

6.158.3 Sample code

extern void foo(unsigned char a);

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

6.158.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.158.5 Since

1.0.0


Next: , Previous: W0177, Up: Messages

6.159 W0178

6.159.1 Message body

An implicit type conversion from signed long long to unsigned short.

6.159.2 Content

Under construction.

6.159.3 Sample code

extern void foo(unsigned short a);

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

6.159.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.159.5 Since

1.0.0


Next: , Previous: W0178, Up: Messages

6.160 W0179

6.160.1 Message body

An implicit type conversion from signed long long to unsigned int.

6.160.2 Content

Under construction.

6.160.3 Sample code

extern void foo(unsigned int a);

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

6.160.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0180 An implicit type conversion from signed long long to unsigned long.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.160.5 Since

1.0.0


Next: , Previous: W0179, Up: Messages

6.161 W0180

6.161.1 Message body

An implicit type conversion from signed long long to unsigned long.

6.161.2 Content

Under construction.

6.161.3 Sample code

extern void foo(unsigned long a);

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

6.161.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0181 An implicit type conversion from signed long long to unsigned long long.

6.161.5 Since

1.0.0


Next: , Previous: W0180, Up: Messages

6.162 W0181

6.162.1 Message body

An implicit type conversion from signed long long to unsigned long long.

6.162.2 Content

Under construction.

6.162.3 Sample code

extern void foo(unsigned long long a);

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

6.162.4 Related message

  • W0157 An implicit type conversion from signed char to unsigned char.
  • W0158 An implicit type conversion from signed char to unsigned short.
  • W0159 An implicit type conversion from signed char to unsigned int.
  • W0160 An implicit type conversion from signed char to unsigned long.
  • W0161 An implicit type conversion from signed short to unsigned char.
  • W0162 An implicit type conversion from signed short to unsigned short.
  • W0163 An implicit type conversion from signed short to unsigned int.
  • W0164 An implicit type conversion from signed short to unsigned long.
  • W0165 Implicit conversion from `signed int' to `unsigned char'.
  • W0166 An implicit type conversion from signed int to unsigned short.
  • W0167 Implicit conversion from `signed int' to `unsigned int'.
  • W0168 An implicit type conversion from signed int to unsigned long.
  • W0169 An implicit type conversion from signed long to unsigned char.
  • W0170 An implicit type conversion from signed long to unsigned short.
  • W0171 An implicit type conversion from signed long to unsigned int.
  • W0172 An implicit type conversion from signed long to unsigned long.
  • W0173 An implicit type conversion from signed char to unsigned long long.
  • W0174 An implicit type conversion from signed short to unsigned long long.
  • W0175 An implicit type conversion from signed int to unsigned long long.
  • W0176 An implicit type conversion from signed long to unsigned long long.
  • W0177 An implicit type conversion from signed long long to unsigned char.
  • W0178 An implicit type conversion from signed long long to unsigned short.
  • W0179 An implicit type conversion from signed long long to unsigned int.
  • W0180 An implicit type conversion from signed long long to unsigned long.

6.162.5 Since

1.0.0


Next: , Previous: W0181, Up: Messages

6.163 W0182

6.163.1 Message body

An implicit type conversion from unsigned char to float.

6.163.2 Content

Under construction.

6.163.3 Sample code

extern void foo(float a);

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

6.163.4 Related message

  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.163.5 Since

1.0.0


Next: , Previous: W0182, Up: Messages

6.164 W0183

6.164.1 Message body

An implicit type conversion from unsigned char to double.

6.164.2 Content

Under construction.

6.164.3 Sample code

extern void foo(double a);

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

6.164.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.164.5 Since

1.0.0


Next: , Previous: W0183, Up: Messages

6.165 W0184

6.165.1 Message body

An implicit type conversion from unsigned char to long double.

6.165.2 Content

Under construction.

6.165.3 Sample code

extern void foo(long double a);

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

6.165.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.165.5 Since

1.0.0


Next: , Previous: W0184, Up: Messages

6.166 W0185

6.166.1 Message body

An implicit type conversion from signed char to float.

6.166.2 Content

Under construction.

6.166.3 Sample code

extern void foo(float a);

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

6.166.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.166.5 Since

1.0.0


Next: , Previous: W0185, Up: Messages

6.167 W0186

6.167.1 Message body

An implicit type conversion from signed char to double.

6.167.2 Content

Under construction.

6.167.3 Sample code

extern void foo(double a);

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

6.167.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.167.5 Since

1.0.0


Next: , Previous: W0186, Up: Messages

6.168 W0187

6.168.1 Message body

An implicit type conversion from signed char to long double.

6.168.2 Content

Under construction.

6.168.3 Sample code

extern void foo(long double a);

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

6.168.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.168.5 Since

1.0.0


Next: , Previous: W0187, Up: Messages

6.169 W0188

6.169.1 Message body

An implicit type conversion from signed short to float.

6.169.2 Content

Under construction.

6.169.3 Sample code

extern void foo(float a);

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

6.169.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.169.5 Since

1.0.0


Next: , Previous: W0188, Up: Messages

6.170 W0189

6.170.1 Message body

An implicit type conversion from signed short to double.

6.170.2 Content

Under construction.

6.170.3 Sample code

extern void foo(double a);

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

6.170.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.170.5 Since

1.0.0


Next: , Previous: W0189, Up: Messages

6.171 W0190

6.171.1 Message body

An implicit type conversion from signed short to long double.

6.171.2 Content

Under construction.

6.171.3 Sample code

extern void foo(long double a);

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

6.171.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.171.5 Since

1.0.0


Next: , Previous: W0190, Up: Messages

6.172 W0191

6.172.1 Message body

An implicit type conversion from unsigned short to float.

6.172.2 Content

Under construction.

6.172.3 Sample code

extern void foo(float a);

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

6.172.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.172.5 Since

1.0.0


Next: , Previous: W0191, Up: Messages

6.173 W0192

6.173.1 Message body

An implicit type conversion from unsigned short to double.

6.173.2 Content

Under construction.

6.173.3 Sample code

extern void foo(double a);

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

6.173.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.173.5 Since

1.0.0


Next: , Previous: W0192, Up: Messages

6.174 W0193

6.174.1 Message body

An implicit type conversion from unsigned short to long double.

6.174.2 Content

Under construction.

6.174.3 Sample code

extern void foo(long double a);

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

6.174.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.174.5 Since

1.0.0


Next: , Previous: W0193, Up: Messages

6.175 W0194

6.175.1 Message body

An implicit type conversion from signed int to float.

6.175.2 Content

Under construction.

6.175.3 Sample code

extern void foo(float a);

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

6.175.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.175.5 Since

1.0.0


Next: , Previous: W0194, Up: Messages

6.176 W0195

6.176.1 Message body

An implicit type conversion from signed int to double.

6.176.2 Content

Under construction.

6.176.3 Sample code

extern void foo(double a);

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

6.176.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.176.5 Since

1.0.0


Next: , Previous: W0195, Up: Messages

6.177 W0196

6.177.1 Message body

An implicit type conversion from signed int to long double.

6.177.2 Content

Under construction.

6.177.3 Sample code

extern void foo(long double a);

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

6.177.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.177.5 Since

1.0.0


Next: , Previous: W0196, Up: Messages

6.178 W0197

6.178.1 Message body

An implicit type conversion from unsigned int to float.

6.178.2 Content

Under construction.

6.178.3 Sample code

extern void foo(float a);

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

6.178.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.178.5 Since

1.0.0


Next: , Previous: W0197, Up: Messages

6.179 W0198

6.179.1 Message body

An implicit type conversion from unsigned int to double.

6.179.2 Content

Under construction.

6.179.3 Sample code

extern void foo(double a);

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

6.179.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.179.5 Since

1.0.0


Next: , Previous: W0198, Up: Messages

6.180 W0199

6.180.1 Message body

An implicit type conversion from unsigned int to long double.

6.180.2 Content

Under construction.

6.180.3 Sample code

extern void foo(long double a);

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

6.180.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.180.5 Since

1.0.0


Next: , Previous: W0199, Up: Messages

6.181 W0200

6.181.1 Message body

An implicit type conversion from signed long to float.

6.181.2 Content

Under construction.

6.181.3 Sample code

extern void foo(float a);

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

6.181.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.181.5 Since

1.0.0


Next: , Previous: W0200, Up: Messages

6.182 W0201

6.182.1 Message body

An implicit type conversion from signed long to double.

6.182.2 Content

Under construction.

6.182.3 Sample code

extern void foo(double a);

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

6.182.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.182.5 Since

1.0.0


Next: , Previous: W0201, Up: Messages

6.183 W0202

6.183.1 Message body

An implicit type conversion from signed long to long double.

6.183.2 Content

Under construction.

6.183.3 Sample code

extern void foo(long double a);

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

6.183.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.183.5 Since

1.0.0


Next: , Previous: W0202, Up: Messages

6.184 W0203

6.184.1 Message body

An implicit type conversion from unsigned long to float.

6.184.2 Content

Under construction.

6.184.3 Sample code

extern void foo(float a);

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

6.184.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.184.5 Since

1.0.0


Next: , Previous: W0203, Up: Messages

6.185 W0204

6.185.1 Message body

An implicit type conversion from unsigned long to double.

6.185.2 Content

Under construction.

6.185.3 Sample code

extern void foo(double a);

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

6.185.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.185.5 Since

1.0.0


Next: , Previous: W0204, Up: Messages

6.186 W0205

6.186.1 Message body

An implicit type conversion from unsigned long to long double.

6.186.2 Content

Under construction.

6.186.3 Sample code

extern void foo(long double a);

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

6.186.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.186.5 Since

1.0.0


Next: , Previous: W0205, Up: Messages

6.187 W0206

6.187.1 Message body

An implicit type conversion from signed long long to float.

6.187.2 Content

Under construction.

6.187.3 Sample code

extern void foo(float a);

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

6.187.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.187.5 Since

1.0.0


Next: , Previous: W0206, Up: Messages

6.188 W0207

6.188.1 Message body

An implicit type conversion from signed long long to double.

6.188.2 Content

Under construction.

6.188.3 Sample code

extern void foo(double a);

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

6.188.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.188.5 Since

1.0.0


Next: , Previous: W0207, Up: Messages

6.189 W0208

6.189.1 Message body

An implicit type conversion from signed long long to long double.

6.189.2 Content

Under construction.

6.189.3 Sample code

extern void foo(long double a);

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

6.189.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.189.5 Since

1.0.0


Next: , Previous: W0208, Up: Messages

6.190 W0209

6.190.1 Message body

An implicit type conversion from unsigned long long to float.

6.190.2 Content

Under construction.

6.190.3 Sample code

extern void foo(float a);

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

6.190.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0210 An implicit type conversion from unsigned long long to double.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.190.5 Since

1.0.0


Next: , Previous: W0209, Up: Messages

6.191 W0210

6.191.1 Message body

An implicit type conversion from unsigned long long to double.

6.191.2 Content

Under construction.

6.191.3 Sample code

extern void foo(double a);

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

6.191.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0211 An implicit type conversion from unsigned long long to long double.

6.191.5 Since

1.0.0


Next: , Previous: W0210, Up: Messages

6.192 W0211

6.192.1 Message body

An implicit type conversion from unsigned long long to long double.

6.192.2 Content

Under construction.

6.192.3 Sample code

extern void foo(long double a);

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

6.192.4 Related message

  • W0182 An implicit type conversion from unsigned char to float.
  • W0183 An implicit type conversion from unsigned char to double.
  • W0184 An implicit type conversion from unsigned char to long double.
  • W0185 An implicit type conversion from signed char to float.
  • W0186 An implicit type conversion from signed char to double.
  • W0187 An implicit type conversion from signed char to long double.
  • W0188 An implicit type conversion from signed short to float.
  • W0189 An implicit type conversion from signed short to double.
  • W0190 An implicit type conversion from signed short to long double.
  • W0191 An implicit type conversion from unsigned short to float.
  • W0192 An implicit type conversion from unsigned short to double.
  • W0193 An implicit type conversion from unsigned short to long double.
  • W0194 An implicit type conversion from signed int to float.
  • W0195 An implicit type conversion from signed int to double.
  • W0196 An implicit type conversion from signed int to long double.
  • W0197 An implicit type conversion from unsigned int to float.
  • W0198 An implicit type conversion from unsigned int to double.
  • W0199 An implicit type conversion from unsigned int to long double.
  • W0200 An implicit type conversion from signed long to float.
  • W0201 An implicit type conversion from signed long to double.
  • W0202 An implicit type conversion from signed long to long double.
  • W0203 An implicit type conversion from unsigned long to float.
  • W0204 An implicit type conversion from unsigned long to double.
  • W0205 An implicit type conversion from unsigned long to long double.
  • W0206 An implicit type conversion from signed long long to float.
  • W0207 An implicit type conversion from signed long long to double.
  • W0208 An implicit type conversion from signed long long to long double.
  • W0209 An implicit type conversion from unsigned long long to float.
  • W0210 An implicit type conversion from unsigned long long to double.

6.192.5 Since

1.0.0


Next: , Previous: W0211, Up: Messages

6.193 W0212

6.193.1 Message body

An implicit type conversion from unsigned long long to long double.

6.193.2 Content

Under construction.

6.193.3 Sample code

extern void foo(char a);

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

6.193.4 Related message

  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.193.5 Since

1.0.0


Next: , Previous: W0212, Up: Messages

6.194 W0213

6.194.1 Message body

An implicit type conversion from float to signed char.

6.194.2 Content

Under construction.

6.194.3 Sample code

extern void foo(signed char a);

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

6.194.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.194.5 Since

1.0.0


Next: , Previous: W0213, Up: Messages

6.195 W0214

6.195.1 Message body

An implicit type conversion from float to unsigned char.

6.195.2 Content

Under construction.

6.195.3 Sample code

extern void foo(unsigned char a);

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

6.195.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.195.5 Since

1.0.0


Next: , Previous: W0214, Up: Messages

6.196 W0215

6.196.1 Message body

An implicit type conversion from float to signed short.

6.196.2 Content

Under construction.

6.196.3 Sample code

extern void foo(short a);

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

6.196.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.196.5 Since

1.0.0


Next: , Previous: W0215, Up: Messages

6.197 W0216

6.197.1 Message body

An implicit type conversion from float to unsigned short.

6.197.2 Content

Under construction.

6.197.3 Sample code

extern void foo(unsigned short a);

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

6.197.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.197.5 Since

1.0.0


Next: , Previous: W0216, Up: Messages

6.198 W0217

6.198.1 Message body

An implicit type conversion from float to signed int.

6.198.2 Content

Under construction.

6.198.3 Sample code

extern void foo(int a);

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

6.198.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.198.5 Since

1.0.0


Next: , Previous: W0217, Up: Messages

6.199 W0218

6.199.1 Message body

An implicit type conversion from float to unsigned int.

6.199.2 Content

Under construction.

6.199.3 Sample code

extern void foo(unsigned int a);

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

6.199.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.199.5 Since

1.0.0


Next: , Previous: W0218, Up: Messages

6.200 W0219

6.200.1 Message body

An implicit type conversion from float to signed long.

6.200.2 Content

Under construction.

6.200.3 Sample code

extern void foo(long a);

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

6.200.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.200.5 Since

1.0.0


Next: , Previous: W0219, Up: Messages

6.201 W0220

6.201.1 Message body

An implicit type conversion from float to unsigned long.

6.201.2 Content

Under construction.

6.201.3 Sample code

extern void foo(unsigned long a);

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

6.201.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.201.5 Since

1.0.0


Next: , Previous: W0220, Up: Messages

6.202 W0221

6.202.1 Message body

An implicit type conversion from double to char.

6.202.2 Content

Under construction.

6.202.3 Sample code

extern void foo(char a);

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

6.202.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.202.5 Since

1.0.0


Next: , Previous: W0221, Up: Messages

6.203 W0222

6.203.1 Message body

An implicit type conversion from double to signed char.

6.203.2 Content

Under construction.

6.203.3 Sample code

extern void foo(signed char a);

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

6.203.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.203.5 Since

1.0.0


Next: , Previous: W0222, Up: Messages

6.204 W0223

6.204.1 Message body

An implicit type conversion from double to unsigned char.

6.204.2 Content

Under construction.

6.204.3 Sample code

extern void foo(unsigned char a);

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

6.204.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.204.5 Since

1.0.0


Next: , Previous: W0223, Up: Messages

6.205 W0224

6.205.1 Message body

An implicit type conversion from double to signed short.

6.205.2 Content

Under construction.

6.205.3 Sample code

extern void foo(short a);

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

6.205.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.205.5 Since

1.0.0


Next: , Previous: W0224, Up: Messages

6.206 W0225

6.206.1 Message body

An implicit type conversion from double to unsigned short.

6.206.2 Content

Under construction.

6.206.3 Sample code

extern void foo(unsigned short a);

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

6.206.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.206.5 Since

1.0.0


Next: , Previous: W0225, Up: Messages

6.207 W0226

6.207.1 Message body

An implicit type conversion from double to signed int.

6.207.2 Content

Under construction.

6.207.3 Sample code

extern void foo(int a);

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

6.207.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.207.5 Since

1.0.0


Next: , Previous: W0226, Up: Messages

6.208 W0227

6.208.1 Message body

An implicit type conversion from double to unsigned int.

6.208.2 Content

Under construction.

6.208.3 Sample code

extern void foo(unsigned int a);

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

6.208.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.208.5 Since

1.0.0


Next: , Previous: W0227, Up: Messages

6.209 W0228

6.209.1 Message body

An implicit type conversion from double to signed long.

6.209.2 Content

Under construction.

6.209.3 Sample code

extern void foo(long a);

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

6.209.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.209.5 Since

1.0.0


Next: , Previous: W0228, Up: Messages

6.210 W0229

6.210.1 Message body

An implicit type conversion from double to unsigned long.

6.210.2 Content

Under construction.

6.210.3 Sample code

extern void foo(unsigned long a);

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

6.210.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.210.5 Since

1.0.0


Next: , Previous: W0229, Up: Messages

6.211 W0230

6.211.1 Message body

An implicit type conversion from long double to char.

6.211.2 Content

Under construction.

6.211.3 Sample code

extern void foo(char a);

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

6.211.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.211.5 Since

1.0.0


Next: , Previous: W0230, Up: Messages

6.212 W0231

6.212.1 Message body

An implicit type conversion from long double to signed char.

6.212.2 Content

Under construction.

6.212.3 Sample code

extern void foo(signed char a);

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

6.212.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.212.5 Since

1.0.0


Next: , Previous: W0231, Up: Messages

6.213 W0232

6.213.1 Message body

An implicit type conversion from long double to unsigned char.

6.213.2 Content

Under construction.

6.213.3 Sample code

extern void foo(unsigned char a);

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

6.213.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.213.5 Since

1.0.0


Next: , Previous: W0232, Up: Messages

6.214 W0233

6.214.1 Message body

An implicit type conversion from long double to signed short.

6.214.2 Content

Under construction.

6.214.3 Sample code

extern void foo(short a);

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

6.214.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.214.5 Since

1.0.0


Next: , Previous: W0233, Up: Messages

6.215 W0234

6.215.1 Message body

An implicit type conversion from long double to unsigned short.

6.215.2 Content

Under construction.

6.215.3 Sample code

extern void foo(unsigned short a);

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

6.215.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.215.5 Since

1.0.0


Next: , Previous: W0234, Up: Messages

6.216 W0235

6.216.1 Message body

An implicit type conversion from long double to signed int.

6.216.2 Content

Under construction.

6.216.3 Sample code

extern void foo(int a);

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

6.216.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.216.5 Since

1.0.0


Next: , Previous: W0235, Up: Messages

6.217 W0236

6.217.1 Message body

An implicit type conversion from long double to unsigned int.

6.217.2 Content

Under construction.

6.217.3 Sample code

extern void foo(unsigned int a);

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

6.217.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.217.5 Since

1.0.0


Next: , Previous: W0236, Up: Messages

6.218 W0237

6.218.1 Message body

An implicit type conversion from long double to signed long.

6.218.2 Content

Under construction.

6.218.3 Sample code

extern void foo(long a);

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

6.218.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.218.5 Since

1.0.0


Next: , Previous: W0237, Up: Messages

6.219 W0238

6.219.1 Message body

An implicit type conversion from long double to unsigned long.

6.219.2 Content

Under construction.

6.219.3 Sample code

extern void foo(unsigned long a);

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

6.219.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.219.5 Since

1.0.0


Next: , Previous: W0238, Up: Messages

6.220 W0239

6.220.1 Message body

An implicit type conversion from float to signed long long.

6.220.2 Content

Under construction.

6.220.3 Sample code

extern void foo(long long a);

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

6.220.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.220.5 Since

1.0.0


Next: , Previous: W0239, Up: Messages

6.221 W0240

6.221.1 Message body

An implicit type conversion from float to unsigned long long.

6.221.2 Content

Under construction.

6.221.3 Sample code

extern void foo(unsigned long long a);

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

6.221.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.221.5 Since

1.0.0


Next: , Previous: W0240, Up: Messages

6.222 W0241

6.222.1 Message body

An implicit type conversion from double to signed long long.

6.222.2 Content

Under construction.

6.222.3 Sample code

extern void foo(long long a);

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

6.222.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.222.5 Since

1.0.0


Next: , Previous: W0241, Up: Messages

6.223 W0242

6.223.1 Message body

An implicit type conversion from double to unsigned long long.

6.223.2 Content

Under construction.

6.223.3 Sample code

extern void foo(unsigned long long a);

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

6.223.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0243 An implicit type conversion from long double to signed long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.223.5 Since

1.0.0


Next: , Previous: W0242, Up: Messages

6.224 W0243

6.224.1 Message body

An implicit type conversion from long double to signed long long.

6.224.2 Content

Under construction.

6.224.3 Sample code

extern void foo(long long a);

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

6.224.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0244 An implicit type conversion from long double to unsigned long long.

6.224.5 Since

1.0.0


Next: , Previous: W0243, Up: Messages

6.225 W0244

6.225.1 Message body

An implicit type conversion from long double to unsigned long long.

6.225.2 Content

Under construction.

6.225.3 Sample code

extern void foo(unsigned long long a);

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

6.225.4 Related message

  • W0212 An implicit type conversion from float to char.
  • W0213 An implicit type conversion from float to signed char.
  • W0214 An implicit type conversion from float to unsigned char.
  • W0215 An implicit type conversion from float to signed short.
  • W0216 An implicit type conversion from float to unsigned short.
  • W0217 An implicit type conversion from float to signed int.
  • W0218 An implicit type conversion from float to unsigned int.
  • W0219 An implicit type conversion from float to signed long.
  • W0220 An implicit type conversion from float to unsigned long.
  • W0221 An implicit type conversion from double to char.
  • W0222 An implicit type conversion from double to signed char.
  • W0223 An implicit type conversion from double to unsigned char.
  • W0224 An implicit type conversion from double to signed short.
  • W0225 An implicit type conversion from double to unsigned short.
  • W0226 An implicit type conversion from double to signed int.
  • W0227 An implicit type conversion from double to unsigned int.
  • W0228 An implicit type conversion from double to signed long.
  • W0229 An implicit type conversion from double to unsigned long.
  • W0230 An implicit type conversion from long double to char.
  • W0231 An implicit type conversion from long double to signed char.
  • W0232 An implicit type conversion from long double to unsigned char.
  • W0233 An implicit type conversion from long double to signed short.
  • W0234 An implicit type conversion from long double to unsigned short.
  • W0235 An implicit type conversion from long double to signed int.
  • W0236 An implicit type conversion from long double to unsigned int.
  • W0237 An implicit type conversion from long double to signed long.
  • W0238 An implicit type conversion from long double to unsigned long.
  • W0239 An implicit type conversion from float to signed long long.
  • W0240 An implicit type conversion from float to unsigned long long.
  • W0241 An implicit type conversion from double to signed long long.
  • W0242 An implicit type conversion from double to unsigned long long.
  • W0243 An implicit type conversion from long double to signed long long.

6.225.5 Since

1.0.0


Next: , Previous: W0244, Up: Messages

6.226 W0245

6.226.1 Message body

An implicit type conversion from unsigned char to signed short.

6.226.2 Content

Under construction.

6.226.3 Sample code

extern void foo(short a);

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

6.226.4 Related message

  • W0246 Implicit conversion from `unsigned char' to `signed int'.
  • W0247 An implicit type conversion from unsigned char to signed long.
  • W0248 An implicit type conversion from unsigned short to signed int.
  • W0249 An implicit type conversion from unsigned short to signed long.
  • W0250 An implicit type conversion from unsigned int to signed long.
  • W0251 An implicit type conversion from unsigned char to signed long long.
  • W0252 An implicit type conversion from unsigned short to signed long long.
  • W0253 An implicit type conversion from unsigned int to signed long long.
  • W0254 An implicit type conversion from unsigned long to signed long long.

6.226.5 Since

1.0.0


Next: , Previous: W0245, Up: Messages

6.227 W0246

6.227.1 Message body

Implicit conversion from `unsigned char' to `signed int'.

6.227.2 Content

Under construction.

6.227.3 Sample code

extern void foo(int a);

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

6.227.4 Related message

  • W0245 An implicit type conversion from unsigned char to signed short.
  • W0247 An implicit type conversion from unsigned char to signed long.
  • W0248 An implicit type conversion from unsigned short to signed int.
  • W0249 An implicit type conversion from unsigned short to signed long.
  • W0250 An implicit type conversion from unsigned int to signed long.
  • W0251 An implicit type conversion from unsigned char to signed long long.
  • W0252 An implicit type conversion from unsigned short to signed long long.
  • W0253 An implicit type conversion from unsigned int to signed long long.
  • W0254 An implicit type conversion from unsigned long to signed long long.

6.227.5 Since

1.0.0


Next: , Previous: W0246, Up: Messages

6.228 W0247

6.228.1 Message body

An implicit type conversion from unsigned char to signed long.

6.228.2 Content

Under construction.

6.228.3 Sample code

extern void foo(long a);

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

6.228.4 Related message

  • W0245 An implicit type conversion from unsigned char to signed short.
  • W0246 Implicit conversion from `unsigned char' to `signed int'.
  • W0248 An implicit type conversion from unsigned short to signed int.
  • W0249 An implicit type conversion from unsigned short to signed long.
  • W0250 An implicit type conversion from unsigned int to signed long.
  • W0251 An implicit type conversion from unsigned char to signed long long.
  • W0252 An implicit type conversion from unsigned short to signed long long.
  • W0253 An implicit type conversion from unsigned int to signed long long.
  • W0254 An implicit type conversion from unsigned long to signed long long.

6.228.5 Since

1.0.0


Next: , Previous: W0247, Up: Messages

6.229 W0248

6.229.1 Message body

An implicit type conversion from unsigned short to signed int.

6.229.2 Content

Under construction.

6.229.3 Sample code

extern void foo(int a);

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

6.229.4 Related message

  • W0245 An implicit type conversion from unsigned char to signed short.
  • W0246 Implicit conversion from `unsigned char' to `signed int'.
  • W0247 An implicit type conversion from unsigned char to signed long.
  • W0249 An implicit type conversion from unsigned short to signed long.
  • W0250 An implicit type conversion from unsigned int to signed long.
  • W0251 An implicit type conversion from unsigned char to signed long long.
  • W0252 An implicit type conversion from unsigned short to signed long long.
  • W0253 An implicit type conversion from unsigned int to signed long long.
  • W0254 An implicit type conversion from unsigned long to signed long long.

6.229.5 Since

1.0.0


Next: , Previous: W0248, Up: Messages

6.230 W0249

6.230.1 Message body

An implicit type conversion from unsigned short to signed long.

6.230.2 Content

Under construction.

6.230.3 Sample code

extern void foo(long a);

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

6.230.4 Related message

  • W0245 An implicit type conversion from unsigned char to signed short.
  • W0246 Implicit conversion from `unsigned char' to `signed int'.
  • W0247 An implicit type conversion from unsigned char to signed long.
  • W0248 An implicit type conversion from unsigned short to signed int.
  • W0249 An implicit type conversion from unsigned short to signed long.
  • W0251 An implicit type conversion from unsigned char to signed long long.
  • W0252 An implicit type conversion from unsigned short to signed long long.
  • W0253 An implicit type conversion from unsigned int to signed long long.
  • W0254 An implicit type conversion from unsigned long to signed long long.

6.230.5 Since

1.0.0


Next: , Previous: W0249, Up: Messages

6.231 W0250

6.231.1 Message body

An implicit type conversion from unsigned int to signed long.

6.231.2 Content

Under construction.

6.231.3 Sample code

extern void foo(long a);

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

6.231.4 Related message

  • W0245 An implicit type conversion from unsigned char to signed short.
  • W0246 Implicit conversion from `unsigned char' to `signed int'.
  • W0247 An implicit type conversion from unsigned char to signed long.
  • W0248 An implicit type conversion from unsigned short to signed int.
  • W0249 An implicit type conversion from unsigned short to signed long.
  • W0251 An implicit type conversion from unsigned char to signed long long.
  • W0252 An implicit type conversion from unsigned short to signed long long.
  • W0253 An implicit type conversion from unsigned int to signed long long.
  • W0254 An implicit type conversion from unsigned long to signed long long.

6.231.5 Since

1.0.0


Next: , Previous: W0250, Up: Messages

6.232 W0251

6.232.1 Message body

An implicit type conversion from unsigned char to signed long long.

6.232.2 Content

Under construction.

6.232.3 Sample code

extern void foo(long long a);

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

6.232.4 Related message

  • W0245 An implicit type conversion from unsigned char to signed short.
  • W0246 Implicit conversion from `unsigned char' to `signed int'.
  • W0247 An implicit type conversion from unsigned char to signed long.
  • W0248 An implicit type conversion from unsigned short to signed int.
  • W0249 An implicit type conversion from unsigned short to signed long.
  • W0250 An implicit type conversion from unsigned int to signed long.
  • W0252 An implicit type conversion from unsigned short to signed long long.
  • W0253 An implicit type conversion from unsigned int to signed long long.
  • W0254 An implicit type conversion from unsigned long to signed long long.

6.232.5 Since

1.0.0


Next: , Previous: W0251, Up: Messages

6.233 W0252

6.233.1 Message body

An implicit type conversion from unsigned short to signed long long.

6.233.2 Content

Under construction.

6.233.3 Sample code

extern void foo(long long a);

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

6.233.4 Related message

  • W0245 An implicit type conversion from unsigned char to signed short.
  • W0246 Implicit conversion from `unsigned char' to `signed int'.
  • W0247 An implicit type conversion from unsigned char to signed long.
  • W0248 An implicit type conversion from unsigned short to signed int.
  • W0249 An implicit type conversion from unsigned short to signed long.
  • W0250 An implicit type conversion from unsigned int to signed long.
  • W0251 An implicit type conversion from unsigned char to signed long long.
  • W0253 An implicit type conversion from unsigned int to signed long long.
  • W0254 An implicit type conversion from unsigned long to signed long long.

6.233.5 Since

1.0.0


Next: , Previous: W0252, Up: Messages

6.234 W0253

6.234.1 Message body

An implicit type conversion from unsigned int to signed long long.

6.234.2 Content

Under construction.

6.234.3 Sample code

extern void foo(long long a);

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

6.234.4 Related message

  • W0245 An implicit type conversion from unsigned char to signed short.
  • W0246 Implicit conversion from `unsigned char' to `signed int'.
  • W0247 An implicit type conversion from unsigned char to signed long.
  • W0248 An implicit type conversion from unsigned short to signed int.
  • W0249 An implicit type conversion from unsigned short to signed long.
  • W0250 An implicit type conversion from unsigned int to signed long.
  • W0251 An implicit type conversion from unsigned char to signed long long.
  • W0252 An implicit type conversion from unsigned short to signed long long.
  • W0254 An implicit type conversion from unsigned long to signed long long.

6.234.5 Since

1.0.0


Next: , Previous: W0253, Up: Messages

6.235 W0254

6.235.1 Message body

An implicit type conversion from unsigned long to signed long long.

6.235.2 Content

Under construction.

6.235.3 Sample code

extern void foo(long long a);

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

6.235.4 Related message

  • W0245 An implicit type conversion from unsigned char to signed short.
  • W0246 Implicit conversion from `unsigned char' to `signed int'.
  • W0247 An implicit type conversion from unsigned char to signed long.
  • W0248 An implicit type conversion from unsigned short to signed int.
  • W0249 An implicit type conversion from unsigned short to signed long.
  • W0250 An implicit type conversion from unsigned int to signed long.
  • W0251 An implicit type conversion from unsigned char to signed long long.
  • W0252 An implicit type conversion from unsigned short to signed long long.
  • W0253 An implicit type conversion from unsigned int to signed long long.

6.235.5 Since

1.0.0


Next: , Previous: W0254, Up: Messages

6.236 W0255

6.236.1 Message body

A value of char type is returned from `signed char %s()' function.

6.236.2 Content

Under construction.

6.236.3 Sample code

signed char func(void)
{
    char a = 0;
    return a; /* W0255 */
}

6.236.4 Related message

  • W0256 A value of char type is returned from `unsigned char %s()' function.
  • W0257 A value of char type is returned from `signed short %s()' function.
  • W0258 A value of char type is returned from `unsigned short %s()' function.
  • W0259 A value of char type is returned from `signed int %s()' function.
  • W0260 A value of char type is returned from `unsigned int %s()' function.
  • W0261 A value of char type is returned from `signed long %s()' function.
  • W0262 A value of char type is returned from `unsigned long %s()' function.
  • W0263 A value of char type is returned from `float %s()' function.
  • W0264 A value of char type is returned from `double %s()' function.
  • W0265 A value of char type is returned from `long double %s()' function.
  • W0266 A value of char type is returned from `signed long long %s()' function.
  • W0267 A value of char type is returned from `unsigned long long %s()' function.

6.236.5 Since

1.0.0


Next: , Previous: W0255, Up: Messages

6.237 W0256

6.237.1 Message body

A value of char type is returned from `unsigned char %s()' function.

6.237.2 Content

Under construction.

6.237.3 Sample code

unsigned char func(void)
{
    char a = 0;
    return a; /* W0256 */
}

6.237.4 Related message

  • W0255 A value of char type is returned from `signed char %s()' function.
  • W0257 A value of char type is returned from `signed short %s()' function.
  • W0258 A value of char type is returned from `unsigned short %s()' function.
  • W0259 A value of char type is returned from `signed int %s()' function.
  • W0260 A value of char type is returned from `unsigned int %s()' function.
  • W0261 A value of char type is returned from `signed long %s()' function.
  • W0262 A value of char type is returned from `unsigned long %s()' function.
  • W0263 A value of char type is returned from `float %s()' function.
  • W0264 A value of char type is returned from `double %s()' function.
  • W0265 A value of char type is returned from `long double %s()' function.
  • W0266 A value of char type is returned from `signed long long %s()' function.
  • W0267 A value of char type is returned from `unsigned long long %s()' function.

6.237.5 Since

1.0.0


Next: , Previous: W0256, Up: Messages

6.238 W0257

6.238.1 Message body

A value of char type is returned from `signed short %s()' function.

6.238.2 Content

Under construction.

6.238.3 Sample code

short func(void)
{
    char a = 0;
    return a; /* W0257 */
}

6.238.4 Related message

  • W0255 A value of char type is returned from `signed char %s()' function.
  • W0256 A value of char type is returned from `unsigned char %s()' function.
  • W0258 A value of char type is returned from `unsigned short %s()' function.
  • W0259 A value of char type is returned from `signed int %s()' function.
  • W0260 A value of char type is returned from `unsigned int %s()' function.
  • W0261 A value of char type is returned from `signed long %s()' function.
  • W0262 A value of char type is returned from `unsigned long %s()' function.
  • W0263 A value of char type is returned from `float %s()' function.
  • W0264 A value of char type is returned from `double %s()' function.
  • W0265 A value of char type is returned from `long double %s()' function.
  • W0266 A value of char type is returned from `signed long long %s()' function.
  • W0267 A value of char type is returned from `unsigned long long %s()' function.

6.238.5 Since

1.0.0


Next: , Previous: W0257, Up: Messages

6.239 W0258

6.239.1 Message body

A value of char type is returned from `unsigned short %s()' function.

6.239.2 Content

Under construction.

6.239.3 Sample code

unsigned short func(void)
{
    char a = 0;
    return a; /* W0258 */
}

6.239.4 Related message

  • W0255 A value of char type is returned from `signed char %s()' function.
  • W0256 A value of char type is returned from `unsigned char %s()' function.
  • W0257 A value of char type is returned from `signed short %s()' function.
  • W0259 A value of char type is returned from `signed int %s()' function.
  • W0260 A value of char type is returned from `unsigned int %s()' function.
  • W0261 A value of char type is returned from `signed long %s()' function.
  • W0262 A value of char type is returned from `unsigned long %s()' function.
  • W0263 A value of char type is returned from `float %s()' function.
  • W0264 A value of char type is returned from `double %s()' function.
  • W0265 A value of char type is returned from `long double %s()' function.
  • W0266 A value of char type is returned from `signed long long %s()' function.
  • W0267 A value of char type is returned from `unsigned long long %s()' function.

6.239.5 Since

1.0.0


Next: , Previous: W0258, Up: Messages

6.240 W0259

6.240.1 Message body

A value of char type is returned from `signed int %s()' function.

6.240.2 Content

Under construction.

6.240.3 Sample code

int func(void)
{
    char a = 0;
    return a; /* W0259 */
}

6.240.4 Related message

  • W0255 A value of char type is returned from `signed char %s()' function.
  • W0256 A value of char type is returned from `unsigned char %s()' function.
  • W0257 A value of char type is returned from `signed short %s()' function.
  • W0258 A value of char type is returned from `unsigned short %s()' function.
  • W0260 A value of char type is returned from `unsigned int %s()' function.
  • W0261 A value of char type is returned from `signed long %s()' function.
  • W0262 A value of char type is returned from `unsigned long %s()' function.
  • W0263 A value of char type is returned from `float %s()' function.
  • W0264 A value of char type is returned from `double %s()' function.
  • W0265 A value of char type is returned from `long double %s()' function.
  • W0266 A value of char type is returned from `signed long long %s()' function.
  • W0267 A value of char type is returned from `unsigned long long %s()' function.

6.240.5 Since

1.0.0


Next: , Previous: W0259, Up: Messages

6.241 W0260

6.241.1 Message body

A value of char type is returned from `unsigned int %s()' function.

6.241.2 Content

Under construction.

6.241.3 Sample code

unsigned int func(void)
{
    char a = 0;
    return a; /* W0260 */
}

6.241.4 Related message

  • W0255 A value of char type is returned from `signed char %s()' function.
  • W0256 A value of char type is returned from `unsigned char %s()' function.
  • W0257 A value of char type is returned from `signed short %s()' function.
  • W0258 A value of char type is returned from `unsigned short %s()' function.
  • W0259 A value of char type is returned from `signed int %s()' function.
  • W0261 A value of char type is returned from `signed long %s()' function.
  • W0262 A value of char type is returned from `unsigned long %s()' function.
  • W0263 A value of char type is returned from `float %s()' function.
  • W0264 A value of char type is returned from `double %s()' function.
  • W0265 A value of char type is returned from `long double %s()' function.
  • W0266 A value of char type is returned from `signed long long %s()' function.
  • W0267 A value of char type is returned from `unsigned long long %s()' function.

6.241.5 Since

1.0.0


Next: , Previous: W0260, Up: Messages

6.242 W0261

6.242.1 Message body

A value of char type is returned from `signed long %s()' function.

6.242.2 Content

Under construction.

6.242.3 Sample code

long func(void)
{
    char a = 0;
    return a; /* W0261 */
}

6.242.4 Related message

  • W0255 A value of char type is returned from `signed char %s()' function.
  • W0256 A value of char type is returned from `unsigned char %s()' function.
  • W0257 A value of char type is returned from `signed short %s()' function.
  • W0258 A value of char type is returned from `unsigned short %s()' function.
  • W0259 A value of char type is returned from `signed int %s()' function.
  • W0260 A value of char type is returned from `unsigned int %s()' function.
  • W0262 A value of char type is returned from `unsigned long %s()' function.
  • W0263 A value of char type is returned from `float %s()' function.
  • W0264 A value of char type is returned from `double %s()' function.
  • W0265 A value of char type is returned from `long double %s()' function.
  • W0266 A value of char type is returned from `signed long long %s()' function.
  • W0267 A value of char type is returned from `unsigned long long %s()' function.

6.242.5 Since

1.0.0


Next: , Previous: W0261, Up: Messages

6.243 W0262

6.243.1 Message body

A value of char type is returned from `unsigned long %s()' function.

6.243.2 Content

Under construction.

6.243.3 Sample code

unsigned long func(void)
{
    char a = 0;
    return a; /* W0262 */
}

6.243.4 Related message

  • W0255 A value of char type is returned from `signed char %s()' function.
  • W0256 A value of char type is returned from `unsigned char %s()' function.
  • W0257 A value of char type is returned from `signed short %s()' function.
  • W0258 A value of char type is returned from `unsigned short %s()' function.
  • W0259 A value of char type is returned from `signed int %s()' function.
  • W0260 A value of char type is returned from `unsigned int %s()' function.
  • W0261 A value of char type is returned from `signed long %s()' function.
  • W0263 A value of char type is returned from `float %s()' function.
  • W0264 A value of char type is returned from `double %s()' function.
  • W0265 A value of char type is returned from `long double %s()' function.
  • W0266 A value of char type is returned from `signed long long %s()' function.
  • W0267 A value of char type is returned from `unsigned long long %s()' function.

6.243.5 Since

1.0.0


Next: , Previous: W0262, Up: Messages

6.244 W0263

6.244.1 Message body

A value of char type is returned from `float %s()' function.

6.244.2 Content

Under construction.

6.244.3 Sample code

float func(void)
{
    char a = 0;
    return a; /* W0263 */
}

6.244.4 Related message

  • W0255 A value of char type is returned from `signed char %s()' function.
  • W0256 A value of char type is returned from `unsigned char %s()' function.
  • W0257 A value of char type is returned from `signed short %s()' function.
  • W0258 A value of char type is returned from `unsigned short %s()' function.
  • W0259 A value of char type is returned from `signed int %s()' function.
  • W0260 A value of char type is returned from `unsigned int %s()' function.
  • W0261 A value of char type is returned from `signed long %s()' function.
  • W0262 A value of char type is returned from `unsigned long %s()' function.
  • W0264 A value of char type is returned from `double %s()' function.
  • W0265 A value of char type is returned from `long double %s()' function.
  • W0266 A value of char type is returned from `signed long long %s()' function.
  • W0267 A value of char type is returned from `unsigned long long %s()' function.

6.244.5 Since

1.0.0


Next: , Previous: W0263, Up: Messages

6.245 W0264

6.245.1 Message body

A value of char type is returned from `double %s()' function.

6.245.2 Content

Under construction.

6.245.3 Sample code

double func(void)
{
    char a = 0;
    return a; /* W0264 */
}

6.245.4 Related message

  • W0255 A value of char type is returned from `signed char %s()' function.
  • W0256 A value of char type is returned from `unsigned char %s()' function.
  • W0257 A value of char type is returned from `signed short %s()' function.
  • W0258 A value of char type is returned from `unsigned short %s()' function.
  • W0259 A value of char type is returned from `signed int %s()' function.
  • W0260 A value of char type is returned from `unsigned int %s()' function.
  • W0261 A value of char type is returned from `signed long %s()' function.
  • W0262 A value of char type is returned from `unsigned long %s()' function.
  • W0263 A value of char type is returned from `float %s()' function.
  • W0265 A value of char type is returned from `long double %s()' function.
  • W0266 A value of char type is returned from `signed long long %s()' function.
  • W0267 A value of char type is returned from `unsigned long long %s()' function.

6.245.5 Since

1.0.0


Next: , Previous: W0264, Up: Messages

6.246 W0265

6.246.1 Message body

A value of char type is returned from `long double %s()' function.

6.246.2 Content

Under construction.

6.246.3 Sample code

long double func(void)
{
    char a = 0;
    return a; /* W0265 */
}

6.246.4 Related message

  • W0255 A value of char type is returned from `signed char %s()' function.
  • W0256 A value of char type is returned from `unsigned char %s()' function.
  • W0257 A value of char type is returned from `signed short %s()' function.
  • W0258 A value of char type is returned from `unsigned short %s()' function.
  • W0259 A value of char type is returned from `signed int %s()' function.
  • W0260 A value of char type is returned from `unsigned int %s()' function.
  • W0261 A value of char type is returned from `signed long %s()' function.
  • W0262 A value of char type is returned from `unsigned long %s()' function.
  • W0263 A value of char type is returned from `float %s()' function.
  • W0264 A value of char type is returned from `double %s()' function.
  • W0266 A value of char type is returned from `signed long long %s()' function.
  • W0267 A value of char type is returned from `unsigned long long %s()' function.

6.246.5 Since

1.0.0


Next: , Previous: W0265, Up: Messages

6.247 W0266

6.247.1 Message body

A value of char type is returned from `signed long long %s()' function.

6.247.2 Content

Under construction.

6.247.3 Sample code

long long func(void)
{
    char a = 0;
    return a; /* W0266 */
}

6.247.4 Related message

  • W0255 A value of char type is returned from `signed char %s()' function.
  • W0256 A value of char type is returned from `unsigned char %s()' function.
  • W0257 A value of char type is returned from `signed short %s()' function.
  • W0258 A value of char type is returned from `unsigned short %s()' function.
  • W0259 A value of char type is returned from `signed int %s()' function.
  • W0260 A value of char type is returned from `unsigned int %s()' function.
  • W0261 A value of char type is returned from `signed long %s()' function.
  • W0262 A value of char type is returned from `unsigned long %s()' function.
  • W0263 A value of char type is returned from `float %s()' function.
  • W0264 A value of char type is returned from `double %s()' function.
  • W0265 A value of char type is returned from `long double %s()' function.
  • W0267 A value of char type is returned from `unsigned long long %s()' function.

6.247.5 Since

1.0.0


Next: , Previous: W0266, Up: Messages

6.248 W0267

6.248.1 Message body

A value of char type is returned from `unsigned long long %s()' function.

6.248.2 Content

Under construction.

6.248.3 Sample code

unsigned long long func(void)
{
    char a = 0;
    return a; /* W0267 */
}

6.248.4 Related message

  • W0255 A value of char type is returned from `signed char %s()' function.
  • W0256 A value of char type is returned from `unsigned char %s()' function.
  • W0257 A value of char type is returned from `signed short %s()' function.
  • W0258 A value of char type is returned from `unsigned short %s()' function.
  • W0259 A value of char type is returned from `signed int %s()' function.
  • W0260 A value of char type is returned from `unsigned int %s()' function.
  • W0261 A value of char type is returned from `signed long %s()' function.
  • W0262 A value of char type is returned from `unsigned long %s()' function.
  • W0263 A value of char type is returned from `float %s()' function.
  • W0264 A value of char type is returned from `double %s()' function.
  • W0265 A value of char type is returned from `long double %s()' function.
  • W0266 A value of char type is returned from `signed long long %s()' function.

6.248.5 Since

1.0.0


Next: , Previous: W0267, Up: Messages

6.249 W0268

6.249.1 Message body

A value of unsigned char type is returned from `char %s()' function.

6.249.2 Content

Under construction.

6.249.3 Sample code

char func(void)
{
    unsigned char a = 0;
    return a; /* W0268 */
}

6.249.4 Related message

  • W0269 A value of signed char type is returned from `char %s()' function.
  • W0270 A value of signed short type is returned from `char %s()' function.
  • W0271 A value of unsigned short type is returned from `char %s()' function.
  • W0272 A value of signed int type is returned from `char %s()' function.
  • W0273 A value of unsigned int type is returned from `char %s()' function.
  • W0274 A value of signed long type is returned from `char %s()' function.
  • W0275 A value of unsigned long type is returned from `char %s()' function.
  • W0276 A value of signed long long type is returned from `char %s()' function.
  • W0277 A value of unsigned long long type is returned from `char %s()' function.

6.249.5 Since

1.0.0


Next: , Previous: W0268, Up: Messages

6.250 W0269

6.250.1 Message body

A value of signed char type is returned from `char %s()' function.

6.250.2 Content

Under construction.

6.250.3 Sample code

char func(void)
{
    signed char a = 0;
    return a; /* W0269 */
}

6.250.4 Related message

  • W0268 A value of unsigned char type is returned from `char %s()' function.
  • W0270 A value of signed short type is returned from `char %s()' function.
  • W0271 A value of unsigned short type is returned from `char %s()' function.
  • W0272 A value of signed int type is returned from `char %s()' function.
  • W0273 A value of unsigned int type is returned from `char %s()' function.
  • W0274 A value of signed long type is returned from `char %s()' function.
  • W0275 A value of unsigned long type is returned from `char %s()' function.
  • W0276 A value of signed long long type is returned from `char %s()' function.
  • W0277 A value of unsigned long long type is returned from `char %s()' function.

6.250.5 Since

1.0.0


Next: , Previous: W0269, Up: Messages

6.251 W0270

6.251.1 Message body

A value of signed short type is returned from `char %s()' function.

6.251.2 Content

Under construction.

6.251.3 Sample code

char func(void)
{
    short a = 0;
    return a; /* W0270 */
}

6.251.4 Related message

  • W0268 A value of unsigned char type is returned from `char %s()' function.
  • W0269 A value of signed char type is returned from `char %s()' function.
  • W0271 A value of unsigned short type is returned from `char %s()' function.
  • W0272 A value of signed int type is returned from `char %s()' function.
  • W0273 A value of unsigned int type is returned from `char %s()' function.
  • W0274 A value of signed long type is returned from `char %s()' function.
  • W0275 A value of unsigned long type is returned from `char %s()' function.
  • W0276 A value of signed long long type is returned from `char %s()' function.
  • W0277 A value of unsigned long long type is returned from `char %s()' function.

6.251.5 Since

1.0.0


Next: , Previous: W0270, Up: Messages

6.252 W0271

6.252.1 Message body

A value of unsigned short type is returned from `char %s()' function.

6.252.2 Content

Under construction.

6.252.3 Sample code

char func(void)
{
    unsigned short a = 0;
    return a; /* W0271 */
}

6.252.4 Related message

  • W0268 A value of unsigned char type is returned from `char %s()' function.
  • W0269 A value of signed char type is returned from `char %s()' function.
  • W0270 A value of signed short type is returned from `char %s()' function.
  • W0272 A value of signed int type is returned from `char %s()' function.
  • W0273 A value of unsigned int type is returned from `char %s()' function.
  • W0274 A value of signed long type is returned from `char %s()' function.
  • W0275 A value of unsigned long type is returned from `char %s()' function.
  • W0276 A value of signed long long type is returned from `char %s()' function.
  • W0277 A value of unsigned long long type is returned from `char %s()' function.

6.252.5 Since

1.0.0


Next: , Previous: W0271, Up: Messages

6.253 W0272

6.253.1 Message body

A value of signed int type is returned from `char %s()' function.

6.253.2 Content

Under construction.

6.253.3 Sample code

char func(void)
{
    int a = 0;
    return a; /* W0272 */
}

6.253.4 Related message

  • W0268 A value of unsigned char type is returned from `char %s()' function.
  • W0269 A value of signed char type is returned from `char %s()' function.
  • W0270 A value of signed short type is returned from `char %s()' function.
  • W0271 A value of unsigned short type is returned from `char %s()' function.
  • W0273 A value of unsigned int type is returned from `char %s()' function.
  • W0274 A value of signed long type is returned from `char %s()' function.
  • W0275 A value of unsigned long type is returned from `char %s()' function.
  • W0276 A value of signed long long type is returned from `char %s()' function.
  • W0277 A value of unsigned long long type is returned from `char %s()' function.

6.253.5 Since

1.0.0


Next: , Previous: W0272, Up: Messages

6.254 W0273

6.254.1 Message body

A value of unsigned int type is returned from `char %s()' function.

6.254.2 Content

Under construction.

6.254.3 Sample code

char func(void)
{
    unsigned int a = 0;
    return a; /* W0273 */
}

6.254.4 Related message

  • W0268 A value of unsigned char type is returned from `char %s()' function.
  • W0269 A value of signed char type is returned from `char %s()' function.
  • W0270 A value of signed short type is returned from `char %s()' function.
  • W0271 A value of unsigned short type is returned from `char %s()' function.
  • W0272 A value of signed int type is returned from `char %s()' function.
  • W0274 A value of signed long type is returned from `char %s()' function.
  • W0275 A value of unsigned long type is returned from `char %s()' function.
  • W0276 A value of signed long long type is returned from `char %s()' function.
  • W0277 A value of unsigned long long type is returned from `char %s()' function.

6.254.5 Since

1.0.0


Next: , Previous: W0273, Up: Messages

6.255 W0274

6.255.1 Message body

A value of signed long type is returned from `char %s()' function.

6.255.2 Content

6.255.3 Sample code

char func(void)
{
    long a = 0;
    return a; /* W0274 */
}

6.255.4 Related message

  • W0268 A value of unsigned char type is returned from `char %s()' function.
  • W0269 A value of signed char type is returned from `char %s()' function.
  • W0270 A value of signed short type is returned from `char %s()' function.
  • W0271 A value of unsigned short type is returned from `char %s()' function.
  • W0272 A value of signed int type is returned from `char %s()' function.
  • W0273 A value of unsigned int type is returned from `char %s()' function.
  • W0275 A value of unsigned long type is returned from `char %s()' function.
  • W0276 A value of signed long long type is returned from `char %s()' function.
  • W0277 A value of unsigned long long type is returned from `char %s()' function.

6.255.5 Since

1.0.0


Next: , Previous: W0274, Up: Messages

6.256 W0275

6.256.1 Message body

A value of unsigned long type is returned from `char %s()' function.

6.256.2 Content

Under construction.

6.256.3 Sample code

char func(void)
{
    unsigned long a = 0;
    return a; /* W0275 */
}

6.256.4 Related message

  • W0268 A value of unsigned char type is returned from `char %s()' function.
  • W0269 A value of signed char type is returned from `char %s()' function.
  • W0270 A value of signed short type is returned from `char %s()' function.
  • W0271 A value of unsigned short type is returned from `char %s()' function.
  • W0272 A value of signed int type is returned from `char %s()' function.
  • W0273 A value of unsigned int type is returned from `char %s()' function.
  • W0274 A value of signed long type is returned from `char %s()' function.
  • W0276 A value of signed long long type is returned from `char %s()' function.
  • W0277 A value of unsigned long long type is returned from `char %s()' function.

6.256.5 Since

1.0.0


Next: , Previous: W0275, Up: Messages

6.257 W0276

6.257.1 Message body

A value of signed long long type is returned from `char %s()' function.

6.257.2 Content

Under construction.

6.257.3 Sample code

char func(void)
{
    long long a = 0;
    return a; /* W0276 */
}

6.257.4 Related message

  • W0268 A value of unsigned char type is returned from `char %s()' function.
  • W0269 A value of signed char type is returned from `char %s()' function.
  • W0270 A value of signed short type is returned from `char %s()' function.
  • W0271 A value of unsigned short type is returned from `char %s()' function.
  • W0272 A value of signed int type is returned from `char %s()' function.
  • W0273 A value of unsigned int type is returned from `char %s()' function.
  • W0274 A value of signed long type is returned from `char %s()' function.
  • W0275 A value of unsigned long type is returned from `char %s()' function.
  • W0277 A value of unsigned long long type is returned from `char %s()' function.

6.257.5 Since

1.0.0


Next: , Previous: W0276, Up: Messages

6.258 W0277

6.258.1 Message body

A value of unsigned long long type is returned from `char %s()' function.

6.258.2 Content

Under construction.

6.258.3 Sample code

char func(void)
{
    unsigned long long a = 0;
    return a; /* W0277 */
}

6.258.4 Related message

  • W0268 A value of unsigned char type is returned from `char %s()' function.
  • W0269 A value of signed char type is returned from `char %s()' function.
  • W0270 A value of signed short type is returned from `char %s()' function.
  • W0271 A value of unsigned short type is returned from `char %s()' function.
  • W0272 A value of signed int type is returned from `char %s()' function.
  • W0273 A value of unsigned int type is returned from `char %s()' function.
  • W0274 A value of signed long type is returned from `char %s()' function.
  • W0275 A value of unsigned long type is returned from `char %s()' function.
  • W0276 A value of signed long long type is returned from `char %s()' function.

6.258.5 Since

1.0.0


Next: , Previous: W0277, Up: Messages

6.259 W0278

6.259.1 Message body

A value of unsigned char type is returned from `signed char %s()' function.

6.259.2 Content

Under construction.

6.259.3 Sample code

signed char func(void)
{
    unsigned char a = 0;
    return a; /* W0278 */
}

6.259.4 Related message

  • W0279 A value of unsigned short type is returned from `signed char %s()' function.
  • W0280 A value of unsigned short type is returned from `signed short %s()' function.
  • W0281 A value of unsigned int type is returned from `signed char %s()' function.
  • W0282 A value of unsigned int type is returned from `signed short %s()' function.
  • W0283 A value of unsigned int type is returned from `signed int %s()' function.
  • W0284 A value of unsigned long type is returned from `signed char %s()' function.
  • W0285 A value of unsigned long type is returned from `signed short %s()' function.
  • W0286 A value of unsigned long type is returned from `signed int %s()' function.
  • W0287 A value of unsigned long type is returned from `signed long %s()' function.
  • W0288 A value of unsigned long long type is returned from `signed char %s()' function.
  • W0289 A value of unsigned long long type is returned from `signed short %s()' function.
  • W0290 A value of unsigned long long type is returned from `signed int %s()' function.
  • W0291 A value of unsigned long long type is returned from `signed long %s()' function.
  • W0292 A value of unsigned long long type is returned from `signed long long %s()' function.

6.259.5 Since

1.0.0


Next: , Previous: W0278, Up: Messages

6.260 W0279

6.260.1 Message body

A value of unsigned short type is returned from `signed char %s()' function.

6.260.2 Content

Under construction.

6.260.3 Sample code

signed char func(void)
{
    unsigned short a = 0;
    return a; /* W0279 */
}

6.260.4 Related message

  • W0278 A value of unsigned char type is returned from `signed char %s()' function.
  • W0280 A value of unsigned short type is returned from `signed short %s()' function.
  • W0281 A value of unsigned int type is returned from `signed char %s()' function.
  • W0282 A value of unsigned int type is returned from `signed short %s()' function.
  • W0283 A value of unsigned int type is returned from `signed int %s()' function.
  • W0284 A value of unsigned long type is returned from `signed char %s()' function.
  • W0285 A value of unsigned long type is returned from `signed short %s()' function.
  • W0286 A value of unsigned long type is returned from `signed int %s()' function.
  • W0287 A value of unsigned long type is returned from `signed long %s()' function.
  • W0288 A value of unsigned long long type is returned from `signed char %s()' function.
  • W0289 A value of unsigned long long type is returned from `signed short %s()' function.
  • W0290 A value of unsigned long long type is returned from `signed int %s()' function.
  • W0291 A value of unsigned long long type is returned from `signed long %s()' function.
  • W0292 A value of unsigned long long type is returned from `signed long long %s()' function.

6.260.5 Since

1.0.0


Next: , Previous: W0279, Up: Messages

6.261 W0280

6.261.1 Message body

A value of unsigned short type is returned from `signed short %s()' function.

6.261.2 Content

Under construction.

6.261.3 Sample code

short func(void)
{
    unsigned short a = 0;
    return a; /* W0280 */
}

6.261.4 Related message

  • W0278 A value of unsigned char type is returned from `signed char %s()' function.
  • W0279 A value of unsigned short type is returned from `signed char %s()' function.
  • W0281 A value of unsigned int type is returned from `signed char %s()' function.
  • W0282 A value of unsigned int type is returned from `signed short %s()' function.
  • W0283 A value of unsigned int type is returned from `signed int %s()' function.
  • W0284 A value of unsigned long type is returned from `signed char %s()' function.
  • W0285 A value of unsigned long type is returned from `signed short %s()' function.
  • W0286 A value of unsigned long type is returned from `signed int %s()' function.
  • W0287 A value of unsigned long type is returned from `signed long %s()' function.
  • W0288 A value of unsigned long long type is returned from `signed char %s()' function.
  • W0289 A value of unsigned long long type is returned from `signed short %s()' function.
  • W0290 A value of unsigned long long type is returned from `signed int %s()' function.
  • W0291 A value of unsigned long long type is returned from `signed long %s()' function.
  • W0292 A value of unsigned long long type is returned from `signed long long %s()' function.

6.261.5 Since

1.0.0


Next: , Previous: W0280, Up: Messages

6.262 W0281

6.262.1 Message body

A value of unsigned int type is returned from `signed char %s()' function.

6.262.2 Content

Under construction.

6.262.3 Sample code

signed char func(void)
{
    unsigned int a = 0;
    return a; /* W0281 */
}

6.262.4 Related message

  • W0278 A value of unsigned char type is returned from `signed char %s()' function.
  • W0279 A value of unsigned short type is returned from `signed char %s()' function.
  • W0280 A value of unsigned short type is returned from `signed short %s()' function.
  • W0282 A value of unsigned int type is returned from `signed short %s()' function.
  • W0283 A value of unsigned int type is returned from `signed int %s()' function.
  • W0284 A value of unsigned long type is returned from `signed char %s()' function.
  • W0285 A value of unsigned long type is returned from `signed short %s()' function.
  • W0286 A value of unsigned long type is returned from `signed int %s()' function.
  • W0287 A value of unsigned long type is returned from `signed long %s()' function.
  • W0288 A value of unsigned long long type is returned from `signed char %s()' function.
  • W0289 A value of unsigned long long type is returned from `signed short %s()' function.
  • W0290 A value of unsigned long long type is returned from `signed int %s()' function.
  • W0291 A value of unsigned long long type is returned from `signed long %s()' function.
  • W0292 A value of unsigned long long type is returned from `signed long long %s()' function.

6.262.5 Since

1.0.0


Next: , Previous: W0281, Up: Messages

6.263 W0282

6.263.1 Message body

A value of unsigned int type is returned from `signed short %s()' function.

6.263.2 Content

Under construction.

6.263.3 Sample code

short func(void)
{
    unsigned int a = 0;
    return a; /* W0282 */
}

6.263.4 Related message

  • W0278 A value of unsigned char type is returned from `signed char %s()' function.
  • W0279 A value of unsigned short type is returned from `signed char %s()' function.
  • W0280 A value of unsigned short type is returned from `signed short %s()' function.
  • W0281 A value of unsigned int type is returned from `signed char %s()' function.
  • W0283 A value of unsigned int type is returned from `signed int %s()' function.
  • W0284 A value of unsigned long type is returned from `signed char %s()' function.
  • W0285 A value of unsigned long type is returned from `signed short %s()' function.
  • W0286 A value of unsigned long type is returned from `signed int %s()' function.
  • W0287 A value of unsigned long type is returned from `signed long %s()' function.
  • W0288 A value of unsigned long long type is returned from `signed char %s()' function.
  • W0289 A value of unsigned long long type is returned from `signed short %s()' function.
  • W0290 A value of unsigned long long type is returned from `signed int %s()' function.
  • W0291 A value of unsigned long long type is returned from `signed long %s()' function.
  • W0292 A value of unsigned long long type is returned from `signed long long %s()' function.

6.263.5 Since

1.0.0


Next: , Previous: W0282, Up: Messages

6.264 W0283

6.264.1 Message body

A value of unsigned int type is returned from `signed int %s()' function.

6.264.2 Content

Under construction.

6.264.3 Sample code

int func(void)
{
    unsigned int a = 0;
    return a; /* W0283 */
}

6.264.4 Related message

  • W0278 A value of unsigned char type is returned from `signed char %s()' function.
  • W0279 A value of unsigned short type is returned from `signed char %s()' function.
  • W0280 A value of unsigned short type is returned from `signed short %s()' function.
  • W0281 A value of unsigned int type is returned from `signed char %s()' function.
  • W0282 A value of unsigned int type is returned from `signed short %s()' function.
  • W0284 A value of unsigned long type is returned from `signed char %s()' function.
  • W0285 A value of unsigned long type is returned from `signed short %s()' function.
  • W0286 A value of unsigned long type is returned from `signed int %s()' function.
  • W0287 A value of unsigned long type is returned from `signed long %s()' function.
  • W0288 A value of unsigned long long type is returned from `signed char %s()' function.
  • W0289 A value of unsigned long long type is returned from `signed short %s()' function.
  • W0290 A value of unsigned long long type is returned from `signed int %s()' function.
  • W0291 A value of unsigned long long type is returned from `signed long %s()' function.
  • W0292 A value of unsigned long long type is returned from `signed long long %s()' function.

6.264.5 Since

1.0.0


Next: , Previous: W0283, Up: Messages

6.265 W0284

6.265.1 Message body

A value of unsigned long type is returned from `signed char %s()' function.

6.265.2 Content

Under construction.

6.265.3 Sample code

signed char func(void)
{
    unsigned long a = 0;
    return a; /* W0284 */
}

6.265.4 Related message

  • W0278 A value of unsigned char type is returned from `signed char %s()' function.
  • W0279 A value of unsigned short type is returned from `signed char %s()' function.
  • W0280 A value of unsigned short type is returned from `signed short %s()' function.
  • W0281 A value of unsigned int type is returned from `signed char %s()' function.
  • W0282 A value of unsigned int type is returned from `signed short %s()' function.
  • W0283 A value of unsigned int type is returned from `signed int %s()' function.
  • W0285 A value of unsigned long type is returned from `signed short %s()' function.
  • W0286 A value of unsigned long type is returned from `signed int %s()' function.
  • W0287 A value of unsigned long type is returned from `signed long %s()' function.
  • W0288 A value of unsigned long long type is returned from `signed char %s()' function.
  • W0289 A value of unsigned long long type is returned from `signed short %s()' function.
  • W0290 A value of unsigned long long type is returned from `signed int %s()' function.
  • W0291 A value of unsigned long long type is returned from `signed long %s()' function.
  • W0292 A value of unsigned long long type is returned from `signed long long %s()' function.

6.265.5 Since

1.0.0


Next: , Previous: W0284, Up: Messages

6.266 W0285

6.266.1 Message body

A value of unsigned long type is returned from `signed short %s()' function.

6.266.2 Content

Under construction.

6.266.3 Sample code

short func(void)
{
    unsigned long a = 0;
    return a; /* W0285 */
}

6.266.4 Related message

  • W0278 A value of unsigned char type is returned from `signed char %s()' function.
  • W0279 A value of unsigned short type is returned from `signed char %s()' function.
  • W0280 A value of unsigned short type is returned from `signed short %s()' function.
  • W0281 A value of unsigned int type is returned from `signed char %s()' function.
  • W0282 A value of unsigned int type is returned from `signed short %s()' function.
  • W0283 A value of unsigned int type is returned from `signed int %s()' function.
  • W0284 A value of unsigned long type is returned from `signed char %s()' function.
  • W0286 A value of unsigned long type is returned from `signed int %s()' function.
  • W0287 A value of unsigned long type is returned from `signed long %s()' function.
  • W0288 A value of unsigned long long type is returned from `signed char %s()' function.
  • W0289 A value of unsigned long long type is returned from `signed short %s()' function.
  • W0290 A value of unsigned long long type is returned from `signed int %s()' function.
  • W0291 A value of unsigned long long type is returned from `signed long %s()' function.
  • W0292 A value of unsigned long long type is returned from `signed long long %s()' function.

6.266.5 Since

1.0.0


Next: , Previous: W0285, Up: Messages

6.267 W0286

6.267.1 Message body

A value of unsigned long type is returned from `signed int %s()' function.

6.267.2 Content

Under construction.

6.267.3 Sample code

int func(void)
{
    unsigned long a = 0;
    return a; /* W0286 */
}

6.267.4 Related message

  • W0278 A value of unsigned char type is returned from `signed char %s()' function.
  • W0279 A value of unsigned short type is returned from `signed char %s()' function.
  • W0280 A value of unsigned short type is returned from `signed short %s()' function.
  • W0281 A value of unsigned int type is returned from `signed char %s()' function.
  • W0282 A value of unsigned int type is returned from `signed short %s()' function.
  • W0283 A value of unsigned int type is returned from `signed int %s()' function.
  • W0284 A value of unsigned long type is returned from `signed char %s()' function.
  • W0285 A value of unsigned long type is returned from `signed short %s()' function.
  • W0287 A value of unsigned long type is returned from `signed long %s()' function.
  • W0288 A value of unsigned long long type is returned from `signed char %s()' function.
  • W0289 A value of unsigned long long type is returned from `signed short %s()' function.
  • W0290 A value of unsigned long long type is returned from `signed int %s()' function.
  • W0291 A value of unsigned long long type is returned from `signed long %s()' function.
  • W0292 A value of unsigned long long type is returned from `signed long long %s()' function.

6.267.5 Since

1.0.0


Next: , Previous: W0286, Up: Messages

6.268 W0287

6.268.1 Message body

A value of unsigned long type is returned from `signed long %s()' function.

6.268.2 Content

Under construction.

6.268.3 Sample code

long func(void)
{
    unsigned long a = 0;
    return a; /* W0287 */
}

6.268.4 Related message

  • W0278 A value of unsigned char type is returned from `signed char %s()' function.
  • W0279 A value of unsigned short type is returned from `signed char %s()' function.
  • W0280 A value of unsigned short type is returned from `signed short %s()' function.
  • W0281 A value of unsigned int type is returned from `signed char %s()' function.
  • W0282 A value of unsigned int type is returned from `signed short %s()' function.
  • W0283 A value of unsigned int type is returned from `signed int %s()' function.
  • W0284 A value of unsigned long type is returned from `signed char %s()' function.
  • W0285 A value of unsigned long type is returned from `signed short %s()' function.
  • W0286 A value of unsigned long type is returned from `signed int %s()' function.
  • W0288 A value of unsigned long long type is returned from `signed char %s()' function.
  • W0289 A value of unsigned long long type is returned from `signed short %s()' function.
  • W0290 A value of unsigned long long type is returned from `signed int %s()' function.
  • W0291 A value of unsigned long long type is returned from `signed long %s()' function.
  • W0292 A value of unsigned long long type is returned from `signed long long %s()' function.

6.268.5 Since

1.0.0


Next: , Previous: W0287, Up: Messages

6.269 W0288

6.269.1 Message body

A value of unsigned long long type is returned from `signed char %s()' function.

6.269.2 Content

Under construction.

6.269.3 Sample code

signed char func(void)
{
    unsigned long long a = 0;
    return a; /* W0288 */
}

6.269.4 Related message

  • W0278 A value of unsigned char type is returned from `signed char %s()' function.
  • W0279 A value of unsigned short type is returned from `signed char %s()' function.
  • W0280 A value of unsigned short type is returned from `signed short %s()' function.
  • W0281 A value of unsigned int type is returned from `signed char %s()' function.
  • W0282 A value of unsigned int type is returned from `signed short %s()' function.
  • W0283 A value of unsigned int type is returned from `signed int %s()' function.
  • W0284 A value of unsigned long type is returned from `signed char %s()' function.
  • W0285 A value of unsigned long type is returned from `signed short %s()' function.
  • W0286 A value of unsigned long type is returned from `signed int %s()' function.
  • W0287 A value of unsigned long type is returned from `signed long %s()' function.
  • W0289 A value of unsigned long long type is returned from `signed short %s()' function.
  • W0290 A value of unsigned long long type is returned from `signed int %s()' function.
  • W0291 A value of unsigned long long type is returned from `signed long %s()' function.
  • W0292 A value of unsigned long long type is returned from `signed long long %s()' function.

6.269.5 Since

1.0.0


Next: , Previous: W0288, Up: Messages

6.270 W0289

6.270.1 Message body

A value of unsigned long long type is returned from `short %s()' function.

6.270.2 Content

Under construction.

6.270.3 Sample code

short func(void)
{
    unsigned long long a = 0;
    return a; /* W0289 */
}

6.270.4 Related message

  • W0278 A value of unsigned char type is returned from `signed char %s()' function.
  • W0279 A value of unsigned short type is returned from `signed char %s()' function.
  • W0280 A value of unsigned short type is returned from `signed short %s()' function.
  • W0281 A value of unsigned int type is returned from `signed char %s()' function.
  • W0282 A value of unsigned int type is returned from `signed short %s()' function.
  • W0283 A value of unsigned int type is returned from `signed int %s()' function.
  • W0284 A value of unsigned long type is returned from `signed char %s()' function.
  • W0285 A value of unsigned long type is returned from `signed short %s()' function.
  • W0286 A value of unsigned long type is returned from `signed int %s()' function.
  • W0287 A value of unsigned long type is returned from `signed long %s()' function.
  • W0288 A value of unsigned long long type is returned from `signed char %s()' function.
  • W0290 A value of unsigned long long type is returned from `signed int %s()' function.
  • W0291 A value of unsigned long long type is returned from `signed long %s()' function.
  • W0292 A value of unsigned long long type is returned from `signed long long %s()' function.

6.270.5 Since

1.0.0


Next: , Previous: W0289, Up: Messages

6.271 W0290

6.271.1 Message body

A value of unsigned long long type is returned from `signed int %s()' function.

6.271.2 Content

Under construction.

6.271.3 Sample code

int func(void)
{
    unsigned long long a = 0;
    return a; /* W0290 */
}

6.271.4 Related message

  • W0278 A value of unsigned char type is returned from `signed char %s()' function.
  • W0279 A value of unsigned short type is returned from `signed char %s()' function.
  • W0280 A value of unsigned short type is returned from `signed short %s()' function.
  • W0281 A value of unsigned int type is returned from `signed char %s()' function.
  • W0282 A value of unsigned int type is returned from `signed short %s()' function.
  • W0283 A value of unsigned int type is returned from `signed int %s()' function.
  • W0284 A value of unsigned long type is returned from `signed char %s()' function.
  • W0285 A value of unsigned long type is returned from `signed short %s()' function.
  • W0286 A value of unsigned long type is returned from `signed int %s()' function.
  • W0287 A value of unsigned long type is returned from `signed long %s()' function.
  • W0288 A value of unsigned long long type is returned from `signed char %s()' function.
  • W0289 A value of unsigned long long type is returned from `signed short %s()' function.
  • W0291 A value of unsigned long long type is returned from `signed long %s()' function.
  • W0292 A value of unsigned long long type is returned from `signed long long %s()' function.

6.271.5 Since

1.0.0


Next: , Previous: W0290, Up: Messages

6.272 W0291

6.272.1 Message body

A value of unsigned long long type is returned from `signed long %s()' function.

6.272.2 Content

Under construction.

6.272.3 Sample code

long func(void)
{
    unsigned long long a = 0;
    return a; /* W0291 */
}

6.272.4 Related message

  • W0278 A value of unsigned char type is returned from `signed char %s()' function.
  • W0279 A value of unsigned short type is returned from `signed char %s()' function.
  • W0280 A value of unsigned short type is returned from `signed short %s()' function.
  • W0281 A value of unsigned int type is returned from `signed char %s()' function.
  • W0282 A value of unsigned int type is returned from `signed short %s()' function.
  • W0283 A value of unsigned int type is returned from `signed int %s()' function.
  • W0284 A value of unsigned long type is returned from `signed char %s()' function.
  • W0285 A value of unsigned long type is returned from `signed short %s()' function.
  • W0286 A value of unsigned long type is returned from `signed int %s()' function.
  • W0287 A value of unsigned long type is returned from `signed long %s()' function.
  • W0288 A value of unsigned long long type is returned from `signed char %s()' function.
  • W0289 A value of unsigned long long type is returned from `signed short %s()' function.
  • W0290 A value of unsigned long long type is returned from `signed int %s()' function.
  • W0292 A value of unsigned long long type is returned from `signed long long %s()' function.

6.272.5 Since

1.0.0


Next: , Previous: W0291, Up: Messages

6.273 W0292

6.273.1 Message body

A value of unsigned long long type is returned from `signed long long %s()' function.

6.273.2 Content

Under construction.

6.273.3 Sample code

long long func(void)
{
    unsigned long long a = 0;
    return a; /* W0292 */
}

6.273.4 Related message

  • W0278 A value of unsigned char type is returned from `signed char %s()' function.
  • W0279 A value of unsigned short type is returned from `signed char %s()' function.
  • W0280 A value of unsigned short type is returned from `signed short %s()' function.
  • W0281 A value of unsigned int type is returned from `signed char %s()' function.
  • W0282 A value of unsigned int type is returned from `signed short %s()' function.
  • W0283 A value of unsigned int type is returned from `signed int %s()' function.
  • W0284 A value of unsigned long type is returned from `signed char %s()' function.
  • W0285 A value of unsigned long type is returned from `signed short %s()' function.
  • W0286 A value of unsigned long type is returned from `signed int %s()' function.
  • W0287 A value of unsigned long type is returned from `signed long %s()' function.
  • W0288 A value of unsigned long long type is returned from `signed char %s()' function.
  • W0289 A value of unsigned long long type is returned from `signed short %s()' function.
  • W0290 A value of unsigned long long type is returned from `signed int %s()' function.
  • W0291 A value of unsigned long long type is returned from `signed long %s()' function.

6.273.5 Since

1.0.0


Next: , Previous: W0292, Up: Messages

6.274 W0293

6.274.1 Message body

A value of signed char type is returned from `unsigned char %s()' function.

6.274.2 Content

Under construction.

6.274.3 Sample code

unsigned char func(void)
{
    signed char a = 0;
    return a; /* W0293 */
}

6.274.4 Related message

  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.274.5 Since

1.0.0


Next: , Previous: W0293, Up: Messages

6.275 W0294

6.275.1 Message body

A value of signed char type is returned from `unsigned short %s()' function.

6.275.2 Content

Under construction.

6.275.3 Sample code

unsigned short func(void)
{
    signed char a = 0;
    return a; /* W0294 */
}

6.275.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.275.5 Since

1.0.0


Next: , Previous: W0294, Up: Messages

6.276 W0295

6.276.1 Message body

A value of signed char type is returned from `unsigned int %s()' function.

6.276.2 Content

Under construction.

6.276.3 Sample code

unsigned int func(void)
{
    signed char a = 0;
    return a; /* W0295 */
}

6.276.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.276.5 Since

1.0.0


Next: , Previous: W0295, Up: Messages

6.277 W0296

6.277.1 Message body

A value of signed char type is returned from `unsigned long %s()' function.

6.277.2 Content

Under construction.

6.277.3 Sample code

unsigned long func(void)
{
    signed char a = 0;
    return a; /* W0296 */
}

6.277.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.277.5 Since

1.0.0


Next: , Previous: W0296, Up: Messages

6.278 W0297

6.278.1 Message body

A value of signed short type is returned from `unsigned char %s()' function.

6.278.2 Content

Under construction.

6.278.3 Sample code

unsigned char func(void)
{
    short a = 0;
    return a; /* W0297 */
}

6.278.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.278.5 Since

1.0.0


Next: , Previous: W0297, Up: Messages

6.279 W0298

6.279.1 Message body

A value of short type is returned from `unsigned short %s()' function.

6.279.2 Content

Under construction.

6.279.3 Sample code

unsigned short func(void)
{
    short a = 0;
    return a; /* W0298 */
}

6.279.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.279.5 Since

1.0.0


Next: , Previous: W0298, Up: Messages

6.280 W0299

6.280.1 Message body

A value of signed short type is returned from `unsigned int %s()' function.

6.280.2 Content

Under construction.

6.280.3 Sample code

unsigned int func(void)
{
    short a = 0;
    return a; /* W0299 */
}

6.280.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.280.5 Since

1.0.0


Next: , Previous: W0299, Up: Messages

6.281 W0300

6.281.1 Message body

A value of signed short type is returned from `unsigned long %s()' function.

6.281.2 Content

Under construction.

6.281.3 Sample code

unsigned long func(void)
{
    short a = 0;
    return a; /* W0300 */
}

6.281.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.281.5 Since

1.0.0


Next: , Previous: W0300, Up: Messages

6.282 W0301

6.282.1 Message body

A value of signed int type is returned from `unsigned char %s()' function.

6.282.2 Content

Under construction.

6.282.3 Sample code

unsigned char func(void)
{
    int a = 0;
    return a; /* W0301 */
}

6.282.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.282.5 Since

1.0.0


Next: , Previous: W0301, Up: Messages

6.283 W0302

6.283.1 Message body

A value of signed int type is returned from `unsigned short %s()' function.

6.283.2 Content

Under construction.

6.283.3 Sample code

unsigned short func(void)
{
    int a = 0;
    return a; /* W0302 */
}

6.283.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.283.5 Since

1.0.0


Next: , Previous: W0302, Up: Messages

6.284 W0303

6.284.1 Message body

A value of signed int type is returned from `unsigned int %s()' function.

6.284.2 Content

Under construction.

6.284.3 Sample code

unsigned int func(void)
{
    int a = 0;
    return a; /* W0303 */
}

6.284.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.284.5 Since

1.0.0


Next: , Previous: W0303, Up: Messages

6.285 W0304

6.285.1 Message body

A value of signed int type is returned from `unsigned long %s()' function.

6.285.2 Content

Under construction.

6.285.3 Sample code

unsigned long func(void)
{
    int a = 0;
    return a; /* W0304 */
}

6.285.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.285.5 Since

1.0.0


Next: , Previous: W0304, Up: Messages

6.286 W0305

6.286.1 Message body

A value of signed long type is returned from `unsigned char %s()' function.

6.286.2 Content

Under construction.

6.286.3 Sample code

unsigned char func(void)
{
    long a = 0;
    return a; /* W0305 */
}

6.286.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.286.5 Since

1.0.0


Next: , Previous: W0305, Up: Messages

6.287 W0306

6.287.1 Message body

A value of signed long type is returned from `unsigned short %s()' function.

6.287.2 Content

Under construction.

6.287.3 Sample code

unsigned short func(void)
{
    long a = 0;
    return a; /* W0306 */
}

6.287.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.287.5 Since

1.0.0


Next: , Previous: W0306, Up: Messages

6.288 W0307

6.288.1 Message body

A value of signed long type is returned from `unsigned int %s()' function.

6.288.2 Content

Under construction.

6.288.3 Sample code

unsigned int func(void)
{
    long a = 0;
    return a; /* W0307 */
}

6.288.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.288.5 Since

1.0.0


Next: , Previous: W0307, Up: Messages

6.289 W0308

6.289.1 Message body

A value of signed long type is returned from `unsigned long %s()' function.

6.289.2 Content

Under construction.

6.289.3 Sample code

unsigned long func(void)
{
    long a = 0;
    return a; /* W0308 */
}

6.289.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.289.5 Since

1.0.0


Next: , Previous: W0308, Up: Messages

6.290 W0309

6.290.1 Message body

A value of signed char type is returned from `unsigned long long %s()' function.

6.290.2 Content

Under construction.

6.290.3 Sample code

unsigned long long func(void)
{
    signed char a = 0;
    return a; /* W0309 */
}

6.290.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.290.5 Since

1.0.0


Next: , Previous: W0309, Up: Messages

6.291 W0310

6.291.1 Message body

A value of signed short type is returned from `unsigned long long %s()' function.

6.291.2 Content

Under construction.

6.291.3 Sample code

unsigned long long func(void)
{
    short a = 0;
    return a; /* W0310 */
}

6.291.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.291.5 Since

1.0.0


Next: , Previous: W0310, Up: Messages

6.292 W0311

6.292.1 Message body

A value of signed int type is returned from `unsigned long long %s()' function.

6.292.2 Content

Under construction.

6.292.3 Sample code

unsigned long long func(void)
{
    int a = 0;
    return a; /* W0311 */
}

6.292.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.292.5 Since

1.0.0


Next: , Previous: W0311, Up: Messages

6.293 W0312

6.293.1 Message body

A value of signed long type is returned from `unsigned long long %s()' function.

6.293.2 Content

Under construction.

6.293.3 Sample code

unsigned long long func(void)
{
    long a = 0;
    return a; /* W0312 */
}

6.293.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.293.5 Since

1.0.0


Next: , Previous: W0312, Up: Messages

6.294 W0313

6.294.1 Message body

A value of signed long long type is returned from `unsigned char %s()' function.

6.294.2 Content

Under construction.

6.294.3 Sample code

unsigned char func(void)
{
    long long a = 0;
    return a; /* W0313 */
}

6.294.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.294.5 Since

1.0.0


Next: , Previous: W0313, Up: Messages

6.295 W0314

6.295.1 Message body

A value of signed long long type is returned from `unsigned short %s()' function.

6.295.2 Content

Under construction.

6.295.3 Sample code

unsigned short func(void)
{
    long long a = 0;
    return a; /* W0314 */
}

6.295.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.295.5 Since

1.0.0


Next: , Previous: W0314, Up: Messages

6.296 W0315

6.296.1 Message body

A value of signed long long type is returned from `unsigned int %s()' function.

6.296.2 Content

Under construction.

6.296.3 Sample code

unsigned int func(void)
{
    long long a = 0;
    return a; /* W0315 */
}

6.296.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.296.5 Since

1.0.0


Next: , Previous: W0315, Up: Messages

6.297 W0316

6.297.1 Message body

A value of signed long long type is returned from `unsigned long %s()' function.

6.297.2 Content

Under construction.

6.297.3 Sample code

unsigned long func(void)
{
    long long a = 0;
    return a; /* W0316 */
}

6.297.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0317 A value of signed long long type is returned from `unsigned long long %s()' function.

6.297.5 Since

1.0.0


Next: , Previous: W0316, Up: Messages

6.298 W0317

6.298.1 Message body

A value of signed long long type is returned from `unsigned long long %s()' function.

6.298.2 Content

Under construction.

6.298.3 Sample code

unsigned long long func(void)
{
    long long a = 0;
    return a; /* W0317 */
}

6.298.4 Related message

  • W0293 A value of signed char type is returned from `unsigned char %s()' function.
  • W0294 A value of signed char type is returned from `unsigned short %s()' function.
  • W0295 A value of signed char type is returned from `unsigned int %s()' function.
  • W0296 A value of signed char type is returned from `unsigned long %s()' function.
  • W0297 A value of signed short type is returned from `unsigned char %s()' function.
  • W0298 A value of signed short type is returned from `unsigned short %s()' function.
  • W0299 A value of signed short type is returned from `unsigned int %s()' function.
  • W0300 A value of signed short type is returned from `unsigned long %s()' function.
  • W0301 A value of signed int type is returned from `unsigned char %s()' function.
  • W0302 A value of signed int type is returned from `unsigned short %s()' function.
  • W0303 A value of signed int type is returned from `unsigned int %s()' function.
  • W0304 A value of signed int type is returned from `unsigned long %s()' function.
  • W0305 A value of signed long type is returned from `unsigned char %s()' function.
  • W0306 A value of signed long type is returned from `unsigned short %s()' function.
  • W0307 A value of signed long type is returned from `unsigned int %s()' function.
  • W0308 A value of signed long type is returned from `unsigned long %s()' function.
  • W0309 A value of signed char type is returned from `unsigned long long %s()' function.
  • W0310 A value of signed short type is returned from `unsigned long long %s()' function.
  • W0311 A value of signed int type is returned from `unsigned long long %s()' function.
  • W0312 A value of signed long type is returned from `unsigned long long %s()' function.
  • W0313 A value of signed long long type is returned from `unsigned char %s()' function.
  • W0314 A value of signed long long type is returned from `unsigned short %s()' function.
  • W0315 A value of signed long long type is returned from `unsigned int %s()' function.
  • W0316 A value of signed long long type is returned from `unsigned long %s()' function.

6.298.5 Since

1.0.0


Next: , Previous: W0317, Up: Messages

6.299 W0318

6.299.1 Message body

A value of unsigned char type is returned from `float %s()' function.

6.299.2 Content

Under construction.

6.299.3 Sample code

float func(void)
{
    unsigned char a = 0;
    return a; /* W0318 */
}

6.299.4 Related message

  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.299.5 Since

1.0.0


Next: , Previous: W0318, Up: Messages

6.300 W0319

6.300.1 Message body

A value of unsigned char type is returned from `double %s()' function.

6.300.2 Content

Under construction.

6.300.3 Sample code

double func(void)
{
    unsigned char a = 0;
    return a; /* W0319 */
}

6.300.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.300.5 Since

1.0.0


Next: , Previous: W0319, Up: Messages

6.301 W0320

6.301.1 Message body

A value of unsigned char type is returned from `long double %s()' function.

6.301.2 Content

Under construction.

6.301.3 Sample code

long double func(void)
{
    unsigned char a = 0;
    return a; /* W0320 */
}

6.301.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.301.5 Since

1.0.0


Next: , Previous: W0320, Up: Messages

6.302 W0321

6.302.1 Message body

A value of signed char type is returned from `float %s()' function.

6.302.2 Content

Under construction.

6.302.3 Sample code

float func(void)
{
    unsigned char a = 0;
    return a; /* W0321 */
}

6.302.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.302.5 Since

1.0.0


Next: , Previous: W0321, Up: Messages

6.303 W0322

6.303.1 Message body

A value of signed char type is returned from `double %s()' function.

6.303.2 Content

Under construction.

6.303.3 Sample code

double func(void)
{
    unsigned char a = 0;
    return a; /* W0322 */
}

6.303.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.303.5 Since

1.0.0


Next: , Previous: W0322, Up: Messages

6.304 W0323

6.304.1 Message body

A value of signed char type is returned from `long double %s()' function.

6.304.2 Content

Under construction.

6.304.3 Sample code

long double func(void)
{
    unsigned char a = 0;
    return a; /* W0323 */
}

6.304.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.304.5 Since

1.0.0


Next: , Previous: W0323, Up: Messages

6.305 W0324

6.305.1 Message body

A value of signed short type is returned from `float %s()' function.

6.305.2 Content

Under construction.

6.305.3 Sample code

float func(void)
{
    short a = 0;
    return a; /* W0324 */
}

6.305.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.305.5 Since

1.0.0


Next: , Previous: W0324, Up: Messages

6.306 W0325

6.306.1 Message body

A value of signed short type is returned from `double %s()' function.

6.306.2 Content

Under construction.

6.306.3 Sample code

double func(void)
{
    short a = 0;
    return a; /* W0325 */
}

6.306.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.306.5 Since

1.0.0


Next: , Previous: W0325, Up: Messages

6.307 W0326

6.307.1 Message body

A value of signed short type is returned from `long double %s()' function.

6.307.2 Content

Under construction.

6.307.3 Sample code

long double func(void)
{
    short a = 0;
    return a; /* W0326 */
}

6.307.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.307.5 Since

1.0.0


Next: , Previous: W0326, Up: Messages

6.308 W0327

6.308.1 Message body

A value of unsigned short type is returned from `float %s()' function.

6.308.2 Content

Under construction.

6.308.3 Sample code

float func(void)
{
    unsigned short a = 0;
    return a; /* W0327 */
}

6.308.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.308.5 Since

1.0.0


Next: , Previous: W0327, Up: Messages

6.309 W0328

6.309.1 Message body

A value of unsigned short type is returned from `double %s()' function.

6.309.2 Content

Under construction.

6.309.3 Sample code

double func(void)
{
    unsigned short a = 0;
    return a; /* W0328 */
}

6.309.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.309.5 Since

1.0.0


Next: , Previous: W0328, Up: Messages

6.310 W0329

6.310.1 Message body

A value of unsigned short type is returned from `long double %s()' function.

6.310.2 Content

Under construction.

6.310.3 Sample code

long double func(void)
{
    unsigned short a = 0;
    return a; /* W0329 */
}

6.310.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.310.5 Since

1.0.0


Next: , Previous: W0329, Up: Messages

6.311 W0330

6.311.1 Message body

A value of signed int type is returned from `float %s()' function.

6.311.2 Content

Under construction.

6.311.3 Sample code

float func(void)
{
    int a = 0;
    return a; /* W0330 */
}

6.311.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.311.5 Since

1.0.0


Next: , Previous: W0330, Up: Messages

6.312 W0331

6.312.1 Message body

A value of signed int type is returned from `double %s()' function.

6.312.2 Content

Under construction.

6.312.3 Sample code

double func(void)
{
    int a = 0;
    return a; /* W0331 */
}

6.312.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.312.5 Since

1.0.0


Next: , Previous: W0331, Up: Messages

6.313 W0332

6.313.1 Message body

A value of signed int type is returned from `long double %s()' function.

6.313.2 Content

Under construction.

6.313.3 Sample code

long double func(void)
{
    int a = 0;
    return a; /* W0332 */
}

6.313.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.313.5 Since

1.0.0


Next: , Previous: W0332, Up: Messages

6.314 W0333

6.314.1 Message body

A value of unsigned int type is returned from `float %s()' function.

6.314.2 Content

Under construction.

6.314.3 Sample code

float func(void)
{
    unsigned int a = 0;
    return a; /* W0333 */
}

6.314.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.314.5 Since

1.0.0


Next: , Previous: W0333, Up: Messages

6.315 W0334

6.315.1 Message body

A value of unsigned int type is returned from `double %s()' function.

6.315.2 Content

Under construction.

6.315.3 Sample code

double func(void)
{
    unsigned int a = 0;
    return a; /* W0334 */
}

6.315.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.315.5 Since

1.0.0


Next: , Previous: W0334, Up: Messages

6.316 W0335

6.316.1 Message body

A value of unsigned int type is returned from `long double %s()' function.

6.316.2 Content

Under construction.

6.316.3 Sample code

long double func(void)
{
    unsigned int a = 0;
    return a; /* W0335 */
}

6.316.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.316.5 Since

1.0.0


Next: , Previous: W0335, Up: Messages

6.317 W0336

6.317.1 Message body

A value of signed long type is returned from `float %s()' function.

6.317.2 Content

Under construction.

6.317.3 Sample code

float func(void)
{
    long a = 0;
    return a; /* W0336 */
}

6.317.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.317.5 Since

1.0.0


Next: , Previous: W0336, Up: Messages

6.318 W0337

6.318.1 Message body

A value of signed long type is returned from `double %s()' function.

6.318.2 Content

Under construction.

6.318.3 Sample code

double func(void)
{
    long a = 0;
    return a; /* W0337 */
}

6.318.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.318.5 Since

1.0.0


Next: , Previous: W0337, Up: Messages

6.319 W0338

6.319.1 Message body

A value of signed long type is returned from `long double %s()' function.

6.319.2 Content

Under construction.

6.319.3 Sample code

long double func(void)
{
    long a = 0;
    return a; /* W0338 */
}

6.319.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.319.5 Since

1.0.0


Next: , Previous: W0338, Up: Messages

6.320 W0339

6.320.1 Message body

A value of unsigned long type is returned from `float %s()' function.

6.320.2 Content

Under construction.

6.320.3 Sample code

float func(void)
{
    unsigned long a = 0;
    return a; /* W0339 */
}

6.320.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.320.5 Since

1.0.0


Next: , Previous: W0339, Up: Messages

6.321 W0340

6.321.1 Message body

A value of unsigned long type is returned from `double %s()' function.

6.321.2 Content

Under construction.

6.321.3 Sample code

double func(void)
{
    unsigned long a = 0;
    return a; /* W0340 */
}

6.321.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.321.5 Since

1.0.0


Next: , Previous: W0340, Up: Messages

6.322 W0341

6.322.1 Message body

A value of unsigned long type is returned from `long double %s()' function.

6.322.2 Content

Under construction.

6.322.3 Sample code

long double func(void)
{
    unsigned long a = 0;
    return a; /* W0341 */
}

6.322.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.322.5 Since

1.0.0


Next: , Previous: W0341, Up: Messages

6.323 W0342

6.323.1 Message body

A value of signed long long type is returned from `float %s()' function.

6.323.2 Content

Under construction.

6.323.3 Sample code

float func(void)
{
    long long a = 0;
    return a; /* W0342 */
}

6.323.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.323.5 Since

1.0.0


Next: , Previous: W0342, Up: Messages

6.324 W0343

6.324.1 Message body

A value of signed long long type is returned from `double %s()' function.

6.324.2 Content

Under construction.

6.324.3 Sample code

double func(void)
{
    long long a = 0;
    return a; /* W0343 */
}

6.324.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.324.5 Since

1.0.0


Next: , Previous: W0343, Up: Messages

6.325 W0344

6.325.1 Message body

A value of signed long long type is returned from `long double %s()' function.

6.325.2 Content

Under construction.

6.325.3 Sample code

long double func(void)
{
    long long a = 0;
    return a; /* W0344 */
}

6.325.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.325.5 Since

1.0.0


Next: , Previous: W0344, Up: Messages

6.326 W0345

6.326.1 Message body

A value of unsigned long long type is returned from `float %s()' function.

6.326.2 Content

Under construction.

6.326.3 Sample code

float func(void)
{
    unsigned long long a = 0;
    return a; /* W0345 */
}

6.326.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.326.5 Since

1.0.0


Next: , Previous: W0345, Up: Messages

6.327 W0346

6.327.1 Message body

A value of unsigned long long type is returned from `double %s()' function.

6.327.2 Content

Under construction.

6.327.3 Sample code

double func(void)
{
    unsigned long long a = 0;
    return a; /* W0346 */
}

6.327.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0347 A value of unsigned long long type is returned from `long double %s()' function.

6.327.5 Since

1.0.0


Next: , Previous: W0346, Up: Messages

6.328 W0347

6.328.1 Message body

A value of unsigned long long type is returned from `long double %s()' function.

6.328.2 Content

Under construction.

6.328.3 Sample code

long double func(void)
{
    unsigned long long a = 0;
    return a; /* W0347 */
}

6.328.4 Related message

  • W0318 A value of unsigned char type is returned from `float %s()' function.
  • W0319 A value of unsigned char type is returned from `double %s()' function.
  • W0320 A value of unsigned char type is returned from `long double %s()' function.
  • W0321 A value of signed char type is returned from `float %s()' function.
  • W0322 A value of signed char type is returned from `double %s()' function.
  • W0323 A value of signed char type is returned from `long double %s()' function.
  • W0324 A value of signed short type is returned from `float %s()' function.
  • W0325 A value of signed short type is returned from `double %s()' function.
  • W0326 A value of signed short type is returned from `long double %s()' function.
  • W0327 A value of unsigned short type is returned from `float %s()' function.
  • W0328 A value of unsigned short type is returned from `double %s()' function.
  • W0329 A value of unsigned short type is returned from `long double %s()' function.
  • W0330 A value of signed int type is returned from `float %s()' function.
  • W0331 A value of signed int type is returned from `double %s()' function.
  • W0332 A value of signed int type is returned from `long double %s()' function.
  • W0333 A value of unsigned int type is returned from `float %s()' function.
  • W0334 A value of unsigned int type is returned from `double %s()' function.
  • W0335 A value of unsigned int type is returned from `long double %s()' function.
  • W0336 A value of signed long type is returned from `float %s()' function.
  • W0337 A value of signed long type is returned from `double %s()' function.
  • W0338 A value of signed long type is returned from `long double %s()' function.
  • W0339 A value of unsigned long type is returned from `float %s()' function.
  • W0340 A value of unsigned long type is returned from `double %s()' function.
  • W0341 A value of unsigned long type is returned from `long double %s()' function.
  • W0342 A value of signed long long type is returned from `float %s()' function.
  • W0343 A value of signed long long type is returned from `double %s()' function.
  • W0344 A value of signed long long type is returned from `long double %s()' function.
  • W0345 A value of unsigned long long type is returned from `float %s()' function.
  • W0346 A value of unsigned long long type is returned from `double %s()' function.

6.328.5 Since

1.0.0


Next: , Previous: W0347, Up: Messages

6.329 W0348

6.329.1 Message body

A value of float type is returned from `char %s()' function.

6.329.2 Content

Under construction.

6.329.3 Sample code

char func(void)
{
    float a = 0;
    return a; /* W0348 */
}

6.329.4 Related message

  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.329.5 Since

1.0.0


Next: , Previous: W0348, Up: Messages

6.330 W0349

6.330.1 Message body

A value of float type is returned from `signed char %s()' function.

6.330.2 Content

Under construction.

6.330.3 Sample code

signed char func(void)
{
    float a = 0;
    return a; /* W0349 */
}

6.330.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.330.5 Since

1.0.0


Next: , Previous: W0349, Up: Messages

6.331 W0350

6.331.1 Message body

A value of float type is returned from `unsigned char %s()' function.

6.331.2 Content

Under construction.

6.331.3 Sample code

unsigned char func(void)
{
    float a = 0;
    return a; /* W0350 */
}

6.331.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.331.5 Since

1.0.0


Next: , Previous: W0350, Up: Messages

6.332 W0351

6.332.1 Message body

A value of float type is returned from `signed short %s()' function.

6.332.2 Content

Under construction.

6.332.3 Sample code

short func(void)
{
    float a = 0;
    return a; /* W0351 */
}

6.332.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.332.5 Since

1.0.0


Next: , Previous: W0351, Up: Messages

6.333 W0352

6.333.1 Message body

A value of float type is returned from `unsigned short %s()' function.

6.333.2 Content

Under construction.

6.333.3 Sample code

unsigned short func(void)
{
    float a = 0;
    return a; /* W0352 */
}

6.333.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.333.5 Since

1.0.0


Next: , Previous: W0352, Up: Messages

6.334 W0353

6.334.1 Message body

A value of float type is returned from `signed int %s()' function.

6.334.2 Content

Under construction.

6.334.3 Sample code

int func(void)
{
    float a = 0;
    return a; /* W0353 */
}

6.334.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.334.5 Since

1.0.0


Next: , Previous: W0353, Up: Messages

6.335 W0354

6.335.1 Message body

A value of float type is returned from `unsigned int %s()' function.

6.335.2 Content

Under construction.

6.335.3 Sample code

unsigned int func(void)
{
    float a = 0;
    return a; /* W0354 */
}

6.335.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.335.5 Since

1.0.0


Next: , Previous: W0354, Up: Messages

6.336 W0355

6.336.1 Message body

A value of float type is returned from `signed long %s()' function.

6.336.2 Content

Under construction.

6.336.3 Sample code

long func(void)
{
    float a = 0;
    return a; /* W0355 */
}

6.336.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.336.5 Since

1.0.0


Next: , Previous: W0355, Up: Messages

6.337 W0356

6.337.1 Message body

A value of float type is returned from `unsigned long %s()' function.

6.337.2 Content

Under construction.

6.337.3 Sample code

unsigned long func(void)
{
    float a = 0;
    return a; /* W0356 */
}

6.337.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.337.5 Since

1.0.0


Next: , Previous: W0356, Up: Messages

6.338 W0357

6.338.1 Message body

A value of double type is returned from `char %s()' function.

6.338.2 Content

Under construction.

6.338.3 Sample code

char func(void)
{
    double a = 0;
    return a; /* W0357 */
}

6.338.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.338.5 Since

1.0.0


Next: , Previous: W0357, Up: Messages

6.339 W0358

6.339.1 Message body

A value of double type is returned from `signed char %s()' function.

6.339.2 Content

Under construction.

6.339.3 Sample code

signed char func(void)
{
    double a = 0;
    return a; /* W0358 */
}

6.339.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.339.5 Since

1.0.0


Next: , Previous: W0358, Up: Messages

6.340 W0359

6.340.1 Message body

A value of double type is returned from `unsigned char %s()' function.

6.340.2 Content

Under construction.

6.340.3 Sample code

unsigned char func(void)
{
    double a = 0;
    return a; /* W0359 */
}

6.340.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.340.5 Since

1.0.0


Next: , Previous: W0359, Up: Messages

6.341 W0360

6.341.1 Message body

A value of double type is returned from `short %s()' function.

6.341.2 Content

Under construction.

6.341.3 Sample code

short func(void)
{
    double a = 0;
    return a; /* W0360 */
}

6.341.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.341.5 Since

1.0.0


Next: , Previous: W0360, Up: Messages

6.342 W0361

6.342.1 Message body

A value of double type is returned from `unsigned short %s()' function.

6.342.2 Content

Under construction.

6.342.3 Sample code

unsigned short func(void)
{
    double a = 0;
    return a; /* W0361 */
}

6.342.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.342.5 Since

1.0.0


Next: , Previous: W0361, Up: Messages

6.343 W0362

6.343.1 Message body

A value of double type is returned from `signed int %s()' function.

6.343.2 Content

Under construction.

6.343.3 Sample code

int func(void)
{
    double a = 0;
    return a; /* W0362 */
}

6.343.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.343.5 Since

1.0.0


Next: , Previous: W0362, Up: Messages

6.344 W0363

6.344.1 Message body

A value of double type is returned from `unsigned int %s()' function.

6.344.2 Content

Under construction.

6.344.3 Sample code

unsigned int func(void)
{
    double a = 0;
    return a; /* W0363 */
}

6.344.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.344.5 Since

1.0.0


Next: , Previous: W0363, Up: Messages

6.345 W0364

6.345.1 Message body

A value of double type is returned from `signed long %s()' function.

6.345.2 Content

Under construction.

6.345.3 Sample code

long func(void)
{
    double a = 0;
    return a; /* W0364 */
}

6.345.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.345.5 Since

1.0.0


Next: , Previous: W0364, Up: Messages

6.346 W0365

6.346.1 Message body

A value of double type is returned from `unsigned long %s()' function.

6.346.2 Content

Under construction.

6.346.3 Sample code

unsigned long func(void)
{
    double a = 0;
    return a; /* W0365 */
}

6.346.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.346.5 Since

1.0.0


Next: , Previous: W0365, Up: Messages

6.347 W0366

6.347.1 Message body

A value of long double type is returned from `char %s()' function.

6.347.2 Content

Under construction.

6.347.3 Sample code

char func(void)
{
    long double a = 0;
    return a; /* W0366 */
}

6.347.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.347.5 Since

1.0.0


Next: , Previous: W0366, Up: Messages

6.348 W0367

6.348.1 Message body

A value of long double type is returned from `signed char %s()' function.

6.348.2 Content

Under construction.

6.348.3 Sample code

signed char func(void)
{
    long double a = 0;
    return a; /* W0367 */
}

6.348.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.348.5 Since

1.0.0


Next: , Previous: W0367, Up: Messages

6.349 W0368

6.349.1 Message body

A value of long double type is returned from `signed char %s()' function.

6.349.2 Content

Under construction.

6.349.3 Sample code

unsigned char func(void)
{
    long double a = 0;
    return a; /* W0368 */
}

6.349.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.349.5 Since

1.0.0


Next: , Previous: W0368, Up: Messages

6.350 W0369

6.350.1 Message body

A value of long double type is returned from `signed short %s()' function.

6.350.2 Content

Under construction.

6.350.3 Sample code

short func(void)
{
    long double a = 0;
    return a; /* W0369 */
}

6.350.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.350.5 Since

1.0.0


Next: , Previous: W0369, Up: Messages

6.351 W0370

6.351.1 Message body

A value of long double type is returned from `unsigned short %s()' function.

6.351.2 Content

Under construction.

6.351.3 Sample code

unsigned short func(void)
{
    long double a = 0;
    return a; /* W0370 */
}

6.351.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.351.5 Since

1.0.0


Next: , Previous: W0370, Up: Messages

6.352 W0371

6.352.1 Message body

A value of long double type is returned from `signed int %s()' function.

6.352.2 Content

Under construction.

6.352.3 Sample code

int func(void)
{
    long double a = 0;
    return a; /* W0371 */
}

6.352.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.352.5 Since

1.0.0


Next: , Previous: W0371, Up: Messages

6.353 W0372

6.353.1 Message body

A value of long double type is returned from `unsigned int %s()' function.

6.353.2 Content

Under construction.

6.353.3 Sample code

unsigned int func(void)
{
    long double a = 0;
    return a; /* W0372 */
}

6.353.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.353.5 Since

1.0.0


Next: , Previous: W0372, Up: Messages

6.354 W0373

6.354.1 Message body

A value of long double type is returned from `signed long %s()' function.

6.354.2 Content

Under construction.

6.354.3 Sample code

long func(void)
{
    long double a = 0;
    return a; /* W0373 */
}

6.354.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.354.5 Since

1.0.0


Next: , Previous: W0373, Up: Messages

6.355 W0374

6.355.1 Message body

A value of long double type is returned from `unsigned long %s()' function.

6.355.2 Content

Under construction.

6.355.3 Sample code

unsigned long func(void)
{
    long double a = 0;
    return a; /* W0374 */
}

6.355.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.355.5 Since

1.0.0


Next: , Previous: W0374, Up: Messages

6.356 W0375

6.356.1 Message body

A value of float type is returned from `signed long long %s()' function.

6.356.2 Content

Under construction.

6.356.3 Sample code

long long func(void)
{
    float a = 0;
    return a; /* W0375 */
}

6.356.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.356.5 Since

1.0.0


Next: , Previous: W0375, Up: Messages

6.357 W0376

6.357.1 Message body

A value of float type is returned from `unsigned long long %s()' function.

6.357.2 Content

Under construction.

6.357.3 Sample code

unsigned long long func(void)
{
    float a = 0;
    return a; /* W0376 */
}

6.357.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.357.5 Since

1.0.0


Next: , Previous: W0376, Up: Messages

6.358 W0377

6.358.1 Message body

A value of double type is returned from `signed long long %s()' function.

6.358.2 Content

Under construction.

6.358.3 Sample code

long long func(void)
{
    double a = 0;
    return a; /* W0377 */
}

6.358.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.358.5 Since

1.0.0


Next: , Previous: W0377, Up: Messages

6.359 W0378

6.359.1 Message body

A value of double type is returned from `unsigned long long %s()' function.

6.359.2 Content

Under construction.

6.359.3 Sample code

unsigned long long func(void)
{
    double a = 0;
    return a; /* W0378 */
}

6.359.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.359.5 Since

1.0.0


Next: , Previous: W0378, Up: Messages

6.360 W0379

6.360.1 Message body

A value of long double type is returned from `signed long long %s()' function.

6.360.2 Content

Under construction.

6.360.3 Sample code

long long func(void)
{
    long double a = 0;
    return a; /* W0379 */
}

6.360.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0380 A value of long double type is returned from `unsigned long long %s()' function.

6.360.5 Since

1.0.0


Next: , Previous: W0379, Up: Messages

6.361 W0380

6.361.1 Message body

A value of long double type is returned from `unsigned long long %s()' function.

6.361.2 Content

Under construction.

6.361.3 Sample code

unsigned long long func(void)
{
    long double a = 0;
    return a; /* W0380 */
}

6.361.4 Related message

  • W0348 A value of float type is returned from `char %s()' function.
  • W0349 A value of float type is returned from `signed char %s()' function.
  • W0350 A value of float type is returned from `unsigned char %s()' function.
  • W0351 A value of float type is returned from `signed short %s()' function.
  • W0352 A value of float type is returned from `unsigned short %s()' function.
  • W0353 A value of float type is returned from `signed int %s()' function.
  • W0354 A value of float type is returned from `unsigned int %s()' function.
  • W0355 A value of float type is returned from `signed long %s()' function.
  • W0356 A value of float type is returned from `unsigned long %s()' function.
  • W0357 A value of double type is returned from `char %s()' function.
  • W0358 A value of double type is returned from `signed char %s()' function.
  • W0359 A value of double type is returned from `unsigned char %s()' function.
  • W0360 A value of double type is returned from `signed short %s()' function.
  • W0361 A value of double type is returned from `unsigned short %s()' function.
  • W0362 A value of double type is returned from `signed int %s()' function.
  • W0363 A value of double type is returned from `unsigned int %s()' function.
  • W0364 A value of double type is returned from `signed long %s()' function.
  • W0365 A value of double type is returned from `unsigned long %s()' function.
  • W0366 A value of long double type is returned from `char %s()' function.
  • W0367 A value of long double type is returned from `signed char %s()' function.
  • W0368 A value of long double type is returned from `unsigned char %s()' function.
  • W0369 A value of long double type is returned from `signed short %s()' function.
  • W0370 A value of long double type is returned from `unsigned short %s()' function.
  • W0371 A value of long double type is returned from `signed int %s()' function.
  • W0372 A value of long double type is returned from `unsigned int %s()' function.
  • W0373 A value of long double type is returned from `signed long %s()' function.
  • W0374 A value of long double type is returned from `unsigned long %s()' function.
  • W0375 A value of float type is returned from `signed long long %s()' function.
  • W0376 A value of float type is returned from `unsigned long long %s()' function.
  • W0377 A value of double type is returned from `signed long long %s()' function.
  • W0378 A value of double type is returned from `unsigned long long %s()' function.
  • W0379 A value of long double type is returned from `signed long long %s()' function.

6.361.5 Since

1.0.0


Next: , Previous: W0380, Up: Messages

6.362 W0381

6.362.1 Message body

A value of signed short type is returned from `signed char %s()' function.

6.362.2 Content

Under construction.

6.362.3 Sample code

signed char func(void)
{
    short a = 0;
    return a; /* W0381 */
}

6.362.4 Related message

  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.362.5 Since

1.0.0


Next: , Previous: W0381, Up: Messages

6.363 W0382

6.363.1 Message body

A value of unsigned short type is returned from `unsigned char %s()' function.

6.363.2 Content

Under construction.

6.363.3 Sample code

unsigned char func(void)
{
    unsigned short a = 0;
    return a; /* W0382 */
}

6.363.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.363.5 Since

1.0.0


Next: , Previous: W0382, Up: Messages

6.364 W0383

6.364.1 Message body

A value of signed int type is returned from `signed char %s()' function.

6.364.2 Content

Under construction.

6.364.3 Sample code

signed char func(void)
{
    int a = 0;
    return a; /* W0383 */
}

6.364.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.364.5 Since

1.0.0


Next: , Previous: W0383, Up: Messages

6.365 W0384

6.365.1 Message body

A value of signed int type is returned from `signed short %s()' function.

6.365.2 Content

Under construction.

6.365.3 Sample code

short func(void)
{
    int a = 0;
    return a; /* W0384 */
}

6.365.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.365.5 Since

1.0.0


Next: , Previous: W0384, Up: Messages

6.366 W0385

6.366.1 Message body

A value of unsigned int type is returned from `unsigned char %s()' function.

6.366.2 Content

Under construction.

6.366.3 Sample code

unsigned char func(void)
{
    unsigned int a = 0;
    return a; /* W0385 */
}

6.366.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.366.5 Since

1.0.0


Next: , Previous: W0385, Up: Messages

6.367 W0386

6.367.1 Message body

A value of unsigned int type is returned from `unsigned short %s()' function.

6.367.2 Content

Under construction.

6.367.3 Sample code

unsigned short func(void)
{
    unsigned int a = 0;
    return a; /* W0386 */
}

6.367.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.367.5 Since

1.0.0


Next: , Previous: W0386, Up: Messages

6.368 W0387

6.368.1 Message body

A value of signed long type is returned from `signed char %s()' function.

6.368.2 Content

Under construction.

6.368.3 Sample code

signed char func(void)
{
    long a = 0;
    return a; /* W0387 */
}

6.368.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.368.5 Since

1.0.0


Next: , Previous: W0387, Up: Messages

6.369 W0388

6.369.1 Message body

A value of signed long type is returned from `signed short %s()' function.

6.369.2 Content

Under construction.

6.369.3 Sample code

short func(void)
{
    long a = 0;
    return a; /* W0388 */
}

6.369.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.369.5 Since

1.0.0


Next: , Previous: W0388, Up: Messages

6.370 W0389

6.370.1 Message body

A value of signed long type is returned from `signed int %s()' function.

6.370.2 Content

Under construction.

6.370.3 Sample code

int func(void)
{
    long a = 0;
    return a; /* W0389 */
}

6.370.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.370.5 Since

1.0.0


Next: , Previous: W0389, Up: Messages

6.371 W0390

6.371.1 Message body

A value of unsigned long type is returned from `unsigned char %s()' function.

6.371.2 Content

Under construction.

6.371.3 Sample code

unsigned char func(void)
{
    unsigned long a = 0;
    return a; /* W0390 */
}

6.371.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.371.5 Since

1.0.0


Next: , Previous: W0390, Up: Messages

6.372 W0391

6.372.1 Message body

A value of unsigned long type is returned from `unsigned short %s()' function.

6.372.2 Content

Under construction.

6.372.3 Sample code

unsigned short func(void)
{
    unsigned long a = 0;
    return a; /* W0391 */
}

6.372.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.372.5 Since

1.0.0


Next: , Previous: W0391, Up: Messages

6.373 W0392

6.373.1 Message body

A value of unsigned long type is returned from `unsigned int %s()' function.

6.373.2 Content

Under construction.

6.373.3 Sample code

unsigned int func(void)
{
    unsigned long a = 0;
    return a; /* W0392 */
}

6.373.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.373.5 Since

1.0.0


Next: , Previous: W0392, Up: Messages

6.374 W0393

6.374.1 Message body

A value of signed long long type is returned from `signed char %s()' function.

6.374.2 Content

Under construction.

6.374.3 Sample code

signed char func(void)
{
    long long a = 0;
    return a; /* W0393 */
}

6.374.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.374.5 Since

1.0.0


Next: , Previous: W0393, Up: Messages

6.375 W0394

6.375.1 Message body

A value of signed long long type is returned from `signed short %s()' function.

6.375.2 Content

Under construction.

6.375.3 Sample code

short func(void)
{
    long long a = 0;
    return a; /* W0394 */
}

6.375.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.375.5 Since

1.0.0


Next: , Previous: W0394, Up: Messages

6.376 W0395

6.376.1 Message body

A value of signed long long type is returned from `signed int %s()' function.

6.376.2 Content

Under construction.

6.376.3 Sample code

int func(void)
{
    long long a = 0;
    return a; /* W0395 */
}

6.376.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.376.5 Since

1.0.0


Next: , Previous: W0395, Up: Messages

6.377 W0396

6.377.1 Message body

A value of signed long long type is returned from `signed long %s()' function.

6.377.2 Content

Under construction.

6.377.3 Sample code

long func(void)
{
    long long a = 0;
    return a; /* W0396 */
}

6.377.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.377.5 Since

1.0.0


Next: , Previous: W0396, Up: Messages

6.378 W0397

6.378.1 Message body

A value of unsigned long long type is returned from `unsigned char %s()' function.

6.378.2 Content

Under construction.

6.378.3 Sample code

unsigned char func(void)
{
    unsigned long long a = 0;
    return a; /* W0397 */
}

6.378.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.378.5 Since

1.0.0


Next: , Previous: W0397, Up: Messages

6.379 W0398

6.379.1 Message body

A value of unsigned long long type is returned from `unsigned short %s()' function.

6.379.2 Content

Under construction.

6.379.3 Sample code

unsigned short func(void)
{
    unsigned long long a = 0;
    return a; /* W0398 */
}

6.379.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.379.5 Since

1.0.0


Next: , Previous: W0398, Up: Messages

6.380 W0399

6.380.1 Message body

A value of unsigned long long type is returned from `unsigned int %s()' function.

6.380.2 Content

Under construction.

6.380.3 Sample code

unsigned int func(void)
{
    unsigned long long a = 0;
    return a; /* W0399 */
}

6.380.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0400 A value of unsigned long long type is returned from `unsigned long %s()' function.

6.380.5 Since

1.0.0


Next: , Previous: W0399, Up: Messages

6.381 W0400

6.381.1 Message body

A value of unsigned long long type is returned from `unsigned long %s()' function.

6.381.2 Content

Under construction.

6.381.3 Sample code

unsigned long func(void)
{
    unsigned long long a = 0;
    return a; /* W0400 */
}

6.381.4 Related message

  • W0381 A value of signed short type is returned from `signed char %s()' function.
  • W0382 A value of unsigned short type is returned from `unsigned char %s()' function.
  • W0383 A value of signed int type is returned from `signed char %s()' function.
  • W0384 A value of signed int type is returned from `signed short %s()' function.
  • W0385 A value of unsigned int type is returned from `unsigned char %s()' function.
  • W0386 A value of unsigned int type is returned from `unsigned short %s()' function.
  • W0387 A value of signed long type is returned from `signed char %s()' function.
  • W0388 A value of signed long type is returned from `signed short %s()' function.
  • W0389 A value of signed long type is returned from `signed int %s()' function.
  • W0390 A value of unsigned long type is returned from `unsigned char %s()' function.
  • W0391 A value of unsigned long type is returned from `unsigned short %s()' function.
  • W0392 A value of unsigned long type is returned from `unsigned int %s()' function.
  • W0393 A value of signed long long type is returned from `signed char %s()' function.
  • W0394 A value of signed long long type is returned from `signed short %s()' function.
  • W0395 A value of signed long long type is returned from `signed int %s()' function.
  • W0396 A value of signed long long type is returned from `signed long %s()' function.
  • W0397 A value of unsigned long long type is returned from `unsigned char %s()' function.
  • W0398 A value of unsigned long long type is returned from `unsigned short %s()' function.
  • W0399 A value of unsigned long long type is returned from `unsigned int %s()' function.

6.381.5 Since

1.0.0


Next: , Previous: W0400, Up: Messages

6.382 W0401

6.382.1 Message body

A value of unsigned char type is returned from `signed short %s()' function.

6.382.2 Content

Under construction.

6.382.3 Sample code

short func(void)
{
    unsigned char a = 0;
    return a; /* W0401 */
}

6.382.4 Related message

  • W0402 A value of unsigned char type is returned from `signed int %s()' function.
  • W0403 A value of unsigned char type is returned from `signed long %s()' function.
  • W0404 A value of unsigned short type is returned from `signed int %s()' function.
  • W0405 A value of unsigned short type is returned from `signed long %s()' function.
  • W0406 A value of unsigned int type is returned from `signed long %s()' function.
  • W0407 A value of unsigned char type is returned from `signed long long %s()' function.
  • W0408 A value of unsigned short type is returned from `signed long long %s()' function.
  • W0409 A value of unsigned int type is returned from `signed long long %s()' function.
  • W0410 A value of unsigned long type is returned from `signed long long %s()' function.

6.382.5 Since

1.0.0


Next: , Previous: W0401, Up: Messages

6.383 W0402

6.383.1 Message body

A value of unsigned char type is returned from `signed int %s()' function.

6.383.2 Content

Under construction.

6.383.3 Sample code

int func(void)
{
    unsigned char a = 0;
    return a; /* W0402 */
}

6.383.4 Related message

  • W0401 A value of unsigned char type is returned from `signed short %s()' function.
  • W0403 A value of unsigned char type is returned from `signed long %s()' function.
  • W0404 A value of unsigned short type is returned from `signed int %s()' function.
  • W0405 A value of unsigned short type is returned from `signed long %s()' function.
  • W0406 A value of unsigned int type is returned from `signed long %s()' function.
  • W0407 A value of unsigned char type is returned from `signed long long %s()' function.
  • W0408 A value of unsigned short type is returned from `signed long long %s()' function.
  • W0409 A value of unsigned int type is returned from `signed long long %s()' function.
  • W0410 A value of unsigned long type is returned from `signed long long %s()' function.

6.383.5 Since

1.0.0


Next: , Previous: W0402, Up: Messages

6.384 W0403

6.384.1 Message body

A value of unsigned char type is returned from `signed long %s()' function.

6.384.2 Content

Under construction.

6.384.3 Sample code

long func(void)
{
    unsigned char a = 0;
    return a; /* W0403 */
}

6.384.4 Related message

  • W0401 A value of unsigned char type is returned from `signed short %s()' function.
  • W0402 A value of unsigned char type is returned from `signed int %s()' function.
  • W0404 A value of unsigned short type is returned from `signed int %s()' function.
  • W0405 A value of unsigned short type is returned from `signed long %s()' function.
  • W0406 A value of unsigned int type is returned from `signed long %s()' function.
  • W0407 A value of unsigned char type is returned from `signed long long %s()' function.
  • W0408 A value of unsigned short type is returned from `signed long long %s()' function.
  • W0409 A value of unsigned int type is returned from `signed long long %s()' function.
  • W0410 A value of unsigned long type is returned from `signed long long %s()' function.

6.384.5 Since

1.0.0


Next: , Previous: W0403, Up: Messages

6.385 W0404

6.385.1 Message body

A value of unsigned short type is returned from `signed int %s()' function.

6.385.2 Content

Under construction.

6.385.3 Sample code

int func(void)
{
    unsigned short a = 0;
    return a; /* W0404 */
}

6.385.4 Related message

  • W0401 A value of unsigned char type is returned from `signed short %s()' function.
  • W0402 A value of unsigned char type is returned from `signed int %s()' function.
  • W0403 A value of unsigned char type is returned from `signed long %s()' function.
  • W0405 A value of unsigned short type is returned from `signed long %s()' function.
  • W0406 A value of unsigned int type is returned from `signed long %s()' function.
  • W0407 A value of unsigned char type is returned from `signed long long %s()' function.
  • W0408 A value of unsigned short type is returned from `signed long long %s()' function.
  • W0409 A value of unsigned int type is returned from `signed long long %s()' function.
  • W0410 A value of unsigned long type is returned from `signed long long %s()' function.

6.385.5 Since

1.0.0


Next: , Previous: W0404, Up: Messages

6.386 W0405

6.386.1 Message body

A value of unsigned short type is returned from `signed long %s()' function.

6.386.2 Content

Under construction.

6.386.3 Sample code

long func(void)
{
    unsigned short a = 0;
    return a; /* W0405 */
}

6.386.4 Related message

  • W0401 A value of unsigned char type is returned from `signed short %s()' function.
  • W0402 A value of unsigned char type is returned from `signed int %s()' function.
  • W0403 A value of unsigned char type is returned from `signed long %s()' function.
  • W0404 A value of unsigned short type is returned from `signed int %s()' function.
  • W0406 A value of unsigned int type is returned from `signed long %s()' function.
  • W0407 A value of unsigned char type is returned from `signed long long %s()' function.
  • W0408 A value of unsigned short type is returned from `signed long long %s()' function.
  • W0409 A value of unsigned int type is returned from `signed long long %s()' function.
  • W0410 A value of unsigned long type is returned from `signed long long %s()' function.

6.386.5 Since

1.0.0


Next: , Previous: W0405, Up: Messages

6.387 W0406

6.387.1 Message body

A value of unsigned int type is returned from `signed long %s()' function.

6.387.2 Content

Under construction.

6.387.3 Sample code

long func(void)
{
    unsigned int a = 0;
    return a; /* W0406 */
}

6.387.4 Related message

  • W0401 A value of unsigned char type is returned from `signed short %s()' function.
  • W0402 A value of unsigned char type is returned from `signed int %s()' function.
  • W0403 A value of unsigned char type is returned from `signed long %s()' function.
  • W0404 A value of unsigned short type is returned from `signed int %s()' function.
  • W0405 A value of unsigned short type is returned from `signed long %s()' function.
  • W0407 A value of unsigned char type is returned from `signed long long %s()' function.
  • W0408 A value of unsigned short type is returned from `signed long long %s()' function.
  • W0409 A value of unsigned int type is returned from `signed long long %s()' function.
  • W0410 A value of unsigned long type is returned from `signed long long %s()' function.

6.387.5 Since

1.0.0


Next: , Previous: W0406, Up: Messages

6.388 W0407

6.388.1 Message body

A value of unsigned char type is returned from `signed long long %s()' function.

6.388.2 Content

Under construction.

6.388.3 Sample code

long long func(void)
{
    unsigned char a = 0;
    return a; /* W0407 */
}

6.388.4 Related message

  • W0401 A value of unsigned char type is returned from `signed short %s()' function.
  • W0402 A value of unsigned char type is returned from `signed int %s()' function.
  • W0403 A value of unsigned char type is returned from `signed long %s()' function.
  • W0404 A value of unsigned short type is returned from `signed int %s()' function.
  • W0405 A value of unsigned short type is returned from `signed long %s()' function.
  • W0406 A value of unsigned int type is returned from `signed long %s()' function.
  • W0408 A value of unsigned short type is returned from `signed long long %s()' function.
  • W0409 A value of unsigned int type is returned from `signed long long %s()' function.
  • W0410 A value of unsigned long type is returned from `signed long long %s()' function.

6.388.5 Since

1.0.0


Next: , Previous: W0407, Up: Messages

6.389 W0408

6.389.1 Message body

A value of unsigned short type is returned from `signed long long %s()' function.

6.389.2 Content

Under construction.

6.389.3 Sample code

long long func(void)
{
    unsigned short a = 0;
    return a; /* W0408 */
}

6.389.4 Related message

  • W0401 A value of unsigned char type is returned from `signed short %s()' function.
  • W0402 A value of unsigned char type is returned from `signed int %s()' function.
  • W0403 A value of unsigned char type is returned from `signed long %s()' function.
  • W0404 A value of unsigned short type is returned from `signed int %s()' function.
  • W0405 A value of unsigned short type is returned from `signed long %s()' function.
  • W0406 A value of unsigned int type is returned from `signed long %s()' function.
  • W0407 A value of unsigned char type is returned from `signed long long %s()' function.
  • W0409 A value of unsigned int type is returned from `signed long long %s()' function.
  • W0410 A value of unsigned long type is returned from `signed long long %s()' function.

6.389.5 Since

1.0.0


Next: , Previous: W0408, Up: Messages

6.390 W0409

6.390.1 Message body

A value of unsigned int type is returned from `signed long long %s()' function.

6.390.2 Content

Under construction.

6.390.3 Sample code

long long func(void)
{
    unsigned int a = 0;
    return a; /* W0409 */
}

6.390.4 Related message

  • W0401 A value of unsigned char type is returned from `signed short %s()' function.
  • W0402 A value of unsigned char type is returned from `signed int %s()' function.
  • W0403 A value of unsigned char type is returned from `signed long %s()' function.
  • W0404 A value of unsigned short type is returned from `signed int %s()' function.
  • W0405 A value of unsigned short type is returned from `signed long %s()' function.
  • W0406 A value of unsigned int type is returned from `signed long %s()' function.
  • W0407 A value of unsigned char type is returned from `signed long long %s()' function.
  • W0408 A value of unsigned short type is returned from `signed long long %s()' function.
  • W0410 A value of unsigned long type is returned from `signed long long %s()' function.

6.390.5 Since

1.0.0


Next: , Previous: W0409, Up: Messages

6.391 W0410

6.391.1 Message body

A value of unsigned long type is returned from `signed long long %s()' function.

6.391.2 Content

Under construction.

6.391.3 Sample code

long long func(void)
{
    unsigned long a = 0;
    return a; /* W0410 */
}

6.391.4 Related message

  • W0401 A value of unsigned char type is returned from `signed short %s()' function.
  • W0402 A value of unsigned char type is returned from `signed int %s()' function.
  • W0403 A value of unsigned char type is returned from `signed long %s()' function.
  • W0404 A value of unsigned short type is returned from `signed int %s()' function.
  • W0405 A value of unsigned short type is returned from `signed long %s()' function.
  • W0406 A value of unsigned int type is returned from `signed long %s()' function.
  • W0407 A value of unsigned char type is returned from `signed long long %s()' function.
  • W0408 A value of unsigned short type is returned from `signed long long %s()' function.
  • W0409 A value of unsigned int type is returned from `signed long long %s()' function.

6.391.5 Since

1.0.0


Next: , Previous: W0410, Up: Messages

6.392 W0411

6.392.1 Message body

The initialization of enumeration should be only the starting, whole or not at all.

6.392.2 Content

Under construction.

6.392.3 Sample code

enum SEASON1 { /* W0411 */
    SPRING,
    SUMMER = 4,
    AUTUMN = 8,
    WINTER
};

enum SEASON2 { /* OK */
    SPRING,
    SUMMER,
    AUTUMN,
    WINTER
};

enum SEASON3 { /* OK */
    SPRING = 0,
    SUMMER = 1,
    AUTUMN = 2,
    WINTER = 3
};

enum SEASON4 { /* OK */
    SPRING = 1,
    SUMMER,
    AUTUMN,
    WINTER
};

6.392.4 Related message

None.

6.392.5 Since

1.0.0


Next: , Previous: W0411, Up: Messages

6.393 W0413

6.393.1 Message body

The body of control statement is unenclosed by curly brace `{}' block.

6.393.2 Content

Under construction.

6.393.3 Sample code

if (x > 0)
    x++; /* W0413 */

6.393.4 Related message

  • W0414 Body of the controlling statement in a line is not enclosed by `{}'.

6.393.5 Since

1.0.0


Next: , Previous: W0413, Up: Messages

6.394 W0414

6.394.1 Message body

Body of the controlling statement in a line is not enclosed by `{}'.

6.394.2 Content

Under construction.

6.394.3 Sample code

if (x > 0) x++; /* W0414 */

6.394.4 Related message

  • W0413 The body of control statement is unenclosed by curly brace `{}' block.

6.394.5 Since

1.0.0


Next: , Previous: W0414, Up: Messages

6.395 W0421

6.395.1 Message body

Value of the dereferencing pointer must be NULL.

6.395.2 Content

Under construction.

6.395.3 Sample code

void func(int a, int *p)
{
    int b;

    if (p) {
        b = *p; /* OK */
    }
    else {
        b = *p; /* W0421 */
    }
}

6.395.4 Related message

  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1004 NULL value is assigned to the the problematic variable.
  • C1005 A value possibly be NULL is assigned to the problematic variable.

6.395.5 Since

1.0.0


Next: , Previous: W0421, Up: Messages

6.396 W0422

6.396.1 Message body

Value of the dereferencing pointer may be NULL.

6.396.2 Content

Under construction.

6.396.3 Sample code

void func(int a, int *p)
{
    int b;

    if (p) {
        b = *p; /* OK */
    }

    b = *p; /* W0422 */
}

6.396.4 Related message

  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1004 NULL value is assigned to the the problematic variable.
  • C1005 A value possibly be NULL is assigned to the problematic variable.

6.396.5 Since

1.0.0


Next: , Previous: W0422, Up: Messages

6.397 W0423

6.397.1 Message body

Arithmetic operation is being made to the pointer which its value will be NULL.

6.397.2 Content

Under construction.

6.397.3 Sample code

int *func(int *p)
{
    if (p) {
        return p + 1; /* OK */
    }
    else {
        return p + 1; /* W0423 */
    }
}

6.397.4 Related message

  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1004 NULL value is assigned to the the problematic variable.
  • C1005 A value possibly be NULL is assigned to the problematic variable.

6.397.5 Since

1.0.0


Next: , Previous: W0423, Up: Messages

6.398 W0424

6.398.1 Message body

Arithmetic operation is being made to the pointer which its value might be NULL.

6.398.2 Content

Under construction.

6.398.3 Sample code

int *func(int *p)
{
    int a;

    if (p) {
        a = *(p + 1); /* OK */
    }

    return p + 1; /* W0424 */
}

6.398.4 Related message

  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1004 NULL value is assigned to the the problematic variable.
  • C1005 A value possibly be NULL is assigned to the problematic variable.

6.398.5 Since

1.0.0


Next: , Previous: W0424, Up: Messages

6.399 W0425

6.399.1 Message body

There are several definitions or statements in a line.

6.399.2 Content

Under construction.

6.399.3 Sample code

int a, b; /* W0425 */
int a; int b; /* W0425 */
struct C { int i; } c = { 0 }; c.i = a; /* W0425 */

6.399.4 Related message

None.

6.399.5 Since

1.0.0


Next: , Previous: W0425, Up: Messages

6.400 W0431

6.400.1 Message body

This line begins at more left than previous lines of the same indentation level.

6.400.2 Content

Under construction.

6.400.3 Sample code

void func()
{
    int a;
int b; /* W0431 */
    a = var();
}

6.400.4 Related message

  • W0432 Indentation of this line does not comply with the project's indent style.

6.400.5 Since

1.0.0


Next: , Previous: W0431, Up: Messages

6.401 W0432

6.401.1 Message body

Indentation of this line does not comply with the project's indent style.

6.401.2 Content

Under construction.

6.401.3 Sample code

void func()
{
    int a;
      int b; /* W0432 */
    a = var();
}

6.401.4 Related message

  • W0431 This line begins at more left than previous lines of the same indentation level.

6.401.5 Since

1.0.0


Next: , Previous: W0432, Up: Messages

6.402 W0440

6.402.1 Message body

An indent of this close bracket `}' is not correspond to the open bracket `{'.

6.402.2 Content

Under construction.

6.402.3 Sample code

void func()
{
    if (x == 0)
    {
        if (y == 0)
        {
            ...snip...
    } /* W0440 */
        } /* W0440 */
}

6.402.4 Related message

None.

6.402.5 Since

1.0.0


Next: , Previous: W0440, Up: Messages

6.403 W0441

6.403.1 Message body

The type of integer literal which doesn't have a suffix is not int type.

6.403.2 Content

Under construction.

6.403.3 Sample code

int i = 0x1234; /* W0441 */

6.403.4 Related message

None.

6.403.5 Since

1.0.0


Next: , Previous: W0441, Up: Messages

6.404 W0442

6.404.1 Message body

A function-like macro is defined.

6.404.2 Content

Under construction.

6.404.3 Sample code

#define MAX(a, b) (a < b ? b : a) /* W0442 */

6.404.4 Related message

  • W0443 This function-like macro might be replaced with a function.

6.404.5 Since

1.0.0


Next: , Previous: W0442, Up: Messages

6.405 W0443

6.405.1 Message body

This function-like macro might be replaced with a function.

6.405.2 Content

Under construction.

6.405.3 Sample code

#define MACRO(a, b) (a * b) /* W0443 */

6.405.4 Related message

  • W0442 A function-like macro is defined.

6.405.5 Since

1.0.0


Next: , Previous: W0443, Up: Messages

6.406 W0444

6.406.1 Message body

`#'operator and `##'operator is used in a macro definition.

6.406.2 Content

Under construction.

6.406.3 Sample code

#define MACRO(a) L ## #a /* W0444 */

6.406.4 Related message

  • W0445 Multiple `##'operator is used in a macro definition.

6.406.5 Since

1.0.0


Next: , Previous: W0444, Up: Messages

6.407 W0445

6.407.1 Message body

Multiple `##'operator is used in a macro definition.

6.407.2 Content

Under construction.

6.407.3 Sample code

#define MACRO(prefix, name, suffix) int i = prefix##name##suffix /* W0445 */

6.407.4 Related message

  • W0444 `#'operator and `##'operator is used in a macro definition.

6.407.5 Since

1.0.0


Next: , Previous: W0445, Up: Messages

6.408 W0446

6.408.1 Message body

The result value of assignment operation is used.

6.408.2 Content

Under construction.

6.408.3 Sample code

void func(void)
{
    int a;
    int b;

    a = b += 3; /* W0446 */
}

6.408.4 Related message

None.

6.408.5 Since

1.0.0


Next: , Previous: W0446, Up: Messages

6.409 W0447

6.409.1 Message body

A comma operator is used except 'for' statement.

6.409.2 Content

Under construction.

6.409.3 Sample code

int a = 1;
int b = 0;

int c = (b = a, a); /* W0447 */

6.409.4 Related message

None.

6.409.5 Since

1.0.0


Next: , Previous: W0447, Up: Messages

6.410 W0456

6.410.1 Message body

An object or a function `%s which has external coupling is defined in a header file.

6.410.2 Content

Under construction.

6.410.3 Sample code

test.h

int num = 1; /* W0456 */

int func(void) /* W0456 */
{
    return num;
}

test.c

#include "test.h"

6.410.4 Related message

None.

6.410.5 Since

1.0.0


Next: , Previous: W0456, Up: Messages

6.411 W0457

6.411.1 Message body

The return value doesn't define explicitly in the function declaration or definition. It defined as 'int' implicitly.

6.411.2 Content

Under construction.

6.411.3 Sample code

func1(void); /* W0457 */

func2(void) /* W0457 */
{
    return 0;
}

6.411.4 Related message

None.

6.411.5 Since

1.0.0


Next: , Previous: W0457, Up: Messages

6.412 W0458

6.412.1 Message body

The type doesn't define explicitly in the object declaration or definition. It defined as 'int' implicitly.

6.412.2 Content

Under construction.

6.412.3 Sample code

a; /* W0458 */
b = 0; /* W0458 */
extern c; /* W0458 */
static d; /* W0458 */

int func(e) /* W0458 */
{
    const f = e; /* W0458 */
    return f;
}

6.412.4 Related message

None.

6.412.5 Since

1.0.0


Next: , Previous: W0458, Up: Messages

6.413 W0459

6.413.1 Message body

A value of variable `%s' doesn't set when this expression is evaluated. This program is danger.

6.413.2 Content

Under construction.

6.413.3 Sample code

int a;

if(a > 0) { /* W0459 */
}

6.413.4 Related message

  • W0460 A value of variable `%s' wouldn't set when this expression is evaluated.
  • W0461 A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger.
  • W0462 A pointer which the value will probably not set is used for the actual argument of the function.
  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1003 The problematic variable is defined here without initializer.

6.413.5 Since

1.0.0


Next: , Previous: W0459, Up: Messages

6.414 W0460

6.414.1 Message body

A value of variable `%s' wouldn't set when this expression is evaluated.

6.414.2 Content

Under construction.

6.414.3 Sample code

void func(int a)
{
    int b;

    if (a == 0) {
        b = 1;
    }

    if (b > 0) { /* W0460 */
    }
}

6.414.4 Related message

  • W0459 A value of variable `%s' doesn't set when this expression is evaluated. This program is danger.
  • W0461 A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger.
  • W0462 A pointer which the value will probably not set is used for the actual argument of the function.
  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1003 The problematic variable is defined here without initializer.

6.414.5 Since

1.0.0


Next: , Previous: W0460, Up: Messages

6.415 W0461

6.415.1 Message body

A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger.

6.415.2 Content

Under construction.

6.415.3 Sample code

extern int func1(const int *);

void func2(int a)
{
  int b;

  func1(&a); /* OK */
  func1(&b); /* W0461 */
}

6.415.4 Related message

  • W0459 A value of variable `%s' doesn't set when this expression is evaluated. This program is danger.
  • W0460 A value of variable `%s' wouldn't set when this expression is evaluated.
  • W0462 A pointer which the value will probably not set is used for the actual argument of the function.
  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1003 The problematic variable is defined here without initializer.

6.415.5 Since

1.0.0


Next: , Previous: W0461, Up: Messages

6.416 W0462

6.416.1 Message body

A pointer which the value will probably not set is used for the actual argument of the function.

6.416.2 Content

Under construction.

6.416.3 Sample code

extern int func1(const int *);

int func2(int a)
{
    int b;

    if (a > 10) {
        b = a + 10;
    }

    func1(&b); /* W0462 */
}

6.416.4 Related message

  • W0459 A value of variable `%s' doesn't set when this expression is evaluated. This program is danger.
  • W0460 A value of variable `%s' wouldn't set when this expression is evaluated.
  • W0461 A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger.
  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1003 The problematic variable is defined here without initializer.

6.416.5 Since

1.0.0


Next: , Previous: W0462, Up: Messages

6.417 W0477

6.417.1 Message body

There are unpaired `[]',`()',`{}' in macro definition.

6.417.2 Content

Under construction.

6.417.3 Sample code

#define BEGIN { /* W0477 */
#define END } /* W0477 */

void func()
BEGIN
    ...snip...
END

6.417.4 Related message

  • W0478 This macro defines scraps of unrecognized codes.
  • W0479 This macro definition might be replaced with 'typedef' declaration.
  • W0480 This macro defines keyword of control statement or punctuator.
  • W0481 This macro defines the block around by `{}'.
  • W0482 This macro defines either type specifier.
  • W0483 This macro defines the pair of storage class specifier and type specifier.

6.417.5 Since

1.0.0


Next: , Previous: W0477, Up: Messages

6.418 W0478

6.418.1 Message body

This macro defines scraps of unrecognized codes.

6.418.2 Content

Under construction.

6.418.3 Sample code

#define MALLOC_OR_DIE(ptr, size) ptr = malloc(size); if (!ptr) exit(1); /* W0478 */

6.418.4 Related message

  • W0477 There are unpaired `[]',`()',`{}' in macro definition.
  • W0479 This macro definition might be replaced with 'typedef' declaration.
  • W0480 This macro defines keyword of control statement or punctuator.
  • W0481 This macro defines the block around by `{}'.
  • W0482 This macro defines either type specifier.
  • W0483 This macro defines the pair of storage class specifier and type specifier.

6.418.5 Since

1.0.0


Next: , Previous: W0478, Up: Messages

6.419 W0479

6.419.1 Message body

This macro definition might be replaced with 'typedef' declaration.

6.419.2 Content

Under construction.

6.419.3 Sample code

#define foo unsigned int /* W0479 */

6.419.4 Related message

  • W0477 There are unpaired `[]',`()',`{}' in macro definition.
  • W0478 This macro defines scraps of unrecognized codes.
  • W0480 This macro defines keyword of control statement or punctuator.
  • W0481 This macro defines the block around by `{}'.
  • W0482 This macro defines either type specifier.
  • W0483 This macro defines the pair of storage class specifier and type specifier.

6.419.5 Since

1.0.0


Next: , Previous: W0479, Up: Messages

6.420 W0480

6.420.1 Message body

This macro defines keyword of control statement or punctuator.

6.420.2 Content

Under construction.

6.420.3 Sample code

#define PLUS + /* W0480 */
#define LOOP while /* W0480 */

6.420.4 Related message

  • W0477 There are unpaired `[]',`()',`{}' in macro definition.
  • W0478 This macro defines scraps of unrecognized codes.
  • W0479 This macro definition might be replaced with 'typedef' declaration.
  • W0481 This macro defines the block around by `{}'.
  • W0482 This macro defines either type specifier.
  • W0483 This macro defines the pair of storage class specifier and type specifier.

6.420.5 Since

1.0.0


Next: , Previous: W0480, Up: Messages

6.421 W0481

6.421.1 Message body

This macro defines the block around by `{}'.

6.421.2 Content

Under construction.

6.421.3 Sample code

#define SETUP(a, b) /* W0481 */ \
    { \
        if (a) \
            b = 0; \
        else \
            b = 1; \
    }

6.421.4 Related message

  • W0477 There are unpaired `[]',`()',`{}' in macro definition.
  • W0478 This macro defines scraps of unrecognized codes.
  • W0479 This macro definition might be replaced with 'typedef' declaration.
  • W0480 This macro defines keyword of control statement or punctuator.
  • W0482 This macro defines either type specifier.
  • W0483 This macro defines the pair of storage class specifier and type specifier.

6.421.5 Since

1.0.0


Next: , Previous: W0481, Up: Messages

6.422 W0482

6.422.1 Message body

This macro defines either type specifier.

6.422.2 Content

Under construction.

6.422.3 Sample code

#define COMPOSITE struct /* W0482 */

6.422.4 Related message

  • W0477 There are unpaired `[]',`()',`{}' in macro definition.
  • W0478 This macro defines scraps of unrecognized codes.
  • W0479 This macro definition might be replaced with 'typedef' declaration.
  • W0480 This macro defines keyword of control statement or punctuator.
  • W0481 This macro defines the block around by `{}'.
  • W0483 This macro defines the pair of storage class specifier and type specifier.

6.422.5 Since

1.0.0


Next: , Previous: W0482, Up: Messages

6.423 W0483

6.423.1 Message body

This macro defines the pair of storage class specifier and type specifier.

6.423.2 Content

Under construction.

6.423.3 Sample code

#define PRIVATE_FINAL static const /* W0483 */

6.423.4 Related message

  • W0477 There are unpaired `[]',`()',`{}' in macro definition.
  • W0478 This macro defines scraps of unrecognized codes.
  • W0479 This macro definition might be replaced with 'typedef' declaration.
  • W0480 This macro defines keyword of control statement or punctuator.
  • W0481 This macro defines the block around by `{}'.
  • W0482 This macro defines either type specifier.

6.423.5 Since

1.0.0


Next: , Previous: W0483, Up: Messages

6.424 W0488

6.424.1 Message body

A function call `()', array's index operation `[]', or structure/union operation `->' or `.' are used with && or ||. It had better clear the coupling by using `()'.

6.424.2 Content

Under construction.

6.424.3 Sample code

while (func(&a, &b) < 0 && i > 0) { /* W0488 */
    ...snip...
}

6.424.4 Related message

  • W0489 A monadic operator is used with `&&' or `||'. It had better clear the coupling by using `()'.
  • W0490 A binary operator is used with `&&' or `||'. It had better clear the coupling by using `()'.

6.424.5 Since

1.0.0


Next: , Previous: W0488, Up: Messages

6.425 W0489

6.425.1 Message body

A monadic operator is used with `&&' or `||'. It had better clear the coupling by using `()'.

6.425.2 Content

Under construction.

6.425.3 Sample code

void func(unsigned int a, unsigned int b)
{
    unsigned int c = !a && b; /* W0489 */
}

6.425.4 Related message

  • W0488 A function call `()', array's index operation `[]', or structure/union operation `->' or `.' are used with && or ||. It had better clear the coupling by using `()'.
  • W0490 A binary operator is used with `&&' or `||'. It had better clear the coupling by using `()'.

6.425.5 Since

1.0.0


Next: , Previous: W0489, Up: Messages

6.426 W0490

6.426.1 Message body

A binary operator is used with `&&' or `||'. It had better clear the coupling by using `()'.

6.426.2 Content

Under construction.

6.426.3 Sample code

void func(unsigned int a, unsigned int b, unsigned int c)
{
    unsigned int d = a && b || c; /* W0490 */
}

6.426.4 Related message

  • W0488 A function call `()', array's index operation `[]', or structure/union operation `->' or `.' are used with && or ||. It had better clear the coupling by using `()'.
  • W0489 A monadic operator is used with `&&' or `||'. It had better clear the coupling by using `()'.

6.426.5 Since

1.0.0


Next: , Previous: W0490, Up: Messages

6.427 W0491

6.427.1 Message body

The same identifier name `%s' is also used in the declaration of other namespace.

6.427.2 Content

Under construction.

6.427.3 Sample code

extern int foo;

struct foo { /* W0491 */
    int a;
    int b;
};

6.427.4 Related message

  • W0492 The same identifier name `%s' is also used in the member of structure/union, label, tag or normal identifier.

6.427.5 Since

1.0.0


Next: , Previous: W0491, Up: Messages

6.428 W0492

6.428.1 Message body

The same identifier name `%s' is also used in the member of structure/union, label, tag or normal identifier.

6.428.2 Content

Under construction.

6.428.3 Sample code

extern int foo;

struct a {
    int foo; /* W0492 */
    int b;
};

void func(void)
{
    struct a a;
    int b; /* W0492 */
}

6.428.4 Related message

  • W0491 The same identifier name `%s' is also used in the declaration of other namespace.

6.428.5 Since

1.0.0


Next: , Previous: W0492, Up: Messages

6.429 W0493

6.429.1 Message body

The value of structure or union is passed as the actual argument of the function.

6.429.2 Content

Under construction.

6.429.3 Sample code

struct STR {
    long a;
    long b;
};

extern int foo(struct STR s);

void func(void)
{
    struct STR s = { 0 };

    foo(s); /* W0493 */
}

6.429.4 Related message

None.

6.429.5 Since

1.0.0


Next: , Previous: W0493, Up: Messages

6.430 W0495

6.430.1 Message body

operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'.

6.430.2 Content

Under construction.

6.430.3 Sample code

void func(int a, int b, int c)
{
    int x = a % b  * c; /* W0495 */
}

6.430.4 Related message

  • W0496 A ternary operator is used several times. It had better clear the coupling by using `()'.
  • W0497 Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'.
  • W0498 The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'.
  • W0499 The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'.
  • W0500 The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'.
  • W0501 A ternary operator is used with binary operator. It had better clear the coupling by using `()'.
  • W0502 A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping.

6.430.5 Since

1.0.0


Next: , Previous: W0495, Up: Messages

6.431 W0496

6.431.1 Message body

A ternary operator is used several times. It had better clear the coupling by using `()'.

6.431.2 Content

Under construction.

6.431.3 Sample code

void func(int a, int b, int c, int d, int e)
{
    int f = a ? b : c ? d : e; /* W0496 */
}

6.431.4 Related message

  • W0495 operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'.
  • W0497 Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'.
  • W0498 The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'.
  • W0499 The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'.
  • W0500 The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'.
  • W0501 A ternary operator is used with binary operator. It had better clear the coupling by using `()'.
  • W0502 A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping.

6.431.5 Since

1.0.0


Next: , Previous: W0496, Up: Messages

6.432 W0497

6.432.1 Message body

Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'.

6.432.2 Content

Under construction.

6.432.3 Sample code

void func(int a, int b, int c)
{
    int d = a << b << c; /* W0497 */
}

6.432.4 Related message

  • W0495 operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'.
  • W0496 A ternary operator is used several times. It had better clear the coupling by using `()'.
  • W0498 The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'.
  • W0499 The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'.
  • W0500 The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'.
  • W0501 A ternary operator is used with binary operator. It had better clear the coupling by using `()'.
  • W0502 A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping.

6.432.5 Since

1.0.0


Next: , Previous: W0497, Up: Messages

6.433 W0498

6.433.1 Message body

The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'.

6.433.2 Content

Under construction.

6.433.3 Sample code

void func(int a, int b, int c)
{
    int d = a - b + c; /* W0498 */
}

6.433.4 Related message

  • W0495 operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'.
  • W0496 A ternary operator is used several times. It had better clear the coupling by using `()'.
  • W0497 Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'.
  • W0499 The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'.
  • W0500 The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'.
  • W0501 A ternary operator is used with binary operator. It had better clear the coupling by using `()'.
  • W0502 A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping.

6.433.5 Since

1.0.0


Next: , Previous: W0498, Up: Messages

6.434 W0499

6.434.1 Message body

The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'.

6.434.2 Content

Under construction.

6.434.3 Sample code

void func(int a, int b, int c)
{
    int d = a << b >> c; /* W0499 */
}

6.434.4 Related message

  • W0495 operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'.
  • W0496 A ternary operator is used several times. It had better clear the coupling by using `()'.
  • W0497 Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'.
  • W0498 The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'.
  • W0500 The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'.
  • W0501 A ternary operator is used with binary operator. It had better clear the coupling by using `()'.
  • W0502 A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping.

6.434.5 Since

1.0.0


Next: , Previous: W0499, Up: Messages

6.435 W0500

6.435.1 Message body

The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'.

6.435.2 Content

Under construction.

6.435.3 Sample code

void func(int a, int b, int c)
{
    int d = a * b + c;  /* W0500 */
}

6.435.4 Related message

  • W0495 operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'.
  • W0496 A ternary operator is used several times. It had better clear the coupling by using `()'.
  • W0497 Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'.
  • W0498 The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'.
  • W0499 The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'.
  • W0501 A ternary operator is used with binary operator. It had better clear the coupling by using `()'.
  • W0502 A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping.

6.435.5 Since

1.0.0


Next: , Previous: W0500, Up: Messages

6.436 W0501

6.436.1 Message body

A ternary operator is used with binary operator. It had better clear the coupling by using `()'.

6.436.2 Content

Under construction.

6.436.3 Sample code

void func(int a, int b, int c)
{
    int d = a ? a : a + c; /* W0501 */
}

6.436.4 Related message

  • W0495 operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'.
  • W0496 A ternary operator is used several times. It had better clear the coupling by using `()'.
  • W0497 Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'.
  • W0498 The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'.
  • W0499 The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'.
  • W0500 The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'.
  • W0502 A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping.

6.436.5 Since

1.0.0


Next: , Previous: W0501, Up: Messages

6.437 W0502

6.437.1 Message body

A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping.

6.437.2 Content

Under construction.

6.437.3 Sample code

void func(int a, int b, int c)
{
    int d = a != b << c; /* W0502 */
}

6.437.4 Related message

  • W0495 operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'.
  • W0496 A ternary operator is used several times. It had better clear the coupling by using `()'.
  • W0497 Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'.
  • W0498 The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'.
  • W0499 The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'.
  • W0500 The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'.
  • W0501 A ternary operator is used with binary operator. It had better clear the coupling by using `()'.

6.437.5 Since

1.0.0


Next: , Previous: W0502, Up: Messages

6.438 W0508

6.438.1 Message body

There's a side effect at the right operand of `&&' or `||'operator.

6.438.2 Content

Under construction.

6.438.3 Sample code

if ((a == b) && ((c = func()) == d)) /* W0508 */

if a==b is true, the return value of func() is substituted for the c.

6.438.4 Related message

None.

6.438.5 Since

1.0.0


Next: , Previous: W0508, Up: Messages

6.439 W0511

6.439.1 Message body

C++ style comment of `//' is used.

6.439.2 Content

Under construction.

6.439.3 Sample code

// W0511

6.439.4 Related message

None.

6.439.5 Since

1.0.0


Next: , Previous: W0511, Up: Messages

6.440 W0512

6.440.1 Message body

The result of `++' or `–' operator is used in the statement.

6.440.2 Content

Under construction.

6.440.3 Sample code

a = b++ + --c + d++; /* W0512 */

6.440.4 Related message

None.

6.440.5 Since

1.0.0


Next: , Previous: W0512, Up: Messages

6.441 W0525

6.441.1 Message body

A field named 1bit is declared by signed type.

6.441.2 Content

Under construction.

6.441.3 Sample code

struct ST {
    int bit:1; /* W0525 */
};

6.441.4 Related message

None.

6.441.5 Since

1.0.0


Next: , Previous: W0525, Up: Messages

6.442 W0528

6.442.1 Message body

This macro defines octal constant value.

6.442.2 Content

Under construction.

6.442.3 Sample code

#define MACRO 0123 /* W0528 */

6.442.4 Related message

  • W0529 An octal literal is used.
  • W0530 An octal escape sequence is used in a character constant or a string literal.

6.442.5 Since

1.0.0


Next: , Previous: W0528, Up: Messages

6.443 W0529

6.443.1 Message body

An octal literal is used.

6.443.2 Content

Under construction.

6.443.3 Sample code

#define MACRO 0123

int a = 0123; /* W0529 */
int b = MACRO; /* W0529 */

6.443.4 Related message

  • W0528 This macro defines octal constant value.
  • W0530 An octal escape sequence is used in a character constant or a string literal.

6.443.5 Since

1.0.0


Next: , Previous: W0529, Up: Messages

6.444 W0530

6.444.1 Message body

An octal escape sequence is used in a character constant or a string literal.

6.444.2 Content

Under construction.

6.444.3 Sample code

char *s = "\012"; /* W0530 */

6.444.4 Related message

  • W0528 This macro defines octal constant value.
  • W0529 An octal literal is used.

6.444.5 Since

1.0.0


Next: , Previous: W0530, Up: Messages

6.445 W0532

6.445.1 Message body

'break' statement is used to exits 'case' or 'default' section, but it's not described at the end of 'case' section.

6.445.2 Content

Under construction.

6.445.3 Sample code

switch (x) {
case 1:
    if (y == 0) {
        break; /* W0532 */
    }
    ...snip...
    break;
case 2:
    ...snip...
    break;
}

6.445.4 Related message

None.

6.445.5 Since

1.0.0


Next: , Previous: W0532, Up: Messages

6.446 W0534

6.446.1 Message body

A control variable `%s' is not initialized in this 'for' statement.

6.446.2 Content

Under construction.

6.446.3 Sample code

int i = 0;
int j;

for (; i < 10; i++) { /* W0534 */
}

for (j = 0; i < 20; i++) { /* W0534 */
}

6.446.4 Related message

None.

6.446.5 Since

1.0.0


Next: , Previous: W0534, Up: Messages

6.447 W0535

6.447.1 Message body

A comma operator is used in a 'for' statement.

6.447.2 Content

Under construction.

6.447.3 Sample code

int i, j, k = 0;

for (i = 0, j = 0; i < 10; i++, j++, k--) { /* W0535 */
}

6.447.4 Related message

None.

6.447.5 Since

1.0.0


Next: , Previous: W0535, Up: Messages

6.448 W0538

6.448.1 Message body

This 'default' label is not final label in this 'switch' statement.

6.448.2 Content

Under construction.

6.448.3 Sample code

switch (x) {
default: /* W0538 */
    ...snip...
case 1:
    ...snip...
}

6.448.4 Related message

None.

6.448.5 Since

1.0.0


Next: , Previous: W0538, Up: Messages

6.449 W0540

6.449.1 Message body

A function which the blank formal argument list is declared. `void' is omitted.

6.449.2 Content

Under construction.

6.449.3 Sample code

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

6.449.4 Related message

None.

6.449.5 Since

1.0.0


Next: , Previous: W0540, Up: Messages

6.450 W0541

6.450.1 Message body

Inline assembly code should be encapsulated by macro.

6.450.2 Content

Under construction.

6.450.3 Sample code

#define ASM_CODE asm("movl %ecx, %eax")

void foo(int arg1, int *arg2, int arg3)
{
    asm("movl %ecx, %eax"); /* W0541 */
    __asm__("movl %ecx, (%eax)"); /* W0541 */

    asm { /* W0541 */
        xorl eax, eax
    }

    ASM_CODE; /* OK */

    __asm__ volatile ( /* W0541 */
            "int $0x80"
            : "=a" (r)
              "+b" (arg1),
              "+c" (arg2),
              "+d" (arg3)
            : "a" (128)
            : "memory", "cc");
}

6.450.4 Related message

None.

6.450.5 Since

1.6.0


Next: , Previous: W0541, Up: Messages

6.451 W0542

6.451.1 Message body

There are identifiers in the part of formal argument in a function declaration.

6.451.2 Content

Under construction.

6.451.3 Sample code

void func(int i, char, int, char c); /* W0542 */

6.451.4 Related message

None.

6.451.5 Since

1.0.0


Next: , Previous: W0542, Up: Messages

6.452 W0543

6.452.1 Message body

The identifier of formal argument in this function declaration is different from the past declaration of it.

6.452.2 Content

Under construction.

6.452.3 Sample code

void func(int i1, int i2);

void func(int i2, int i1) /* W0543 */
{
    ...snip...
}

6.452.4 Related message

  • W0544 The identifier of formal argument in the function declaration is different from the declaration of function pointer.

6.452.5 Since

1.0.0


Next: , Previous: W0543, Up: Messages

6.453 W0544

6.453.1 Message body

The identifier of formal argument in the function declaration is different from the declaration of function pointer.

6.453.2 Content

Under construction.

6.453.3 Sample code

void func(int i1, int i2);
void (*p)(int i2, int i1) = &func; /* W0544 */

6.453.4 Related message

  • W0543 The identifier of formal argument in this function declaration is different from the past declaration of it.

6.453.5 Since

1.0.0


Next: , Previous: W0544, Up: Messages

6.454 W0546

6.454.1 Message body

There is 'case' or 'default' label of switch statement in a nested block.

6.454.2 Content

Under construction.

6.454.3 Sample code

switch (x) {
case 1:
    if (y > 0) {
    case 2: /* W0546 */
        break;
    }
    ...snip...
    break;
default:
    ...snip...
}

6.454.4 Related message

None.

6.454.5 Since

1.0.0


Next: , Previous: W0546, Up: Messages

6.455 W0549

6.455.1 Message body

A formal argument of macro doesn't enclosed by `()'.

6.455.2 Content

Under construction.

6.455.3 Sample code

#define ADD(a, b) a + b /* W0549 */

int x = 3 * ADD(1, 2);

(3 * 1) + 2 = 5 is substituted for the x instead of 3 * (1 + 2) = 9.

6.455.4 Related message

None.

6.455.5 Since

1.0.0


Next: , Previous: W0549, Up: Messages

6.456 W0551

6.456.1 Message body

An union type specifier is defined.

6.456.2 Content

Under construction.

6.456.3 Sample code

union UNI { /* W0551 */
    int a;
    short b;
    long c;
};

6.456.4 Related message

  • W0552 An union type object is defined.

6.456.5 Since

1.0.0


Next: , Previous: W0551, Up: Messages

6.457 W0552

6.457.1 Message body

An union type object is defined.

6.457.2 Content

Under construction.

6.457.3 Sample code

union UNI {
    int a;
    short b;
    long c;
};

union UNI u; /* W0552 */

6.457.4 Related message

  • W0551 An union type specifier is defined.

6.457.5 Since

1.0.0


Next: , Previous: W0552, Up: Messages

6.458 W0553

6.458.1 Message body

A pointer points to the function cast to other function pointer type.

6.458.2 Content

Under construction.

6.458.3 Sample code

extern int func(void);

void (*p)(int) = (void (*)(int)) &func; /* W0553 */

6.458.4 Related message

None.

6.458.5 Since

1.0.0


Next: , Previous: W0553, Up: Messages

6.459 W0554

6.459.1 Message body

An actual argument `%s' in `#pragma' is unrecognized. This `#pragma' command will be ignored.

6.459.2 Content

Under construction.

6.459.3 Sample code

#pragma SystemSpecificPragmaName 5 /* W0544 */

6.459.4 Related message

None.

6.459.5 Since

1.0.0


Next: , Previous: W0554, Up: Messages

6.460 W0555

6.460.1 Message body

This function is called recursive with indirectly.

6.460.2 Content

Under construction.

6.460.3 Sample code

test1.c

int func1(int i) /* W0555 */
{
    if (i < 10) {
        return i + 1;
    }
    else {
        return func3(i);
    }
}

test2.c

int func2(int i) /* W0555 */
{
    return func1(i) + 2;
}

test3.c

int func3(int i) /* W0555 */
{
    return func2(i) + 3;
}

6.460.4 Related message

  • W0556 The function which includes this call is called recursively.

6.460.5 Since

1.0.0


Next: , Previous: W0555, Up: Messages

6.461 W0556

6.461.1 Message body

The function which includes this call is called recursively.

6.461.2 Content

Under construction.

6.461.3 Sample code

int func(int i)
{
    if (i == 0) {
        return 0;
    }
    else {
        return func(i - 1); /* W0556 */
    }
}

6.461.4 Related message

  • W0555 This function is called recursive with indirectly.

6.461.5 Since

1.0.0


Next: , Previous: W0556, Up: Messages

6.462 W0559

6.462.1 Message body

The operand of `!' operator is the expression of bit operation or arithmetic operation.

6.462.2 Content

Under construction.

6.462.3 Sample code

int func(int a, int b)
{
    if (!(a || b)) {
        return 0;
    }
    else {
        return !(a & b); /* W0559 */
    }
}

6.462.4 Related message

  • W0559 The operand of `!' operator is the expression of bit operation or arithmetic operation.

6.462.5 Since

1.0.0


Next: , Previous: W0559, Up: Messages

6.463 W0560

6.463.1 Message body

The operand of `~' operator is boolean type expression.

6.463.2 Content

Under construction.

6.463.3 Sample code

int func(int a, int b)
{
    return ~((a < b) && (b > 0)); /* W0560 */
}

6.463.4 Related message

  • W0560 The operand of `~' operator is boolean type expression.

6.463.5 Since

1.0.0


Next: , Previous: W0560, Up: Messages

6.464 W0561

6.464.1 Message body

The meaning of `*p++' is `*(p++)'. It is not `(*p)++'. `*' operator is verbose.

6.464.2 Content

Under construction.

6.464.3 Sample code

*p++; /* W0561 */

6.464.4 Related message

None.

6.464.5 Since

1.0.0


Next: , Previous: W0561, Up: Messages

6.465 W0562

6.465.1 Message body

There are verbose `{}' in the initializer.

6.465.2 Content

Under construction.

6.465.3 Sample code

int ng[3][2] = { { {1, 2}, { 3, 4}, { 5, 6 } } }; /* W0562 */

int ok[3][2] = { { 1, 2 }, { 3, 4 }, { 5, 6 } }; /* OK */

6.465.4 Related message

None.

6.465.5 Since

1.0.0


Next: , Previous: W0562, Up: Messages

6.466 W0563

6.466.1 Message body

If it jumps from outside of this block to `%s' label,the local variable will not be initialized.

6.466.2 Content

Under construction.

6.466.3 Sample code

void func(int a, int b)
{
    if (a == 0) {
        if (b != 0) {
            goto ERR;
        }
    }
    else {
        int c = 0;
    ERR:  /* W0563 */
        b = c;
    }
}

6.466.4 Related message

  • W0564 If this 'goto' statement jumps to `%s' label,local variable will not be initialized.

6.466.5 Since

1.0.0


Next: , Previous: W0563, Up: Messages

6.467 W0564

6.467.1 Message body

If this 'goto' statement jumps to `%s' label,local variable will not be initialized.

6.467.2 Content

Under construction.

6.467.3 Sample code

void func(int a, int b)
{
    if (a == 0) {
        int c = 0;
    RETRY:
        b = c;
    }

    if (b != 0) {
        goto RETRY; /* W0564 */
    }
}

6.467.4 Related message

  • W0563 If it jumps from outside of this block to `%s' label,the local variable will not be initialized.

6.467.5 Since

1.0.0


Next: , Previous: W0564, Up: Messages

6.468 W0565

6.468.1 Message body

A volatile integer type cast to volatile pointer type and vice versa.

6.468.2 Content

Under construction.

6.468.3 Sample code

unsigned int a = 0xFFFFU;
volatile unsigned int *b = (volatile unsigned int *) a; /* W0565 */
unsigned int c = (unsigned int) b; /* W0565 */

6.468.4 Related message

  • W0566 A volatile integer type cast to function pointer type and vice versa.
  • W0567 A volatile integer type cast to pointer to object and vice versa.

6.468.5 Since

1.0.0


Next: , Previous: W0565, Up: Messages

6.469 W0566

6.469.1 Message body

A volatile integer type cast to function pointer type and vice versa.

6.469.2 Content

Under construction.

6.469.3 Sample code

unsigned int addr = 0xFFFFFFFFU;
void (*p)(int, long) = (void (*)(int, long)) addr; /* W0566 */
int i = (int) p; /* W0566 */

6.469.4 Related message

  • W0565 A volatile integer type cast to volatile pointer type and vice versa.
  • W0567 A volatile integer type cast to pointer to object and vice versa.

6.469.5 Since

1.0.0


Next: , Previous: W0566, Up: Messages

6.470 W0567

6.470.1 Message body

A volatile integer type cast to pointer to object and vice versa.

6.470.2 Content

Under construction.

6.470.3 Sample code

unsigned int addr = 0xFFFFFFFFU;
void (*p)(int, long) = (void (*)(int, long)) addr; /* W0567 */
int i = (int) p; /* W0567 */

6.470.4 Related message

  • W0565 A volatile integer type cast to volatile pointer type and vice versa.
  • W0566 A volatile integer type cast to function pointer type and vice versa.

6.470.5 Since

1.0.0


Next: , Previous: W0567, Up: Messages

6.471 W0568

6.471.1 Message body

The result of left shift operation against the signed constant expression value is undefined.

6.471.2 Content

Under construction.

6.471.3 Sample code

int a = 0x7FFFFFFF << 1; /* W0568 */
int b = -5 << 1; /* W0568 */

6.471.4 Related message

  • W0569 The result of left shift operation against the signed expression value is undefined.
  • W0570 This signed left shift operation may make undefined value.
  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.471.5 Since

1.0.0


Next: , Previous: W0568, Up: Messages

6.472 W0569

6.472.1 Message body

The result of left shift operation against the signed expression value is undefined.

6.472.2 Content

Under construction.

6.472.3 Sample code

int func(int a)
{
    if (a >= 0x40000000) {
        return a << 1; /* W0569 */
    }

    if (a < 0) {
        return a << 1; /* W0569 */
    }

    return a << 1;
}

6.472.4 Related message

  • W0568 The result of left shift operation against the signed constant expression value is undefined.
  • W0570 This signed left shift operation may make undefined value.
  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.472.5 Since

1.0.0


Next: , Previous: W0569, Up: Messages

6.473 W0570

6.473.1 Message body

This signed left shift operation may make undefined value.

6.473.2 Content

Under construction.

6.473.3 Sample code

int func(int a)
{
    if (a >= 0x10000000) {
        return a << 1; /* W0570 */
    }

    if (a < 10) {
        return a << 1; /* W0570 */
    }

    return a << 1;
}

6.473.4 Related message

  • W0568 The result of left shift operation against the signed constant expression value is undefined.
  • W0569 The result of left shift operation against the signed expression value is undefined.
  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.473.5 Since

1.0.0


Next: , Previous: W0570, Up: Messages

6.474 W0571

6.474.1 Message body

The result of right shift operation against the signed data is a possibility the both logical shift and arithmetic shift by implementation.

6.474.2 Content

Under construction.

6.474.3 Sample code

int func(int a)
{
    return a >> 3; /* W0571 */
}

6.474.4 Related message

  • W0572 Bitwise operation of signed value causes implementation-defined behavior.

6.474.5 Since

1.0.0


Next: , Previous: W0571, Up: Messages

6.475 W0572

6.475.1 Message body

Bitwise operation of signed value causes implementation-defined behavior.

6.475.2 Content

Under construction.

6.475.3 Sample code

void func(short a)
{
    short b;

    b = a >> 8; /* W0572 */
    b <<= 1; /* W0572 */
    b = a & 15; /* W0572 */
    b = a | 15; /* W0572 */
    b = a ^ 15; /* W0572 */
    b = ~a; /* W0572 */
}

6.475.4 Related message

  • W0571 The result of right shift operation against the signed data is a possibility the both logical shift and arithmetic shift by implementation.

6.475.5 Since

1.0.0


Next: , Previous: W0572, Up: Messages

6.476 W0573

6.476.1 Message body

A `-' character in scanset in `[]' is implementation defined.

6.476.2 Content

Under construction.

6.476.3 Sample code

char c;
scanf("%[a-z]", &c); /* W0573 */

6.476.4 Related message

None.

6.476.5 Since

1.6.0


Next: , Previous: W0573, Up: Messages

6.477 W0574

6.477.1 Message body

The character except for basic source character is used in the character constant.

6.477.2 Content

Under construction.

6.477.3 Sample code

const char c = '$'; /* W0574 */

6.477.4 Related message

  • W0575 The character except for basic source character is used in the string literal.
  • W0576 The character except for basic source character is used in the comment of source file `%s'.
  • W0577 The character except for basic source character is used in preprocessing directive of source file `%s'.

6.477.5 Since

1.0.0


Next: , Previous: W0574, Up: Messages

6.478 W0575

6.478.1 Message body

The character except for basic source character is used in the string literal.

6.478.2 Content

Under construction.

6.478.3 Sample code

const char *str = "@$"; /* W0575 */

6.478.4 Related message

  • W0574 The character except for basic source character is used in the character constant.
  • W0576 The character except for basic source character is used in the comment of source file `%s'.
  • W0577 The character except for basic source character is used in preprocessing directive of source file `%s'.

6.478.5 Since

1.0.0


Next: , Previous: W0575, Up: Messages

6.479 W0576

6.479.1 Message body

The character except for basic source character is used in the comment of source file `%s'.

6.479.2 Content

Under construction.

6.479.3 Sample code

/* $ W0576 */

6.479.4 Related message

  • W0574 The character except for basic source character is used in the character constant.
  • W0575 The character except for basic source character is used in the string literal.
  • W0577 The character except for basic source character is used in preprocessing directive of source file `%s'.

6.479.5 Since

1.0.0


Next: , Previous: W0576, Up: Messages

6.480 W0577

6.480.1 Message body

The character except for basic source character is used in preprocessing directive of source file `%s'.

6.480.2 Content

Under construction.

6.480.3 Sample code

#define MACRO $ /* W0577 */

6.480.4 Related message

  • W0574 The character except for basic source character is used in the character constant.
  • W0575 The character except for basic source character is used in the string literal.
  • W0576 The character except for basic source character is used in the comment of source file `%s'.

6.480.5 Since

1.0.0


Next: , Previous: W0577, Up: Messages

6.481 W0578

6.481.1 Message body

A generic integer value of the compound expression typed `%s' is implicitly converted into a new value of bigger type `%s'.

6.481.2 Content

Under construction.

6.481.3 Sample code

void func(int a)
{
    long b = a * a; /* W0578 */
}

6.481.4 Related message

None.

6.481.5 Since

1.0.0


Next: , Previous: W0578, Up: Messages

6.482 W0579

6.482.1 Message body

A generic integer value of the compound expression typed `%s' is explicitly converted into a new value of bigger type `%s'.

6.482.2 Content

Under construction.

6.482.3 Sample code

void func(int a)
{
    long b = (long) (a * a); /* W0579 */
}

6.482.4 Related message

None.

6.482.5 Since

1.6.0


Next: , Previous: W0579, Up: Messages

6.483 W0580

6.483.1 Message body

An address of local static variable is substituted for a pointer which has a wider scope.

6.483.2 Content

Under construction.

6.483.3 Sample code

int *p;

void func(void)
{
    static int i = 0;

    p = &i; /* W0580 */
}

6.483.4 Related message

None.

6.483.5 Since

1.0.0


Next: , Previous: W0580, Up: Messages

6.484 W0581

6.484.1 Message body

The number or type of actual argument is different from the past.

6.484.2 Content

Under construction.

6.484.3 Sample code

int func(int a, short b, long c)
{
    switch (a) {
    case 0:
        return foo(a, b, c);
    case 1:
        return foo(a, c, b); /* W0581 */
    default:
        return foo(b, c); /* W0581 */
    }
}

6.484.4 Related message

  • W0582 The number or type of actual argument is different from the function prototype declaration at the following.
  • W0583 The number or type of actual argument is different from the function declaration at the following.
  • W0584 The type of %s actual argument is different from the type of formal argument in function definition.

6.484.5 Since

1.0.0


Next: , Previous: W0581, Up: Messages

6.485 W0582

6.485.1 Message body

The number or type of actual argument is different from the function prototype declaration at the following.

6.485.2 Content

Under construction.

6.485.3 Sample code

int func(int a, short b, long c)
{
    switch (a) {
    case 0:
        return foo(a, b, c);
    case 1:
        return foo(a, c, b); /* W0582 */
    default:
        return foo(b, c); /* W0582 */
    }
}

extern int foo(int, short, long);

6.485.4 Related message

  • W0581 The number or type of actual argument is different from the past.
  • W0583 The number or type of actual argument is different from the function declaration at the following.
  • W0584 The type of %s actual argument is different from the type of formal argument in function definition.

6.485.5 Since

1.0.0


Next: , Previous: W0582, Up: Messages

6.486 W0583

6.486.1 Message body

The number or type of actual argument is different from the function declaration at the following.

6.486.2 Content

Under construction.

6.486.3 Sample code

int func(int a, short b, long c)
{
    switch (a) {
    case 0:
        return foo(a, b, c);
    case 1:
        return foo(a, c, b); /* W0583 */
    default:
        return foo(b, c); /* W0583 */
    }
}

int foo(int a, short b, long c)
{
    return a + b + c;
}

6.486.4 Related message

  • W0581 The number or type of actual argument is different from the past.
  • W0582 The number or type of actual argument is different from the function prototype declaration at the following.
  • W0584 The type of %s actual argument is different from the type of formal argument in function definition.

6.486.5 Since

1.0.0


Next: , Previous: W0583, Up: Messages

6.487 W0584

6.487.1 Message body

The type of %s actual argument is different from the type of formal argument in function definition.

6.487.2 Content

Under construction.

6.487.3 Sample code

extern void func1(a, b)
long a;
double b;
{
    ...snip...
}

void func2(void)
{
    int a = 0;
    long b = 0;

    func1(a, b); /* W0584 */
}

6.487.4 Related message

  • W0581 The number or type of actual argument is different from the past.
  • W0582 The number or type of actual argument is different from the function prototype declaration at the following.
  • W0583 The number or type of actual argument is different from the function declaration at the following.

6.487.5 Since

1.0.0


Next: , Previous: W0584, Up: Messages

6.488 W0585

6.488.1 Message body

A control variable `%s' doesn't appear increment expression.

6.488.2 Content

Under construction.

6.488.3 Sample code

int i, j;

for (i = j = 0; i < 10; j++) { /* W0585 */
    i++;
}

6.488.4 Related message

None.

6.488.5 Since

1.0.0


Next: , Previous: W0585, Up: Messages

6.489 W0586

6.489.1 Message body

A typedef `%s' is declared in more than one place.

6.489.2 Content

Under construction.

6.489.3 Sample code

test1.c

typedef int *INT_PTR; /* W0586 */

void func1(INT_PTR)
{
    ...snip...
}

test2.c

typedef int *INT_PTR; /* W0586 */

void func2(INT_PTR)
{
    ...snip...
}

6.489.4 Related message

None.

6.489.5 Since

1.0.0


Next: , Previous: W0586, Up: Messages

6.490 W0589

6.490.1 Message body

An object `%s' is only referenced by function `%s' in the defined translation unit.

6.490.2 Content

Under construction.

6.490.3 Sample code

test1.c

void func1(void) /* W0589 & W0591 */
{
    ...snip...
}

void func2(void)
{
    func1();
}

test2.c

extern void func2(void);

void func3(void)
{
    func2();
}

6.490.4 Related message

None.

6.490.5 Since

1.0.0


Next: , Previous: W0589, Up: Messages

6.491 W0591

6.491.1 Message body

A function `%s' is only referenced by the defined translation unit.

6.491.2 Content

Under construction.

6.491.3 Sample code

test1.c

void func1(void) /* W0589 & W0591 */
{
    ...snip...
}

void func2(void)
{
    func1();
}

test2.c

extern void func2(void);

void func3(void)
{
    func2();
}

6.491.4 Related message

None.

6.491.5 Since

1.0.0


Next: , Previous: W0591, Up: Messages

6.492 W0593

6.492.1 Message body

An object `%s' is only referenced by the defined translation unit.

6.492.2 Content

Under construction.

6.492.3 Sample code

test1.c

int a = 100; /* W0593 */

void func1(void)
{
    a += 1;
}

void func2(void)
{
    func1();
    a += 2;
}

test2.c

extern void func2(void);

void func3(void)
{
    func2();
}

6.492.4 Related message

None.

6.492.5 Since

1.0.0


Next: , Previous: W0593, Up: Messages

6.493 W0597

6.493.1 Message body

`%s' is modified more than once between the side-effects completion point. The evaluation order is undefined.

6.493.2 Content

Under construction.

6.493.3 Sample code

extern int bar(int *);
extern int baz(const int *);

void foo(int a, int b)
{
    a = b * a++; /* W0597 */
    a = bar(&a) * a++; /* W0597 */
    b = bar(&a) * (a++ + --a); /* W0597, W0599 */
}

6.493.4 Related message

  • W0598 `%s' might be modified more than once between the side-effects completion point. The evaluation order is undefined.
  • W0599 `%s' is modified and referenced between the side-effects completion point. The evaluation order is undefined.
  • W0600 `%s' is modified and might be referenced between the side-effects completion point. The evaluation order is undefined.

6.493.5 Since

1.2.0


Next: , Previous: W0597, Up: Messages

6.494 W0598

6.494.1 Message body

`%s' might be modified more than once between the side-effects completion point. The evaluation order is undefined.

6.494.2 Content

Under construction.

6.494.3 Sample code

extern int bar(int *);
extern int baz(const int *);

void foo(int a, int b)
{
    b = bar(&a) * a++; /* W0598 */
    b = bar(&a) + bar(&a); /* W0598 */
    b = bar(&a) + baz(&a); /* W0600 */
    b = baz(&a) + baz(&a);
}

6.494.4 Related message

  • W0597 `%s' is modified more than once between the side-effects completion point. The evaluation order is undefined.
  • W0599 `%s' is modified and referenced between the side-effects completion point. The evaluation order is undefined.
  • W0600 `%s' is modified and might be referenced between the side-effects completion point. The evaluation order is undefined.

6.494.5 Since

1.2.0


Next: , Previous: W0598, Up: Messages

6.495 W0599

6.495.1 Message body

`%s' is modified and referenced between the side-effects completion point. The evaluation order is undefined.

6.495.2 Content

Under construction.

6.495.3 Sample code

extern void bar(int, int, int);

void foo(int a, int b, int *c)
{
    b = (a + 1) + a++; /* W0599 */
    b = c[a] + c[++a]; /* W0599 */
    bar(a, a++, c[a]); /* W0599 */
    bar(a, a, c[a++]); /* W0599 */
    a = a + b;
    c[a] = a++ + b; /* W0599 */
}

6.495.4 Related message

  • W0597 `%s' is modified more than once between the side-effects completion point. The evaluation order is undefined.
  • W0598 `%s' might be modified more than once between the side-effects completion point. The evaluation order is undefined.
  • W0600 `%s' is modified and might be referenced between the side-effects completion point. The evaluation order is undefined.

6.495.5 Since

1.2.0


Next: , Previous: W0599, Up: Messages

6.496 W0600

6.496.1 Message body

`%s' is modified and might be referenced between the side-effects completion point. The evaluation order is undefined.

6.496.2 Content

Under construction.

6.496.3 Sample code

extern int bar(int *);
extern int baz(const int *);

void foo(int a, int b)
{
    b = bar(&a) * a; /* W0600 */
    b = baz(&a) * a;
}

6.496.4 Related message

  • W0597 `%s' is modified more than once between the side-effects completion point. The evaluation order is undefined.
  • W0598 `%s' might be modified more than once between the side-effects completion point. The evaluation order is undefined.
  • W0599 `%s' is modified and referenced between the side-effects completion point. The evaluation order is undefined.

6.496.5 Since

1.2.0


Next: , Previous: W0600, Up: Messages

6.497 W0605

6.497.1 Message body

Multiple break-statements appear to break the same iteration.

6.497.2 Content

Under construction.

6.497.3 Sample code

while (n > 0) {
    if (n == 1) {
        break;
    }

    if (n == 2) {
        break; /* W0605 */
    }
}

6.497.4 Related message

None.

6.497.5 Since

1.0.0


Next: , Previous: W0605, Up: Messages

6.498 W0606

6.498.1 Message body

An union has a member which type is floating-point.

6.498.2 Content

Under construction.

6.498.3 Sample code

union UNI { /* W0606 */
    float a;
    int b;
};

6.498.4 Related message

None.

6.498.5 Since

1.4.0


Next: , Previous: W0606, Up: Messages

6.499 W0607

6.499.1 Message body

An integer expression which the value which the value is minus converted to unsigned type.

6.499.2 Content

Under construction.

6.499.3 Sample code

void func(int a)
{
    if (a < 0) {
        unsigned int b = (unsigned int) a; /* W0607 */
    }
}

6.499.4 Related message

  • W0608 An integer expression which the value might be minus converted to unsigned type.
  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.499.5 Since

1.8.0


Next: , Previous: W0607, Up: Messages

6.500 W0608

6.500.1 Message body

An integer expression which the value might be minus converted to unsigned type.

6.500.2 Content

Under construction.

6.500.3 Sample code

void fuu(int a)
{
    unsigned char b;

    if (a < 256) {
        b = (unsigned char) a; /* W0608 */
    }
}

6.500.4 Related message

  • W0607 An integer expression which the value which the value is minus converted to unsigned type.
  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.500.5 Since

1.8.0


Next: , Previous: W0608, Up: Messages

6.501 W0609

6.501.1 Message body

This logical expression always makes true.

6.501.2 Content

Under construction.

6.501.3 Sample code

void func(int a)
{
    if (a < 0) {
        if (a != 0) { /* W0609 */
            ...snip...
        }
    }
}

6.501.4 Related message

  • W0610 This logical expression always makes false.
  • W0611 The value of this 'for' control expression is always true.
  • W0612 The value of this 'if' conditional expression is always true.
  • W0613 This controlling expression always makes false.
  • W0614 The value of this "do-while" control expression is always false. The body of repetition statement executed only once.

6.501.5 Since

1.0.0


Next: , Previous: W0609, Up: Messages

6.502 W0610

6.502.1 Message body

This logical expression always makes false.

6.502.2 Content

Under construction.

6.502.3 Sample code

void func(int a)
{
    if (a < 0) {
        if (a == 0) { /* W0610 */
        }
    }
}

6.502.4 Related message

  • W0609 This logical expression always makes true.
  • W0611 The value of this 'for' control expression is always true.
  • W0612 The value of this 'if' conditional expression is always true.
  • W0613 This controlling expression always makes false.
  • W0614 The value of this "do-while" control expression is always false. The body of repetition statement executed only once.

6.502.5 Since

1.0.0


Next: , Previous: W0610, Up: Messages

6.503 W0611

6.503.1 Message body

The value of this 'for' control expression is always true.

6.503.2 Content

Under construction.

6.503.3 Sample code

void func(int a)
{
    if ( a > 0 ) {
        while (a != 0) { /* W0611 */
            ...snip...
        }
    }
}

6.503.4 Related message

  • W0609 This logical expression always makes true.
  • W0610 This logical expression always makes false.
  • W0612 The value of this 'if' conditional expression is always true.
  • W0613 This controlling expression always makes false.
  • W0614 The value of this "do-while" control expression is always false. The body of repetition statement executed only once.

6.503.5 Since

1.0.0


Next: , Previous: W0611, Up: Messages

6.504 W0612

6.504.1 Message body

The value of this 'if' conditional expression is always true.

6.504.2 Content

Under construction.

6.504.3 Sample code

int i;

for (i = 0; i < 10; i++) {
    if (i < 20) { /* W0612 */
        ...snip...
    }
}

6.504.4 Related message

  • W0609 This logical expression always makes true.
  • W0610 This logical expression always makes false.
  • W0611 The value of this 'for' control expression is always true.
  • W0613 This controlling expression always makes false.
  • W0614 The value of this "do-while" control expression is always false. The body of repetition statement executed only once.

6.504.5 Since

1.0.0


Next: , Previous: W0612, Up: Messages

6.505 W0613

6.505.1 Message body

This controlling expression always makes false.

6.505.2 Content

Under construction.

6.505.3 Sample code

int i;

for (i = 0; i < 10; i++) {
    if (i > 10) { /* W0613 */
        ...snip...
    }
}

6.505.4 Related message

  • W0609 This logical expression always makes true.
  • W0610 This logical expression always makes false.
  • W0611 The value of this 'for' control expression is always true.
  • W0612 The value of this 'if' conditional expression is always true.
  • W0614 The value of this "do-while" control expression is always false. The body of repetition statement executed only once.

6.505.5 Since

1.0.0


Next: , Previous: W0613, Up: Messages

6.506 W0614

6.506.1 Message body

The value of this \"do-while\" control expression is always false. The body of repetition statement executed only once.

6.506.2 Content

Under construction.

6.506.3 Sample code

void func(int a)
{
    if (a == 0) {
        do {
        } while (a > 0); /* W0614 */
    }
}

6.506.4 Related message

  • W0609 This logical expression always makes true.
  • W0610 This logical expression always makes false.
  • W0611 The value of this 'for' control expression is always true.
  • W0612 The value of this 'if' conditional expression is always true.
  • W0613 This controlling expression always makes false.

6.506.5 Since

1.0.0


Next: , Previous: W0614, Up: Messages

6.507 W0622

6.507.1 Message body

A function is declared in the block scope.

6.507.2 Content

Under construction.

6.507.3 Sample code

int func1(void)
{
    extern int func2(void); /* W0622 */
}

6.507.4 Related message

None.

6.507.5 Since

1.0.0


Next: , Previous: W0622, Up: Messages

6.508 W0623

6.508.1 Message body

An external coupling object is declared in the block scope.

6.508.2 Content

Under construction.

6.508.3 Sample code

int func(void)
{
    extern int i; /* W0623 */
}

6.508.4 Related message

None.

6.508.5 Since

1.0.0


Next: , Previous: W0623, Up: Messages

6.509 W0624

6.509.1 Message body

There is '#define' or '#undef' in a block.

6.509.2 Content

Under construction.

6.509.3 Sample code

#define MACRO 0

int foo(void)
{
#if defined(MACRO)
#undef MACRO    /* W0624 */
#define MACRO 1 /* W0624 */
#endif

    return MACRO;
}

6.509.4 Related message

None.

6.509.5 Since

1.0.0


Next: , Previous: W0624, Up: Messages

6.510 W0625

6.510.1 Message body

`%s' is using in the declaration or definition of external coupling. But its 'typedef' doesn't declare in the header file.

6.510.2 Content

Under construction.

6.510.3 Sample code

typedef int *INT_PTR; /* W0625 */

extern INT_PTR func(void);

INT_PTR func(void)
{
    return 0;
}

6.510.4 Related message

None.

6.510.5 Since

1.8.0


Next: , Previous: W0625, Up: Messages

6.511 W0626

6.511.1 Message body

A wide character or wide string literal is used.

6.511.2 Content

Under construction.

6.511.3 Sample code

const wchar_t a = L'ã‚'; /* W0626 */

6.511.4 Related message

None.

6.511.5 Since

1.0.0


Next: , Previous: W0626, Up: Messages

6.512 W0627

6.512.1 Message body

There is a dead letter (only `;') in the following other code.

6.512.2 Content

Under construction.

6.512.3 Sample code

if (0); /* W0627 */
{
    ...snip...
}

6.512.4 Related message

None.

6.512.5 Since

1.0.0


Next: , Previous: W0627, Up: Messages

6.513 W0628

6.513.1 Message body

A function `%s' is defined, but this is not used in this project.

6.513.2 Content

Under construction.

6.513.3 Sample code

test1.c

int func1(void)
{
    return 0;
}

void func2(void) /* W0628 */
{
    ...snip...
}

test2.c

extern int func1(void);

int main(void)
{
    return func1();
}

6.513.4 Related message

  • W0629 `%s()' has internal-linkage, but it is never called in this translation-unit.

6.513.5 Since

1.0.0


Next: , Previous: W0628, Up: Messages

6.514 W0629

6.514.1 Message body

`%s()' has internal-linkage, but it is never called in this translation-unit.

6.514.2 Content

Under construction.

6.514.3 Sample code

static int func1(void) /* W0629 */
{
    return 1;
}

int func2(void)
{
    return 1;
}

6.514.4 Related message

  • W0628 A function `%s' is defined, but this is not used in this project.

6.514.5 Since

1.0.0


Next: , Previous: W0629, Up: Messages

6.515 W0632

6.515.1 Message body

Using ' or " characters in `#include <%s>' directive makes undefined behavior.

6.515.2 Content

Under construction.

6.515.3 Sample code

#include <NG'_header.h> /* W0632 */

6.515.4 Related message

  • W0633 Using ' character in `#include "%s"' directive makes undefined behavior.
  • W0634 `\' is used in `#include' line. `/' is recommended for the path delimiter.

6.515.5 Since

1.8.0


Next: , Previous: W0632, Up: Messages

6.516 W0633

6.516.1 Message body

Using ' character in `#include "%s"' directive makes undefined behavior.

6.516.2 Content

Under construction.

6.516.3 Sample code

#include "NG'_header.h" /* W0633 */

6.516.4 Related message

  • W0632 Using ' or " characters in `#include <%s>' directive makes undefined behavior.
  • W0634 `\' is used in `#include' line. `/' is recommended for the path delimiter.

6.516.5 Since

1.8.0


Next: , Previous: W0633, Up: Messages

6.517 W0634

6.517.1 Message body

`\' is used in `#include' line. `/' is recommended for the path delimiter.

6.517.2 Content

Under construction.

6.517.3 Sample code

#include "..\ng\header.h" /* W0634 */
#include "..\\ng\\header.h" /* W0634 */

6.517.4 Related message

  • W0632 Using ' or " characters in `#include <%s>' directive makes undefined behavior.
  • W0633 Using ' character in `#include "%s"' directive makes undefined behavior.

6.517.5 Since

1.8.0


Next: , Previous: W0634, Up: Messages

6.518 W0635

6.518.1 Message body

The type doesn't match with %sth conversion specifier and the corresponding actual argument.

6.518.2 Content

Under construction.

6.518.3 Sample code

void func(int a)
{
    printf("Apple %f\n", a); /* W0635 */
}

6.518.4 Related message

  • W0636 An actual argument doesn't exist correspond to %sth conversion specifier.
  • W0637 There is more actual argument than the number of conversion specifier in function call.
  • W0638 This function call requiring at least one actual argument.
  • W0639 %sth conversion specifier doesn't match with corresponding type of actual argument.
  • W0640 The actual argument of scanf function have to pass the object pointer to store the data.

6.518.5 Since

1.0.0


Next: , Previous: W0635, Up: Messages

6.519 W0636

6.519.1 Message body

An actual argument doesn't exist correspond to %sth conversion specifier.

6.519.2 Content

Under construction.

6.519.3 Sample code

void func(int a, int b, int c)
{
    printf("Banana %d, %d, %d\n", a, b); /* W0636 */
}

6.519.4 Related message

  • W0635 The type doesn't match with %sth conversion specifier and the corresponding actual argument.
  • W0637 There is more actual argument than the number of conversion specifier in function call.
  • W0638 This function call requiring at least one actual argument.
  • W0639 %sth conversion specifier doesn't match with corresponding type of actual argument.
  • W0640 The actual argument of scanf function have to pass the object pointer to store the data.

6.519.5 Since

1.0.0


Next: , Previous: W0636, Up: Messages

6.520 W0637

6.520.1 Message body

There is more actual argument than the number of conversion specifier in function call.

6.520.2 Content

Under construction.

6.520.3 Sample code

void func(int a, int b)
{
    printf("Orange %d\n", a, b); /* W0637 */
}

6.520.4 Related message

  • W0635 The type doesn't match with %sth conversion specifier and the corresponding actual argument.
  • W0636 An actual argument doesn't exist correspond to %sth conversion specifier.
  • W0638 This function call requiring at least one actual argument.
  • W0639 %sth conversion specifier doesn't match with corresponding type of actual argument.
  • W0640 The actual argument of scanf function have to pass the object pointer to store the data.

6.520.5 Since

1.0.0


Next: , Previous: W0637, Up: Messages

6.521 W0638

6.521.1 Message body

This function call requiring at least one actual argument.

6.521.2 Content

Under construction.

6.521.3 Sample code

printf(); /* W0638 */

6.521.4 Related message

  • W0635 The type doesn't match with %sth conversion specifier and the corresponding actual argument.
  • W0636 An actual argument doesn't exist correspond to %sth conversion specifier.
  • W0637 There is more actual argument than the number of conversion specifier in function call.
  • W0639 %sth conversion specifier doesn't match with corresponding type of actual argument.
  • W0640 The actual argument of scanf function have to pass the object pointer to store the data.

6.521.5 Since

1.0.0


Next: , Previous: W0638, Up: Messages

6.522 W0639

6.522.1 Message body

%sth conversion specifier doesn't match with corresponding type of actual argument.

6.522.2 Content

Under construction.

6.522.3 Sample code

int a;

scanf("%f",  &a); /* W0639 */

6.522.4 Related message

  • W0635 The type doesn't match with %sth conversion specifier and the corresponding actual argument.
  • W0636 An actual argument doesn't exist correspond to %sth conversion specifier.
  • W0637 There is more actual argument than the number of conversion specifier in function call.
  • W0638 This function call requiring at least one actual argument.
  • W0640 The actual argument of scanf function have to pass the object pointer to store the data.

6.522.5 Since

1.0.0


Next: , Previous: W0639, Up: Messages

6.523 W0640

6.523.1 Message body

%sth conversion specifier doesn't match with corresponding type of actual argument.

6.523.2 Content

Under construction.

6.523.3 Sample code

int a;

fscanf(stdin, "%d", a); /* W0640 */

6.523.4 Related message

  • W0635 The type doesn't match with %sth conversion specifier and the corresponding actual argument.
  • W0636 An actual argument doesn't exist correspond to %sth conversion specifier.
  • W0637 There is more actual argument than the number of conversion specifier in function call.
  • W0638 This function call requiring at least one actual argument.
  • W0639 %sth conversion specifier doesn't match with corresponding type of actual argument.

6.523.5 Since

1.0.0


Next: , Previous: W0640, Up: Messages

6.524 W0641

6.524.1 Message body

Floating-point number type cast to pointer to object and vice versa.

6.524.2 Content

Under construction.

6.524.3 Sample code

int *foo(const float f)
{
    return (int *) f; /* W0641 */
}

6.524.4 Related message

None.

6.524.5 Since

1.18.0


Next: , Previous: W0641, Up: Messages

6.525 W0642

6.525.1 Message body

Address derivation from the object declared as `register' is prohibited.

6.525.2 Content

Under construction.

6.525.3 Sample code

void func(void)
{
    register int a[3];

    int *p1 = a; /* W0642 */
    int *p2 = &a[1]; /* W0642 */
}

6.525.4 Related message

  • W0643 This string literal constituted by a macro is illegal form unenclosed by `"'. `#'operator may apply to actual argument which has '\' at the end.
  • W0644 A value in void statement is going to use. 'void' statement doesn't have a value.
  • W0645 'void' type cannot use in the type of formal argument.
  • W0646 A normal string literal and a wide string literal are contiguous.

6.525.5 Since

1.8.0


Next: , Previous: W0642, Up: Messages

6.526 W0643

6.526.1 Message body

This string literal constituted by a macro is illegal form unenclosed by `\"'. `#'operator may apply to actual argument which has '\' at the end.

6.526.2 Content

Under construction.

6.526.3 Sample code

#define MACRO(x) #x
const char *str = MACRO(foo\); /* W0643 */

6.526.4 Related message

  • W0642 Address derivation from the object declared as `register' is prohibited.
  • W0644 A value in void statement is going to use. 'void' statement doesn't have a value.
  • W0645 'void' type cannot use in the type of formal argument.
  • W0646 A normal string literal and a wide string literal are contiguous.

6.526.5 Since

1.16.0


Next: , Previous: W0643, Up: Messages

6.527 W0644

6.527.1 Message body

A value in void statement is going to use. 'void' statement doesn't have a value.

6.527.2 Content

Under construction.

6.527.3 Sample code

extern void foo(void);

int bar(void)
{
    return (int) foo(); /* W0644 */
}

6.527.4 Related message

  • W0642 Address derivation from the object declared as `register' is prohibited.
  • W0643 This string literal constituted by a macro is illegal form unenclosed by `"'. `#'operator may apply to actual argument which has '\' at the end.
  • W0645 'void' type cannot use in the type of formal argument.
  • W0646 A normal string literal and a wide string literal are contiguous.

6.527.5 Since

1.18.0


Next: , Previous: W0644, Up: Messages

6.528 W0645

6.528.1 Message body

`void' cannot be used as the parameter type.

6.528.2 Content

Under construction.

6.528.3 Sample code

extern void func(a) /* W0645 */
void a;
{
}

6.528.4 Related message

  • W0642 Address derivation from the object declared as `register' is prohibited.
  • W0643 This string literal constituted by a macro is illegal form unenclosed by `"'. `#'operator may apply to actual argument which has '\' at the end.
  • W0644 A value in void statement is going to use. 'void' statement doesn't have a value.
  • W0646 A normal string literal and a wide string literal are contiguous.

6.528.5 Since

1.14.0


Next: , Previous: W0645, Up: Messages

6.529 W0646

6.529.1 Message body

A normal string literal and a wide string literal are contiguous.

6.529.2 Content

Under construction.

6.529.3 Sample code

static const char *str = "foo" L"bar"; /* W0646 */

6.529.4 Related message

  • W0642 Address derivation from the object declared as `register' is prohibited.
  • W0643 This string literal constituted by a macro is illegal form unenclosed by `"'. `#'operator may apply to actual argument which has '\' at the end.
  • W0644 A value in void statement is going to use. 'void' statement doesn't have a value.
  • W0645 'void' type cannot use in the type of formal argument.

6.529.5 Since

1.16.0


Next: , Previous: W0646, Up: Messages

6.530 W0649

6.530.1 Message body

A right operand value of shift operand is negative constant value. This result is undefined.

6.530.2 Content

Under construction.

6.530.3 Sample code

int foo(int i)
{
    return i << -1; /* W0649 */
}

6.530.4 Related message

  • W0650 A value of the right operand in a shift expression is bigger than the bit size of the left operand type `%s'. This result is undefined.

6.530.5 Since

1.18.0


Next: , Previous: W0649, Up: Messages

6.531 W0650

6.531.1 Message body

A value of the right operand in a shift expression is bigger than the bit size of the left operand type `%s'. This result is undefined.

6.531.2 Content

Under construction.

6.531.3 Sample code

unsigned int foo(unsigned int i)
{
    return i << 32; /* W0650 */
}

6.531.4 Related message

  • W0649 A right operand value of shift operand is negative constant value. This result is undefined.

6.531.5 Since

1.18.0


Next: , Previous: W0650, Up: Messages

6.532 W0653

6.532.1 Message body

The initial value of an array, structure or union is not enclosed by `{}'.

6.532.2 Content

Under construction.

6.532.3 Sample code

struct ST {
    int i;
};

int a[3] = 0; /* W0653 */
struct ST s = 0; /* W0653 */

6.532.4 Related message

  • W0654 The initializer of structure or union must the value of the same structure type or union type.

6.532.5 Since

1.0.0


Next: , Previous: W0653, Up: Messages

6.533 W0654

6.533.1 Message body

The initializer of structure or union must the value of the same structure type or union type.

6.533.2 Content

Under construction.

6.533.3 Sample code

struct A {
    int i;
};

struct B {
    int j;
};

struct A a = { 0 };
struct B b = a; /* W0654 */

6.533.4 Related message

  • W0653 The initial value of an array, structure or union is not enclosed by `{}'.

6.533.5 Since

1.0.0


Next: , Previous: W0654, Up: Messages

6.534 W0655

6.534.1 Message body

This is bit field statement which the size is undefined.

6.534.2 Content

Under construction.

6.534.3 Sample code

struct ST {
    unsigned int a:2;
    unsigned int b:4;
};

void func(void)
{
    struct ST s = { 0 };
    int i = sizeof(s.a); /* W0655 */
}

6.534.4 Related message

  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.534.5 Since

1.0.0


Next: , Previous: W0655, Up: Messages

6.535 W0656

6.535.1 Message body

%sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.

6.535.2 Content

Under construction.

6.535.3 Sample code

void func(int count)
{
    printf("There are %Ld apples\n", count); /* W0656 */
}

6.535.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.535.5 Since

1.0.0


Next: , Previous: W0656, Up: Messages

6.536 W0657

6.536.1 Message body

An invalid flag is used in %sth conversion specifier of `i' or 'd'.

6.536.2 Content

Under construction.

6.536.3 Sample code

void func(int count)
{
    printf("There are %Ld apples\n", count); /* W0657 */
}

6.536.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.536.5 Since

1.0.0


Next: , Previous: W0657, Up: Messages

6.537 W0658

6.537.1 Message body

An invalid flag is used in %sth conversion specifier of `o'.

6.537.2 Content

Under construction.

6.537.3 Sample code

void func(unsigned int count)
{
    printf("There are %Lo apples\n", count); /* W0658 */
}

6.537.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.537.5 Since

1.0.0


Next: , Previous: W0658, Up: Messages

6.538 W0659

6.538.1 Message body

An invalid flag is used in %sth conversion specifier of `u'.

6.538.2 Content

Under construction.

6.538.3 Sample code

void func(unsigned int count)
{
    printf("There are %Lu apples\n", count); /* W0659 */
}

6.538.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.538.5 Since

1.0.0


Next: , Previous: W0659, Up: Messages

6.539 W0660

6.539.1 Message body

An invalid flag is used in %sth conversion specifier of `x'.

6.539.2 Content

Under construction.

6.539.3 Sample code

void func(unsigned int count)
{
    printf("There are %Lx apples\n", count); /* W0660 */
}

6.539.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.539.5 Since

1.0.0


Next: , Previous: W0660, Up: Messages

6.540 W0661

6.540.1 Message body

An invalid flag is used in %sth conversion specifier of `X'.

6.540.2 Content

Under construction.

6.540.3 Sample code

void func(unsigned int count)
{
    printf("There are %LX apples\n", count); /* W0661 */
}

6.540.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.540.5 Since

1.0.0


Next: , Previous: W0661, Up: Messages

6.541 W0662

6.541.1 Message body

An invalid flag is used in %sth conversion specifier of `f'.

6.541.2 Content

Under construction.

6.541.3 Sample code

void func(double count)
{
    printf("There are %lf apples\n", count); /* W0662 */
}

6.541.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.541.5 Since

1.0.0


Next: , Previous: W0662, Up: Messages

6.542 W0663

6.542.1 Message body

An invalid flag is used in %sth conversion specifier of `e'.

6.542.2 Content

Under construction.

6.542.3 Sample code

void func(double count)
{
    printf("There are %le apples\n", count); /* W0663 */
}

6.542.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.542.5 Since

1.0.0


Next: , Previous: W0663, Up: Messages

6.543 W0664

6.543.1 Message body

An invalid flag is used in %sth conversion specifier of `E'.

6.543.2 Content

Under construction.

6.543.3 Sample code

void func(double count)
{
    printf("There are %lE apples\n", count); /* W0664 */
}

6.543.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.543.5 Since

1.0.0


Next: , Previous: W0664, Up: Messages

6.544 W0665

6.544.1 Message body

An invalid flag is used in %sth conversion specifier of `g'.

6.544.2 Content

Under construction.

6.544.3 Sample code

void func(double count)
{
    printf("There are %lg apples\n", count); /* W0665 */
}

6.544.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.544.5 Since

1.0.0


Next: , Previous: W0665, Up: Messages

6.545 W0666

6.545.1 Message body

An invalid flag is used in %sth conversion specifier of `G'.

6.545.2 Content

Under construction.

6.545.3 Sample code

void func(double count)
{
    printf("There are %lG apples\n", count); /* W0666 */
}

6.545.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.545.5 Since

1.0.0


Next: , Previous: W0666, Up: Messages

6.546 W0667

6.546.1 Message body

An invalid flag is used in %sth conversion specifier of `c'.

6.546.2 Content

Under construction.

6.546.3 Sample code

void func(char count)
{
    printf("There are %hc apples\n", count); /* W0667 */
}

6.546.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.546.5 Since

1.0.0


Next: , Previous: W0667, Up: Messages

6.547 W0668

6.547.1 Message body

An invalid flag is used in %sth conversion specifier of `%%'.

6.547.2 Content

Under construction.

6.547.3 Sample code

void func(double percent)
{
    printf("There is %f%l% apple juice\n", percent); /* W0668 */
}

6.547.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.547.5 Since

1.0.0


Next: , Previous: W0668, Up: Messages

6.548 W0669

6.548.1 Message body

An invalid flag is used in %sth conversion specifier of `s'.

6.548.2 Content

Under construction.

6.548.3 Sample code

void func(char *s)
{
    printf("There are %hs apples\n", s); /* W0669 */
}

6.548.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.548.5 Since

1.0.0


Next: , Previous: W0669, Up: Messages

6.549 W0670

6.549.1 Message body

An invalid flag is used in %sth conversion specifier of `n'.

6.549.2 Content

Under construction.

6.549.3 Sample code

void func(void)
{
    int n;

    printf("There are %Ln apples\n", &n); /* W0670 */
}

6.549.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.549.5 Since

1.0.0


Next: , Previous: W0670, Up: Messages

6.550 W0671

6.550.1 Message body

An invalid flag is used in %sth conversion specifier of `p'.

6.550.2 Content

Under construction.

6.550.3 Sample code

void func(char *p)
{
    printf("p points to %lp\n", p); /* W0671 */
}

6.550.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.550.5 Since

1.0.0


Next: , Previous: W0671, Up: Messages

6.551 W0672

6.551.1 Message body

An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.

6.551.2 Content

Under construction.

6.551.3 Sample code

void func(void)
{
    int a;

    printf("%0", &a); /* W0672 */
}

6.551.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.551.5 Since

1.0.0


Next: , Previous: W0672, Up: Messages

6.552 W0673

6.552.1 Message body

%sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.

6.552.2 Content

Under construction.

6.552.3 Sample code

void func(void)
{
    int a;

    scanf("%y", &a); /* W0673 */
}

6.552.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.552.5 Since

1.0.0


Next: , Previous: W0673, Up: Messages

6.553 W0674

6.553.1 Message body

An invalid flag is used in %sth conversion specifier of `d/i/n'.

6.553.2 Content

Under construction.

6.553.3 Sample code

void func(void)
{
    int a;

    scanf("%Ld", &a); /* W0674 */
}

6.553.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.553.5 Since

1.0.0


Next: , Previous: W0674, Up: Messages

6.554 W0675

6.554.1 Message body

An invalid flag is used in %sth conversion specifier of `o'.

6.554.2 Content

Under construction.

6.554.3 Sample code

void func(void)
{
    int a;

    scanf("%Lo", &a); /* W0675 */
}

6.554.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.554.5 Since

1.0.0


Next: , Previous: W0675, Up: Messages

6.555 W0676

6.555.1 Message body

An invalid flag is used in %sth conversion specifier of `u'.

6.555.2 Content

Under construction.

6.555.3 Sample code

void func(void)
{
    int a;

    scanf("%Lu", &a); /* W0676 */
}

6.555.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.555.5 Since

1.0.0


Next: , Previous: W0676, Up: Messages

6.556 W0677

6.556.1 Message body

An invalid flag is used in %sth conversion specifier of `x/X.'

6.556.2 Content

Under construction.

6.556.3 Sample code

void func(void)
{
    int a;

    scanf("%Lx", &a); /* W0677 */
}

6.556.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.556.5 Since

1.0.0


Next: , Previous: W0677, Up: Messages

6.557 W0678

6.557.1 Message body

An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.

6.557.2 Content

Under construction.

6.557.3 Sample code

void func(void)
{
    double a;

    scanf("%lle", &a); /* W0678 */
}

6.557.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.557.5 Since

1.0.0


Next: , Previous: W0678, Up: Messages

6.558 W0679

6.558.1 Message body

An invalid flag is used in %sth conversion specifier of `s'.

6.558.2 Content

Under construction.

6.558.3 Sample code

void func(void)
{
    char a[256];

    scanf("%lls", a); /* W0679 */
}

6.558.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.558.5 Since

1.0.0


Next: , Previous: W0679, Up: Messages

6.559 W0680

6.559.1 Message body

An invalid flag is used in %sth conversion specifier of `p'.

6.559.2 Content

Under construction.

6.559.3 Sample code

void func(void)
{
    void *a;

    scanf("%lp", &a); /* W0680 */
}

6.559.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.559.5 Since

1.0.0


Next: , Previous: W0680, Up: Messages

6.560 W0681

6.560.1 Message body

An invalid flag is used in %sth conversion specifier of `%%'.

6.560.2 Content

Under construction.

6.560.3 Sample code

void func(void)
{
    int a;

    scanf("%d%l%", &a); /* W0681 */
}

6.560.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.560.5 Since

1.0.0


Next: , Previous: W0681, Up: Messages

6.561 W0682

6.561.1 Message body

An invalid flag is used in %sth conversion specifier of `['.

6.561.2 Content

Under construction.

6.561.3 Sample code

void func(void)
{
    char buf[256];

    scanf("%L[0-9]", buf); /* W0682 */
}

6.561.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.561.5 Since

1.0.0


Next: , Previous: W0682, Up: Messages

6.562 W0683

6.562.1 Message body

An invalid flag is used in %sth conversion specifier of `c'.

6.562.2 Content

Under construction.

6.562.3 Sample code

void func(void)
{
    char a;

    scanf("%Lc", &a); /* W0683 */
}

6.562.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.562.5 Since

1.0.0


Next: , Previous: W0683, Up: Messages

6.563 W0684

6.563.1 Message body

An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.

6.563.2 Content

Under construction.

6.563.3 Sample code

void func(void)
{
    long a;

    scanf("%l", &a); /* W0684 */
}

6.563.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.563.5 Since

1.0.0


Next: , Previous: W0684, Up: Messages

6.564 W0685

6.564.1 Message body

A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.

6.564.2 Content

Under construction.

6.564.3 Sample code

char c;
scanf("%[z-a]", &c); /* W0685 */

6.564.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0686 The same characters are described in scanset (characters enclosed by `[]').

6.564.5 Since

1.6.0


Next: , Previous: W0685, Up: Messages

6.565 W0686

6.565.1 Message body

The same characters are described in scanset (characters enclosed by `[]').

6.565.2 Content

Under construction.

6.565.3 Sample code

char c;
scanf("%[abcda]", &c); /* W0686 */

6.565.4 Related message

  • W0655 This is bit field statement which the size is undefined.
  • W0656 %sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards.
  • W0657 An invalid flag is used in %sth conversion specifier of `i' or 'd'.
  • W0658 An invalid flag is used in %sth conversion specifier of `o'.
  • W0659 An invalid flag is used in %sth conversion specifier of `u'.
  • W0660 An invalid flag is used in %sth conversion specifier of `x'.
  • W0661 An invalid flag is used in %sth conversion specifier of `X'.
  • W0662 An invalid flag is used in %sth conversion specifier of `f'.
  • W0663 An invalid flag is used in %sth conversion specifier of `e'.
  • W0664 An invalid flag is used in %sth conversion specifier of `E'.
  • W0665 An invalid flag is used in %sth conversion specifier of `g'.
  • W0666 An invalid flag is used in %sth conversion specifier of `G'.
  • W0667 An invalid flag is used in %sth conversion specifier of `c'.
  • W0668 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0669 An invalid flag is used in %sth conversion specifier of `s'.
  • W0670 An invalid flag is used in %sth conversion specifier of `n'.
  • W0671 An invalid flag is used in %sth conversion specifier of `p'.
  • W0672 An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf.
  • W0673 %sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards.
  • W0674 An invalid flag is used in %sth conversion specifier of `d/i/n'.
  • W0675 An invalid flag is used in %sth conversion specifier of `o'.
  • W0676 An invalid flag is used in %sth conversion specifier of `u'.
  • W0677 An invalid flag is used in %sth conversion specifier of `x/X'.
  • W0678 An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'.
  • W0679 An invalid flag is used in %sth conversion specifier of `s'.
  • W0680 An invalid flag is used in %sth conversion specifier of `p'.
  • W0681 An invalid flag is used in %sth conversion specifier of `%%'.
  • W0682 An invalid flag is used in %sth conversion specifier of `['.
  • W0683 An invalid flag is used in %sth conversion specifier of `c'.
  • W0684 An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf.
  • W0685 A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.

6.565.5 Since

1.6.0


Next: , Previous: W0686, Up: Messages

6.566 W0687

6.566.1 Message body

#undef is using to delete #defined operator.

6.566.2 Content

Under construction.

6.566.3 Sample code

#undef defined /* W0687 */

6.566.4 Related message

  • W0688 There is no line number in 1 to 32767 ranges after #line directive.
  • W0689 #line directive syntax doesn't match `#line integer constant \"string\"'.
  • W0690 No line number after #line directive.
  • W0691 The result of `##' operator is not valid preprocessing token.

6.566.5 Since

1.4.0


Next: , Previous: W0687, Up: Messages

6.567 W0688

6.567.1 Message body

There is no line number in 1 to 32767 ranges after #line directive.

6.567.2 Content

Under construction.

6.567.3 Sample code

#line 35000 "test.c" /* W0688 */

6.567.4 Related message

  • W0687 #undef is using to delete #defined operator.
  • W0689 #line directive syntax doesn't match `#line integer constant \"string\"'.
  • W0690 No line number after #line directive.
  • W0691 The result of `##' operator is not valid preprocessing token.

6.567.5 Since

1.2.0


Next: , Previous: W0688, Up: Messages

6.568 W0689

6.568.1 Message body

#line directive syntax doesn't match `#line integer constant \"string\"'.

6.568.2 Content

Under construction.

6.568.3 Sample code

#line 35 * 100 /* W0689 */
#line 35 * 100 "test.c" /* W0689 */
#line 35 L"ã‚ã„ã†.c" /* W0689 */
#line __FILE__ 35 /* W0689 */

6.568.4 Related message

  • W0687 #undef is using to delete #defined operator.
  • W0688 There is no line number in 1 to 32767 ranges after #line directive.
  • W0690 No line number after #line directive.
  • W0691 The result of `##' operator is not valid preprocessing token.

6.568.5 Since

1.2.0


Next: , Previous: W0689, Up: Messages

6.569 W0690

6.569.1 Message body

No line number after #line directive.

6.569.2 Content

Under construction.

6.569.3 Sample code

#line LINE1000 /* W0690 */
#line __FILE__ 35 /* W0690 */

6.569.4 Related message

  • W0687 #undef is using to delete #defined operator.
  • W0688 There is no line number in 1 to 32767 ranges after #line directive.
  • W0689 #line directive syntax doesn't match `#line integer constant \"string\"'.
  • W0691 The result of `##' operator is not valid preprocessing token.

6.569.5 Since

1.2.0


Next: , Previous: W0690, Up: Messages

6.570 W0691

6.570.1 Message body

The result of `##' operator is not valid preprocessing token.

6.570.2 Content

Under construction.

6.570.3 Sample code

#define MACRO(a, b) a ## b

double d = (double) MACRO(-, 123); /* W0691 */

6.570.4 Related message

  • W0687 #undef is using to delete #defined operator.
  • W0688 There is no line number in 1 to 32767 ranges after #line directive.
  • W0689 #line directive syntax doesn't match `#line integer constant \"string\"'.
  • W0690 No line number after #line directive.

6.570.5 Since

1.16.0


Next: , Previous: W0691, Up: Messages

6.571 W0692

6.571.1 Message body

A function-like macro `%s' doesn't given an actual argument.

6.571.2 Content

Under construction.

6.571.3 Sample code

#define MACRO(a) #a

const char *s = (char *) MACRO(); /* W0692 */

6.571.4 Related message

  • W0693 A function-like macro is called by actual argument which its definition is smaller.

6.571.5 Since

1.16.0


Next: , Previous: W0692, Up: Messages

6.572 W0693

6.572.1 Message body

A function-like macro is called by actual argument which its definition is smaller.

6.572.2 Content

This message will be supported after AdLint 2.0.0

Under construction.

6.572.3 Sample code

/* will be added */

6.572.4 Related message

  • W0692 A function-like macro `%s' doesn't given an actual argument.

6.572.5 Since

After 2.0.0 (planned)


Next: , Previous: W0693, Up: Messages

6.573 W0694

6.573.1 Message body

'assert' macro is inhibited to call the function named `assert'. This result is undefined.

6.573.2 Content

Under construction.

6.573.3 Sample code

#undef assert
extern void assert(int);

void foo(void)
{
    assert("should not be reached" == ""); /* W0694 */
}

6.573.4 Related message

None.

6.573.5 Since

1.16.0


Next: , Previous: W0694, Up: Messages

6.574 W0695

6.574.1 Message body

If #undef the 'assert' macro, and enable to call its name function, the result is undefined.

6.574.2 Content

Under construction.

6.574.3 Sample code

#undef assert /* W0695 */
extern void assert(int a);

6.574.4 Related message

None.

6.574.5 Since

1.4.0


Next: , Previous: W0695, Up: Messages

6.575 W0696

6.575.1 Message body

This macro using in `#if...' is undefined.

6.575.2 Content

Under construction.

6.575.3 Sample code

#define MACRO (1)

#if MACRO == 1
    ...snip...
#endif

#undef MACRO

#if MACRO == 2 /* W0696 */
    ...snip...
#endif

6.575.4 Related message

None.

6.575.5 Since

1.0.0


Next: , Previous: W0696, Up: Messages

6.576 W0697

6.576.1 Message body

There is a path with exits with an implicit `return;' statement in a function `%s' which has a return value.

6.576.2 Content

Under construction.

6.576.3 Sample code

int func(int value) /* W0697 */
{
    if (value == 0) {
        return 0;
    }
    /* No return statement at the end of this function. */
}

6.576.4 Related message

  • W0698 A `return;' statement is found in a function `%s' which has a return value.
  • W0699 The return value of function `%s()' is unspecified. The return value is implicitly int. There is no expression to set the value to 'return' statement.
  • W0700 The return value of function `%s()' is unspecified. The return value is implicitly int. There is no 'return' statement to return value.

6.576.5 Since

1.14.0


Next: , Previous: W0697, Up: Messages

6.577 W0698

6.577.1 Message body

A `return;' statement is found in a function `%s' which has a return value.

6.577.2 Content

Under construction.

6.577.3 Sample code

int func(void)
{
    return; /* W0698 */
}

6.577.4 Related message

  • W0698 A `return;' statement is found in a function `%s' which has a return value.
  • W0699 The return value of function `%s()' is unspecified. The return value is implicitly int. There is no expression to set the value to 'return' statement.
  • W0700 The return value of function `%s()' is unspecified. The return value is implicitly int. There is no 'return' statement to return value.

6.577.5 Since

1.4.0


Next: , Previous: W0698, Up: Messages

6.578 W0699

6.578.1 Message body

The return value of function `%s()' is unspecified. The return value is implicitly int. There is no expression to set the value to 'return' statement.

6.578.2 Content

Under construction.

6.578.3 Sample code

extern func(void)
{
    return; /* W0699 */
}

6.578.4 Related message

  • W0697 There is a path with exits with an implicit `return;' statement in a function `%s' which has a return value.
  • W0698 A `return;' statement is found in a function `%s' which has a return value.
  • W0700 The return value of function `%s()' is unspecified. The return value is implicitly int. There is no 'return' statement to return value.

6.578.5 Since

1.4.0


Next: , Previous: W0699, Up: Messages

6.579 W0700

6.579.1 Message body

The return value of function `%s()' is unspecified. The return value is implicitly int. There is no 'return' statement to return value.

6.579.2 Content

Under construction.

6.579.3 Sample code

extern func(void) /* W0700 */
{
}

6.579.4 Related message

  • W0697 There is a path with exits with an implicit `return;' statement in a function `%s' which has a return value.
  • W0698 A `return;' statement is found in a function `%s' which has a return value.
  • W0699 The return value of function `%s()' is unspecified. The return value is implicitly int. There is no expression to set the value to 'return' statement.

6.579.5 Since

1.14.0


Next: , Previous: W0700, Up: Messages

6.580 W0703

6.580.1 Message body

The tag `%s' hides the declaration of same identifier which has wider scope.

6.580.2 Content

Under construction.

6.580.3 Sample code

union FOO {
    ...snip...
};

void func(void)
{
    struct FOO { /* W0703 */
        ...snip...
    };
}

6.580.4 Related message

  • W0704 This `%s' declaration hides the declaration of same identifier which has wider scope.

6.580.5 Since

1.0.0


Next: , Previous: W0703, Up: Messages

6.581 W0704

6.581.1 Message body

This `%s' declaration hides the declaration of same identifier which has wider scope.

6.581.2 Content

Under construction.

6.581.3 Sample code

int a;

void func(void)
{
    double a; /* W0704 */
}

6.581.4 Related message

  • W0703 The tag `%s' hides the declaration of same identifier which has wider scope.

6.581.5 Since

1.0.0


Next: , Previous: W0704, Up: Messages

6.582 W0705

6.582.1 Message body

This non-constant array subscript may cause out-of-range access.

6.582.2 Content

Under construction.

6.582.3 Sample code

void func(unsigned int a)
{
    int buf[10];

    if (a < 10) {
        buf[a] = 0;
    }

    ...snip...

    buf[a] = 5; /* W0705 */
}

6.582.4 Related message

  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.582.5 Since

1.0.0


Next: , Previous: W0705, Up: Messages

6.583 W0707

6.583.1 Message body

This constant array subscript must cause out-of-range access.

6.583.2 Content

Under construction.

6.583.3 Sample code

extern int a[5];

int foo(void)
{
    int i = a[5]; /* W0707 */
    return i;
}

6.583.4 Related message

  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.583.5 Since

1.18.0


Next: , Previous: W0707, Up: Messages

6.584 W0708

6.584.1 Message body

A value of control variable `%s' in 'for' statement is changed in the body of repetition.

6.584.2 Content

Under construction.

6.584.3 Sample code

int i, j;

for (i = j = 0; i < 10; j++) {
    i++; /* W0708 */
}

6.584.4 Related message

None.

6.584.5 Since

1.0.0


Next: , Previous: W0708, Up: Messages

6.585 W0711

6.585.1 Message body

Right operand of relational operator is a substantive 'boolean' expression.

6.585.2 Content

Under construction.

6.585.3 Sample code

int func(int a, int b, int c, int d)
{
    return (a + b) > (c > d); /* W0711 */
}

6.585.4 Related message

  • W0712 Left operand of relational operator is a substantive 'boolean' expression.
  • W0713 Both sides of relational operator is substantive 'boolean' expressions.

6.585.5 Since

1.8.0


Next: , Previous: W0711, Up: Messages

6.586 W0712

6.586.1 Message body

Left operand of relational operator is a substantive 'boolean' expression.

6.586.2 Content

Under construction.

6.586.3 Sample code

int func(int a, int b, int c, int d)
{
    return (a > b) > (c + d); /* W0712 */
}

6.586.4 Related message

  • W0711 Right operand of relational operator is a substantive 'boolean' expression.
  • W0713 Both sides of relational operator is substantive 'boolean' expressions.

6.586.5 Since

1.8.0


Next: , Previous: W0712, Up: Messages

6.587 W0713

6.587.1 Message body

Both sides of relational operator is substantive 'boolean' expressions.

6.587.2 Content

Under construction.

6.587.3 Sample code

int func(int a, int b, int c, int d)
{
    return (a > b) > (c > d); /* W0713 */
}

6.587.4 Related message

  • W0711 Right operand of relational operator is a substantive 'boolean' expression.
  • W0712 Left operand of relational operator is a substantive 'boolean' expression.

6.587.5 Since

1.8.0


Next: , Previous: W0713, Up: Messages

6.588 W0714

6.588.1 Message body

Both sides of `&' operator is substantive 'boolean' expressions.

6.588.2 Content

Under construction.

6.588.3 Sample code

int func(int a, int b, int c, int d)
{
    return (a > b) & (c > d); /* W0714 */
}

6.588.4 Related message

  • W0715 Both sides of `|' operator is substantive 'boolean' expressions.
  • W0716 A bit operator or both sides operand of arithmetic operator is a substantive 'boolean' expression.
  • W0717 A bit operator or left side operand of arithmetic operator is a substantive 'boolean' expression.
  • W0718 A bit operator or right side operand of arithmetic operator is a substantive 'boolean' expression.

6.588.5 Since

1.8.0


Next: , Previous: W0714, Up: Messages

6.589 W0715

6.589.1 Message body

Both sides of `|' operator is substantive 'boolean' expressions.

6.589.2 Content

Under construction.

6.589.3 Sample code

int func(int a, int b, int c, int d)
{
    return (a > b) | (c > d); /* W0715 */
}

6.589.4 Related message

  • W0714 Both sides of `&' operator is substantive 'boolean' expressions.
  • W0716 A bit operator or both sides operand of arithmetic operator is a substantive 'boolean' expression.
  • W0717 A bit operator or left side operand of arithmetic operator is a substantive 'boolean' expression.
  • W0718 A bit operator or right side operand of arithmetic operator is a substantive 'boolean' expression.

6.589.5 Since

1.8.0


Next: , Previous: W0715, Up: Messages

6.590 W0716

6.590.1 Message body

A bit operator or both sides operand of arithmetic operator is a substantive 'boolean' expression.

6.590.2 Content

Under construction.

6.590.3 Sample code

int func(int a, int b, int c, int d)
{
    return (a > b) + (c > d); /* W0716 */
}

6.590.4 Related message

  • W0714 Both sides of `&' operator is substantive 'boolean' expressions.
  • W0715 Both sides of `|' operator is substantive 'boolean' expressions.
  • W0717 A bit operator or left side operand of arithmetic operator is a substantive 'boolean' expression.
  • W0718 A bit operator or right side operand of arithmetic operator is a substantive 'boolean' expression.

6.590.5 Since

1.10.0


Next: , Previous: W0716, Up: Messages

6.591 W0717

6.591.1 Message body

A bit operator or left side operand of arithmetic operator is a substantive 'boolean' expression.

6.591.2 Content

Under construction.

6.591.3 Sample code

int func(int a, int b, int c)
{
    return (a > b) + c; /* W0717 */
}

6.591.4 Related message

  • W0714 Both sides of `&' operator is substantive 'boolean' expressions.
  • W0715 Both sides of `|' operator is substantive 'boolean' expressions.
  • W0716 A bit operator or both sides operand of arithmetic operator is a substantive 'boolean' expression.
  • W0717 A bit operator or left side operand of arithmetic operator is a substantive 'boolean' expression.

6.591.5 Since

1.10.0


Next: , Previous: W0717, Up: Messages

6.592 W0718

6.592.1 Message body

A bit operator or right side operand of arithmetic operator is a substantive 'boolean' expression.

6.592.2 Content

Under construction.

6.592.3 Sample code

int func(int a, int b, int c)
{
    return a + (b > c);  /* W0718 */
}

6.592.4 Related message

  • W0714 Both sides of `&' operator is substantive 'boolean' expressions.
  • W0715 Both sides of `|' operator is substantive 'boolean' expressions.
  • W0716 A bit operator or both sides operand of arithmetic operator is a substantive 'boolean' expression.
  • W0717 A bit operator or left side operand of arithmetic operator is a substantive 'boolean' expression.

6.592.5 Since

1.10.0


Next: , Previous: W0718, Up: Messages

6.593 W0719

6.593.1 Message body

A value of the right operand in a shift expression is bigger than the bit size of the left operand underlying type `%s'.

6.593.2 Content

Under construction.

6.593.3 Sample code

int foo(char c)
{
    return c << 31; /* W0719 */
}

6.593.4 Related message

None.

6.593.5 Since

1.18.0


Next: , Previous: W0719, Up: Messages

6.594 W0720

6.594.1 Message body

The value with floating-point type doesn't fit in the range of converted type.

6.594.2 Content

Under construction.

6.594.3 Sample code

signed char sc1 = (signed char) 127.5; /* OK */
signed char sc2 = (signed char) 128.5; /* W0720 */

signed char sc3 = (signed char) -128.5; /* OK */
signed char sc4 = (signed char) -129.5; /* W0720 */

6.594.4 Related message

  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.594.5 Since

1.4.0


Next: , Previous: W0720, Up: Messages

6.595 W0721

6.595.1 Message body

This volatile integer type doesn't have enough size to keep pointer value.

6.595.2 Content

Under construction.

6.595.3 Sample code

void func(int *p)
{
    /* when short is 16 bit long and pointer is 32 bit long */
    unsigned short us = (unsigned short) p; /* W0721 */
}

6.595.4 Related message

None.

6.595.5 Since

1.4.0


Next: , Previous: W0721, Up: Messages

6.596 W0722

6.596.1 Message body

A value of signed statement is overflow.

6.596.2 Content

Under construction.

6.596.3 Sample code

int func(int a)
{
    /* when int is 32 bit long */
    if (a < 0) {
        return a + 1; /* OK */
    }
    else if (a < 2147483647) {
        return a + 1; /* OK */
    }

    return a + 1; /* W0722 */
}

6.596.4 Related message

  • W0723 A value of signed statement might be overflow.

6.596.5 Since

1.4.0


Next: , Previous: W0722, Up: Messages

6.597 W0723

6.597.1 Message body

A value of signed statement might be overflow.

6.597.2 Content

Under construction.

6.597.3 Sample code

int func(int a)
{
    /* when int is 32 bit long */
    if (a < 0) {
        return a + 1; /* OK */
    }
    else if (a < 2000000000) {
        return a + 1; /* OK */
    }

    return a + 1; /* W0723 */
}

6.597.4 Related message

  • W0722 A value of signed statement is overflow.

6.597.5 Since

1.4.0


Next: , Previous: W0723, Up: Messages

6.598 W0724

6.598.1 Message body

An unrecognized preprocessing directive is ignored by conditional include directive.

6.598.2 Content

This message will be supported after AdLint 2.0.0

Under construction.

6.598.3 Sample code

/* will be added */

6.598.4 Related message

None.

6.598.5 Since

After 2.0.0 (planned)


Next: , Previous: W0724, Up: Messages

6.599 W0726

6.599.1 Message body

A function `%s()' which return value is declared as qualified void type, `return expression;' is found.

6.599.2 Content

Under construction.

6.599.3 Sample code

const void func(int a)
{
    if (a == 0) {
        return 0; /* W0726 */
    }
}

6.599.4 Related message

None.

6.599.5 Since

1.4.0


Next: , Previous: W0726, Up: Messages

6.600 W0727

6.600.1 Message body

The value not part of the enumeration type is used.

6.600.2 Content

Under construction.

6.600.3 Sample code

enum Fruits {
    APPLE = 1,
    BANANA,
    ORANGE
};

enum Fruits fruit = 5; /* W0727 */

6.600.4 Related message

  • W0728 Other enumeration literal of enumeration type is passed to enumeration literal of formal argument as actual argument.
  • W0729 An enumeration literal of the other enumeration type is substituted for enumeration type object.
  • W0730 A function declared return value to enumeration type returned an enumeration literal of the other enumeration type.
  • W0731 The value of `%s' in 'case' label of 'switch' statement doesn't belong enumeration type of the control statement.

6.600.5 Since

1.4.0


Next: , Previous: W0727, Up: Messages

6.601 W0728

6.601.1 Message body

Other enumeration literal of enumeration type is passed to enumeration literal of formal argument as actual argument.

6.601.2 Content

Under construction.

6.601.3 Sample code

enum Color { RED, BLUE, GREEN };
enum Fruits { APPLE, BANANA, ORANGE };

extern void func1(enum Color);

void func2(void)
{
    func1(ORANGE); /* W0728 */
}

6.601.4 Related message

  • W0727 The value not part of the enumeration type is used.
  • W0729 An enumeration literal of the other enumeration type is substituted for enumeration type object.
  • W0730 A function declared return value to enumeration type returned an enumeration literal of the other enumeration type.
  • W0731 The value of `%s' in 'case' label of 'switch' statement doesn't belong enumeration type of the control statement.

6.601.5 Since

1.4.0


Next: , Previous: W0728, Up: Messages

6.602 W0729

6.602.1 Message body

An enumeration literal of the other enumeration type is substituted for enumeration type object.

6.602.2 Content

Under construction.

6.602.3 Sample code

enum Color { RED, BLUE, GREEN };
enum Fruits { APPLE, BANANA, ORANGE };

void func(void)
{
    enum Color c;

    c = ORANGE; /* W0729 */
}

6.602.4 Related message

  • W0727 The value not part of the enumeration type is used.
  • W0728 Other enumeration literal of enumeration type is passed to enumeration literal of formal argument as actual argument.
  • W0730 A function declared return value to enumeration type returned an enumeration literal of the other enumeration type.
  • W0731 The value of `%s' in 'case' label of 'switch' statement doesn't belong enumeration type of the control statement.

6.602.5 Since

1.4.0


Next: , Previous: W0729, Up: Messages

6.603 W0730

6.603.1 Message body

A function declared return value to enumeration type returned an enumeration literal of the other enumeration type.

6.603.2 Content

Under construction.

6.603.3 Sample code

enum Color { RED, BLUE, GREEN };
enum Fruits { APPLE, BANANA, ORANGE };

enum Color func(void)
{
    return ORANGE; /* W0730 */
}

6.603.4 Related message

  • W0727 The value not part of the enumeration type is used.
  • W0728 Other enumeration literal of enumeration type is passed to enumeration literal of formal argument as actual argument.
  • W0729 An enumeration literal of the other enumeration type is substituted for enumeration type object.
  • W0731 The value of `%s' in 'case' label of 'switch' statement doesn't belong enumeration type of the control statement.

6.603.5 Since

1.4.0


Next: , Previous: W0730, Up: Messages

6.604 W0731

6.604.1 Message body

The value of `%s' in 'case' label of 'switch' statement doesn't belong enumeration type of the control statement.

6.604.2 Content

Under construction.

6.604.3 Sample code

enum Color { RED, BLUE, GREEN };
enum Fruits { APPLE, BANANA, ORANGE, GRAPE };

int func(enum Color c)
{
    switch (c) {
    case RED:
        return 1;
    case GRAPE: /* W0731 */
        return 2;
    }

    return 0;
}

6.604.4 Related message

  • W0727 The value not part of the enumeration type is used.
  • W0728 Other enumeration literal of enumeration type is passed to enumeration literal of formal argument as actual argument.
  • W0729 An enumeration literal of the other enumeration type is substituted for enumeration type object.
  • W0730 A function declared return value to enumeration type returned an enumeration literal of the other enumeration type.

6.604.5 Since

1.4.0


Next: , Previous: W0731, Up: Messages

6.605 W0732

6.605.1 Message body

Both operand of `&&'operator is bit operator or arithmetic operator.

6.605.2 Content

Under construction.

6.605.3 Sample code

extern void func(unsigned int a, unsigned int b,unsigned int c, unsigned int d)
{
    int r;
    r = (a + b) && (c - d); /* W0732 */
    r = (a * b) && (c / d); /* W0732 */

    r = (a << b) && (c << d); /* W0732 */
    r = (a >> b) && (c >> d); /* W0732 */
}

6.605.4 Related message

  • W0733 Both operand of `||'operator is bit operator or arithmetic operator.
  • W0734 A left operand of logical operator is bit operator or arithmetic operator.
  • W0735 A right operand of logical operator is the expression of bit operator or arithmetic operator.

6.605.5 Since

1.12.0


Next: , Previous: W0732, Up: Messages

6.606 W0733

6.606.1 Message body

Both operand of `||'operator is bit operator or arithmetic operator.

6.606.2 Content

Under construction.

6.606.3 Sample code

extern void func(unsigned int a, unsigned int b,unsigned int c, unsigned int d)
{
    int r;
    r = (a + b) || (c - d); /* W0733 */
    r = (a * b) || (c / d); /* W0733 */

    r = (a << b) || (c << d); /* W0733 */
    r = (a >> b) || (c >> d); /* W0733 */
}

6.606.4 Related message

  • W0732 Both operand of `&&'operator is bit operator or arithmetic operator.
  • W0734 A left operand of logical operator is bit operator or arithmetic operator.
  • W0735 A right operand of logical operator is the expression of bit operator or arithmetic operator.

6.606.5 Since

1.12.0


Next: , Previous: W0733, Up: Messages

6.607 W0734

6.607.1 Message body

A left operand of logical operator is bit operator or arithmetic operator.

6.607.2 Content

Under construction.

6.607.3 Sample code

extern void func(unsigned int a, unsigned int b, unsigned int c)
{
    int r;
    r = (a + b) && c; /* W0734 */
    r = (a - b) && c; /* W0734 */

    r = (a << b) || c; /* W0734 */
    r = (a >> b) || c; /* W0734 */
}

6.607.4 Related message

  • W0732 Both operand of `&&'operator is bit operator or arithmetic operator.
  • W0733 Both operand of `||'operator is bit operator or arithmetic operator.
  • W0735 A right operand of logical operator is the expression of bit operator or arithmetic operator.

6.607.5 Since

1.12.0


Next: , Previous: W0734, Up: Messages

6.608 W0735

6.608.1 Message body

A right operand of logical operator is the expression of bit operator or arithmetic operator.

6.608.2 Content

Under construction.

6.608.3 Sample code

extern void func(unsigned int a, unsigned int b, unsigned int c)
{
    int r;
    r = a && (b + c); /* W0735 */
    r = a && (b - c); /* W0735 */

    r = a || (b >> c); /* W0735 */
    r = a || (b << c); /* W0735 */
}

6.608.4 Related message

  • W0732 Both operand of `&&'operator is bit operator or arithmetic operator.
  • W0733 Both operand of `||'operator is bit operator or arithmetic operator.
  • W0734 A left operand of logical operator is bit operator or arithmetic operator.

6.608.5 Since

1.12.0


Next: , Previous: W0735, Up: Messages

6.609 W0736

6.609.1 Message body

A static variable `%s' which declared in file scope is read and write in one function only.

6.609.2 Content

Under construction.

6.609.3 Sample code

static int a = 10; /* W0736 */

int func1(void)
{
    return 0;
}

int func2(void)
{
    return ++a;
}

6.609.4 Related message

None.

6.609.5 Since

1.0.0


Next: , Previous: W0736, Up: Messages

6.610 W0737

6.610.1 Message body

The content of `enum %s' is unknown. The enumeration tag is declared without define the content.

6.610.2 Content

Under construction.

6.610.3 Sample code

extern enum Foo foo; /* W0737 */

6.610.4 Related message

None.

6.610.5 Since

1.4.0


Next: , Previous: W0737, Up: Messages

6.611 W0738

6.611.1 Message body

An implicit type conversion from positive integer constant expression to smaller unsigned type. The value is rounded.

6.611.2 Content

Under construction.

6.611.3 Sample code

/* when char is 8 bit long */
const unsigned char uc1 = 255; /* OK */
const unsigned char uc2 = 256; /* W0738 */

/* when int is 32 bit long */
const unsigned int ui1 = 4294967295; /* OK */
const unsigned int ui2 = 4294967296; /* W0738 */

6.611.4 Related message

None.

6.611.5 Since

1.4.0


Next: , Previous: W0738, Up: Messages

6.612 W0739

6.612.1 Message body

The result of unsigned subtraction in constant expression is minus.

6.612.2 Content

Under construction.

6.612.3 Sample code

const unsigned int ui1 = 3U - 3U; /* OK */
const unsigned int ui2 = 3U - 5U; /* W0739 */

6.612.4 Related message

  • W0740 The result of unsigned addition in constant expression beyond the maximum.
  • W0741 The result of unsigned multiplication in constant expression beyond the maximum.

6.612.5 Since

1.4.0


Next: , Previous: W0739, Up: Messages

6.613 W0740

6.613.1 Message body

The result of unsigned addition in constant expression beyond the maximum.

6.613.2 Content

Under construction.

6.613.3 Sample code

/* when int is 32 bit long */
const unsigned int ui1 = 4294967294U + 1U; /* OK */
const unsigned int ui2 = 4294967295U + 1U; /* W0740 */

6.613.4 Related message

  • W0739 The result of unsigned subtraction in constant expression is minus.
  • W0741 The result of unsigned multiplication in constant expression beyond the maximum.

6.613.5 Since

1.4.0


Next: , Previous: W0740, Up: Messages

6.614 W0741

6.614.1 Message body

The result of unsigned multiplication in constant expression beyond the maximum.

6.614.2 Content

Under construction.

6.614.3 Sample code

/* when int is 32 bit long */
const unsigned int ui1 = 2000000000U * 2U; /* OK */
const unsigned int ui2 = 3000000000U * 2U; /* W0741 */

6.614.4 Related message

  • W0739 The result of unsigned subtraction in constant expression is minus.
  • W0740 The result of unsigned addition in constant expression beyond the maximum.

6.614.5 Since

1.4.0


Next: , Previous: W0741, Up: Messages

6.615 W0742

6.615.1 Message body

A negative integer constant expression converted to unsigned type.

6.615.2 Content

Under construction.

6.615.3 Sample code

#define MACRO (50)

unsigned int ui;

ui = MACRO - 100; /* W0742 */

6.615.4 Related message

None.

6.615.5 Since

1.0.0


Next: , Previous: W0742, Up: Messages

6.616 W0743

6.616.1 Message body

The value of integer constant expression beyond the range of might be expressed with converted signed type.

6.616.2 Content

Under construction.

6.616.3 Sample code

/* when char is 8 bit long */
const signed char sc1 = 127; /* OK */
const signed char sc2 = 128; /* W0743 */

/* when int is 32 bit long */
const int si1 = 2147483647; /* OK */
const int si2 = 2147483648; /* W0743 */

6.616.4 Related message

None.

6.616.5 Since

1.4.0


Next: , Previous: W0743, Up: Messages

6.617 W0744

6.617.1 Message body

The value of this control expression is constant value to be false. This control statement is not run.

6.617.2 Content

Under construction.

6.617.3 Sample code

#define MACRO1 (0)
#define MACRO2 (1)

if (MACRO1 == MACRO2) { /* W0744 */
    ...snip...
}

6.617.4 Related message

None.

6.617.5 Since

1.0.0


Next: , Previous: W0744, Up: Messages

6.618 W0745

6.618.1 Message body

This non-constant array subscript may cause out-of-range access.

6.618.2 Content

Under construction.

6.618.3 Sample code

void func(unsigned int a)
{
    int buf[10];

    if (a > 5 && a < 10) {
        buf[a + 5] = 0; /* W0745 */
    }
}

6.618.4 Related message

  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.618.5 Since

1.0.0


Next: , Previous: W0745, Up: Messages

6.619 W0747

6.619.1 Message body

An implicit type conversion from signed short to signed char.

6.619.2 Content

Under construction.

6.619.3 Sample code

extern void foo(signed char a);

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

6.619.4 Related message

  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.619.5 Since

1.0.0


Next: , Previous: W0747, Up: Messages

6.620 W0748

6.620.1 Message body

An implicit type conversion from unsigned short to unsigned char.

6.620.2 Content

Under construction.

6.620.3 Sample code

extern void foo(unsigned char a);

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

6.620.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.620.5 Since

1.0.0


Next: , Previous: W0748, Up: Messages

6.621 W0749

6.621.1 Message body

An implicit type conversion from signed int to signed char.

6.621.2 Content

Under construction.

6.621.3 Sample code

extern void foo(signed char a);

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

6.621.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.621.5 Since

1.0.0


Next: , Previous: W0749, Up: Messages

6.622 W0750

6.622.1 Message body

An implicit type conversion from signed int to signed short.

6.622.2 Content

Under construction.

6.622.3 Sample code

extern void foo(short a);

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

6.622.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.622.5 Since

1.0.0


Next: , Previous: W0750, Up: Messages

6.623 W0751

6.623.1 Message body

An implicit type conversion from unsigned int to unsigned char.

6.623.2 Content

Under construction.

6.623.3 Sample code

extern void foo(unsigned char a);

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

6.623.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.623.5 Since

1.0.0


Next: , Previous: W0751, Up: Messages

6.624 W0752

6.624.1 Message body

An implicit type conversion from unsigned int to unsigned short.

6.624.2 Content

Under construction.

6.624.3 Sample code

extern void foo(unsigned short a);

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

6.624.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.624.5 Since

1.0.0


Next: , Previous: W0752, Up: Messages

6.625 W0753

6.625.1 Message body

An implicit type conversion from signed long to signed char.

6.625.2 Content

Under construction.

6.625.3 Sample code

extern void foo(signed char a);

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

6.625.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.625.5 Since

1.0.0


Next: , Previous: W0753, Up: Messages

6.626 W0754

6.626.1 Message body

An implicit type conversion from signed long to signed short.

6.626.2 Content

Under construction.

6.626.3 Sample code

extern void foo(short a);

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

6.626.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.626.5 Since

1.0.0


Next: , Previous: W0754, Up: Messages

6.627 W0755

6.627.1 Message body

An implicit type conversion from signed long to signed int.

6.627.2 Content

Under construction.

6.627.3 Sample code

extern void foo(int a);

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

6.627.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.627.5 Since

1.0.0


Next: , Previous: W0755, Up: Messages

6.628 W0756

6.628.1 Message body

An implicit type conversion from unsigned long to unsigned char.

6.628.2 Content

Under construction.

6.628.3 Sample code

extern void foo(unsigned char a);

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

6.628.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.628.5 Since

1.0.0


Next: , Previous: W0756, Up: Messages

6.629 W0757

6.629.1 Message body

An implicit type conversion from unsigned long to unsigned short.

6.629.2 Content

Under construction.

6.629.3 Sample code

extern void foo(unsigned short a);

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

6.629.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.629.5 Since

1.0.0


Next: , Previous: W0757, Up: Messages

6.630 W0758

6.630.1 Message body

An implicit type conversion from unsigned long to unsigned int.

6.630.2 Content

Under construction.

6.630.3 Sample code

extern void foo(unsigned int a);

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

6.630.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.630.5 Since

1.0.0


Next: , Previous: W0758, Up: Messages

6.631 W0759

6.631.1 Message body

An implicit type conversion from signed long long to signed char.

6.631.2 Content

Under construction.

6.631.3 Sample code

extern void foo(signed char a);

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

6.631.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.631.5 Since

1.0.0


Next: , Previous: W0759, Up: Messages

6.632 W0760

6.632.1 Message body

An implicit type conversion from signed long long to signed short.

6.632.2 Content

Under construction.

6.632.3 Sample code

extern void foo(short a);

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

6.632.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.632.5 Since

1.0.0


Next: , Previous: W0760, Up: Messages

6.633 W0761

6.633.1 Message body

An implicit type conversion from signed long long to singed int.

6.633.2 Content

Under construction.

6.633.3 Sample code

extern void foo(int a);

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

6.633.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.633.5 Since

1.0.0


Next: , Previous: W0761, Up: Messages

6.634 W0762

6.634.1 Message body

An implicit type conversion from signed long long to signed long.

6.634.2 Content

Under construction.

6.634.3 Sample code

extern void foo(long a);

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

6.634.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.634.5 Since

1.0.0


Next: , Previous: W0762, Up: Messages

6.635 W0763

6.635.1 Message body

An implicit type conversion from unsigned long long to unsigned char.

6.635.2 Content

Under construction.

6.635.3 Sample code

extern void foo(unsigned char a);

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

6.635.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.635.5 Since

1.0.0


Next: , Previous: W0763, Up: Messages

6.636 W0764

6.636.1 Message body

An implicit type conversion from unsigned long long to unsigned short.

6.636.2 Content

Under construction.

6.636.3 Sample code

extern void foo(unsigned short a);

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

6.636.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.636.5 Since

1.0.0


Next: , Previous: W0764, Up: Messages

6.637 W0765

6.637.1 Message body

An implicit type conversion from unsigned long long to unsigned int.

6.637.2 Content

Under construction.

6.637.3 Sample code

extern void foo(unsigned int a);

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

6.637.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0766 An implicit type conversion from unsigned long long to unsigned long.

6.637.5 Since

1.0.0


Next: , Previous: W0765, Up: Messages

6.638 W0766

6.638.1 Message body

An implicit type conversion from unsigned long long to unsigned long.

6.638.2 Content

Under construction.

6.638.3 Sample code

extern void foo(unsigned long a);

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

6.638.4 Related message

  • W0747 An implicit type conversion from signed short to signed char.
  • W0748 An implicit type conversion from unsigned short to unsigned char.
  • W0749 An implicit type conversion from signed int to signed char.
  • W0750 An implicit type conversion from signed int to signed short.
  • W0751 An implicit type conversion from unsigned int to unsigned char.
  • W0752 An implicit type conversion from unsigned int to unsigned short.
  • W0753 An implicit type conversion from signed long to signed char.
  • W0754 An implicit type conversion from signed long to signed short.
  • W0755 An implicit type conversion from signed long to signed int.
  • W0756 An implicit type conversion from unsigned long to unsigned char.
  • W0757 An implicit type conversion from unsigned long to unsigned short.
  • W0758 An implicit type conversion from unsigned long to unsigned int.
  • W0759 An implicit type conversion from signed long long to signed char.
  • W0760 An implicit type conversion from signed long long to signed short.
  • W0761 An implicit type conversion from signed long long to singed int.
  • W0762 An implicit type conversion from signed long long to signed long.
  • W0763 An implicit type conversion from unsigned long long to unsigned char.
  • W0764 An implicit type conversion from unsigned long long to unsigned short.
  • W0765 An implicit type conversion from unsigned long long to unsigned int.

6.638.5 Since

1.0.0


Next: , Previous: W0766, Up: Messages

6.639 W0767

6.639.1 Message body

An implicit type conversion from double to float.

6.639.2 Content

Under construction.

6.639.3 Sample code

extern void foo(float a);

void bar(double a)
{
    float b = a; /* W0767 */
    foo(a); /* W0767 */
}

6.639.4 Related message

  • W0768 An implicit type conversion from long double to float.
  • W0769 An implicit type conversion from long double to double.

6.639.5 Since

1.0.0


Next: , Previous: W0767, Up: Messages

6.640 W0768

6.640.1 Message body

An implicit type conversion from long double to float.

6.640.2 Content

Under construction.

6.640.3 Sample code

extern void foo(float a);

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

6.640.4 Related message

  • W0767 An implicit type conversion from double to float.
  • W0769 An implicit type conversion from long double to double.

6.640.5 Since

1.0.0


Next: , Previous: W0768, Up: Messages

6.641 W0769

6.641.1 Message body

An implicit type conversion from long double to double.

6.641.2 Content

Under construction.

6.641.3 Sample code

extern void foo(double a);

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

6.641.4 Related message

  • W0767 An implicit type conversion from double to float.
  • W0768 An implicit type conversion from long double to float.

6.641.5 Since

1.0.0


Next: , Previous: W0769, Up: Messages

6.642 W0770

6.642.1 Message body

A declaration of identifier `%s' which has external coupling exists more than one.

6.642.2 Content

Under construction.

6.642.3 Sample code

test1.h

extern int func(void); /* W0770 */

test2.h

extern int func(void); /* W0770 */

test.c

#include "test1.h"
#include "test2.h"

int func(void)
{
    return 0;
}

6.642.4 Related message

  • W0771 A global identifier `%s' is declared in more than one file.

6.642.5 Since

1.0.0


Next: , Previous: W0770, Up: Messages

6.643 W0771

6.643.1 Message body

A global identifier `%s' is declared in more than one file.

6.643.2 Content

Under construction.

6.643.3 Sample code

test1.h

extern int func(void); /* W0771 */
extern int a; /* W0771 */

test2.h

extern int func(void); /* W0771 */
extern int a; /* W0771 */

test.c

#include "test1.h"
#include "test2.h"

6.643.4 Related message

  • W0770 A declaration of identifier `%s' which has external coupling exists more than one.

6.643.5 Since

1.0.0


Next: , Previous: W0771, Up: Messages

6.644 W0774

6.644.1 Message body

A value of double type is returned from `float %s()'function.

6.644.2 Content

Under construction.

6.644.3 Sample code

extern double foo(void);

float bar(void)
{
    return foo(); /* W0774 */
}

6.644.4 Related message

  • W0775 A value of long double type is returned from `float %s()' function.
  • W0776 A value of long double type is returned from `double %s()'function.

6.644.5 Since

1.0.0


Next: , Previous: W0774, Up: Messages

6.645 W0775

6.645.1 Message body

A value of long double type is returned from `float %s()' function.

6.645.2 Content

Under construction.

6.645.3 Sample code

extern long double foo(void);

float bar(void)
{
    return foo(); /* W0775 */
}

6.645.4 Related message

  • W0774 A value of double type is returned from `float %s()'function.
  • W0776 A value of long double type is returned from `double %s()'function.

6.645.5 Since

1.0.0


Next: , Previous: W0775, Up: Messages

6.646 W0776

6.646.1 Message body

A value of long double type is returned from `double %s()'function.

6.646.2 Content

Under construction.

6.646.3 Sample code

extern long double foo(void);

double bar(void)
{
    return foo(); /* W0776 */
}

6.646.4 Related message

  • W0774 A value of double type is returned from `float %s()'function.
  • W0775 A value of long double type is returned from `float %s()' function.

6.646.5 Since

1.0.0


Next: , Previous: W0776, Up: Messages

6.647 W0777

6.647.1 Message body

An implicit type conversion from compound expression of float to double.

6.647.2 Content

Under construction.

6.647.3 Sample code

void func(float a, float b)
{
    double c = a + b; /* W0777 */
}

6.647.4 Related message

  • W0778 An implicit type conversion from compound expression of float to long double.
  • W0779 An implicit type conversion from compound expression of to long double.

6.647.5 Since

1.0.0


Next: , Previous: W0777, Up: Messages

6.648 W0778

6.648.1 Message body

An implicit type conversion from compound expression of float to long double.

6.648.2 Content

Under construction.

6.648.3 Sample code

void func(float a, float b)
{
    long double c = a + b; /* W0778 */
}

6.648.4 Related message

  • W0777 An implicit type conversion from compound expression of float to double.
  • W0779 An implicit type conversion from compound expression of to long double.

6.648.5 Since

1.0.0


Next: , Previous: W0778, Up: Messages

6.649 W0779

6.649.1 Message body

An implicit type conversion from compound expression of to long double.

6.649.2 Content

Under construction.

6.649.3 Sample code

void func(double a, double b)
{
    long double c = a + b; /* W0779 */
}

6.649.4 Related message

  • W0777 An implicit type conversion from compound expression of float to double.
  • W0778 An implicit type conversion from compound expression of float to long double.

6.649.5 Since

1.0.0


Next: , Previous: W0779, Up: Messages

6.650 W0780

6.650.1 Message body

Unsigned left shift operator `<<' in constant expression truncate non-zero high-order bit.

6.650.2 Content

Under construction.

6.650.3 Sample code

unsigned int foo(void)
{
    return 0x08000000U << 5; /* W0780 */
}

6.650.4 Related message

None.

6.650.5 Since

1.18.0


Next: , Previous: W0780, Up: Messages

6.651 W0781

6.651.1 Message body

This 'switch' statement have only one path. It's verbose.

6.651.2 Content

Under construction.

6.651.3 Sample code

int foo(const int i)
{
    if (i > 5) {
        switch (i) { /* W0781 */
        case 0:
            return 1;
        case 5:
            return 2;
        default:
            return 3;
        }
    }

    switch (i) { /* OK */
    case 0:
        return 4;
    default:
        switch (i) { /* W0781 */
        case 10:
            return 5;
        default:
            return 6;
        }
    }
}

6.651.4 Related message

None.

6.651.5 Since

1.6.0


Next: , Previous: W0781, Up: Messages

6.652 W0783

6.652.1 Message body

Cast is being made including the pointer point to incomplete type. This program is not portable.

6.652.2 Content

Under construction.

6.652.3 Sample code

extern struct Foo *gp;

void foo(int *p)
{
    gp = (struct Foo *) p; /* W0783 */
}

6.652.4 Related message

None.

6.652.5 Since

1.18.0


Next: , Previous: W0783, Up: Messages

6.653 W0784

6.653.1 Message body

The nonstandard escape sequence is used.

6.653.2 Content

This message will be supported after AdLint 2.0.0

Under construction.

6.653.3 Sample code

/* will be added */

6.653.4 Related message

None.

6.653.5 Since

After 2.0.0 (planned)


Next: , Previous: W0784, Up: Messages

6.654 W0785

6.654.1 Message body

This declaration of `%s' is different from a former declaration

6.654.2 Content

Under construction.

6.654.3 Sample code

struct AAA {
    int a;
};

union AAA { /* W0785 */
    long a;
    int b;
};

6.654.4 Related message

None.

6.654.5 Since

1.0.0


Next: , Previous: W0785, Up: Messages

6.655 W0786

6.655.1 Message body

A bit field which having the type of except 'int', 'signed int' or 'unsigned int' doesn't support in ISO C standards

6.655.2 Content

Under construction.

6.655.3 Sample code

struct ST { /* W0786 */
    unsigned int a:3;
    unsigned long b:1;
};

6.655.4 Related message

None.

6.655.5 Since

1.0.0


Next: , Previous: W0786, Up: Messages

6.656 W0787

6.656.1 Message body

A type of `%s' is different from the past declaration in the different scope.

6.656.2 Content

Under construction.

6.656.3 Sample code

void func1(void)
{
    extern int num;
    extern void func3(void);
}

void func2(void)
{
    extern double num; /* W0787 */
    extern void func3(int); /* W0787 */
}

6.656.4 Related message

  • W0788 A type of `%s' is different from the past declaration in the same scope.
  • W0789 A type of `%s' is different from the past declaration in the wider scope.

6.656.5 Since

1.6.0


Next: , Previous: W0787, Up: Messages

6.657 W0788

6.657.1 Message body

A type of `%s' is different from the past declaration in the same scope.

6.657.2 Content

Under construction.

6.657.3 Sample code

extern int func(void);

void func(void) /* W0788 */
{
    typedef int num;
    double num; /* W0788 */
}

6.657.4 Related message

  • W0787 A type of `%s' is different from the past declaration in the different scope.
  • W0789 A type of `%s' is different from the past declaration in the wider scope.

6.657.5 Since

1.6.0


Next: , Previous: W0788, Up: Messages

6.658 W0789

6.658.1 Message body

A type of `%s' is different from the past declaration in the wider scope.

6.658.2 Content

Under construction.

6.658.3 Sample code

int num = 0;
extern int func1(void);

void func2(void)
{
    extern double num; /* W0789 */
    extern void func1(void); /* W0789 */
}

6.658.4 Related message

  • W0788 A type of `%s' is different from the past declaration in the same scope.
  • W0789 A type of `%s' is different from the past declaration in the wider scope.

6.658.5 Since

1.6.0


Next: , Previous: W0789, Up: Messages

6.659 W0790

6.659.1 Message body

An global object or a function `%s' is declared in more than one file.

6.659.2 Content

Under construction.

6.659.3 Sample code

int func(void)
{
    return 0;
}

int a = 0;

int func(void) /* W0790 */
{
    return 1;
}

int a = 1; /* W0790 */

6.659.4 Related message

  • W0791 An global object or a function `%s' is declared in more than one file.

6.659.5 Since

1.0.0


Next: , Previous: W0790, Up: Messages

6.660 W0791

6.660.1 Message body

An global object or a function `%s' is declared in more than one file.

6.660.2 Content

Under construction.

6.660.3 Sample code

test1.c

int func(void) /* W0791 */
{
    return 0;
}

int a = 0; /* W0791 */

test2.c

int func(void) /* W0791 */
{
    return 1;
}

int a = 1; /* W0791 */

6.660.4 Related message

  • W0790 An global object or a function `%s' is declared in more than one file.

6.660.5 Since

1.0.0


Next: , Previous: W0791, Up: Messages

6.661 W0792

6.661.1 Message body

A floating point type object cast to function pointer and vice versa.

6.661.2 Content

Under construction.

6.661.3 Sample code

int (*foo(const float f))(void)
{
    return (int (*)(void)) f; /* W0792 */
}

6.661.4 Related message

None.

6.661.5 Since

1.18.0


Next: , Previous: W0792, Up: Messages

6.662 W0793

6.662.1 Message body

A function pointer cast to pointer to point an object and vice versa.

6.662.2 Content

Under construction.

6.662.3 Sample code

typedef int (*funptr_t)(void);

funptr_t foo(float *p)
{
    return (funptr_t) p; /* W0793 */
}

6.662.4 Related message

None.

6.662.5 Since

1.18.0


Next: , Previous: W0793, Up: Messages

6.663 W0794

6.663.1 Message body

Left shift operation of signed value causes implementation-defined behavior.

6.663.2 Content

Under construction.

6.663.3 Sample code

int func(int i)
{
    return i << 1; /* W0794 */
}

6.663.4 Related message

None.

6.663.5 Since

1.18.0


Next: , Previous: W0794, Up: Messages

6.664 W0795

6.664.1 Message body

The number of an actual argument in function call is smaller than the number of a formal argument in the function prototype declaration.

6.664.2 Content

Under construction.

6.664.3 Sample code

extern void foo(int, int, int);

static void bar(void)
{
    foo(1, 2); /* W0795 */
}

6.664.4 Related message

  • W0796 The number of an actual argument in function call is bigger than the number of a formal argument in the function prototype declaration.
  • W0797 The number of an actual argument in function call is different from the number of a formal argument in the function declaration.

6.664.5 Since

1.0.0


Next: , Previous: W0795, Up: Messages

6.665 W0796

6.665.1 Message body

The number of an actual argument in function call is bigger than the number of a formal argument in the function prototype declaration.

6.665.2 Content

Under construction.

6.665.3 Sample code

extern void foo(int, int);

static void bar(void)
{
    foo(1, 2, 3); /* W0796 */
}

6.665.4 Related message

  • W0795 The number of an actual argument in function call is smaller than the number of a formal argument in the function prototype declaration.
  • W0797 The number of an actual argument in function call is different from the number of a formal argument in the function declaration.

6.665.5 Since

1.0.0


Next: , Previous: W0796, Up: Messages

6.666 W0797

6.666.1 Message body

The number of an actual argument in function call is different from the number of a formal argument in the function declaration.

6.666.2 Content

Under construction.

6.666.3 Sample code

static int foo(int, int);

static int bar(void)
{
    int a = foo(1); /* W0795 */
    int b = foo(1, 2);
    int c = foo(1, 2, 3); /* W0795 */
}

static int foo(int a, int b)
{
    return a + b;
}

6.666.4 Related message

  • W0795 The number of an actual argument in function call is smaller than the number of a formal argument in the function prototype declaration.
  • W0796 The number of an actual argument in function call is bigger than the number of a formal argument in the function prototype declaration.

6.666.5 Since

1.0.0


Next: , Previous: W0797, Up: Messages

6.667 W0798

6.667.1 Message body

Must not use the value with incomplete union object.

6.667.2 Content

Under construction.

6.667.3 Sample code

extern union UN *p;

void func(void)
{
    int i = 0;

    if (p) {
        i = p->i; /* W0798 */
    }
}

6.667.4 Related message

  • W0799 Must not use the value with incomplete structure object.
  • W0800 `%s' is incomplete type which doesn't have a linkage.This is undefined.

6.667.5 Since

1.0.0


Next: , Previous: W0798, Up: Messages

6.668 W0799

6.668.1 Message body

Must not use the value with incomplete structure object.

6.668.2 Content

Under construction.

6.668.3 Sample code

extern struct ST *p;

void func(void)
{
    int i = 0;

    if (p) {
        i = p->i; /* W0799 */
    }
}

6.668.4 Related message

  • W0798 Must not use the value with incomplete union object.
  • W0800 `%s' is incomplete type which doesn't have a linkage.This is undefined.

6.668.5 Since

1.0.0


Next: , Previous: W0799, Up: Messages

6.669 W0800

6.669.1 Message body

`%s' is incomplete type which doesn't have a linkage.This is undefined.

6.669.2 Content

Under construction.

6.669.3 Sample code

int a[]; /* W0800 */
struct ST s = { 0 }; /* W0800 */

6.669.4 Related message

  • W0798 Must not use the value with incomplete union object.
  • W0799 Must not use the value with incomplete structure object.

6.669.5 Since

1.0.0


Next: , Previous: W0800, Up: Messages

6.670 W0801

6.670.1 Message body

This structure or union doesn't have a named member.

6.670.2 Content

Under construction.

6.670.3 Sample code

struct foo { /* W0801 */
};

struct bar { /* W0801 */
    int;
    int :1;
    long;
    double;
};

6.670.4 Related message

None.

6.670.5 Since

1.4.0


Next: , Previous: W0801, Up: Messages

6.671 W0802

6.671.1 Message body

A form of after `#include' preprocessing directive is not <file name> nor \"file name\".

6.671.2 Content

This message will be supported after AdLint 2.0.0

Under construction.

6.671.3 Sample code

#include fruits.h /* W0802 */

#define MACRO 1
#include MACRO /* W0802 */

6.671.4 Related message

None.

6.671.5 Since

After 2.0.0 (planned)


Next: , Previous: W0802, Up: Messages

6.672 W0803

6.672.1 Message body

A preprocessing directive is described in actual argument of function-like macro.

6.672.2 Content

This message will be supported after AdLint 2.0.0

Under construction.

6.672.3 Sample code

/* will be added */

6.672.4 Related message

None.

6.672.5 Since

After 2.0.0 (planned)


Next: , Previous: W0803, Up: Messages

6.673 W0804

6.673.1 Message body

The 'defined' syntax is not `defined (identifier)' nor `defined identifier'.

6.673.2 Content

Under construction.

6.673.3 Sample code

#if defined "MACRO" /* W0804 */
#endif

6.673.4 Related message

  • W0805 An identifier to be actual argument doesn't find in `defined'.

6.673.5 Since

1.0.0


Next: , Previous: W0804, Up: Messages

6.674 W0805

6.674.1 Message body

An identifier to be actual argument doesn't find in `defined'.

6.674.2 Content

Under construction.

6.674.3 Sample code

#if defined "foo" /* W0805 */
int i = 0;
#endif

6.674.4 Related message

  • W0804 The 'defined' syntax is not `defined (identifier)' nor `defined identifier'.

6.674.5 Since

1.16.0


Next: , Previous: W0805, Up: Messages

6.675 W0806

6.675.1 Message body

It is trying to define a macro named `defined'.

6.675.2 Content

Under construction.

6.675.3 Sample code

#define defined !defined /* W0806 */

6.675.4 Related message

  • W0807 It is trying to delete pre-defined macro `%s'.
  • W0808 It is trying to redefine pre-defined macro `%s'.

6.675.5 Since

1.4.0


Next: , Previous: W0806, Up: Messages

6.676 W0807

6.676.1 Message body

It is trying to delete pre-defined macro `%s'.

6.676.2 Content

Under construction.

6.676.3 Sample code

#undef __STDC_VERSION__ /* W0807 */

6.676.4 Related message

  • W0806 It is trying to define a macro named `defined'.
  • W0808 It is trying to redefine pre-defined macro `%s'.

6.676.5 Since

1.6.0


Next: , Previous: W0807, Up: Messages

6.677 W0808

6.677.1 Message body

It is trying to redefine pre-defined macro `%s'.

6.677.2 Content

Under construction.

6.677.3 Sample code

#define __FILE__ "test.c" /* W0808 */

6.677.4 Related message

  • W0806 It is trying to define a macro named `defined'.
  • W0807 It is trying to delete pre-defined macro `%s'.

6.677.5 Since

1.6.0


Next: , Previous: W0808, Up: Messages

6.678 W0809

6.678.1 Message body

An identifier `%s' is reserved by the library.

6.678.2 Content

Under construction.

6.678.3 Sample code

extern int __value; /* W0809 */
int _VAL = 10; /* W0809 */
static void _func(void); /* W0809 */

6.678.4 Related message

None.

6.678.5 Since

1.6.0


Next: , Previous: W0809, Up: Messages

6.679 W0810

6.679.1 Message body

`{}' is required to clarify this structure of `if-if-else' statement.

6.679.2 Content

Under construction.

6.679.3 Sample code

int foo(int i, int j) {
    if (i < 0) /* W0810 */
        if (j > 0) {
            return 0;
        }
    else {
        return 1;
    }

    if (i > 0) /* W0810 */
        if (j < 0) {
            return 2;
        }
        else {
            return 3;
        }

    return 4;
}

6.679.4 Related message

None.

6.679.5 Since

1.0.0


Next: , Previous: W0810, Up: Messages

6.680 W0811

6.680.1 Message body

The `defined' token which the expanded result of this macro doesn't allowed.

6.680.2 Content

Under construction.

6.680.3 Sample code

#define COND defined(FOO)

#if COND /* W0811 */
int i = 0;
#endif

6.680.4 Related message

None.

6.680.5 Since

1.16.0


Next: , Previous: W0811, Up: Messages

6.681 W0827

6.681.1 Message body

An initial value of nested structure's element doesn't enclosed in curly brace `{}'.

6.681.2 Content

Under construction.

6.681.3 Sample code

struct ST {
    int i;
    int j;
};

struct ST a[2] = { 10, 20, 30, 40 }; /* W0827 */

6.681.4 Related message

  • W0828 An initial value of nested array's element doesn't enclosed in curly brace `{ }'.

6.681.5 Since

1.0.0


Next: , Previous: W0827, Up: Messages

6.682 W0828

6.682.1 Message body

An initial value of nested array's element doesn't enclosed in curly brace `{}'.

6.682.2 Content

Under construction.

6.682.3 Sample code

int a[3][2] = { {1, 2}, {3, 4}, {5, 6} };
int b[3][2] = { 1, 2, 3, 4, 5, 6 }; /* W0828 */

6.682.4 Related message

  • W0827 An initial value of nested structure's element doesn't enclosed in curly brace `{ }'.

6.682.5 Since

1.0.0


Next: , Previous: W0828, Up: Messages

6.683 W0830

6.683.1 Message body

There is comma `,' at the end of the enumerator list.

6.683.2 Content

Under construction.

6.683.3 Sample code

enum Color { Red, Green, Blue, }; /* W0830 */

6.683.4 Related message

None.

6.683.5 Since

1.18.0


Next: , Previous: W0830, Up: Messages

6.684 W0831

6.684.1 Message body

This is language extension for inline assembly. It will be ignored between #asm and #endasm.

6.684.2 Content

Under construction.

6.684.3 Sample code

/* will be added */

6.684.4 Related message

  • W0832 An inline assembly syntax is using. This is the language extension. This code will be ignored.

6.684.5 Since

1.0.0


Next: , Previous: W0831, Up: Messages

6.685 W0832

6.685.1 Message body

An inline assembly syntax is using. This is the language extension. This code will be ignored.

6.685.2 Content

Under construction.

6.685.3 Sample code

#define ASM_CODE asm("movl %ecx, %eax")

void foo(int arg1, int *arg2, int arg3)
{
    asm("movl %ecx, %eax"); /* W0832 */
    __asm__("movl %ecx, (%eax)"); /* W0832 */

    asm { /* W0832 */
        xorl eax, eax
    }

    ASM_CODE; /* W0832 */

    __asm__ volatile ( /* W0832 */
            "int $0x80"
            : "=a" (r)
              "+b" (arg1),
              "+c" (arg2),
              "+d" (arg3)
            : "a" (128)
            : "memory", "cc");
}

6.685.4 Related message

  • W0831 This is language extension for inline assembly. It will be ignored between #asm and #endasm.

6.685.5 Since

1.8.0


Next: , Previous: W0832, Up: Messages

6.686 W0833

6.686.1 Message body

A suffix 'LL' is using.

6.686.2 Content

Under construction.

6.686.3 Sample code

long long ll = 123LL; /* W0833 */

6.686.4 Related message

  • W0834 A long long type is using.

6.686.5 Since

1.18.0


Next: , Previous: W0833, Up: Messages

6.687 W0834

6.687.1 Message body

A long long type is using.

6.687.2 Content

Under construction.

6.687.3 Sample code

extern long long ll; /* W0834 */

6.687.4 Related message

  • W0833 A suffix 'LL' is using.

6.687.5 Since

1.18.0


Next: , Previous: W0834, Up: Messages

6.688 W0835

6.688.1 Message body

A macro which receives variable argument is defined.

6.688.2 Content

This message will be supported after AdLint 2.0.0

Under construction.

6.688.3 Sample code

/* will be added */

6.688.4 Related message

None.

6.688.5 Since

After 2.0.0 (planned)


Next: , Previous: W0835, Up: Messages

6.689 W0947

6.689.1 Message body

String literal is specified directly.

6.689.2 Content

Under construction.

6.689.3 Sample code

func("Apple, Banana, Chocolate"); /* W0947 */

6.689.4 Related message

  • W0948 Character constant %s is specified directly.
  • W0949 A value `%s' is used directly for size definition of bit field.
  • W0950 Integer constant `%s' is specified directly as an array size.

6.689.5 Since

1.0.0


Next: , Previous: W0947, Up: Messages

6.690 W0948

6.690.1 Message body

Character constant %s is specified directly.

6.690.2 Content

Under construction.

6.690.3 Sample code

func('a'); /* W0948 */

6.690.4 Related message

  • W0947 String literal is specified directly.
  • W0949 A value `%s' is used directly for size definition of bit field.
  • W0950 Integer constant `%s' is specified directly as an array size.

6.690.5 Since

1.0.0


Next: , Previous: W0948, Up: Messages

6.691 W0949

6.691.1 Message body

A value `%s' is used directly for size definition of bit field.

6.691.2 Content

Under construction.

6.691.3 Sample code

struct ST {
    unsigned int a:1;
    unsigned int a:2; /* W0949 */
    unsigned int a:3; /* W0949 */
};

6.691.4 Related message

  • W0947 String literal is specified directly.
  • W0948 Character constant %s is specified directly.
  • W0950 Integer constant `%s' is specified directly as an array size.

6.691.5 Since

1.0.0


Next: , Previous: W0949, Up: Messages

6.692 W0950

6.692.1 Message body

Integer constant `%s' is specified directly as an array size.

6.692.2 Content

Under construction.

6.692.3 Sample code

int a[10]; /* W0950 */

6.692.4 Related message

  • W0947 String literal is specified directly.
  • W0948 Character constant %s is specified directly.
  • W0949 A value `%s' is used directly for size definition of bit field.

6.692.5 Since

1.0.0


Next: , Previous: W0950, Up: Messages

6.693 W1026

6.693.1 Message body

%sth actual argument is not object type.

6.693.2 Content

Under construction.

6.693.3 Sample code

extern struct st s;
extern void foo(struct st);

void bar(void)
{
    foo(s); /* W1026 */
}

6.693.4 Related message

None.

6.693.5 Since

1.18.0


Next: , Previous: W1026, Up: Messages

6.694 W1027

6.694.1 Message body

A base type of array is function type. This is meaningless.

6.694.2 Content

Under construction.

6.694.3 Sample code

int (fun_tbl[20])(void); /* W1027 */

6.694.4 Related message

  • W1028 A base type of array is an array with unknown size. Incomplete type of array will not build.
  • W1029 A base type of array is an obscure structure or union. Incomplete type of array will not build.

6.694.5 Since

1.0.0


Next: , Previous: W1027, Up: Messages

6.695 W1028

6.695.1 Message body

A base type of array is an array with unknown size. Incomplete type of array will not build.

6.695.2 Content

Under construction.

6.695.3 Sample code

int a[4][]; /* W1028 */

6.695.4 Related message

  • W1027 A base type of array is function type. This is meaningless.
  • W1029 A base type of array is an obscure structure or union. Incomplete type of array will not build.

6.695.5 Since

1.0.0


Next: , Previous: W1028, Up: Messages

6.696 W1029

6.696.1 Message body

A base type of array is an obscure structure or union. Incomplete type of array will not build.

6.696.2 Content

Under construction.

6.696.3 Sample code

struct ST a[5]; /* W1029 */

6.696.4 Related message

  • W1027 A base type of array is function type. This is meaningless.
  • W1028 A base type of array is an array with unknown size. Incomplete type of array will not build.

6.696.5 Since

1.0.0


Next: , Previous: W1029, Up: Messages

6.697 W1030

6.697.1 Message body

A label `%s' is used more than two times in this function.

6.697.2 Content

Under construction.

6.697.3 Sample code

void func(int a, int b)
{
    if (a == 0) {
        int c = 0;
RETRY:
        b = 10;
    }

    if (b != 0) {
        goto RETRY;
    }
RETRY: /* W1030 */
    b = 1;

    ...snip...
}

6.697.4 Related message

None.

6.697.5 Since

1.6.0


Next: , Previous: W1030, Up: Messages

6.698 W1031

6.698.1 Message body

An Object `%s' is declared both external coupling and internal coupling. This action is undefined.

6.698.2 Content

Under construction.

6.698.3 Sample code

test.h

extern int a;

test.c

#include "test.h"

static int a; /* W1031 */

6.698.4 Related message

None.

6.698.5 Since

1.0.0


Next: , Previous: W1031, Up: Messages

6.699 W1032

6.699.1 Message body

A tentative definition of variable '%s' which has internal linkage must not incomplete type.

6.699.2 Content

Under construction.

6.699.3 Sample code

static struct ST a[3]; /* W1032 */

6.699.4 Related message

None.

6.699.5 Since

1.0.0


Next: , Previous: W1032, Up: Messages

6.700 W1033

6.700.1 Message body

A 'volatile' or 'const' qualifier is used for the type of function return value. This action is undefined.

6.700.2 Content

Under construction.

6.700.3 Sample code

extern const int func1(int); /* W1033 */

const int func2(int i) /* W1033 */
{
    return i + 1;
}

const int *func3(int i) /* OK */
{
    static int j;

    j = i;
    return &j;
}

6.700.4 Related message

None.

6.700.5 Since

1.4.0


Next: , Previous: W1033, Up: Messages

6.701 W1034

6.701.1 Message body

It is declared at function `%s()' with static storage class specifier in block scope. This usage is meaningless.

6.701.2 Content

Under construction.

6.701.3 Sample code

int func(void)
{
    static int func1(void); /* W1034 */
    extern int func2(void);
}

6.701.4 Related message

None.

6.701.5 Since

1.0.0


Next: , Previous: W1034, Up: Messages

6.702 W1035

6.702.1 Message body

`%s' declared typedef. It cannot be redeclared inside an inner scope without using explicit type.

6.702.2 Content

This message will be supported after AdLint 2.0.0

Under construction.

6.702.3 Sample code

/* will be added */

6.702.4 Related message

  • W1036 `%s' declared typedef. It cannot be redeclared as a member of structure or union without using explicit type.

6.702.5 Since

After 2.0.0 (planned)


Next: , Previous: W1035, Up: Messages

6.703 W1036

6.703.1 Message body

`%s' declared typedef. It cannot be redeclared as a member of structure or union without using explicit type.

6.703.2 Content

This message will be supported after AdLint 2.0.0

Under construction.

6.703.3 Sample code

/* will be added */

6.703.4 Related message

  • W1035 `%s' declared typedef. It cannot be redeclared inside an inner scope without using explicit type.

6.703.5 Since

After 2.0.0 (planned)


Next: , Previous: W1036, Up: Messages

6.704 W1037

6.704.1 Message body

`%s' which has external coupling is declared more than one, this is incompatible.

6.704.2 Content

Under construction.

6.704.3 Sample code

test1.c

extern void func(void); /* W1037 */
extern int a; /* W1037 */

test2.c

extern int func(int); /* W1037 */
extern long a; /* W1037 */

6.704.4 Related message

None.

6.704.5 Since

1.0.0


Next: , Previous: W1037, Up: Messages

6.705 W1039

6.705.1 Message body

`ll' is used in %sth conversion specifier.

6.705.2 Content

Under construction.

6.705.3 Sample code

extern int printf(const char *, ...);

void foo(long long ll)
{
    printf("%lld", ll); /* W1039 */
}

6.705.4 Related message

None.

6.705.5 Since

1.18.0


Next: , Previous: W1039, Up: Messages

6.706 W1040

6.706.1 Message body

An unrecognizable string is described after preprocessing directive.

6.706.2 Content

Under construction.

6.706.3 Sample code

#define TEST

#ifdef TEST
#if defined(CASE_1)
int i = 1;
#elif defined(CASE_2)
int i = 2;
#endif CASE /* W1040 */
#else
int i = 0;
#endif TEST /* W1040 */

6.706.4 Related message

  • W1041 `%s' is not official preprocessing directive of ISO C standards.
  • W1042 'sizeof' operator is using in preprocessing directive. This is the language extension.

6.706.5 Since

1.16.0


Next: , Previous: W1040, Up: Messages

6.707 W1041

6.707.1 Message body

`%s' is not official preprocessing directive of ISO C standards.

6.707.2 Content

Under construction.

6.707.3 Sample code

#compiler_specific_extension 1 2.3 "4" /* W1041 */

6.707.4 Related message

  • W1040 An unrecognizable string is described after preprocessing directive.
  • W1042 'sizeof' operator is using in preprocessing directive. This is the language extension.

6.707.5 Since

1.16.0


Next: , Previous: W1041, Up: Messages

6.708 W1042

6.708.1 Message body

'sizeof' operator is using in preprocessing directive. This is the language extension.

6.708.2 Content

This message will be supported after AdLint 2.0.0

Under construction.

6.708.3 Sample code

/* will be added */

6.708.4 Related message

  • W1040 An unrecognizable string is described after preprocessing directive.
  • W1041 `%s' is not official preprocessing directive of ISO C standards.

6.708.5 Since

After 2.0.0 (planned)


Next: , Previous: W1042, Up: Messages

6.709 W1043

6.709.1 Message body

`@ address' is not supported ISO C standards. It will be considered as language extension.

6.709.2 Content

This message will be supported after AdLint 2.0.0

Under construction.

6.709.3 Sample code

/* will be added */

6.709.4 Related message

  • W1045 This `@ word' syntax will be ignored.

6.709.5 Since

After 2.0.0 (planned)


Next: , Previous: W1043, Up: Messages

6.710 W1045

6.710.1 Message body

This `@ word' syntax will be ignored.

6.710.2 Content

This message will be supported after AdLint 2.0.0

Under construction.

6.710.3 Sample code

/* will be added */

6.710.4 Related message

  • W1043 `@ address' is not supported ISO C standards. It will be considered as language extension.

6.710.5 Since

After 2.0.0 (planned)


Next: , Previous: W1045, Up: Messages

6.711 W1046

6.711.1 Message body

A space character is ignored between `\' and line feed.

6.711.2 Content

Under construction.

6.711.3 Sample code

#define FOO(a, b)   /* OK */    \
    (               /* W1046 */ \ 
        (a) + (b)   /* W1046 */ \	
    )

6.711.4 Related message

None.

6.711.5 Since

1.16.0


Next: , Previous: W1046, Up: Messages

6.712 W1047

6.712.1 Message body

The struct, union or array's initializer is not literal.

6.712.2 Content

Under construction.

6.712.3 Sample code

int foo(int i, int j)
{
    int a[] = { 0, i, j }; /* W1047 */
    return a[1];
}

6.712.4 Related message

None.

6.712.5 Since

1.18.0


Next: , Previous: W1047, Up: Messages

6.713 W1048

6.713.1 Message body

The multi byte string literal is an implementation defined value.

6.713.2 Content

This message will be supported after AdLint 2.0.0

Under construction.

6.713.3 Sample code

/* will be added */

6.713.4 Related message

None.

6.713.5 Since

After 2.0.0 (planned)


Next: , Previous: W1048, Up: Messages

6.714 W1049

6.714.1 Message body

The result of conversion to signed integer type in integer expression might not be expressed by a signed type.

6.714.2 Content

Under construction.

6.714.3 Sample code

example 1

void func1(signed int si)
{
    signed char sc = (signed char) si + 10; /* W1049 */
}

example 2

void func(unsigned int ui)
{
    unsigned int a = ui * ui;
}

6.714.4 Related message

  • W1050 The result of conversion to signed integer type in integer expression is not express by a signed type.
  • W1051 The result of unsigned arithmetic expression typed `%s' is going around 0 by overflow.
  • W1052 The result of unsigned arithmetic expression typed `%s' can be going around by overflow.
  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.714.5 Since

1.0.0


Next: , Previous: W1049, Up: Messages

6.715 W1050

6.715.1 Message body

The result of conversion to signed integer type in integer expression is not express by a signed type.

6.715.2 Content

Under construction.

6.715.3 Sample code

example 1

void func(signed int si)
{
    signed char sc = 0;

    if (si > 127) {
        sc = (signed char) si + 1; /* W1050 */
    }
}

example 2

void func(unsigned int ui)
{
    unsigned int a = ui * ui;
}

6.715.4 Related message

  • W1049 The result of conversion to signed integer type in integer expression might not be expressed by a signed type.
  • W1051 The result of unsigned arithmetic expression typed `%s' is going around 0 by overflow.
  • W1052 The result of unsigned arithmetic expression typed `%s' can be going around by overflow.
  • C1000 Warning above is detected in the following context.
  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1006 New value is assigned to the problematic variable.

6.715.5 Since

1.0.0


Next: , Previous: W1050, Up: Messages

6.716 W1051

6.716.1 Message body

The result of unsigned arithmetic expression typed `%s' is going around 0 by overflow.

6.716.2 Content

Under construction.

6.716.3 Sample code

unsigned int func(unsigned int ui)
{
    if (ui > 0xEFFFFFFFU) {
        return ui + 0x10000000U; /* W1051 */
    }

    return 0U;
}

6.716.4 Related message

  • W1049 The result of conversion to signed integer type in integer expression might not be expressed by a signed type.
  • W1050 The result of conversion to signed integer type in integer expression is not express by a signed type.
  • W1052 The result of unsigned arithmetic expression typed `%s' can be going around by overflow.

6.716.5 Since

1.0.0


Next: , Previous: W1051, Up: Messages

6.717 W1052

6.717.1 Message body

The result of unsigned arithmetic expression typed `%s' can be going around by overflow.

6.717.2 Content

Under construction.

6.717.3 Sample code

unsigned int func(unsigned int a, unsigned int b)
{
    if (a > 0xEFFFFFFFU && b < 0x20000000U) {
        return a + b; /* W1052 */
    }

    return 0U;
}

6.717.4 Related message

  • W1049 The result of conversion to signed integer type in integer expression might not be expressed by a signed type.
  • W1050 The result of conversion to signed integer type in integer expression is not express by a signed type.
  • W1051 The result of unsigned arithmetic expression typed `%s' is going around 0 by overflow.

6.717.5 Since

1.0.0


Next: , Previous: W1052, Up: Messages

6.718 W1053

6.718.1 Message body

A numeric constants is passed to an actual argument which formal argument is enumeration type.

6.718.2 Content

Under construction.

6.718.3 Sample code

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

extern void func1(enum Color);

void func2(void)
{
    func1(4); /* W1053 */
}

6.718.4 Related message

  • W1054 A non enumeration type expression is substituted for the enumeration type.
  • W1055 A non enumeration type expression is returned from the function which return value is enumeration type.
  • W1056 An object of actual argument is different enumeration type which formal argument is enumeration type.
  • W1057 An enumeration value is substituted for different enumeration type object.
  • W1058 A different enumeration type of value is returned from a function which return value is enumeration type.
  • W1059 An enumeration value is passed to actual argument which formal argument is not enumeration type.
  • W1060 An enumeration value is returned from a function which return value is not enumeration type .
  • W1061 Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type.
  • W1062 Non constant expression is substituted for the enumeration type object.
  • W1063 The return value returned from enumeration type function to non constant expression.
  • W1064 A integer constant is used in switch statement where case label is enumeration type.
  • W1065 A value of different enumeration type is used in switch statement where case label is an enumeration type.

6.718.5 Since

1.6.0


Next: , Previous: W1053, Up: Messages

6.719 W1054

6.719.1 Message body

A non enumeration type expression is substituted for the enumeration type.

6.719.2 Content

Under construction.

6.719.3 Sample code

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

extern enum Color col;

void func2(void)
{
    col = 4; /* W1054 */
}

6.719.4 Related message

  • W1053 A numeric constants is passed to an actual argument which formal argument is enumeration type.
  • W1055 A non enumeration type expression is returned from the function which return value is enumeration type.
  • W1056 An object of actual argument is different enumeration type which formal argument is enumeration type.
  • W1057 An enumeration value is substituted for different enumeration type object.
  • W1058 A different enumeration type of value is returned from a function which return value is enumeration type.
  • W1059 An enumeration value is passed to actual argument which formal argument is not enumeration type.
  • W1060 An enumeration value is returned from a function which return value is not enumeration type .
  • W1061 Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type.
  • W1062 Non constant expression is substituted for the enumeration type object.
  • W1063 The return value returned from enumeration type function to non constant expression.
  • W1064 A integer constant is used in switch statement where case label is enumeration type.
  • W1065 A value of different enumeration type is used in switch statement where case label is an enumeration type.

6.719.5 Since

1.6.0


Next: , Previous: W1054, Up: Messages

6.720 W1055

6.720.1 Message body

A non enumeration type expression is returned from the function which return value is enumeration type.

6.720.2 Content

Under construction.

6.720.3 Sample code

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

enum Color func(void)
{
    return 4; /* W1055 */
}

6.720.4 Related message

  • W1053 A numeric constants is passed to an actual argument which formal argument is enumeration type.
  • W1054 A non enumeration type expression is substituted for the enumeration type.
  • W1056 An object of actual argument is different enumeration type which formal argument is enumeration type.
  • W1057 An enumeration value is substituted for different enumeration type object.
  • W1058 A different enumeration type of value is returned from a function which return value is enumeration type.
  • W1059 An enumeration value is passed to actual argument which formal argument is not enumeration type.
  • W1060 An enumeration value is returned from a function which return value is not enumeration type .
  • W1061 Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type.
  • W1062 Non constant expression is substituted for the enumeration type object.
  • W1063 The return value returned from enumeration type function to non constant expression.
  • W1064 A integer constant is used in switch statement where case label is enumeration type.
  • W1065 A value of different enumeration type is used in switch statement where case label is an enumeration type.

6.720.5 Since

1.6.0


Next: , Previous: W1055, Up: Messages

6.721 W1056

6.721.1 Message body

An object of actual argument is different enumeration type which formal argument is enumeration type.

6.721.2 Content

Under construction.

6.721.3 Sample code

enum Color { RED = 1, GREEN= 2, BLUE = 4 };
enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };

extern void func1(enum Color);

void func2(enum Season ssn)
{
    func1(ssn); /* W1056 */
}

6.721.4 Related message

  • W1053 A numeric constants is passed to an actual argument which formal argument is enumeration type.
  • W1054 A non enumeration type expression is substituted for the enumeration type.
  • W1055 A non enumeration type expression is returned from the function which return value is enumeration type.
  • W1057 An enumeration value is substituted for different enumeration type object.
  • W1058 A different enumeration type of value is returned from a function which return value is enumeration type.
  • W1059 An enumeration value is passed to actual argument which formal argument is not enumeration type.
  • W1060 An enumeration value is returned from a function which return value is not enumeration type .
  • W1061 Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type.
  • W1062 Non constant expression is substituted for the enumeration type object.
  • W1063 The return value returned from enumeration type function to non constant expression.
  • W1064 A integer constant is used in switch statement where case label is enumeration type.
  • W1065 A value of different enumeration type is used in switch statement where case label is an enumeration type.

6.721.5 Since

1.6.0


Next: , Previous: W1056, Up: Messages

6.722 W1057

6.722.1 Message body

An enumeration value is substituted for different enumeration type object.

6.722.2 Content

Under construction.

6.722.3 Sample code

enum Color { RED = 1, GREEN = 2, BLUE = 4 };
enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };

extern enum Color col;

void func(enum Season ssn)
{
    col = ssn; /* W1057 */
}

6.722.4 Related message

  • W1053 A numeric constants is passed to an actual argument which formal argument is enumeration type.
  • W1054 A non enumeration type expression is substituted for the enumeration type.
  • W1055 A non enumeration type expression is returned from the function which return value is enumeration type.
  • W1056 An object of actual argument is different enumeration type which formal argument is enumeration type.
  • W1058 A different enumeration type of value is returned from a function which return value is enumeration type.
  • W1059 An enumeration value is passed to actual argument which formal argument is not enumeration type.
  • W1060 An enumeration value is returned from a function which return value is not enumeration type .
  • W1061 Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type.
  • W1062 Non constant expression is substituted for the enumeration type object.
  • W1063 The return value returned from enumeration type function to non constant expression.
  • W1064 A integer constant is used in switch statement where case label is enumeration type.
  • W1065 A value of different enumeration type is used in switch statement where case label is an enumeration type.

6.722.5 Since

1.6.0


Next: , Previous: W1057, Up: Messages

6.723 W1058

6.723.1 Message body

A different enumeration type of value is returned from a function which return value is enumeration type.

6.723.2 Content

Under construction.

6.723.3 Sample code

enum Color { RED  = 1, GREEN = 2, BLUE = 4 };
enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };

enum Color func(enum Season ssn)
{
    return ssn; /* W1058 */
}

6.723.4 Related message

  • W1053 A numeric constants is passed to an actual argument which formal argument is enumeration type.
  • W1054 A non enumeration type expression is substituted for the enumeration type.
  • W1055 A non enumeration type expression is returned from the function which return value is enumeration type.
  • W1056 An object of actual argument is different enumeration type which formal argument is enumeration type.
  • W1057 An enumeration value is substituted for different enumeration type object.
  • W1059 An enumeration value is passed to actual argument which formal argument is not enumeration type.
  • W1060 An enumeration value is returned from a function which return value is not enumeration type .
  • W1061 Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type.
  • W1062 Non constant expression is substituted for the enumeration type object.
  • W1063 The return value returned from enumeration type function to non constant expression.
  • W1064 A integer constant is used in switch statement where case label is enumeration type.
  • W1065 A value of different enumeration type is used in switch statement where case label is an enumeration type.

6.723.5 Since

1.6.0


Next: , Previous: W1058, Up: Messages

6.724 W1059

6.724.1 Message body

An enumeration value is passed to actual argument which formal argument is not enumeration type.

6.724.2 Content

Under construction.

6.724.3 Sample code

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

extern void func1(int num);

void func2(enum Color col)
{
    func1(col); /* W1059 */
}

6.724.4 Related message

  • W1053 A numeric constants is passed to an actual argument which formal argument is enumeration type.
  • W1054 A non enumeration type expression is substituted for the enumeration type.
  • W1055 A non enumeration type expression is returned from the function which return value is enumeration type.
  • W1056 An object of actual argument is different enumeration type which formal argument is enumeration type.
  • W1057 An enumeration value is substituted for different enumeration type object.
  • W1058 A different enumeration type of value is returned from a function which return value is enumeration type.
  • W1060 An enumeration value is returned from a function which return value is not enumeration type .
  • W1061 Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type.
  • W1062 Non constant expression is substituted for the enumeration type object.
  • W1063 The return value returned from enumeration type function to non constant expression.
  • W1064 A integer constant is used in switch statement where case label is enumeration type.
  • W1065 A value of different enumeration type is used in switch statement where case label is an enumeration type.

6.724.5 Since

1.6.0


Next: , Previous: W1059, Up: Messages

6.725 W1060

6.725.1 Message body

An enumeration value is returned from a function which return value is not enumeration type .

6.725.2 Content

Under construction.

6.725.3 Sample code

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

int func2(enum Color col)
{
    return col; /* W1060 */
}

6.725.4 Related message

  • W1053 A numeric constants is passed to an actual argument which formal argument is enumeration type.
  • W1054 A non enumeration type expression is substituted for the enumeration type.
  • W1055 A non enumeration type expression is returned from the function which return value is enumeration type.
  • W1056 An object of actual argument is different enumeration type which formal argument is enumeration type.
  • W1057 An enumeration value is substituted for different enumeration type object.
  • W1058 A different enumeration type of value is returned from a function which return value is enumeration type.
  • W1059 An enumeration value is passed to actual argument which formal argument is not enumeration type.
  • W1061 Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type.
  • W1062 Non constant expression is substituted for the enumeration type object.
  • W1063 The return value returned from enumeration type function to non constant expression.
  • W1064 A integer constant is used in switch statement where case label is enumeration type.
  • W1065 A value of different enumeration type is used in switch statement where case label is an enumeration type.

6.725.5 Since

1.6.0


Next: , Previous: W1060, Up: Messages

6.726 W1061

6.726.1 Message body

Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type.

6.726.2 Content

Under construction.

6.726.3 Sample code

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

extern void func1(enum Color);

void func2(int num)
{
    func1(num); /* W1061 */
}

6.726.4 Related message

  • W1053 A numeric constants is passed to an actual argument which formal argument is enumeration type.
  • W1054 A non enumeration type expression is substituted for the enumeration type.
  • W1055 A non enumeration type expression is returned from the function which return value is enumeration type.
  • W1056 An object of actual argument is different enumeration type which formal argument is enumeration type.
  • W1057 An enumeration value is substituted for different enumeration type object.
  • W1058 A different enumeration type of value is returned from a function which return value is enumeration type.
  • W1059 An enumeration value is passed to actual argument which formal argument is not enumeration type.
  • W1060 An enumeration value is returned from a function which return value is not enumeration type .
  • W1062 Non constant expression is substituted for the enumeration type object.
  • W1063 The return value returned from enumeration type function to non constant expression.
  • W1064 A integer constant is used in switch statement where case label is enumeration type.
  • W1065 A value of different enumeration type is used in switch statement where case label is an enumeration type.

6.726.5 Since

1.6.0


Next: , Previous: W1061, Up: Messages

6.727 W1062

6.727.1 Message body

Non constant expression is substituted for the enumeration type object.

6.727.2 Content

Under construction.

6.727.3 Sample code

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

extern enum Color col;

void func(int num)
{
    col = num + 1; /* W1062 */
}

6.727.4 Related message

  • W1053 A numeric constants is passed to an actual argument which formal argument is enumeration type.
  • W1054 A non enumeration type expression is substituted for the enumeration type.
  • W1055 A non enumeration type expression is returned from the function which return value is enumeration type.
  • W1056 An object of actual argument is different enumeration type which formal argument is enumeration type.
  • W1057 An enumeration value is substituted for different enumeration type object.
  • W1058 A different enumeration type of value is returned from a function which return value is enumeration type.
  • W1059 An enumeration value is passed to actual argument which formal argument is not enumeration type.
  • W1060 An enumeration value is returned from a function which return value is not enumeration type .
  • W1061 Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type.
  • W1063 The return value returned from enumeration type function to non constant expression.
  • W1064 A integer constant is used in switch statement where case label is enumeration type.
  • W1065 A value of different enumeration type is used in switch statement where case label is an enumeration type.

6.727.5 Since

1.6.0


Next: , Previous: W1062, Up: Messages

6.728 W1063

6.728.1 Message body

The return value returned from enumeration type function to non constant expression.

6.728.2 Content

Under construction.

6.728.3 Sample code

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

enum Color func(int num)
{
    return num / 2; /* W1063 */
}

6.728.4 Related message

  • W1053 A numeric constants is passed to an actual argument which formal argument is enumeration type.
  • W1054 A non enumeration type expression is substituted for the enumeration type.
  • W1055 A non enumeration type expression is returned from the function which return value is enumeration type.
  • W1056 An object of actual argument is different enumeration type which formal argument is enumeration type.
  • W1057 An enumeration value is substituted for different enumeration type object.
  • W1058 A different enumeration type of value is returned from a function which return value is enumeration type.
  • W1059 An enumeration value is passed to actual argument which formal argument is not enumeration type.
  • W1060 An enumeration value is returned from a function which return value is not enumeration type .
  • W1061 Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type.
  • W1062 Non constant expression is substituted for the enumeration type object.
  • W1064 A integer constant is used in switch statement where case label is enumeration type.
  • W1065 A value of different enumeration type is used in switch statement where case label is an enumeration type.

6.728.5 Since

1.6.0


Next: , Previous: W1063, Up: Messages

6.729 W1064

6.729.1 Message body

A integer constant is used in switch statement where case label is enumeration type.

6.729.2 Content

Under construction.

6.729.3 Sample code

enum Color { RED, BLUE, GREEN };

int func(enum Color c)
{
    switch (c) {
    case RED: /* OK */
        return 1;
    case 1: /* W1064 */
        return 2;
    }

    return 0;
}

6.729.4 Related message

  • W1053 A numeric constants is passed to an actual argument which formal argument is enumeration type.
  • W1054 A non enumeration type expression is substituted for the enumeration type.
  • W1055 A non enumeration type expression is returned from the function which return value is enumeration type.
  • W1056 An object of actual argument is different enumeration type which formal argument is enumeration type.
  • W1057 An enumeration value is substituted for different enumeration type object.
  • W1058 A different enumeration type of value is returned from a function which return value is enumeration type.
  • W1059 An enumeration value is passed to actual argument which formal argument is not enumeration type.
  • W1060 An enumeration value is returned from a function which return value is not enumeration type .
  • W1061 Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type.
  • W1062 Non constant expression is substituted for the enumeration type object.
  • W1063 The return value returned from enumeration type function to non constant expression.
  • W1065 A value of different enumeration type is used in switch statement where case label is an enumeration type.

6.729.5 Since

1.4.0


Next: , Previous: W1064, Up: Messages

6.730 W1065

6.730.1 Message body

A value of different enumeration type is used in switch statement where case label is an enumeration type.

6.730.2 Content

Under construction.

6.730.3 Sample code

enum Color { RED, BLUE, GREEN };
enum Fruits { APPLE, BANANA, ORANGE, GRAPE };

int func(enum Color c)
{
    switch (c) {
    case RED: /* OK */
        return 1;
    case ORANGE: /* W1065 */
        return 2;
    }

    return 0;
}

6.730.4 Related message

  • W1053 A numeric constants is passed to an actual argument which formal argument is enumeration type.
  • W1054 A non enumeration type expression is substituted for the enumeration type.
  • W1055 A non enumeration type expression is returned from the function which return value is enumeration type.
  • W1056 An object of actual argument is different enumeration type which formal argument is enumeration type.
  • W1057 An enumeration value is substituted for different enumeration type object.
  • W1058 A different enumeration type of value is returned from a function which return value is enumeration type.
  • W1059 An enumeration value is passed to actual argument which formal argument is not enumeration type.
  • W1060 An enumeration value is returned from a function which return value is not enumeration type .
  • W1061 Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type.
  • W1062 Non constant expression is substituted for the enumeration type object.
  • W1063 The return value returned from enumeration type function to non constant expression.
  • W1064 A integer constant is used in switch statement where case label is enumeration type.

6.730.5 Since

1.4.0


Next: , Previous: W1065, Up: Messages

6.731 W1066

6.731.1 Message body

A value of the `float' typed compound expression is explicitly converted into a `double' value.

6.731.2 Content

Under construction.

6.731.3 Sample code

void func(float a)
{
    double b = (double) (a * a);
}

6.731.4 Related message

  • W1067 A value of the `float' typed compound expression is explicitly converted into a `long double' value.
  • W1068 A value of the `double' typed compound expression is explicitly converted into a `long double' value.

6.731.5 Since

1.14.0


Next: , Previous: W1066, Up: Messages

6.732 W1067

6.732.1 Message body

A value of the `float' typed compound expression is explicitly converted into a `long double' value.

6.732.2 Content

Under construction.

6.732.3 Sample code

void func(float a)
{
    long double b = (long double) (a * a);
}

6.732.4 Related message

  • W1066 A value of the `float' typed compound expression is explicitly converted into a `double' value.
  • W1068 A value of the `double' typed compound expression is explicitly converted into a `long double' value.

6.732.5 Since

1.14.0


Next: , Previous: W1067, Up: Messages

6.733 W1068

6.733.1 Message body

A value of the `double' typed compound expression is explicitly converted into a `long double' value.

6.733.2 Content

Under construction.

6.733.3 Sample code

void func(double a)
{
    long double b = (long double) (a * a);
}

6.733.4 Related message

  • W1066 A value of the `float' typed compound expression is explicitly converted into a `double' value.
  • W1067 A value of the `float' typed compound expression is explicitly converted into a `long double' value.

6.733.5 Since

1.14.0


Next: , Previous: W1068, Up: Messages

6.734 W1069

6.734.1 Message body

No trailing `else' clause is found in this `if-else-if' statements chain.

6.734.2 Content

Under construction.

6.734.3 Sample code

static int func(int i)
{
    if (i == 2) { /* W1069 */
        return 0;
    }
    else if (i == 4) {
        return 1;
    }
    return 2;
}

6.734.4 Related message

None.

6.734.5 Since

1.14.0


Next: , Previous: W1069, Up: Messages

6.735 W1070

6.735.1 Message body

This `switch' statement can be translated into `if-else' statement because there are only 2 execution paths.

6.735.2 Content

Under construction.

6.735.3 Sample code

switch (x) {
case 1:
    ...
    break;
default:
    ...
}

6.735.4 Related message

None.

6.735.5 Since

1.14.0


Next: , Previous: W1070, Up: Messages

6.736 W1071

6.736.1 Message body

Function `%s' has multiple termination points.

6.736.2 Content

Under construction.

6.736.3 Sample code

void foo(int i) /* W1071 */
{
    if (i == 0) {
        return;
    }
}

6.736.4 Related message

None.

6.736.5 Since

1.18.0


Next: , Previous: W1071, Up: Messages

6.737 W1072

6.737.1 Message body

`A `goto' statement is found.

6.737.2 Content

Under construction.

6.737.3 Sample code

static int func(int i)
{
    if (i == 1) {
        goto Label1; /* W1072 */
    }

    goto Label2; /* W1072 */

Label1:
    i = 10;
Label2:
    i = 20;
    return i;
}

6.737.4 Related message

None.

6.737.5 Since

1.14.0


Next: , Previous: W1072, Up: Messages

6.738 W1073

6.738.1 Message body

Return value of the function `%s' is discarded.

6.738.2 Content

Under construction.

6.738.3 Sample code

extern int bar(void);
static void foo(void)
{
    int i;
    int j;
    for (i = 0, bar(); i < 10; i++) { /* W1073 */
        j = bar(); /* OK */
    }
}

6.738.4 Related message

None.

6.738.5 Since

1.16.0


Next: , Previous: W1073, Up: Messages

6.739 W1074

6.739.1 Message body

Side-effects in `sizeof' operand will not be recorded because the operand will not be executed actually.

6.739.2 Content

Under construction.

6.739.3 Sample code

static int foo(void)
{
    int i = 0;

    if (sizeof(i++) == 4) { /* W1074 */
        return 0;
    }
    else {
        return 1;
    }
}

6.739.4 Related message

None.

6.739.5 Since

1.16.0


Next: , Previous: W1074, Up: Messages

6.740 W1075

6.740.1 Message body

This declaration has no `static' storage-class-specifier while the declaring object has internal-linkage.

6.740.2 Content

Under construction.

6.740.3 Sample code

static int func(void);
int func(void) /* W1075 */
{
    ...
}

6.740.4 Related message

None.

6.740.5 Since

1.16.0


Next: , Previous: W1075, Up: Messages

6.741 W1076

6.741.1 Message body

`%s' has internal-linkage without any prototype declarations.

6.741.2 Content

Under construction.

6.741.3 Sample code

static int func(void) /* W1076 */
{
    return 0;
}

6.741.4 Related message

None.

6.741.5 Since

1.16.0


Next: , Previous: W1076, Up: Messages

6.742 W1077

6.742.1 Message body

Declaring array object without a size.

6.742.2 Content

Under construction.

6.742.3 Sample code

extern int a[]; /* W1077 */

6.742.4 Related message

None.

6.742.5 Since

1.16.0


Next: , Previous: W1077, Up: Messages

6.743 W9001

6.743.1 Message body

Control never reaches to this statement.

6.743.2 Content

Under construction.

6.743.3 Sample code

extern int all_possible_values_of_int(void);
extern unsigned int zero_if_succeeded(void);

void func(void)
{
    int i = all_possible_values_of_int();

    if (i < 0) {
        unsigned int ui = zero_if_succeeded();

        if (ui > 0) {
            return;
        }

        /* "ui" is equal to zero at this point */

        /* Always be true?  No, it'll be false all the time */
        if (i < ui) {
            return; /* W9001: Control never reaches here! */
        }
        /*
         * ISO standard says;
         *   Usual Arithmetic Conversion performed before evaluating
         *   the expression "i < ui".
         * Usual Arithmetic Conversion makes "i < ui" into
         * "(unsigned int) i < ui" and then the value of "i" which
         * is less than 0 will be converted into a new value which
         * is greater than 0 because of the wrap-around.
         * So, the expression ("a value greater than 0" < 0) makes
         * always false.
         */
    }
}

6.743.4 Related message

None.

6.743.5 Since

1.0.0


Next: , Previous: W9001, Up: Messages

6.744 W9002

6.744.1 Message body

There is no line feed character at the end of file.

6.744.2 Content

Under construction.

6.744.3 Sample code

Under construction.

6.744.4 Related message

None.

6.744.5 Since

1.0.0


Next: , Previous: W9002, Up: Messages

6.745 W9003

6.745.1 Message body

An object typed `%s' is implicitly converted into an object of type `%s'.

6.745.2 Content

This message indicates that an implicit conversion from or to an object of the non-standard type will occur.

6.745.3 Sample code

enum Color { RED, BLUE, GREEN };
enum Fruit { APPLE, BANANA, ORANGE };

extern void foo(enum Color);

static void bar(void)
{
    int i = RED; /* W9003 */
    foo(ORANGE); /* W9003 */
}

6.745.4 Related message

None.

6.745.5 Since

1.12.0


Next: , Previous: W9003, Up: Messages

6.746 C0001

6.746.1 Message body

A warning is detected as a pair of this identifier `%s'.

6.746.2 Content

Under construction.

6.746.3 Sample code

int very_long_long_long_long_long_long_long_identifier_1 = 0; /* C0001 */
int very_long_long_long_long_long_long_long_identifier_2 = 1; /* W0052 */

6.746.4 Related message

  • W0051 An external identifier `%s' cannot distinguish other identifier name from the range of number of characters defined in linker property.
  • W0052 An identifier `%s' cannot distinguish other identifier name from the range of number of characters defined in compile property.

6.746.5 Since

1.0.0


Next: , Previous: C0001, Up: Messages

6.747 C1000

6.747.1 Message body

Warning above is detected in the following context.

6.747.2 Content

This message indicates that the above W0093, W0096, W0097, W0115, W0116, W0421, W0422, W0423, W0424, W0459, W0460, W0461, W0462, W0568, W0569, W0570, W0607, W0608, W0705, W0707, W0720, W0745, W1049 and W1050 warnings are detected in the context described by the following messages.

6.747.3 Sample code

 1: int foo(int i)
 2: {
 3:     int j; /* C1003 */
 4:
 5:     if (i < 0) { /* C1001 */
 6:         if (i < -10) { /* C1002 */
 7:             j = 2;
 8:         }
 9:         else if (i < -5) { /* C1002 */
10:             j = 3;
11:         }
12:     }
13:     else {
14:         j = 1;
15:     }
16:
17:     return j; /* W0460 */
18: }

a.c:17:12:warning:c_builtin:W0460:UNC:X99:A value of variable `j' wouldn't set when this expression is evaluated.
:::context:c_builtin:C1000:INF:X99:Warning above is detected in the following context.
a.c:3:9:context:c_builtin:C1003:INF:X99:The problematic variable is defined here without initializer.
a.c:5:11:context:c_builtin:C1001:INF:X99:This controlling-expression is evaluated to be true.
a.c:6:15:context:c_builtin:C1002:INF:X99:This controlling-expression is evaluated to be false.
a.c:9:20:context:c_builtin:C1002:INF:X99:This controlling-expression is evaluated to be false.

6.747.4 Related message

  • C1001 This controlling-expression is evaluated to be true.
  • C1002 This controlling-expression is evaluated to be false.
  • C1003 The problematic variable is defined here without initializer.
  • C1004 NULL value is assigned to the the problematic variable.
  • C1005 A value possibly be NULL is assigned to the problematic variable.
  • C1006 New value is assigned to the problematic variable.

6.747.5 Since

3.2.0


Next: , Previous: C1000, Up: Messages

6.748 C1001

6.748.1 Message body

This controlling-expression is evaluated to be true.

6.748.2 Content

This message indicates that the controlling-expression was evaluated as true in the context of detecting W0093, W0096, W0097, W0115, W0116, W0421, W0422, W0423, W0424, W0459, W0460, W0461, W0462, W0568, W0569, W0570, W0607, W0608, W0705, W0707, W0720, W0745, W1049 and W1050 warnings.

6.748.3 Sample code

int foo(int i)
{
    int j; /* C1003 */

    if (i < 0) { /* C1001 */
        if (i < -10) { /* C1002 */
            j = 2;
        }
        else if (i < -5) { /* C1002 */
            j = 3;
        }
    }
    else {
        j = 1;
    }

    return j; /* W0460 */
}

6.748.4 Related message

  • W0093 This expression may cause division-by-zero.
  • W0096 It divided by a constant expression which definitely zero.
  • W0097 This expression must cause division-by-zero.
  • W0115 Unsigned left shift operator `<<' drop the high-order bit.
  • W0116 Unsigned left shift operator `<<' can be drop high-order bit.
  • W0421 Value of the dereferencing pointer must be NULL.
  • W0422 Value of the dereferencing pointer may be NULL.
  • W0423 Arithmetic operation is being made to the pointer which its value will be NULL.
  • W0424 Arithmetic operation is being made to the pointer which its value might be NULL.
  • W0459 A value of variable `%s' doesn't set when this expression is evaluated. This program is danger.
  • W0460 A value of variable `%s' wouldn't set when this expression is evaluated.
  • W0461 A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger.
  • W0462 A pointer which the value will probably not set is used for the actual argument of the function.
  • W0568 The result of left shift operation against the signed constant expression value is undefined.
  • W0569 The result of left shift operation against the signed expression value is undefined.
  • W0570 This signed left shift operation may make undefined value.
  • W0607 An integer expression which the value which the value is minus converted to unsigned type.
  • W0608 An integer expression which the value might be minus converted to unsigned type.
  • W0705 This non-constant array subscript may cause out-of-range access.
  • W0707 This constant array subscript must cause out-of-range access.
  • W0720 The value with floating-point type doesn't fit in the range of converted type.
  • W0745 This non-constant array subscript may cause out-of-range access.
  • W1049 The result of conversion to signed integer type in integer expression might not be expressed by a signed type.
  • W1050 The result of conversion to signed integer type in integer expression is not express by a signed type.

6.748.5 Since

3.2.0


Next: , Previous: C1001, Up: Messages

6.749 C1002

6.749.1 Message body

This controlling-expression is evaluated to be false.

6.749.2 Content

This message indicates that the controlling-expression was evaluated as false in the context of detecting W0093, W0096, W0097, W0115, W0116, W0421, W0422, W0423, W0424, W0459, W0460, W0461, W0462, W0568, W0569, W0570, W0607, W0608, W0705, W0707, W0720, W0745, W1049 and W1050 warnings.

6.749.3 Sample code

int foo(int i)
{
    int j; /* C1003 */

    if (i < 0) { /* C1001 */
        if (i < -10) { /* C1002 */
            j = 2;
        }
        else if (i < -5) { /* C1002 */
            j = 3;
        }
    }
    else {
        j = 1;
    }

    return j; /* W0460 */
}

6.749.4 Related message

  • W0093 This expression may cause division-by-zero.
  • W0096 It divided by a constant expression which definitely zero.
  • W0097 This expression must cause division-by-zero.
  • W0115 Unsigned left shift operator `<<' drop the high-order bit.
  • W0116 Unsigned left shift operator `<<' can be drop high-order bit.
  • W0421 Value of the dereferencing pointer must be NULL.
  • W0422 Value of the dereferencing pointer may be NULL.
  • W0423 Arithmetic operation is being made to the pointer which its value will be NULL.
  • W0424 Arithmetic operation is being made to the pointer which its value might be NULL.
  • W0459 A value of variable `%s' doesn't set when this expression is evaluated. This program is danger.
  • W0460 A value of variable `%s' wouldn't set when this expression is evaluated.
  • W0461 A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger.
  • W0462 A pointer which the value will probably not set is used for the actual argument of the function.
  • W0568 The result of left shift operation against the signed constant expression value is undefined.
  • W0569 The result of left shift operation against the signed expression value is undefined.
  • W0570 This signed left shift operation may make undefined value.
  • W0607 An integer expression which the value which the value is minus converted to unsigned type.
  • W0608 An integer expression which the value might be minus converted to unsigned type.
  • W0705 This non-constant array subscript may cause out-of-range access.
  • W0707 This constant array subscript must cause out-of-range access.
  • W0720 The value with floating-point type doesn't fit in the range of converted type.
  • W0745 This non-constant array subscript may cause out-of-range access.
  • W1049 The result of conversion to signed integer type in integer expression might not be expressed by a signed type.
  • W1050 The result of conversion to signed integer type in integer expression is not express by a signed type.

6.749.5 Since

3.2.0


Next: , Previous: C1002, Up: Messages

6.750 C1003

6.750.1 Message body

The problematic variable is defined here without initializer.

6.750.2 Content

This message indicates where the problematic variable is defined in the context of detecting W0459, W0460, W0461 and W0462 warnings.

6.750.3 Sample code

int foo(int i)
{
    int j; /* C1003 */

    if (i < 0) { /* C1001 */
        if (i < -10) { /* C1002 */
            j = 2;
        }
        else if (i < -5) { /* C1002 */
            j = 3;
        }
    }
    else {
        j = 1;
    }

    return j; /* W0460 */
}

6.750.4 Related message

  • W0459 A value of variable `%s' doesn't set when this expression is evaluated. This program is danger.
  • W0460 A value of variable `%s' wouldn't set when this expression is evaluated.
  • W0461 A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger.
  • W0462 A pointer which the value will probably not set is used for the actual argument of the function.

6.750.5 Since

3.2.0


Next: , Previous: C1003, Up: Messages

6.751 C1004

6.751.1 Message body

NULL value is assigned to the the problematic variable.

6.751.2 Content

This message indicates where the NULL value was assigned to the problematic variable in the context of detecting W0421, W0422, W0423 and W0424 warnings.

6.751.3 Sample code

extern int *bar(void);
extern int *baz(void);

void foo(int i)
{
    int *p = NULL; /* C1004 */

    if (i < 0) { /* C1002 */
        p = bar();
        if (!p) {
            return;
        }
    }
    else {
        p = baz(); /* C1005 */
    }

    *p += 2; /* W0422 */
}

6.751.4 Related message

  • W0421 Value of the dereferencing pointer must be NULL.
  • W0422 Value of the dereferencing pointer may be NULL.
  • W0423 Arithmetic operation is being made to the pointer which its value will be NULL.
  • W0424 Arithmetic operation is being made to the pointer which its value might be NULL.

6.751.5 Since

3.2.0


Next: , Previous: C1004, Up: Messages

6.752 C1005

6.752.1 Message body

A value possibly be NULL is assigned to the problematic variable.

6.752.2 Content

This message indicates where the value possibly be NULL was assigned to the problematic variable in the context of detecting W0421, W0422, W0423 and W0424 warnings.

6.752.3 Sample code

extern int *bar(void);
extern int *baz(void);

void foo(int i)
{
    int *p = NULL; /* C1004 */

    if (i < 0) { /* C1002 */
        p = bar();
        if (!p) {
            return;
        }
    }
    else {
        p = baz(); /* C1005 */
    }

    *p += 2; /* W0422 */
}

6.752.4 Related message

  • W0421 Value of the dereferencing pointer must be NULL.
  • W0422 Value of the dereferencing pointer may be NULL.
  • W0423 Arithmetic operation is being made to the pointer which its value will be NULL.
  • W0424 Arithmetic operation is being made to the pointer which its value might be NULL.

6.752.5 Since

3.2.0


Previous: C1005, Up: Messages

6.753 C1006

6.753.1 Message body

New value is assigned to the problematic variable.

6.753.2 Content

This message indicates where a value was assigned to the problematic variable in the context of detecting W0093, W0096, W0097, W0115, W0116, W0568, W0569, W0570, W0607, W0608, W0705, W0707, W0720, W0745, W1049 and W1050 warnings.

6.753.3 Sample code

int foo(int i)
{
    int j = 0; /* C1006 */

    if (i < 0) { /* C1002 */
        j = -i;
    }
    else if (i > 0) { /* C1002 */
        j = i;
    }

    return 5 / j; /* W0093 */
}

6.753.4 Related message

  • W0093 This expression may cause division-by-zero.
  • W0096 It divided by a constant expression which definitely zero.
  • W0097 This expression must cause division-by-zero.
  • W0115 Unsigned left shift operator `<<' drop the high-order bit.
  • W0116 Unsigned left shift operator `<<' can be drop high-order bit.
  • W0568 The result of left shift operation against the signed constant expression value is undefined.
  • W0569 The result of left shift operation against the signed expression value is undefined.
  • W0570 This signed left shift operation may make undefined value.
  • W0607 An integer expression which the value which the value is minus converted to unsigned type.
  • W0608 An integer expression which the value might be minus converted to unsigned type.
  • W0705 This non-constant array subscript may cause out-of-range access.
  • W0707 This constant array subscript must cause out-of-range access.
  • W0720 The value with floating-point type doesn't fit in the range of converted type.
  • W0745 This non-constant array subscript may cause out-of-range access.
  • W1049 The result of conversion to signed integer type in integer expression might not be expressed by a signed type.
  • W1050 The result of conversion to signed integer type in integer expression is not express by a signed type.

6.753.5 Since

3.2.0


Next: , Previous: Messages, Up: Top

7 Metrics List


Next: , Up: Metrics

7.1 FL_STMT

7.1.1 Metric name

Number of statements

7.1.2 Content

The number which it recognized as statements by syntax rule in a file.

7.1.3 Sample code

int foo(int a)
{
    int i = 0;  /* A declaration is not a statement */

    if (a > 0) {  /* An if-else-statement makes FL_STMT += 1 */
        i = a + 1;  /* An expression-statement makes FL_STMT += 1 */
    }
    else {
        ;  /* An empty expression-statement makes FL_STMT += 1 */
    }

    return i;  /* A jump-statement makes FL_STMT += 1 */
}

/* Now, FL_STMT == 4 */

void bar(int a)
{
    struct {  /* A declaration is not a statement */
        int i;
    } s;

    /* A for-statement which has 2 expression-statements (`s.i=0;' and `s.i<a;') makes FL_STMT += 3 */
    for (s.i = 0; s.i < a; s.i++) {
        switch (s.i % 3) {  /* A switch-statement makes FL_STMT += 1 */
        case 0:             /* A label is part of a labeled-statement, but it makes FL_STMT += 1 */
            puts("A\n");    /* A labeled expression-statement makes FL_STMT += 1 */
            break;          /* A jump-statement makes FL_STMT += 1 */
        case 1:             /* A label is part of a labeled-statement, but it makes FL_STMT += 1 */
            puts("B\n");    /* A labeled expression-statement makes FL_STMT += 1 */
            break;          /* A jump-statement makes FL_STMT += 1 */
        case 2:             /* A label is part of a labeled-statement, but it makes FL_STMT += 1 */
            puts("C\n");    /* A labeled expression-statement makes FL_STMT += 1 */
            break;          /* A jump-statement makes FL_STMT += 1 */
        }
    }
}

/* Finally, FL_STMT == 17 */
     MET,FL_STMT,test.c,17

7.1.4 Since

1.0.0


Next: , Previous: FL_STMT, Up: Metrics

7.2 FL_FUNC

7.2.1 Metric name

Number of functions

7.2.2 Content

The number of function which defined in a file.

7.2.3 Sample code

void foo(void) {}  /* A function-definition makes FL_FUNC += 1 */

static void bar(void) {}  /* A function-definition makes FL_FUNC += 1 */

extern void baz(void);  /* A declaration is not a function-definition */

int qux(a, b)  /* An old style function-definition makes FL_FUNC += 1 */
    int a, b;
{
    return a + b;
}

/* FL_FUNC == 3 */
     MET,FL_FUNC,test.c,3

7.2.4 Since

1.0.0


Next: , Previous: FL_FUNC, Up: Metrics

7.3 FN_STMT

7.3.1 Metric name

Number of statements

7.3.2 Content

The number which it recognized as statements by syntax rule in a function.

7.3.3 Sample code

int foo(int a)
{
    int i = 0;  /* A declaration is not a statement */

    if (a > 0) {  /* An if-else-statement makes foo's FN_STMT += 1 */
        i = a + 1;  /* An expression-statement makes foo's FN_STMT += 1 */
    }
    else {
        ;  /* An empty expression-statement makes foo's FN_STMT += 1 */
    }

    return i;  /* A jump-statement makes foo's FN_STMT += 1 */

    /* foo's FN_STMT == 4 */
}

void bar(int a)
{
    struct {  /* A declaration is not a statement */
        int i;
    } s;

    /* A for-statement which has 2 expression-statements (`s.i=0;' and * `s.i<a;') makes bar's FN_STMT += 3 */
    for (s.i = 0; s.i < a; s.i++) {
        switch (s.i % 3) {  /* A switch-statement makes bar's FN_STMT += 1 */
        case 0:             /* A label is part of a labeled-statement, but it makes bar's FN_STMT += 1 */
            puts("A\n");    /* A labeled expression-statement makes bar's FN_STMT += 1 */
            break;          /* A jump-statement makes bar's FN_STMT += 1 */
        case 1:             /* A label is part of a labeled-statement, but it makes bar's FN_STMT += 1 */
            puts("B\n");    /* A labeled expression-statement makes bar's FN_STMT += 1 */
            break;          /* A jump-statement makes bar's FN_STMT += 1 */
        case 2:             /* A label is part of a labeled-statement, but it makes bar's FN_STMT += 1 */
            puts("C\n");    /* A labeled expression-statement makes bar's FN_STMT += 1 */
            break;          /* A jump-statement makes bar's FN_STMT += 1 */
        }
    }

    /* bar's FN_STMT == 13 */
}
     MET,FN_STMT,foo,int foo(int),test.c,1,5,4
     MET,FN_STMT,bar,void bar(int),test.c,14,6,13

7.3.4 Since

1.0.0


Next: , Previous: FN_STMT, Up: Metrics

7.4 FN_UNRC

7.4.1 Metric name

Number of unreached statements

7.4.2 Content

The number of statements which it not run in any condition.

7.4.3 Sample code

#include <stdlib.h>

int foo(int i)
{
    unsigned int ui;

    if (i < 0) {
        switch (i) {
        case -3:
            ui = 0;
            break;
        /* Control never reaches to this "case 3:" clause because "i" is less than 0 at this point */
        case 3:      /* This label is part of an unreachable labeled-statement, but it makes foo's FN_UNRC += 1 */
            ui = 1;  /* An unreachable labeled expression-statement makes FN_UNRC += 1 */
            break;   /* An unreachable jump-statement makes FN_UNRC += 1 */
        default:
            ui = 0;
        }

        /* "ui" is equal to 0 at this point */

        /*
         * The usual-arithmetic-conversion makes "i < ui" into "(unsigned int) i < ui".
         * Then, the value of "i" which is less than 0 will be converted into the new value which is greater than 0
         * because of the wrap-around.
         * So, "(value which is greater than 0) < 0" makes false at all times.
         */
        if (i < ui) {
            exit(0);  /* An unreachable expression-statement makes FN_UNRC += 1 */
        }
    }
    else {
        /* "i" is greater than or equal to 0 at this point */

        abort();  /* The abort() standard function terminates this execution path */
    }

    /* "i" is less than 0 at this point */

    if (i == 3) {   /* "(value which is less than 0) == 3" makes false at all times */
        return -1;  /* An unreachable jump-statement makes FN_UNRC += 1 */
    }

    return 0;

    /* foo's FN_UNRC == 5 */
}
     MET,FN_UNRC,foo,int foo(int),test.c,3,5,5

7.4.4 Since

1.0.0


Next: , Previous: FN_UNRC, Up: Metrics

7.5 FN_LINE

7.5.1 Metric name

Number of lines

7.5.2 Content

Physical lines from the beginning of a line to the end of a line in a function definition.

7.5.3 Sample code

int foo(void)  /* foo's function definition starts here */
{
    return 0;
}  /* foo's function definition ends here */

/* foo's FN_LINE == 3 */

int
bar  /* bar's function definition starts here */
(void)
{
    return 0;
}  /* bar's function definition ends here */

/* bar's FN_LINE == 5 */

int
baz  /* baz's old style function definition starts here */
(a)
int a;
{
    return 0;
}  /* baz's old style function definition ends here */

/* baz's FN_LINE == 6 */
     MET,FN_LINE,foo,int foo(void),test.c,1,5,3
     MET,FN_LINE,bar,int bar(void),test.c,8,1,5
     MET,FN_LINE,baz,int baz(int),test.c,17,1,6

7.5.4 Since

1.0.0


Next: , Previous: FN_LINE, Up: Metrics

7.6 FN_PARA

7.6.1 Metric name

Number of parameters

7.6.2 Content

The number of formal arguments in the argument list of function declaration.

7.6.3 Sample code

int foo(int a, long b, char *p)
{
    return 0;
}
/* foo's FN_PARA == 3 */

int bar(a, b, p)  /* An old style function definition */
    long b;  /* A type-specifier of "a" is omitted */
    char *p;
{
    return 0;
}
/* bar's FN_PARA == 3 */
     MET,FN_PARA,foo,"int foo(int,long,char *)",test.c,1,5,3
     MET,FN_PARA,bar,"int bar(int,long,char *)",test.c,6,5,3

7.6.4 Since

1.0.0


Next: , Previous: FN_PARA, Up: Metrics

7.7 FN_UNUV

7.7.1 Metric name

Number of not use /not reuse variables

7.7.2 Content

The number of not used function and variables which assigned the value.

7.7.3 Sample code

void foo(int i, int j)  /* A useless declaration of "j" makes FN_UNUV += 1 */
{
    int a;
    int b;
    int c = 0;  /* A useless declaration of "c" makes FN_UNUV += 1 */

    if (i < 0) {
        a = -i;
    }
    else {
        a = i;
    }

    b = a * 2;  /* A useless assignment to "b" makes FN_UNUV += 1 */
    printf("%d\n", a);

    /* foo's FN_UNUV == 3 */
}
     MET,FN_UNUV,foo,"void foo(int,int)",test.c,1,6,3

7.7.4 Since

1.0.0


Next: , Previous: FN_UNUV, Up: Metrics

7.8 FN_CSUB

7.8.1 Metric name

Location number of call function

7.8.2 Content

The number of calling other function in a function,

7.8.3 Sample code

extern int foo(int);

static int bar(int);

int baz(int i)
{
    int j = foo(i);  /* A function-call-expression makes baz's FN_CSUB += 1 */

    return foo(bar(j)); /* 2 function-call-expressions makes baz's FN_CSUB += 2 */

    /* baz's FN_CSUB == 3 */
}
     MET,FN_CSUB,baz,int baz(int),test.c,5,5,3

7.8.4 Since

1.0.0


Next: , Previous: FN_CSUB, Up: Metrics

7.9 FN_CALL

7.9.1 Metric name

Location number of called from function

7.9.2 Content

The number of called from other function of the project.

7.9.3 Sample code

test1.c

int foo(int i) { return i + 1; }

int bar(int i)
{
    return foo(i) + 1;  /* A function-call-expression makes foo's FN_CALL += 1 */
}

test2.c

extern int bar(int);

static void baz(void)
{
    int i = bar(0);  /* A function-call-expression makes bar's FN_CALL += 1 and foo's FN_CALL += 1 */
}

project-name.met.csv

     MET,FN_CALL,foo,int foo(int),test1.c,1,5,2
     MET,FN_CALL,bar,int bar(int),test1.c,3,5,1
     MET,FN_CALL,baz,void baz(void),test2.c,3,13,0

7.9.4 Since

1.0.0


Next: , Previous: FN_CALL, Up: Metrics

7.10 FN_GOTO

7.10.1 Metric name

Number of goto statement

7.10.2 Content

The number of goto statement in a function.

7.10.3 Sample code

int foo(int i)
{
    switch (i) {
    case 0:
        goto ZERO;  /* A goto-statement makes foo's FN_GOTO += 1 */
    case 1:
        goto ONE;   /* A goto-statement makes foo's FN_GOTO += 1 */
    default:
        return 0;
    }

ZERO:
    return 1;

ONE:
    return 2;

    /* foo's FN_GOTO == 2 */
}
     MET,FN_GOTO,foo,int foo(int),test.c,1,5,2

7.10.4 Since

1.0.0


Next: , Previous: FN_GOTO, Up: Metrics

7.11 FN_RETN

7.11.1 Metric name

Number of return point in a function

7.11.2 Content

The number of executable return-statements and implicit return-statements at the end of a function.

7.11.3 Sample code

void foo(int i)
{
    if (i < 0) {
        return;  /* A return-statement makes foo's FN_RETN += 1 */
    }

    if (i >= 10) {
        return;  /* A return-statement makes foo's FN_RETN += 1 */
    }
    else {
        for (; i < 10; i++) {
          printf("%d\n", i);
        }
    }

    /* An implicit return from the function whose return type is void makes foo's FN_RETN * += 1 */

    /* foo's FN_RETN == 3 */
}

int bar(int i)
{
    if (i < 0) {
        return -1;  /* A return-statement makes bar's FN_RETN += 1 */
    }

    if (i >= 10) {
        return -1;  /* A return-statement makes bar's FN_RETN += 1 */
    }
    else {
        for (; i < 10; i++) {
          printf("%d\n", i);
        }
    }

    return 0;  /* A return-statement makes bar's FN_RETN += 1 */

    /* bar's FN_RETN == 3 */
}
     MET,FN_RETN,foo,void foo(int),test.c,1,6,3
     MET,FN_RETN,bar,int bar(int),test.c,20,5,3

7.11.4 Since

1.0.0


Next: , Previous: FN_RETN, Up: Metrics

7.12 FN_UELS

7.12.1 Metric name

Number of if-statement without else-clause

7.12.2 Content

The number of if-statements which have no explicit else-clause.

7.12.3 Sample code

int foo(int i)
{
    int j;

    if (i < 0) {
        return -1;
    }
    else {
        j = i + 1;
    }

    if (j % 2) {
        return -1;
    }
    /* A standalone if-statement does nothing to the FN_UELS metric */

    if (i == 2) {
        return 0;
    }
    else if (i == 4) {
        return 1;
    }
    /* An implicit else clause makes foo's FN_UELS += 1 */

    return 5;

    /* foo's FN_UELS == 1 */
}
     MET,FN_UELS,foo,int foo(int),test.c,1,5,1

7.12.4 Since

1.0.0


Next: , Previous: FN_UELS, Up: Metrics

7.13 FN_NEST

7.13.1 Metric name

Maximum number of nest of control flow graph

7.13.2 Content

The deepest nesting of control structure in a function.

7.13.3 Sample code

void foo(int i)
{
    /* Nesting level == 0 */

    if (i < 0) {
        /* Nesting level == 1 */

        switch (i) {
            /* Nesting level == 2 */
        case -1:
            return;
        case -2:
            puts("A\n");
            break;
        }

        /* Nesting level == 1 */
    }
    else {
        /* Nesting level == 1 */
        int j;
        int k;

        for (j = 0; j < i; j++) {
            /* Nesting level == 2 */

            for (k = 0; k < 10; k++) {
                /* Nesting level == 3 */

                if (j == k) {
                    /* Nesting level == 4 */
                    puts("B\n");
                }
            }
        }
    }

    /* foo's FN_NEST == 4 */
}
     MET,FN_NEST,foo,void foo(int),test.c,1,6,4

7.13.4 Since

1.0.0


Next: , Previous: FN_NEST, Up: Metrics

7.14 FN_PATH

7.14.1 Metric name

Presumed number of static path

7.14.2 Content

The number of possible execute paths in a function.

7.14.3 Sample code

static int foo(int i)
{
    /* A */
    if (i == 0) {
        /* B */
        i = 0;
    }
    else {
        /* C */
        i = 1;
    }
    /* D */
    return i;

    /* Possible execute paths A->B->D and A->C->D makes foo's FN_PATH = 2 */
}

static int bar(int i)
{
    /* A */
    if (i == 0) {
        /* B */
        i = 0;
    }
    /* C */
    if (i == 1) {
        /* D */
        i = 1;
    }
    /* E */
    if (i == 2) {
        /* F */
        i = 2;
    }
    /* G */
    return i;

    /* Possible execute paths
         A->B->C->D->E->F->G,
         A->B->C->D->E->G,
         A->B->C->E->F->G,
         A->B->C->E->G,
         A->C->D->E->F->G,
         A->C->D->E->G,
         A->C->E->F->G,
         A->C->E->G
       makes bar's FN_PATH = 8 */
}

static int baz(int i)
{
    /* A */
    switch (i) {
    case 0:
        /* B */
        if (rand()) {
            /* C */
            i = 0;
        }
        else {
            /* D */
            i = 0;
        }
        /* E */
        i = 0;
        break;
    default:
        /* F */
        if (rand()) {
            /* G */
            i = 1;
        }
        else {
            /* H */
            i = 1;
        }
        /* I */
        i = 1;
        break;
    }
    /* J */
    return i;

    /* Possible execute paths
         A->B->C->E->J,
         A->B->D->E->J,
         A->F->G->I->J,
         A->F->H->I->J
       makes baz's FN_PATH = 4 */
}

static int qux(int i)
{
    /* A */
    while (i < 5) {
        /* B */
        if (i == 0) {
            /* C */
            return 0;
        }
        /* D */
        if (i == 1) {
            /* E */
            return 1;
        }
    }
    /* F */
    if (i == 2) {
        /* G */
        return 2;
    }
    /* H */
    return 3;

    /* Possible execute paths
         A->B->C,
         A->B->D->E,
         A->B->D->F->G,
         A->B->D->F->H,
         A->F->G,
         A->F->H
       makes qux's FN_PATH = 6 */
}
     MET,FN_PATH,foo,int foo(int),test.c,1,12,2
     MET,FN_PATH,bar,int bar(int),test.c,18,12,8
     MET,FN_PATH,baz,int baz(int),test.c,42,12,4
     MET,FN_PATH,qux,int qux(int),test.c,80,12,6

7.14.4 Since

1.0.0


Previous: FN_PATH, Up: Metrics

7.15 FN_CYCM

7.15.1 Metric name

Cyclomatic complexity

7.15.2 Content

The number of linearly independent paths through a program's source code. It was developed by McCabe.


calculating formula is (the number of edges of the graph) - (the number of nodes of the graph) + 2. It equals the number of branch in a function + 1.

7.15.3 Sample code

static int foo(int i)
{
    if (i == 0) {  /* Complexity += 1 */
        i = 0;
    }
    else {  /* An else branch does not grow the complexity */
        i = 1;
    }
    return i;

    /* foo's FN_CYCM == 2 */
}

static int bar(int i)
{
    if (i == 0) {  /* Complexity += 1 */
        i = 0;
    }
    if (i == 1) {  /* Complexity += 1 */
        i = 1;
    }
    if (i == 2) {  /* Complexity += 1 */
        i = 2;
    }
    return i;

    /* bar's FN_CYCM == 4 */
}

static int baz(int i)
{
    switch (i) {
    case 0:  /* Complexity += 1 */
        if (rand()) {  /* Complexity += 1 */
            i = 0;
        }
        else {  /* An else branch does not grow the complexity */
            i = 0;
        }
        i = 0;
        break;
    default:  /* A default clause does not grow the complexity */
        if (rand()) {  /* Complexity += 1 */
            i = 1;
        }
        else {  /* An else branch does not grow the complexity */
            i = 1;
        }
        i = 1;
        break;
    }
    return i;

    /* baz's FN_CYCM == 4 */
}

static int qux(int i)
{
    while (i < 5) {  /* An iteration does not grow the complexity */
        if (i == 0) {  /* Complexity += 1 */
            return 0;
        }
        if (i == 1) {  /* Complexity += 1 */
            return 1;
        }
    }
    if (i == 2) {  /* Complexity += 1 */
        return 2;
    }
    return 3;

    /* qux's FN_CYCM == 4 */
}
     MET,FN_CYCM,foo,int foo(int),test.c,1,12,2
     MET,FN_CYCM,bar,int bar(int),test.c,13,12,4
     MET,FN_CYCM,baz,int baz(int),test.c,28,12,4
     MET,FN_CYCM,qux,int qux(int),test.c,54,12,4

7.15.4 Since

1.0.0


Next: , Previous: Metrics, Up: Top

8 Code structure list


Next: , Up: CodeStructures

8.1 VER

8.1.1 Code structure information name

Version Records

8.1.2 Content

Under construction.

8.1.3 Sample code

Refer to output example of Version Records.

8.1.4 Since

1.0.0


Next: , Previous: VER, Up: CodeStructures

8.2 DCL(T)

8.2.1 Code structure information name

Type declaration records

8.2.2 Content

Under construction.

8.2.3 Sample code

Refer to output example of Type declaration records.

8.2.4 Since

1.0.0


Next: , Previous: DCL(T), Up: CodeStructures

8.3 DCL(V)

8.3.1 Code structure information name

Variable declaration records

8.3.2 Content

Under construction.

8.3.3 Sample code

Refer to output example of Variable declaration records.

8.3.4 Since

1.0.0


Next: , Previous: DCL(V), Up: CodeStructures

8.4 DCL(F)

8.4.1 Code structure information name

Function declaration records

8.4.2 Content

Under construction.

8.4.3 Sample code

Refer to output example of Function declaration records.

8.4.4 Since

1.0.0


Next: , Previous: DCL(F), Up: CodeStructures

8.5 DEF(V)

8.5.1 Code structure information name

Variable definition records

8.5.2 Content

Under construction.

8.5.3 Sample code

Refer to output example of Variable definition records.

8.5.4 Since

1.0.0


Next: , Previous: DEF(V), Up: CodeStructures

8.6 DEF(F)

8.6.1 Code structure information name

Function definition records

8.6.2 Content

Under construction.

8.6.3 Sample code

Refer to output example of Function definition records.

8.6.4 Since

1.0.0


Next: , Previous: DEF(F), Up: CodeStructures

8.7 DEF(M)

8.7.1 Code structure information name

Macro definition records

8.7.2 Content

Under construction.

8.7.3 Sample code

Refer to Macro definition records.

8.7.4 Since

1.0.0


Next: , Previous: DEF(M), Up: CodeStructures

8.8 DEF(L)

8.8.1 Code structure information name

Label definition records

8.8.2 Content

Under construction.

8.8.3 Sample code

Refer to output example of Lael definition records.

8.8.4 Since

1.0.0


Next: , Previous: DEF(L), Up: CodeStructures

8.9 INI

8.9.1 Code structure information name

Initialize records

8.9.2 Content

Under construction.

8.9.3 Sample code

Refer to output example of Initialize records.

8.9.4 Since

1.0.0


Next: , Previous: INI, Up: CodeStructures

8.10 ASN

8.10.1 Code structure information name

Assignment records

8.10.2 Content

Under construction.

8.10.3 Sample code

Refer to output example of Assignment records.

8.10.4 Since

1.0.0


Next: , Previous: ASN, Up: CodeStructures

8.11 DEP(I)

8.11.1 Code structure information name

Include record

8.11.2 Content

Under construction.

8.11.3 Sample code

Refer to output example of include records.

8.11.4 Since

1.0.0


Next: , Previous: DEP(I), Up: CodeStructures

8.12 DEP(C)

8.12.1 Code structure information name

Caller function records

8.12.2 Content

Under construction.

8.12.3 Sample code

Refer to output example of caller records.

8.12.4 Since

1.0.0


Next: , Previous: DEP(C), Up: CodeStructures

8.13 DEP(X)

8.13.1 Code structure information name

...

8.13.2 Content

Under construction.

8.13.3 Sample code

Refer to output example of Dependency records.

8.13.4 Since

1.0.0


Next: , Previous: DEP(X), Up: CodeStructures

8.14 LIT

8.14.1 Code structure information name

...

8.14.2 Content

Under construction.

8.14.3 Sample code

Refer to output example of Literal records.

8.14.4 Since

1.0.0


Previous: LIT, Up: CodeStructures

8.15 PRE

8.15.1 Code structure information name

...

8.15.2 Content

Under construction.

8.15.3 Sample code

Refer to output example of preprocessed records.

8.15.4 Since

1.0.0


Next: , Previous: CodeStructures, Up: Top

Appendix A Appendix

A.1 Screen shot

A.1.1 Collaboration with Adqua

Static analysis result of AdLint can use measure the source quality by processing Adqua. (Adqua supports only Japanese)

adlint_on_adqua.png

A.1.2 Collaboration with Vim - text editor

Adlint p

The format of AdLint's warning message is same as the standard compiler, so it's easy to collaborate with text editor. It will be able to check easily the code quality during development.

adlint_on_vim_en.png

A.1.3 Collaborate with Eclipse - integrated development environment

The format of AdLint's warning message is same as the standard compiler, so it's easy to collaborate with integrated development environment. It will be able to check easily the code quality during development.

adlint_on_eclipse_en.png

A.2 Sample of traits file

#     ___    ____  __    ___   _________
#    /   |  / _  |/ /   / / | / /__  __/           Source Code Static Analyzer
#   / /| | / / / / /   / /  |/ /  / /                   AdLint - Advanced Lint
#  / __  |/ /_/ / /___/ / /|  /  / /
# /_/  |_|_____/_____/_/_/ |_/  /_/   Copyright (C) 2010-2014, OGIS-RI Co.,Ltd.
#
# This file is part of AdLint.
#
# 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/>.
#

# Schema version of the traits file.
# DO NOT EDIT MANUALLY!
version: "3.0.0"

# List of names of source code examination packages.
#
# "c_builtin" is a builtin source code examination package for C language.
# You can install optional examination packages and append (or replace) this
# list to specify which examination packages are to be run.
exam_packages:
  - "c_builtin"

#
# Project specific traits section
#
project_traits:

  # Project name.
  project_name: "screen-4.0.3"

  # Project root directory.
  project_root: ".."

  # Analysys target selection.
  # Ex.
  #   target_files:
  #     inclusion_paths:
  #       - "../foo"
  #       - "../bar"
  #     exclusion_paths:
  #       - "../bar/baz"
  target_files:
    inclusion_paths:
      - ".."
    exclusion_paths:

  # Pathname of the project specific initial header file.
  # This header file is automatically included above the first line of the
  # target source file.
  initial_header: "adlint_pinit.h"

  # Project specific additional include paths.
  # Ex.
  #   file_search_paths:
  #     - "include/foo"
  #     - "../include/bar"
  #     - "/opt/baz/include"
  file_search_paths:
    - "../screen-4.0.3"

  #
  # Project specific coding style section
  #
  coding_style:

    # Indent style which is a convention governing the identation of blocks.
    # Select from "K&R", "Allman" and "GNU".
    #
    # The value "K&R" means...
    #   int foo(int i)
    #   {
    #       if (i == 0) {
    #           return 0;
    #       }
    #       return i;
    #   }
    #
    # The value "Allman" means...
    #   int foo(int i)
    #   {
    #       if (i == 0)
    #       {
    #           return 0;
    #       }
    #       return i;
    #   }
    #
    # The value "GNU" means...
    #   int
    #   foo(int i)
    #   {
    #     if (i == 0)
    #       {
    #         return 0;
    #       }
    #     return i;
    #   }
    indent_style: "GNU"

    # Appearance width of a TAB character.
    tab_width: 8

    # Appearance width of 1-level of the indentation.
    indent_width: 2

  # Character encoding of source files.
  file_encoding:

#
# Compiler specific traits section
#
compiler_traits:

  # Pathname of the compiler specific initial header file.
  # This header file is automatically included above the first line of the
  # project specific initial header file.
  initial_header: "adlint_cinit.h"

  # Compiler specific include paths.
  # Ex.
  #   file_search_paths:
  #     - "/usr/include"
  #     - "/usr/local/include"
  file_search_paths:
    - "/usr/local/include"
    - "/usr/include"
    - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include"

  #
  # Compiler specific standard type section
  #
  standard_types:

    # Bit size of the `char' type family.
    char_size: 8
    # Bit size of the alignment of the `char' type family.
    char_alignment: 8

    # Bit size of the `short' type family.
    short_size: 16
    # Bit size of the alignment of the `short' type family.
    short_alignment: 16

    # Bit size of the `int' type family.
    int_size: 32
    # Bit size of the alignment of the `int' type family.
    int_alignment: 32

    # Bit size of the `long int' type family.
    long_size: 32
    # Bit size of the alignment of the `long int' type family.
    long_alignment: 32

    # Bit size of the `long long int' type family.
    long_long_size: 64
    # Bit size of the alignment of the `long long int' type family.
    long_long_alignment: 64

    # Bit size of the `float' type.
    float_size: 32
    # Bit size of the alignment of the `float' type.
    float_alignment: 32

    # Bit size of the `double' type.
    double_size: 64
    # Bit size of the alignment of the `double' type.
    double_alignment: 64

    # Bit size of the `long double' type.
    long_double_size: 96
    # Bit size of the alignment of the `long double' type.
    long_double_alignment: 96

    # Bit size of the pointer to functions.
    code_ptr_size: 32
    # Bit size of the alignment of the pointer to functions.
    code_ptr_alignment: 32

    # Bit size of the pointer to data.
    data_ptr_size: 32
    # Bit size of the alignment of the pointer to data.
    data_ptr_alignment: 32

    # Treat the `char' type as same as the `unsigned char' type?
    char_as_unsigned_char: true

  # Treat the `>>' operator as a logical shift, not an arithmetic shift?
  arithmetic:
    logical_right_shift: true

  # Max length of all symbols can be identified by the compiler.
  identifier_max: 128

  # Token substitution setting to warn the use of compiler specific extensions.
  #
  # If your compiler supports `__attribute__(...)' extension and you want to
  # know the use of this extension, specify as below.
  #   extension_substitutions:
  #     "__attribute__(__adlint__any)": ""
  # The token sequence consists of `__attribute__', `(', any kind of tokens,
  # `)' will be replaced with nothing (erased) after the preprocessing phase.
  # And this substitution will be warned by the message W0061.
  extension_substitutions:
    "__extension__": ""
    "__attribute__(__adlint__any)": ""
    "__inline__": "inline"
    "__asm__ __adlint__any(__adlint__any)": ""

  # Token substitution setting to silently ignore the use of compiler specific
  # extensions.
  #
  # If your compiler supports `__asm__ volatile (...)' extension and you do not
  # mind the use of this extension, specify as below.
  #   arbitrary_substitutions:
  #     "__asm__ __adlint__any(__adlint__any)": ""
  # The token sequence consists of `__asm__', any kind of tokens, `(', any kind
  # of tokens, `)' will be replaced with nothing (erased) silently after the
  # preprocessing phase.
  arbitrary_substitutions:
    "typeof": "__typeof__"
    "__typeof": "__typeof__"
    "alignof": "__alignof__"
    "__alignof": "__alignof__"
    "__signed__": "signed"

#
# Linker specific traits section
#
linker_traits:

  # Max length of external symbols can be identified by the linker.
  identifier_max: 128

  # Are external symbols identified without case by the linker?
  identifier_ignore_case: false

#
# Message traits section
#
message_traits:

  # Language of the message text.
  # Currently, "en_US" and "ja_JP" are supported.
  # Please help to translate the message catalog into your language.
  language: "ja_JP"

  # Enable inline annotation based message suppression?
  individual_suppression: true

  # Project-wide code check exclusion settings.
  # Ex.
  #   exclusion:
  #     categories:
  #       - "REL"
  #       - "PRT"
  #     severities: "[ABC][5-9][0-9]"
  #     messages:
  #       W0001: "c_builtin"
  #       W0002: "c_ansi"
  exclusion:

  # Project-wide code check inclusion settings.
  # Ex.
  #   inclusion:
  #     messages:
  #       W0001: "c_builtin"
  #       W0002: "c_ansi"
  inclusion:

  # Message text replacement.
  # Ex.
  #   change_list:
  #     W9999:
  #       package: "c_builtin"
  #       classes:
  #         - "REL:A10"
  #         - "PRT:B20"
  #       format: "Your custom message for the warning of W9999."
  #     X9999:
  #       package: "core"
  #       classes:
  #         - "ERR:X99"
  #       format: "Your custom message for the warning of X9999."
  #     E9999:
  #       package: "core"
  #       classes:
  #         - "ERR:X99"
  #       format: "Your custom message for the warning of E9999."
  change_list:

A.3 Sample of analysis order of GNUmakefile

#     ___    ____  __    ___   _________
#    /   |  / _  |/ /   / / | / /__  __/           Source Code Static Analyzer
#   / /| | / / / / /   / /  |/ /  / /                   AdLint - Advanced Lint
#  / __  |/ /_/ / /___/ / /|  /  / /
# /_/  |_|_____/_____/_/_/ |_/  /_/   Copyright (C) 2010-2014, OGIS-RI Co.,Ltd.
#
# This file is part of AdLint.
#
# 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/>.
#
# How...
#   - to validate configuration files
#     % make check
#   - to analyze whole project with compiler like messages
#     % make all
#   - to do only single module analyses with compiler like messages
#     % make sma-only
#   - to analyze whole project with progress report
#     % make verbose-all
#   - to do only single module analyses with progress report
#     % make verbose-sma-only
#   - to do only cross module analysis with progress report
#     % make verbose-cma-only
#   - to analyze whole project *FAST* on 4-core processor machine
#     % make -j 4 all
#   - to analyze whole project *FAST* and silently with elapsed time
#     % time make -j 4 all 2>/dev/null
#   - to delete all result files
#     % make clean
#

PROJECT = screen-4.0.3

SOURCES = \
  screen-4.0.3/screen.c \
  screen-4.0.3/ansi.c \
  screen-4.0.3/fileio.c \
  screen-4.0.3/mark.c \
  screen-4.0.3/misc.c \
  screen-4.0.3/resize.c \
  screen-4.0.3/socket.c \
  screen-4.0.3/search.c \
  screen-4.0.3/tty.c \
  screen-4.0.3/term.c \
  screen-4.0.3/window.c \
  screen-4.0.3/utmp.c \
  screen-4.0.3/loadav.c \
  screen-4.0.3/putenv.c \
  screen-4.0.3/help.c \
  screen-4.0.3/termcap.c \
  screen-4.0.3/input.c \
  screen-4.0.3/attacher.c \
  screen-4.0.3/pty.c \
  screen-4.0.3/process.c \
  screen-4.0.3/display.c \
  screen-4.0.3/comm.c \
  screen-4.0.3/kmapdef.c \
  screen-4.0.3/acls.c \
  screen-4.0.3/braille.c \
  screen-4.0.3/braille_tsi.c \
  screen-4.0.3/logfile.c \
  screen-4.0.3/layer.c \
  screen-4.0.3/sched.c \
  screen-4.0.3/teln.c \
  screen-4.0.3/nethack.c \
  screen-4.0.3/encoding.c

VPATH = ..
VPATH_COMPONENTS = 1

RUBY = ruby

ADLINT = adlint
ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS)

ADLINT_SMA = adlint_sma
ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS)

ADLINT_CMA = adlint_cma
ADLINT_CMA_FLAGS = -t adlint_traits.yml -o .

ADLINT_CHK = adlint_chk
ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS)

RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)'

VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES))

SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES))
SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES))
SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES)))
SMA_LOG_FILES = $(addsuffix .log, $(SOURCES))

CMA_MSG_FILE = $(PROJECT).msg.csv
CMA_MET_FILE = $(PROJECT).met.csv
CMA_LOG_FILE = $(PROJECT).log

.SUFFIXES:

%.c.msg.csv %.c.met.csv : %.c
	$(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $<

$(CMA_MET_FILE) : $(SMA_MET_FILES)
	$(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^

.PHONY: adlint_sma-all
adlint_sma-all : $(SMA_MET_FILES)

.PHONY: adlint_cma-all
adlint_cma-all : $(CMA_MET_FILE)

.PHONY: adlint_chk-all
adlint_chk-all :
	$(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES)

.PHONY: adlint_verbose-all
adlint_verbose-all :
	$(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES)

.PHONY: adlint_verbose-sma-only
adlint_verbose-sma-only :
	$(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES)

.PHONY: adlint_verbose-cma-only
adlint_verbose-cma-only : $(SMA_MET_FILES)
	$(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^

.PHONY: adlint_clean
adlint_clean :
	@$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \
	       $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE)

.PHONY: all
all : adlint_cma-all

.PHONY: sma-only
sma-only : adlint_sma-all

.PHONY: verbose-all
verbose-all : adlint_verbose-all

.PHONY: verbose-sma-only
verbose-sma-only : adlint_verbose-sma-only

.PHONY: verbose-cma-only
verbose-cma-only : adlint_verbose-cma-only

.PHONY: check
check : adlint_chk-all

.PHONY: clean
clean : adlint_clean


Previous: Appendix, Up: Top

Index

adlint-3.2.14/share/doc/Makefile0000644000004100000410000000055212340630463016416 0ustar www-datawww-dataMAKEINFO = makeinfo DOT = dot .SUFFIXES : .texi .html .txt .dot .pdf .texi.html : $(MAKEINFO) --html --no-split --css-include=texinfo.css -o $@ $< .texi.txt : $(MAKEINFO) --plaintext -o $@ $< .dot.pdf : $(DOT) -Tpdf -o $@ $< TARGET = users_guide_ja.html users_guide_en.html developers_guide_ja.html c99gram.pdf all : $(TARGET) clean : rm -f $(TARGET) adlint-3.2.14/share/doc/users_guide_ja.html0000644000004100000410001010553412340630463020643 0ustar www-datawww-data AdLint 3.2.14 利用者ガイド

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 インストール

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 万行) ã‚’è§£æžã—ãŸå ´åˆã€ä¸‹è¨˜ ã®è§£æžæ™‚é–“ã‚’è¦ã—ã¾ã—ãŸã€‚

  • ã™ã¹ã¦ã‚·ãƒªã‚¢ãƒ«ã«è§£æž — ç´„ 7.9 時間
  • シングルモジュール解æžã‚’ 3 並走ã•ã›ã¦è§£æž — ç´„ 3.7 時間

1.2.2 GNU/Linux

Fedora 14 上ã§ã®ãƒ†ã‚¹ãƒˆã¯ Intel Core2 Duo 2.20GHz (E4500)ã€ç‰©ç†ãƒ¡ãƒ¢ãƒª 3.4 GB 㮠環境ã§è¡Œã£ã¦ã„ã¾ã™ã€‚

ã“ã®ç’°å¢ƒã§ Ruby 1.9.3-p0 (ビルド対象ã®ç·ç‰©ç†è¡Œæ•° 62 万行) ã‚’è§£æžã—ãŸå ´åˆã€ä¸‹è¨˜ ã®è§£æžæ™‚é–“ã‚’è¦ã—ã¾ã—ãŸã€‚

  • ã™ã¹ã¦ã‚·ãƒªã‚¢ãƒ«ã«è§£æž — ç´„ 6.5 時間
  • シングルモジュール解æžã‚’ 2 並走ã•ã›ã¦è§£æž — ç´„ 4.2 時間

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 ディレ クトリ中㮠binã€DEVELOPMENT KIT (DevKit) ã®ã‚¤ãƒ³ã‚¹ãƒˆ ール ã§å±•é–‹ã—㟠DevKit ディレクトリ中㮠binã€mingw\bin ã‚’ PATH 環境変数ã«è¿½åŠ ã—ã¦ãã ã•ã„。

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

下記ã®ãƒ•ァイルãŒå‡ºåŠ›ã•れã¾ã™ã€‚

  • GNUmakefile — è§£æžæ‰‹é †ãŒè¨˜è¿°ã•れ㟠GNU Make 用ã®ãƒ¡ã‚¤ã‚¯ãƒ•ァイル
  • adlint_traits.yml — AdLint è§£æžå‹•作をカスタマイズã™ã‚‹ç‰¹æ€§ãƒ•ァイ ル
  • adlint_pinit.h — プロジェクト固有ã®ã‚¤ãƒ‹ã‚·ãƒ£ãƒ«ãƒ˜ãƒƒãƒ€ãƒ•ァイル
  • adlint_cinit.h — コンパイラ固有ã®ã‚¤ãƒ‹ã‚·ãƒ£ãƒ«ãƒ˜ãƒƒãƒ€ãƒ•ァイル
  • adlint_all.sh — è§£æžæ‰‹é †ãŒè¨˜è¿°ã•れãŸã‚·ã‚§ãƒ«ã‚¹ã‚¯ãƒªãƒ—ト
  • adlint_all.bat — è§£æžæ‰‹é †ãŒè¨˜è¿°ã•れ㟠MS Windows 用ãƒãƒƒãƒãƒ•ァイ ル
  • adlint_files.txt — シェルスクリプトã¨ãƒãƒƒãƒãƒ•ァイルã§ä½¿ç”¨ã™ã‚‹è§£ æžå¯¾è±¡ãƒ•ァイルã®ãƒªã‚¹ãƒˆ

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.i — プリプロセス済ã¿ã‚½ãƒ¼ã‚¹ãƒ•ァイル
  • intro_demo.c.met.csv — シングルモジュール解æžçµæžœã®ã‚³ãƒ¼ãƒ‰æƒ…報㨠メトリクス情報
  • intro_demo.c.msg.csv — シングルモジュール解æžçµæžœã®è­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ ジ
  • intro_demo.met.csv — クロスモジュール解æžçµæžœã®ãƒ¡ãƒˆãƒªã‚¯ã‚¹æƒ…å ±
  • intro_demo.msg.csv — クロスモジュール解æžçµæžœã®è­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸

intro_demo.c.msg.csv ã®å†…容ã¯ã€ã€Œã„ãã¤ã‹ã®æ–‡ã«åˆ¶å¾¡ãŒåˆ°é”ã—ãªã„ã“ã¨ã€ã¨ 「ã„ãã¤ã‹ã®æ–‡ã§ã‚¼ãƒ­ã«ã‚ˆã‚‹é™¤ç®—ãŒç™ºç”Ÿã™ã‚‹ã“ã¨ã€ãªã©ã‚’示ã—ã¦ã„ã‚‹ã¯ãšã§ã™ã€‚


Next: , Previous: Installation, Up: Top

2 サンプルセッション

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 — è§£æžæ‰‹é †ãŒè¨˜è¿°ã•れ㟠GNU Make 用ã®ãƒ¡ã‚¤ã‚¯ãƒ•ァイル
  • adlint_traits.yml — AdLint è§£æžå‹•作をカスタマイズã™ã‚‹ç‰¹æ€§ãƒ•ァイ ル
  • adlint_pinit.h — プロジェクト固有ã®ã‚¤ãƒ‹ã‚·ãƒ£ãƒ«ãƒ˜ãƒƒãƒ€ãƒ•ァイル
  • adlint_cinit.h — コンパイラ固有ã®ã‚¤ãƒ‹ã‚·ãƒ£ãƒ«ãƒ˜ãƒƒãƒ€ãƒ•ァイル
  • adlint_all.sh — è§£æžæ‰‹é †ãŒè¨˜è¿°ã•れãŸã‚·ã‚§ãƒ«ã‚¹ã‚¯ãƒªãƒ—ト
  • adlint_all.bat — è§£æžæ‰‹é †ãŒè¨˜è¿°ã•れ㟠MS Windows 用ãƒãƒƒãƒãƒ•ァイ ル
  • adlint_files.txt — シェルスクリプトã¨ãƒãƒƒãƒãƒ•ァイルã§ä½¿ç”¨ã™ã‚‹è§£ æžå¯¾è±¡ãƒ•ァイルã®ãƒªã‚¹ãƒˆ

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 コマンドã«ã‚ˆã‚Šã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£ æžã‚’実行ã™ã‚‹å ´åˆã¨åŒç­‰ã§ã™ã€‚

シングルモジュール解æžçµæžœã¨ã—ã¦ã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル毎ã«ä¸‹è¨˜ã®ãƒ•ァイルを作æˆã—ã¾ã™ 。

  • *.i — ãƒ—ãƒªãƒ—ãƒ­ã‚»ã‚¹çµæžœ
  • *.c.msg.csv — シングルモジュール解æžã«ã‚ˆã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å‡ºåŠ›çµæžœ
  • *.c.met.csv — シングルモジュール解æžã«ã‚ˆã‚‹ãƒ¡ãƒˆãƒªã‚¯ã‚¹æ¸¬å®šçµæžœ
  • *.c.log — ã‚·ãƒ³ã‚°ãƒ«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžæ™‚ã®ãƒ­ã‚°ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸

クロスモジュール解æžçµæžœã¨ã—ã¦ã€ä¸‹è¨˜ã®ãƒ•ァイルを作æˆã—ã¾ã™ã€‚

  • project_name.msg.csv — プロジェクト全体ã®ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžã« ã‚ˆã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å‡ºåŠ›çµæžœ
  • project_name.met.csv — プロジェクト全体ã®ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžã« ã‚ˆã‚‹ãƒ¡ãƒˆãƒªã‚¯ã‚¹æ¸¬å®šçµæžœ
  • project_name.log — プロジェクト全体ã®ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžæ™‚ã®ãƒ­ グメッセージ

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 機能

ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã§æŒ‡å®šã—ãŸè§£æžå¯¾è±¡ã‚½ãƒ¼ã‚¹ãƒ•ァイルã®ã‚·ãƒ³ã‚°ãƒ«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æž (コンパ イルフェーズã«å¯¾å¿œã™ã‚‹è§£æž) ã®ã¿ã‚’実行ã—ã¾ã™ã€‚

シングルモジュール解æžçµæžœã¨ã—ã¦ã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル毎ã«ä¸‹è¨˜ã®ãƒ•ァイルを作æˆã—ã¾ã™ 。

  • *.i — ãƒ—ãƒªãƒ—ãƒ­ã‚»ã‚¹çµæžœ
  • *.c.msg.csv — シングルモジュール解æžã«ã‚ˆã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å‡ºåŠ›çµæžœ
  • *.c.met.csv — シングルモジュール解æžã«ã‚ˆã‚‹ãƒ¡ãƒˆãƒªã‚¯ã‚¹æ¸¬å®šçµæžœ
  • *.c.log — ã‚·ãƒ³ã‚°ãƒ«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžæ™‚ã®ãƒ­ã‚°ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸

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 機能

ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã§æŒ‡å®šã—ãŸå…¨ã‚·ãƒ³ã‚°ãƒ«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžã®ãƒ¡ãƒˆãƒªã‚¯ã‚¹æ¸¬å®šçµæžœã‚’ã‚‚ã¨ã«ã€ ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æž (リンクフェーズã«å¯¾å¿œã™ã‚‹è§£æž) ã®ã¿ã‚’実行ã—ã¾ã™ã€‚

クロスモジュール解æžçµæžœã¨ã—ã¦ã€ä¸‹è¨˜ã®ãƒ•ァイルを作æˆã—ã¾ã™ã€‚

  • project_name.msg.csv — プロジェクト全体ã®ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžã« ã‚ˆã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å‡ºåŠ›çµæžœ
  • project_name.met.csv — プロジェクト全体ã®ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžã« ã‚ˆã‚‹ãƒ¡ãƒˆãƒªã‚¯ã‚¹æ¸¬å®šçµæžœ
  • project_name.log — プロジェクト全体ã®ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžæ™‚ã®ãƒ­ グメッセージ

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 å½¢å¼ã§è¨˜è¿°ã—ã¾ã™ã€‚

特性ファイルã¯ã€adlintã€adlint_smaã€adlint_cma コマンドã®ã‚ªãƒ—ション --traits ã§ãƒ‘スåを指定ã—ã¾ã™ã€‚

メッセージ定義ファイルã¯ã€AdLint インストールパス内㮠etc/mesg.d 内ã«ã‚¤ ンストールã•れã¾ã™ã€‚ adlintã€adlint_smaã€adlint_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 関連メッセージ

  • E0015 ラベルã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’指定ã—㟠goto 文㯠GCC ç‹¬è‡ªã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚

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 関連メッセージ

  • E0014 ラベルã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–å¾—ã™ã‚‹ãŸã‚ã® && å˜é …演算å­ã¯ GCC ç‹¬è‡ªã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚

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 関連メッセージ

  • W0017 å¤‰æ›æŒ‡å®šå­ã®ãƒ•ィールド幅㌠509 文字を超ãˆã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0016 å¤‰æ›æŒ‡å®šå­ã®ãƒ•ィールド幅㌠509 文字を超ãˆã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0024 ãƒã‚¤ãƒ³ã‚¿åž‹ã®å¤‰æ•°ã«å¯¾ã—ã¦ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã¾ãŸã¯ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0023 ãƒã‚¤ãƒ³ã‚¿åž‹ã®å¤‰æ•°ã«å¯¾ã—ã¦ç®—術演算ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0026 `%s' ã¯ã€æ—¢ã«ã“ã®ãƒ•ァイルã‹ã‚‰é–“接的ã«ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0025 `%s' ã¯ã€æ—¢ã«ã“ã®ãƒ•ァイルã‹ã‚‰ç›´æŽ¥ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • C0001 ã“ã®è­˜åˆ¥å `%s' ã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚

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 関連メッセージ

  • C0001 ã“ã®è­˜åˆ¥å `%s' ã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚

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 関連メッセージ

  • W0060 ã“ã®ãƒ•ァイル内㫠Ctrl-Z(^Z) 制御文字ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚

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 関連メッセージ

  • W0059 ã“ã®ãƒ•ァイルã®è¡Œæœ«ã« Ctrl-M(^M) 制御文字ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚

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 関連メッセージ

  • W0062 `__typeof__' 㯠ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚
  • W0063 `__alignof__' 㯠ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚

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 関連メッセージ

  • W0061 `%s' 㯠ISO C æ¨™æº–è¦æ ¼ã®æ­£å¼ãªäºˆç´„語ã§ã¯ã‚りã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—無視ã—ã¾ã™ã€‚
  • W0063 `__alignof__' 㯠ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚

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 関連メッセージ

  • W0061 `%s' 㯠ISO C æ¨™æº–è¦æ ¼ã®æ­£å¼ãªäºˆç´„語ã§ã¯ã‚りã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—無視ã—ã¾ã™ã€‚
  • W0062 `__typeof__' 㯠ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚

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 関連メッセージ

  • W0068 ビットã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã« `.' を使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚

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 関連メッセージ

  • W0067 ãƒã‚¹ãƒˆã•ã‚ŒãŸæ§‹é€ ä½“ã®ãƒ¡ãƒ³ãƒã«ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚

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 関連メッセージ

  • W0071 インクルードã•れã¦ã„ã‚‹ "%s" ã®å†…容ã¯ç¿»è¨³å˜ä½ã®ä¸­ã§å…¨ãå‚ç…§ã•れã¦ã„ã¾ã›ã‚“。削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

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 関連メッセージ

  • W0070 インクルードã•れã¦ã„ã‚‹ <%s> ã®å†…容ã¯ç¿»è¨³å˜ä½ã®ä¸­ã§å…¨ãå‚ç…§ã•れã¦ã„ã¾ã›ã‚“。削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

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" を使用ã—ã¦ã„ãªã„時〠signed 㨠unsigned ã®ã©ã¡ã‚‰ã«ãªã‚‹ã®ã‹ãŒåˆ¤æ–­ã—ã¥ã‚‰ããªã‚Šã¾ã™ã€‚

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 関連メッセージ

  • W0085 ã“ã®æ–‡ã«ã¯å‰¯ä½œç”¨ãŒã‚りã¾ã›ã‚“。誤りã®ã‚ã‚‹å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚
  • W0086 三項演算å­(æ¡ä»¶æ¼”ç®—å­)ã®ä¸­ã§ã€2 番目ã‚ã‚‹ã„㯠3 番目ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚
  • W0087 カンマ演算å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚
  • W0088 è«–ç†æ¼”ç®—å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚

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 関連メッセージ

  • W0084 ã“ã®ã‚«ãƒ³ãƒžæ¼”ç®—å­ `,' ã®å·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«ã¯å‰¯ä½œç”¨ã‚’ã‚‚ã¤å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。
  • W0086 三項演算å­(æ¡ä»¶æ¼”ç®—å­)ã®ä¸­ã§ã€2 番目ã‚ã‚‹ã„㯠3 番目ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚
  • W0087 カンマ演算å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚
  • W0088 è«–ç†æ¼”ç®—å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚

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 関連メッセージ

  • W0084 ã“ã®ã‚«ãƒ³ãƒžæ¼”ç®—å­ `,' ã®å·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«ã¯å‰¯ä½œç”¨ã‚’ã‚‚ã¤å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。
  • W0085 ã“ã®æ–‡ã«ã¯å‰¯ä½œç”¨ãŒã‚りã¾ã›ã‚“。誤りã®ã‚ã‚‹å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚
  • W0087 カンマ演算å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚
  • W0088 è«–ç†æ¼”ç®—å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚

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 関連メッセージ

  • W0084 ã“ã®ã‚«ãƒ³ãƒžæ¼”ç®—å­ `,' ã®å·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«ã¯å‰¯ä½œç”¨ã‚’ã‚‚ã¤å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。
  • W0085 ã“ã®æ–‡ã«ã¯å‰¯ä½œç”¨ãŒã‚りã¾ã›ã‚“。誤りã®ã‚ã‚‹å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚
  • W0086 三項演算å­(æ¡ä»¶æ¼”ç®—å­)ã®ä¸­ã§ã€2 番目ã‚ã‚‹ã„㯠3 番目ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚
  • W0088 è«–ç†æ¼”ç®—å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚

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 関連メッセージ

  • W0084 ã“ã®ã‚«ãƒ³ãƒžæ¼”ç®—å­ `,' ã®å·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«ã¯å‰¯ä½œç”¨ã‚’ã‚‚ã¤å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。
  • W0085 ã“ã®æ–‡ã«ã¯å‰¯ä½œç”¨ãŒã‚りã¾ã›ã‚“。誤りã®ã‚ã‚‹å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚
  • W0086 三項演算å­(æ¡ä»¶æ¼”ç®—å­)ã®ä¸­ã§ã€2 番目ã‚ã‚‹ã„㯠3 番目ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚
  • W0087 カンマ演算å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚

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 関連メッセージ

  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

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 関連メッセージ

  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

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 関連メッセージ

  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

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 関連メッセージ

  • W0103 自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€æˆ»ã‚Šå€¤ã¨ã—ã¦é–¢æ•°ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚

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 関連メッセージ

  • W0102 自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€é–¢æ•°ã®ä»®å¼•数を介ã—ã¦æˆ»ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚

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 関連メッセージ

  • W0105 ãƒã‚¤ãƒ³ã‚¿ä»®å¼•æ•° `%s' ãŒæŒ‡ã—ã¦ã„るオブジェクトã¯é–¢æ•°å†…ã§å¤‰ã‚らãªã„ã®ã§ã€const オブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿åž‹ã¨ã—ã¦å®£è¨€ã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

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 関連メッセージ

  • W0104 仮引数 `%s' ã¯å€¤ãŒå¤‰ã‚りã¾ã›ã‚“。const 付ãã§å®£è¨€ã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

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 関連メッセージ

  • W0116 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã‚‹æã‚ŒãŒã‚りã¾ã™ã€‚
  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

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 関連メッセージ

  • W0115 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã¾ã™ã€‚
  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

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 関連メッセージ

  • W0118 外部çµåˆã‚’æŒã¤ `%s' ã®å®£è¨€ãŒã€ãƒ˜ãƒƒãƒ€ãƒ•ァイルã®ä¸­ã«ã‚りã¾ã›ã‚“。

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 関連メッセージ

  • W0117 `%s' ã®å®šç¾©ã¯å¤–部çµåˆã‚’æŒã¡ã¾ã™ãŒã€å®šç¾©ã‚ˆã‚Šå‰ã«ãã®å®£è¨€ãŒã‚りã¾ã›ã‚“。

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 関連メッセージ

  • W0120 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0121 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0122 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0123 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0124 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0125 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0126 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0127 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0128 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0129 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0130 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0131 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0119 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0121 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0122 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0123 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0124 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0125 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0126 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0127 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0128 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0129 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0130 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0131 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0119 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0120 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0122 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0123 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0124 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0125 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0126 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0127 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0128 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0129 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0130 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0131 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0119 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0120 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0121 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0123 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0124 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0125 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0126 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0127 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0128 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0129 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0130 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0131 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0119 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0120 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0121 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0122 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0124 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0125 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0126 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0127 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0128 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0129 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0130 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0131 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0119 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0120 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0121 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0122 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0123 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0125 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0126 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0127 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0128 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0129 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0130 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0131 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0119 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0120 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0121 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0122 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0123 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0124 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0126 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0127 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0128 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0129 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0130 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0131 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0119 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0120 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0121 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0122 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0123 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0124 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0125 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0127 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0128 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0129 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0130 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0131 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0119 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0120 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0121 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0122 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0123 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0124 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0125 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0126 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0128 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0129 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0130 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0131 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0119 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0120 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0121 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0122 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0123 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0124 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0125 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0126 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0127 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0129 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0130 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0131 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0119 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0120 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0121 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0122 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0123 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0124 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0125 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0126 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0127 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0128 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0130 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0131 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0119 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0120 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0121 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0122 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0123 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0124 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0125 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0126 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0127 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0128 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0129 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0131 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0119 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0120 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0121 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0122 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0123 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0124 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0125 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0126 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0127 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0128 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0129 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0130 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0133 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0134 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0135 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0136 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0137 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0138 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0139 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0140 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0141 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0132 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0134 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0135 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0136 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0137 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0138 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0139 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0140 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0141 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0132 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0133 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0135 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0136 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0137 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0138 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0139 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0140 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0141 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0132 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0133 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0134 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0136 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0137 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0138 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0139 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0140 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0141 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0132 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0133 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0134 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0135 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0137 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0138 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0139 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0140 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0141 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0132 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0133 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0134 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0135 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0136 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0138 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0139 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0140 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0141 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0132 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0133 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0134 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0135 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0136 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0137 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0139 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0140 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0141 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0132 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0133 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0134 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0135 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0136 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0137 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0138 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0140 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0141 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0132 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0133 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0134 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0135 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0136 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0137 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0138 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0139 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0141 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0132 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0133 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0134 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0135 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0136 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0137 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0138 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0139 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0140 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0143 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0144 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0145 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0146 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0147 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0148 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0149 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0150 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0151 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0152 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0153 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0154 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0155 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0156 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0142 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0144 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0145 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0146 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0147 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0148 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0149 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0150 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0151 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0152 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0153 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0154 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0155 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0156 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0142 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0143 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0145 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0146 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0147 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0148 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0149 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0150 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0151 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0152 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0153 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0154 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0155 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0156 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0142 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0143 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0144 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0146 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0147 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0148 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0149 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0150 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0151 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0152 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0153 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0154 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0155 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0156 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0142 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0143 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0144 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0145 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0147 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0148 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0149 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0150 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0151 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0152 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0153 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0154 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0155 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0156 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0142 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0143 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0144 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0145 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0146 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0148 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0149 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0150 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0151 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0152 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0153 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0154 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0155 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0156 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0142 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0143 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0144 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0145 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0146 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0147 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0149 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0150 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0151 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0152 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0153 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0154 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0155 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0156 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0142 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0143 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0144 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0145 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0146 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0147 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0148 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0150 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0151 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0152 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0153 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0154 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0155 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0156 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0142 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0143 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0144 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0145 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0146 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0147 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0148 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0149 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0151 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0152 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0153 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0154 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0155 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0156 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0142 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0143 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0144 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0145 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0146 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0147 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0148 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0149 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0150 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0152 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0153 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0154 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0155 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0156 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0142 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0143 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0144 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0145 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0146 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0147 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0148 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0149 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0150 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0151 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0153 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0154 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0155 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0156 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0142 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0143 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0144 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0145 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0146 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0147 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0148 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0149 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0150 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0151 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0152 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0154 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0155 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0156 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0142 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0143 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0144 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0145 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0146 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0147 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0148 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0149 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0150 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0151 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0152 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0153 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0155 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0156 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0142 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0143 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0144 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0145 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0146 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0147 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0148 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0149 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0150 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0151 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0152 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0153 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0154 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0156 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0142 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0143 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0144 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0145 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0146 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0147 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0148 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0149 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0150 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0151 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0152 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0153 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0154 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0155 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0181 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0157 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0158 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0159 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0160 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0161 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0162 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0163 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0164 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0165 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0166 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0167 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0168 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0169 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0170 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0171 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0172 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0173 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0174 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0175 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0176 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0177 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0178 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0179 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0180 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0211 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0182 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0183 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0184 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0185 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0186 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0187 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0188 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0189 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0190 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0191 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0192 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0193 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0194 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0195 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0196 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0197 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0198 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0199 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0200 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0201 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0202 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0203 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0204 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0205 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0206 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0207 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0208 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0209 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0210 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0244 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0212 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0213 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0214 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0215 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0216 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0217 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0218 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0219 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0220 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0221 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0222 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0223 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0224 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0225 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0226 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0227 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0228 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0229 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0230 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0231 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0232 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0233 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0234 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0235 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0236 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0237 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0238 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0239 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0240 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0241 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0242 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0243 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0246 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0247 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0248 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0249 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0250 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0251 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0252 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0253 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0254 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0245 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0247 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0248 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0249 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0250 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0251 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0252 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0253 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0254 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0245 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0246 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0248 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0249 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0250 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0251 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0252 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0253 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0254 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0245 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0246 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0247 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0249 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0250 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0251 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0252 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0253 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0254 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0245 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0246 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0247 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0248 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0249 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0251 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0252 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0253 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0254 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0245 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0246 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0247 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0248 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0249 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0251 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0252 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0253 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0254 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0245 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0246 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0247 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0248 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0249 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0250 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0252 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0253 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0254 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0245 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0246 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0247 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0248 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0249 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0250 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0251 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0253 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0254 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0245 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0246 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0247 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0248 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0249 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0250 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0251 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0252 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0254 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0245 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0246 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0247 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0248 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0249 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0250 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0251 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0252 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0253 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0256 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0257 char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0258 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0259 char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0260 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0261 char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0262 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0263 char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0264 char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0265 char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0266 char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0267 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0255 char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0257 char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0258 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0259 char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0260 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0261 char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0262 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0263 char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0264 char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0265 char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0266 char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0267 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0255 char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0256 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0258 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0259 char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0260 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0261 char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0262 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0263 char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0264 char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0265 char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0266 char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0267 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0255 char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0256 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0257 char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0259 char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0260 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0261 char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0262 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0263 char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0264 char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0265 char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0266 char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0267 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0255 char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0256 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0257 char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0258 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0260 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0261 char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0262 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0263 char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0264 char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0265 char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0266 char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0267 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0255 char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0256 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0257 char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0258 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0259 char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0261 char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0262 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0263 char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0264 char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0265 char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0266 char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0267 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0255 char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0256 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0257 char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0258 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0259 char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0260 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0262 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0263 char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0264 char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0265 char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0266 char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0267 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0255 char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0256 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0257 char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0258 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0259 char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0260 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0261 char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0263 char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0264 char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0265 char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0266 char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0267 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0255 char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0256 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0257 char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0258 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0259 char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0260 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0261 char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0262 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0264 char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0265 char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0266 char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0267 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0255 char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0256 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0257 char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0258 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0259 char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0260 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0261 char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0262 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0263 char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0265 char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0266 char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0267 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0255 char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0256 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0257 char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0258 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0259 char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0260 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0261 char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0262 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0263 char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0264 char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0266 char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0267 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0255 char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0256 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0257 char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0258 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0259 char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0260 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0261 char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0262 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0263 char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0264 char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0265 char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0267 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0255 char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0256 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0257 char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0258 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0259 char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0260 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0261 char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0262 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0263 char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0264 char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0265 char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0266 char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0269 signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0270 signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0271 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0272 signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0273 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0274 signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0275 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0276 signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0277 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0268 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0270 signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0271 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0272 signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0273 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0274 signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0275 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0276 signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0277 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0268 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0269 signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0271 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0272 signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0273 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0274 signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0275 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0276 signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0277 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0268 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0269 signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0270 signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0272 signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0273 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0274 signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0275 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0276 signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0277 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0268 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0269 signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0270 signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0271 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0273 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0274 signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0275 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0276 signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0277 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0268 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0269 signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0270 signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0271 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0272 signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0274 signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0275 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0276 signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0277 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0268 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0269 signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0270 signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0271 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0272 signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0273 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0275 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0276 signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0277 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0268 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0269 signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0270 signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0271 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0272 signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0273 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0274 signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0276 signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0277 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0268 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0269 signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0270 signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0271 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0272 signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0273 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0274 signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0275 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0277 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0268 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0269 signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0270 signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0271 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0272 signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0273 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0274 signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0275 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0276 signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0279 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0280 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0281 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0282 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0283 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0284 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0285 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0286 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0287 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0288 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0289 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0290 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0291 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0292 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0278 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0280 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0281 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0282 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0283 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0284 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0285 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0286 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0287 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0288 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0289 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0290 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0291 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0292 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0278 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0279 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0281 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0282 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0283 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0284 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0285 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0286 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0287 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0288 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0289 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0290 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0291 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0292 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0278 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0279 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0280 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0282 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0283 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0284 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0285 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0286 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0287 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0288 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0289 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0290 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0291 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0292 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0278 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0279 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0280 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0281 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0283 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0284 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0285 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0286 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0287 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0288 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0289 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0290 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0291 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0292 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0278 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0279 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0280 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0281 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0282 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0284 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0285 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0286 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0287 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0288 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0289 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0290 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0291 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0292 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0278 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0279 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0280 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0281 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0282 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0283 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0285 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0286 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0287 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0288 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0289 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0290 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0291 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0292 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0278 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0279 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0280 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0281 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0282 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0283 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0284 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0286 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0287 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0288 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0289 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0290 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0291 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0292 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0278 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0279 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0280 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0281 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0282 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0283 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0284 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0285 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0287 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0288 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0289 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0290 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0291 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0292 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0278 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0279 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0280 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0281 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0282 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0283 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0284 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0285 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0286 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0288 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0289 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0290 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0291 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0292 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0278 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0279 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0280 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0281 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0282 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0283 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0284 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0285 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0286 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0287 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0289 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0290 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0291 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0292 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0278 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0279 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0280 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0281 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0282 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0283 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0284 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0285 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0286 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0287 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0288 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0290 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0291 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0292 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0278 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0279 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0280 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0281 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0282 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0283 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0284 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0285 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0286 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0287 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0288 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0289 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0291 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0292 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0278 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0279 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0280 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0281 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0282 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0283 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0284 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0285 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0286 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0287 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0288 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0289 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0290 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0292 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0278 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0279 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0280 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0281 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0282 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0283 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0284 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0285 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0286 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0287 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0288 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0289 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0290 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0291 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0317 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0293 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0294 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0295 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0296 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0297 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0298 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0299 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0300 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0301 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0302 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0303 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0304 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0305 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0306 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0307 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0308 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0309 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0310 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0311 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0312 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0313 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0314 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0315 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0316 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

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 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.309.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0328, Up: Messages

6.310 W0329

6.310.1 メッセージ本文

unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.310.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.310.3 サンプルコード

long double func(void)
{
    unsigned short a = 0;
    return a; /* W0329 */
}

6.310.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.310.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0329, Up: Messages

6.311 W0330

6.311.1 メッセージ本文

signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.311.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.311.3 サンプルコード

float func(void)
{
    int a = 0;
    return a; /* W0330 */
}

6.311.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.311.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0330, Up: Messages

6.312 W0331

6.312.1 メッセージ本文

signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.312.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.312.3 サンプルコード

double func(void)
{
    int a = 0;
    return a; /* W0331 */
}

6.312.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.312.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0331, Up: Messages

6.313 W0332

6.313.1 メッセージ本文

signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.313.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.313.3 サンプルコード

long double func(void)
{
    int a = 0;
    return a; /* W0332 */
}

6.313.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.313.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0332, Up: Messages

6.314 W0333

6.314.1 メッセージ本文

unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.314.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.314.3 サンプルコード

float func(void)
{
    unsigned int a = 0;
    return a; /* W0333 */
}

6.314.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.314.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0333, Up: Messages

6.315 W0334

6.315.1 メッセージ本文

unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.315.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.315.3 サンプルコード

double func(void)
{
    unsigned int a = 0;
    return a; /* W0334 */
}

6.315.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.315.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0334, Up: Messages

6.316 W0335

6.316.1 メッセージ本文

unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.316.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.316.3 サンプルコード

long double func(void)
{
    unsigned int a = 0;
    return a; /* W0335 */
}

6.316.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.316.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0335, Up: Messages

6.317 W0336

6.317.1 メッセージ本文

signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.317.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.317.3 サンプルコード

float func(void)
{
    long a = 0;
    return a; /* W0336 */
}

6.317.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.317.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0336, Up: Messages

6.318 W0337

6.318.1 メッセージ本文

signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.318.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.318.3 サンプルコード

double func(void)
{
    long a = 0;
    return a; /* W0337 */
}

6.318.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.318.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0337, Up: Messages

6.319 W0338

6.319.1 メッセージ本文

signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.319.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.319.3 サンプルコード

long double func(void)
{
    long a = 0;
    return a; /* W0338 */
}

6.319.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.319.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0338, Up: Messages

6.320 W0339

6.320.1 メッセージ本文

unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.320.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.320.3 サンプルコード

float func(void)
{
    unsigned long a = 0;
    return a; /* W0339 */
}

6.320.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.320.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0339, Up: Messages

6.321 W0340

6.321.1 メッセージ本文

unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.321.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.321.3 サンプルコード

double func(void)
{
    unsigned long a = 0;
    return a; /* W0340 */
}

6.321.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.321.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0340, Up: Messages

6.322 W0341

6.322.1 メッセージ本文

unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.322.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.322.3 サンプルコード

long double func(void)
{
    unsigned long a = 0;
    return a; /* W0341 */
}

6.322.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.322.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0341, Up: Messages

6.323 W0342

6.323.1 メッセージ本文

signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.323.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.323.3 サンプルコード

float func(void)
{
    long long a = 0;
    return a; /* W0342 */
}

6.323.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.323.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0342, Up: Messages

6.324 W0343

6.324.1 メッセージ本文

signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.324.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.324.3 サンプルコード

double func(void)
{
    long long a = 0;
    return a; /* W0343 */
}

6.324.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.324.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0343, Up: Messages

6.325 W0344

6.325.1 メッセージ本文

signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.325.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.325.3 サンプルコード

long double func(void)
{
    long long a = 0;
    return a; /* W0344 */
}

6.325.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.325.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0344, Up: Messages

6.326 W0345

6.326.1 メッセージ本文

unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.326.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.326.3 サンプルコード

float func(void)
{
    unsigned long long a = 0;
    return a; /* W0345 */
}

6.326.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.326.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0345, Up: Messages

6.327 W0346

6.327.1 メッセージ本文

unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.327.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.327.3 サンプルコード

double func(void)
{
    unsigned long long a = 0;
    return a; /* W0346 */
}

6.327.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0347 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.327.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0346, Up: Messages

6.328 W0347

6.328.1 メッセージ本文

unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.328.2 内容

æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.328.3 サンプルコード

long double func(void)
{
    unsigned long long a = 0;
    return a; /* W0347 */
}

6.328.4 関連メッセージ

  • W0318 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0319 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0320 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0321 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0322 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0323 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0324 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0325 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0326 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0327 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0328 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0329 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0330 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0331 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0332 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0333 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0334 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0335 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0336 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0337 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0338 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0339 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0340 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0341 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0342 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0343 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0344 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0345 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0346 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.328.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0347, Up: Messages

6.329 W0348

6.329.1 メッセージ本文

float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.329.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.329.3 サンプルコード

char func(void)
{
    float a = 0;
    return a; /* W0348 */
}

6.329.4 関連メッセージ

  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.329.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0348, Up: Messages

6.330 W0349

6.330.1 メッセージ本文

float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.330.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.330.3 サンプルコード

signed char func(void)
{
    float a = 0;
    return a; /* W0349 */
}

6.330.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.330.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0349, Up: Messages

6.331 W0350

6.331.1 メッセージ本文

float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.331.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.331.3 サンプルコード

unsigned char func(void)
{
    float a = 0;
    return a; /* W0350 */
}

6.331.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.331.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0350, Up: Messages

6.332 W0351

6.332.1 メッセージ本文

float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.332.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.332.3 サンプルコード

short func(void)
{
    float a = 0;
    return a; /* W0351 */
}

6.332.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.332.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0351, Up: Messages

6.333 W0352

6.333.1 メッセージ本文

float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.333.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.333.3 サンプルコード

unsigned short func(void)
{
    float a = 0;
    return a; /* W0352 */
}

6.333.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.333.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0352, Up: Messages

6.334 W0353

6.334.1 メッセージ本文

float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.334.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.334.3 サンプルコード

int func(void)
{
    float a = 0;
    return a; /* W0353 */
}

6.334.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.334.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0353, Up: Messages

6.335 W0354

6.335.1 メッセージ本文

float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.335.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.335.3 サンプルコード

unsigned int func(void)
{
    float a = 0;
    return a; /* W0354 */
}

6.335.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.335.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0354, Up: Messages

6.336 W0355

6.336.1 メッセージ本文

float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.336.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.336.3 サンプルコード

long func(void)
{
    float a = 0;
    return a; /* W0355 */
}

6.336.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.336.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0355, Up: Messages

6.337 W0356

6.337.1 メッセージ本文

float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.337.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.337.3 サンプルコード

unsigned long func(void)
{
    float a = 0;
    return a; /* W0356 */
}

6.337.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.337.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0356, Up: Messages

6.338 W0357

6.338.1 メッセージ本文

double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.338.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.338.3 サンプルコード

char func(void)
{
    double a = 0;
    return a; /* W0357 */
}

6.338.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.338.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0357, Up: Messages

6.339 W0358

6.339.1 メッセージ本文

double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.339.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.339.3 サンプルコード

signed char func(void)
{
    double a = 0;
    return a; /* W0358 */
}

6.339.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.339.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0358, Up: Messages

6.340 W0359

6.340.1 メッセージ本文

double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.340.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.340.3 サンプルコード

unsigned char func(void)
{
    double a = 0;
    return a; /* W0359 */
}

6.340.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.340.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0359, Up: Messages

6.341 W0360

6.341.1 メッセージ本文

double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.341.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.341.3 サンプルコード

short func(void)
{
    double a = 0;
    return a; /* W0360 */
}

6.341.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.341.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0360, Up: Messages

6.342 W0361

6.342.1 メッセージ本文

double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.342.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.342.3 サンプルコード

unsigned short func(void)
{
    double a = 0;
    return a; /* W0361 */
}

6.342.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.342.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0361, Up: Messages

6.343 W0362

6.343.1 メッセージ本文

double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.343.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.343.3 サンプルコード

int func(void)
{
    double a = 0;
    return a; /* W0362 */
}

6.343.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.343.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0362, Up: Messages

6.344 W0363

6.344.1 メッセージ本文

double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.344.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.344.3 サンプルコード

unsigned int func(void)
{
    double a = 0;
    return a; /* W0363 */
}

6.344.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.344.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0363, Up: Messages

6.345 W0364

6.345.1 メッセージ本文

double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.345.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.345.3 サンプルコード

long func(void)
{
    double a = 0;
    return a; /* W0364 */
}

6.345.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.345.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0364, Up: Messages

6.346 W0365

6.346.1 メッセージ本文

double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.346.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.346.3 サンプルコード

unsigned long func(void)
{
    double a = 0;
    return a; /* W0365 */
}

6.346.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.346.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0365, Up: Messages

6.347 W0366

6.347.1 メッセージ本文

long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.347.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.347.3 サンプルコード

char func(void)
{
    long double a = 0;
    return a; /* W0366 */
}

6.347.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.347.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0366, Up: Messages

6.348 W0367

6.348.1 メッセージ本文

long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.348.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.348.3 サンプルコード

signed char func(void)
{
    long double a = 0;
    return a; /* W0367 */
}

6.348.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.348.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0367, Up: Messages

6.349 W0368

6.349.1 メッセージ本文

long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.349.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.349.3 サンプルコード

unsigned char func(void)
{
    long double a = 0;
    return a; /* W0368 */
}

6.349.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.349.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0368, Up: Messages

6.350 W0369

6.350.1 メッセージ本文

long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.350.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.350.3 サンプルコード

short func(void)
{
    long double a = 0;
    return a; /* W0369 */
}

6.350.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.350.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0369, Up: Messages

6.351 W0370

6.351.1 メッセージ本文

long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.351.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.351.3 サンプルコード

unsigned short func(void)
{
    long double a = 0;
    return a; /* W0370 */
}

6.351.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.351.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0370, Up: Messages

6.352 W0371

6.352.1 メッセージ本文

long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.352.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.352.3 サンプルコード

int func(void)
{
    long double a = 0;
    return a; /* W0371 */
}

6.352.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.352.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0371, Up: Messages

6.353 W0372

6.353.1 メッセージ本文

long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.353.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.353.3 サンプルコード

unsigned int func(void)
{
    long double a = 0;
    return a; /* W0372 */
}

6.353.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.353.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0372, Up: Messages

6.354 W0373

6.354.1 メッセージ本文

long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.354.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.354.3 サンプルコード

long func(void)
{
    long double a = 0;
    return a; /* W0373 */
}

6.354.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.354.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0373, Up: Messages

6.355 W0374

6.355.1 メッセージ本文

long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.355.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.355.3 サンプルコード

unsigned long func(void)
{
    long double a = 0;
    return a; /* W0374 */
}

6.355.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.355.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0374, Up: Messages

6.356 W0375

6.356.1 メッセージ本文

float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.356.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.356.3 サンプルコード

long long func(void)
{
    float a = 0;
    return a; /* W0375 */
}

6.356.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.356.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0375, Up: Messages

6.357 W0376

6.357.1 メッセージ本文

float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.357.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.357.3 サンプルコード

unsigned long long func(void)
{
    float a = 0;
    return a; /* W0376 */
}

6.357.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.357.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0376, Up: Messages

6.358 W0377

6.358.1 メッセージ本文

double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.358.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.358.3 サンプルコード

long long func(void)
{
    double a = 0;
    return a; /* W0377 */
}

6.358.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.358.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0377, Up: Messages

6.359 W0378

6.359.1 メッセージ本文

double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.359.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.359.3 サンプルコード

unsigned long long func(void)
{
    double a = 0;
    return a; /* W0378 */
}

6.359.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.359.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0378, Up: Messages

6.360 W0379

6.360.1 メッセージ本文

long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.360.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.360.3 サンプルコード

long long func(void)
{
    long double a = 0;
    return a; /* W0379 */
}

6.360.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0380 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.360.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0379, Up: Messages

6.361 W0380

6.361.1 メッセージ本文

long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.361.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.361.3 サンプルコード

unsigned long long func(void)
{
    long double a = 0;
    return a; /* W0380 */
}

6.361.4 関連メッセージ

  • W0348 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0349 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0350 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0351 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0352 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0353 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0354 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0355 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0356 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0357 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0358 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0359 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0360 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0361 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0362 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0363 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0364 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0365 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0366 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0367 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0368 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0369 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0370 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0371 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0372 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0373 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0374 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0375 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0376 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0377 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0378 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0379 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.361.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0380, Up: Messages

6.362 W0381

6.362.1 メッセージ本文

signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.362.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.362.3 サンプルコード

signed char func(void)
{
    short a = 0;
    return a; /* W0381 */
}

6.362.4 関連メッセージ

  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.362.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0381, Up: Messages

6.363 W0382

6.363.1 メッセージ本文

unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.363.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.363.3 サンプルコード

unsigned char func(void)
{
    unsigned short a = 0;
    return a; /* W0382 */
}

6.363.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.363.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0382, Up: Messages

6.364 W0383

6.364.1 メッセージ本文

signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.364.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.364.3 サンプルコード

signed char func(void)
{
    int a = 0;
    return a; /* W0383 */
}

6.364.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.364.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0383, Up: Messages

6.365 W0384

6.365.1 メッセージ本文

signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.365.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.365.3 サンプルコード

short func(void)
{
    int a = 0;
    return a; /* W0384 */
}

6.365.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.365.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0384, Up: Messages

6.366 W0385

6.366.1 メッセージ本文

unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.366.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.366.3 サンプルコード

unsigned char func(void)
{
    unsigned int a = 0;
    return a; /* W0385 */
}

6.366.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.366.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0385, Up: Messages

6.367 W0386

6.367.1 メッセージ本文

unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.367.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.367.3 サンプルコード

unsigned short func(void)
{
    unsigned int a = 0;
    return a; /* W0386 */
}

6.367.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.367.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0386, Up: Messages

6.368 W0387

6.368.1 メッセージ本文

signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.368.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.368.3 サンプルコード

signed char func(void)
{
    long a = 0;
    return a; /* W0387 */
}

6.368.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.368.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0387, Up: Messages

6.369 W0388

6.369.1 メッセージ本文

signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.369.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.369.3 サンプルコード

short func(void)
{
    long a = 0;
    return a; /* W0388 */
}

6.369.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.369.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0388, Up: Messages

6.370 W0389

6.370.1 メッセージ本文

signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.370.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.370.3 サンプルコード

int func(void)
{
    long a = 0;
    return a; /* W0389 */
}

6.370.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.370.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0389, Up: Messages

6.371 W0390

6.371.1 メッセージ本文

unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.371.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.371.3 サンプルコード

unsigned char func(void)
{
    unsigned long a = 0;
    return a; /* W0390 */
}

6.371.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.371.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0390, Up: Messages

6.372 W0391

6.372.1 メッセージ本文

unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.372.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.372.3 サンプルコード

unsigned short func(void)
{
    unsigned long a = 0;
    return a; /* W0391 */
}

6.372.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.372.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0391, Up: Messages

6.373 W0392

6.373.1 メッセージ本文

unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.373.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.373.3 サンプルコード

unsigned int func(void)
{
    unsigned long a = 0;
    return a; /* W0392 */
}

6.373.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.373.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0392, Up: Messages

6.374 W0393

6.374.1 メッセージ本文

signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.374.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.374.3 サンプルコード

signed char func(void)
{
    long long a = 0;
    return a; /* W0393 */
}

6.374.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.374.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0393, Up: Messages

6.375 W0394

6.375.1 メッセージ本文

signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.375.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.375.3 サンプルコード

short func(void)
{
    long long a = 0;
    return a; /* W0394 */
}

6.375.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.375.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0394, Up: Messages

6.376 W0395

6.376.1 メッセージ本文

signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.376.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.376.3 サンプルコード

int func(void)
{
    long long a = 0;
    return a; /* W0395 */
}

6.376.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.376.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0395, Up: Messages

6.377 W0396

6.377.1 メッセージ本文

signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.377.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.377.3 サンプルコード

long func(void)
{
    long long a = 0;
    return a; /* W0396 */
}

6.377.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.377.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0396, Up: Messages

6.378 W0397

6.378.1 メッセージ本文

unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.378.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.378.3 サンプルコード

unsigned char func(void)
{
    unsigned long long a = 0;
    return a; /* W0397 */
}

6.378.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.378.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0397, Up: Messages

6.379 W0398

6.379.1 メッセージ本文

unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.379.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.379.3 サンプルコード

unsigned short func(void)
{
    unsigned long long a = 0;
    return a; /* W0398 */
}

6.379.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.379.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0398, Up: Messages

6.380 W0399

6.380.1 メッセージ本文

unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.380.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.380.3 サンプルコード

unsigned int func(void)
{
    unsigned long long a = 0;
    return a; /* W0399 */
}

6.380.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0400 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.380.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0399, Up: Messages

6.381 W0400

6.381.1 メッセージ本文

unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.381.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚

6.381.3 サンプルコード

unsigned long func(void)
{
    unsigned long long a = 0;
    return a; /* W0400 */
}

6.381.4 関連メッセージ

  • W0381 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0382 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0383 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0384 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0385 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0386 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0387 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0388 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0389 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0390 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0391 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0392 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0393 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0394 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0395 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0396 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0397 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0398 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0399 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.381.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0400, Up: Messages

6.382 W0401

6.382.1 メッセージ本文

unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.382.2 内容

符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.382.3 サンプルコード

short func(void)
{
    unsigned char a = 0;
    return a; /* W0401 */
}

6.382.4 関連メッセージ

  • W0402 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0403 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0404 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0405 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0406 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0407 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0408 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0409 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0410 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.382.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0401, Up: Messages

6.383 W0402

6.383.1 メッセージ本文

unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.383.2 内容

符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.383.3 サンプルコード

int func(void)
{
    unsigned char a = 0;
    return a; /* W0402 */
}

6.383.4 関連メッセージ

  • W0401 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0403 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0404 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0405 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0406 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0407 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0408 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0409 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0410 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.383.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0402, Up: Messages

6.384 W0403

6.384.1 メッセージ本文

unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.384.2 内容

符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.384.3 サンプルコード

long func(void)
{
    unsigned char a = 0;
    return a; /* W0403 */
}

6.384.4 関連メッセージ

  • W0401 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0402 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0404 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0405 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0406 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0407 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0408 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0409 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0410 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.384.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0403, Up: Messages

6.385 W0404

6.385.1 メッセージ本文

unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.385.2 内容

符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.385.3 サンプルコード

int func(void)
{
    unsigned short a = 0;
    return a; /* W0404 */
}

6.385.4 関連メッセージ

  • W0401 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0402 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0403 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0405 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0406 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0407 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0408 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0409 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0410 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.385.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0404, Up: Messages

6.386 W0405

6.386.1 メッセージ本文

unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.386.2 内容

符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.386.3 サンプルコード

long func(void)
{
    unsigned short a = 0;
    return a; /* W0405 */
}

6.386.4 関連メッセージ

  • W0401 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0402 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0403 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0404 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0406 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0407 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0408 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0409 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0410 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.386.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0405, Up: Messages

6.387 W0406

6.387.1 メッセージ本文

unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.387.2 内容

符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.387.3 サンプルコード

long func(void)
{
    unsigned int a = 0;
    return a; /* W0406 */
}

6.387.4 関連メッセージ

  • W0401 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0402 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0403 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0404 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0405 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0407 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0408 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0409 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0410 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.387.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0406, Up: Messages

6.388 W0407

6.388.1 メッセージ本文

unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.388.2 内容

符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.388.3 サンプルコード

long long func(void)
{
    unsigned char a = 0;
    return a; /* W0407 */
}

6.388.4 関連メッセージ

  • W0401 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0402 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0403 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0404 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0405 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0406 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0408 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0409 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0410 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.388.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0407, Up: Messages

6.389 W0408

6.389.1 メッセージ本文

unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.389.2 内容

符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.389.3 サンプルコード

long long func(void)
{
    unsigned short a = 0;
    return a; /* W0408 */
}

6.389.4 関連メッセージ

  • W0401 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0402 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0403 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0404 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0405 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0406 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0407 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0409 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0410 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.389.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0408, Up: Messages

6.390 W0409

6.390.1 メッセージ本文

unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.390.2 内容

符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.390.3 サンプルコード

long long func(void)
{
    unsigned int a = 0;
    return a; /* W0409 */
}

6.390.4 関連メッセージ

  • W0401 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0402 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0403 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0404 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0405 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0406 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0407 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0408 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0410 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.390.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0409, Up: Messages

6.391 W0410

6.391.1 メッセージ本文

unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.391.2 内容

符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.391.3 サンプルコード

long long func(void)
{
    unsigned long a = 0;
    return a; /* W0410 */
}

6.391.4 関連メッセージ

  • W0401 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0402 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0403 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0404 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0405 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0406 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0407 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0408 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0409 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.391.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0410, Up: Messages

6.392 W0411

6.392.1 メッセージ本文

列挙体ã¯ã€æœ€åˆã ã‘åˆæœŸåŒ–ã™ã‚‹ã‹ã€å…¨ã¦ã‚’åˆæœŸåŒ–ã™ã‚‹ã‹ã€å…¨ãåˆæœŸåŒ–ã—ãªã„ã‹ã®ã„ãšã‚Œã‹ã«ã—ã¦ãã ã•ã„。

6.392.2 内容

“列挙型ã®åˆæœŸåŒ–ãŒä¸å分â€ã¨åˆ¤æ–­ã•れるã®ã¯ã€ã‚µãƒ³ãƒ—ルコードã®ã‚ˆã†ãªåˆæœŸåŒ–ã®å ´åˆã§ã™ã€‚ ã“ã®ã‚ˆã†ãªåˆæœŸåŒ–を行ã†ã¨ã€spring ã‚„ winter ãŒã©ã®ã‚ˆã†ãªå€¤ã§åˆæœŸåŒ–ã•れã¦ã„ã‚‹ã®ã‹ãŒã‚ã‹ã‚Šã¥ã‚‰ããªã‚Šã¾ã™ã€‚ ã¾ãŸã€æ„図的ã«è¡Œã£ã¦ã„ã‚‹ã®ã‹ã€ä¸€éƒ¨ã®åˆæœŸåŒ–を忘れã¦ã„ã‚‹ã®ã‹ã®åˆ¤æ–­ã‚‚難ã—ããªã‚Šã¾ã™ã€‚ ä»¥ä¸Šã‚ˆã‚Šã€æ··ä¹±ã‚’æ‹›ãå¯èƒ½æ€§ã®é«˜ã„記述ã ã¨è¨€ãˆã¾ã™ã€‚

6.392.3 サンプルコード

enum SEASON1 { /* W0411 */
    SPRING,
    SUMMER = 4,
    AUTUMN = 8,
    WINTER
};

enum SEASON2 { /* OK */
    SPRING,
    SUMMER,
    AUTUMN,
    WINTER
};

enum SEASON3 { /* OK */
    SPRING = 0,
    SUMMER = 1,
    AUTUMN = 2,
    WINTER = 3
};

enum SEASON4 { /* OK */
    SPRING = 1,
    SUMMER,
    AUTUMN,
    WINTER
};

6.392.4 関連メッセージ

ãªã—。

6.392.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0411, Up: Messages

6.393 W0413

6.393.1 メッセージ本文

åˆ¶å¾¡æ–‡ã®æœ¬ä½“㌠`{}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックã«ãªã£ã¦ã„ã¾ã›ã‚“。

6.393.2 内容

波括弧ãŒãªã‘れã°ã€æœ¬ä½“ãŒã©ã“ã¾ã§ãªã®ã‹ãŒç›´æ„Ÿçš„ã«ã‚ã‹ã‚Šã¥ã‚‰ããªã‚‹ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚ ã¾ãŸã€åˆ¶å¾¡æ–‡ã«ãŠã‘る本体ãŒå˜ä¸€æ–‡ã§æ¸ˆã¾ãªããªã£ãŸã¨ãã«ã€æ³¢æ‹¬å¼§ã‚’ã¤ã‘忘れるリスクもã‚りã¾ã™ã€‚

6.393.3 サンプルコード

if (x > 0)
    x++; /* W0413 */

6.393.4 関連メッセージ

  • W0414 åˆ¶å¾¡æ–‡ã®æœ¬ä½“ãŒåŒã˜è¡Œã«ã‚りã€`{}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックã«ãªã£ã¦ã„ã¾ã›ã‚“。

6.393.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0413, Up: Messages

6.394 W0414

6.394.1 メッセージ本文

åˆ¶å¾¡æ–‡ã®æœ¬ä½“ãŒåŒã˜è¡Œã«ã‚りã€`{}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックã«ãªã£ã¦ã„ã¾ã›ã‚“。

6.394.2 内容

波括弧ãŒãªã‘れã°ã€æœ¬ä½“ãŒã©ã“ã¾ã§ãªã®ã‹ãŒç›´æ„Ÿçš„ã«ã‚ã‹ã‚Šã¥ã‚‰ããªã‚‹ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚ ã¾ãŸã€åˆ¶å¾¡æ–‡ã«ãŠã‘る本体ãŒå˜ä¸€æ–‡ã§æ¸ˆã¾ãªããªã£ãŸã¨ãã«ã€æ³¢æ‹¬å¼§ã‚’ã¤ã‘忘れるリスクもã‚りã¾ã™ã€‚

6.394.3 サンプルコード

if (x > 0) x++; /* W0414 */

6.394.4 関連メッセージ

  • W0413 åˆ¶å¾¡æ–‡ã®æœ¬ä½“㌠`{}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックã«ãªã£ã¦ã„ã¾ã›ã‚“。

6.394.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0414, Up: Messages

6.395 W0421

6.395.1 メッセージ本文

値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚

6.395.2 内容

NULL ãƒã‚¤ãƒ³ã‚¿ã‚’間接å‚ç…§ã™ã‚‹ã¨ãã®å‹•作㯠ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.395.3 サンプルコード

void func(int a, int *p)
{
    int b;

    if (p) {
        b = *p; /* OK */
    }
    else {
        b = *p; /* W0421 */
    }
}

6.395.4 関連メッセージ

  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1004 ã“ã“ã§è©²å½“変数㫠NULL ã®å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚
  • C1005 ã“ã“ã§è©²å½“変数㫠NULL ã®å¯èƒ½æ€§ãŒã‚る値を割り当ã¦ã¾ã—ãŸã€‚

6.395.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0421, Up: Messages

6.396 W0422

6.396.1 メッセージ本文

値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚

6.396.2 内容

NULL ãƒã‚¤ãƒ³ã‚¿ã‚’間接å‚ç…§ã™ã‚‹ã¨ãã®å‹•作㯠ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.396.3 サンプルコード

void func(int a, int *p)
{
    int b;

    if (p) {
        b = *p; /* OK */
    }

    b = *p; /* W0422 */
}

6.396.4 関連メッセージ

  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1004 ã“ã“ã§è©²å½“変数㫠NULL ã®å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚
  • C1005 ã“ã“ã§è©²å½“変数㫠NULL ã®å¯èƒ½æ€§ãŒã‚る値を割り当ã¦ã¾ã—ãŸã€‚

6.396.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0422, Up: Messages

6.397 W0423

6.397.1 メッセージ本文

値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚

6.397.2 内容

NULL ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算ã™ã‚‹ã¨ãã®å‹•作㯠ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.397.3 サンプルコード

int *func(int *p)
{
    if (p) {
        return p + 1; /* OK */
    }
    else {
        return p + 1; /* W0423 */
    }
}

6.397.4 関連メッセージ

  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1004 ã“ã“ã§è©²å½“変数㫠NULL ã®å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚
  • C1005 ã“ã“ã§è©²å½“変数㫠NULL ã®å¯èƒ½æ€§ãŒã‚る値を割り当ã¦ã¾ã—ãŸã€‚

6.397.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0423, Up: Messages

6.398 W0424

6.398.1 メッセージ本文

値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚

6.398.2 内容

NULL ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算ã™ã‚‹ã¨ãã®å‹•作㯠ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.398.3 サンプルコード

int *func(int *p)
{
    int a;

    if (p) {
        a = *(p + 1); /* OK */
    }

    return p + 1; /* W0424 */
}

6.398.4 関連メッセージ

  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1004 ã“ã“ã§è©²å½“変数㫠NULL ã®å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚
  • C1005 ã“ã“ã§è©²å½“変数㫠NULL ã®å¯èƒ½æ€§ãŒã‚る値を割り当ã¦ã¾ã—ãŸã€‚

6.398.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0424, Up: Messages

6.399 W0425

6.399.1 メッセージ本文

一ã¤ã®è¡Œã«è¤‡æ•°ã®å®£è¨€ã¾ãŸã¯æ–‡ãŒå­˜åœ¨ã—ã¾ã™ã€‚

6.399.2 内容

1 行中ã«è¤‡æ•°ã®å®£è¨€ã‚„文を書ãã“ã¨ã¯æ–‡æ³•上ã®èª¤ã‚Šã§ã¯ã‚りã¾ã›ã‚“ãŒã€ã‚³ãƒ¼ãƒ‰ãŒã‚„や複雑ã«ãªã‚Šã¾ã™ã€‚

6.399.3 サンプルコード

int a, b; /* W0425 */
int a; int b; /* W0425 */
struct C { int i; } c = { 0 }; c.i = a; /* W0425 */

6.399.4 関連メッセージ

ãªã—。

6.399.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0425, Up: Messages

6.400 W0431

6.400.1 メッセージ本文

ã“ã®è¡Œã¯ä»¥å‰ã®åŒã˜æ·±ã•ã®ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã‚ˆã‚Šå·¦ã«ãšã‚Œã¦ã„ã¾ã™ã€‚

6.400.2 内容

インデントã®ä»˜ã‘æ–¹ã«ä¸€è²«æ€§ãŒä¿ãŸã‚Œã¦ã„ãªã„ã¨ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.400.3 サンプルコード

void func()
{
    int a;
int b; /* W0431 */
    a = var();
}

6.400.4 関連メッセージ

  • W0432 ã“ã®è¡Œã¯ãƒ—ロジェクトã®ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã‚¹ã‚¿ã‚¤ãƒ«ã¨åˆã£ã¦ã„ã¾ã›ã‚“。

6.400.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0431, Up: Messages

6.401 W0432

6.401.1 メッセージ本文

ã“ã®è¡Œã¯ãƒ—ロジェクトã®ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã‚¹ã‚¿ã‚¤ãƒ«ã¨åˆã£ã¦ã„ã¾ã›ã‚“。

6.401.2 内容

インデントã®ä»˜ã‘æ–¹ã«ä¸€è²«æ€§ãŒä¿ãŸã‚Œã¦ã„ãªã„ã¨ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.401.3 サンプルコード

void func()
{
    int a;
      int b; /* W0432 */
    a = var();
}

6.401.4 関連メッセージ

  • W0431 ã“ã®è¡Œã¯ä»¥å‰ã®åŒã˜æ·±ã•ã®ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã‚ˆã‚Šå·¦ã«ãšã‚Œã¦ã„ã¾ã™ã€‚

6.401.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0432, Up: Messages

6.402 W0440

6.402.1 メッセージ本文

ã“ã®é–‰ã˜ã‚«ãƒƒã‚³ `}' ã¯ã€å¯¾å¿œã™ã‚‹é–‹ãカッコ `{' ã«åˆã†ã‚ˆã†ãªã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã«ç½®ã‹ã‚Œã¦ã„ã¾ã›ã‚“。

6.402.2 内容

制御文ã®é–‹ã波括弧ã¨é–‰ã˜æ³¢æ‹¬å¼§ã®é…置をåˆã£ã¦ã„ãªã„コードã¯ã‚¹ã‚¿ã‚¤ãƒ«ã®çµ±ä¸€æ„ŸãŒãªã„ã¨ã„ã†æ„味ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.402.3 サンプルコード

void func()
{
    if (x == 0)
    {
        if (y == 0)
        {
            ...snip...
    } /* W0440 */
        } /* W0440 */
}

6.402.4 関連メッセージ

ãªã—。

6.402.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0440, Up: Messages

6.403 W0441

6.403.1 メッセージ本文

接尾辞ãŒãªã„整数リテラルã®åž‹ãŒã€int åž‹ã§ã¯ã‚りã¾ã›ã‚“。

6.403.2 内容

整数定数ã®åž‹ãŒ int åž‹ã§ãªã„å ´åˆã€ã©ã®ã‚ˆã†ãªåž‹ã«ãªã‚‹ã‹ã¯ã€æŽ¥å°¾èªžã®æœ‰ç„¡ã€ã‚µã‚¤ã‚ºã€int ã®å‡¦ç†ç³»ä¾å­˜ã®ã‚µã‚¤ã‚ºãªã©ã«ã‚ˆã£ã¦æ±ºã¾ã‚Šã¾ã™ã€‚ 従ã£ã¦ã€æŽ¥å°¾èªžãŒãªã„å ´åˆã€æ•´æ•°å®šæ•°ã®åž‹ãŒä¸æ˜Žç¢ºã¨ãªã‚Šè§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.403.3 サンプルコード

int i = 0x1234; /* W0441 */

6.403.4 関連メッセージ

ãªã—。

6.403.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0441, Up: Messages

6.404 W0442

6.404.1 メッセージ本文

関数形å¼ãƒžã‚¯ãƒ­ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.404.2 内容

関数形å¼ãƒžã‚¯ãƒ­ã¯é–¢æ•°å‘¼ã³å‡ºã—ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ˜ãƒƒãƒ‰ãŒãªã„分ã ã‘効率性ã«ãƒ¡ãƒªãƒƒãƒˆãŒã‚ã‚‹åé¢ã€ 実引数ã«å¯¾ã™ã‚‹åž‹ãƒã‚§ãƒƒã‚¯ãŒè¡Œã‚れãªã„ã€ãƒ–レークãƒã‚¤ãƒ³ãƒˆç­‰ã‚’用ã„ãŸãƒ‡ãƒãƒƒã‚°ãŒè¡Œã„ã«ãã„ã€ãªã©ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚

6.404.3 サンプルコード

#define MAX(a, b) (a < b ? b : a) /* W0442 */

6.404.4 関連メッセージ

  • W0443 ã“ã®é–¢æ•°å½¢å¼ãƒžã‚¯ãƒ­ã¯é–¢æ•°ã§ç½®ãæ›ãˆã‚‹ã“ã¨ãŒã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.404.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0442, Up: Messages

6.405 W0443

6.405.1 メッセージ本文

ã“ã®é–¢æ•°å½¢å¼ãƒžã‚¯ãƒ­ã¯é–¢æ•°ã§ç½®ãæ›ãˆã‚‹ã“ã¨ãŒã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.405.2 内容

関数形å¼ãƒžã‚¯ãƒ­ã¯é–¢æ•°å‘¼ã³å‡ºã—ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ˜ãƒƒãƒ‰ãŒãªã„分ã ã‘効率性ã«ãƒ¡ãƒªãƒƒãƒˆãŒã‚ã‚‹åé¢ã€ 実引数ã«å¯¾ã™ã‚‹åž‹ãƒã‚§ãƒƒã‚¯ãŒè¡Œã‚れãªã„ã€ãƒ–レークãƒã‚¤ãƒ³ãƒˆç­‰ã‚’用ã„ãŸãƒ‡ãƒãƒƒã‚°ãŒè¡Œã„ã«ãã„ã€ãªã©ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚

6.405.3 サンプルコード

#define MACRO(a, b) (a * b) /* W0443 */

6.405.4 関連メッセージ

  • W0442 関数形å¼ãƒžã‚¯ãƒ­ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.405.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0443, Up: Messages

6.406 W0444

6.406.1 メッセージ本文

`#' 演算å­ã¨ `##' 演算å­ãŒä¸€ã¤ã®ãƒžã‚¯ãƒ­å®šç¾©å†…ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.406.2 内容

プリプロセッサ㌠# 演算å­ã‚„ ## 演算å­ã‚’評価ã™ã‚‹é †ç•ªã¯ã€ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.406.3 サンプルコード

#define MACRO(a) L ## #a /* W0444 */

6.406.4 関連メッセージ

  • W0445 複数㮠`##' 演算å­ãŒä¸€ã¤ã®ãƒžã‚¯ãƒ­å®šç¾©å†…ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.406.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0444, Up: Messages

6.407 W0445

6.407.1 メッセージ本文

複数㮠`##' 演算å­ãŒä¸€ã¤ã®ãƒžã‚¯ãƒ­å®šç¾©å†…ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.407.2 内容

プリプロセッサ㌠# 演算å­ã‚„ ## 演算å­ã‚’評価ã™ã‚‹é †ç•ªã¯ã€ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.407.3 サンプルコード

#define MACRO(prefix, name, suffix) int i = prefix##name##suffix /* W0445 */

6.407.4 関連メッセージ

  • W0444 `#' 演算å­ã¨ `##' 演算å­ãŒä¸€ã¤ã®ãƒžã‚¯ãƒ­å®šç¾©å†…ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.407.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0445, Up: Messages

6.408 W0446

6.408.1 メッセージ本文

代入演算ã®çµæžœå€¤ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.408.2 内容

1 ã¤ã®å¼ã®ä¸­ã«ã€è¤‡æ•°ã®ä»£å…¥æ¼”ç®—å­ã‚„複åˆä»£å…¥æ¼”ç®—å­ã‚’使用ã™ã‚‹ã¨ã€æ–‡ãŒè¤‡é›‘ã«ãªã‚Šã¾ã™ã€‚

6.408.3 サンプルコード

void func(void)
{
    int a;
    int b;

    a = b += 3; /* W0446 */
}

6.408.4 関連メッセージ

ãªã—。

6.408.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0446, Up: Messages

6.409 W0447

6.409.1 メッセージ本文

カンマ演算å­ãŒ for æ–‡ã®åˆ¶å¾¡å¼ä»¥å¤–ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.409.2 内容

カンマ演算å­ã¯è¤‡æ•°ã®å¼ã‚’一ã¤ã®æ–‡ã§æ›¸ããŸã„ã¨ãã«ä½¿ç”¨ã—ã¾ã™ã€‚主ãªç”¨é€”㯠for æ–‡ã§ã™ã€‚for 文以外ã§ä½¿ç”¨ã™ã‚‹ã¨ã‚³ãƒ¼ãƒ‰ãŒè¤‡é›‘ã«ãªã‚Šã¾ã™ã€‚

6.409.3 サンプルコード

int a = 1;
int b = 0;

int c = (b = a, a); /* W0447 */

6.409.4 関連メッセージ

ãªã—。

6.409.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0447, Up: Messages

6.410 W0456

6.410.1 メッセージ本文

外部çµåˆã‚’æŒã¤ã‚ªãƒ–ジェクトã‚ã‚‹ã„ã¯é–¢æ•° `%s' ãŒã€ãƒ˜ãƒƒãƒ€ãƒ•ァイル内ã§å®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.410.2 内容

ヘッダファイルã¯é€šå¸¸ã¯è¤‡æ•°ã®ãƒ•ァイルã‹ã‚‰ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れるã“ã¨ã‚’想定ã—ã¾ã™ã€‚ã“ã®ã‚ˆã†ãªãƒ˜ãƒƒãƒ€ãƒ•ァイルã«å¤–部çµåˆã‚’æŒã¤ã‚ªãƒ–ジェクトや関数ãŒå®šç¾©ã•れã¦ã„ã‚‹ã¨ã€ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れã¦ã„る数分定義ã•れるã“ã¨ã«ãªã‚Šã€é€šå¸¸ã¯ãƒªãƒ³ã‚¯ã‚¨ãƒ©ãƒ¼ã¨ãªã‚Šã¾ã™ã€‚

6.410.3 サンプルコード

test.h

int num = 1; /* W0456 */

int func(void) /* W0456 */
{
    return num;
}

test.c

#include "test.h"

6.410.4 関連メッセージ

ãªã—。

6.410.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0456, Up: Messages

6.411 W0457

6.411.1 メッセージ本文

関数ã®å®£è¨€ã‚ã‚‹ã„ã¯å®šç¾©ã§ã€æˆ»ã‚Šå€¤åž‹ãŒæ˜Žç¤ºçš„ã«å®šç¾©ã•れã¦ã„ãªã„ã®ã§ã€æš—黙的㫠int åž‹ã¨å®šç¾©ã•れã¾ã™ã€‚

6.411.2 内容

関数宣言ã®éš›ã«åž‹ã‚’明示ã—ãªã‘れã°ã€æš—黙的㫠int åž‹ã®é–¢æ•°ã¨ã—ã¦å®£è¨€ã•れã¾ã™ã€‚ã“れã¯ã‚³ãƒ¼ãƒ‰ã‚’çœç•¥ã—ãŸã„動機ã§ä½¿ã‚れるã“ã¨ã‚‚ã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“ãŒã€ã‚³ãƒ¼ãƒ‰ã®æ˜Žç¢ºã•ãŒå¤±ã‚れã€è§£æžæ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.411.3 サンプルコード

func1(void); /* W0457 */

func2(void) /* W0457 */
{
    return 0;
}

6.411.4 関連メッセージ

ãªã—。

6.411.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0457, Up: Messages

6.412 W0458

6.412.1 メッセージ本文

オブジェクトã®å®£è¨€ã‚ã‚‹ã„ã¯å®šç¾©ã§ã€åž‹ãŒæ˜Žç¤ºçš„ã«å®šç¾©ã•れã¦ã„ãªã„ã®ã§ã€æš—黙的㫠int åž‹ã¨å®šç¾©ã•れã¾ã™ã€‚

6.412.2 内容

オブジェクト宣言ã®éš›ã«åž‹ã‚’明示ã—ãªã‘れã°ã€æš—黙的㫠int åž‹ã®é–¢æ•°ã¨ã—ã¦å®£è¨€ã•れã¾ã™ã€‚ã“れã¯ã‚³ãƒ¼ãƒ‰ã‚’çœç•¥ã—ãŸã„動機ã§ä½¿ã‚れるã“ã¨ã‚‚ã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“ãŒã€ã‚³ãƒ¼ãƒ‰ã®æ˜Žç¢ºã•ãŒå¤±ã‚れã€è§£æžæ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.412.3 サンプルコード

a; /* W0458 */
b = 0; /* W0458 */
extern c; /* W0458 */
static d; /* W0458 */

int func(e) /* W0458 */
{
    const f = e; /* W0458 */
    return f;
}

6.412.4 関連メッセージ

ãªã—。

6.412.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0458, Up: Messages

6.413 W0459

6.413.1 メッセージ本文

変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚

6.413.2 内容

変数を明示的ã«åˆæœŸåŒ–ã—ãªã„å ´åˆã€é™çš„変数ã¨ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã¯æš—黙的㫠0 ã§åˆæœŸåŒ–ã•れã¾ã™ãŒã€è‡ªå‹•変数ã¯ä¸å®šã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ãã®ã‚ˆã†ãªè‡ªå‹•変数を使用ã™ã‚‹ã¨äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.413.3 サンプルコード

int a;

if(a > 0) { /* W0459 */
}

6.413.4 関連メッセージ

  • W0460 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W0461 値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚
  • W0462 値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚
  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1003 ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.413.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0459, Up: Messages

6.414 W0460

6.414.1 メッセージ本文

変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚

6.414.2 内容

変数を明示的ã«åˆæœŸåŒ–ã—ãªã„å ´åˆã€é™çš„変数ã¨ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã¯æš—黙的㫠0 ã§åˆæœŸåŒ–ã•れã¾ã™ãŒã€è‡ªå‹•変数ã¯ä¸å®šã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ãã®ã‚ˆã†ãªè‡ªå‹•変数を使用ã™ã‚‹ã¨äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.414.3 サンプルコード

void func(int a)
{
    int b;

    if (a == 0) {
        b = 1;
    }

    if (b > 0) { /* W0460 */
    }
}

6.414.4 関連メッセージ

  • W0459 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚
  • W0461 値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚
  • W0462 値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚
  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1003 ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.414.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0460, Up: Messages

6.415 W0461

6.415.1 メッセージ本文

値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚

6.415.2 内容

変数を明示的ã«åˆæœŸåŒ–ã—ãªã„å ´åˆã€é™çš„変数ã¨ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã¯æš—黙的㫠0 ã§åˆæœŸåŒ–ã•れã¾ã™ãŒã€è‡ªå‹•変数ã¯ä¸å®šã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ãã®ã‚ˆã†ãªè‡ªå‹•変数を使用ã™ã‚‹ã¨äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.415.3 サンプルコード

extern int func1(const int *);

void func2(int a)
{
  int b;

  func1(&a); /* OK */
  func1(&b); /* W0461 */
}

6.415.4 関連メッセージ

  • W0459 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚
  • W0460 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W0462 値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚
  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1003 ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.415.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0461, Up: Messages

6.416 W0462

6.416.1 メッセージ本文

値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚

6.416.2 内容

変数を明示的ã«åˆæœŸåŒ–ã—ãªã„å ´åˆã€é™çš„変数ã¨ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã¯æš—黙的㫠0 ã§åˆæœŸåŒ–ã•れã¾ã™ãŒã€è‡ªå‹•変数ã¯ä¸å®šã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ãã®ã‚ˆã†ãªè‡ªå‹•変数を使用ã™ã‚‹ã¨äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.416.3 サンプルコード

extern int func1(const int *);

int func2(int a)
{
    int b;

    if (a > 10) {
        b = a + 10;
    }

    func1(&b); /* W0462 */
}

6.416.4 関連メッセージ

  • W0459 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚
  • W0460 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W0461 値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚
  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1003 ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.416.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0462, Up: Messages

6.417 W0477

6.417.1 メッセージ本文

マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`{}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚

6.417.2 内容

ã“ã®ã‚ˆã†ãªãƒžã‚¯ãƒ­å®šç¾©ã¯ã€ãƒ—ロジェクトやプログラマã«ç‰¹æœ‰ã®ã‚‚ã®ã«ãªã‚ŠãŒã¡ãªãŸã‚〠外部ã®äººãŒè¦‹ãŸã¨ãã®è§£æžæ€§ãŒå¤§å¹…ã«ä½Žä¸‹ã—ã¾ã™ã€‚

6.417.3 サンプルコード

#define BEGIN { /* W0477 */
#define END } /* W0477 */

void func()
BEGIN
    ...snip...
END

6.417.4 関連メッセージ

  • W0478 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚
  • W0479 ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
  • W0480 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€ã‚ã‚‹ã„ã¯å¥èª­æ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚
  • W0481 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`{}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚
  • W0482 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚
  • W0483 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚

6.417.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0477, Up: Messages

6.418 W0478

6.418.1 メッセージ本文

ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚

6.418.2 内容

ã“ã®ã‚ˆã†ãªãƒžã‚¯ãƒ­å®šç¾©ã¯ã€ãƒ—ロジェクトやプログラマã«ç‰¹æœ‰ã®ã‚‚ã®ã«ãªã‚ŠãŒã¡ãªãŸã‚〠外部ã®äººãŒè¦‹ãŸã¨ãã®è§£æžæ€§ãŒå¤§å¹…ã«ä½Žä¸‹ã—ã¾ã™ã€‚

6.418.3 サンプルコード

#define MALLOC_OR_DIE(ptr, size) ptr = malloc(size); if (!ptr) exit(1); /* W0478 */

6.418.4 関連メッセージ

  • W0477 マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`{}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚
  • W0479 ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
  • W0480 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€ã‚ã‚‹ã„ã¯å¥èª­æ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚
  • W0481 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`{}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚
  • W0482 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚
  • W0483 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚

6.418.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0478, Up: Messages

6.419 W0479

6.419.1 メッセージ本文

ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

6.419.2 内容

外部ã®äººãŒè¦‹ãŸã¨ãã®è§£æžæ€§ãŒå¤§å¹…ã«ä½Žä¸‹ã—ã¾ã™ã€‚

6.419.3 サンプルコード

#define foo unsigned int /* W0479 */

6.419.4 関連メッセージ

  • W0477 マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`{}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚
  • W0478 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚
  • W0480 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€ã‚ã‚‹ã„ã¯å¥èª­æ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚
  • W0481 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`{}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚
  • W0482 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚
  • W0483 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚

6.419.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0479, Up: Messages

6.420 W0480

6.420.1 メッセージ本文

ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€æ¼”ç®—å­ã€ã‚ã‚‹ã„ã¯åŒºåˆ‡ã‚Šæ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚

6.420.2 内容

外部ã®äººãŒè¦‹ãŸã¨ãã®è§£æžæ€§ãŒå¤§å¹…ã«ä½Žä¸‹ã—ã¾ã™ã€‚

6.420.3 サンプルコード

#define PLUS + /* W0480 */
#define LOOP while /* W0480 */

6.420.4 関連メッセージ

  • W0477 マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`{}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚
  • W0478 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚
  • W0479 ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
  • W0481 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`{}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚
  • W0482 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚
  • W0483 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚

6.420.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0480, Up: Messages

6.421 W0481

6.421.1 メッセージ本文

ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`{}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚

6.421.2 内容

外部ã®äººãŒè¦‹ãŸã¨ãã®è§£æžæ€§ãŒå¤§å¹…ã«ä½Žä¸‹ã—ã¾ã™ã€‚

6.421.3 サンプルコード

#define SETUP(a, b) /* W0481 */ \
    { \
        if (a) \
            b = 0; \
        else \
            b = 1; \
    }

6.421.4 関連メッセージ

  • W0477 マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`{}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚
  • W0478 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚
  • W0479 ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
  • W0480 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€ã‚ã‚‹ã„ã¯å¥èª­æ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚
  • W0482 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚
  • W0483 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚

6.421.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0481, Up: Messages

6.422 W0482

6.422.1 メッセージ本文

ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚

6.422.2 内容

外部ã®äººãŒè¦‹ãŸã¨ãã®è§£æžæ€§ãŒå¤§å¹…ã«ä½Žä¸‹ã—ã¾ã™ã€‚

6.422.3 サンプルコード

#define COMPOSITE struct /* W0482 */

6.422.4 関連メッセージ

  • W0477 マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`{}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚
  • W0478 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚
  • W0479 ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
  • W0480 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€ã‚ã‚‹ã„ã¯å¥èª­æ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚
  • W0481 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`{}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚
  • W0483 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚

6.422.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0482, Up: Messages

6.423 W0483

6.423.1 メッセージ本文

ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚

6.423.2 内容

外部ã®äººãŒè¦‹ãŸã¨ãã®è§£æžæ€§ãŒå¤§å¹…ã«ä½Žä¸‹ã—ã¾ã™ã€‚

6.423.3 サンプルコード

#define PRIVATE_FINAL static const /* W0483 */

6.423.4 関連メッセージ

  • W0477 マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`{}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚
  • W0478 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚
  • W0479 ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
  • W0480 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€ã‚ã‚‹ã„ã¯å¥èª­æ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚
  • W0481 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`{}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚
  • W0482 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚

6.423.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0483, Up: Messages

6.424 W0488

6.424.1 メッセージ本文

関数呼ã³å‡ºã— `()'ã€é…列添字演算 `[]'ã€ã‚ã‚‹ã„ã¯æ§‹é€ ä½“/å…±ç”¨ä½“ãƒ¡ãƒ³ãƒæ¼”ç®— `->' ã¾ãŸã¯ `.' ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.424.2 内容

演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.424.3 サンプルコード

while (func(&a, &b) < 0 && i > 0) { /* W0488 */
    ...snip...
}

6.424.4 関連メッセージ

  • W0489 å˜é …演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0490 二項演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.424.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0488, Up: Messages

6.425 W0489

6.425.1 メッセージ本文

å˜é …演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.425.2 内容

演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.425.3 サンプルコード

void func(unsigned int a, unsigned int b)
{
    unsigned int c = !a && b; /* W0489 */
}

6.425.4 関連メッセージ

  • W0488 関数呼ã³å‡ºã— `()' ã€é…列添字演算 `[]' ã€ã‚ã‚‹ã„ã¯æ§‹é€ ä½“/å…±ç”¨ä½“ãƒ¡ãƒ³ãƒæ¼”ç®— `->' ã¾ãŸã¯ `.' ãŒã€&& ã‚ã‚‹ã„㯠|| ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0490 二項演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.425.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0489, Up: Messages

6.426 W0490

6.426.1 メッセージ本文

二項演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.426.2 内容

演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.426.3 サンプルコード

void func(unsigned int a, unsigned int b, unsigned int c)
{
    unsigned int d = a && b || c; /* W0490 */
}

6.426.4 関連メッセージ

  • W0488 関数呼ã³å‡ºã— `()' ã€é…列添字演算 `[]' ã€ã‚ã‚‹ã„ã¯æ§‹é€ ä½“/å…±ç”¨ä½“ãƒ¡ãƒ³ãƒæ¼”ç®— `->' ã¾ãŸã¯ `.' ãŒã€&& ã‚ã‚‹ã„㯠|| ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0489 å˜é …演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.426.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0490, Up: Messages

6.427 W0491

6.427.1 メッセージ本文

åŒã˜è­˜åˆ¥å­å `%s' ã¯ä»–ã®åå‰ç©ºé–“内ã®å®£è¨€ã§ã‚‚使ã‚れã¦ã„ã¾ã™ã€‚

6.427.2 内容

åå‰ç©ºé–“ãŒç•°ãªã‚‹ã‹ã‚‰ã¨ã„ã£ã¦ã€åŒã˜åå‰ã®è­˜åˆ¥å­ã‚’使用ã™ã‚‹ã¨ã€ã‚³ãƒ¼ãƒ‰ãŒç´›ã‚‰ã‚ã—ããªã‚Šã¾ã™ã€‚

6.427.3 サンプルコード

extern int foo;

struct foo { /* W0491 */
    int a;
    int b;
};

6.427.4 関連メッセージ

  • W0492 åŒã˜è­˜åˆ¥å­å `%s' ãŒæ§‹é€ ä½“/共用体ã®ãƒ¡ãƒ³ãƒã®ä»–ã«ã€ãƒ©ãƒ™ãƒ«ã€ã‚¿ã‚°ã€ã¾ãŸã¯é€šå¸¸ã®è­˜åˆ¥å­ã¨ã—ã¦ã‚‚使ã‚れã¦ã„ã¾ã™ã€‚

6.427.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0491, Up: Messages

6.428 W0492

6.428.1 メッセージ本文

åŒã˜è­˜åˆ¥å­å `%s' ãŒæ§‹é€ ä½“/共用体ã®ãƒ¡ãƒ³ãƒã®ä»–ã«ã€ãƒ©ãƒ™ãƒ«ã€ã‚¿ã‚°ã€ã¾ãŸã¯é€šå¸¸ã®è­˜åˆ¥å­ã¨ã—ã¦ã‚‚使ã‚れã¦ã„ã¾ã™ã€‚

6.428.2 内容

åå‰ç©ºé–“ãŒç•°ãªã‚‹ã‹ã‚‰ã¨ã„ã£ã¦ã€åŒã˜åå‰ã®è­˜åˆ¥å­ã‚’使用ã™ã‚‹ã¨ã€ã‚³ãƒ¼ãƒ‰ãŒç´›ã‚‰ã‚ã—ããªã‚Šã¾ã™ã€‚

6.428.3 サンプルコード

extern int foo;

struct a {
    int foo; /* W0492 */
    int b;
};

void func(void)
{
    struct a a;
    int b; /* W0492 */
}

6.428.4 関連メッセージ

  • W0491 åŒã˜è­˜åˆ¥å­å `%s' ã¯ä»–ã®åå‰ç©ºé–“内ã®å®£è¨€ã§ã‚‚使ã‚れã¦ã„ã¾ã™ã€‚

6.428.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0492, Up: Messages

6.429 W0493

6.429.1 メッセージ本文

構造体ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®å€¤ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã—ã¦ã„ã¾ã™ã€‚

6.429.2 内容

引数ã«ã‚ªãƒ–ジェクトã®å€¤ã‚’渡ã™ã¨ã€ãれらã®è¦ç´ ã®ã‚µã‚¤ã‚ºåˆ†ã‚¹ã‚¿ãƒƒã‚¯ãƒ¡ãƒ¢ãƒªã‚’消費ã™ã‚‹ã“ã¨ã«ãªã‚Šã€ãƒ‘フォーマンスã®é¢ã§ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚

6.429.3 サンプルコード

struct STR {
    long a;
    long b;
};

extern int foo(struct STR s);

void func(void)
{
    struct STR s = { 0 };

    foo(s); /* W0493 */
}

6.429.4 関連メッセージ

ãªã—。

6.429.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0493, Up: Messages

6.430 W0495

6.430.1 メッセージ本文

æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.430.2 内容

演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.430.3 サンプルコード

void func(int a, int b, int c)
{
    int x = a % b  * c; /* W0495 */
}

6.430.4 関連メッセージ

  • W0496 三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0497 シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0498 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0499 + - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0500 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0501 三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0502 + - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.430.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0495, Up: Messages

6.431 W0496

6.431.1 メッセージ本文

三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.431.2 内容

演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.431.3 サンプルコード

void func(int a, int b, int c, int d, int e)
{
    int f = a ? b : c ? d : e; /* W0496 */
}

6.431.4 関連メッセージ

  • W0495 æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0497 シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0498 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0499 + - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0500 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0501 三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0502 + - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.431.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0496, Up: Messages

6.432 W0497

6.432.1 メッセージ本文

シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.432.2 内容

演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.432.3 サンプルコード

void func(int a, int b, int c)
{
    int d = a << b << c; /* W0497 */
}

6.432.4 関連メッセージ

  • W0495 æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0496 三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0498 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0499 + - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0500 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0501 三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0502 + - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.432.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0497, Up: Messages

6.433 W0498

6.433.1 メッセージ本文

äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.433.2 内容

演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.433.3 サンプルコード

void func(int a, int b, int c)
{
    int d = a - b + c; /* W0498 */
}

6.433.4 関連メッセージ

  • W0495 æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0496 三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0497 シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0499 + - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0500 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0501 三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0502 + - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.433.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0498, Up: Messages

6.434 W0499

6.434.1 メッセージ本文

+ - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.434.2 内容

演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.434.3 サンプルコード

void func(int a, int b, int c)
{
    int d = a << b >> c; /* W0499 */
}

6.434.4 関連メッセージ

  • W0495 æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0496 三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0497 シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0498 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0500 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0501 三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0502 + - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.434.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0499, Up: Messages

6.435 W0500

6.435.1 メッセージ本文

äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.435.2 内容

演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.435.3 サンプルコード

void func(int a, int b, int c)
{
    int d = a * b + c;  /* W0500 */
}

6.435.4 関連メッセージ

  • W0495 æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0496 三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0497 シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0498 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0499 + - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0501 三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0502 + - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.435.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0500, Up: Messages

6.436 W0501

6.436.1 メッセージ本文

三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.436.2 内容

演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.436.3 サンプルコード

void func(int a, int b, int c)
{
    int d = a ? a : a + c; /* W0501 */
}

6.436.4 関連メッセージ

  • W0495 æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0496 三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0497 シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0498 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0499 + - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0500 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0502 + - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.436.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0501, Up: Messages

6.437 W0502

6.437.1 メッセージ本文

+ - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.437.2 内容

演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.437.3 サンプルコード

void func(int a, int b, int c)
{
    int d = a != b << c; /* W0502 */
}

6.437.4 関連メッセージ

  • W0495 æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0496 三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0497 シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0498 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0499 + - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0500 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚
  • W0501 三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚

6.437.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0502, Up: Messages

6.438 W0508

6.438.1 メッセージ本文

`&&' ã‚ã‚‹ã„㯠`||' 演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«å‰¯ä½œç”¨ãŒã‚りã¾ã™ã€‚

6.438.2 内容

&& 演算å­ãŠã‚ˆã³ || 演算å­ã¯çŸ­çµ¡è©•ä¾¡ã®æ–¹å¼ã§å‡¦ç†ã•れã¾ã™ã€‚ ã—ãŸãŒã£ã¦ã€ã“れらã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«å‰¯ä½œç”¨ã‚’å«ã‚€å¼ãŒã‚ã‚‹å ´åˆã€ ãã®å‰¯ä½œç”¨ã®æœ‰ç„¡ãŒå·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«ä¾å­˜ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ ã“れã¯éžå¸¸ã«ç´›ã‚‰ã‚ã—ãã€ãƒã‚°ãŒå…¥ã‚Šè¾¼ã‚€å¯èƒ½æ€§ã‚’高ã‚ã¾ã™ã€‚

6.438.3 サンプルコード

if ((a == b) && ((c = func()) == d)) /* W0508 */

c ã«ã¯ã€ a==b ã®è©•価ãŒçœŸã®å ´åˆã«ã®ã¿ func() ã®æˆ»ã‚Šå€¤ãŒä»£å…¥ã•れã¾ã™ã€‚

6.438.4 関連メッセージ

ãªã—。

6.438.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0508, Up: Messages

6.439 W0511

6.439.1 メッセージ本文

C++ コメント `//' ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.439.2 内容

// コメント㯠ISO C90 ã§è¦å®šã•れã¦ãŠã‚‰ãšã€è¨€èªžæ‹¡å¼µã«è©²å½“ã—ã¾ã™ã€‚言語拡張を使用ã™ã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.439.3 サンプルコード

// W0511

6.439.4 関連メッセージ

ãªã—。

6.439.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0511, Up: Messages

6.440 W0512

6.440.1 メッセージ本文

`++' ã‚ã‚‹ã„㯠`–' 演算å­ã®çµæžœãŒå¼ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.440.2 内容

ã“ã®ã‚ˆã†ãªå¼ã§ã¯ ++ 演算å­ã‚„ -- 演算å­ã®è©•価順ã®èªè­˜èª¤ã‚ŠãŒã‚れã°ã€æ„図ã—ãªã„çµæžœã«ãªã‚‹å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚ 見ãŸç›®ã«ã‚‚複雑ãªå¼ã«ãªã‚Šã€ç†è§£ãŒå›°é›£ã‹ã¤èª¤ã£ãŸç†è§£ã‚’ã—ã‚„ã™ã„ãªã©ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆã‚‚ã‚りã¾ã™ã€‚

6.440.3 サンプルコード

a = b++ + --c + d++; /* W0512 */

6.440.4 関連メッセージ

ãªã—。

6.440.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0512, Up: Messages

6.441 W0525

6.441.1 メッセージ本文

1 ビットã®åå‰ãŒä»˜ã„ãŸãƒ•ィールドãŒç¬¦å·ä»˜ãåž‹ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚

6.441.2 内容

1 ビットã®ç¬¦å·ä»˜ãƒ“ットフィールドã§è¡¨ã™ã“ã¨ãŒã§ãã‚‹ã®ã¯ "-1" 㨠"0" ã®ã¿ã§ã€"1" を表ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。 ã“ã®ã‚ˆã†ãªãƒ“ットフィールドã¯ç”¨é€”ãŒè€ƒãˆã¥ã‚‰ãã€ç†è§£ãŒå›°é›£ã§ã™ã€‚

6.441.3 サンプルコード

struct ST {
    int bit:1; /* W0525 */
};

6.441.4 関連メッセージ

ãªã—。

6.441.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0525, Up: Messages

6.442 W0528

6.442.1 メッセージ本文

ã“ã®ãƒžã‚¯ãƒ­ã¯ã€8 進数定数を定義ã—ã¦ã„ã¾ã™ã€‚

6.442.2 内容

0 ã§å§‹ã¾ã‚‹å®šæ•°ã¯ 8 進数ã¨ã—ã¦è§£é‡ˆã•れã¾ã™ã€‚ 10 é€²æ•°ã¨æ¯”ã¹ã¦ç´›ã‚‰ã‚ã—ã„ã§ã™ã€‚

6.442.3 サンプルコード

#define MACRO 0123 /* W0528 */

6.442.4 関連メッセージ

  • W0529 8 進数リテラルãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0530 文字定数ã¾ãŸã¯æ–‡å­—列リテラルã®ä¸­ã§ã€8 進拡張表記ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.442.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0528, Up: Messages

6.443 W0529

6.443.1 メッセージ本文

8 進数リテラルãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.443.2 内容

0 ã§å§‹ã¾ã‚‹å®šæ•°ã¯ 8 進数ã¨ã—ã¦è§£é‡ˆã•れã¾ã™ã€‚ 10 é€²æ•°ã¨æ¯”ã¹ã¦ç´›ã‚‰ã‚ã—ã„ã§ã™ã€‚

6.443.3 サンプルコード

#define MACRO 0123

int a = 0123; /* W0529 */
int b = MACRO; /* W0529 */

6.443.4 関連メッセージ

  • W0528 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€8 進数定数を定義ã—ã¦ã„ã¾ã™ã€‚
  • W0530 文字定数ã¾ãŸã¯æ–‡å­—列リテラルã®ä¸­ã§ã€8 進拡張表記ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.443.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0529, Up: Messages

6.444 W0530

6.444.1 メッセージ本文

文字定数ã¾ãŸã¯æ–‡å­—列リテラルã®ä¸­ã§ã€8 進拡張表記ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.444.2 内容

0 ã§å§‹ã¾ã‚‹å®šæ•°ã¯ 8 進数ã¨ã—ã¦è§£é‡ˆã•れã¾ã™ã€‚ 10 é€²æ•°ã¨æ¯”ã¹ã¦ç´›ã‚‰ã‚ã—ã„ã§ã™ã€‚

6.444.3 サンプルコード

char *s = "\012"; /* W0530 */

6.444.4 関連メッセージ

  • W0528 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€8 進数定数を定義ã—ã¦ã„ã¾ã™ã€‚
  • W0529 8 進数リテラルãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.444.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0530, Up: Messages

6.445 W0532

6.445.1 メッセージ本文

switch 文㮠case 節ã€default 節ã‹ã‚‰å‡ºã‚‹ãŸã‚ã« break æ–‡ãŒä½¿ã‚れã¦ã„ã¾ã™ãŒã€case ç¯€ã®æœ«å°¾ã«è¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。

6.445.2 内容

break æ–‡ã¯ã€case æ–‡å†…ã®æœ«å°¾ã§ã®ã¿ä½¿ç”¨ã•れるã¹ãã§ã™ã€‚

6.445.3 サンプルコード

switch (x) {
case 1:
    if (y == 0) {
        break; /* W0532 */
    }
    ...snip...
    break;
case 2:
    ...snip...
    break;
}

6.445.4 関連メッセージ

ãªã—。

6.445.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0532, Up: Messages

6.446 W0534

6.446.1 メッセージ本文

制御変数 `%s' ã¯ã€ã“ã® for 文制御å¼ã§åˆæœŸåŒ–ã•れã¦ã„ã¾ã›ã‚“。

6.446.2 内容

ループ制御変数ã¯å¿…ãšã—ã‚‚ for æ–‡ã®åˆæœŸåŒ–å¼ã®ä¸­ã§åˆæœŸåŒ–ã—ãªã„ã¨ã„ã‘ãªã„ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“。 ã—ã‹ã—ã€for 文以å‰ã®ã©ã“ã‹ã‹ã‚‰åˆæœŸåŒ–文を探ã™ã‚ˆã‚Šã‚‚ã€for æ–‡ã®åˆæœŸåŒ–å¼ã«åˆæœŸåŒ–æ–‡ãŒæ›¸ã„ã¦ã„ã‚‹æ–¹ãŒã‚ã‹ã‚Šã‚„ã™ã„ã¨ã„ãˆã¾ã™ã€‚

6.446.3 サンプルコード

int i = 0;
int j;

for (; i < 10; i++) { /* W0534 */
}

for (j = 0; i < 20; i++) { /* W0534 */
}

6.446.4 関連メッセージ

ãªã—。

6.446.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0534, Up: Messages

6.447 W0535

6.447.1 メッセージ本文

for æ–‡ã®åˆ¶å¾¡å¼ã®ä¸­ã«ã‚«ãƒ³ãƒžæ¼”ç®—å­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.447.2 内容

for æ–‡ã«ãŠã‘るカンマ演算å­ã®ä½¿ç”¨ã¯ã€for 文以外ã§ã®ä½¿ç”¨ã‚ˆã‚Šã¯ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒå°‘ãªã„ã¨è¨€ãˆã¾ã™ã€‚ ã—ã‹ã—ã€ç¨‹åº¦ã¯å°ã•ã„ãªãŒã‚‰ã‚‚è§£æžæ€§ã‚’低下ã•ã›ã‚‹ã“ã¨ã«å¤‰ã‚りã¯ã‚りã¾ã›ã‚“。

6.447.3 サンプルコード

int i, j, k = 0;

for (i = 0, j = 0; i < 10; i++, j++, k--) { /* W0535 */
}

6.447.4 関連メッセージ

ãªã—。

6.447.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0535, Up: Messages

6.448 W0538

6.448.1 メッセージ本文

ã“ã® default ラベルã¯ã€switch æ–‡å†…ã®æœ€å¾Œã®ãƒ©ãƒ™ãƒ«ã§ã¯ã‚りã¾ã›ã‚“。

6.448.2 内容

switch æ–‡ã«ãŠã„㦠default ç¯€ãŒæœ«å°¾ã§ãªã„å ´åˆã€ãã®ç¯€ä»¥é™ã® case 節ãŒåˆ¤å®šã•れã¾ã›ã‚“。 ã“れã¯ã€ã»ã©ã‚“ã©ã®å ´åˆãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã§ã¯ãªã„ã¨æƒ³å®šã•れã¾ã™ã€‚

6.448.3 サンプルコード

switch (x) {
default: /* W0538 */
    ...snip...
case 1:
    ...snip...
}

6.448.4 関連メッセージ

ãªã—。

6.448.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0538, Up: Messages

6.449 W0540

6.449.1 メッセージ本文

空ã®ä»®å¼•数並ã³ã®é–¢æ•°ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚`void' ãŒçœç•¥ã•れã¦ã„ã¾ã™ã€‚

6.449.2 内容

引数をæŒãŸãªã„関数定義㧠void を使用ã—ãªã„æ›¸ãæ–¹ã¯ã€å¤ã„å½¢å¼ã®é–¢æ•°å®šç¾©ã¨è¦‹ãªã•ã‚Œã€æ„図ã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.449.3 サンプルコード

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

6.449.4 関連メッセージ

ãªã—。

6.449.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0540, Up: Messages

6.450 W0541

6.450.1 メッセージ本文

マクロã§éš è”½ã•れãªã„インラインアセンブリコードã§ã™ã€‚

6.450.2 内容

アセンブラコードã¯ç’°å¢ƒã«ã‚ˆã£ã¦å¤‰ã‚ã‚‹ãŸã‚ã€è¤‡æ•°ã®é–¢æ•°ã«ç‚¹åœ¨ã•ã›ã‚‹ã¨ã€åˆ¥ã®ç’°å¢ƒã«ç§»æ¤ã™ã‚‹ã¨ãã®å¤‰æ›´ã‚³ã‚¹ãƒˆãŒå¤§ãããªã‚Šã¾ã™ã€‚

6.450.3 サンプルコード

#define ASM_CODE asm("movl %ecx, %eax")

void foo(int arg1, int *arg2, int arg3)
{
    asm("movl %ecx, %eax"); /* W0541 */
    __asm__("movl %ecx, (%eax)"); /* W0541 */

    asm { /* W0541 */
        xorl eax, eax
    }

    ASM_CODE; /* OK */

    __asm__ volatile ( /* W0541 */
            "int $0x80"
            : "=a" (r)
              "+b" (arg1),
              "+c" (arg2),
              "+d" (arg3)
            : "a" (128)
            : "memory", "cc");
}

6.450.4 関連メッセージ

ãªã—。

6.450.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W0541, Up: Messages

6.451 W0542

6.451.1 メッセージ本文

関数宣言ã®ä»®å¼•æ•°ã®ä¸€éƒ¨ã«ã®ã¿è­˜åˆ¥å­ãŒå­˜åœ¨ã—ã¾ã™ã€‚

6.451.2 内容

関数定義ã®ä»®å¼•æ•°åãŒå¯¾å¿œã™ã‚‹å®£è¨€ã®ä»®å¼•æ•°åã¨ç•°ãªã‚‹å ´åˆã€ãã®é–¢æ•°ã®ä»•æ§˜å¤‰æ›´ãŒæœªå®Œäº†ã¨ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.451.3 サンプルコード

void func(int i, char, int, char c); /* W0542 */

6.451.4 関連メッセージ

ãªã—。

6.451.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0542, Up: Messages

6.452 W0543

6.452.1 メッセージ本文

ã“ã®é–¢æ•°å®£è¨€ã«ãŠã‘る仮引数ã®è­˜åˆ¥å­ã¯ã€ä»¥å‰ã®å®£è¨€ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.452.2 内容

関数定義ã®ä»®å¼•æ•°åãŒå¯¾å¿œã™ã‚‹å®£è¨€ã®ä»®å¼•æ•°åã¨ç•°ãªã‚‹å ´åˆã€ãã®é–¢æ•°ã®ä»•æ§˜å¤‰æ›´ãŒæœªå®Œäº†ã¨ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.452.3 サンプルコード

void func(int i1, int i2);

void func(int i2, int i1) /* W0543 */
{
    ...snip...
}

6.452.4 関連メッセージ

  • W0544 関数宣言ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ã¨é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã®å®£è¨€ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ãŒç•°ãªã‚Šã¾ã™ã€‚

6.452.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0543, Up: Messages

6.453 W0544

6.453.1 メッセージ本文

関数宣言ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ã¨é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã®å®£è¨€ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ãŒç•°ãªã‚Šã¾ã™ã€‚

6.453.2 内容

関数定義ã®ä»®å¼•æ•°åãŒå¯¾å¿œã™ã‚‹å®£è¨€ã®ä»®å¼•æ•°åã¨ç•°ãªã‚‹å ´åˆã€ãã®é–¢æ•°ã®ä»•æ§˜å¤‰æ›´ãŒæœªå®Œäº†ã¨ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.453.3 サンプルコード

void func(int i1, int i2);
void (*p)(int i2, int i1) = &func; /* W0544 */

6.453.4 関連メッセージ

  • W0543 ã“ã®é–¢æ•°å®£è¨€ã«ãŠã‘る仮引数ã®è­˜åˆ¥å­ã¯ã€ä»¥å‰ã®å®£è¨€ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.453.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0544, Up: Messages

6.454 W0546

6.454.1 メッセージ本文

switch 文㮠case ラベルã‚ã‚‹ã„㯠default ラベルãŒã€ãƒã‚¹ãƒˆã•れãŸãƒ–ロックã®ä¸­ã«å­˜åœ¨ã—ã¾ã™ã€‚

6.454.2 内容

switch 文中ã®å…¥ã‚Œå­ãƒ–ロックã®ä¸­ã« case 節や default 節を記述ã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ãŒã€æ–‡ãŒè¤‡é›‘ã«ãªã‚Šã¾ã™ã€‚ ã¾ãŸã€å…¥ã‚Œå­ãƒ–ãƒ­ãƒƒã‚¯ãŒæ¡ä»¶æ–‡ã«ãªã£ã¦ã„ã‚‹å ´åˆã«ã¯æ§‹é€ åŒ–定ç†ã®å´é¢ã‹ã‚‰è¦‹ã¦ã‚‚怪ã—ã„ã‚‚ã®ã«ãªã£ã¦ã—ã¾ã„ã¾ã™ã€‚

6.454.3 サンプルコード

switch (x) {
case 1:
    if (y > 0) {
    case 2: /* W0546 */
        break;
    }
    ...snip...
    break;
default:
    ...snip...
}

6.454.4 関連メッセージ

ãªã—。

6.454.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0546, Up: Messages

6.455 W0549

6.455.1 メッセージ本文

マクロã®ä»®å¼•数㌠`()' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。

6.455.2 内容

マクロ仮引数ãŒå¼ã§ã‚ã‚‹å ´åˆã«ã€æ¼”ç®—å­ã®å„ªå…ˆé †ä½ã«é–¢ã—ã¦å•題ãŒç”Ÿã˜ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.455.3 サンプルコード

#define ADD(a, b) a + b /* W0549 */

int x = 3 * ADD(1, 2);

上記コードã§ã¯ã€ 3 * (1 + 2) = 9 ã§ã¯ãªãã€(3 * 1) + 2 = 5 ㌠x ã«ä»£å…¥ã•れã¾ã™ã€‚

6.455.4 関連メッセージ

ãªã—。

6.455.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0549, Up: Messages

6.456 W0551

6.456.1 メッセージ本文

共用体型指定å­ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.456.2 内容

共用体ã§ã¯ã€ãƒ¡ãƒ³ãƒãŒã©ã®ã‚ˆã†ãªé †ç•ªã§ãƒ¡ãƒ¢ãƒªã«é…ç½®ã•れるã‹ãŒç’°å¢ƒä¾å­˜ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.456.3 サンプルコード

union UNI { /* W0551 */
    int a;
    short b;
    long c;
};

6.456.4 関連メッセージ

  • W0552 共用体型ã®ã‚ªãƒ–ジェクトãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.456.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0551, Up: Messages

6.457 W0552

6.457.1 メッセージ本文

共用体型ã®ã‚ªãƒ–ジェクトãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.457.2 内容

共用体ã§ã¯ã€ãƒ¡ãƒ³ãƒãŒã©ã®ã‚ˆã†ãªé †ç•ªã§ãƒ¡ãƒ¢ãƒªã«é…ç½®ã•れるã‹ãŒç’°å¢ƒä¾å­˜ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.457.3 サンプルコード

union UNI {
    int a;
    short b;
    long c;
};

union UNI u; /* W0552 */

6.457.4 関連メッセージ

  • W0551 共用体型指定å­ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.457.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0552, Up: Messages

6.458 W0553

6.458.1 メッセージ本文

関数を指ã™ãƒã‚¤ãƒ³ã‚¿ãŒã€ç•°ãªã‚‹é–¢æ•°ãƒã‚¤ãƒ³ã‚¿åž‹ã¸ã‚­ãƒ£ã‚¹ãƒˆã•れã¦ã„ã¾ã™ã€‚

6.458.2 内容

ç•°ãªã‚‹é–¢æ•°ãƒã‚¤ãƒ³ã‚¿åž‹ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã‚’使用ã—ã¦ã‚‚å•題ãªã„処ç†ç³»ãŒå¤šã„ã§ã™ãŒã€ä¸­ã«ã¯é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã®ã‚­ãƒ£ã‚¹ãƒˆã‚’実施ã—ãŸæ™‚点ã§ã‚¢ãƒœãƒ¼ãƒˆã™ã‚‹ã‚ˆã†ãªå‡¦ç†ç³»ã‚‚存在ã—ã¾ã™ã€‚

6.458.3 サンプルコード

extern int func(void);

void (*p)(int) = (void (*)(int)) &func; /* W0553 */

6.458.4 関連メッセージ

ãªã—。

6.458.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0553, Up: Messages

6.459 W0554

6.459.1 メッセージ本文

`#pragma' ã®å®Ÿå¼•æ•° `%s' ã¯èªè­˜ã§ãã¾ã›ã‚“。ã“ã® `#pragma' 指令ã¯ç„¡è¦–ã•れã¾ã—ãŸã€‚

6.459.2 内容

#pragma ディレクティブã§å®Ÿè¡Œã§ãる命令ã®å†…容や種類ã¯å‡¦ç†ç³»ä¾å­˜ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€#pragma ディレクティブを使用ã™ã‚‹ã ã‘ã§ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.459.3 サンプルコード

#pragma SystemSpecificPragmaName 5 /* W0544 */

6.459.4 関連メッセージ

ãªã—。

6.459.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0554, Up: Messages

6.460 W0555

6.460.1 メッセージ本文

ã“ã®é–¢æ•°ã¯ãƒ—ロジェクト中ã§é–“接的ã«å†å¸°å‘¼ã³å‡ºã—ã•れã¦ã„ã¾ã™ã€‚

6.460.2 内容

å†å¸°é–¢æ•°ã¯ã€åŠ¹çŽ‡æ€§ã®é¢ã§ã€Œå‡¦ç†ãŒé…ããªã‚‹ã€ã€ã€Œã‚¹ã‚¿ãƒƒã‚¯ã‚’想定以上ã«ä½¿ç”¨ã—ã¦ã—ã¾ã†å¯èƒ½æ€§ãŒã‚ã‚‹ã€ãªã©ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ç„¡é™ãƒ«ãƒ¼ãƒ—ã«é™¥ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚å±é™ºã ã¨ã„ã†å´é¢ã‚‚ã‚りã¾ã™ã€‚

6.460.3 サンプルコード

test1.c

int func1(int i) /* W0555 */
{
    if (i < 10) {
        return i + 1;
    }
    else {
        return func3(i);
    }
}

test2.c

int func2(int i) /* W0555 */
{
    return func1(i) + 2;
}

test3.c

int func3(int i) /* W0555 */
{
    return func2(i) + 3;
}

6.460.4 関連メッセージ

  • W0556 ã“ã®å‘¼ã³å‡ºã—ã‚’å«ã‚€é–¢æ•°ã¯ã€å†å¸°å‘¼ã³å‡ºã—ã•れã¦ã„ã¾ã™ã€‚

6.460.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0555, Up: Messages

6.461 W0556

6.461.1 メッセージ本文

ã“ã®å‘¼ã³å‡ºã—ã‚’å«ã‚€é–¢æ•°ã¯ã€å†å¸°å‘¼ã³å‡ºã—ã•れã¦ã„ã¾ã™ã€‚

6.461.2 内容

å†å¸°é–¢æ•°ã¯ã€åŠ¹çŽ‡æ€§ã®é¢ã§ã€ã€Œå‡¦ç†ãŒé…ããªã‚‹ã€ã€ã€Œã‚¹ã‚¿ãƒƒã‚¯ã‚’想定以上ã«ä½¿ç”¨ã—ã¦ã—ã¾ã†å¯èƒ½æ€§ãŒã‚ã‚‹ã€ã€ãªã©ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ç„¡é™ãƒ«ãƒ¼ãƒ—ã«é™¥ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚å±é™ºã ã¨ã„ã†å´é¢ã‚‚ã‚りã¾ã™ã€‚

6.461.3 サンプルコード

int func(int i)
{
    if (i == 0) {
        return 0;
    }
    else {
        return func(i - 1); /* W0556 */
    }
}

6.461.4 関連メッセージ

  • W0555 ã“ã®é–¢æ•°ã¯ãƒ—ロジェクト中ã§é–“接的ã«å†å¸°å‘¼ã³å‡ºã—ã•れã¦ã„ã¾ã™ã€‚

6.461.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0556, Up: Messages

6.462 W0559

6.462.1 メッセージ本文

`!' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒç®—術演算ã‚ã‚‹ã„ã¯ãƒ“ット演算ã®å¼ã«ãªã£ã¦ã„ã¾ã™ã€‚

6.462.2 内容

æ­£ã—ã„å˜é …演算å­ã®ä½¿ã„方をã—ã¦ã„ã¾ã›ã‚“。ビットå˜ä½ã®è«–ç†ç© `&' ã¾ãŸã¯è«–ç†å’Œ `|' を使用ã™ã¹ãã§ã™ã€‚

6.462.3 サンプルコード

int func(int a, int b)
{
    if (!(a || b)) {
        return 0;
    }
    else {
        return !(a & b); /* W0559 */
    }
}

6.462.4 関連メッセージ

  • W0560 `~' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ–ール型å¼ã«ãªã£ã¦ã„ã¾ã™ã€‚

6.462.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0559, Up: Messages

6.463 W0560

6.463.1 メッセージ本文

`~' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ–ール型å¼ã«ãªã£ã¦ã„ã¾ã™ã€‚

6.463.2 内容

æ­£ã—ã„å˜é …演算å­ã®ä½¿ã„方をã—ã¦ã„ã¾ã›ã‚“。論ç†å¦å®šæ¼”ç®—å­ `!' を使用ã™ã¹ãã§ã™ã€‚

6.463.3 サンプルコード

int func(int a, int b)
{
    return ~((a < b) && (b > 0)); /* W0560 */
}

6.463.4 関連メッセージ

  • W0559 `!' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒç®—術演算ã‚ã‚‹ã„ã¯ãƒ“ット演算ã®å¼ã«ãªã£ã¦ã„ã¾ã™ã€‚

6.463.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0560, Up: Messages

6.464 W0561

6.464.1 メッセージ本文

`*p++' ã®æ„味ã¯ã€`(*p)++' ã§ã¯ãªãã€`*(p++)' ã§ã™ã€‚`*' 演算å­ã¯å†—é•·ã§ã™ã€‚

6.464.2 内容

プログラムã®å‹•作ã«å¯„与ã—ãªã„æ–‡ã®å…·ä½“例ã¨ã—ã¦ã‚µãƒ³ãƒ—ルコードã®ä¾‹ãŒæŒ™ã’られã¾ã™ã€‚ ã“ã®æ–‡ã¯ *(p++) ã¨åŒç¾©ã«ãªã‚‹ãŸã‚ã€p++ ã¨ã—ãŸå ´åˆã¨å‡¦ç†çµæžœã¯å¤‰ã‚りã¾ã›ã‚“。 従ã£ã¦ * 演算å­ãŒå†—é•·ã¨ã„ãˆã¾ã™ã€‚冗長ãªè¨˜è¿°ãŒå‰Šé™¤ã•れãšã«ã‚³ãƒ¼ãƒ‰ä¸­ã«æ®‹ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.464.3 サンプルコード

*p++; /* W0561 */

6.464.4 関連メッセージ

ãªã—。

6.464.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0561, Up: Messages

6.465 W0562

6.465.1 メッセージ本文

åˆæœŸåŒ–å­ã®ä¸­ã«ä½™åˆ†ãª `{}' ãŒã‚りã¾ã™ã€‚

6.465.2 内容

ã“ã“ã§ã®ä½™åˆ†ãªæ³¢æ‹¬å¼§ã¨ã¯ã€é…列ã®åˆæœŸåŒ–å­ã§ã„ã†ã¨ã‚µãƒ³ãƒ—ルコードã®é…列 ng ã«ãŠã‘る外å´ã‹ã‚‰ä¸€ã¤å†…å´ã«ã‚る波括弧ã§ã™ã€‚ ã“ã®ã‚ˆã†ãªæ³¢æ‹¬å¼§ã¯å†—é•·ã§ã‚りã€é…列è¦ç´ ã®æ•°ã‚’変ãˆã‚‹ã¨ããªã©ã«ä¿®æ­£ãƒŸã‚¹ã‚’生ã˜ã‚„ã™ãã•ã›ã¾ã™ã€‚

6.465.3 サンプルコード

int ng[3][2] = { { {1, 2}, { 3, 4}, { 5, 6 } } }; /* W0562 */

int ok[3][2] = { { 1, 2 }, { 3, 4 }, { 5, 6 } }; /* OK */

6.465.4 関連メッセージ

ãªã—。

6.465.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0562, Up: Messages

6.466 W0563

6.466.1 メッセージ本文

ã“ã®ãƒ–ロックã®å¤–å´ã‹ã‚‰ãƒ©ãƒ™ãƒ« `%s' ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ãŸå ´åˆã€ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¯åˆæœŸåŒ–ã•れã¾ã›ã‚“。

6.466.2 内容

ä¸å®šå€¤ã‚’使ã†ã“ã¨ã§äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.466.3 サンプルコード

void func(int a, int b)
{
    if (a == 0) {
        if (b != 0) {
            goto ERR;
        }
    }
    else {
        int c = 0;
    ERR:  /* W0563 */
        b = c;
    }
}

6.466.4 関連メッセージ

  • W0564 ã“ã® goto æ–‡ãŒãƒ©ãƒ™ãƒ« `%s' ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ãŸå ´åˆã€ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¯åˆæœŸåŒ–ã•れã¾ã›ã‚“。

6.466.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0563, Up: Messages

6.467 W0564

6.467.1 メッセージ本文

ã“ã® goto æ–‡ãŒãƒ©ãƒ™ãƒ« `%s' ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ãŸå ´åˆã€ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¯åˆæœŸåŒ–ã•れã¾ã›ã‚“。

6.467.2 内容

ä¸å®šå€¤ã‚’使ã†ã“ã¨ã§äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.467.3 サンプルコード

void func(int a, int b)
{
    if (a == 0) {
        int c = 0;
    RETRY:
        b = c;
    }

    if (b != 0) {
        goto RETRY; /* W0564 */
    }
}

6.467.4 関連メッセージ

  • W0563 ã“ã®ãƒ–ロックã®å¤–å´ã‹ã‚‰ãƒ©ãƒ™ãƒ« `%s' ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ãŸå ´åˆã€ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¯åˆæœŸåŒ–ã•れã¾ã›ã‚“。

6.467.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0564, Up: Messages

6.468 W0565

6.468.1 メッセージ本文

汎整数型を volatile ãƒã‚¤ãƒ³ã‚¿åž‹(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚

6.468.2 内容

ã“ã®ã‚ˆã†ãªã‚­ãƒ£ã‚¹ãƒˆã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.468.3 サンプルコード

unsigned int a = 0xFFFFU;
volatile unsigned int *b = (volatile unsigned int *) a; /* W0565 */
unsigned int c = (unsigned int) b; /* W0565 */

6.468.4 関連メッセージ

  • W0566 汎整数型を関数ãƒã‚¤ãƒ³ã‚¿åž‹(ã¾ãŸã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚
  • W0567 汎整数型をオブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚

6.468.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0565, Up: Messages

6.469 W0566

6.469.1 メッセージ本文

汎整数型を関数ãƒã‚¤ãƒ³ã‚¿åž‹(ã¾ãŸã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚

6.469.2 内容

ã“ã®ã‚ˆã†ãªã‚­ãƒ£ã‚¹ãƒˆã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.469.3 サンプルコード

unsigned int addr = 0xFFFFFFFFU;
void (*p)(int, long) = (void (*)(int, long)) addr; /* W0566 */
int i = (int) p; /* W0566 */

6.469.4 関連メッセージ

  • W0565 汎整数型を volatile ãƒã‚¤ãƒ³ã‚¿åž‹(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚
  • W0567 汎整数型をオブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚

6.469.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0566, Up: Messages

6.470 W0567

6.470.1 メッセージ本文

汎整数型をオブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚

6.470.2 内容

ã“ã®ã‚ˆã†ãªã‚­ãƒ£ã‚¹ãƒˆã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.470.3 サンプルコード

unsigned int addr = 0xFFFFFFFFU;
void (*p)(int, long) = (void (*)(int, long)) addr; /* W0567 */
int i = (int) p; /* W0567 */

6.470.4 関連メッセージ

  • W0565 汎整数型を volatile ãƒã‚¤ãƒ³ã‚¿åž‹(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚
  • W0566 汎整数型を関数ãƒã‚¤ãƒ³ã‚¿åž‹(ã¾ãŸã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚

6.470.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0567, Up: Messages

6.471 W0568

6.471.1 メッセージ本文

符å·ä»˜ã定数å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚

6.471.2 内容

ã“ã®ã‚ˆã†ãªã‚·ãƒ•ト演算ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.471.3 サンプルコード

int a = 0x7FFFFFFF << 1; /* W0568 */
int b = -5 << 1; /* W0568 */

6.471.4 関連メッセージ

  • W0569 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚
  • W0570 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚
  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

6.471.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0568, Up: Messages

6.472 W0569

6.472.1 メッセージ本文

符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚

6.472.2 内容

ã“ã®ã‚ˆã†ãªã‚·ãƒ•ト演算ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.472.3 サンプルコード

int func(int a)
{
    if (a >= 0x40000000) {
        return a << 1; /* W0569 */
    }

    if (a < 0) {
        return a << 1; /* W0569 */
    }

    return a << 1;
}

6.472.4 関連メッセージ

  • W0568 符å·ä»˜ã定数å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚
  • W0570 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚
  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

6.472.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0569, Up: Messages

6.473 W0570

6.473.1 メッセージ本文

符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚

6.473.2 内容

ã“ã®ã‚ˆã†ãªã‚·ãƒ•ト演算ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.473.3 サンプルコード

int func(int a)
{
    if (a >= 0x10000000) {
        return a << 1; /* W0570 */
    }

    if (a < 10) {
        return a << 1; /* W0570 */
    }

    return a << 1;
}

6.473.4 関連メッセージ

  • W0568 符å·ä»˜ã定数å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚
  • W0569 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚
  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

6.473.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0570, Up: Messages

6.474 W0571

6.474.1 メッセージ本文

符å·ä»˜ãデータã®å³ã‚·ãƒ•ト演算ã«ã¯ã€å‡¦ç†ç³»ã«ã‚ˆã£ã¦è«–ç†ã‚·ãƒ•トã¨ç®—術シフトã®ä¸¡æ–¹ã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.474.2 内容

ã“ã®ã‚ˆã†ãªç¬¦å·ä»˜ãåž‹ã®æ¼”ç®—ã¯ã€ç¬¦å·ãƒ“ットãŒã‚¼ãƒ­ã«ãªã‚‹(è«–ç†ã‚·ãƒ•ト)å ´åˆã¨ç¬¦å·ãƒ“ットを複製ã—ãŸã‚‚ã®ã«ç½®ãæ›ã‚ã‚‹(算術シフト)å ´åˆãŒã‚り〠ã©ã¡ã‚‰ã«ãªã‚‹ã‹ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.474.3 サンプルコード

int func(int a)
{
    return a >> 3; /* W0571 */
}

6.474.4 関連メッセージ

  • W0572 符å·ä»˜ãã®ãƒ‡ãƒ¼ã‚¿ã«å¯¾ã™ã‚‹ãƒ“ット演算ã¯å‡¦ç†ç³»å®šç¾©ã®çµæžœã«ãªã‚Šã¾ã™ã€‚

6.474.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0571, Up: Messages

6.475 W0572

6.475.1 メッセージ本文

符å·ä»˜ãã®ãƒ‡ãƒ¼ã‚¿ã«å¯¾ã™ã‚‹ãƒ“ット演算ã¯å‡¦ç†ç³»å®šç¾©ã®çµæžœã«ãªã‚Šã¾ã™ã€‚

6.475.2 内容

ã“ã®ã‚ˆã†ãªç¬¦å·ä»˜ãåž‹ã®æ¼”ç®—ã¯ã€ç¬¦å·ãƒ“ットãŒã‚¼ãƒ­ã«ãªã‚‹(è«–ç†ã‚·ãƒ•ト)å ´åˆã¨ç¬¦å·ãƒ“ットを複製ã—ãŸã‚‚ã®ã«ç½®ãæ›ã‚ã‚‹(算術シフト)å ´åˆãŒã‚り〠ã©ã¡ã‚‰ã«ãªã‚‹ã‹ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.475.3 サンプルコード

void func(short a)
{
    short b;

    b = a >> 8; /* W0572 */
    b <<= 1; /* W0572 */
    b = a & 15; /* W0572 */
    b = a | 15; /* W0572 */
    b = a ^ 15; /* W0572 */
    b = ~a; /* W0572 */
}

6.475.4 関連メッセージ

  • W0571 符å·ä»˜ãデータã®å³ã‚·ãƒ•ト演算ã«ã¯ã€å‡¦ç†ç³»ã«ã‚ˆã£ã¦è«–ç†ã‚·ãƒ•トã¨ç®—術シフトã®ä¸¡æ–¹ã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.475.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0572, Up: Messages

6.476 W0573

6.476.1 メッセージ本文

`[]' 内ã®èµ°æŸ»ã‚»ãƒƒãƒˆã® `-' 文字ã¯ã€å‡¦ç†ç³»å®šç¾©ã«ãªã‚Šã¾ã™ã€‚

6.476.2 内容

ã“ã®ã‚ˆã†ãªå¤‰æ›æŒ‡å®šå­ã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.476.3 サンプルコード

char c;
scanf("%[a-z]", &c); /* W0573 */

6.476.4 関連メッセージ

ãªã—。

6.476.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W0573, Up: Messages

6.477 W0574

6.477.1 メッセージ本文

基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—定数ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.477.2 内容

基本ソース文字集åˆä»¥å¤–ã®æ–‡å­—ã®å‡¦ç†ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.477.3 サンプルコード

const char c = '$'; /* W0574 */

6.477.4 関連メッセージ

  • W0575 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—列リテラルã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0576 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã‚³ãƒ¡ãƒ³ãƒˆã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0577 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã“ã®å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.477.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0574, Up: Messages

6.478 W0575

6.478.1 メッセージ本文

基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—列リテラルã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.478.2 内容

基本ソース文字集åˆä»¥å¤–ã®æ–‡å­—ã®å‡¦ç†ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.478.3 サンプルコード

const char *str = "@$"; /* W0575 */

6.478.4 関連メッセージ

  • W0574 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—定数ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0576 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã‚³ãƒ¡ãƒ³ãƒˆã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0577 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã“ã®å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.478.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0575, Up: Messages

6.479 W0576

6.479.1 メッセージ本文

基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã‚³ãƒ¡ãƒ³ãƒˆã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.479.2 内容

基本ソース文字集åˆä»¥å¤–ã®æ–‡å­—ã®å‡¦ç†ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.479.3 サンプルコード

/* $ W0576 */

6.479.4 関連メッセージ

  • W0574 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—定数ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0575 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—列リテラルã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0577 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã“ã®å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.479.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0576, Up: Messages

6.480 W0577

6.480.1 メッセージ本文

基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã“ã®å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.480.2 内容

基本ソース文字集åˆä»¥å¤–ã®æ–‡å­—ã®å‡¦ç†ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.480.3 サンプルコード

#define MACRO $ /* W0577 */

6.480.4 関連メッセージ

  • W0574 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—定数ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0575 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—列リテラルã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0576 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã‚³ãƒ¡ãƒ³ãƒˆã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.480.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0577, Up: Messages

6.481 W0578

6.481.1 メッセージ本文

æš—é»™çš„ã«æ±Žæ•´æ•°åž‹ `%s' ã®è¤‡åˆå¼ã‹ã‚‰ã‚ˆã‚Šå¤§ããªåž‹ `%s' ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.481.2 内容

サンプルコードã®é–¢æ•°ã§ã¯ int 型変数 a ã® 2 ä¹—ã—ãŸå€¤ãŒ int åž‹ã®ç¯„囲ã«åŽã¾ã‚‰ãªã„ã“ã¨ã‚’想定ã—㦠long 型変数 b ã¸ä»£å…¥ã—ã¦ã„ã¾ã™ã€‚ ã—ã‹ã—ã€ç’°å¢ƒã«ã‚ˆã£ã¦ã¯ a * a ã®æ¼”ç®—ã¯ã„ã£ãŸã‚“ int åž‹ã¨ã—ã¦çµæžœã‚’出ã—ãŸã‚ã¨ã« b ã¸ä»£å…¥ã•れる場åˆãŒã‚りã¾ã™ã€‚ãã®å ´åˆã€a ã®å€¤ã«ã‚ˆã£ã¦ã¯æƒ…å ±ã®æå¤±ãŒèµ·ã“りã¾ã™ã€‚

6.481.3 サンプルコード

void func(int a)
{
    long b = a * a; /* W0578 */
}

6.481.4 関連メッセージ

ãªã—。

6.481.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0578, Up: Messages

6.482 W0579

6.482.1 メッセージ本文

汎整数型 `%s' ã®è¤‡åˆå¼ã‚’ã€ã‚ˆã‚Šå¤§ããªåž‹ `%s' ã«ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚

6.482.2 内容

サンプルコードã®é–¢æ•°ã§ã¯ int 型変数 a ã® 2 ä¹—ã—ãŸå€¤ãŒ int åž‹ã®ç¯„囲ã«åŽã¾ã‚‰ãªã„ã“ã¨ã‚’想定ã—㦠long 型変数 b ã¸ä»£å…¥ã—ã¦ã„ã¾ã™ã€‚ ã—ã‹ã—ã€ç’°å¢ƒã«ã‚ˆã£ã¦ã¯ a * a ã®æ¼”ç®—ã¯ã„ã£ãŸã‚“ int åž‹ã¨ã—ã¦çµæžœã‚’出ã—ãŸã‚ã¨ã« b ã¸ä»£å…¥ã•れる場åˆãŒã‚りã¾ã™ã€‚ãã®å ´åˆã€a ã®å€¤ã«ã‚ˆã£ã¦ã¯æƒ…å ±ã®æå¤±ãŒèµ·ã“りã¾ã™ã€‚

6.482.3 サンプルコード

void func(int a)
{
    long b = (long) (a * a); /* W0579 */
}

6.482.4 関連メッセージ

ãªã—。

6.482.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W0579, Up: Messages

6.483 W0580

6.483.1 メッセージ本文

ローカルãªé™çš„変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€ã‚ˆã‚Šé•·ã„寿命をæŒã¤ãƒã‚¤ãƒ³ã‚¿ã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚

6.483.2 内容

ローカル㧠static ãªå¤‰æ•°ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€çµåˆã¾ãŸã¯ã‚ˆã‚Šåºƒã„スコープをæŒã¤ãƒã‚¤ãƒ³ã‚¿ã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ é™çš„記憶域期間をæŒã¤ãŸã‚ã€å±é™ºã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‡ãƒ¼ã‚¿éš è”½ã®åŽŸå‰‡ã«åã—ã¾ã™ã€‚

6.483.3 サンプルコード

int *p;

void func(void)
{
    static int i = 0;

    p = &i; /* W0580 */
}

6.483.4 関連メッセージ

ãªã—。

6.483.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0580, Up: Messages

6.484 W0581

6.484.1 メッセージ本文

実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®é–¢æ•°ã®ä»¥å‰ã®ä½¿ç”¨æ™‚ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.484.2 内容

足りãªã„引数ãŒã‚ã‚‹å ´åˆã¯è£œã‚れã¾ã™ãŒã€å€¤ã¯ä¸å®šã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ãã®ä¸å®šå€¤ã‚’使用ã™ã‚‹éƒ¨åˆ†ã®å‡¦ç†ã«ä¸å…·åˆãŒç”Ÿã˜ã‚‹å±é™ºæ€§ãŒé«˜ã„ã¨ã„ãˆã¾ã™ã€‚

6.484.3 サンプルコード

int func(int a, short b, long c)
{
    switch (a) {
    case 0:
        return foo(a, b, c);
    case 1:
        return foo(a, c, b); /* W0581 */
    default:
        return foo(b, c); /* W0581 */
    }
}

6.484.4 関連メッセージ

  • W0582 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°ãƒ—ロトタイプ宣言ã¨ç•°ãªã‚Šã¾ã™ã€‚
  • W0583 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°å®šç¾©ã¨ç•°ãªã‚Šã¾ã™ã€‚
  • W0584 %s 番目ã®å®Ÿå¼•æ•°ã®åž‹ãŒã€é–¢æ•°å®šç¾©ã®ä¸­ã®ä»®å¼•æ•°ã®åž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.484.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0581, Up: Messages

6.485 W0582

6.485.1 メッセージ本文

実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°ãƒ—ロトタイプ宣言ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.485.2 内容

足りãªã„引数ãŒã‚ã‚‹å ´åˆã¯è£œã‚れã¾ã™ãŒã€å€¤ã¯ä¸å®šã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ãã®ä¸å®šå€¤ã‚’使用ã™ã‚‹éƒ¨åˆ†ã®å‡¦ç†ã«ä¸å…·åˆãŒç”Ÿã˜ã‚‹å±é™ºæ€§ãŒé«˜ã„ã¨ã„ãˆã¾ã™ã€‚

6.485.3 サンプルコード

int func(int a, short b, long c)
{
    switch (a) {
    case 0:
        return foo(a, b, c);
    case 1:
        return foo(a, c, b); /* W0582 */
    default:
        return foo(b, c); /* W0582 */
    }
}

extern int foo(int, short, long);

6.485.4 関連メッセージ

  • W0581 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®é–¢æ•°ã®ä»¥å‰ã®ä½¿ç”¨æ™‚ã¨ç•°ãªã‚Šã¾ã™ã€‚
  • W0583 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°å®šç¾©ã¨ç•°ãªã‚Šã¾ã™ã€‚
  • W0584 %s 番目ã®å®Ÿå¼•æ•°ã®åž‹ãŒã€é–¢æ•°å®šç¾©ã®ä¸­ã®ä»®å¼•æ•°ã®åž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.485.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0582, Up: Messages

6.486 W0583

6.486.1 メッセージ本文

実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°å®šç¾©ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.486.2 内容

足りãªã„引数ãŒã‚ã‚‹å ´åˆã¯è£œã‚れã¾ã™ãŒã€å€¤ã¯ä¸å®šã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ãã®ä¸å®šå€¤ã‚’使用ã™ã‚‹éƒ¨åˆ†ã®å‡¦ç†ã«ä¸å…·åˆãŒç”Ÿã˜ã‚‹å±é™ºæ€§ãŒé«˜ã„ã¨ã„ãˆã¾ã™ã€‚

6.486.3 サンプルコード

int func(int a, short b, long c)
{
    switch (a) {
    case 0:
        return foo(a, b, c);
    case 1:
        return foo(a, c, b); /* W0583 */
    default:
        return foo(b, c); /* W0583 */
    }
}

int foo(int a, short b, long c)
{
    return a + b + c;
}

6.486.4 関連メッセージ

  • W0581 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®é–¢æ•°ã®ä»¥å‰ã®ä½¿ç”¨æ™‚ã¨ç•°ãªã‚Šã¾ã™ã€‚
  • W0582 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°ãƒ—ロトタイプ宣言ã¨ç•°ãªã‚Šã¾ã™ã€‚
  • W0584 %s 番目ã®å®Ÿå¼•æ•°ã®åž‹ãŒã€é–¢æ•°å®šç¾©ã®ä¸­ã®ä»®å¼•æ•°ã®åž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.486.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0583, Up: Messages

6.487 W0584

6.487.1 メッセージ本文

%s 番目ã®å®Ÿå¼•æ•°ã®åž‹ãŒã€é–¢æ•°å®šç¾©ã®ä¸­ã®ä»®å¼•æ•°ã®åž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.487.2 内容

実引数ã®åž‹ã¨ä»®å¼•æ•°ã®åž‹ãŒç•°ãªã‚‹å ´åˆã€å€¤ãŒæš—黙的ã«å¤‰æ›ã•れã¾ã™ã€‚

6.487.3 サンプルコード

extern void func1(a, b)
long a;
double b;
{
    ...snip...
}

void func2(void)
{
    int a = 0;
    long b = 0;

    func1(a, b); /* W0584 */
}

6.487.4 関連メッセージ

  • W0581 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®é–¢æ•°ã®ä»¥å‰ã®ä½¿ç”¨æ™‚ã¨ç•°ãªã‚Šã¾ã™ã€‚
  • W0582 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°ãƒ—ロトタイプ宣言ã¨ç•°ãªã‚Šã¾ã™ã€‚
  • W0583 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°å®šç¾©ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.487.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0584, Up: Messages

6.488 W0585

6.488.1 メッセージ本文

制御変数 `%s' ã¯ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆå¼ã«ç¾ã‚Œã¾ã›ã‚“。

6.488.2 内容

ループ変数ã®å¢—分を増分å¼ã§è¡Œã‚ãšã«ãƒ«ãƒ¼ãƒ—本体中ã§è¡Œã†ã¨ãƒ«ãƒ¼ãƒ—ã®ä»•様ãŒã‚ã‹ã‚Šã«ãããªã‚Šã¾ã™ã€‚

6.488.3 サンプルコード

int i, j;

for (i = j = 0; i < 10; j++) { /* W0585 */
    i++;
}

6.488.4 関連メッセージ

ãªã—。

6.488.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0585, Up: Messages

6.489 W0586

6.489.1 メッセージ本文

typedef`%s' ãŒäºŒã¤ä»¥ä¸Šã®å ´æ‰€ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚

6.489.2 内容

typedef åã¯ãƒªãƒ³ã‚±ãƒ¼ã‚¸ã‚’æŒã¡ã¾ã›ã‚“。åŒä¸€ã® typedef を複数宣言ã—ã¦ã‚‚ã€ãれら㮠typedef åã¯åˆ¥ç‰©ã¨ã—ã¦æ‰±ã‚れã¾ã™ã€‚ ã“れã¯éžå¸¸ã«ç´›ã‚‰ã‚ã—ãã€ã‚³ãƒ¼ãƒ‰ã®å¯èª­æ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.489.3 サンプルコード

test1.c

typedef int *INT_PTR; /* W0586 */

void func1(INT_PTR)
{
    ...snip...
}

test2.c

typedef int *INT_PTR; /* W0586 */

void func2(INT_PTR)
{
    ...snip...
}

6.489.4 関連メッセージ

ãªã—。

6.489.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0586, Up: Messages

6.490 W0589

6.490.1 メッセージ本文

オブジェクト `%s' ã¯ã€å®šç¾©ã•れã¦ã„る翻訳å˜ä½ã®å†…ã®ã€é–¢æ•° `%s' ã®ã¿ã‹ã‚‰å‚ç…§ã•れã¦ã„ã¾ã™ã€‚

6.490.2 内容

グローãƒãƒ«ãªå¯è¦–性をæŒã¡ãªãŒã‚‰ã€å±€æ‰€çš„ãªå‚ç…§ã‚’ã•れã¦ã„ã¾ã™ã€‚グローãƒãƒ«ãªã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ•°ãŒå¤šã„ã¨ã€ãƒ—ログラム全体をç†è§£ã™ã‚‹å ´åˆã®å¯èª­æ€§ãŒæ¸›å°‘ã—ã¾ã™ã€‚

6.490.3 サンプルコード

test1.c

void func1(void) /* W0589 & W0591 */
{
    ...snip...
}

void func2(void)
{
    func1();
}

test2.c

extern void func2(void);

void func3(void)
{
    func2();
}

6.490.4 関連メッセージ

ãªã—。

6.490.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0589, Up: Messages

6.491 W0591

6.491.1 メッセージ本文

関数 `%s' ã¯ã€å®šç¾©ã•れã¦ã„る翻訳å˜ä½ã®å†…ã§ã®ã¿å‚ç…§ã•れã¦ã„ã¾ã™ã€‚

6.491.2 内容

グローãƒãƒ«ãªé–¢æ•°ã®æ•°ãŒå¤šã„ã¨ã€ãƒ—ログラム全体をç†è§£ã™ã‚‹å ´åˆã®å¯èª­æ€§ãŒæ¸›å°‘ã—ã¾ã™ã€‚

6.491.3 サンプルコード

test1.c

void func1(void) /* W0589 & W0591 */
{
    ...snip...
}

void func2(void)
{
    func1();
}

test2.c

extern void func2(void);

void func3(void)
{
    func2();
}

6.491.4 関連メッセージ

ãªã—。

6.491.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0591, Up: Messages

6.492 W0593

6.492.1 メッセージ本文

オブジェクト `%s' ã¯ã€å®šç¾©ã•れã¦ã„る翻訳å˜ä½ã®ä¸­ã§ã®ã¿å‚ç…§ã•れã¦ã„ã¾ã™ã€‚

6.492.2 内容

グローãƒãƒ«ãªã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ•°ãŒå¤šã„ã¨ã€ãƒ—ログラム全体をç†è§£ã™ã‚‹å ´åˆã®å¯èª­æ€§ãŒæ¸›å°‘ã—ã¾ã™ã€‚

6.492.3 サンプルコード

test1.c

int a = 100; /* W0593 */

void func1(void)
{
    a += 1;
}

void func2(void)
{
    func1();
    a += 2;
}

test2.c

extern void func2(void);

void func3(void)
{
    func2();
}

6.492.4 関連メッセージ

ãªã—。

6.492.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0593, Up: Messages

6.493 W0597

6.493.1 メッセージ本文

副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚

6.493.2 内容

åŒä¸€ã®å¤‰æ•°ãŒå‰¯ä½œç”¨å®Œäº†ç‚¹ã®é–“ã« 2 度以上アクセスã•れãŸå ´åˆã€ãã®è©•価順åºã¯ ISO è¦æ ¼ã§ã¯æœªå®šç¾©ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作ãŒç”Ÿã˜ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.493.3 サンプルコード

extern int bar(int *);
extern int baz(const int *);

void foo(int a, int b)
{
    a = b * a++; /* W0597 */
    a = bar(&a) * a++; /* W0597 */
    b = bar(&a) * (a++ + --a); /* W0597, W0599 */
}

6.493.4 関連メッセージ

  • W0598 副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚
  • W0599 副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚
  • W0600 副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚

6.493.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.2.0


Next: , Previous: W0597, Up: Messages

6.494 W0598

6.494.1 メッセージ本文

副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚

6.494.2 内容

åŒä¸€ã®å¤‰æ•°ãŒå‰¯ä½œç”¨å®Œäº†ç‚¹ã®é–“ã« 2 度以上アクセスã•れãŸå ´åˆã€ãã®è©•価順åºã¯ ISO è¦æ ¼ã§ã¯æœªå®šç¾©ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作ãŒç”Ÿã˜ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.494.3 サンプルコード

extern int bar(int *);
extern int baz(const int *);

void foo(int a, int b)
{
    b = bar(&a) * a++; /* W0598 */
    b = bar(&a) + bar(&a); /* W0598 */
    b = bar(&a) + baz(&a); /* W0600 */
    b = baz(&a) + baz(&a);
}

6.494.4 関連メッセージ

  • W0597 副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚
  • W0599 副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚
  • W0600 副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚

6.494.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.2.0


Next: , Previous: W0598, Up: Messages

6.495 W0599

6.495.1 メッセージ本文

副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚

6.495.2 内容

åŒä¸€ã®å¤‰æ•°ãŒå‰¯ä½œç”¨å®Œäº†ç‚¹ã®é–“ã« 2 度以上アクセスã•れãŸå ´åˆã€ãã®è©•価順åºã¯ ISO è¦æ ¼ã§ã¯æœªå®šç¾©ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作ãŒç”Ÿã˜ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.495.3 サンプルコード

extern void bar(int, int, int);

void foo(int a, int b, int *c)
{
    b = (a + 1) + a++; /* W0599 */
    b = c[a] + c[++a]; /* W0599 */
    bar(a, a++, c[a]); /* W0599 */
    bar(a, a, c[a++]); /* W0599 */
    a = a + b;
    c[a] = a++ + b; /* W0599 */
}

6.495.4 関連メッセージ

  • W0597 副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚
  • W0598 副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚
  • W0600 副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚

6.495.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.2.0


Next: , Previous: W0599, Up: Messages

6.496 W0600

6.496.1 メッセージ本文

副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚

6.496.2 内容

åŒä¸€ã®å¤‰æ•°ãŒå‰¯ä½œç”¨å®Œäº†ç‚¹ã®é–“ã« 2 度以上アクセスã•れãŸå ´åˆã€ãã®è©•価順åºã¯ ISO è¦æ ¼ã§ã¯æœªå®šç¾©ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作ãŒç”Ÿã˜ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.496.3 サンプルコード

extern int bar(int *);
extern int baz(const int *);

void foo(int a, int b)
{
    b = bar(&a) * a; /* W0600 */
    b = baz(&a) * a;
}

6.496.4 関連メッセージ

  • W0597 副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚
  • W0598 副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚
  • W0599 副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚

6.496.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.2.0


Next: , Previous: W0600, Up: Messages

6.497 W0605

6.497.1 メッセージ本文

ç¹°ã‚Šè¿”ã—æ–‡ã‚’終了ã•ã›ã‚‹ç›®çš„ã§ã€break æ–‡ãŒäºŒã¤ä»¥ä¸Šä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚

6.497.2 内容

ç¹°ã‚Šè¿”ã—æ–‡ã§è¤‡æ•°ã® break æ–‡ãŒä½¿ç”¨ã•れã¦ã„ã‚‹å ´åˆã€ã‚³ãƒ¼ãƒ‰ã®æ§‹é€ ãŒè¤‡é›‘ã«ãªã‚Šã€ 構造化定ç†(「順次ã€ã€Œå復ã€ã€Œåˆ†å²ã€)ã«åŸºã¥ã„ãŸã‚³ãƒ¼ãƒ‰ã§å®Ÿç¾ã§ãã‚‹ä¿å®ˆæ€§ã«é–¢ã™ã‚‹ãƒ¡ãƒªãƒƒãƒˆã‚’æãªã„ã¾ã™ã€‚

6.497.3 サンプルコード

while (n > 0) {
    if (n == 1) {
        break;
    }

    if (n == 2) {
        break; /* W0605 */
    }
}

6.497.4 関連メッセージ

ãªã—。

6.497.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0605, Up: Messages

6.498 W0606

6.498.1 メッセージ本文

å…±ç”¨ä½“ã«æµ®å‹•å°æ•°ç‚¹åž‹ã®ãƒ¡ãƒ³ãƒãŒã‚りã¾ã™ã€‚

6.498.2 内容

æµ®å‹•å°æ•°ç‚¹åž‹ã®ãƒ¡ãƒ³ãƒå¤‰æ•°ã«å¯¾ã—ã¦å…±ç”¨ä½“を使ã£ã¦ãƒ“ットå˜ä½ã§ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã®å‹•作ã¯ã‚³ãƒ³ãƒ‘イラä¾å­˜ãªã®ã§ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.498.3 サンプルコード

union UNI { /* W0606 */
    float a;
    int b;
};

6.498.4 関連メッセージ

ãªã—。

6.498.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0606, Up: Messages

6.499 W0607

6.499.1 メッセージ本文

値ãŒè² ã«ãªã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.499.2 内容

明らã‹ã«è² ã«ãªã‚‹ã“ã¨ãŒæ˜Žã‚‰ã‹ãªæ•´æ•°ã¯ã€è² ã®æ•°ã¨ã—ã¦æ‰±ã‚れるã“ã¨ãŒæƒ³å®šã•れã¾ã™ã€‚ ãã®ã‚ˆã†ãªå€¤ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れるã“ã¨ã§æ„図ã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.499.3 サンプルコード

void func(int a)
{
    if (a < 0) {
        unsigned int b = (unsigned int) a; /* W0607 */
    }
}

6.499.4 関連メッセージ

  • W0608 値ãŒè² ã«ãªã‚‹ã“ã¨ãŒã‚りã†ã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

6.499.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.8.0


Next: , Previous: W0607, Up: Messages

6.500 W0608

6.500.1 メッセージ本文

値ãŒè² ã«ãªã‚‹ã“ã¨ãŒã‚りã†ã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.500.2 内容

明らã‹ã«è² ã«ãªã‚‹ã“ã¨ãŒæ˜Žã‚‰ã‹ãªæ•´æ•°ã¯ã€è² ã®æ•°ã¨ã—ã¦æ‰±ã‚れるã“ã¨ãŒæƒ³å®šã•れã¾ã™ã€‚ ãã®ã‚ˆã†ãªå€¤ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れるã“ã¨ã§æ„図ã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.500.3 サンプルコード

void fuu(int a)
{
    unsigned char b;

    if (a < 256) {
        b = (unsigned char) a; /* W0608 */
    }
}

6.500.4 関連メッセージ

  • W0607 値ãŒè² ã«ãªã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

6.500.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.8.0


Next: , Previous: W0608, Up: Messages

6.501 W0609

6.501.1 メッセージ本文

ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«çœŸã«ãªã‚Šã¾ã™ã€‚

6.501.2 内容

処ç†ãƒ•ãƒ­ãƒ¼ãŒæ„図通りã§ã‚ã‚‹ã‹ä¸æ˜Žç¢ºã§ã€æ··ä¹±ã‚’æ‹›ãå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ æ„図通りã§ãªã„å ´åˆã€ã‚³ãƒ¼ãƒ‰ã®ä¿¡é ¼æ€§ãŒç–‘ã‚れã¾ã™ã€‚ã¾ãŸã€ä¸å¿…è¦ãªå‡¦ç†ãŒã‚ã‚‹å ´åˆã¯ã€ã‚³ãƒ¼ãƒ‰ãŒå†—é•·ã«ãªã‚Šã¾ã™ã€‚

6.501.3 サンプルコード

void func(int a)
{
    if (a < 0) {
        if (a != 0) { /* W0609 */
            ...snip...
        }
    }
}

6.501.4 関連メッセージ

  • W0610 ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚
  • W0611 ã“ã®ç¹°ã‚Šè¿”ã—æ–‡ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚
  • W0612 ã“ã® if æ¡ä»¶å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚
  • W0613 ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚
  • W0614 ã“ã® `do-while' 制御å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ç¹°ã‚Šè¿”ã—æ–‡ã®æœ¬ä½“ã¯ä¸€å›žã®ã¿å®Ÿè¡Œã•れã¾ã™ã€‚

6.501.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0609, Up: Messages

6.502 W0610

6.502.1 メッセージ本文

ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚

6.502.2 内容

処ç†ãƒ•ãƒ­ãƒ¼ãŒæ„図通りã§ã‚ã‚‹ã‹ä¸æ˜Žç¢ºã§ã€æ··ä¹±ã‚’æ‹›ãå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ æ„図通りã§ãªã„å ´åˆã€ã‚³ãƒ¼ãƒ‰ã®ä¿¡é ¼æ€§ãŒç–‘ã‚れã¾ã™ã€‚ã¾ãŸã€ä¸å¿…è¦ãªå‡¦ç†ãŒã‚ã‚‹å ´åˆã¯ã€ã‚³ãƒ¼ãƒ‰ãŒå†—é•·ã«ãªã‚Šã¾ã™ã€‚

6.502.3 サンプルコード

void func(int a)
{
    if (a < 0) {
        if (a == 0) { /* W0610 */
        }
    }
}

6.502.4 関連メッセージ

  • W0609 ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«çœŸã«ãªã‚Šã¾ã™ã€‚
  • W0611 ã“ã®ç¹°ã‚Šè¿”ã—æ–‡ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚
  • W0612 ã“ã® if æ¡ä»¶å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚
  • W0613 ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚
  • W0614 ã“ã® `do-while' 制御å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ç¹°ã‚Šè¿”ã—æ–‡ã®æœ¬ä½“ã¯ä¸€å›žã®ã¿å®Ÿè¡Œã•れã¾ã™ã€‚

6.502.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0610, Up: Messages

6.503 W0611

6.503.1 メッセージ本文

ã“ã®ç¹°ã‚Šè¿”ã—æ–‡ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚

6.503.2 内容

処ç†ãƒ•ãƒ­ãƒ¼ãŒæ„図通りã§ã‚ã‚‹ã‹ä¸æ˜Žç¢ºã§ã€æ··ä¹±ã‚’æ‹›ãå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ æ„図通りã§ãªã„å ´åˆã€ã‚³ãƒ¼ãƒ‰ã®ä¿¡é ¼æ€§ãŒç–‘ã‚れã¾ã™ã€‚ã¾ãŸã€ä¸å¿…è¦ãªå‡¦ç†ãŒã‚ã‚‹å ´åˆã¯ã€ã‚³ãƒ¼ãƒ‰ãŒå†—é•·ã«ãªã‚Šã¾ã™ã€‚

6.503.3 サンプルコード

void func(int a)
{
    if ( a > 0 ) {
        while (a != 0) { /* W0611 */
            ...snip...
        }
    }
}

6.503.4 関連メッセージ

  • W0609 ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«çœŸã«ãªã‚Šã¾ã™ã€‚
  • W0610 ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚
  • W0612 ã“ã® if æ¡ä»¶å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚
  • W0613 ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚
  • W0614 ã“ã® `do-while' 制御å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ç¹°ã‚Šè¿”ã—æ–‡ã®æœ¬ä½“ã¯ä¸€å›žã®ã¿å®Ÿè¡Œã•れã¾ã™ã€‚

6.503.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0611, Up: Messages

6.504 W0612

6.504.1 メッセージ本文

ã“ã® if æ¡ä»¶å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚

6.504.2 内容

処ç†ãƒ•ãƒ­ãƒ¼ãŒæ„図通りã§ã‚ã‚‹ã‹ä¸æ˜Žç¢ºã§ã€æ··ä¹±ã‚’æ‹›ãå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ æ„図通りã§ãªã„å ´åˆã€ã‚³ãƒ¼ãƒ‰ã®ä¿¡é ¼æ€§ãŒç–‘ã‚れã¾ã™ã€‚ã¾ãŸã€ä¸å¿…è¦ãªå‡¦ç†ãŒã‚ã‚‹å ´åˆã¯ã€ã‚³ãƒ¼ãƒ‰ãŒå†—é•·ã«ãªã‚Šã¾ã™ã€‚

6.504.3 サンプルコード

int i;

for (i = 0; i < 10; i++) {
    if (i < 20) { /* W0612 */
        ...snip...
    }
}

6.504.4 関連メッセージ

  • W0609 ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«çœŸã«ãªã‚Šã¾ã™ã€‚
  • W0610 ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚
  • W0611 ã“ã®ç¹°ã‚Šè¿”ã—æ–‡ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚
  • W0613 ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚
  • W0614 ã“ã® `do-while' 制御å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ç¹°ã‚Šè¿”ã—æ–‡ã®æœ¬ä½“ã¯ä¸€å›žã®ã¿å®Ÿè¡Œã•れã¾ã™ã€‚

6.504.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0612, Up: Messages

6.505 W0613

6.505.1 メッセージ本文

ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚

6.505.2 内容

処ç†ãƒ•ãƒ­ãƒ¼ãŒæ„図通りã§ã‚ã‚‹ã‹ä¸æ˜Žç¢ºã§ã€æ··ä¹±ã‚’æ‹›ãå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ æ„図通りã§ãªã„å ´åˆã€ã‚³ãƒ¼ãƒ‰ã®ä¿¡é ¼æ€§ãŒç–‘ã‚れã¾ã™ã€‚ã¾ãŸã€ä¸å¿…è¦ãªå‡¦ç†ãŒã‚ã‚‹å ´åˆã¯ã€ã‚³ãƒ¼ãƒ‰ãŒå†—é•·ã«ãªã‚Šã¾ã™ã€‚

6.505.3 サンプルコード

int i;

for (i = 0; i < 10; i++) {
    if (i > 10) { /* W0613 */
        ...snip...
    }
}

6.505.4 関連メッセージ

  • W0609 ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«çœŸã«ãªã‚Šã¾ã™ã€‚
  • W0610 ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚
  • W0611 ã“ã®ç¹°ã‚Šè¿”ã—æ–‡ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚
  • W0612 ã“ã® if æ¡ä»¶å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚
  • W0614 ã“ã® `do-while' 制御å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ç¹°ã‚Šè¿”ã—æ–‡ã®æœ¬ä½“ã¯ä¸€å›žã®ã¿å®Ÿè¡Œã•れã¾ã™ã€‚

6.505.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0613, Up: Messages

6.506 W0614

6.506.1 メッセージ本文

ã“ã® `do-while' 制御å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ç¹°ã‚Šè¿”ã—æ–‡ã®æœ¬ä½“ã¯ä¸€å›žã®ã¿å®Ÿè¡Œã•れã¾ã™ã€‚

6.506.2 内容

処ç†ãƒ•ãƒ­ãƒ¼ãŒæ„図通りã§ã‚ã‚‹ã‹ä¸æ˜Žç¢ºã§ã€æ··ä¹±ã‚’æ‹›ãå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ æ„図通りã§ãªã„å ´åˆã€ã‚³ãƒ¼ãƒ‰ã®ä¿¡é ¼æ€§ãŒç–‘ã‚れã¾ã™ã€‚ ã¾ãŸã€ä¸å¿…è¦ãªå‡¦ç†ãŒã‚ã‚‹å ´åˆã¯ã€ã‚³ãƒ¼ãƒ‰ãŒå†—é•·ã«ãªã‚Šã¾ã™ã€‚

6.506.3 サンプルコード

void func(int a)
{
    if (a == 0) {
        do {
        } while (a > 0); /* W0614 */
    }
}

6.506.4 関連メッセージ

  • W0609 ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«çœŸã«ãªã‚Šã¾ã™ã€‚
  • W0610 ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚
  • W0611 ã“ã®ç¹°ã‚Šè¿”ã—æ–‡ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚
  • W0612 ã“ã® if æ¡ä»¶å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚
  • W0613 ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚

6.506.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0614, Up: Messages

6.507 W0622

6.507.1 メッセージ本文

関数ãŒãƒ–ロックスコープ内ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚

6.507.2 内容

ã“ã®é–¢æ•°ã¯ã€ãƒ•ァイルスコープ内ã§å®£è¨€ã•れるã¹ãã§ã™ã€‚ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯è§£æžæ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.507.3 サンプルコード

int func1(void)
{
    extern int func2(void); /* W0622 */
}

6.507.4 関連メッセージ

ãªã—。

6.507.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0622, Up: Messages

6.508 W0623

6.508.1 メッセージ本文

外部çµåˆã®ã‚ªãƒ–ジェクトãŒã€ãƒ–ロックスコープ内ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚

6.508.2 内容

ã“ã®ã‚ªãƒ–ジェクトã¯ã€ãƒ•ァイルスコープ内ã§å®£è¨€ã•れるã¹ãã§ã™ã€‚ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯è§£æžæ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.508.3 サンプルコード

int func(void)
{
    extern int i; /* W0623 */
}

6.508.4 関連メッセージ

ãªã—。

6.508.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0623, Up: Messages

6.509 W0624

6.509.1 メッセージ本文

#define ã‚ã‚‹ã„㯠#undef ãŒãƒ–ロックã®ä¸­ã«å­˜åœ¨ã—ã¾ã™ã€‚

6.509.2 内容

#defineã€#undef ã¯ã€ãƒ•ァイルスコープ内ã§å®£è¨€ã•れるã¹ãã§ã™ã€‚ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯è§£æžæ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.509.3 サンプルコード

#define MACRO 0

int foo(void)
{
#if defined(MACRO)
#undef MACRO    /* W0624 */
#define MACRO 1 /* W0624 */
#endif

    return MACRO;
}

6.509.4 関連メッセージ

ãªã—。

6.509.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0624, Up: Messages

6.510 W0625

6.510.1 メッセージ本文

外部çµåˆã®å®šç¾©ã¾ãŸã¯å®£è¨€ã®ä¸­ã§ `%s' ãŒä½¿ã‚れã¦ã„ã¾ã™ãŒã€ãã® typedef ãŒãƒ˜ãƒƒãƒ€ãƒ•ァイルã®ä¸­ã§å®£è¨€ã•れã¦ã„ã¾ã›ã‚“。

6.510.2 内容

typedef 宣言ã¯ãƒ˜ãƒƒãƒ€ãƒ•ァイル内ã§ã®ã¿è¡Œã†ã¹ãã§ã™ã€‚ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ä¿å®ˆæ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.510.3 サンプルコード

typedef int *INT_PTR; /* W0625 */

extern INT_PTR func(void);

INT_PTR func(void)
{
    return 0;
}

6.510.4 関連メッセージ

ãªã—。

6.510.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.8.0


Next: , Previous: W0625, Up: Messages

6.511 W0626

6.511.1 メッセージ本文

ワイド文字ã¾ãŸã¯ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.511.2 内容

ワイド文字ã¾ãŸã¯ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルを使用ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã¯å®Ÿè¡Œç’°å¢ƒã®ãƒ­ã‚±ãƒ¼ãƒ«ã«ä¾å­˜ ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚

6.511.3 サンプルコード

const wchar_t a = L'ã‚'; /* W0626 */

6.511.4 関連メッセージ

ãªã—。

6.511.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0626, Up: Messages

6.512 W0627

6.512.1 メッセージ本文

一行ã«ã€ç©ºæ–‡(`;' ã ã‘ã®æ–‡)ãŒã€ä»–ã®ã‚³ãƒ¼ãƒ‰ã®å¾Œã«ã‚りã¾ã™ã€‚

6.512.2 内容

ä»–ã®æ–‡ã¨ç©ºæ–‡ãŒ 1 è¡Œã§æ›¸ã‹ã‚Œã¦ã„ã‚‹å ´åˆã€ç©ºæ–‡ã®æ„図ãŒä¸æ˜Žç¢ºã«ãªã‚Šã¾ã™ã€‚

6.512.3 サンプルコード

if (0); /* W0627 */
{
    ...snip...
}

6.512.4 関連メッセージ

ãªã—。

6.512.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0627, Up: Messages

6.513 W0628

6.513.1 メッセージ本文

関数 `%s' ãŒå®šç¾©ã•れã¦ã„ã¾ã™ãŒã€ã“ã®ãƒ—ロジェクトã§ã¯ä½¿ã‚れã¦ã„ã¾ã›ã‚“。

6.513.2 内容

使用ã•れã¦ã„ãªã„関数ã¯ç„¡é§„ãªè¦ç´ ã¨ã„ãˆã¾ã™ã€‚コード中ã«ç„¡é§„ãªè¦ç´ ãŒã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.513.3 サンプルコード

test1.c

int func1(void)
{
    return 0;
}

void func2(void) /* W0628 */
{
    ...snip...
}

test2.c

extern int func1(void);

int main(void)
{
    return func1();
}

6.513.4 関連メッセージ

  • W0629 static 関数 `%s()' ã¯ã€ã“ã®ç¿»è¨³å˜ä½ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã›ã‚“。

6.513.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0628, Up: Messages

6.514 W0629

6.514.1 メッセージ本文

static 関数 `%s()' ã¯ã€ã“ã®ç¿»è¨³å˜ä½ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã›ã‚“。

6.514.2 内容

使用ã•れã¦ã„ãªã„関数ã¯ç„¡é§„ãªè¦ç´ ã¨ã„ãˆã¾ã™ã€‚コード中ã«ç„¡é§„ãªè¦ç´ ãŒã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.514.3 サンプルコード

static int func1(void) /* W0629 */
{
    return 1;
}

int func2(void)
{
    return 1;
}

6.514.4 関連メッセージ

  • W0628 関数 `%s' ãŒå®šç¾©ã•れã¦ã„ã¾ã™ãŒã€ã“ã®ãƒ—ロジェクトã§ã¯ä½¿ã‚れã¦ã„ã¾ã›ã‚“。

6.514.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0629, Up: Messages

6.515 W0632

6.515.1 メッセージ本文

`#include <%s>' ã®ä¸­ã§ ' ã‚„ " 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚

6.515.2 内容

`''ã€`"' ã¾ãŸã¯ `/*' ã‚’ #include æ–‡ã§ä½¿ç”¨ã™ã‚‹ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚

6.515.3 サンプルコード

#include <NG'_header.h> /* W0632 */

6.515.4 関連メッセージ

  • W0633 `#include "%s"' ã®ä¸­ã§ ' 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚
  • W0634 `#include' 行ã®ä¸­ã§ `\' を使ã£ã¦ã„ã¾ã™ã€‚パス区切り文字ã¨ã—ã¦ã¯ `/' ã‚’å‹§ã‚ã¾ã™ã€‚

6.515.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.8.0


Next: , Previous: W0632, Up: Messages

6.516 W0633

6.516.1 メッセージ本文

`#include "%s"' ã®ä¸­ã§ ' 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚

6.516.2 内容

`'' ã‚’ #include æ–‡ã§ä½¿ç”¨ã™ã‚‹ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚

6.516.3 サンプルコード

#include "NG'_header.h" /* W0633 */

6.516.4 関連メッセージ

  • W0632 `#include <%s>' ã®ä¸­ã§ ' ã‚„ " 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚
  • W0634 `#include' 行ã®ä¸­ã§ `\' を使ã£ã¦ã„ã¾ã™ã€‚パス区切り文字ã¨ã—ã¦ã¯ `/' ã‚’å‹§ã‚ã¾ã™ã€‚

6.516.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.8.0


Next: , Previous: W0633, Up: Messages

6.517 W0634

6.517.1 メッセージ本文

`#include' 行ã®ä¸­ã§ `\' を使ã£ã¦ã„ã¾ã™ã€‚パス区切り文字ã¨ã—ã¦ã¯ `/' ã‚’å‹§ã‚ã¾ã™ã€‚

6.517.2 内容

\ 㯠PC 環境ã«ãŠã‘るパス区切り文字ã§ã‚りã€#include æ–‡ã§ä½¿ç”¨ã™ã‚‹ã“ã¨ã§ç§»æ¤æ€§ã‚’æãªã„ã¾ã™ã€‚

6.517.3 サンプルコード

#include "..\ng\header.h" /* W0634 */
#include "..\\ng\\header.h" /* W0634 */

6.517.4 関連メッセージ

  • W0632 `#include <%s>' ã®ä¸­ã§ ' ã‚„ " 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚
  • W0633 `#include "%s"' ã®ä¸­ã§ ' 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚

6.517.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.8.0


Next: , Previous: W0634, Up: Messages

6.518 W0635

6.518.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。

6.518.2 内容

未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.518.3 サンプルコード

void func(int a)
{
    printf("Apple %f\n", a); /* W0635 */
}

6.518.4 関連メッセージ

  • W0636 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã«å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã›ã‚“。
  • W0637 関数呼ã³å‡ºã—ã«ã€å¤‰æ›æŒ‡å®šå­ã®æ•°ã‚ˆã‚Šã‚‚多ãã®å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã™ã€‚
  • W0638 ã“ã®é–¢æ•°å‘¼ã³å‡ºã—ã«ã¯ã€å°‘ãªãã¨ã‚‚一ã¤ã®å®Ÿå¼•æ•°ãŒå¿…è¦ã§ã™ã€‚
  • W0639 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。
  • W0640 scanf 関数ã®å®Ÿå¼•æ•°ã«ã¯ãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒã‚¤ãƒ³ã‚¿ã‚’渡ã•ãªã‘れã°ã„ã‘ã¾ã›ã‚“。

6.518.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0635, Up: Messages

6.519 W0636

6.519.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ã«å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã›ã‚“。

6.519.2 内容

未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.519.3 サンプルコード

void func(int a, int b, int c)
{
    printf("Banana %d, %d, %d\n", a, b); /* W0636 */
}

6.519.4 関連メッセージ

  • W0635 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。
  • W0637 関数呼ã³å‡ºã—ã«ã€å¤‰æ›æŒ‡å®šå­ã®æ•°ã‚ˆã‚Šã‚‚多ãã®å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã™ã€‚
  • W0638 ã“ã®é–¢æ•°å‘¼ã³å‡ºã—ã«ã¯ã€å°‘ãªãã¨ã‚‚一ã¤ã®å®Ÿå¼•æ•°ãŒå¿…è¦ã§ã™ã€‚
  • W0639 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。
  • W0640 scanf 関数ã®å®Ÿå¼•æ•°ã«ã¯ãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒã‚¤ãƒ³ã‚¿ã‚’渡ã•ãªã‘れã°ã„ã‘ã¾ã›ã‚“。

6.519.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0636, Up: Messages

6.520 W0637

6.520.1 メッセージ本文

関数呼ã³å‡ºã—ã«ã€å¤‰æ›æŒ‡å®šå­ã®æ•°ã‚ˆã‚Šã‚‚多ãã®å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã™ã€‚

6.520.2 内容

未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.520.3 サンプルコード

void func(int a, int b)
{
    printf("Orange %d\n", a, b); /* W0637 */
}

6.520.4 関連メッセージ

  • W0635 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。
  • W0636 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã«å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã›ã‚“。
  • W0638 ã“ã®é–¢æ•°å‘¼ã³å‡ºã—ã«ã¯ã€å°‘ãªãã¨ã‚‚一ã¤ã®å®Ÿå¼•æ•°ãŒå¿…è¦ã§ã™ã€‚
  • W0639 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。
  • W0640 scanf 関数ã®å®Ÿå¼•æ•°ã«ã¯ãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒã‚¤ãƒ³ã‚¿ã‚’渡ã•ãªã‘れã°ã„ã‘ã¾ã›ã‚“。

6.520.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0637, Up: Messages

6.521 W0638

6.521.1 メッセージ本文

ã“ã®é–¢æ•°å‘¼ã³å‡ºã—ã«ã¯ã€å°‘ãªãã¨ã‚‚一ã¤ã®å®Ÿå¼•æ•°ãŒå¿…è¦ã§ã™ã€‚

6.521.2 内容

未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.521.3 サンプルコード

printf(); /* W0638 */

6.521.4 関連メッセージ

  • W0635 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。
  • W0636 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã«å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã›ã‚“。
  • W0637 関数呼ã³å‡ºã—ã«ã€å¤‰æ›æŒ‡å®šå­ã®æ•°ã‚ˆã‚Šã‚‚多ãã®å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã™ã€‚
  • W0639 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。
  • W0640 scanf 関数ã®å®Ÿå¼•æ•°ã«ã¯ãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒã‚¤ãƒ³ã‚¿ã‚’渡ã•ãªã‘れã°ã„ã‘ã¾ã›ã‚“。

6.521.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0638, Up: Messages

6.522 W0639

6.522.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。

6.522.2 内容

未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.522.3 サンプルコード

int a;

scanf("%f",  &a); /* W0639 */

6.522.4 関連メッセージ

  • W0635 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。
  • W0636 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã«å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã›ã‚“。
  • W0637 関数呼ã³å‡ºã—ã«ã€å¤‰æ›æŒ‡å®šå­ã®æ•°ã‚ˆã‚Šã‚‚多ãã®å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã™ã€‚
  • W0638 ã“ã®é–¢æ•°å‘¼ã³å‡ºã—ã«ã¯ã€å°‘ãªãã¨ã‚‚一ã¤ã®å®Ÿå¼•æ•°ãŒå¿…è¦ã§ã™ã€‚
  • W0640 scanf 関数ã®å®Ÿå¼•æ•°ã«ã¯ãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒã‚¤ãƒ³ã‚¿ã‚’渡ã•ãªã‘れã°ã„ã‘ã¾ã›ã‚“。

6.522.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0639, Up: Messages

6.523 W0640

6.523.1 メッセージ本文

scanf 関数ã®å®Ÿå¼•æ•°ã«ã¯ãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒã‚¤ãƒ³ã‚¿ã‚’渡ã•ãªã‘れã°ã„ã‘ã¾ã›ã‚“。

6.523.2 内容

未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.523.3 サンプルコード

int a;

fscanf(stdin, "%d", a); /* W0640 */

6.523.4 関連メッセージ

  • W0635 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。
  • W0636 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã«å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã›ã‚“。
  • W0637 関数呼ã³å‡ºã—ã«ã€å¤‰æ›æŒ‡å®šå­ã®æ•°ã‚ˆã‚Šã‚‚多ãã®å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã™ã€‚
  • W0638 ã“ã®é–¢æ•°å‘¼ã³å‡ºã—ã«ã¯ã€å°‘ãªãã¨ã‚‚一ã¤ã®å®Ÿå¼•æ•°ãŒå¿…è¦ã§ã™ã€‚
  • W0639 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。

6.523.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0640, Up: Messages

6.524 W0641

6.524.1 メッセージ本文

æµ®å‹•å°æ•°ç‚¹æ•°åž‹ã‚’オブジェクトã¸ã®ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚

6.524.2 内容

ã“ã®ã‚ˆã†ãªã‚­ãƒ£ã‚¹ãƒˆã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.524.3 サンプルコード

int *foo(const float f)
{
    return (int *) f; /* W0641 */
}

6.524.4 関連メッセージ

ãªã—。

6.524.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W0641, Up: Messages

6.525 W0642

6.525.1 メッセージ本文

register 指定ã§å®£è¨€ã•れãŸã‚ªãƒ–ジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å¾—ã‚‹ã“ã¨ã¯ä¸å¯èƒ½ã§ã™ã€‚

6.525.2 内容

未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.525.3 サンプルコード

void func(void)
{
    register int a[3];

    int *p1 = a; /* W0642 */
    int *p2 = &a[1]; /* W0642 */
}

6.525.4 関連メッセージ

  • W0643 ã“ã®ãƒžã‚¯ãƒ­ã§æ§‹æˆã•ã‚ŒãŸæ–‡å­—列リテラルã¯ã€`"' ã§å›²ã¾ã‚Œã¦ã„ãªã„䏿­£ãªå½¢å¼ã§ã™ã€‚マクロ内㮠`#' 演算å­ãŒ `\' ãŒæœ«å°¾ã«ã‚る実引数ã«é©ç”¨ã•れãŸçµæžœã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
  • W0644 void å¼ã®å€¤ã‚’使用ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚void å¼ã¯å€¤ã‚’ã‚‚ã¡ã¾ã›ã‚“。
  • W0645 仮引数ã®åž‹ã«ã¯ã€void 型を使ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。
  • W0646 é€šå¸¸ã®æ–‡å­—列リテラルã¨ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒéš£æŽ¥ã—ã¦ã„ã¾ã™ã€‚

6.525.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.8.0


Next: , Previous: W0642, Up: Messages

6.526 W0643

6.526.1 メッセージ本文

ã“ã®ãƒžã‚¯ãƒ­ã§æ§‹æˆã•ã‚ŒãŸæ–‡å­—列リテラルã¯ã€`"' ã§å›²ã¾ã‚Œã¦ã„ãªã„䏿­£ãªå½¢å¼ã§ã™ã€‚マクロ内㮠`#' 演算å­ãŒ `\' ãŒæœ«å°¾ã«ã‚る実引数ã«é©ç”¨ã•れãŸçµæžœã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.526.2 内容

未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.526.3 サンプルコード

#define MACRO(x) #x
const char *str = MACRO(foo\); /* W0643 */

6.526.4 関連メッセージ

  • W0642 register 指定ã§å®£è¨€ã•れãŸã‚ªãƒ–ジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å¾—ã‚‹ã“ã¨ã¯ä¸å¯èƒ½ã§ã™ã€‚
  • W0644 void å¼ã®å€¤ã‚’使用ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚void å¼ã¯å€¤ã‚’ã‚‚ã¡ã¾ã›ã‚“。
  • W0645 仮引数ã®åž‹ã«ã¯ã€void 型を使ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。
  • W0646 é€šå¸¸ã®æ–‡å­—列リテラルã¨ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒéš£æŽ¥ã—ã¦ã„ã¾ã™ã€‚

6.526.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.16.0


Next: , Previous: W0643, Up: Messages

6.527 W0644

6.527.1 メッセージ本文

void å¼ã®å€¤ã‚’使用ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚void å¼ã¯å€¤ã‚’ã‚‚ã¡ã¾ã›ã‚“。

6.527.2 内容

未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.527.3 サンプルコード

extern void foo(void);

int bar(void)
{
    return (int) foo(); /* W0644 */
}

6.527.4 関連メッセージ

  • W0642 register 指定ã§å®£è¨€ã•れãŸã‚ªãƒ–ジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å¾—ã‚‹ã“ã¨ã¯ä¸å¯èƒ½ã§ã™ã€‚
  • W0643 ã“ã®ãƒžã‚¯ãƒ­ã§æ§‹æˆã•ã‚ŒãŸæ–‡å­—列リテラルã¯ã€`"' ã§å›²ã¾ã‚Œã¦ã„ãªã„䏿­£ãªå½¢å¼ã§ã™ã€‚マクロ内㮠`#' 演算å­ãŒ `\' ãŒæœ«å°¾ã«ã‚る実引数ã«é©ç”¨ã•れãŸçµæžœã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
  • W0645 仮引数ã®åž‹ã«ã¯ã€void 型を使ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。
  • W0646 é€šå¸¸ã®æ–‡å­—列リテラルã¨ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒéš£æŽ¥ã—ã¦ã„ã¾ã™ã€‚

6.527.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W0644, Up: Messages

6.528 W0645

6.528.1 メッセージ本文

仮引数ã®åž‹ã«ã¯ã€void 型を使ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。

6.528.2 内容

未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.528.3 サンプルコード

extern void func(a) /* W0645 */
void a;
{
}

6.528.4 関連メッセージ

  • W0642 register 指定ã§å®£è¨€ã•れãŸã‚ªãƒ–ジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å¾—ã‚‹ã“ã¨ã¯ä¸å¯èƒ½ã§ã™ã€‚
  • W0643 ã“ã®ãƒžã‚¯ãƒ­ã§æ§‹æˆã•ã‚ŒãŸæ–‡å­—列リテラルã¯ã€`"' ã§å›²ã¾ã‚Œã¦ã„ãªã„䏿­£ãªå½¢å¼ã§ã™ã€‚マクロ内㮠`#' 演算å­ãŒ `\' ãŒæœ«å°¾ã«ã‚る実引数ã«é©ç”¨ã•れãŸçµæžœã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
  • W0644 void å¼ã®å€¤ã‚’使用ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚void å¼ã¯å€¤ã‚’ã‚‚ã¡ã¾ã›ã‚“。
  • W0646 é€šå¸¸ã®æ–‡å­—列リテラルã¨ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒéš£æŽ¥ã—ã¦ã„ã¾ã™ã€‚

6.528.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.14.0


Next: , Previous: W0645, Up: Messages

6.529 W0646

6.529.1 メッセージ本文

é€šå¸¸ã®æ–‡å­—列リテラルã¨ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒéš£æŽ¥ã—ã¦ã„ã¾ã™ã€‚

6.529.2 内容

未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.529.3 サンプルコード

static const char *str = "foo" L"bar"; /* W0646 */

6.529.4 関連メッセージ

  • W0642 register 指定ã§å®£è¨€ã•れãŸã‚ªãƒ–ジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å¾—ã‚‹ã“ã¨ã¯ä¸å¯èƒ½ã§ã™ã€‚
  • W0643 ã“ã®ãƒžã‚¯ãƒ­ã§æ§‹æˆã•ã‚ŒãŸæ–‡å­—列リテラルã¯ã€`"' ã§å›²ã¾ã‚Œã¦ã„ãªã„䏿­£ãªå½¢å¼ã§ã™ã€‚マクロ内㮠`#' 演算å­ãŒ `\' ãŒæœ«å°¾ã«ã‚る実引数ã«é©ç”¨ã•れãŸçµæžœã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
  • W0644 void å¼ã®å€¤ã‚’使用ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚void å¼ã¯å€¤ã‚’ã‚‚ã¡ã¾ã›ã‚“。
  • W0645 仮引数ã®åž‹ã«ã¯ã€void 型を使ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。

6.529.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.16.0


Next: , Previous: W0646, Up: Messages

6.530 W0649

6.530.1 メッセージ本文

シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®å€¤ãŒè² ã®å®šæ•°ã§ã™ã€‚çµæžœã¯æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚

6.530.2 内容

ã“ã®ã‚ˆã†ãªã‚·ãƒ•ãƒˆæ¼”ç®—ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.530.3 サンプルコード

int foo(int i)
{
    return i << -1; /* W0649 */
}

6.530.4 関連メッセージ

  • W0650 シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®å€¤ãŒå·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®åž‹ `%s' ã§è¡¨ã•れるビット数ã«å¯¾ã—ã¦å¤§ãã™ãŽã¾ã™ã€‚çµæžœã¯æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚

6.530.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W0649, Up: Messages

6.531 W0650

6.531.1 メッセージ本文

シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®å€¤ãŒå·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®åž‹ `%s' ã§è¡¨ã•れるビット数ã«å¯¾ã—ã¦å¤§ãã™ãŽã¾ã™ã€‚çµæžœã¯æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚

6.531.2 内容

ã“ã®ã‚ˆã†ãªã‚·ãƒ•ãƒˆæ¼”ç®—ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.531.3 サンプルコード

unsigned int foo(unsigned int i)
{
    return i << 32; /* W0650 */
}

6.531.4 関連メッセージ

  • W0649 シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®å€¤ãŒè² ã®å®šæ•°ã§ã™ã€‚çµæžœã¯æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚

6.531.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W0650, Up: Messages

6.532 W0653

6.532.1 メッセージ本文

é…åˆ—ã€æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®åˆæœŸå€¤ãŒ `{}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。

6.532.2 内容

é©åˆã—ãªã„åž‹ã®å¤‰æ•°ã‚’用ã„ã¦ã€æ§‹é€ ä½“ã‚„å…±ç”¨ä½“ã‚’åˆæœŸåŒ–ã™ã‚‹ã“ã¨ã¯ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€ 予期ã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.532.3 サンプルコード

struct ST {
    int i;
};

int a[3] = 0; /* W0653 */
struct ST s = 0; /* W0653 */

6.532.4 関連メッセージ

  • W0654 構造体ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®åˆæœŸåŒ–å­ã¯ã€åŒã˜æ§‹é€ ä½“åž‹ã‚ã‚‹ã„ã¯å…±ç”¨ä½“åž‹ã®å€¤ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。

6.532.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0653, Up: Messages

6.533 W0654

6.533.1 メッセージ本文

構造体ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®åˆæœŸåŒ–å­ã¯ã€åŒã˜æ§‹é€ ä½“åž‹ã‚ã‚‹ã„ã¯å…±ç”¨ä½“åž‹ã®å€¤ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。

6.533.2 内容

é©åˆã—ãªã„åž‹ã®å¤‰æ•°ã‚’用ã„ã¦ã€æ§‹é€ ä½“ã‚„å…±ç”¨ä½“ã‚’åˆæœŸåŒ–ã™ã‚‹ã“ã¨ã¯ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€ 予期ã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.533.3 サンプルコード

struct A {
    int i;
};

struct B {
    int j;
};

struct A a = { 0 };
struct B b = a; /* W0654 */

6.533.4 関連メッセージ

  • W0653 é…åˆ—ã€æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®åˆæœŸå€¤ãŒ `{}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。

6.533.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0654, Up: Messages

6.534 W0655

6.534.1 メッセージ本文

ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚

6.534.2 内容

ビットフィールドå¼ã«å¯¾ã—㦠sizeof 演算å­ã‚’使用ã™ã‚‹ã“ã¨ã¯ç„¡æ„味ã§ã™ã€‚

6.534.3 サンプルコード

struct ST {
    unsigned int a:2;
    unsigned int b:4;
};

void func(void)
{
    struct ST s = { 0 };
    int i = sizeof(s.a); /* W0655 */
}

6.534.4 関連メッセージ

  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.534.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0655, Up: Messages

6.535 W0656

6.535.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。

6.535.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.535.3 サンプルコード

void func(int count)
{
    printf("There are %Ld apples\n", count); /* W0656 */
}

6.535.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.535.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0656, Up: Messages

6.536 W0657

6.536.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.536.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.536.3 サンプルコード

void func(int count)
{
    printf("There are %Ld apples\n", count); /* W0657 */
}

6.536.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.536.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0657, Up: Messages

6.537 W0658

6.537.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.537.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.537.3 サンプルコード

void func(unsigned int count)
{
    printf("There are %Lo apples\n", count); /* W0658 */
}

6.537.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.537.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0658, Up: Messages

6.538 W0659

6.538.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.538.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.538.3 サンプルコード

void func(unsigned int count)
{
    printf("There are %Lu apples\n", count); /* W0659 */
}

6.538.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.538.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0659, Up: Messages

6.539 W0660

6.539.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.539.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.539.3 サンプルコード

void func(unsigned int count)
{
    printf("There are %Lx apples\n", count); /* W0660 */
}

6.539.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.539.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0660, Up: Messages

6.540 W0661

6.540.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.540.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.540.3 サンプルコード

void func(unsigned int count)
{
    printf("There are %LX apples\n", count); /* W0661 */
}

6.540.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.540.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0661, Up: Messages

6.541 W0662

6.541.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.541.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.541.3 サンプルコード

void func(double count)
{
    printf("There are %lf apples\n", count); /* W0662 */
}

6.541.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.541.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0662, Up: Messages

6.542 W0663

6.542.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.542.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.542.3 サンプルコード

void func(double count)
{
    printf("There are %le apples\n", count); /* W0663 */
}

6.542.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.542.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0663, Up: Messages

6.543 W0664

6.543.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.543.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.543.3 サンプルコード

void func(double count)
{
    printf("There are %lE apples\n", count); /* W0664 */
}

6.543.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.543.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0664, Up: Messages

6.544 W0665

6.544.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.544.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.544.3 サンプルコード

void func(double count)
{
    printf("There are %lg apples\n", count); /* W0665 */
}

6.544.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.544.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0665, Up: Messages

6.545 W0666

6.545.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.545.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.545.3 サンプルコード

void func(double count)
{
    printf("There are %lG apples\n", count); /* W0666 */
}

6.545.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.545.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0666, Up: Messages

6.546 W0667

6.546.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.546.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.546.3 サンプルコード

void func(char count)
{
    printf("There are %hc apples\n", count); /* W0667 */
}

6.546.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.546.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0667, Up: Messages

6.547 W0668

6.547.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.547.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.547.3 サンプルコード

void func(double percent)
{
    printf("There is %f%l% apple juice\n", percent); /* W0668 */
}

6.547.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.547.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0668, Up: Messages

6.548 W0669

6.548.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.548.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.548.3 サンプルコード

void func(char *s)
{
    printf("There are %hs apples\n", s); /* W0669 */
}

6.548.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.548.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0669, Up: Messages

6.549 W0670

6.549.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.549.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.549.3 サンプルコード

void func(void)
{
    int n;

    printf("There are %Ln apples\n", &n); /* W0670 */
}

6.549.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.549.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0670, Up: Messages

6.550 W0671

6.550.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.550.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.550.3 サンプルコード

void func(char *p)
{
    printf("p points to %lp\n", p); /* W0671 */
}

6.550.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.550.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0671, Up: Messages

6.551 W0672

6.551.1 メッセージ本文

%s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.551.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.551.3 サンプルコード

void func(void)
{
    int a;

    printf("%0", &a); /* W0672 */
}

6.551.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.551.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0672, Up: Messages

6.552 W0673

6.552.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。

6.552.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.552.3 サンプルコード

void func(void)
{
    int a;

    scanf("%y", &a); /* W0673 */
}

6.552.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.552.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0673, Up: Messages

6.553 W0674

6.553.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.553.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.553.3 サンプルコード

void func(void)
{
    int a;

    scanf("%Ld", &a); /* W0674 */
}

6.553.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.553.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0674, Up: Messages

6.554 W0675

6.554.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.554.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.554.3 サンプルコード

void func(void)
{
    int a;

    scanf("%Lo", &a); /* W0675 */
}

6.554.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.554.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0675, Up: Messages

6.555 W0676

6.555.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.555.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.555.3 サンプルコード

void func(void)
{
    int a;

    scanf("%Lu", &a); /* W0676 */
}

6.555.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.555.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0676, Up: Messages

6.556 W0677

6.556.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.556.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.556.3 サンプルコード

void func(void)
{
    int a;

    scanf("%Lx", &a); /* W0677 */
}

6.556.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.556.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0677, Up: Messages

6.557 W0678

6.557.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.557.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.557.3 サンプルコード

void func(void)
{
    double a;

    scanf("%lle", &a); /* W0678 */
}

6.557.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.557.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0678, Up: Messages

6.558 W0679

6.558.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.558.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.558.3 サンプルコード

void func(void)
{
    char a[256];

    scanf("%lls", a); /* W0679 */
}

6.558.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.558.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0679, Up: Messages

6.559 W0680

6.559.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.559.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.559.3 サンプルコード

void func(void)
{
    void *a;

    scanf("%lp", &a); /* W0680 */
}

6.559.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.559.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0680, Up: Messages

6.560 W0681

6.560.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.560.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.560.3 サンプルコード

void func(void)
{
    int a;

    scanf("%d%l%", &a); /* W0681 */
}

6.560.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.560.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0681, Up: Messages

6.561 W0682

6.561.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.561.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.561.3 サンプルコード

void func(void)
{
    char buf[256];

    scanf("%L[0-9]", buf); /* W0682 */
}

6.561.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.561.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0682, Up: Messages

6.562 W0683

6.562.1 メッセージ本文

%s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.562.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.562.3 サンプルコード

void func(void)
{
    char a;

    scanf("%Lc", &a); /* W0683 */
}

6.562.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.562.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0683, Up: Messages

6.563 W0684

6.563.1 メッセージ本文

%s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.563.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.563.3 サンプルコード

void func(void)
{
    long a;

    scanf("%l", &a); /* W0684 */
}

6.563.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.563.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0684, Up: Messages

6.564 W0685

6.564.1 メッセージ本文

`[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚

6.564.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.564.3 サンプルコード

char c;
scanf("%[z-a]", &c); /* W0685 */

6.564.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0686 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.564.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W0685, Up: Messages

6.565 W0686

6.565.1 メッセージ本文

走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.565.2 内容

未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.565.3 サンプルコード

char c;
scanf("%[abcda]", &c); /* W0686 */

6.565.4 関連メッセージ

  • W0655 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚
  • W0656 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0657 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0658 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0659 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0660 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0661 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0662 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0663 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0664 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0665 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0666 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0667 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0668 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0669 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0670 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0671 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0672 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0673 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。
  • W0674 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0675 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0676 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0677 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0678 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0679 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0680 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0681 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0682 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0683 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0684 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0685 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚

6.565.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W0686, Up: Messages

6.566 W0687

6.566.1 メッセージ本文

defined 演算å­ã‚’削除ã™ã‚‹ç›®çš„ã§ #undef を使ã£ã¦ã„ã¾ã™ã€‚

6.566.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.566.3 サンプルコード

#undef defined /* W0687 */

6.566.4 関連メッセージ

  • W0688 #line 指令ã®å¾Œã«ã€1 ã‹ã‚‰ 32767 ã®ç¯„囲ã®è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。
  • W0689 #line æŒ‡ä»¤ã®æ§‹æ–‡ãŒ `#line 汎整数定数 "文字列"' ã®å½¢å¼ã¨åˆã£ã¦ã„ã¾ã›ã‚“。
  • W0690 #line 指令ã®å¾Œã«è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。
  • W0691 `##' 演算å­ã®çµæžœãŒæœ‰åйãªå‰å‡¦ç†å­—å¥ã§ã¯ã‚りã¾ã›ã‚“。

6.566.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0687, Up: Messages

6.567 W0688

6.567.1 メッセージ本文

#line 指令ã®å¾Œã«ã€1 ã‹ã‚‰ 32767 ã®ç¯„囲ã®è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。

6.567.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.567.3 サンプルコード

#line 35000 "test.c" /* W0688 */

6.567.4 関連メッセージ

  • W0687 defined 演算å­ã‚’削除ã™ã‚‹ç›®çš„ã§ #undef を使ã£ã¦ã„ã¾ã™ã€‚
  • W0689 #line æŒ‡ä»¤ã®æ§‹æ–‡ãŒ `#line 汎整数定数 "文字列"' ã®å½¢å¼ã¨åˆã£ã¦ã„ã¾ã›ã‚“。
  • W0690 #line 指令ã®å¾Œã«è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。
  • W0691 `##' 演算å­ã®çµæžœãŒæœ‰åйãªå‰å‡¦ç†å­—å¥ã§ã¯ã‚りã¾ã›ã‚“。

6.567.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.2.0


Next: , Previous: W0688, Up: Messages

6.568 W0689

6.568.1 メッセージ本文

#line æŒ‡ä»¤ã®æ§‹æ–‡ãŒ `#line 汎整数定数 "文字列"' ã®å½¢å¼ã¨åˆã£ã¦ã„ã¾ã›ã‚“。

6.568.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.568.3 サンプルコード

#line 35 * 100 /* W0689 */
#line 35 * 100 "test.c" /* W0689 */
#line 35 L"ã‚ã„ã†.c" /* W0689 */
#line __FILE__ 35 /* W0689 */

6.568.4 関連メッセージ

  • W0687 defined 演算å­ã‚’削除ã™ã‚‹ç›®çš„ã§ #undef を使ã£ã¦ã„ã¾ã™ã€‚
  • W0688 #line 指令ã®å¾Œã«ã€1 ã‹ã‚‰ 32767 ã®ç¯„囲ã®è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。
  • W0690 #line 指令ã®å¾Œã«è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。
  • W0691 `##' 演算å­ã®çµæžœãŒæœ‰åйãªå‰å‡¦ç†å­—å¥ã§ã¯ã‚りã¾ã›ã‚“。

6.568.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.2.0


Next: , Previous: W0689, Up: Messages

6.569 W0690

6.569.1 メッセージ本文

#line 指令ã®å¾Œã«è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。

6.569.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.569.3 サンプルコード

#line LINE1000 /* W0690 */
#line __FILE__ 35 /* W0690 */

6.569.4 関連メッセージ

  • W0687 defined 演算å­ã‚’削除ã™ã‚‹ç›®çš„ã§ #undef を使ã£ã¦ã„ã¾ã™ã€‚
  • W0688 #line 指令ã®å¾Œã«ã€1 ã‹ã‚‰ 32767 ã®ç¯„囲ã®è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。
  • W0689 #line æŒ‡ä»¤ã®æ§‹æ–‡ãŒ `#line 汎整数定数 "文字列"' ã®å½¢å¼ã¨åˆã£ã¦ã„ã¾ã›ã‚“。
  • W0691 `##' 演算å­ã®çµæžœãŒæœ‰åйãªå‰å‡¦ç†å­—å¥ã§ã¯ã‚りã¾ã›ã‚“。

6.569.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.2.0


Next: , Previous: W0690, Up: Messages

6.570 W0691

6.570.1 メッセージ本文

`##' 演算å­ã®çµæžœãŒæœ‰åйãªå‰å‡¦ç†å­—å¥ã§ã¯ã‚りã¾ã›ã‚“。

6.570.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.570.3 サンプルコード

#define MACRO(a, b) a ## b

double d = (double) MACRO(-, 123); /* W0691 */

6.570.4 関連メッセージ

  • W0687 defined 演算å­ã‚’削除ã™ã‚‹ç›®çš„ã§ #undef を使ã£ã¦ã„ã¾ã™ã€‚
  • W0688 #line 指令ã®å¾Œã«ã€1 ã‹ã‚‰ 32767 ã®ç¯„囲ã®è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。
  • W0689 #line æŒ‡ä»¤ã®æ§‹æ–‡ãŒ `#line 汎整数定数 "文字列"' ã®å½¢å¼ã¨åˆã£ã¦ã„ã¾ã›ã‚“。
  • W0690 #line 指令ã®å¾Œã«è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。

6.570.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.16.0


Next: , Previous: W0691, Up: Messages

6.571 W0692

6.571.1 メッセージ本文

関数形å¼ãƒžã‚¯ãƒ­ `%s' ã«å®Ÿå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“。

6.571.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ ISO C99 ã®ã¿ã§ä½¿ç”¨å¯èƒ½ãªã®ã§ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.571.3 サンプルコード

#define MACRO(a) #a

const char *s = (char *) MACRO(); /* W0692 */

6.571.4 関連メッセージ

  • W0693 関数形å¼ãƒžã‚¯ãƒ­ãŒãã®å®šç¾©ã‚ˆã‚Šã‚‚å°‘ãªã„実引数ã§å‘¼ã³å‡ºã•れã¦ã„ã¾ã™ã€‚

6.571.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.16.0


Next: , Previous: W0692, Up: Messages

6.572 W0693

6.572.1 メッセージ本文

関数形å¼ãƒžã‚¯ãƒ­ãŒãã®å®šç¾©ã‚ˆã‚Šã‚‚å°‘ãªã„実引数ã§å‘¼ã³å‡ºã•れã¦ã„ã¾ã™ã€‚

6.572.2 内容

ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€è¨€èªžåˆ¶ç´„é•åã«ãªã‚Šã¾ã™ã®ã§ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.572.3 サンプルコード

/* 追記予定 */

6.572.4 関連メッセージ

  • W0692 関数形å¼ãƒžã‚¯ãƒ­ `%s' ã«å®Ÿå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“。

6.572.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

2.0.0 以é™ã®äºˆå®š


Next: , Previous: W0693, Up: Messages

6.573 W0694

6.573.1 メッセージ本文

`assert' ã¨ã„ã†åç§°ã®é–¢æ•°ã‚’呼ã³å‡ºã™ç›®çš„ã§ã€assert ãƒžã‚¯ãƒ­ãŒæŠ‘åˆ¶ã•れã¦ã„ã¾ã™ã€‚未定義ã®çµæžœã«ãªã‚Šã¾ã™ã€‚

6.573.2 内容

assert ã¨ã„ã†åå‰ã®é–¢æ•°ã‚’作æˆã™ã‚‹ã¨ã€æœªå®šç¾©ã®çµæžœã«ãªã‚Šã¾ã™ã€‚

6.573.3 サンプルコード

#undef assert
extern void assert(int);

void foo(void)
{
    assert("should not be reached" == ""); /* W0694 */
}

6.573.4 関連メッセージ

ãªã—。

6.573.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.16.0


Next: , Previous: W0694, Up: Messages

6.574 W0695

6.574.1 メッセージ本文

assert マクロを #undef ã—ã¦ãã®åå‰ã®é–¢æ•°ã‚’呼ã³å‡ºã—ã§ãるよã†ã«ã™ã‚‹ã¨ã€æœªå®šç¾©ã®çµæžœã«ãªã‚Šã¾ã™ã€‚

6.574.2 内容

assert マクロã®å®šç¾©è§£æ¶ˆã‚„å†å®šç¾©ã¯ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.574.3 サンプルコード

#undef assert /* W0695 */
extern void assert(int a);

6.574.4 関連メッセージ

ãªã—。

6.574.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0695, Up: Messages

6.575 W0696

6.575.1 メッセージ本文

ã“ã® `#if...' ã§ä½¿ã‚れã¦ã„るマクロ `%s' ã¯å®šç¾©ã•れã¦ã„ã¾ã›ã‚“。

6.575.2 内容

é€šå¸¸ã€æœªå®šç¾©ãƒžã‚¯ãƒ­ã¯ 0 ã«ç½®ãæ›ãˆã‚‰ã‚Œã‚‹ãŸã‚ã€æœªå®šç¾©ã®å‹•作ã¨ã„ã†ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ—リプロセッサã«ä¾å­˜ã—ãŸå‡¦ç†ã¨ã„ãˆã¾ã™ã®ã§ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ ã¾ãŸã€ãƒžã‚¯ãƒ­ãŒæœªå®šç¾©ã§ã‚ã‚‹ã“ã¨ã¯ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã—ãªã„ã“ã¨ã®å¯èƒ½æ€§ã‚‚ã‚りã¾ã™ã€‚ãã®å ´åˆã¯ã€å‹•作上ã®ãƒã‚°ã«ã¤ãªãŒã‚Šã¾ã™ã€‚

6.575.3 サンプルコード

#define MACRO (1)

#if MACRO == 1
    ...snip...
#endif

#undef MACRO

#if MACRO == 2 /* W0696 */
    ...snip...
#endif

6.575.4 関連メッセージ

ãªã—。

6.575.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0696, Up: Messages

6.576 W0697

6.576.1 メッセージ本文

戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã«ã€æš—黙㮠`return;' æ–‡ã§çµ‚了ã™ã‚‹ãƒ‘スãŒå­˜åœ¨ã—ã¾ã™ã€‚

6.576.2 内容

å¼ã‚’æŒãŸãªã„ return æ–‡ã¯ä¸å®šå€¤ã‚’è¿”ã—ã¾ã™ã€‚

6.576.3 サンプルコード

int func(int value) /* W0697 */
{
    if (value == 0) {
        return 0;
    }
    /* No return statement at the end of this function. */
}

6.576.4 関連メッセージ

  • W0698 戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã§ã€`return;' æ–‡ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚
  • W0699 関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€return æ–‡ã«å€¤ã‚’戻ã™ãŸã‚ã®å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。
  • W0700 関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€å€¤ã‚’戻㙠return æ–‡ãŒã‚りã¾ã›ã‚“。

6.576.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.14.0


Next: , Previous: W0697, Up: Messages

6.577 W0698

6.577.1 メッセージ本文

戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã§ã€`return;' æ–‡ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚

6.577.2 内容

å¼ã‚’æŒãŸãªã„ return æ–‡ã¯ä¸å®šå€¤ã‚’è¿”ã—ã¾ã™ã€‚

6.577.3 サンプルコード

int func(void)
{
    return; /* W0698 */
}

6.577.4 関連メッセージ

  • W0698 戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã§ã€`return;' æ–‡ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚
  • W0699 関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€return æ–‡ã«å€¤ã‚’戻ã™ãŸã‚ã®å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。
  • W0700 関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€å€¤ã‚’戻㙠return æ–‡ãŒã‚りã¾ã›ã‚“。

6.577.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0698, Up: Messages

6.578 W0699

6.578.1 メッセージ本文

関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€return æ–‡ã«å€¤ã‚’戻ã™ãŸã‚ã®å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。

6.578.2 内容

å¼ã‚’æŒãŸãªã„ return æ–‡ã¯ä¸å®šå€¤ã‚’è¿”ã—ã¾ã™ã€‚

6.578.3 サンプルコード

extern func(void)
{
    return; /* W0699 */
}

6.578.4 関連メッセージ

  • W0697 戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã«ã€æš—黙㮠`return;' æ–‡ã§çµ‚了ã™ã‚‹ãƒ‘スãŒå­˜åœ¨ã—ã¾ã™ã€‚
  • W0698 戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã§ã€`return;' æ–‡ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚
  • W0700 関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€å€¤ã‚’戻㙠return æ–‡ãŒã‚りã¾ã›ã‚“。

6.578.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0699, Up: Messages

6.579 W0700

6.579.1 メッセージ本文

関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€å€¤ã‚’戻㙠return æ–‡ãŒã‚りã¾ã›ã‚“。

6.579.2 内容

å¼ã‚’æŒãŸãªã„ return æ–‡ã¯ä¸å®šå€¤ã‚’è¿”ã—ã¾ã™ã€‚

6.579.3 サンプルコード

extern func(void) /* W0700 */
{
}

6.579.4 関連メッセージ

  • W0697 戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã«ã€æš—黙㮠`return;' æ–‡ã§çµ‚了ã™ã‚‹ãƒ‘スãŒå­˜åœ¨ã—ã¾ã™ã€‚
  • W0698 戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã§ã€`return;' æ–‡ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚
  • W0699 関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€return æ–‡ã«å€¤ã‚’戻ã™ãŸã‚ã®å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。

6.579.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.14.0


Next: , Previous: W0700, Up: Messages

6.580 W0703

6.580.1 メッセージ本文

ã‚¿ã‚° `%s' ãŒã‚ˆã‚Šåºƒã„有効範囲をもã¤åŒã˜è­˜åˆ¥å­ã®å®£è¨€ã‚’éš ã—ã¦ã„ã¾ã™ã€‚

6.580.2 内容

ローカル変数ãŒã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’隠蔽ã™ã‚‹ã“ã¨ã§ã€ãƒ­ãƒ¼ã‚«ãƒ«é ˜åŸŸã§ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’使用ã—ã¦ã„る箇所ãŒå½±éŸ¿ã‚’å—ã‘ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.580.3 サンプルコード

union FOO {
    ...snip...
};

void func(void)
{
    struct FOO { /* W0703 */
        ...snip...
    };
}

6.580.4 関連メッセージ

  • W0704 ã“ã® `%s' ã®å®£è¨€ã¯ã€ã‚ˆã‚Šåºƒã„有効範囲をもã¤åŒã˜è­˜åˆ¥å­ã®å®£è¨€ã‚’éš ã—ã¦ã„ã¾ã™ã€‚

6.580.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0703, Up: Messages

6.581 W0704

6.581.1 メッセージ本文

ã“ã® `%s' ã®å®£è¨€ã¯ã€ã‚ˆã‚Šåºƒã„有効範囲をもã¤åŒã˜è­˜åˆ¥å­ã®å®£è¨€ã‚’éš ã—ã¦ã„ã¾ã™ã€‚

6.581.2 内容

ローカル変数ãŒã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’隠蔽ã™ã‚‹ã“ã¨ã§ã€ãƒ­ãƒ¼ã‚«ãƒ«é ˜åŸŸã§ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’使用ã—ã¦ã„る箇所ãŒå½±éŸ¿ã‚’å—ã‘ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.581.3 サンプルコード

int a;

void func(void)
{
    double a; /* W0704 */
}

6.581.4 関連メッセージ

  • W0703 ã‚¿ã‚° `%s' ãŒã‚ˆã‚Šåºƒã„有効範囲をもã¤åŒã˜è­˜åˆ¥å­ã®å®£è¨€ã‚’éš ã—ã¦ã„ã¾ã™ã€‚

6.581.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0704, Up: Messages

6.582 W0705

6.582.1 メッセージ本文

é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™ã“ã¨ãŒã‚りã¾ã™ã€‚

6.582.2 内容

é…列ã®é ˜åŸŸå¤–ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å‹•ä½œã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.582.3 サンプルコード

void func(unsigned int a)
{
    int buf[10];

    if (a < 10) {
        buf[a] = 0;
    }

    ...snip...

    buf[a] = 5; /* W0705 */
}

6.582.4 関連メッセージ

  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

6.582.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0705, Up: Messages

6.583 W0707

6.583.1 メッセージ本文

é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™å®šæ•°ã§ã™ã€‚

6.583.2 内容

é…列ã®é ˜åŸŸå¤–ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å‹•ä½œã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.583.3 サンプルコード

extern int a[5];

int foo(void)
{
    int i = a[5]; /* W0707 */
    return i;
}

6.583.4 関連メッセージ

  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

6.583.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W0707, Up: Messages

6.584 W0708

6.584.1 メッセージ本文

for æ–‡ã®åˆ¶å¾¡å¤‰æ•° `%s' ã¯ç¹°ã‚Šè¿”ã—æ–‡æœ¬ä½“ã®ä¸­ã§å€¤ã‚’変ãˆã‚‰ã‚Œã¦ã„ã¾ã™ã€‚

6.584.2 内容

ループ本体ã§ãƒ«ãƒ¼ãƒ—制御変数を変更ã™ã‚‹ã“ã¨ãŒã€ã™ãã•ã¾æ§‹é€ åŒ–定ç†ã«é•åã™ã‚‹ã“ã¨ã«ã¯ãªã‚Šã¾ã›ã‚“ãŒã€ ã©ã®ã‚ˆã†ã«å復ã™ã‚‹ã‹ã‚’判断ã—ã«ãããªã‚Šã€ä¿®æ­£ã‚„ãƒ†ã‚¹ãƒˆæ™‚ã«æ··ä¹±ã®ã‚‚ã¨ã«ãªã‚Šã¾ã™ã€‚

6.584.3 サンプルコード

int i, j;

for (i = j = 0; i < 10; j++) {
    i++; /* W0708 */
}

6.584.4 関連メッセージ

ãªã—。

6.584.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0708, Up: Messages

6.585 W0711

6.585.1 メッセージ本文

関係演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.585.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.585.3 サンプルコード

int func(int a, int b, int c, int d)
{
    return (a + b) > (c > d); /* W0711 */
}

6.585.4 関連メッセージ

  • W0712 関係演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0713 関係演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.585.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.8.0


Next: , Previous: W0711, Up: Messages

6.586 W0712

6.586.1 メッセージ本文

関係演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.586.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.586.3 サンプルコード

int func(int a, int b, int c, int d)
{
    return (a > b) > (c + d); /* W0712 */
}

6.586.4 関連メッセージ

  • W0711 関係演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0713 関係演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.586.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.8.0


Next: , Previous: W0712, Up: Messages

6.587 W0713

6.587.1 メッセージ本文

関係演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.587.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.587.3 サンプルコード

int func(int a, int b, int c, int d)
{
    return (a > b) > (c > d); /* W0713 */
}

6.587.4 関連メッセージ

  • W0711 関係演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0712 関係演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.587.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.8.0


Next: , Previous: W0713, Up: Messages

6.588 W0714

6.588.1 メッセージ本文

`&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.588.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.588.3 サンプルコード

int func(int a, int b, int c, int d)
{
    return (a > b) & (c > d); /* W0714 */
}

6.588.4 関連メッセージ

  • W0715 `|' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0716 ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0717 ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0718 ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.588.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.8.0


Next: , Previous: W0714, Up: Messages

6.589 W0715

6.589.1 メッセージ本文

`|' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.589.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.589.3 サンプルコード

int func(int a, int b, int c, int d)
{
    return (a > b) | (c > d); /* W0715 */
}

6.589.4 関連メッセージ

  • W0714 `&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0716 ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0717 ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0718 ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.589.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.8.0


Next: , Previous: W0715, Up: Messages

6.590 W0716

6.590.1 メッセージ本文

ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.590.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.590.3 サンプルコード

int func(int a, int b, int c, int d)
{
    return (a > b) + (c > d); /* W0716 */
}

6.590.4 関連メッセージ

  • W0714 `&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0715 `|' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0717 ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0718 ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.590.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.10.0


Next: , Previous: W0716, Up: Messages

6.591 W0717

6.591.1 メッセージ本文

ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.591.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.591.3 サンプルコード

int func(int a, int b, int c)
{
    return (a > b) + c; /* W0717 */
}

6.591.4 関連メッセージ

  • W0714 `&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0715 `|' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0716 ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0717 ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.591.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.10.0


Next: , Previous: W0717, Up: Messages

6.592 W0718

6.592.1 メッセージ本文

ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.592.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.592.3 サンプルコード

int func(int a, int b, int c)
{
    return a + (b > c);  /* W0718 */
}

6.592.4 関連メッセージ

  • W0714 `&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0715 `|' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0716 ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚
  • W0717 ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚

6.592.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.10.0


Next: , Previous: W0718, Up: Messages

6.593 W0719

6.593.1 メッセージ本文

シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒã€æ½œåœ¨åž‹ `%s' ã®ãƒ“ット幅以上ã®å®šæ•°å€¤ã§ã™ã€‚

6.593.2 内容

ã“ã®ã‚ˆã†ãªã‚·ãƒ•ãƒˆæ¼”ç®—ã¯æ±Žæ•´æ•°æ‹¡å¼µå¾Œã®åž‹ã®ç¯„囲を超ãˆã¦ã„ãªã„ãŸã‚〠未定義ã®å‹•作ã«ã¯ãªã‚Šã¾ã›ã‚“ãŒã€ 汎整数拡張ãŒç”Ÿã˜ãªã„åž‹ã®å¤‰æ•°ã¸ã®ä»£å…¥ã«å¤‰æ›´ã—ãŸæ™‚ç‚¹ã§æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã®ã§ã€ 潜在的ãªå±é™ºã‚’ä¼´ã„ã¾ã™ã€‚

6.593.3 サンプルコード

int foo(char c)
{
    return c << 31; /* W0719 */
}

6.593.4 関連メッセージ

ãªã—。

6.593.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W0719, Up: Messages

6.594 W0720

6.594.1 メッセージ本文

æµ®å‹•å°æ•°ç‚¹åž‹ã®å€¤ãŒå¤‰æ›å…ˆã®åž‹ã®ç¯„囲ã«å…¥ã‚Šãりã¾ã›ã‚“。

6.594.2 内容

ã“ã®ã‚ˆã†ãªå¼ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.594.3 サンプルコード

signed char sc1 = (signed char) 127.5; /* OK */
signed char sc2 = (signed char) 128.5; /* W0720 */

signed char sc3 = (signed char) -128.5; /* OK */
signed char sc4 = (signed char) -129.5; /* W0720 */

6.594.4 関連メッセージ

  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

6.594.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0720, Up: Messages

6.595 W0721

6.595.1 メッセージ本文

ã“ã®æ±Žæ•´æ•°åž‹ã¯ã€ãƒã‚¤ãƒ³ã‚¿ã®å€¤ã‚’ä¿æŒã™ã‚‹ã®ã«å分ãªå¤§ãã•ã‚’ã‚‚ã¡ã¾ã›ã‚“。

6.595.2 内容

上記ã®ã‚ˆã†ãªå¤‰æ›ã«ã‚ˆã‚Šã€ãƒã‚¤ãƒ³ã‚¿åž‹å¤‰æ•°ã®ä¸€éƒ¨ã®æƒ…å ±ãŒæ¬ è½ã—ãŸã‚‚ã®ãŒæ•´æ•°åž‹ã«ä»£å…¥ã•れるã“ã¨ã«ãªã‚Šã¾ã™ã€‚ ã—ãŸãŒã£ã¦ã€ä»£å…¥å…ˆã®å€¤ã¯ã‚‚ã¯ã‚„æ­£ã—ã„アドレスを指ã—ã¦ã„ãªã„ã“ã¨ã«ãªã‚Šã¾ã™ã€‚

6.595.3 サンプルコード

void func(int *p)
{
    /* when short is 16 bit long and pointer is 32 bit long */
    unsigned short us = (unsigned short) p; /* W0721 */
}

6.595.4 関連メッセージ

ãªã—。

6.595.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0721, Up: Messages

6.596 W0722

6.596.1 メッセージ本文

符å·ä»˜ãã®å¼ã®å€¤ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã—ã¦ã„ã¾ã™ã€‚

6.596.2 内容

値ãŒåž‹ã§è¡¨ç¾å¯èƒ½ãªç¯„囲を超ãˆã¦ã—ã¾ã†(オーãƒãƒ¼ãƒ•ローã™ã‚‹)ã¨ã€ã©ã®ã‚ˆã†ãªå€¤ãŒä»£å…¥ã•れるã‹ã¯æœªå®šç¾©ã§ã™ã€‚ ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.596.3 サンプルコード

int func(int a)
{
    /* when int is 32 bit long */
    if (a < 0) {
        return a + 1; /* OK */
    }
    else if (a < 2147483647) {
        return a + 1; /* OK */
    }

    return a + 1; /* W0722 */
}

6.596.4 関連メッセージ

  • W0723 符å·ä»˜ãã®å¼ã®å€¤ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.596.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0722, Up: Messages

6.597 W0723

6.597.1 メッセージ本文

符å·ä»˜ãã®å¼ã®å€¤ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.597.2 内容

値ãŒåž‹ã§è¡¨ç¾å¯èƒ½ãªç¯„囲を超ãˆã¦ã—ã¾ã†(オーãƒãƒ¼ãƒ•ローã™ã‚‹)ã¨ã€ã©ã®ã‚ˆã†ãªå€¤ãŒä»£å…¥ã•れるã‹ã¯æœªå®šç¾©ã§ã™ã€‚ ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.597.3 サンプルコード

int func(int a)
{
    /* when int is 32 bit long */
    if (a < 0) {
        return a + 1; /* OK */
    }
    else if (a < 2000000000) {
        return a + 1; /* OK */
    }

    return a + 1; /* W0723 */
}

6.597.4 関連メッセージ

  • W0722 符å·ä»˜ãã®å¼ã®å€¤ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã—ã¦ã„ã¾ã™ã€‚

6.597.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0723, Up: Messages

6.598 W0724

6.598.1 メッセージ本文

æ¡ä»¶ä»˜ãインクルード指令ã«ã‚ˆã£ã¦ã€èªè­˜ã§ããªã„å‰å‡¦ç†æŒ‡ä»¤ãŒç„¡è¦–ã•れã¾ã—ãŸã€‚

6.598.2 内容

ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚

èªè­˜ã§ããªã„å‰å‡¦ç†æŒ‡ä»¤ã‚’見ã¤ã‘ãŸã¨ãã®å¯¾å‡¦æ–¹æ³•ã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ã—ãŸãŒã£ã¦ã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.598.3 サンプルコード

/* 追記予定 */

6.598.4 関連メッセージ

ãªã—。

6.598.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

2.0.0 以é™ã®äºˆå®š


Next: , Previous: W0724, Up: Messages

6.599 W0726

6.599.1 メッセージ本文

修飾å­ä»˜ã void åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•° `%s()' ã®ä¸­ã§ã€`return å¼;' ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚

6.599.2 内容

値を戻ã—ã¦ã¯ãªã‚‰ãªã„関数ã§ã‚ã‚‹ã«ã‚‚é–¢ã‚らãšã€æ˜Žç¤ºçš„㪠return æ–‡ãŒã‚りã¾ã™ã€‚ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã§ã™ã€‚

6.599.3 サンプルコード

const void func(int a)
{
    if (a == 0) {
        return 0; /* W0726 */
    }
}

6.599.4 関連メッセージ

ãªã—。

6.599.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0726, Up: Messages

6.600 W0727

6.600.1 メッセージ本文

列挙型ã«ãªã„値を使ã£ã¦ã„ã¾ã™ã€‚

6.600.2 内容

ã“ã®ã‚ˆã†ãªåˆ—挙型ã®ä½¿ã„æ–¹ã¯æ–‡æ³•çš„ã«ã¯åˆæ³•ã§ã™ãŒã€æœ¬æ¥ã®åˆ—挙型変数ã¨ã—ã¦ä½¿ç”¨ã•れるã¹ã情報をæå¤±ã™ã‚‹ã¨ã„ã†æ„味ã§å•題ãŒã‚りã¾ã™ã€‚

6.600.3 サンプルコード

enum Fruits {
    APPLE = 1,
    BANANA,
    ORANGE
};

enum Fruits fruit = 5; /* W0727 */

6.600.4 関連メッセージ

  • W0728 列挙型ã®é–¢æ•°ä»®å¼•æ•°ã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒå®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W0729 列挙型ã®ã‚ªãƒ–ジェクトã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W0730 åˆ—æŒ™åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•°ã§ã€åˆ¥ã®åˆ—挙型ã®åˆ—æŒ™å®šæ•°ãŒæˆ»ã•れã¦ã„ã¾ã™ã€‚
  • W0731 switch 文㮠case ラベルã®å€¤ `%s' ã¯åˆ¶å¾¡å¼ã®åˆ—挙型ã«å±žã—ã¦ã„ã¾ã›ã‚“。

6.600.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0727, Up: Messages

6.601 W0728

6.601.1 メッセージ本文

列挙型ã®é–¢æ•°ä»®å¼•æ•°ã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒå®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã•れã¦ã„ã¾ã™ã€‚

6.601.2 内容

ã“ã®ã‚ˆã†ãªåˆ—挙型ã®ä½¿ã„æ–¹ã¯æ–‡æ³•çš„ã«ã¯åˆæ³•ã§ã™ãŒã€æœ¬æ¥ã®åˆ—挙型変数ã¨ã—ã¦ä½¿ç”¨ã•れるã¹ã情報をæå¤±ã™ã‚‹ã¨ã„ã†æ„味ã§å•題ãŒã‚りã¾ã™ã€‚

6.601.3 サンプルコード

enum Color { RED, BLUE, GREEN };
enum Fruits { APPLE, BANANA, ORANGE };

extern void func1(enum Color);

void func2(void)
{
    func1(ORANGE); /* W0728 */
}

6.601.4 関連メッセージ

  • W0727 列挙型ã«ãªã„値を使ã£ã¦ã„ã¾ã™ã€‚
  • W0729 列挙型ã®ã‚ªãƒ–ジェクトã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W0730 åˆ—æŒ™åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•°ã§ã€åˆ¥ã®åˆ—挙型ã®åˆ—æŒ™å®šæ•°ãŒæˆ»ã•れã¦ã„ã¾ã™ã€‚
  • W0731 switch 文㮠case ラベルã®å€¤ `%s' ã¯åˆ¶å¾¡å¼ã®åˆ—挙型ã«å±žã—ã¦ã„ã¾ã›ã‚“。

6.601.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0728, Up: Messages

6.602 W0729

6.602.1 メッセージ本文

列挙型ã®ã‚ªãƒ–ジェクトã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚

6.602.2 内容

ã“ã®ã‚ˆã†ãªåˆ—挙型ã®ä½¿ã„æ–¹ã¯æ–‡æ³•çš„ã«ã¯åˆæ³•ã§ã™ãŒã€æœ¬æ¥ã®åˆ—挙型変数ã¨ã—ã¦ä½¿ç”¨ã•れるã¹ã情報をæå¤±ã™ã‚‹ã¨ã„ã†æ„味ã§å•題ãŒã‚りã¾ã™ã€‚

6.602.3 サンプルコード

enum Color { RED, BLUE, GREEN };
enum Fruits { APPLE, BANANA, ORANGE };

void func(void)
{
    enum Color c;

    c = ORANGE; /* W0729 */
}

6.602.4 関連メッセージ

  • W0727 列挙型ã«ãªã„値を使ã£ã¦ã„ã¾ã™ã€‚
  • W0728 列挙型ã®é–¢æ•°ä»®å¼•æ•°ã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒå®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W0730 åˆ—æŒ™åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•°ã§ã€åˆ¥ã®åˆ—挙型ã®åˆ—æŒ™å®šæ•°ãŒæˆ»ã•れã¦ã„ã¾ã™ã€‚
  • W0731 switch 文㮠case ラベルã®å€¤ `%s' ã¯åˆ¶å¾¡å¼ã®åˆ—挙型ã«å±žã—ã¦ã„ã¾ã›ã‚“。

6.602.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0729, Up: Messages

6.603 W0730

6.603.1 メッセージ本文

åˆ—æŒ™åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•°ã§ã€åˆ¥ã®åˆ—挙型ã®åˆ—æŒ™å®šæ•°ãŒæˆ»ã•れã¦ã„ã¾ã™ã€‚

6.603.2 内容

ã“ã®ã‚ˆã†ãªåˆ—挙型ã®ä½¿ã„æ–¹ã¯æ–‡æ³•çš„ã«ã¯åˆæ³•ã§ã™ãŒã€æœ¬æ¥ã®åˆ—挙型変数ã¨ã—ã¦ä½¿ç”¨ã•れるã¹ã情報をæå¤±ã™ã‚‹ã¨ã„ã†æ„味ã§å•題ãŒã‚りã¾ã™ã€‚

6.603.3 サンプルコード

enum Color { RED, BLUE, GREEN };
enum Fruits { APPLE, BANANA, ORANGE };

enum Color func(void)
{
    return ORANGE; /* W0730 */
}

6.603.4 関連メッセージ

  • W0727 列挙型ã«ãªã„値を使ã£ã¦ã„ã¾ã™ã€‚
  • W0728 列挙型ã®é–¢æ•°ä»®å¼•æ•°ã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒå®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W0729 列挙型ã®ã‚ªãƒ–ジェクトã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W0731 switch 文㮠case ラベルã®å€¤ `%s' ã¯åˆ¶å¾¡å¼ã®åˆ—挙型ã«å±žã—ã¦ã„ã¾ã›ã‚“。

6.603.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0730, Up: Messages

6.604 W0731

6.604.1 メッセージ本文

switch 文㮠case ラベルã®å€¤ `%s' ã¯åˆ¶å¾¡å¼ã®åˆ—挙型ã«å±žã—ã¦ã„ã¾ã›ã‚“。

6.604.2 内容

ã“ã®ã‚ˆã†ãªåˆ—挙型ã®ä½¿ã„æ–¹ã¯æ–‡æ³•çš„ã«ã¯åˆæ³•ã§ã™ãŒã€æœ¬æ¥ã®åˆ—挙型変数ã¨ã—ã¦ä½¿ç”¨ã•れるã¹ã情報をæå¤±ã™ã‚‹ã¨ã„ã†æ„味ã§å•題ãŒã‚りã¾ã™ã€‚

6.604.3 サンプルコード

enum Color { RED, BLUE, GREEN };
enum Fruits { APPLE, BANANA, ORANGE, GRAPE };

int func(enum Color c)
{
    switch (c) {
    case RED:
        return 1;
    case GRAPE: /* W0731 */
        return 2;
    }

    return 0;
}

6.604.4 関連メッセージ

  • W0727 列挙型ã«ãªã„値を使ã£ã¦ã„ã¾ã™ã€‚
  • W0728 列挙型ã®é–¢æ•°ä»®å¼•æ•°ã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒå®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W0729 列挙型ã®ã‚ªãƒ–ジェクトã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W0730 åˆ—æŒ™åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•°ã§ã€åˆ¥ã®åˆ—挙型ã®åˆ—æŒ™å®šæ•°ãŒæˆ»ã•れã¦ã„ã¾ã™ã€‚

6.604.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0731, Up: Messages

6.605 W0732

6.605.1 メッセージ本文

`&&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚

6.605.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.605.3 サンプルコード

extern void func(unsigned int a, unsigned int b,unsigned int c, unsigned int d)
{
    int r;
    r = (a + b) && (c - d); /* W0732 */
    r = (a * b) && (c / d); /* W0732 */

    r = (a << b) && (c << d); /* W0732 */
    r = (a >> b) && (c >> d); /* W0732 */
}

6.605.4 関連メッセージ

  • W0733 `||' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚
  • W0734 è«–ç†æ¼”ç®—å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚
  • W0735 è«–ç†æ¼”ç®—å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚

6.605.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.12.0


Next: , Previous: W0732, Up: Messages

6.606 W0733

6.606.1 メッセージ本文

`||' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚

6.606.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.606.3 サンプルコード

extern void func(unsigned int a, unsigned int b,unsigned int c, unsigned int d)
{
    int r;
    r = (a + b) || (c - d); /* W0733 */
    r = (a * b) || (c / d); /* W0733 */

    r = (a << b) || (c << d); /* W0733 */
    r = (a >> b) || (c >> d); /* W0733 */
}

6.606.4 関連メッセージ

  • W0732 `&&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚
  • W0734 è«–ç†æ¼”ç®—å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚
  • W0735 è«–ç†æ¼”ç®—å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚

6.606.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.12.0


Next: , Previous: W0733, Up: Messages

6.607 W0734

6.607.1 メッセージ本文

è«–ç†æ¼”ç®—å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚

6.607.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.607.3 サンプルコード

extern void func(unsigned int a, unsigned int b, unsigned int c)
{
    int r;
    r = (a + b) && c; /* W0734 */
    r = (a - b) && c; /* W0734 */

    r = (a << b) || c; /* W0734 */
    r = (a >> b) || c; /* W0734 */
}

6.607.4 関連メッセージ

  • W0732 `&&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚
  • W0733 `||' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚
  • W0735 è«–ç†æ¼”ç®—å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚

6.607.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.12.0


Next: , Previous: W0734, Up: Messages

6.608 W0735

6.608.1 メッセージ本文

è«–ç†æ¼”ç®—å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚

6.608.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.608.3 サンプルコード

extern void func(unsigned int a, unsigned int b, unsigned int c)
{
    int r;
    r = a && (b + c); /* W0735 */
    r = a && (b - c); /* W0735 */

    r = a || (b >> c); /* W0735 */
    r = a || (b << c); /* W0735 */
}

6.608.4 関連メッセージ

  • W0732 `&&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚
  • W0733 `||' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚
  • W0734 è«–ç†æ¼”ç®—å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚

6.608.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.12.0


Next: , Previous: W0735, Up: Messages

6.609 W0736

6.609.1 メッセージ本文

ファイルスコープã§å®£è¨€ã•れãŸé™çš„変数 `%s' 㯠1 ã¤ã®é–¢æ•°å†…ã§ã—ã‹èª­ã¿æ›¸ãã•れã¦ã„ã¾ã›ã‚“。

6.609.2 内容

グローãƒãƒ«å¤‰æ•°ãŒã€1 ã¤ã®é–¢æ•°å†…ã§ã—ã‹ä½¿ç”¨ã•れã¦ã„ã¾ã›ã‚“。ã“ã®ã‚ˆã†ãªå¤‰æ•°ã¯ã€ä¿å®ˆæ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.609.3 サンプルコード

static int a = 10; /* W0736 */

int func1(void)
{
    return 0;
}

int func2(void)
{
    return ++a;
}

6.609.4 関連メッセージ

ãªã—。

6.609.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0736, Up: Messages

6.610 W0737

6.610.1 メッセージ本文

`enum %s' ã®å†…容ãŒä¸æ˜Žã§ã™ã€‚列挙体タグãŒå†…容を指定ã›ãšã«å®£è¨€ã•れã¦ã„ã¾ã™ã€‚

6.610.2 内容

定義ã—ã¦ã„ãªã„列挙体ã®ã‚¿ã‚°ã‚’使用ã™ã‚‹ã“ã¨ã¯è¨€èªžåˆ¶ç´„é•åã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.610.3 サンプルコード

extern enum Foo foo; /* W0737 */

6.610.4 関連メッセージ

ãªã—。

6.610.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0737, Up: Messages

6.611 W0738

6.611.1 メッセージ本文

æ­£ã®æ•´æ•°å®šæ•°ã®å€¤ãŒã‚ˆã‚Šå°ã•ãªç¬¦å·ç„¡ã—åž‹ã¸ã®æš—é»™ã®åž‹å¤‰æ›ã‚’行ã£ãŸãŸã‚ã€åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™ã€‚

6.611.2 内容

値ãŒåž‹ã§è¡¨ç¾å¯èƒ½ãªç¯„囲を超ãˆã¦ã—ã¾ã†(オーãƒãƒ¼ãƒ•ローã™ã‚‹)ã“ã¨ã§ã€ä»£å…¥å…ˆã«ã¯å…ƒã€…ã®å®šæ•°ã®å€¤ãŒãã®ã¾ã¾å…¥ã‚‰ãªããªã‚Šã¾ã™ã€‚ ã¤ã¾ã‚Šã€ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã—ãªã„値ãŒä»£å…¥ã•れるã“ã¨ã«ãªã‚Šã€ä¸å…·åˆã«ã¤ãªãŒã‚Šã¾ã™ã€‚

6.611.3 サンプルコード

/* when char is 8 bit long */
const unsigned char uc1 = 255; /* OK */
const unsigned char uc2 = 256; /* W0738 */

/* when int is 32 bit long */
const unsigned int ui1 = 4294967295; /* OK */
const unsigned int ui2 = 4294967296; /* W0738 */

6.611.4 関連メッセージ

ãªã—。

6.611.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0738, Up: Messages

6.612 W0739

6.612.1 メッセージ本文

定数å¼ã«ãŠã‘る符å·ç„¡ã—減算ã®çµæžœãŒè² ã«ãªã‚Šã¾ã—ãŸã€‚

6.612.2 内容

値ãŒåž‹ã§è¡¨ç¾å¯èƒ½ãªç¯„囲を超ãˆã¦ã—ã¾ã†ã“ã¨ã§ã€ä»£å…¥å…ˆã«ã¯å…ƒã€…ã®å®šæ•°ã®å€¤ãŒãã®ã¾ã¾å…¥ã‚‰ãªããªã‚Šã¾ã™ã€‚ ã¤ã¾ã‚Šã€ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã—ãªã„値ãŒä»£å…¥ã•れるã“ã¨ã«ãªã‚Šã€ä¸å…·åˆã«ã¤ãªãŒã‚Šã¾ã™ã€‚

6.612.3 サンプルコード

const unsigned int ui1 = 3U - 3U; /* OK */
const unsigned int ui2 = 3U - 5U; /* W0739 */

6.612.4 関連メッセージ

  • W0740 定数å¼ã«ãŠã‘る符å·ç„¡ã—加算ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚
  • W0741 定数å¼ã«ãŠã‘る符å·ç„¡ã—ä¹—ç®—ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚

6.612.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0739, Up: Messages

6.613 W0740

6.613.1 メッセージ本文

定数å¼ã«ãŠã‘る符å·ç„¡ã—加算ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚

6.613.2 内容

値ãŒåž‹ã§è¡¨ç¾å¯èƒ½ãªç¯„囲を超ãˆã¦ã—ã¾ã†ã“ã¨ã§ã€ä»£å…¥å…ˆã«ã¯å…ƒã€…ã®å®šæ•°ã®å€¤ãŒãã®ã¾ã¾å…¥ã‚‰ãªããªã‚Šã¾ã™ã€‚ ã¤ã¾ã‚Šã€ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã—ãªã„値ãŒä»£å…¥ã•れるã“ã¨ã«ãªã‚Šã€ä¸å…·åˆã«ã¤ãªãŒã‚Šã¾ã™ã€‚

6.613.3 サンプルコード

/* when int is 32 bit long */
const unsigned int ui1 = 4294967294U + 1U; /* OK */
const unsigned int ui2 = 4294967295U + 1U; /* W0740 */

6.613.4 関連メッセージ

  • W0739 定数å¼ã«ãŠã‘る符å·ç„¡ã—減算ã®çµæžœãŒè² ã«ãªã‚Šã¾ã—ãŸã€‚
  • W0741 定数å¼ã«ãŠã‘る符å·ç„¡ã—ä¹—ç®—ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚

6.613.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0740, Up: Messages

6.614 W0741

6.614.1 メッセージ本文

定数å¼ã«ãŠã‘る符å·ç„¡ã—ä¹—ç®—ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚

6.614.2 内容

値ãŒåž‹ã§è¡¨ç¾å¯èƒ½ãªç¯„囲を超ãˆã¦ã—ã¾ã†ã“ã¨ã§ã€ä»£å…¥å…ˆã«ã¯å…ƒã€…ã®å®šæ•°ã®å€¤ãŒãã®ã¾ã¾å…¥ã‚‰ãªããªã‚Šã¾ã™ã€‚ ã¤ã¾ã‚Šã€ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã—ãªã„値ãŒä»£å…¥ã•れるã“ã¨ã«ãªã‚Šã€ä¸å…·åˆã«ã¤ãªãŒã‚Šã¾ã™ã€‚

6.614.3 サンプルコード

/* when int is 32 bit long */
const unsigned int ui1 = 2000000000U * 2U; /* OK */
const unsigned int ui2 = 3000000000U * 2U; /* W0741 */

6.614.4 関連メッセージ

  • W0739 定数å¼ã«ãŠã‘る符å·ç„¡ã—減算ã®çµæžœãŒè² ã«ãªã‚Šã¾ã—ãŸã€‚
  • W0740 定数å¼ã«ãŠã‘る符å·ç„¡ã—加算ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚

6.614.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0741, Up: Messages

6.615 W0742

6.615.1 メッセージ本文

è² ã®æ•´æ•°å®šæ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.615.2 内容

ã“ã®å¤‰æ›ã¯æ–‡æ³•çš„ã«å•題ã‚りã¾ã›ã‚“ãŒã€ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã©ãŠã‚Šã§ãªã„å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚

6.615.3 サンプルコード

#define MACRO (50)

unsigned int ui;

ui = MACRO - 100; /* W0742 */

6.615.4 関連メッセージ

ãªã—。

6.615.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0742, Up: Messages

6.616 W0743

6.616.1 メッセージ本文

整数定数å¼ã®å€¤ã¯ã€å¤‰æ›å…ˆã®ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãる範囲を超ãˆã¦ã„ã¾ã™ã€‚

6.616.2 内容

値ãŒåž‹ã§è¡¨ç¾å¯èƒ½ãªç¯„囲を超ãˆã¦ã—ã¾ã†ã“ã¨ã§ã€ä»£å…¥å…ˆã«ã¯å…ƒã€…ã®å®šæ•°ã®å€¤ãŒãã®ã¾ã¾å…¥ã‚‰ãªããªã‚Šã¾ã™ã€‚ ã¤ã¾ã‚Šã€ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã—ãªã„値ãŒä»£å…¥ã•れるã“ã¨ã«ãªã‚Šã€ä¸å…·åˆã«ã¤ãªãŒã‚Šã¾ã™ã€‚ ã¾ãŸã€ã“ã®ã‚ˆã†ãªå‡¦ç†ã¯ã€å‹•作ãŒå‡¦ç†ç³»å®šç¾©ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.616.3 サンプルコード

/* when char is 8 bit long */
const signed char sc1 = 127; /* OK */
const signed char sc2 = 128; /* W0743 */

/* when int is 32 bit long */
const int si1 = 2147483647; /* OK */
const int si2 = 2147483648; /* W0743 */

6.616.4 関連メッセージ

ãªã—。

6.616.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0743, Up: Messages

6.617 W0744

6.617.1 メッセージ本文

ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å½ã«ãªã‚‹å®šæ•°ã®ãŸã‚ã€åˆ¶å¾¡æ–‡æœ¬ä½“ã¯å®Ÿè¡Œã•れã¾ã›ã‚“。

6.617.2 内容

到é”ã—ãªã„コードãŒã‚ã‚‹ãŸã‚ã€ä¿¡é ¼æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.617.3 サンプルコード

#define MACRO1 (0)
#define MACRO2 (1)

if (MACRO1 == MACRO2) { /* W0744 */
    ...snip...
}

6.617.4 関連メッセージ

ãªã—。

6.617.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0744, Up: Messages

6.618 W0745

6.618.1 メッセージ本文

é…åˆ—ã®æ·»å­—ãŒã€é ˜åŸŸå¤–を指ã—ã¦ã„ã¾ã™ã€‚

6.618.2 内容

é…列ã®é ˜åŸŸå¤–ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å‹•ä½œã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.618.3 サンプルコード

void func(unsigned int a)
{
    int buf[10];

    if (a > 5 && a < 10) {
        buf[a + 5] = 0; /* W0745 */
    }
}

6.618.4 関連メッセージ

  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

6.618.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0745, Up: Messages

6.619 W0747

6.619.1 メッセージ本文

暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.619.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.619.3 サンプルコード

extern void foo(signed char a);

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

6.619.4 関連メッセージ

  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.619.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0747, Up: Messages

6.620 W0748

6.620.1 メッセージ本文

暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.620.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.620.3 サンプルコード

extern void foo(unsigned char a);

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

6.620.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.620.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0748, Up: Messages

6.621 W0749

6.621.1 メッセージ本文

暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.621.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.621.3 サンプルコード

extern void foo(signed char a);

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

6.621.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.621.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0749, Up: Messages

6.622 W0750

6.622.1 メッセージ本文

暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.622.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.622.3 サンプルコード

extern void foo(short a);

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

6.622.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.622.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0750, Up: Messages

6.623 W0751

6.623.1 メッセージ本文

暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.623.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.623.3 サンプルコード

extern void foo(unsigned char a);

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

6.623.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.623.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0751, Up: Messages

6.624 W0752

6.624.1 メッセージ本文

暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.624.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.624.3 サンプルコード

extern void foo(unsigned short a);

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

6.624.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.624.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0752, Up: Messages

6.625 W0753

6.625.1 メッセージ本文

暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.625.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.625.3 サンプルコード

extern void foo(signed char a);

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

6.625.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.625.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0753, Up: Messages

6.626 W0754

6.626.1 メッセージ本文

暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.626.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.626.3 サンプルコード

extern void foo(short a);

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

6.626.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.626.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0754, Up: Messages

6.627 W0755

6.627.1 メッセージ本文

暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.627.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.627.3 サンプルコード

extern void foo(int a);

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

6.627.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.627.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0755, Up: Messages

6.628 W0756

6.628.1 メッセージ本文

暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.628.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.628.3 サンプルコード

extern void foo(unsigned char a);

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

6.628.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.628.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0756, Up: Messages

6.629 W0757

6.629.1 メッセージ本文

暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.629.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.629.3 サンプルコード

extern void foo(unsigned short a);

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

6.629.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.629.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0757, Up: Messages

6.630 W0758

6.630.1 メッセージ本文

暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.630.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.630.3 サンプルコード

extern void foo(unsigned int a);

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

6.630.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.630.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0758, Up: Messages

6.631 W0759

6.631.1 メッセージ本文

暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.631.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.631.3 サンプルコード

extern void foo(signed char a);

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

6.631.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.631.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0759, Up: Messages

6.632 W0760

6.632.1 メッセージ本文

暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.632.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.632.3 サンプルコード

extern void foo(short a);

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

6.632.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.632.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0760, Up: Messages

6.633 W0761

6.633.1 メッセージ本文

暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.633.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.633.3 サンプルコード

extern void foo(int a);

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

6.633.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.633.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0761, Up: Messages

6.634 W0762

6.634.1 メッセージ本文

暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.634.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.634.3 サンプルコード

extern void foo(long a);

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

6.634.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.634.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0762, Up: Messages

6.635 W0763

6.635.1 メッセージ本文

暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.635.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.635.3 サンプルコード

extern void foo(unsigned char a);

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

6.635.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.635.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0763, Up: Messages

6.636 W0764

6.636.1 メッセージ本文

暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.636.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.636.3 サンプルコード

extern void foo(unsigned short a);

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

6.636.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.636.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0764, Up: Messages

6.637 W0765

6.637.1 メッセージ本文

暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.637.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.637.3 サンプルコード

extern void foo(unsigned int a);

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

6.637.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0766 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.637.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0765, Up: Messages

6.638 W0766

6.638.1 メッセージ本文

暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.638.2 内容

よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.638.3 サンプルコード

extern void foo(unsigned long a);

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

6.638.4 関連メッセージ

  • W0747 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0748 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0749 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0750 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0751 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0752 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0753 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0754 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0755 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0756 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0757 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0758 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0759 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0760 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0761 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0762 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0763 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0764 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0765 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.638.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0766, Up: Messages

6.639 W0767

6.639.1 メッセージ本文

暗黙的㫠double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.639.2 内容

よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.639.3 サンプルコード

extern void foo(float a);

void bar(double a)
{
    float b = a; /* W0767 */
    foo(a); /* W0767 */
}

6.639.4 関連メッセージ

  • W0768 暗黙的㫠long double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0769 暗黙的㫠long double åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.639.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0767, Up: Messages

6.640 W0768

6.640.1 メッセージ本文

暗黙的㫠long double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.640.2 内容

よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.640.3 サンプルコード

extern void foo(float a);

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

6.640.4 関連メッセージ

  • W0767 暗黙的㫠double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0769 暗黙的㫠long double åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.640.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0768, Up: Messages

6.641 W0769

6.641.1 メッセージ本文

暗黙的㫠long double åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.641.2 内容

よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.641.3 サンプルコード

extern void foo(double a);

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

6.641.4 関連メッセージ

  • W0767 暗黙的㫠double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0768 暗黙的㫠long double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.641.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0769, Up: Messages

6.642 W0770

6.642.1 メッセージ本文

外部çµåˆã‚’ã‚‚ã¤è­˜åˆ¥å­ `%s' ã®å®£è¨€ãŒã€äºŒã¤ä»¥ä¸Šå­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚

6.642.2 内容

リンケージをもã¤ã‚ªãƒ–ジェクトãŠã‚ˆã³é–¢æ•°ã‚’複数ã®ãƒ•ァイルã§å®£è¨€ã™ã‚‹éš›ã¯ã€ãã®å®£è¨€ã«äº’æ›æ€§ãŒã‚ã‚‹ã“ã¨ã‚’ä¿è¨¼ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ ã“れã¯ã€ä¿å®ˆæ€§ã‚’大ãã低下ã•ã›ã¾ã™ã€‚

6.642.3 サンプルコード

test1.h

extern int func(void); /* W0770 */

test2.h

extern int func(void); /* W0770 */

test.c

#include "test1.h"
#include "test2.h"

int func(void)
{
    return 0;
}

6.642.4 関連メッセージ

  • W0771 グローãƒãƒ«ãªè­˜åˆ¥å­ `%s' ãŒã€äºŒã¤ä»¥ä¸Šã®ãƒ•ァイルã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚

6.642.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0770, Up: Messages

6.643 W0771

6.643.1 メッセージ本文

グローãƒãƒ«ãªè­˜åˆ¥å­ `%s' ãŒã€äºŒã¤ä»¥ä¸Šã®ãƒ•ァイルã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚

6.643.2 内容

リンケージをもã¤ã‚ªãƒ–ジェクトãŠã‚ˆã³é–¢æ•°ã‚’複数ã®ãƒ•ァイルã§å®£è¨€ã™ã‚‹éš›ã¯ã€ãã®å®£è¨€ã«äº’æ›æ€§ãŒã‚ã‚‹ã“ã¨ã‚’ä¿è¨¼ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ ã“れã¯ã€ä¿å®ˆæ€§ã‚’大ãã低下ã•ã›ã¾ã™ã€‚

6.643.3 サンプルコード

test1.h

extern int func(void); /* W0771 */
extern int a; /* W0771 */

test2.h

extern int func(void); /* W0771 */
extern int a; /* W0771 */

test.c

#include "test1.h"
#include "test2.h"

6.643.4 関連メッセージ

  • W0770 外部çµåˆã‚’ã‚‚ã¤è­˜åˆ¥å­ `%s' ã®å®£è¨€ãŒã€äºŒã¤ä»¥ä¸Šå­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚

6.643.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0771, Up: Messages

6.644 W0774

6.644.1 メッセージ本文

double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.644.2 内容

よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.644.3 サンプルコード

extern double foo(void);

float bar(void)
{
    return foo(); /* W0774 */
}

6.644.4 関連メッセージ

  • W0775 long double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0776 long double åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.644.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0774, Up: Messages

6.645 W0775

6.645.1 メッセージ本文

long double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.645.2 内容

よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.645.3 サンプルコード

extern long double foo(void);

float bar(void)
{
    return foo(); /* W0775 */
}

6.645.4 関連メッセージ

  • W0774 double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0776 long double åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.645.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0775, Up: Messages

6.646 W0776

6.646.1 メッセージ本文

long double åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.646.2 内容

よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.646.3 サンプルコード

extern long double foo(void);

double bar(void)
{
    return foo(); /* W0776 */
}

6.646.4 関連メッセージ

  • W0774 double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚
  • W0775 long double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚

6.646.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0776, Up: Messages

6.647 W0777

6.647.1 メッセージ本文

暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.647.2 内容

よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ より大ãã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã§ã¯ã€å¤§ããªå•題ã¯èµ·ãã¾ã›ã‚“ãŒã€æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯è§£æžæ€§ã«ã‚‚デメリットãŒã‚ã‚‹ãŸã‚推奨ã—ã¾ã›ã‚“。

6.647.3 サンプルコード

void func(float a, float b)
{
    double c = a + b; /* W0777 */
}

6.647.4 関連メッセージ

  • W0778 暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0779 暗黙的㫠double åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.647.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0777, Up: Messages

6.648 W0778

6.648.1 メッセージ本文

暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.648.2 内容

よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ より大ãã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã§ã¯ã€å¤§ããªå•題ã¯èµ·ãã¾ã›ã‚“ãŒã€æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯è§£æžæ€§ã«ã‚‚デメリットãŒã‚ã‚‹ãŸã‚推奨ã—ã¾ã›ã‚“。

6.648.3 サンプルコード

void func(float a, float b)
{
    long double c = a + b; /* W0778 */
}

6.648.4 関連メッセージ

  • W0777 暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0779 暗黙的㫠double åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.648.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0778, Up: Messages

6.649 W0779

6.649.1 メッセージ本文

暗黙的㫠double åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.649.2 内容

よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ より大ãã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã§ã¯ã€å¤§ããªå•題ã¯èµ·ãã¾ã›ã‚“ãŒã€æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯è§£æžæ€§ã«ã‚‚デメリットãŒã‚ã‚‹ãŸã‚推奨ã—ã¾ã›ã‚“。

6.649.3 サンプルコード

void func(double a, double b)
{
    long double c = a + b; /* W0779 */
}

6.649.4 関連メッセージ

  • W0777 暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0778 暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.649.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0779, Up: Messages

6.650 W0780

6.650.1 メッセージ本文

定数å¼ã«ãŠã‘る符å·ç„¡ã—左シフト演算 `<<' ã¯ã€éžã‚¼ãƒ­ã®ä¸Šä½ãƒ“ットを切り詰ã‚ã¾ã™ã€‚

6.650.2 内容

シフト演算ã®çµæžœã¨ã—ã¦ä¸Šä½ãƒ“ãƒƒãƒˆã®æƒ…å ±ãŒæ¬ è½ã—ã¦ã—ã¾ã„ã¾ã™ã€‚ ã“ã‚ŒãŒæ„図通りã§ã‚れã°å•題ã‚りã¾ã›ã‚“ãŒã€æ„図通りã§ãªã„å ´åˆã¯ã€ä¸å…·åˆã®åŽŸå› ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.650.3 サンプルコード

unsigned int foo(void)
{
    return 0x08000000U << 5; /* W0780 */
}

6.650.4 関連メッセージ

ãªã—。

6.650.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W0780, Up: Messages

6.651 W0781

6.651.1 メッセージ本文

ã“ã® switch æ–‡ã«ã¯ãƒ‘ス㌠1 ã¤ã—ã‹ã‚りã¾ã›ã‚“。ã“ã® switch æ–‡ã¯å†—é•·ã§ã™ã€‚

6.651.2 内容

ã“ã®ã‚ˆã†ãª switch æ–‡ãŒãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図通りã ã¨ã—ãŸã‚‰ã€ 冗長ãªè¨˜è¿°ã¨ã„ã†æ„味ã§å•題ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€æ„図通りã§ãªã„ã¨ã—ãŸã‚‰ case ç¯€ã®æ›¸ã忘れãŒè€ƒãˆã‚‰ã‚Œã¾ã™ã®ã§ã€ 動作上ã®ãƒã‚°ãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚³ãƒ¼ãƒ‰ã®é–²è¦§è€…ã‹ã‚‰è¦‹ã¦ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図通りã‹ã©ã†ã‹ã‚’判断ã§ããªã„ã¨ã„ã†å•題もã‚りã¾ã™ã€‚

6.651.3 サンプルコード

int foo(const int i)
{
    if (i > 5) {
        switch (i) { /* W0781 */
        case 0:
            return 1;
        case 5:
            return 2;
        default:
            return 3;
        }
    }

    switch (i) { /* OK */
    case 0:
        return 4;
    default:
        switch (i) { /* W0781 */
        case 10:
            return 5;
        default:
            return 6;
        }
    }
}

6.651.4 関連メッセージ

ãªã—。

6.651.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W0781, Up: Messages

6.652 W0783

6.652.1 メッセージ本文

ä¸å®Œå…¨åž‹ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’å«ã‚€ã‚­ãƒ£ã‚¹ãƒˆãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯ç§»æ¤æ€§ãŒã‚りã¾ã›ã‚“。

6.652.2 内容

完全型ã‹ã‚‰ä¸å®Œå…¨åž‹ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã¯ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.652.3 サンプルコード

extern struct Foo *gp;

void foo(int *p)
{
    gp = (struct Foo *) p; /* W0783 */
}

6.652.4 関連メッセージ

ãªã—。

6.652.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W0783, Up: Messages

6.653 W0784

6.653.1 メッセージ本文

éžæ¨™æº–ã®æ‹¡å¼µè¡¨è¨˜ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.653.2 内容

ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚

æœªå®šç¾©ã®æ‹¡å¼µè¡¨è¨˜ã‚’使用ã—ãŸå ´åˆã®å‹•ä½œã¯æœªå®šç¾©ã§ã™ã€‚ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.653.3 サンプルコード

/* 追記予定 */

6.653.4 関連メッセージ

ãªã—。

6.653.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

2.0.0 以é™ã®äºˆå®š


Next: , Previous: W0784, Up: Messages

6.654 W0785

6.654.1 メッセージ本文

ã“ã®ã‚¿ã‚° `%s' ã®å®£è¨€ã¯ã€ä»¥å‰ã®å®£è¨€ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.654.2 内容

構造体ã€å…±ç”¨ä½“ã€åˆ—挙体ã¯è¡çªã—ãªã„よã†ã«ç•°ãªã‚‹è­˜åˆ¥å­ã§ã‚¿ã‚°å®£è¨€ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ åŒã˜è­˜åˆ¥å­ã§ã‚¿ã‚°å®£è¨€ã•れã¦ã„る構造体や共用体ã®å‹•作㯠ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.654.3 サンプルコード

struct AAA {
    int a;
};

union AAA { /* W0785 */
    long a;
    int b;
};

6.654.4 関連メッセージ

ãªã—。

6.654.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0785, Up: Messages

6.655 W0786

6.655.1 メッセージ本文

intã€signed intã€ã‚ã‚‹ã„㯠unsigned int 以外ã®åž‹ã‚’ã‚‚ã¤ãƒ“ットフィールドã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。

6.655.2 内容

コンパイラã®ä¸­ã«ã¯ int 型以外ã®ãƒ“ットフィールドã®ä½¿ç”¨ã‚’許ã™ã‚‚ã®ãŒã‚りã¾ã™ã€‚ ã—ã‹ã—ã€int 型以外ã®ãƒ“ットフィールドã®å‹•作㯠ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.655.3 サンプルコード

struct ST { /* W0786 */
    unsigned int a:3;
    unsigned long b:1;
};

6.655.4 関連メッセージ

ãªã—。

6.655.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0786, Up: Messages

6.656 W0787

6.656.1 メッセージ本文

`%s' ã®åž‹ãŒã€ä»¥å‰ã®ç•°ãªã‚‹ã‚¹ã‚³ãƒ¼ãƒ—ã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.656.2 内容

宣言ãŒç•°ãªã‚‹ã‚¹ã‚³ãƒ¼ãƒ—ã«ã‚ã‚‹å ´åˆã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã«ãªã‚Šã¾ã™ã€‚ ã¾ãŸã€å®£è¨€ãŒåŒã˜ã‚¹ã‚³ãƒ¼ãƒ—ã«ã‚ã‚‹å ´åˆã¯æ¨™æº–制約é•åã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ ãŸã ã—ã€ä¸€æ–¹ãŒã‚‚ã†ä¸€æ–¹ã®å†…å´ã®ã‚¹ã‚³ãƒ¼ãƒ—ã§å®£è¨€ã•れる場åˆã¯å•題ã‚りã¾ã›ã‚“。

6.656.3 サンプルコード

void func1(void)
{
    extern int num;
    extern void func3(void);
}

void func2(void)
{
    extern double num; /* W0787 */
    extern void func3(int); /* W0787 */
}

6.656.4 関連メッセージ

  • W0788 `%s' ã®åž‹ãŒã€ä»¥å‰ã®åŒã˜ã‚¹ã‚³ãƒ¼ãƒ—内ã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚
  • W0789 `%s' ã®åž‹ãŒã€ä»¥å‰ã®ã‚ˆã‚Šåºƒã„スコープã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.656.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W0787, Up: Messages

6.657 W0788

6.657.1 メッセージ本文

`%s' ã®åž‹ãŒã€ä»¥å‰ã®åŒã˜ã‚¹ã‚³ãƒ¼ãƒ—内ã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.657.2 内容

宣言ãŒç•°ãªã‚‹ã‚¹ã‚³ãƒ¼ãƒ—ã«ã‚ã‚‹å ´åˆã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã«ãªã‚Šã¾ã™ã€‚ ã¾ãŸã€å®£è¨€ãŒåŒã˜ã‚¹ã‚³ãƒ¼ãƒ—ã«ã‚ã‚‹å ´åˆã¯æ¨™æº–制約é•åã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ ãŸã ã—ã€ä¸€æ–¹ãŒã‚‚ã†ä¸€æ–¹ã®å†…å´ã®ã‚¹ã‚³ãƒ¼ãƒ—ã§å®£è¨€ã•れる場åˆã¯å•題ã‚りã¾ã›ã‚“。

6.657.3 サンプルコード

extern int func(void);

void func(void) /* W0788 */
{
    typedef int num;
    double num; /* W0788 */
}

6.657.4 関連メッセージ

  • W0787 `%s' ã®åž‹ãŒã€ä»¥å‰ã®ç•°ãªã‚‹ã‚¹ã‚³ãƒ¼ãƒ—ã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚
  • W0789 `%s' ã®åž‹ãŒã€ä»¥å‰ã®ã‚ˆã‚Šåºƒã„スコープã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.657.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W0788, Up: Messages

6.658 W0789

6.658.1 メッセージ本文

`%s' ã®åž‹ãŒã€ä»¥å‰ã®ã‚ˆã‚Šåºƒã„スコープã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.658.2 内容

宣言ãŒç•°ãªã‚‹ã‚¹ã‚³ãƒ¼ãƒ—ã«ã‚ã‚‹å ´åˆã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã«ãªã‚Šã¾ã™ã€‚ ã¾ãŸã€å®£è¨€ãŒåŒã˜ã‚¹ã‚³ãƒ¼ãƒ—ã«ã‚ã‚‹å ´åˆã¯æ¨™æº–制約é•åã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ ãŸã ã—ã€ä¸€æ–¹ãŒã‚‚ã†ä¸€æ–¹ã®å†…å´ã®ã‚¹ã‚³ãƒ¼ãƒ—ã§å®£è¨€ã•れる場åˆã¯å•題ã‚りã¾ã›ã‚“。

6.658.3 サンプルコード

int num = 0;
extern int func1(void);

void func2(void)
{
    extern double num; /* W0789 */
    extern void func1(void); /* W0789 */
}

6.658.4 関連メッセージ

  • W0788 `%s' ã®åž‹ãŒã€ä»¥å‰ã®åŒã˜ã‚¹ã‚³ãƒ¼ãƒ—内ã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚
  • W0789 `%s' ã®åž‹ãŒã€ä»¥å‰ã®ã‚ˆã‚Šåºƒã„スコープã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚

6.658.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W0789, Up: Messages

6.659 W0790

6.659.1 メッセージ本文

グローãƒãƒ«ãªã‚ªãƒ–ジェクトã¾ãŸã¯é–¢æ•° `%s' ãŒäºŒå›žä»¥ä¸Šå®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.659.2 内容

文法上ã®èª¤ã‚Šã§ã¯ã‚りã¾ã›ã‚“ã®ã§ã€é‡è¤‡å®šç¾©ãã®ã‚‚ã®ãŒåŽŸå› ã§äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™ã“ã¨ã¯ã‚りã¾ã›ã‚“。 ã—ã‹ã—ã€åŒã˜è­˜åˆ¥å­ã§è¤‡æ•°å›žå®šç¾©ã™ã‚‹ã“ã¨ã¯ç„¡é§„ãªå‡¦ç†ã¨è¨€ãˆã¾ã™ã€‚ ç„¡é§„ãªã‚‚ã®ã¯ã€ãƒ¡ãƒ¢ãƒªè³‡æºã‚’消費ã™ã‚‹ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®å¯èª­æ€§ã‚’低下ã•ã›ã‚‹ã€ãªã©ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚

6.659.3 サンプルコード

int func(void)
{
    return 0;
}

int a = 0;

int func(void) /* W0790 */
{
    return 1;
}

int a = 1; /* W0790 */

6.659.4 関連メッセージ

  • W0791 グローãƒãƒ«ãªã‚ªãƒ–ジェクトã¾ãŸã¯é–¢æ•° `%s' ãŒäºŒå›žä»¥ä¸Šå®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.659.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0790, Up: Messages

6.660 W0791

6.660.1 メッセージ本文

グローãƒãƒ«ãªã‚ªãƒ–ジェクトã¾ãŸã¯é–¢æ•° `%s' ãŒäºŒå›žä»¥ä¸Šå®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.660.2 内容

文法上ã®èª¤ã‚Šã§ã¯ã‚りã¾ã›ã‚“ã®ã§ã€é‡è¤‡å®šç¾©ãã®ã‚‚ã®ãŒåŽŸå› ã§äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™ã“ã¨ã¯ã‚りã¾ã›ã‚“。 ã—ã‹ã—ã€åŒã˜è­˜åˆ¥å­ã§è¤‡æ•°å›žå®šç¾©ã™ã‚‹ã“ã¨ã¯ç„¡é§„ãªå‡¦ç†ã¨è¨€ãˆã¾ã™ã€‚ ç„¡é§„ãªã‚‚ã®ã¯ã€ãƒ¡ãƒ¢ãƒªè³‡æºã‚’消費ã™ã‚‹ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®å¯èª­æ€§ã‚’低下ã•ã›ã‚‹ã€ãªã©ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚

6.660.3 サンプルコード

test1.c

int func(void) /* W0791 */
{
    return 0;
}

int a = 0; /* W0791 */

test2.c

int func(void) /* W0791 */
{
    return 1;
}

int a = 1; /* W0791 */

6.660.4 関連メッセージ

  • W0790 グローãƒãƒ«ãªã‚ªãƒ–ジェクトã¾ãŸã¯é–¢æ•° `%s' ãŒäºŒå›žä»¥ä¸Šå®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.660.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0791, Up: Messages

6.661 W0792

6.661.1 メッセージ本文

æµ®å‹•å°æ•°ç‚¹æ•°åž‹ã‚’関数ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚

6.661.2 内容

関数ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã€ã¾ãŸã¯ãã®é€†ã®ã‚­ãƒ£ã‚¹ãƒˆã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.661.3 サンプルコード

int (*foo(const float f))(void)
{
    return (int (*)(void)) f; /* W0792 */
}

6.661.4 関連メッセージ

ãªã—。

6.661.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W0792, Up: Messages

6.662 W0793

6.662.1 メッセージ本文

関数ãƒã‚¤ãƒ³ã‚¿ã‚’オブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚

6.662.2 内容

オブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã€ã¾ãŸã¯ãã®é€†ã®é»„ã‚„ã‚¹ãƒˆã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.662.3 サンプルコード

typedef int (*funptr_t)(void);

funptr_t foo(float *p)
{
    return (funptr_t) p; /* W0793 */
}

6.662.4 関連メッセージ

ãªã—。

6.662.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W0793, Up: Messages

6.663 W0794

6.663.1 メッセージ本文

符å·ä»˜ãã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã‚’左シフト演算ã—ã¦ã„ã¾ã™ã€‚

6.663.2 内容

æ•´æ•°ã®è² ã®å€¤ã‚’ã©ã®ã‚ˆã†ã«è¡¨ç¾ã™ã‚‹ã‹ã¯è¦æ ¼ã§å®šç¾©ã•れã¦ã„ã‚‹ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ç¬¦å·ä»˜ãåž‹ã®å€¤ã«å¯¾ã—ã¦å·¦ã‚·ãƒ•ト演算をã—ãŸçµæžœã¯ã€ã‚³ãƒ³ãƒ‘イラã«ä¾å­˜ã™ã‚‹ã“ã¨ã«ãªã‚Šã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.663.3 サンプルコード

int func(int i)
{
    return i << 1; /* W0794 */
}

6.663.4 関連メッセージ

ãªã—。

6.663.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W0794, Up: Messages

6.664 W0795

6.664.1 メッセージ本文

関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚å°‘ãªã„ã§ã™ã€‚

6.664.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€è¨€èªžåˆ¶ç´„é•åã«ãªã‚Šã¾ã™ã®ã§ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ ã¾ãŸã€ã‚¹ã‚¿ãƒƒã‚¯ã‚’破壊ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚å±é™ºã§ã™ã€‚

6.664.3 サンプルコード

extern void foo(int, int, int);

static void bar(void)
{
    foo(1, 2); /* W0795 */
}

6.664.4 関連メッセージ

  • W0796 関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚多ã„ã§ã™ã€‚
  • W0797 関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°å®šç¾©ã«ãŠã‘ã‚‹ä»®å¼•æ•°ã®æ•°ã¨ã¯ç•°ãªã‚Šã¾ã™ã€‚

6.664.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0795, Up: Messages

6.665 W0796

6.665.1 メッセージ本文

関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚多ã„ã§ã™ã€‚

6.665.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€è¨€èªžåˆ¶ç´„é•åã«ãªã‚Šã¾ã™ã®ã§ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ ã¾ãŸã€ã‚¹ã‚¿ãƒƒã‚¯ã‚’破壊ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚å±é™ºã§ã™ã€‚

6.665.3 サンプルコード

extern void foo(int, int);

static void bar(void)
{
    foo(1, 2, 3); /* W0796 */
}

6.665.4 関連メッセージ

  • W0795 関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚å°‘ãªã„ã§ã™ã€‚
  • W0797 関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°å®šç¾©ã«ãŠã‘ã‚‹ä»®å¼•æ•°ã®æ•°ã¨ã¯ç•°ãªã‚Šã¾ã™ã€‚

6.665.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0796, Up: Messages

6.666 W0797

6.666.1 メッセージ本文

関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°å®šç¾©ã«ãŠã‘ã‚‹ä»®å¼•æ•°ã®æ•°ã¨ã¯ç•°ãªã‚Šã¾ã™ã€‚

6.666.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€è¨€èªžåˆ¶ç´„é•åã«ãªã‚Šã¾ã™ã®ã§ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ ã¾ãŸã€ã‚¹ã‚¿ãƒƒã‚¯ã‚’破壊ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚å±é™ºã§ã™ã€‚

6.666.3 サンプルコード

static int foo(int, int);

static int bar(void)
{
    int a = foo(1); /* W0795 */
    int b = foo(1, 2);
    int c = foo(1, 2, 3); /* W0795 */
}

static int foo(int a, int b)
{
    return a + b;
}

6.666.4 関連メッセージ

  • W0795 関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚å°‘ãªã„ã§ã™ã€‚
  • W0796 関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚多ã„ã§ã™ã€‚

6.666.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0797, Up: Messages

6.667 W0798

6.667.1 メッセージ本文

ä¸å®Œå…¨ãªå…±ç”¨ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。

6.667.2 内容

オブジェクトã®å€¤ãŒå¿…è¦ãªæ–‡è„ˆã§ã€ä¸å®Œå…¨åž‹ã‚’ã‚‚ã¤å·¦è¾ºå€¤ã‚’用ã„るよã†ãªå¼ã¯ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.667.3 サンプルコード

extern union UN *p;

void func(void)
{
    int i = 0;

    if (p) {
        i = p->i; /* W0798 */
    }
}

6.667.4 関連メッセージ

  • W0799 ä¸å®Œå…¨ãªæ§‹é€ ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。
  • W0800 `%s' ã¯çµåˆã‚’ã‚‚ãŸãªã„ä¸å®Œå…¨åž‹ã§ã™ã€‚ã“ã‚Œã¯æœªå®šç¾©ã§ã™ã€‚

6.667.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0798, Up: Messages

6.668 W0799

6.668.1 メッセージ本文

ä¸å®Œå…¨ãªæ§‹é€ ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。

6.668.2 内容

オブジェクトã®å€¤ãŒå¿…è¦ãªæ–‡è„ˆã§ã€ä¸å®Œå…¨åž‹ã‚’ã‚‚ã¤å·¦è¾ºå€¤ã‚’用ã„るよã†ãªå¼ã¯ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.668.3 サンプルコード

extern struct ST *p;

void func(void)
{
    int i = 0;

    if (p) {
        i = p->i; /* W0799 */
    }
}

6.668.4 関連メッセージ

  • W0798 ä¸å®Œå…¨ãªå…±ç”¨ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。
  • W0800 `%s' ã¯çµåˆã‚’ã‚‚ãŸãªã„ä¸å®Œå…¨åž‹ã§ã™ã€‚ã“ã‚Œã¯æœªå®šç¾©ã§ã™ã€‚

6.668.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0799, Up: Messages

6.669 W0800

6.669.1 メッセージ本文

`%s' ã¯çµåˆã‚’ã‚‚ãŸãªã„ä¸å®Œå…¨åž‹ã§ã™ã€‚ã“ã‚Œã¯æœªå®šç¾©ã§ã™ã€‚

6.669.2 内容

オブジェクトã®å€¤ãŒå¿…è¦ãªæ–‡è„ˆã§ã€ä¸å®Œå…¨åž‹ã‚’ã‚‚ã¤å·¦è¾ºå€¤ã‚’用ã„るよã†ãªå¼ã¯ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.669.3 サンプルコード

int a[]; /* W0800 */
struct ST s = { 0 }; /* W0800 */

6.669.4 関連メッセージ

  • W0798 ä¸å®Œå…¨ãªå…±ç”¨ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。
  • W0799 ä¸å®Œå…¨ãªæ§‹é€ ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。

6.669.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0800, Up: Messages

6.670 W0801

6.670.1 メッセージ本文

ã“ã®æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã«ã¯åå‰ä»˜ãã®ãƒ¡ãƒ³ãƒãŒã‚りã¾ã›ã‚“。

6.670.2 内容

åå‰ä»˜ãã®ãƒ¡ãƒ³ãƒã‚’一ã¤ã‚‚æŒãŸãªã„構造体ã¾ãŸã¯å…±ç”¨ä½“を使用ã—ãŸã¨ãã®å‹•ä½œã¯æœªå®šç¾©ã§ã™ã€‚ 従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.670.3 サンプルコード

struct foo { /* W0801 */
};

struct bar { /* W0801 */
    int;
    int :1;
    long;
    double;
};

6.670.4 関連メッセージ

ãªã—。

6.670.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0801, Up: Messages

6.671 W0802

6.671.1 メッセージ本文

`#include' å‰å‡¦ç†æŒ‡ä»¤ã®å¾ŒãŒã€<ファイルå> ã‚ã‚‹ã„㯠"ファイルå" å½¢å¼ã®ã©ã¡ã‚‰ã§ã‚‚ã‚りã¾ã›ã‚“。

6.671.2 内容

ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚

#include <ファイルå> ã¾ãŸã¯ #include "ファイルå" 以外ã®å½¢å¼ã§è¨˜è¿°ã•れã¦ã„ã‚‹ #include æ–‡ã®å‹•ä½œã¯æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚"

6.671.3 サンプルコード

#include fruits.h /* W0802 */

#define MACRO 1
#include MACRO /* W0802 */

6.671.4 関連メッセージ

ãªã—。

6.671.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

2.0.0 以é™ã®äºˆå®š


Next: , Previous: W0802, Up: Messages

6.672 W0803

6.672.1 メッセージ本文

関数形å¼ãƒžã‚¯ãƒ­ã®å®Ÿå¼•æ•°ã®ä¸­ã«ã€å‰å‡¦ç†æŒ‡ä»¤ãŒè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.672.2 内容

ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.672.3 サンプルコード

/* 追記予定 */

6.672.4 関連メッセージ

ãªã—。

6.672.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

2.0.0 以é™ã®äºˆå®š


Next: , Previous: W0803, Up: Messages

6.673 W0804

6.673.1 メッセージ本文

defined æ§‹æ–‡ãŒã€`defined(識別å­)' ã‚ã‚‹ã„㯠`defined 識別å­' ã®ã©ã¡ã‚‰ã§ã‚‚ã‚りã¾ã›ã‚“。

6.673.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.673.3 サンプルコード

#if defined "MACRO" /* W0804 */
#endif

6.673.4 関連メッセージ

  • W0805 `defined' ã«ã€å®Ÿå¼•æ•°ã¨ãªã‚‹è­˜åˆ¥å­ãŒã‚りã¾ã›ã‚“。

6.673.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0804, Up: Messages

6.674 W0805

6.674.1 メッセージ本文

`defined' ã«ã€å®Ÿå¼•æ•°ã¨ãªã‚‹è­˜åˆ¥å­ãŒã‚りã¾ã›ã‚“。

6.674.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.674.3 サンプルコード

#if defined "foo" /* W0805 */
int i = 0;
#endif

6.674.4 関連メッセージ

  • W0804 defined æ§‹æ–‡ãŒã€`defined(識別å­)' ã‚ã‚‹ã„㯠`defined 識別å­' ã®ã©ã¡ã‚‰ã§ã‚‚ã‚りã¾ã›ã‚“。

6.674.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.16.0


Next: , Previous: W0805, Up: Messages

6.675 W0806

6.675.1 メッセージ本文

`defined' ã¨ã„ã†åç§°ã®ãƒžã‚¯ãƒ­ã‚’定義ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚

6.675.2 内容

ISO C90 ã§è¦å®šã•れã¦ã„る予約語を定義ã€å†å®šç¾©ã€å®šç¾©è§£æ¶ˆã™ã‚‹ã“ã¨ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ã‚りã¾ã™ã€‚

6.675.3 サンプルコード

#define defined !defined /* W0806 */

6.675.4 関連メッセージ

  • W0807 事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' を削除ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚
  • W0808 事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' ã‚’å†å®šç¾©ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚

6.675.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W0806, Up: Messages

6.676 W0807

6.676.1 メッセージ本文

事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' を削除ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚

6.676.2 内容

ISO C90 ã§è¦å®šã•れã¦ã„る予約語を定義ã€å†å®šç¾©ã€å®šç¾©è§£æ¶ˆã™ã‚‹ã“ã¨ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ã‚りã¾ã™ã€‚

6.676.3 サンプルコード

#undef __STDC_VERSION__ /* W0807 */

6.676.4 関連メッセージ

  • W0806 `defined' ã¨ã„ã†åç§°ã®ãƒžã‚¯ãƒ­ã‚’定義ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚
  • W0808 事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' ã‚’å†å®šç¾©ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚

6.676.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W0807, Up: Messages

6.677 W0808

6.677.1 メッセージ本文

事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' ã‚’å†å®šç¾©ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚

6.677.2 内容

ISO C90 ã§è¦å®šã•れã¦ã„る予約語を定義ã€å†å®šç¾©ã€å®šç¾©è§£æ¶ˆã™ã‚‹ã“ã¨ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ã‚りã¾ã™ã€‚

6.677.3 サンプルコード

#define __FILE__ "test.c" /* W0808 */

6.677.4 関連メッセージ

  • W0806 `defined' ã¨ã„ã†åç§°ã®ãƒžã‚¯ãƒ­ã‚’定義ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚
  • W0807 事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' を削除ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚

6.677.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W0808, Up: Messages

6.678 W0809

6.678.1 メッセージ本文

è­˜åˆ¥å­ `%s' ã¯ãƒ©ã‚¤ãƒ–ラリã§äºˆç´„済ã¿ã§ã™ã€‚

6.678.2 内容

ISO C90 ã§è¦å®šã•れã¦ã„る予約語をå†ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ã‚りã¾ã™ã€‚

6.678.3 サンプルコード

extern int __value; /* W0809 */
int _VAL = 10; /* W0809 */
static void _func(void); /* W0809 */

6.678.4 関連メッセージ

ãªã—。

6.678.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W0809, Up: Messages

6.679 W0810

6.679.1 メッセージ本文

ã“ã® `if-if-else' æ–‡ã®æ§‹é€ ã‚’より明確ã«ã™ã‚‹ãŸã‚ã«ã¯ `{}' ãŒå¿…è¦ã§ã™ã€‚

6.679.2 内容

サンプルコードã®ã‚ˆã†ãªã‚³ãƒ¼ãƒ‰ã§ã¯ã€else ãŒã©ã¡ã‚‰ã® if ã«å¯¾å¿œã™ã‚‹ã®ã‹ãŒä¸æ˜Žç¢ºã§ã™ã€‚ ã¾ãŸã€æœ¬ä½“ãŒå˜ä¸€æ–‡ã§æ¸ˆã¾ãªããªã£ãŸã¨ãã«ã€æ³¢æ‹¬å¼§ã‚’ã¤ã‘忘れるリスクもã‚りã¾ã™ã€‚

6.679.3 サンプルコード

int foo(int i, int j) {
    if (i < 0) /* W0810 */
        if (j > 0) {
            return 0;
        }
    else {
        return 1;
    }

    if (i > 0) /* W0810 */
        if (j < 0) {
            return 2;
        }
        else {
            return 3;
        }

    return 4;
}

6.679.4 関連メッセージ

ãªã—。

6.679.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0810, Up: Messages

6.680 W0811

6.680.1 メッセージ本文

ã“ã®ãƒžã‚¯ãƒ­ã®å±•é–‹çµæžœã®ã€`defined' トークンã¯ã€è¨±å®¹ã•れã¾ã›ã‚“。

6.680.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.680.3 サンプルコード

#define COND defined(FOO)

#if COND /* W0811 */
int i = 0;
#endif

6.680.4 関連メッセージ

ãªã—。

6.680.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.16.0


Next: , Previous: W0811, Up: Messages

6.681 W0827

6.681.1 メッセージ本文

ãƒã‚¹ãƒˆã•ã‚ŒãŸæ§‹é€ ä½“ã®åˆæœŸå€¤ã®å„è¦ç´ ãŒ `{}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。

6.681.2 内容

構造体を 0 以外ã§åˆæœŸåŒ–ã™ã‚‹å ´åˆã¯ã€æ§‹é€ ã‚’示ã—ã€åˆæœŸåŒ–å­ã¯æ³¢æ‹¬å¼§ "{}" ã§å›²ã¾ãªã‘れã°ãªã‚Šã¾ã›ã‚“。

6.681.3 サンプルコード

struct ST {
    int i;
    int j;
};

struct ST a[2] = { 10, 20, 30, 40 }; /* W0827 */

6.681.4 関連メッセージ

  • W0828 ãƒã‚¹ãƒˆã•れãŸé…列ã®åˆæœŸå€¤ã®å„è¦ç´ ãŒ `{}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。

6.681.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0827, Up: Messages

6.682 W0828

6.682.1 メッセージ本文

ãƒã‚¹ãƒˆã•れãŸé…列ã®åˆæœŸå€¤ã®å„è¦ç´ ãŒ `{}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。

6.682.2 内容

é…列を 0 以外ã§åˆæœŸåŒ–ã™ã‚‹å ´åˆã¯ã€æ§‹é€ ã‚’示ã—ã€åˆæœŸåŒ–å­ã¯æ³¢æ‹¬å¼§ "{}" ã§å›²ã¾ãªã‘れã°ãªã‚Šã¾ã›ã‚“。

6.682.3 サンプルコード

int a[3][2] = { {1, 2}, {3, 4}, {5, 6} };
int b[3][2] = { 1, 2, 3, 4, 5, 6 }; /* W0828 */

6.682.4 関連メッセージ

  • W0827 ãƒã‚¹ãƒˆã•ã‚ŒãŸæ§‹é€ ä½“ã®åˆæœŸå€¤ã®å„è¦ç´ ãŒ `{}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。

6.682.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0828, Up: Messages

6.683 W0830

6.683.1 メッセージ本文

列挙å­ä¸¦ã³ã®æœ«å°¾ã«ã‚«ãƒ³ãƒž `,' ãŒã‚りã¾ã™ã€‚

6.683.2 内容

ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€è¨€èªžæ‹¡å¼µã«è©²å½“ã™ã‚‹ãŸã‚ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.683.3 サンプルコード

enum Color { Red, Green, Blue, }; /* W0830 */

6.683.4 関連メッセージ

ãªã—。

6.683.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W0830, Up: Messages

6.684 W0831

6.684.1 メッセージ本文

ã“れã¯ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ã‚¢ã‚»ãƒ³ãƒ–リ用ã®è¨€èªžæ‹¡å¼µã§ã™ã€‚#asm 㨠#endasm ã®é–“ã¯ç„¡è¦–ã—ã¾ã™ã€‚

6.684.2 内容

インライン・アセンブラ構文ã¯ã€è¨€èªžæ‹¡å¼µã«è©²å½“ã™ã‚‹ãŸã‚ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.684.3 サンプルコード

/* 追記予定 */

6.684.4 関連メッセージ

  • W0832 インラインアセンブリ構文を使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ã“ã®ã‚³ãƒ¼ãƒ‰ã¯ç„¡è¦–ã—ã¾ã™ã€‚

6.684.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0831, Up: Messages

6.685 W0832

6.685.1 メッセージ本文

インラインアセンブリ構文を使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ã“ã®ã‚³ãƒ¼ãƒ‰ã¯ç„¡è¦–ã—ã¾ã™ã€‚

6.685.2 内容

インライン・アセンブラ構文ã¯ã€è¨€èªžæ‹¡å¼µã«è©²å½“ã™ã‚‹ãŸã‚ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.685.3 サンプルコード

#define ASM_CODE asm("movl %ecx, %eax")

void foo(int arg1, int *arg2, int arg3)
{
    asm("movl %ecx, %eax"); /* W0832 */
    __asm__("movl %ecx, (%eax)"); /* W0832 */

    asm { /* W0832 */
        xorl eax, eax
    }

    ASM_CODE; /* W0832 */

    __asm__ volatile ( /* W0832 */
            "int $0x80"
            : "=a" (r)
              "+b" (arg1),
              "+c" (arg2),
              "+d" (arg3)
            : "a" (128)
            : "memory", "cc");
}

6.685.4 関連メッセージ

  • W0831 ã“れã¯ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ã‚¢ã‚»ãƒ³ãƒ–リ用ã®è¨€èªžæ‹¡å¼µã§ã™ã€‚#asm 㨠#endasm ã®é–“ã¯ç„¡è¦–ã—ã¾ã™ã€‚

6.685.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.8.0


Next: , Previous: W0832, Up: Messages

6.686 W0833

6.686.1 メッセージ本文

接尾語 LL を使ã£ã¦ã„ã¾ã™ã€‚

6.686.2 内容

接尾語 LL ã¯ã€è¨€èªžæ‹¡å¼µã«è©²å½“ã™ã‚‹ãŸã‚ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.686.3 サンプルコード

long long ll = 123LL; /* W0833 */

6.686.4 関連メッセージ

  • W0834 long long 型を使ã£ã¦ã„ã¾ã™ã€‚

6.686.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W0833, Up: Messages

6.687 W0834

6.687.1 メッセージ本文

long long 型を使ã£ã¦ã„ã¾ã™ã€‚

6.687.2 内容

long long åž‹ã¯ã€è¨€èªžæ‹¡å¼µã«è©²å½“ã™ã‚‹ãŸã‚ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.687.3 サンプルコード

extern long long ll; /* W0834 */

6.687.4 関連メッセージ

  • W0833 接尾語 LL を使ã£ã¦ã„ã¾ã™ã€‚

6.687.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W0834, Up: Messages

6.688 W0835

6.688.1 メッセージ本文

å¯å¤‰å¼•æ•°ã‚’å—ã‘å–るマクロãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.688.2 内容

ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚

å¯å¤‰å€‹å¼•数マクロã®å®šç¾©ã¯ã€è¨€èªžæ‹¡å¼µã«è©²å½“ã™ã‚‹ãŸã‚ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚

6.688.3 サンプルコード

/* 追記予定 */

6.688.4 関連メッセージ

ãªã—。

6.688.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

2.0.0 以é™ã®äºˆå®š


Next: , Previous: W0835, Up: Messages

6.689 W0947

6.689.1 メッセージ本文

文字列リテラルãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.689.2 内容

リテラルãŒä½•を表ã—ã¦ã„ã‚‹ã®ã‹åˆ†ã‹ã‚Šé›£ãã€ä¿å®ˆæ€§ã«æ‚ªå½±éŸ¿ã‚’åŠã¼ã—ã¾ã™ã€‚

6.689.3 サンプルコード

func("Apple, Banana, Chocolate"); /* W0947 */

6.689.4 関連メッセージ

  • W0948 文字定数 %s ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0949 ビットフィールドã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0950 é…列ã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.689.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0947, Up: Messages

6.690 W0948

6.690.1 メッセージ本文

文字定数 %s ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.690.2 内容

リテラルãŒä½•を表ã—ã¦ã„ã‚‹ã®ã‹åˆ†ã‹ã‚Šé›£ãã€ä¿å®ˆæ€§ã«æ‚ªå½±éŸ¿ã‚’åŠã¼ã—ã¾ã™ã€‚

6.690.3 サンプルコード

func('a'); /* W0948 */

6.690.4 関連メッセージ

  • W0947 文字列リテラルãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0949 ビットフィールドã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0950 é…列ã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.690.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0948, Up: Messages

6.691 W0949

6.691.1 メッセージ本文

ビットフィールドã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.691.2 内容

リテラルãŒä½•を表ã—ã¦ã„ã‚‹ã®ã‹åˆ†ã‹ã‚Šé›£ãã€ä¿å®ˆæ€§ã«æ‚ªå½±éŸ¿ã‚’åŠã¼ã—ã¾ã™ã€‚

6.691.3 サンプルコード

struct ST {
    unsigned int a:1;
    unsigned int a:2; /* W0949 */
    unsigned int a:3; /* W0949 */
};

6.691.4 関連メッセージ

  • W0947 文字列リテラルãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0948 文字定数 %s ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0950 é…列ã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.691.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0949, Up: Messages

6.692 W0950

6.692.1 メッセージ本文

é…列ã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.692.2 内容

リテラルãŒä½•を表ã—ã¦ã„ã‚‹ã®ã‹åˆ†ã‹ã‚Šé›£ãã€ä¿å®ˆæ€§ã«æ‚ªå½±éŸ¿ã‚’åŠã¼ã—ã¾ã™ã€‚

6.692.3 サンプルコード

int a[10]; /* W0950 */

6.692.4 関連メッセージ

  • W0947 文字列リテラルãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0948 文字定数 %s ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W0949 ビットフィールドã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.692.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W0950, Up: Messages

6.693 W1026

6.693.1 メッセージ本文

%s 番目ã®å®Ÿå¼•æ•°ãŒã‚ªãƒ–ジェクト型ã§ã¯ã‚りã¾ã›ã‚“。

6.693.2 内容

ä¸å®Œå…¨åž‹ã®æ§‹é€ ä½“ã‚„é…列を仮引数ã«ã—ã¦ã„ã¾ã™ã€‚関数ã®å…¨ã¦ã®ä»®å¼•æ•°ã¯ã‚ªãƒ–ジェクト型ã®å¼ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚

6.693.3 サンプルコード

extern struct st s;
extern void foo(struct st);

void bar(void)
{
    foo(s); /* W1026 */
}

6.693.4 関連メッセージ

ãªã—。

6.693.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W1026, Up: Messages

6.694 W1027

6.694.1 メッセージ本文

é…列ã®åŸºæœ¬åž‹ãŒé–¢æ•°åž‹ã§ã™ã€‚ã“ã‚Œã¯æ„味ãŒã‚りã¾ã›ã‚“。

6.694.2 内容

関数ã®é…列ãŒå­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚

6.694.3 サンプルコード

int (fun_tbl[20])(void); /* W1027 */

6.694.4 関連メッセージ

  • W1028 é…列ã®åŸºæœ¬åž‹ãŒã‚µã‚¤ã‚ºä¸æ˜Žã®é…列ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。
  • W1029 é…列ã®åŸºæœ¬åž‹ãŒå†…容䏿˜Žã®æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。

6.694.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W1027, Up: Messages

6.695 W1028

6.695.1 メッセージ本文

é…列ã®åŸºæœ¬åž‹ãŒã‚µã‚¤ã‚ºä¸æ˜Žã®é…列ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。

6.695.2 内容

ã“ã®é…列ã¯ä¸å®Œå…¨åž‹ã§å®šç¾©ã•れã¦ã„ã¾ã™ã€‚ã“れã¯èª¤ã‚Šã§ã™ã€‚

6.695.3 サンプルコード

int a[4][]; /* W1028 */

6.695.4 関連メッセージ

  • W1027 é…列ã®åŸºæœ¬åž‹ãŒé–¢æ•°åž‹ã§ã™ã€‚ã“ã‚Œã¯æ„味ãŒã‚りã¾ã›ã‚“。
  • W1029 é…列ã®åŸºæœ¬åž‹ãŒå†…容䏿˜Žã®æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。

6.695.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W1028, Up: Messages

6.696 W1029

6.696.1 メッセージ本文

é…列ã®åŸºæœ¬åž‹ãŒå†…容䏿˜Žã®æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。

6.696.2 内容

ã“ã®é…列ã¯ã€ä¸å®Œå…¨ãªè¦ç´ ã‚’æŒã¤æ§‹é€ ä½“ã¾ãŸã¯å…±ç”¨ä½“ã‚’åž‹ã¨ã—ã¦å®šç¾©ã—ã¦ã„ã¾ã™ã€‚

6.696.3 サンプルコード

struct ST a[5]; /* W1029 */

6.696.4 関連メッセージ

  • W1027 é…列ã®åŸºæœ¬åž‹ãŒé–¢æ•°åž‹ã§ã™ã€‚ã“ã‚Œã¯æ„味ãŒã‚りã¾ã›ã‚“。
  • W1028 é…列ã®åŸºæœ¬åž‹ãŒã‚µã‚¤ã‚ºä¸æ˜Žã®é…列ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。

6.696.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W1029, Up: Messages

6.697 W1030

6.697.1 メッセージ本文

ラベル `%s' ãŒã“ã®é–¢æ•°ã®ä¸­ã§äºŒå›žä»¥ä¸Šä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.697.2 内容

åŒã˜åå‰ã®ãƒ©ãƒ™ãƒ«ãŒã€é–¢æ•°å†…ã§ 2 回以上使ã‚れã¦ã„ã¾ã™ã€‚ã“ã®ã‚ˆã†ãªä½¿ã„æ–¹ã¯èª¤ã‚Šã§ã™ã€‚

6.697.3 サンプルコード

void func(int a, int b)
{
    if (a == 0) {
        int c = 0;
RETRY:
        b = 10;
    }

    if (b != 0) {
        goto RETRY;
    }
RETRY: /* W1030 */
    b = 1;

    ...snip...
}

6.697.4 関連メッセージ

ãªã—。

6.697.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W1030, Up: Messages

6.698 W1031

6.698.1 メッセージ本文

オブジェクト `%s' ã¯ã€å¤–部çµåˆã¨å†…部çµåˆã®ä¸¡æ–¹ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ãã®å‹•ä½œã¯æœªå®šç¾©ã§ã™ã€‚

6.698.2 内容

åŒã˜åå‰ã®å¤‰æ•°ãŒ 2 回以上定義ã•れã¦ã„ã¦ã€ãã® 1 ã¤ã«ã¯ static 宣言ãŒã¤ã„ã¦ã„ã¾ã™ã€‚ã“ã®ã‚ˆã†ãªä½¿ã„æ–¹ã¯èª¤ã‚Šã§ã™ã€‚

6.698.3 サンプルコード

test.h

extern int a;

test.c

#include "test.h"

static int a; /* W1031 */

6.698.4 関連メッセージ

ãªã—。

6.698.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W1031, Up: Messages

6.699 W1032

6.699.1 メッセージ本文

内部çµåˆã‚’ã‚‚ã¤å¤‰æ•° '%s' ã®ä»®å®šç¾©ã¯ã€ä¸å®Œå…¨åž‹ã§ã¯ã„ã‘ã¾ã›ã‚“。

6.699.2 内容

内部çµåˆã‚’æŒã¤ã‚ªãƒ–ジェクトã®ä»®å®šç¾©ã§ã®ã†ã¡ã€å¾Œã§ç¤ºã•れãŸã»ã†ã«ã«æ˜Žç¤ºçš„ãªå®šç¾©ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。ã“ã®ã‚ˆã†ãªä½¿ã„æ–¹ã¯èª¤ã‚Šã§ã™ã€‚

6.699.3 サンプルコード

static struct ST a[3]; /* W1032 */

6.699.4 関連メッセージ

ãªã—。

6.699.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W1032, Up: Messages

6.700 W1033

6.700.1 メッセージ本文

é–¢æ•°ã®æˆ»ã‚Šå€¤ã®åž‹ã« volatile ã‚ã‚‹ã„㯠const 修飾å­ã‚’使ã£ã¦ã„ã¾ã™ã€‚ãã®å‹•ä½œã¯æœªå®šç¾©ã§ã™ã€‚

6.700.2 内容

é–¢æ•°ã®æˆ»ã‚Šå€¤ã®åž‹ãŒã€volatile åž‹ã®å ´åˆã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€const åž‹ã®å ´åˆã¯æœªå®šç¾©ã§ã™ã€‚

6.700.3 サンプルコード

extern const int func1(int); /* W1033 */

const int func2(int i) /* W1033 */
{
    return i + 1;
}

const int *func3(int i) /* OK */
{
    static int j;

    j = i;
    return &j;
}

6.700.4 関連メッセージ

ãªã—。

6.700.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W1033, Up: Messages

6.701 W1034

6.701.1 メッセージ本文

ブロックスコープã§ã€é–¢æ•° `%s()' ã« static 記憶域クラス指定å­ã‚’使ã£ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ã“ã®ç”¨æ³•ã¯æ„味ãŒã‚りã¾ã›ã‚“。

6.701.2 内容

static ãªé–¢æ•°ãŒãƒ–ロックスコープ内ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ 関数宣言ã¯ãƒ–ロック・スコープã®å ´åˆ static を使用ã§ãã¾ã›ã‚“。

6.701.3 サンプルコード

int func(void)
{
    static int func1(void); /* W1034 */
    extern int func2(void);
}

6.701.4 関連メッセージ

ãªã—。

6.701.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W1034, Up: Messages

6.702 W1035

6.702.1 メッセージ本文

`%s' 㯠typedef ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚明示的ãªåž‹æŒ‡å®šå­ã‚’使ã‚ãšã«ã€ã‚ˆã‚Šå†…å´ã®ã‚¹ã‚³ãƒ¼ãƒ—ã§å†å®£è¨€ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。

6.702.2 内容

ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚

typedef ã®å†å®šç¾©ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚

6.702.3 サンプルコード

/* 追記予定 */

6.702.4 関連メッセージ

  • W1036 `%s' 㯠typedef ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚明示的ãªåž‹æŒ‡å®šå­ã‚’使ã‚ãšã«ã€æ§‹é€ ä½“ã¾ãŸã¯å…±ç”¨ä½“ã®ãƒ¡ãƒ³ãƒã¨ã—ã¦å†å®£è¨€ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。

6.702.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

2.0.0 以é™ã®äºˆå®š


Next: , Previous: W1035, Up: Messages

6.703 W1036

6.703.1 メッセージ本文

`%s' 㯠typedef ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚明示的ãªåž‹æŒ‡å®šå­ã‚’使ã‚ãšã«ã€æ§‹é€ ä½“ã¾ãŸã¯å…±ç”¨ä½“ã®ãƒ¡ãƒ³ãƒã¨ã—ã¦å†å®£è¨€ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。

6.703.2 内容

ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚

typedef ã®å†å®šç¾©ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚

6.703.3 サンプルコード

/* 追記予定 */

6.703.4 関連メッセージ

  • W1035 `%s' 㯠typedef ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚明示的ãªåž‹æŒ‡å®šå­ã‚’使ã‚ãšã«ã€ã‚ˆã‚Šå†…å´ã®ã‚¹ã‚³ãƒ¼ãƒ—ã§å†å®£è¨€ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。

6.703.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

2.0.0 以é™ã®äºˆå®š


Next: , Previous: W1036, Up: Messages

6.704 W1037

6.704.1 メッセージ本文

外部çµåˆã‚’も㤠`%s' ãŒã€äºŒã¤ä»¥ä¸Šå®£è¨€ã•れã¦ã„ã¾ã™ãŒäº’æ›æ€§ãŒã‚りã¾ã›ã‚“。

6.704.2 内容

外部çµåˆã‚’æŒã¤åŒä¸€ã®è­˜åˆ¥å­ã‚’複数宣言ã™ã‚‹éš›ã¯ã€ã™ã¹ã¦ã®å®£è¨€ã«ãŠã„ã¦ã€ ãã®åž‹ï¼ˆé–¢æ•°ã®å®£è¨€ã®å ´åˆã¯ã€æˆ»ã‚Šå€¤ã®åž‹ã€çµåˆã€ä¾‹å¤–仕様)ã«äº’æ›æ€§ã‚’ä¿è¨¼ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚

6.704.3 サンプルコード

test1.c

extern void func(void); /* W1037 */
extern int a; /* W1037 */

test2.c

extern int func(int); /* W1037 */
extern long a; /* W1037 */

6.704.4 関連メッセージ

ãªã—。

6.704.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W1037, Up: Messages

6.705 W1039

6.705.1 メッセージ本文

%s ç•ªç›®ã®æŒ‡å®šå­ã« `ll' ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.705.2 内容

'll' ã‚’å¤‰æ›æŒ‡å®šå­ã«ä½¿ç”¨ã—ã¦ã„ã¾ã™ã€‚ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ ISO C90 ã§ã¯èªã‚られã¦ã„ã¾ã›ã‚“。

6.705.3 サンプルコード

extern int printf(const char *, ...);

void foo(long long ll)
{
    printf("%lld", ll); /* W1039 */
}

6.705.4 関連メッセージ

ãªã—。

6.705.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W1039, Up: Messages

6.706 W1040

6.706.1 メッセージ本文

å‰å‡¦ç†æŒ‡ä»¤ã®å¾Œã«èªè­˜ã§ããªã„文字列ãŒè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚

6.706.2 内容

ã“ã®ã‚ˆã†ãªå‰å‡¦ç†æŒ‡ä»¤ã®è¨˜è¿°ã¯ã€ISO C90 æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。

6.706.3 サンプルコード

#define TEST

#ifdef TEST
#if defined(CASE_1)
int i = 1;
#elif defined(CASE_2)
int i = 2;
#endif CASE /* W1040 */
#else
int i = 0;
#endif TEST /* W1040 */

6.706.4 関連メッセージ

  • W1041 `%s' ã¯ã€ISO C æ¨™æº–è¦æ ¼ã®æ­£å¼ãªå‰å‡¦ç†æŒ‡ä»¤ã§ã¯ã‚りã¾ã›ã‚“。
  • W1042 å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ sizeof 演算å­ã‚’使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚

6.706.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.16.0


Next: , Previous: W1040, Up: Messages

6.707 W1041

6.707.1 メッセージ本文

`%s' ã¯ã€ISO C æ¨™æº–è¦æ ¼ã®æ­£å¼ãªå‰å‡¦ç†æŒ‡ä»¤ã§ã¯ã‚りã¾ã›ã‚“。

6.707.2 内容

ã“ã®ã‚ˆã†ãªå‰å‡¦ç†æŒ‡ä»¤ã®è¨˜è¿°ã¯ã€ISO C90 æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。

6.707.3 サンプルコード

#compiler_specific_extension 1 2.3 "4" /* W1041 */

6.707.4 関連メッセージ

  • W1040 å‰å‡¦ç†æŒ‡ä»¤ã®å¾Œã«èªè­˜ã§ããªã„文字列ãŒè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚
  • W1042 å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ sizeof 演算å­ã‚’使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚

6.707.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.16.0


Next: , Previous: W1041, Up: Messages

6.708 W1042

6.708.1 メッセージ本文

å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ sizeof 演算å­ã‚’使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚

6.708.2 内容

ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚

ã“ã®ã‚ˆã†ãªå‰å‡¦ç†æŒ‡ä»¤ã®è¨˜è¿°ã¯ã€ISO C90 æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。

6.708.3 サンプルコード

/* 追記予定 */

6.708.4 関連メッセージ

  • W1040 å‰å‡¦ç†æŒ‡ä»¤ã®å¾Œã«èªè­˜ã§ããªã„文字列ãŒè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚
  • W1041 `%s' ã¯ã€ISO C æ¨™æº–è¦æ ¼ã®æ­£å¼ãªå‰å‡¦ç†æŒ‡ä»¤ã§ã¯ã‚りã¾ã›ã‚“。

6.708.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

2.0.0 以é™ã®äºˆå®š


Next: , Previous: W1042, Up: Messages

6.709 W1043

6.709.1 メッセージ本文

`@ address' ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚

6.709.2 内容

ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚

ã“ã®ã‚ˆã†ãªæ§‹æ–‡è¨˜è¿°ã¯ã€ISO C90 æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ãŸã‚ã€è¨€èªžæ‹¡å¼µã¨ã¿ãªã•れã¾ã™ã€‚

6.709.3 サンプルコード

/* 追記予定 */

6.709.4 関連メッセージ

  • W1045 ã“ã® `@ word' æ§‹æ–‡ã¯ç„¡è¦–ã•れã¾ã™ã€‚

6.709.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

2.0.0 以é™ã®äºˆå®š


Next: , Previous: W1043, Up: Messages

6.710 W1045

6.710.1 メッセージ本文

ã“ã® `@ word' æ§‹æ–‡ã¯ç„¡è¦–ã•れã¾ã™ã€‚

6.710.2 内容

ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚

ã“ã®ã‚ˆã†ãªæ§‹æ–‡è¨˜è¿°ã¯ã€ISO C90 æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ãŸã‚ã€è¨€èªžæ‹¡å¼µã¨ã¿ãªã•れã¾ã™ã€‚

6.710.3 サンプルコード

/* 追記予定 */

6.710.4 関連メッセージ

  • W1043 `@ address' ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚

6.710.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

2.0.0 以é™ã®äºˆå®š


Next: , Previous: W1045, Up: Messages

6.711 W1046

6.711.1 メッセージ本文

`\' ã¨æ”¹è¡Œã®é–“ã«ã‚る空白文字類ãŒç„¡è¦–ã•れã¦ã„ã¾ã™ã€‚

6.711.2 内容

ISO C è¦æ ¼ã§ã¯ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥æ–‡å­—ã®å¾Œã«ç›´æŽ¥æ”¹è¡Œæ–‡å­—ãŒç¶šãã¹ãã§ã‚ã‚‹ã¨è¦å®šã—ã¦ã„ã¾ã™ã€‚

6.711.3 サンプルコード

#define FOO(a, b)   /* OK */    \
    (               /* W1046 */ \ 
        (a) + (b)   /* W1046 */ \	
    )

6.711.4 関連メッセージ

ãªã—。

6.711.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.16.0


Next: , Previous: W1046, Up: Messages

6.712 W1047

6.712.1 メッセージ本文

構造体ã€å…±ç”¨ä½“ã€ã‚ã‚‹ã„ã¯é…列ã®åˆæœŸåŒ–å­ãŒãƒªãƒ†ãƒ©ãƒ«ã§ã¯ã‚りã¾ã›ã‚“。

6.712.2 内容

åˆæœŸåŒ–å­ãŒå®šæ•°å¼ã«ãªã£ã¦ã„ã¾ã›ã‚“。

6.712.3 サンプルコード

int foo(int i, int j)
{
    int a[] = { 0, i, j }; /* W1047 */
    return a[1];
}

6.712.4 関連メッセージ

ãªã—。

6.712.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W1047, Up: Messages

6.713 W1048

6.713.1 メッセージ本文

マルãƒãƒã‚¤ãƒˆæ–‡å­—リテラルã¯å‡¦ç†ç³»å®šç¾©ã®å€¤ã«ãªã‚Šã¾ã™ã€‚

6.713.2 内容

ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚

マルãƒãƒã‚¤ãƒˆæ–‡å­—定数ãŒä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚ã“ã®å€¤ã‚„サイズã¯å‡¦ç†ç³»ã«ã‚ˆã£ã¦ç•°ãªã‚‹ãŸã‚ã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚

6.713.3 サンプルコード

/* 追記予定 */

6.713.4 関連メッセージ

ãªã—。

6.713.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

2.0.0 以é™ã®äºˆå®š


Next: , Previous: W1048, Up: Messages

6.714 W1049

6.714.1 メッセージ本文

ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚

6.714.2 内容

char ㌠8bit ã®å ´åˆã€signed char 型㯠-128~127 ã®ç¯„囲ã—ã‹è¡¨ç¾ã§ãã¾ã›ã‚“。ã—ãŸãŒã£ã¦ã€ä¾‹ 1 ã§ã¯è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ã“ã®å ´åˆã€çµæžœã¯ "処ç†ç³»å®šç¾©" ã«ãªã‚Šã¾ã™ã€‚ 符å·ãªã—演算ã®çµæžœã¯ã€ã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã›ãšã€ãƒ©ãƒƒãƒ—アラウンドã—ã¾ã™ã€‚例 2 ã§ã¯ã€ãƒ©ãƒƒãƒ—アラウンドã—çµæžœãŒåˆ‡ã‚Šè©°ã‚られるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.714.3 サンプルコード

例 1

void func1(signed int si)
{
    signed char sc = (signed char) si + 10; /* W1049 */
}

例 2

void func(unsigned int ui)
{
    unsigned int a = ui * ui;
}

6.714.4 関連メッセージ

  • W1050 ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。
  • W1051 符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込ã¿ã¾ã™ã€‚
  • W1052 符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込むã“ã¨ãŒã‚りã¾ã™ã€‚
  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

6.714.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W1049, Up: Messages

6.715 W1050

6.715.1 メッセージ本文

ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。

6.715.2 内容

char ㌠8bit ã®å ´åˆã€signed char 型㯠-128~127 ã®ç¯„囲ã—ã‹è¡¨ç¾ã§ãã¾ã›ã‚“。ã—ãŸãŒã£ã¦ã€ä¾‹ 1 ã§ã¯è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ã“ã®å ´åˆã€çµæžœã¯ "処ç†ç³»å®šç¾©" ã«ãªã‚Šã¾ã™ã€‚ 符å·ãªã—演算ã®çµæžœã¯ã€ã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã›ãšã€ãƒ©ãƒƒãƒ—アラウンドã—ã¾ã™ã€‚例 2 ã§ã¯ã€ãƒ©ãƒƒãƒ—アラウンドã—çµæžœãŒåˆ‡ã‚Šè©°ã‚られるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.715.3 サンプルコード

例 1

void func(signed int si)
{
    signed char sc = 0;

    if (si > 127) {
        sc = (signed char) si + 1; /* W1050 */
    }
}

例 2

void func(unsigned int ui)
{
    unsigned int a = ui * ui;
}

6.715.4 関連メッセージ

  • W1049 ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W1051 符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込ã¿ã¾ã™ã€‚
  • W1052 符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込むã“ã¨ãŒã‚りã¾ã™ã€‚
  • C1000 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

6.715.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W1050, Up: Messages

6.716 W1051

6.716.1 メッセージ本文

符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込ã¿ã¾ã™ã€‚

6.716.2 内容

符å·ãªã—演算ã®çµæžœã¯ã€ã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã›ãšãƒ©ãƒƒãƒ—アラウンドã—ã€çµæžœãŒåˆ‡ã‚Šè©°ã‚られるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.716.3 サンプルコード

unsigned int func(unsigned int ui)
{
    if (ui > 0xEFFFFFFFU) {
        return ui + 0x10000000U; /* W1051 */
    }

    return 0U;
}

6.716.4 関連メッセージ

  • W1049 ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W1050 ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。
  • W1052 符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込むã“ã¨ãŒã‚りã¾ã™ã€‚

6.716.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W1051, Up: Messages

6.717 W1052

6.717.1 メッセージ本文

符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込むã“ã¨ãŒã‚りã¾ã™ã€‚

6.717.2 内容

符å·ãªã—演算ã®çµæžœã¯ã€ã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã›ãšãƒ©ãƒƒãƒ—アラウンドã—ã€çµæžœãŒåˆ‡ã‚Šè©°ã‚られるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.717.3 サンプルコード

unsigned int func(unsigned int a, unsigned int b)
{
    if (a > 0xEFFFFFFFU && b < 0x20000000U) {
        return a + b; /* W1052 */
    }

    return 0U;
}

6.717.4 関連メッセージ

  • W1049 ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W1050 ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。
  • W1051 符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込ã¿ã¾ã™ã€‚

6.717.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W1052, Up: Messages

6.718 W1053

6.718.1 メッセージ本文

仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚

6.718.2 内容

éžåˆ—挙型ã‹ã‚‰åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚

6.718.3 サンプルコード

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

extern void func1(enum Color);

void func2(void)
{
    func1(4); /* W1053 */
}

6.718.4 関連メッセージ

  • W1054 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1055 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1056 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚
  • W1057 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1058 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1059 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1060 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1061 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1062 ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1063 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1064 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W1065 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.718.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W1053, Up: Messages

6.719 W1054

6.719.1 メッセージ本文

列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚

6.719.2 内容

éžåˆ—挙型ã‹ã‚‰åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚

6.719.3 サンプルコード

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

extern enum Color col;

void func2(void)
{
    col = 4; /* W1054 */
}

6.719.4 関連メッセージ

  • W1053 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1055 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1056 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚
  • W1057 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1058 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1059 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1060 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1061 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1062 ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1063 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1064 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W1065 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.719.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W1054, Up: Messages

6.720 W1055

6.720.1 メッセージ本文

戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚

6.720.2 内容

列挙型ã‹ã‚‰éžåˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚

6.720.3 サンプルコード

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

enum Color func(void)
{
    return 4; /* W1055 */
}

6.720.4 関連メッセージ

  • W1053 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1054 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1056 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚
  • W1057 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1058 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1059 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1060 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1061 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1062 ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1063 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1064 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W1065 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.720.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W1055, Up: Messages

6.721 W1056

6.721.1 メッセージ本文

仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚

6.721.2 内容

列挙型ã‹ã‚‰ç•°ãªã‚‹åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚

6.721.3 サンプルコード

enum Color { RED = 1, GREEN= 2, BLUE = 4 };
enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };

extern void func1(enum Color);

void func2(enum Season ssn)
{
    func1(ssn); /* W1056 */
}

6.721.4 関連メッセージ

  • W1053 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1054 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1055 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1057 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1058 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1059 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1060 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1061 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1062 ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1063 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1064 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W1065 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.721.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W1056, Up: Messages

6.722 W1057

6.722.1 メッセージ本文

列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚

6.722.2 内容

列挙型ã‹ã‚‰ç•°ãªã‚‹åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚

6.722.3 サンプルコード

enum Color { RED = 1, GREEN = 2, BLUE = 4 };
enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };

extern enum Color col;

void func(enum Season ssn)
{
    col = ssn; /* W1057 */
}

6.722.4 関連メッセージ

  • W1053 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1054 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1055 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1056 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚
  • W1058 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1059 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1060 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1061 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1062 ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1063 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1064 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W1065 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.722.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W1057, Up: Messages

6.723 W1058

6.723.1 メッセージ本文

戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚

6.723.2 内容

列挙型ã‹ã‚‰ç•°ãªã‚‹åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚

6.723.3 サンプルコード

enum Color { RED  = 1, GREEN = 2, BLUE = 4 };
enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };

enum Color func(enum Season ssn)
{
    return ssn; /* W1058 */
}

6.723.4 関連メッセージ

  • W1053 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1054 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1055 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1056 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚
  • W1057 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1059 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1060 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1061 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1062 ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1063 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1064 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W1065 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.723.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W1058, Up: Messages

6.724 W1059

6.724.1 メッセージ本文

仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚

6.724.2 内容

列挙型ã‹ã‚‰éžåˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚

6.724.3 サンプルコード

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

extern void func1(int num);

void func2(enum Color col)
{
    func1(col); /* W1059 */
}

6.724.4 関連メッセージ

  • W1053 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1054 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1055 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1056 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚
  • W1057 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1058 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1060 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1061 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1062 ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1063 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1064 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W1065 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.724.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W1059, Up: Messages

6.725 W1060

6.725.1 メッセージ本文

戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚

6.725.2 内容

éžåˆ—挙型ã‹ã‚‰åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚

6.725.3 サンプルコード

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

int func2(enum Color col)
{
    return col; /* W1060 */
}

6.725.4 関連メッセージ

  • W1053 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1054 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1055 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1056 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚
  • W1057 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1058 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1059 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1061 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1062 ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1063 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1064 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W1065 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.725.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W1060, Up: Messages

6.726 W1061

6.726.1 メッセージ本文

仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚

6.726.2 内容

éžåˆ—挙型ã‹ã‚‰åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚

6.726.3 サンプルコード

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

extern void func1(enum Color);

void func2(int num)
{
    func1(num); /* W1061 */
}

6.726.4 関連メッセージ

  • W1053 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1054 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1055 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1056 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚
  • W1057 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1058 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1059 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1060 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1062 ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1063 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1064 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W1065 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.726.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W1061, Up: Messages

6.727 W1062

6.727.1 メッセージ本文

ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚

6.727.2 内容

éžåˆ—挙型ã‹ã‚‰åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚

6.727.3 サンプルコード

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

extern enum Color col;

void func(int num)
{
    col = num + 1; /* W1062 */
}

6.727.4 関連メッセージ

  • W1053 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1054 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1055 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1056 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚
  • W1057 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1058 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1059 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1060 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1061 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1063 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1064 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W1065 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.727.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W1062, Up: Messages

6.728 W1063

6.728.1 メッセージ本文

戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚

6.728.2 内容

éžåˆ—挙型ã‹ã‚‰åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚

6.728.3 サンプルコード

enum Color { RED = 1, GREEN = 2, BLUE = 4 };

enum Color func(int num)
{
    return num / 2; /* W1063 */
}

6.728.4 関連メッセージ

  • W1053 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1054 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1055 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1056 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚
  • W1057 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1058 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1059 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1060 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1061 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1062 ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1064 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚
  • W1065 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.728.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.6.0


Next: , Previous: W1063, Up: Messages

6.729 W1064

6.729.1 メッセージ本文

列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.729.2 内容

éžåˆ—挙型ã‹ã‚‰åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚

6.729.3 サンプルコード

enum Color { RED, BLUE, GREEN };

int func(enum Color c)
{
    switch (c) {
    case RED: /* OK */
        return 1;
    case 1: /* W1064 */
        return 2;
    }

    return 0;
}

6.729.4 関連メッセージ

  • W1053 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1054 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1055 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1056 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚
  • W1057 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1058 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1059 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1060 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1061 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1062 ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1063 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1065 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.729.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W1064, Up: Messages

6.730 W1065

6.730.1 メッセージ本文

列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.730.2 内容

列挙型ã‹ã‚‰ç•°ãªã‚‹åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚

6.730.3 サンプルコード

enum Color { RED, BLUE, GREEN };
enum Fruits { APPLE, BANANA, ORANGE, GRAPE };

int func(enum Color c)
{
    switch (c) {
    case RED: /* OK */
        return 1;
    case ORANGE: /* W1065 */
        return 2;
    }

    return 0;
}

6.730.4 関連メッセージ

  • W1053 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1054 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1055 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1056 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚
  • W1057 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1058 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1059 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1060 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1061 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚
  • W1062 ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚
  • W1063 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚
  • W1064 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚

6.730.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.4.0


Next: , Previous: W1065, Up: Messages

6.731 W1066

6.731.1 メッセージ本文

明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚

6.731.2 内容

例ãˆã°ã‚µãƒ³ãƒ—ルコードã§ã¯ float 型変数 a ã® 2 ä¹—ã—ãŸå€¤ãŒ float åž‹ã®ç¯„囲ã«åŽã¾ã‚‰ãªã„ã“ã¨ã‚’想定ã—㦠double 型変数 b ã¸ä»£å…¥ã—ã¦ã„ã¾ã™ã€‚ã—ã‹ã—ã€ç’°å¢ƒã«ã‚ˆã£ã¦ã¯ a * a ã®æ¼”ç®—ã¯ã„ã£ãŸã‚“ float åž‹ã¨ã—ã¦ çµæžœã‚’出ã—ãŸã‚ã¨ã« double åž‹ã«ã‚­ãƒ£ã‚¹ãƒˆã•れã€b ã¸ä»£å…¥ã•れる場åˆãŒã‚りã¾ã™ã€‚ãã®å ´åˆã€a ã®å€¤ã«ã‚ˆã£ã¦ã¯ç²¾åº¦è½ã¡ãŒèµ·ã“りã¾ã™ã€‚

6.731.3 サンプルコード

void func(float a)
{
    double b = (double) (a * a);
}

6.731.4 関連メッセージ

  • W1067 明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚
  • W1068 明示的㫠double åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚

6.731.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.14.0


Next: , Previous: W1066, Up: Messages

6.732 W1067

6.732.1 メッセージ本文

明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚

6.732.2 内容

例ãˆã°ã‚µãƒ³ãƒ—ルコードã§ã¯ float 型変数 a ã® 2 ä¹—ã—ãŸå€¤ãŒ float åž‹ã®ç¯„囲ã«åŽã¾ã‚‰ãªã„ã“ã¨ã‚’想定ã—㦠long double 型変数 b ã¸ä»£å…¥ã—ã¦ã„ã¾ã™ã€‚ã—ã‹ã—ã€ç’°å¢ƒã«ã‚ˆã£ã¦ã¯ a * a ã®æ¼”ç®—ã¯ã„ã£ãŸã‚“ float åž‹ã¨ã—ã¦ çµæžœã‚’出ã—ãŸã‚ã¨ã« long double åž‹ã«ã‚­ãƒ£ã‚¹ãƒˆã•れã€b ã¸ä»£å…¥ã•れる場åˆãŒã‚りã¾ã™ã€‚ãã®å ´åˆã€a ã®å€¤ã«ã‚ˆã£ã¦ã¯ç²¾åº¦è½ã¡ãŒèµ·ã“りã¾ã™ã€‚

6.732.3 サンプルコード

void func(float a)
{
    long double b = (long double) (a * a);
}

6.732.4 関連メッセージ

  • W1066 明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚
  • W1068 明示的㫠double åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚

6.732.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.14.0


Next: , Previous: W1067, Up: Messages

6.733 W1068

6.733.1 メッセージ本文

明示的㫠double åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚

6.733.2 内容

例ãˆã°ã‚µãƒ³ãƒ—ルコードã§ã¯ double 型変数 a ã® 2 ä¹—ã—ãŸå€¤ãŒ double åž‹ã®ç¯„囲ã«åŽã¾ã‚‰ãªã„ã“ã¨ã‚’想定ã—㦠long double 型変数 b ã¸ä»£å…¥ã—ã¦ã„ã¾ã™ã€‚ã—ã‹ã—ã€ç’°å¢ƒã«ã‚ˆã£ã¦ã¯ a * a ã®æ¼”ç®—ã¯ã„ã£ãŸã‚“ double åž‹ã¨ã—ã¦ çµæžœã‚’出ã—ãŸã‚ã¨ã« long double åž‹ã«ã‚­ãƒ£ã‚¹ãƒˆã•れã€b ã¸ä»£å…¥ã•れる場åˆãŒã‚りã¾ã™ã€‚ãã®å ´åˆã€a ã®å€¤ã«ã‚ˆã£ã¦ã¯ç²¾åº¦è½ã¡ãŒèµ·ã“りã¾ã™ã€‚

6.733.3 サンプルコード

void func(double a)
{
    long double b = (long double) (a * a);
}

6.733.4 関連メッセージ

  • W1066 明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚
  • W1067 明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚

6.733.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.14.0


Next: , Previous: W1068, Up: Messages

6.734 W1069

6.734.1 メッセージ本文

ã“ã® `if-else-if' æ–‡ã«ã¯ã€æœ«å°¾ã® `else' 節ãŒã‚りã¾ã›ã‚“。

6.734.2 内容

else 節ãŒãªã„ã¨ã€ else 節を書ã忘れã¦ã„ã‚‹ã®ã‹ã€ else 節ãŒç™ºç”Ÿã—ãªã„ if-else if æ–‡ãªã®ã‹ãŒåˆ†ã‹ã‚‰ãšã€æ··ä¹±ã‚’æ‹›ãã¾ã™ã€‚

6.734.3 サンプルコード

static int func(int i)
{
    if (i == 2) { /* W1069 */
        return 0;
    }
    else if (i == 4) {
        return 1;
    }
    return 2;
}

6.734.4 関連メッセージ

ãªã—。

6.734.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.14.0


Next: , Previous: W1069, Up: Messages

6.735 W1070

6.735.1 メッセージ本文

ã“ã® `switch' æ–‡ã«ã¯å®Ÿè¡ŒçµŒè·¯ãŒ 2 ã¤ã—ã‹ç„¡ã„ãŸã‚ã€`if-else' æ–‡ã«å¤‰æ›å¯èƒ½ã§ã™ã€‚

6.735.2 内容

深刻ãªå•題ã§ã¯ã‚りã¾ã›ã‚“ãŒã€é€šå¸¸ switch 文㯠2 ã¤ä»¥ä¸Šã®åˆ†å²ãŒã‚ã‚‹ã“ã¨ãŒæƒ³å®šã•れるã®ã§ã€ case 節㌠1 ã¤ã—ã‹ãªã„ switch æ–‡ã§ã¯ã€å®Ÿè¡Œãƒ‘スã®å®šç¾©æ¼ã‚ŒãŒç–‘ã‚れã¾ã™ã€‚

6.735.3 サンプルコード

switch (x) { /* W1070 */
case 1:
    ...
    break;
default:
    ...
}

6.735.4 関連メッセージ

ãªã—。

6.735.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.14.0


Next: , Previous: W1070, Up: Messages

6.736 W1071

6.736.1 メッセージ本文

関数 `%s' ã«ã¯è¤‡æ•°ã®çµ‚了点ãŒã‚りã¾ã™ã€‚

6.736.2 内容

出å£ã¨ãªã‚‹ return æ–‡ãŒé–¢æ•°å†…ã«è¤‡æ•°å€‹å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚

6.736.3 サンプルコード

void foo(int i) /* W1071 */
{
    if (i == 0) {
        return;
    }
}

6.736.4 関連メッセージ

ãªã—。

6.736.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.18.0


Next: , Previous: W1071, Up: Messages

6.737 W1072

6.737.1 メッセージ本文

`goto' 文を使用ã—ã¦ã„ã¾ã™ã€‚

6.737.2 内容

ファイル内㧠goto æ–‡ãŒä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚

6.737.3 サンプルコード

static int func(int i)
{
    if (i == 1) {
        goto Label1; /* W1072 */
    }

    goto Label2; /* W1072 */

Label1:
    i = 10;
Label2:
    i = 20;
    return i;
}

6.737.4 関連メッセージ

ãªã—。

6.737.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.14.0


Next: , Previous: W1072, Up: Messages

6.738 W1073

6.738.1 メッセージ本文

関数 `%s' ã®æˆ»ã‚Šå€¤ã‚’破棄ã—ã¦ã„ã¾ã™ã€‚

6.738.2 内容

é–¢æ•°ã®æˆ»ã‚Šå€¤ãŒä½¿ç”¨ã•れã¦ã„ãªã„å ´åˆã€ãã®æˆ»ã‚Šå€¤ã¯ç„¡é§„ãªè¦ç´ ã¨ã„ãˆã¾ã™ã€‚コード中ã«ç„¡é§„ãªè¦ç´ ãŒã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ ã¾ãŸã€ä½¿ç”¨ã•れãªã„戻り値ãŒå¤šã„ã“ã¨ã¯ã€æˆ»ã‚Šå€¤ã®ãƒã‚§ãƒƒã‚¯ã‚‚怠ã£ã¦ã„ã‚‹ã“ã¨ãŒæŽ¨æ¸¬ã•れるãŸã‚ã€éšœå®³è¨±å®¹æ€§ãŒä½Žä¸‹ã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒé«˜ã„ã¨ã„ãˆã¾ã™ã€‚

6.738.3 サンプルコード

extern int bar(void);
static void foo(void)
{
    int i;
    int j;
    for (i = 0, bar(); i < 10; i++) { /* W1073 */
        j = bar(); /* OK */
    }
}

6.738.4 関連メッセージ

ãªã—。

6.738.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.16.0


Next: , Previous: W1073, Up: Messages

6.739 W1074

6.739.1 メッセージ本文

`sizeof' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯å®Ÿè¡Œã•れãªã„ãŸã‚ã€å‰¯ä½œç”¨ãŒç™ºç”Ÿã—ã¾ã›ã‚“。

6.739.2 内容

サンプルコードã§ç¤ºã—ãŸã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®å ´åˆã€sizeof 演算å­ã¯å¼ã‚’評価ã—ãªã„ãŸã‚ã€data++ ã¯å®Ÿè¡Œã•れã¾ã›ã‚“。 従ã£ã¦ data++ ãŒå®Ÿè¡Œã•れã¦ã„ã‚‹ã“ã¨ãŒå‰æã ã¨ã™ã‚‹ã¨æ§˜ã€…ãªäºˆæœŸã—ãªã„å•題ãŒèµ·ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

6.739.3 サンプルコード

static int foo(void)
{
    int i = 0;

    if (sizeof(i++) == 4) { /* W1074 */
        return 0;
    }
    else {
        return 1;
    }
}

6.739.4 関連メッセージ

ãªã—。

6.739.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.16.0


Next: , Previous: W1074, Up: Messages

6.740 W1075

6.740.1 メッセージ本文

`%s' ã¯ä»¥å‰ã«å†…部çµåˆã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ãŒã€ã“ã®å®£è¨€ã«ã¯ `static' ãŒã‚りã¾ã›ã‚“。

6.740.2 内容

static 記憶域クラス指定å­ãŒæ˜Žç¤ºã•れã¦ã„ã¾ã›ã‚“。

6.740.3 サンプルコード

static int func(void);
int func(void) /* W1075 */
{
    ...
}

6.740.4 関連メッセージ

ãªã—。

6.740.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.16.0


Next: , Previous: W1075, Up: Messages

6.741 W1076

6.741.1 メッセージ本文

関数 `%s' ã¯å†…部çµåˆã‚’æŒã¡ã¾ã™ãŒã€äº‹å‰ã«å†…部çµåˆã¨ã—ã¦å®£è¨€ã—ã¦ã„ã¾ã›ã‚“。

6.741.2 内容

関数プロトタイプ宣言ãŒãªã„ã¾ã¾ static 記憶域クラス指定å­ä»˜ãã®é–¢æ•°ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.741.3 サンプルコード

static int func(void) /* W1076 */
{
    return 0;
}

6.741.4 関連メッセージ

ãªã—。

6.741.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.16.0


Next: , Previous: W1076, Up: Messages

6.742 W1077

6.742.1 メッセージ本文

サイズãŒçœç•¥ã•れãŸé…列を宣言ã—ã¦ã„ã¾ã™ã€‚

6.742.2 内容

ã“ã®é…列ã¯ã€ã‚µã‚¤ã‚ºãŒæ˜Žç¤ºã•れã¦ã„ã¾ã›ã‚“。

6.742.3 サンプルコード

extern int a[]; /* W1077 */

6.742.4 関連メッセージ

ãªã—。

6.742.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.16.0


Next: , Previous: W1077, Up: Messages

6.743 W9001

6.743.1 メッセージ本文

ã“ã®æ–‡ã«ã¯åˆ¶å¾¡ãŒåˆ°é”ã—ã¾ã›ã‚“。

6.743.2 内容

ã“ã®å®Ÿè¡ŒçµŒè·¯ã«è‡³ã‚‹ãŸã‚ã®åˆ†å²æ¡ä»¶ãŒå¸¸ã«å½ã¨è©•価ã•れるãŸã‚ã€ã“ã®æ–‡ã¯å®Ÿè¡Œã•れる㓠ã¨ãŒã‚りã¾ã›ã‚“。

6.743.3 サンプルコード

extern int all_possible_values_of_int(void);
extern unsigned int zero_if_succeeded(void);

void func(void)
{
    int i = all_possible_values_of_int();

    if (i < 0) {
        unsigned int ui = zero_if_succeeded();

        if (ui > 0) {
            return;
        }

        /* "ui" is equal to zero at this point */

        /* Always be true?  No, it'll be false all the time */
        if (i < ui) {
            return; /* W9001: Control never reaches here! */
        }
        /*
         * ISO standard says;
         *   Usual Arithmetic Conversion performed before evaluating
         *   the expression "i < ui".
         * Usual Arithmetic Conversion makes "i < ui" into
         * "(unsigned int) i < ui" and then the value of "i" which
         * is less than 0 will be converted into a new value which
         * is greater than 0 because of the wrap-around.
         * So, the expression ("a value greater than 0" < 0) makes
         * always false.
         */
    }
}

6.743.4 関連メッセージ

ãªã—。

6.743.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W9001, Up: Messages

6.744 W9002

6.744.1 メッセージ本文

ãƒ•ã‚¡ã‚¤ãƒ«ã®æœ«å°¾ã«æ”¹è¡Œæ–‡å­—ãŒã‚りã¾ã›ã‚“。

6.744.2 内容

プリプロセッサã«ã‚ˆã£ã¦å‡¦ç†ã™ã‚‹è¡Œã¯ã€ã™ã¹ã¦æœ«å°¾ã«æ”¹è¡Œæ–‡å­—ãŒå¿…è¦ã§ã™ã€‚

6.744.3 サンプルコード

ãªã—。

6.744.4 関連メッセージ

ãªã—。

6.744.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: W9002, Up: Messages

6.745 W9003

6.745.1 メッセージ本文

暗黙的㫠`%s' åž‹ã®ã‚ªãƒ–ジェクト㌠`%s' åž‹ã®ã‚ªãƒ–ジェクトã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚

6.745.2 内容

変æ›å…ƒã¾ãŸã¯å¤‰æ›å…ˆã®åž‹ãŒéžæ¨™æº–åž‹ã§ã‚る暗黙的ãªå¤‰æ›ãŒç™ºç”Ÿã™ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚

6.745.3 サンプルコード

enum Color { RED, BLUE, GREEN };
enum Fruit { APPLE, BANANA, ORANGE };

extern void foo(enum Color);

static void bar(void)
{
    int i = RED; /* W9003 */
    foo(ORANGE); /* W9003 */
}

6.745.4 関連メッセージ

ãªã—。

6.745.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.12.0


Next: , Previous: W9003, Up: Messages

6.746 C0001

6.746.1 メッセージ本文

ã“ã®è­˜åˆ¥å `%s' ã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚

6.746.2 内容

W0051ã€W0052ã€W0491ã€W0492〠W0703ã€W0770ã€W0771ã€W0787〠W0788ã€W0789ã€W0790ã€W0791〠W1037 メッセージã®ç›´å¾Œã«å‡ºåŠ›ã•れã€å•題ã¨ãªã‚‹è­˜åˆ¥å­ã®å¯¾ã¨ãªã‚‹è­˜åˆ¥å­ã®ä½ç½®ã‚’示ã—ã¾ã™ã€‚

6.746.3 サンプルコード

int very_long_long_long_long_long_long_long_identifier_2 = 1; /* W0052 */
int very_long_long_long_long_long_long_long_identifier_1 = 0; /* C0001 */

6.746.4 関連メッセージ

  • W0051 å¤–éƒ¨è­˜åˆ¥å­ `%s' ãŒä»–ã®è­˜åˆ¥å­åã¨ã€ãƒªãƒ³ã‚«ç‰¹æ€§ã§æŒ‡å®šã•ã‚ŒãŸæ–‡å­—æ•°ã®ç¯„囲内ã§åŒºåˆ¥ã§ãã¾ã›ã‚“。
  • W0052 識別å­å `%s' ãŒä»–ã®è­˜åˆ¥å­åã¨ã€ã‚³ãƒ³ãƒ‘ã‚¤ãƒ©ç‰¹æ€§ã§æŒ‡å®šã•ã‚ŒãŸæ–‡å­—æ•°ã®ç¯„囲内ã§åŒºåˆ¥ã§ãã¾ã›ã‚“。

6.746.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: C0001, Up: Messages

6.747 C1000

6.747.1 メッセージ本文

次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚

6.747.2 内容

W0093ã€W0096ã€W0097ã€W0115〠W0116ã€W0421ã€W0422ã€W0423〠W0424ã€W0459ã€W0460ã€W0461〠W0462ã€W0568ã€W0569ã€W0570〠W0607ã€W0608ã€W0705ã€W0707〠W0720ã€W0745ã€W1049ã€W1050 メッセージã®ç›´å¾Œã«å‡ºåŠ›ã•れã€ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®å¾Œã«å•題を検出ã—ãŸçжæ³ã‚’補足ã™ã‚‹ãƒ¡ ッセージãŒç¶šãã“ã¨ã‚’示ã—ã¾ã™ã€‚

6.747.3 サンプルコード

 1: int foo(int i)
 2: {
 3:     int j; /* C1003 */
 4:
 5:     if (i < 0) { /* C1001 */
 6:         if (i < -10) { /* C1002 */
 7:             j = 2;
 8:         }
 9:         else if (i < -5) { /* C1002 */
10:             j = 3;
11:         }
12:     }
13:     else {
14:         j = 1;
15:     }
16:
17:     return j; /* W0460 */
18: }

a.c:17:12:warning:c_builtin:W0460:UNC:X99:変数 `j' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚
:::context:c_builtin:C1000:INF:X99:次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚
a.c:3:9:context:c_builtin:C1003:INF:X99:ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚
a.c:5:11:context:c_builtin:C1001:INF:X99:ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
a.c:6:15:context:c_builtin:C1002:INF:X99:ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
a.c:9:20:context:c_builtin:C1002:INF:X99:ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚

6.747.4 関連メッセージ

  • C1001 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1002 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚
  • C1003 ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚
  • C1004 ã“ã“ã§è©²å½“変数㫠NULL ã®å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚
  • C1005 ã“ã“ã§è©²å½“変数㫠NULL ã®å¯èƒ½æ€§ãŒã‚る値を割り当ã¦ã¾ã—ãŸã€‚
  • C1006 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

6.747.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

3.2.0


Next: , Previous: C1000, Up: Messages

6.748 C1001

6.748.1 メッセージ本文

ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚

6.748.2 内容

W0093ã€W0096ã€W0097ã€W0115〠W0116ã€W0421ã€W0422ã€W0423〠W0424ã€W0459ã€W0460ã€W0461〠W0462ã€W0568ã€W0569ã€W0570〠W0607ã€W0608ã€W0705ã€W0707〠W0720ã€W0745ã€W1049ã€W1050 メッセージを検出ã—ãŸçжæ³ã¨ã—ã¦ã€è©²å½“制御å¼ã‚’真ã¨è©•価ã—ãŸã“ã¨ã‚’示ã—ã¾ã™ã€‚

6.748.3 サンプルコード

int foo(int i)
{
    int j; /* C1003 */

    if (i < 0) { /* C1001 */
        if (i < -10) { /* C1002 */
            j = 2;
        }
        else if (i < -5) { /* C1002 */
            j = 3;
        }
    }
    else {
        j = 1;
    }

    return j; /* W0460 */
}

6.748.4 関連メッセージ

  • W0093 ゼロã§é™¤ç®—ã•れるæã‚ŒãŒã‚りã¾ã™ã€‚
  • W0096 ゼロã«ãªã‚‹å®šæ•°å¼ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚
  • W0097 ゼロã®å€¤ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚
  • W0115 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã¾ã™ã€‚
  • W0116 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã‚‹æã‚ŒãŒã‚りã¾ã™ã€‚
  • W0421 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚
  • W0422 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚
  • W0423 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚
  • W0424 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚
  • W0459 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚
  • W0460 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W0461 値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚
  • W0462 値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚
  • W0568 符å·ä»˜ã定数å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚
  • W0569 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚
  • W0570 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W0607 値ãŒè² ã«ãªã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0608 値ãŒè² ã«ãªã‚‹ã“ã¨ãŒã‚りã†ã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0705 é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W0707 é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™å®šæ•°ã§ã™ã€‚
  • W0720 æµ®å‹•å°æ•°ç‚¹åž‹ã®å€¤ãŒå¤‰æ›å…ˆã®åž‹ã®ç¯„囲ã«å…¥ã‚Šãりã¾ã›ã‚“。
  • W0745 é…åˆ—ã®æ·»å­—ãŒã€é ˜åŸŸå¤–を指ã—ã¦ã„ã¾ã™ã€‚
  • W1049 ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W1050 ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。

6.748.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

3.2.0


Next: , Previous: C1001, Up: Messages

6.749 C1002

6.749.1 メッセージ本文

ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚

6.749.2 内容

W0093ã€W0096ã€W0097ã€W0115〠W0116ã€W0421ã€W0422ã€W0423〠W0424ã€W0459ã€W0460ã€W0461〠W0462ã€W0568ã€W0569ã€W0570〠W0607ã€W0608ã€W0705ã€W0707〠W0720ã€W0745ã€W1049ã€W1050 メッセージを検出ã—ãŸçжæ³ã¨ã—ã¦ã€è©²å½“制御å¼ã‚’å½ã¨è©•価ã—ãŸã“ã¨ã‚’示ã—ã¾ã™ã€‚

6.749.3 サンプルコード

int foo(int i)
{
    int j; /* C1003 */

    if (i < 0) { /* C1001 */
        if (i < -10) { /* C1002 */
            j = 2;
        }
        else if (i < -5) { /* C1002 */
            j = 3;
        }
    }
    else {
        j = 1;
    }

    return j; /* W0460 */
}

6.749.4 関連メッセージ

  • W0093 ゼロã§é™¤ç®—ã•れるæã‚ŒãŒã‚りã¾ã™ã€‚
  • W0096 ゼロã«ãªã‚‹å®šæ•°å¼ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚
  • W0097 ゼロã®å€¤ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚
  • W0115 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã¾ã™ã€‚
  • W0116 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã‚‹æã‚ŒãŒã‚りã¾ã™ã€‚
  • W0421 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚
  • W0422 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚
  • W0423 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚
  • W0424 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚
  • W0459 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚
  • W0460 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W0461 値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚
  • W0462 値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚
  • W0568 符å·ä»˜ã定数å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚
  • W0569 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚
  • W0570 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W0607 値ãŒè² ã«ãªã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0608 値ãŒè² ã«ãªã‚‹ã“ã¨ãŒã‚りã†ã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0705 é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W0707 é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™å®šæ•°ã§ã™ã€‚
  • W0720 æµ®å‹•å°æ•°ç‚¹åž‹ã®å€¤ãŒå¤‰æ›å…ˆã®åž‹ã®ç¯„囲ã«å…¥ã‚Šãりã¾ã›ã‚“。
  • W0745 é…åˆ—ã®æ·»å­—ãŒã€é ˜åŸŸå¤–を指ã—ã¦ã„ã¾ã™ã€‚
  • W1049 ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W1050 ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。

6.749.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

3.2.0


Next: , Previous: C1002, Up: Messages

6.750 C1003

6.750.1 メッセージ本文

ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚

6.750.2 内容

W0459ã€W0460ã€W0461ã€W0462 メッセージを検出ã—ãŸçжæ³ã¨ã—ã¦ã€ã©ã®ä½ç½®ã§è©²å½“変数を定義ã—ãŸã‹ã‚’示ã—ã¾ã™ã€‚

6.750.3 サンプルコード

int foo(int i)
{
    int j; /* C1003 */

    if (i < 0) { /* C1001 */
        if (i < -10) { /* C1002 */
            j = 2;
        }
        else if (i < -5) { /* C1002 */
            j = 3;
        }
    }
    else {
        j = 1;
    }

    return j; /* W0460 */
}

6.750.4 関連メッセージ

  • W0459 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚
  • W0460 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W0461 値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚
  • W0462 値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚

6.750.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

3.2.0


Next: , Previous: C1003, Up: Messages

6.751 C1004

6.751.1 メッセージ本文

ã“ã“ã§è©²å½“変数㫠NULL ã®å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

6.751.2 内容

W0421ã€W0422ã€W0423ã€W0424 メッセージを検出ã—ãŸçжæ³ã¨ã—ã¦ã€ã©ã®ä½ç½®ã§è©²å½“変数㫠NULL を割り当ã¦ãŸã‹ã‚’示㗠ã¾ã™ã€‚

6.751.3 サンプルコード

extern int *bar(void);
extern int *baz(void);

void foo(int i)
{
    int *p = NULL; /* C1004 */

    if (i < 0) { /* C1002 */
        p = bar();
        if (!p) {
            return;
        }
    }
    else {
        p = baz(); /* C1005 */
    }

    *p += 2; /* W0422 */
}

6.751.4 関連メッセージ

  • W0421 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚
  • W0422 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚
  • W0423 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚
  • W0424 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚

6.751.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

3.2.0


Next: , Previous: C1004, Up: Messages

6.752 C1005

6.752.1 メッセージ本文

ã“ã“ã§è©²å½“変数㫠NULL ã®å¯èƒ½æ€§ãŒã‚る値を割り当ã¦ã¾ã—ãŸã€‚

6.752.2 内容

W0421ã€W0422ã€W0423ã€W0424 メッセージを検出ã—ãŸçжæ³ã¨ã—ã¦ã€ã©ã®ä½ç½®ã§è©²å½“変数㫠NULL ã¨ãªã‚Šå¾—る値を割り当 ã¦ãŸã‹ã‚’示ã—ã¾ã™ã€‚

6.752.3 サンプルコード

extern int *bar(void);
extern int *baz(void);

void foo(int i)
{
    int *p = NULL; /* C1004 */

    if (i < 0) { /* C1002 */
        p = bar();
        if (!p) {
            return;
        }
    }
    else {
        p = baz(); /* C1005 */
    }

    *p += 2; /* W0422 */
}

6.752.4 関連メッセージ

  • W0421 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚
  • W0422 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚
  • W0423 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚
  • W0424 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚

6.752.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

3.2.0


Previous: C1005, Up: Messages

6.753 C1006

6.753.1 メッセージ本文

ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚

6.753.2 内容

W0093ã€W0096ã€W0097ã€W0115〠W0116ã€W0568ã€W0569ã€W0570〠W0607ã€W0608ã€W0705ã€W0707〠W0720ã€W0745ã€W1049ã€W1050 メッセージを検出ã—ãŸçжæ³ã¨ã—ã¦ã€ã©ã®ä½ç½®ã§è©²å½“変数ã«å•題ã®å€¤ã‚’割り当ã¦ãŸã‹ã‚’示 ã—ã¾ã™ã€‚

6.753.3 サンプルコード

int foo(int i)
{
    int j = 0; /* C1006 */

    if (i < 0) { /* C1002 */
        j = -i;
    }
    else if (i > 0) { /* C1002 */
        j = i;
    }

    return 5 / j; /* W0093 */
}

6.753.4 関連メッセージ

  • W0093 ゼロã§é™¤ç®—ã•れるæã‚ŒãŒã‚りã¾ã™ã€‚
  • W0096 ゼロã«ãªã‚‹å®šæ•°å¼ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚
  • W0097 ゼロã®å€¤ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚
  • W0115 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã¾ã™ã€‚
  • W0116 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã‚‹æã‚ŒãŒã‚りã¾ã™ã€‚
  • W0568 符å·ä»˜ã定数å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚
  • W0569 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚
  • W0570 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W0607 値ãŒè² ã«ãªã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0608 値ãŒè² ã«ãªã‚‹ã“ã¨ãŒã‚りã†ã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚
  • W0705 é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W0707 é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™å®šæ•°ã§ã™ã€‚
  • W0720 æµ®å‹•å°æ•°ç‚¹åž‹ã®å€¤ãŒå¤‰æ›å…ˆã®åž‹ã®ç¯„囲ã«å…¥ã‚Šãりã¾ã›ã‚“。
  • W0745 é…åˆ—ã®æ·»å­—ãŒã€é ˜åŸŸå¤–を指ã—ã¦ã„ã¾ã™ã€‚
  • W1049 ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚
  • W1050 ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。

6.753.5 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

3.2.0


Next: , Previous: Messages, Up: Top

7 メトリクス一覧


Next: , Up: Metrics

7.1 FL_STMT

7.1.1 メトリックå

ãƒ•ã‚¡ã‚¤ãƒ«å†…ã®æ–‡ã®æ•°

7.1.2 内容

ファイル内ã«è¨€èªžã®æ§‹æ–‡è¦å‰‡ã¨ã—ã¦ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆ(æ–‡)ã¨èªè­˜ã•れるもã®ã®æ•°ã‚’示ã—ã¾ ã™ã€‚

7.1.3 サンプルコード

int foo(int a)
{
    int i = 0;  /* A declaration is not a statement */

    if (a > 0) {  /* An if-else-statement makes FL_STMT += 1 */
        i = a + 1;  /* An expression-statement makes FL_STMT += 1 */
    }
    else {
        ;  /* An empty expression-statement makes FL_STMT += 1 */
    }

    return i;  /* A jump-statement makes FL_STMT += 1 */
}

/* Now, FL_STMT == 4 */

void bar(int a)
{
    struct {  /* A declaration is not a statement */
        int i;
    } s;

    /* A for-statement which has 2 expression-statements (`s.i=0;' and `s.i<a;') makes FL_STMT += 3 */
    for (s.i = 0; s.i < a; s.i++) {
        switch (s.i % 3) {  /* A switch-statement makes FL_STMT += 1 */
        case 0:             /* A label is part of a labeled-statement, but it makes FL_STMT += 1 */
            puts("A\n");    /* A labeled expression-statement makes FL_STMT += 1 */
            break;          /* A jump-statement makes FL_STMT += 1 */
        case 1:             /* A label is part of a labeled-statement, but it makes FL_STMT += 1 */
            puts("B\n");    /* A labeled expression-statement makes FL_STMT += 1 */
            break;          /* A jump-statement makes FL_STMT += 1 */
        case 2:             /* A label is part of a labeled-statement, but it makes FL_STMT += 1 */
            puts("C\n");    /* A labeled expression-statement makes FL_STMT += 1 */
            break;          /* A jump-statement makes FL_STMT += 1 */
        }
    }
}

/* Finally, FL_STMT == 17 */
     MET,FL_STMT,test.c,17

7.1.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: FL_STMT, Up: Metrics

7.2 FL_FUNC

7.2.1 メトリックå

ファイル内ã®é–¢æ•°å®šç¾©ã®æ•°

7.2.2 内容

ファイル内ã«å®šç¾©ã•れã¦ã„ã‚‹é–¢æ•°ã®æ•°ã‚’示ã—ã¾ã™ã€‚

7.2.3 サンプルコード

void foo(void) {}  /* A function-definition makes FL_FUNC += 1 */

static void bar(void) {}  /* A function-definition makes FL_FUNC += 1 */

extern void baz(void);  /* A declaration is not a function-definition */

int qux(a, b)  /* An old style function-definition makes FL_FUNC += 1 */
    int a, b;
{
    return a + b;
}

/* FL_FUNC == 3 */
     MET,FL_FUNC,test.c,3

7.2.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: FL_FUNC, Up: Metrics

7.3 FN_STMT

7.3.1 メトリックå

é–¢æ•°å†…ã®æ–‡ã®æ•°

7.3.2 内容

関数内ã«è¨€èªžã®æ§‹æ–‡è¦å‰‡ã¨ã—ã¦ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆ(æ–‡)ã¨èªè­˜ã•れるもã®ã®æ•°ã‚’示ã—ã¾ã™ã€‚

7.3.3 サンプルコード

int foo(int a)
{
    int i = 0;  /* A declaration is not a statement */

    if (a > 0) {  /* An if-else-statement makes foo's FN_STMT += 1 */
        i = a + 1;  /* An expression-statement makes foo's FN_STMT += 1 */
    }
    else {
        ;  /* An empty expression-statement makes foo's FN_STMT += 1 */
    }

    return i;  /* A jump-statement makes foo's FN_STMT += 1 */

    /* foo's FN_STMT == 4 */
}

void bar(int a)
{
    struct {  /* A declaration is not a statement */
        int i;
    } s;

    /* A for-statement which has 2 expression-statements (`s.i=0;' and * `s.i<a;') makes bar's FN_STMT += 3 */
    for (s.i = 0; s.i < a; s.i++) {
        switch (s.i % 3) {  /* A switch-statement makes bar's FN_STMT += 1 */
        case 0:             /* A label is part of a labeled-statement, but it makes bar's FN_STMT += 1 */
            puts("A\n");    /* A labeled expression-statement makes bar's FN_STMT += 1 */
            break;          /* A jump-statement makes bar's FN_STMT += 1 */
        case 1:             /* A label is part of a labeled-statement, but it makes bar's FN_STMT += 1 */
            puts("B\n");    /* A labeled expression-statement makes bar's FN_STMT += 1 */
            break;          /* A jump-statement makes bar's FN_STMT += 1 */
        case 2:             /* A label is part of a labeled-statement, but it makes bar's FN_STMT += 1 */
            puts("C\n");    /* A labeled expression-statement makes bar's FN_STMT += 1 */
            break;          /* A jump-statement makes bar's FN_STMT += 1 */
        }
    }

    /* bar's FN_STMT == 13 */
}
     MET,FN_STMT,foo,int foo(int),test.c,1,5,4
     MET,FN_STMT,bar,void bar(int),test.c,14,6,13

7.3.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: FN_STMT, Up: Metrics

7.4 FN_UNRC

7.4.1 メトリックå

関数内ã®åˆ¶å¾¡ãŒåˆ°é”ã—ãªã„æ–‡ã®æ•°

7.4.2 内容

ã„ã‹ãªã‚‹æ¡ä»¶ã§ã‚‚実行ã•れるã“ã¨ã®ãªã„ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆã®æ•°ã‚’示ã—ã¾ã™ã€‚

7.4.3 サンプルコード

#include <stdlib.h>

int foo(int i)
{
    unsigned int ui;

    if (i < 0) {
        switch (i) {
        case -3:
            ui = 0;
            break;
        /* Control never reaches to this "case 3:" clause because "i" is less than 0 at this point */
        case 3:      /* This label is part of an unreachable labeled-statement, but it makes foo's FN_UNRC += 1 */
            ui = 1;  /* An unreachable labeled expression-statement makes FN_UNRC += 1 */
            break;   /* An unreachable jump-statement makes FN_UNRC += 1 */
        default:
            ui = 0;
        }

        /* "ui" is equal to 0 at this point */

        /*
         * The usual-arithmetic-conversion makes "i < ui" into "(unsigned int) i < ui".
         * Then, the value of "i" which is less than 0 will be converted into the new value which is greater than 0
         * because of the wrap-around.
         * So, "(value which is greater than 0) < 0" makes false at all times.
         */
        if (i < ui) {
            exit(0);  /* An unreachable expression-statement makes FN_UNRC += 1 */
        }
    }
    else {
        /* "i" is greater than or equal to 0 at this point */

        abort();  /* The abort() standard function terminates this execution path */
    }

    /* "i" is less than 0 at this point */

    if (i == 3) {   /* "(value which is less than 0) == 3" makes false at all times */
        return -1;  /* An unreachable jump-statement makes FN_UNRC += 1 */
    }

    return 0;

    /* foo's FN_UNRC == 5 */
}
     MET,FN_UNRC,foo,int foo(int),test.c,3,5,5

7.4.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: FN_UNRC, Up: Metrics

7.5 FN_LINE

7.5.1 メトリックå

関数内ã®ä¿å®ˆã‚³ãƒ¼ãƒ‰è¡Œæ•°

7.5.2 内容

関数定義ã®é–‹å§‹è¡Œã‹ã‚‰é–¢æ•°å®šç¾©ã®çµ‚了行ã¾ã§ã®ç‰©ç†è¡Œæ•°ã‚’示ã—ã¾ã™ã€‚

7.5.3 サンプルコード

int foo(void)  /* foo's function definition starts here */
{
    return 0;
}  /* foo's function definition ends here */

/* foo's FN_LINE == 3 */

int
bar  /* bar's function definition starts here */
(void)
{
    return 0;
}  /* bar's function definition ends here */

/* bar's FN_LINE == 5 */

int
baz  /* baz's old style function definition starts here */
(a)
int a;
{
    return 0;
}  /* baz's old style function definition ends here */

/* baz's FN_LINE == 6 */
     MET,FN_LINE,foo,int foo(void),test.c,1,5,3
     MET,FN_LINE,bar,int bar(void),test.c,8,1,5
     MET,FN_LINE,baz,int baz(int),test.c,17,1,6

7.5.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: FN_LINE, Up: Metrics

7.6 FN_PARA

7.6.1 メトリックå

関数ã®ä»®å¼•æ•°ã®æ•°

7.6.2 内容

関数定義ã®å¼•数リスト内ã«å®£è¨€ã•れãŸä»®å¼•æ•°ã®æ•°ã‚’示ã—ã¾ã™ã€‚

7.6.3 サンプルコード

int foo(int a, long b, char *p)
{
    return 0;
}
/* foo's FN_PARA == 3 */

int bar(a, b, p)  /* An old style function definition */
    long b;  /* A type-specifier of "a" is omitted */
    char *p;
{
    return 0;
}
/* bar's FN_PARA == 3 */
     MET,FN_PARA,foo,"int foo(int,long,char *)",test.c,1,5,3
     MET,FN_PARA,bar,"int bar(int,long,char *)",test.c,6,5,3

7.6.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: FN_PARA, Up: Metrics

7.7 FN_UNUV

7.7.1 メトリックå

é–¢æ•°å†…ã®æœªä½¿ç”¨ãŠã‚ˆã³å†ä½¿ç”¨ã•れãªã„å¤‰æ•°ã®æ•°

7.7.2 内容

使用ã•れãªã„ã«ã‚‚é–¢ã‚らãšå®£è¨€ã•れã¦ã„る変数ã€ãŠã‚ˆã³ã€å€¤ã‚’割り当ã¦ãŸå¾Œã«ä½¿ç”¨ã•れ ãªã„å¤‰æ•°ã®æ•°ã‚’示ã—ã¾ã™ã€‚

7.7.3 サンプルコード

void foo(int i, int j)  /* A useless declaration of "j" makes FN_UNUV += 1 */
{
    int a;
    int b;
    int c = 0;  /* A useless declaration of "c" makes FN_UNUV += 1 */

    if (i < 0) {
        a = -i;
    }
    else {
        a = i;
    }

    b = a * 2;  /* A useless assignment to "b" makes FN_UNUV += 1 */
    printf("%d\n", a);

    /* foo's FN_UNUV == 3 */
}
     MET,FN_UNUV,foo,"void foo(int,int)",test.c,1,6,3

7.7.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: FN_UNUV, Up: Metrics

7.8 FN_CSUB

7.8.1 メトリックå

関数内ã®å­é–¢æ•°ã‚³ãƒ¼ãƒ«ã®æ•°

7.8.2 内容

関数内ã«ã¦ä»–ã®é–¢æ•°ã‚’呼ã³å‡ºã™ç®‡æ‰€æ•°ã‚’示ã—ã¾ã™ã€‚

7.8.3 サンプルコード

extern int foo(int);

static int bar(int);

int baz(int i)
{
    int j = foo(i);  /* A function-call-expression makes baz's FN_CSUB += 1 */

    return foo(bar(j)); /* 2 function-call-expressions makes baz's FN_CSUB += 2 */

    /* baz's FN_CSUB == 3 */
}
     MET,FN_CSUB,baz,int baz(int),test.c,5,5,3

7.8.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: FN_CSUB, Up: Metrics

7.9 FN_CALL

7.9.1 メトリックå

ä»–ã®é–¢æ•°ã‹ã‚‰è¢«å‘¼ã³å‡ºã—箇所数

7.9.2 内容

該当ã™ã‚‹é–¢æ•°ãŒãƒ—ロジェクト中ã®ä»–ã®é–¢æ•°ã‹ã‚‰å‘¼ã³å‡ºã•れる箇所数を示ã—ã¾ã™ã€‚

7.9.3 サンプルコード

test1.c

int foo(int i) { return i + 1; }

int bar(int i)
{
    return foo(i) + 1;  /* A function-call-expression makes foo's FN_CALL += 1 */
}

test2.c

extern int bar(int);

static void baz(void)
{
    int i = bar(0);  /* A function-call-expression makes bar's FN_CALL += 1 and foo's FN_CALL += 1 */
}

project-name.met.csv

     MET,FN_CALL,foo,int foo(int),test1.c,1,5,2
     MET,FN_CALL,bar,int bar(int),test1.c,3,5,1
     MET,FN_CALL,baz,void baz(void),test2.c,3,13,0

7.9.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: FN_CALL, Up: Metrics

7.10 FN_GOTO

7.10.1 メトリックå

関数内㮠goto æ–‡ã®æ•°

7.10.2 内容

関数内ã«è¨˜ã•れ㟠goto æ–‡ã®æ•°ã‚’示ã—ã¾ã™ã€‚

7.10.3 サンプルコード

int foo(int i)
{
    switch (i) {
    case 0:
        goto ZERO;  /* A goto-statement makes foo's FN_GOTO += 1 */
    case 1:
        goto ONE;   /* A goto-statement makes foo's FN_GOTO += 1 */
    default:
        return 0;
    }

ZERO:
    return 1;

ONE:
    return 2;

    /* foo's FN_GOTO == 2 */
}
     MET,FN_GOTO,foo,int foo(int),test.c,1,5,2

7.10.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: FN_GOTO, Up: Metrics

7.11 FN_RETN

7.11.1 メトリックå

é–¢æ•°å†…ã®æˆ»ã‚Šç‚¹ã®æ•°

7.11.2 内容

実行ã•れる return æ–‡ã®æ•°ã€ãŠã‚ˆã³ã€é–¢æ•°æœ«å°¾ã«ã‚る暗黙㮠return æ–‡ ã®æ•°ã‚’示ã—ã¾ã™ã€‚

7.11.3 サンプルコード

void foo(int i)
{
    if (i < 0) {
        return;  /* A return-statement makes foo's FN_RETN += 1 */
    }

    if (i >= 10) {
        return;  /* A return-statement makes foo's FN_RETN += 1 */
    }
    else {
        for (; i < 10; i++) {
          printf("%d\n", i);
        }
    }

    /* An implicit return from the function whose return type is void makes foo's FN_RETN * += 1 */

    /* foo's FN_RETN == 3 */
}

int bar(int i)
{
    if (i < 0) {
        return -1;  /* A return-statement makes bar's FN_RETN += 1 */
    }

    if (i >= 10) {
        return -1;  /* A return-statement makes bar's FN_RETN += 1 */
    }
    else {
        for (; i < 10; i++) {
          printf("%d\n", i);
        }
    }

    return 0;  /* A return-statement makes bar's FN_RETN += 1 */

    /* bar's FN_RETN == 3 */
}
     MET,FN_RETN,foo,void foo(int),test.c,1,6,3
     MET,FN_RETN,bar,int bar(int),test.c,20,5,3

7.11.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: FN_RETN, Up: Metrics

7.12 FN_UELS

7.12.1 メトリックå

関数内ã®å®Œçµã—ã¦ã„ãªã„ if-else æ–‡ã®æ•°

7.12.2 内容

関数内㮠if-else æ–‡ã§ã€æ˜Žç¤ºçš„㪠else 節をæŒãŸãªã„ã‚‚ã®ã®æ•°ã‚’示ã—ã¾ ã™ã€‚

7.12.3 サンプルコード

int foo(int i)
{
    int j;

    if (i < 0) {
        return -1;
    }
    else {
        j = i + 1;
    }

    if (j % 2) {
        return -1;
    }
    /* A standalone if-statement does nothing to the FN_UELS metric */

    if (i == 2) {
        return 0;
    }
    else if (i == 4) {
        return 1;
    }
    /* An implicit else clause makes foo's FN_UELS += 1 */

    return 5;

    /* foo's FN_UELS == 1 */
}
     MET,FN_UELS,foo,int foo(int),test.c,1,5,1

7.12.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: FN_UELS, Up: Metrics

7.13 FN_NEST

7.13.1 メトリックå

関数内ã®ãƒã‚¹ãƒ†ã‚£ãƒ³ã‚°ã®æœ€æ·±æ®µæ•°

7.13.2 内容

関数内ã§åˆ¶å¾¡æ§‹é€ ã®ãƒã‚¹ãƒˆãŒä¸€ç•ªæ·±ã„部分ã®ãƒã‚¹ãƒˆæ®µæ•°ã‚’示ã—ã¾ã™ã€‚

7.13.3 サンプルコード

void foo(int i)
{
    /* Nesting level == 0 */

    if (i < 0) {
        /* Nesting level == 1 */

        switch (i) {
            /* Nesting level == 2 */
        case -1:
            return;
        case -2:
            puts("A\n");
            break;
        }

        /* Nesting level == 1 */
    }
    else {
        /* Nesting level == 1 */
        int j;
        int k;

        for (j = 0; j < i; j++) {
            /* Nesting level == 2 */

            for (k = 0; k < 10; k++) {
                /* Nesting level == 3 */

                if (j == k) {
                    /* Nesting level == 4 */
                    puts("B\n");
                }
            }
        }
    }

    /* foo's FN_NEST == 4 */
}
     MET,FN_NEST,foo,void foo(int),test.c,1,6,4

7.13.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: FN_NEST, Up: Metrics

7.14 FN_PATH

7.14.1 メトリックå

é–¢æ•°å†…ã®æŽ¨å®šé™çš„パス数

7.14.2 内容

関数ã®åˆ¶å¾¡ãƒ•ロー内ã§è€ƒãˆã‚‰ã‚Œã‚‹ã™ã¹ã¦ã®å®Ÿè¡ŒçµŒè·¯ã®æ•°ã‚’示ã—ã¾ã™ã€‚

7.14.3 サンプルコード

static int foo(int i)
{
    /* A */
    if (i == 0) {
        /* B */
        i = 0;
    }
    else {
        /* C */
        i = 1;
    }
    /* D */
    return i;

    /* Possible execute paths A->B->D and A->C->D makes foo's FN_PATH = 2 */
}

static int bar(int i)
{
    /* A */
    if (i == 0) {
        /* B */
        i = 0;
    }
    /* C */
    if (i == 1) {
        /* D */
        i = 1;
    }
    /* E */
    if (i == 2) {
        /* F */
        i = 2;
    }
    /* G */
    return i;

    /* Possible execute paths
         A->B->C->D->E->F->G,
         A->B->C->D->E->G,
         A->B->C->E->F->G,
         A->B->C->E->G,
         A->C->D->E->F->G,
         A->C->D->E->G,
         A->C->E->F->G,
         A->C->E->G
       makes bar's FN_PATH = 8 */
}

static int baz(int i)
{
    /* A */
    switch (i) {
    case 0:
        /* B */
        if (rand()) {
            /* C */
            i = 0;
        }
        else {
            /* D */
            i = 0;
        }
        /* E */
        i = 0;
        break;
    default:
        /* F */
        if (rand()) {
            /* G */
            i = 1;
        }
        else {
            /* H */
            i = 1;
        }
        /* I */
        i = 1;
        break;
    }
    /* J */
    return i;

    /* Possible execute paths
         A->B->C->E->J,
         A->B->D->E->J,
         A->F->G->I->J,
         A->F->H->I->J
       makes baz's FN_PATH = 4 */
}

static int qux(int i)
{
    /* A */
    while (i < 5) {
        /* B */
        if (i == 0) {
            /* C */
            return 0;
        }
        /* D */
        if (i == 1) {
            /* E */
            return 1;
        }
    }
    /* F */
    if (i == 2) {
        /* G */
        return 2;
    }
    /* H */
    return 3;

    /* Possible execute paths
         A->B->C,
         A->B->D->E,
         A->B->D->F->G,
         A->B->D->F->H,
         A->F->G,
         A->F->H
       makes qux's FN_PATH = 6 */
}
     MET,FN_PATH,foo,int foo(int),test.c,1,12,2
     MET,FN_PATH,bar,int bar(int),test.c,18,12,8
     MET,FN_PATH,baz,int baz(int),test.c,42,12,4
     MET,FN_PATH,qux,int qux(int),test.c,80,12,6

7.14.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Previous: FN_PATH, Up: Metrics

7.15 FN_CYCM

7.15.1 メトリックå

関数ã®çµŒè·¯è¤‡é›‘度

7.15.2 内容

McCabe(マッケーブ)ã®æå”±ã—ãŸãƒ¡ãƒˆãƒªãƒƒã‚¯ã§ã€ãƒ—ログラムを構æˆã™ã‚‹ç·šä¸Šã«ã‚る独立㗠ãŸãƒ‘ã‚¹ã®æ•°ã‚’示ã—ã¾ã™ã€‚

計算å¼ã€Œåˆ¶å¾¡ãƒ•ローグラフã®ã‚¨ãƒƒã‚¸æ•° - ノード数 + 2ã€ã§ç®—出ã—ã€é–¢æ•°ä¸­ã®åˆ† å²ã®æ•°ã« 1 ã‚’è¶³ã—ãŸã‚‚ã®ã«ç­‰ã—ããªã‚Šã¾ã™ã€‚

7.15.3 サンプルコード

static int foo(int i)
{
    if (i == 0) {  /* Complexity += 1 */
        i = 0;
    }
    else {  /* An else branch does not grow the complexity */
        i = 1;
    }
    return i;

    /* foo's FN_CYCM == 2 */
}

static int bar(int i)
{
    if (i == 0) {  /* Complexity += 1 */
        i = 0;
    }
    if (i == 1) {  /* Complexity += 1 */
        i = 1;
    }
    if (i == 2) {  /* Complexity += 1 */
        i = 2;
    }
    return i;

    /* bar's FN_CYCM == 4 */
}

static int baz(int i)
{
    switch (i) {
    case 0:  /* Complexity += 1 */
        if (rand()) {  /* Complexity += 1 */
            i = 0;
        }
        else {  /* An else branch does not grow the complexity */
            i = 0;
        }
        i = 0;
        break;
    default:  /* A default clause does not grow the complexity */
        if (rand()) {  /* Complexity += 1 */
            i = 1;
        }
        else {  /* An else branch does not grow the complexity */
            i = 1;
        }
        i = 1;
        break;
    }
    return i;

    /* baz's FN_CYCM == 4 */
}

static int qux(int i)
{
    while (i < 5) {  /* An iteration does not grow the complexity */
        if (i == 0) {  /* Complexity += 1 */
            return 0;
        }
        if (i == 1) {  /* Complexity += 1 */
            return 1;
        }
    }
    if (i == 2) {  /* Complexity += 1 */
        return 2;
    }
    return 3;

    /* qux's FN_CYCM == 4 */
}
     MET,FN_CYCM,foo,int foo(int),test.c,1,12,2
     MET,FN_CYCM,bar,int bar(int),test.c,13,12,4
     MET,FN_CYCM,baz,int baz(int),test.c,28,12,4
     MET,FN_CYCM,qux,int qux(int),test.c,54,12,4

7.15.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: Metrics, Up: Top

8 コード情報一覧


Next: , Up: CodeStructures

8.1 VER

8.1.1 コード情報å

ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ¬ã‚³ãƒ¼ãƒ‰

8.1.2 内容

è§£æžã«ä½¿ç”¨ã—㟠AdLint ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚„ã€å®Ÿè¡Œæ—¥æ™‚を記録ã—ã¾ã™ã€‚

8.1.3 サンプルコード

ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ¬ã‚³ãƒ¼ãƒ‰ã®å‡ºåŠ›ä¾‹ã‚’å‚照。

8.1.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: VER, Up: CodeStructures

8.2 DCL(T)

8.2.1 コード情報å

型宣言レコード

8.2.2 内容

typedefã€structã€unionã€enum ã«ã‚ˆã‚‹åž‹å®£è¨€ã«ã¤ã„ã¦ã€ 宣言ä½ç½®ã€åž‹ã®ç¨®åˆ¥ã€åž‹åãªã©ã‚’出力ã—ã¾ã™ã€‚

8.2.3 サンプルコード

宣言レコードã®å‡ºåŠ›ä¾‹ã‚’å‚照。

8.2.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: DCL(T), Up: CodeStructures

8.3 DCL(V)

8.3.1 コード情報å

外部変数宣言レコード

8.3.2 内容

外部リンケージをæŒã¤ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã®å®£è¨€ã«ã¤ã„ã¦ã€å®£è¨€ä½ç½®ã€å¤‰æ•°åã€å¤‰æ•°åž‹ã‚’出 力ã—ã¾ã™ã€‚

8.3.3 サンプルコード

宣言レコードã®å‡ºåŠ›ä¾‹ã‚’å‚照。

8.3.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: DCL(V), Up: CodeStructures

8.4 DCL(F)

8.4.1 コード情報å

関数宣言レコード

8.4.2 内容

外部リンケージをæŒã¤é–¢æ•°å®£è¨€ã«ã¤ã„ã¦ã€å®£è¨€ä½ç½®ã€é–¢æ•°åã€é–¢æ•°ã‚·ã‚°ãƒ‹ãƒãƒ£æƒ…報を出 力ã—ã¾ã™ã€‚

8.4.3 サンプルコード

宣言レコードã®å‡ºåŠ›ä¾‹ã‚’å‚照。

8.4.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: DCL(F), Up: CodeStructures

8.5 DEF(V)

8.5.1 コード情報å

変数定義レコード

8.5.2 内容

関数ã®ä»®å¼•æ•°ã‚’å«ã‚€å…¨ã¦ã®å¤‰æ•°å®šç¾©ã«ã¤ã„ã¦ã€å®šç¾©ä½ç½®ã€å¤‰æ•°åã€å¤‰æ•°åž‹ãªã©ã‚’出力㗠ã¾ã™ã€‚

8.5.3 サンプルコード

定義レコードã®å‡ºåŠ›ä¾‹ã‚’å‚照。

8.5.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: DEF(V), Up: CodeStructures

8.6 DEF(F)

8.6.1 コード情報å

関数定義レコード

8.6.2 内容

å…¨ã¦ã®é–¢æ•°å®šç¾©ã«ã¤ã„ã¦ã€å®šç¾©ä½ç½®ã€é–¢æ•°åã€é–¢æ•°ã‚·ã‚°ãƒ‹ãƒãƒ£ãªã©ã‚’出力ã—ã¾ã™ã€‚

8.6.3 サンプルコード

定義レコードã®å‡ºåŠ›ä¾‹ã‚’å‚照。

8.6.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: DEF(F), Up: CodeStructures

8.7 DEF(M)

8.7.1 コード情報å

マクロ定義レコード

8.7.2 内容

ã™ã¹ã¦ã®ãƒžã‚¯ãƒ­å®šç¾©ã«ã¤ã„ã¦ã€å®šç¾©ä½ç½®ã€ãƒžã‚¯ãƒ­åã€ãƒžã‚¯ãƒ­ã®ç¨®åˆ¥ã‚’出力ã—ã¾ã™ã€‚

8.7.3 サンプルコード

定義レコードã®å‡ºåŠ›ä¾‹ã‚’å‚照。

8.7.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: DEF(M), Up: CodeStructures

8.8 DEF(L)

8.8.1 コード情報å

ラベル定義レコード

8.8.2 内容

関数内ã®å…¨ã¦ã®ãƒ©ãƒ™ãƒ«ã«ã¤ã„ã¦ã€å®šç¾©ä½ç½®ã€ãƒ©ãƒ™ãƒ«åを出力ã—ã¾ã™ã€‚

8.8.3 サンプルコード

定義レコードã®å‡ºåŠ›ä¾‹ã‚’å‚照。

8.8.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: DEF(L), Up: CodeStructures

8.9 INI

8.9.1 コード情報å

åˆæœŸåŒ–レコード

8.9.2 内容

変数定義時ã®åˆæœŸåŒ–ã«ã¤ã„ã¦ã€åˆæœŸåŒ–ä½ç½®ã€åˆæœŸåŒ–ã™ã‚‹å¤‰æ•°åã€åˆæœŸå€¤ã‚’出力ã—ã¾ã™ã€‚

8.9.3 サンプルコード

åˆæœŸåŒ–レコードã®å‡ºåŠ›ä¾‹ã‚’å‚照。

8.9.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: INI, Up: CodeStructures

8.10 ASN

8.10.1 コード情報å

代入å¼ãƒ¬ã‚³ãƒ¼ãƒ‰

8.10.2 内容

変数ã¸ã®ä»£å…¥å¼ã«ã¤ã„ã¦ã€ä»£å…¥å¼ã®ä½ç½®ã€ä»£å…¥ã™ã‚‹å¤‰æ•°åã€ä»£å…¥å€¤ã‚’出力ã—ã¾ã™ã€‚

8.10.3 サンプルコード

代入å¼ãƒ¬ã‚³ãƒ¼ãƒ‰ã®å‡ºåŠ›ä¾‹ã‚’å‚照。

8.10.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: ASN, Up: CodeStructures

8.11 DEP(I)

8.11.1 コード情報å

インクルードレコード

8.11.2 内容

#include ディレクティブã§ä»–ã®ãƒ•ァイルをインクルードã—ãŸå ´åˆã«ã€ #include ディレクティブã®ä½ç½®ã€ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã™ã‚‹ãƒ•ァイルã®ãƒ‘スåを出力㗠ã¾ã™ã€‚

8.11.3 サンプルコード

ä¾å­˜ãƒ¬ã‚³ãƒ¼ãƒ‰ã®å‡ºåŠ›ä¾‹ã‚’å‚照。

8.11.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: DEP(I), Up: CodeStructures

8.12 DEP(C)

8.12.1 コード情報å

呼ã³å‡ºã—レコード

8.12.2 内容

関数ã‹ã‚‰ä»–ã®é–¢æ•°ã‚’呼ã³å‡ºã—ãŸå ´åˆã€å‘¼ã³å‡ºã—ä½ç½®ã€å‘¼ã³å‡ºã—å…ƒã®é–¢æ•°åã€å‘¼ã³å‡ºã—å…ˆ ã®é–¢æ•°åãªã©ã‚’出力ã—ã¾ã™ã€‚

8.12.3 サンプルコード

ä¾å­˜ãƒ¬ã‚³ãƒ¼ãƒ‰ã®å‡ºåŠ›ä¾‹ã‚’å‚照。

8.12.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: DEP(C), Up: CodeStructures

8.13 DEP(X)

8.13.1 コード情報å

外部å‚照レコード

8.13.2 内容

関数ã‹ã‚‰ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’アクセスã€é–¢æ•°ã‹ã‚‰ä»–ã®é–¢æ•°ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å‚ç…§ã—ãŸå ´åˆã«ã€ アクセスä½ç½®ã€ã‚¢ã‚¯ã‚»ã‚¹å…ƒã®é–¢æ•°åã€ã‚¢ã‚¯ã‚»ã‚¹å…ˆã®ã‚ªãƒ–ジェクトåãªã©ã‚’出力ã—ã¾ã™ã€‚

8.13.3 サンプルコード

ä¾å­˜ãƒ¬ã‚³ãƒ¼ãƒ‰ã®å‡ºåŠ›ä¾‹ã‚’å‚照。

8.13.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: DEP(X), Up: CodeStructures

8.14 LIT

8.14.1 コード情報å

リテラルレコード

8.14.2 内容

å®šæ•°ã€æ–‡å­—列リテラルを使用ã—ãŸå ´åˆã€ä½¿ç”¨ã—ãŸä½ç½®ã€å®šæ•°ã‚„文字列リテラルã®å†…容㪠ã©ã‚’出力ã—ã¾ã™ã€‚

8.14.3 サンプルコード

リテラルレコードã®å‡ºåŠ›ä¾‹ã‚’å‚照。

8.14.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Previous: LIT, Up: CodeStructures

8.15 PRE

8.15.1 コード情報å

プリプロセスレコード

8.15.2 内容

プリプロセッサディレクティブã«ã¤ã„ã¦ã€ä½¿ç”¨ä½ç½®ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–åã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ ãƒ–ã«æŒ‡å®šã—ãŸå¼•数を出力ã—ã¾ã™ã€‚

8.15.3 サンプルコード

プリプロセスレコードã®å‡ºåŠ›ä¾‹ã‚’å‚照。

8.15.4 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³

1.0.0


Next: , Previous: CodeStructures, Up: Top

Appendix A 付録

A.1 スクリーンショット

A.1.1 Adqua ã¨ã®é€£æº

AdLint ã®é™çš„è§£æžçµæžœã‚’ Adqua ã§å‡¦ç†ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰å“質を定é‡çš„㫠評価ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

Adqua ã¯æ ªå¼ä¼šç¤¾ã‚ªãƒ¼ã‚¸ã‚¹ç·ç ”ã‹ã‚‰å…¥æ‰‹å¯èƒ½ã§ã™ 。詳ã—ã㯠Adqua 製 哿ƒ…報をã”覧ãã ã•ã„。

adlint_on_adqua.png

A.1.2 テキストエディタ Vim ã¨ã®é€£æº

AdLint ã¯ã€æ¨™æº–çš„ãªã‚³ãƒ³ãƒ‘イラã¨åŒæ§˜ã®å½¢å¼ã§è­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’出力ã™ã‚‹ã®ã§ã€ãƒ†ã‚­ã‚¹ トエディタã¨å®¹æ˜“ã«é€£æºã—ã¦é–‹ç™ºä¸­ã«ã‚³ãƒ¼ãƒ‰ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

adlint_on_vim_ja.png

A.1.3 çµ±åˆé–‹ç™ºç’°å¢ƒ Eclipse ã¨ã®é€£æº

AdLint ã¯ã€æ¨™æº–çš„ãªã‚³ãƒ³ãƒ‘イラã¨åŒæ§˜ã®å½¢å¼ã§è­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’出力ã™ã‚‹ã®ã§ã€çµ±åˆé–‹ 発環境ã¨å®¹æ˜“ã«é€£æºã—ã¦é–‹ç™ºä¸­ã«ã‚³ãƒ¼ãƒ‰ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

adlint_on_eclipse_ja.png

A.2 特性ファイルã®ã‚µãƒ³ãƒ—ル

#     ___    ____  __    ___   _________
#    /   |  / _  |/ /   / / | / /__  __/           Source Code Static Analyzer
#   / /| | / / / / /   / /  |/ /  / /                   AdLint - Advanced Lint
#  / __  |/ /_/ / /___/ / /|  /  / /
# /_/  |_|_____/_____/_/_/ |_/  /_/   Copyright (C) 2010-2014, OGIS-RI Co.,Ltd.
#
# This file is part of AdLint.
#
# 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/>.
#

# Schema version of the traits file.
# DO NOT EDIT MANUALLY!
version: "3.0.0"

# List of names of source code examination packages.
#
# "c_builtin" is a builtin source code examination package for C language.
# You can install optional examination packages and append (or replace) this
# list to specify which examination packages are to be run.
exam_packages:
  - "c_builtin"

#
# Project specific traits section
#
project_traits:

  # Project name.
  project_name: "screen-4.0.3"

  # Project root directory.
  project_root: ".."

  # Analysys target selection.
  # Ex.
  #   target_files:
  #     inclusion_paths:
  #       - "../foo"
  #       - "../bar"
  #     exclusion_paths:
  #       - "../bar/baz"
  target_files:
    inclusion_paths:
      - ".."
    exclusion_paths:

  # Pathname of the project specific initial header file.
  # This header file is automatically included above the first line of the
  # target source file.
  initial_header: "adlint_pinit.h"

  # Project specific additional include paths.
  # Ex.
  #   file_search_paths:
  #     - "include/foo"
  #     - "../include/bar"
  #     - "/opt/baz/include"
  file_search_paths:
    - "../screen-4.0.3"

  #
  # Project specific coding style section
  #
  coding_style:

    # Indent style which is a convention governing the identation of blocks.
    # Select from "K&R", "Allman" and "GNU".
    #
    # The value "K&R" means...
    #   int foo(int i)
    #   {
    #       if (i == 0) {
    #           return 0;
    #       }
    #       return i;
    #   }
    #
    # The value "Allman" means...
    #   int foo(int i)
    #   {
    #       if (i == 0)
    #       {
    #           return 0;
    #       }
    #       return i;
    #   }
    #
    # The value "GNU" means...
    #   int
    #   foo(int i)
    #   {
    #     if (i == 0)
    #       {
    #         return 0;
    #       }
    #     return i;
    #   }
    indent_style: "GNU"

    # Appearance width of a TAB character.
    tab_width: 8

    # Appearance width of 1-level of the indentation.
    indent_width: 2

  # Character encoding of source files.
  file_encoding:

#
# Compiler specific traits section
#
compiler_traits:

  # Pathname of the compiler specific initial header file.
  # This header file is automatically included above the first line of the
  # project specific initial header file.
  initial_header: "adlint_cinit.h"

  # Compiler specific include paths.
  # Ex.
  #   file_search_paths:
  #     - "/usr/include"
  #     - "/usr/local/include"
  file_search_paths:
    - "/usr/local/include"
    - "/usr/include"
    - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include"

  #
  # Compiler specific standard type section
  #
  standard_types:

    # Bit size of the `char' type family.
    char_size: 8
    # Bit size of the alignment of the `char' type family.
    char_alignment: 8

    # Bit size of the `short' type family.
    short_size: 16
    # Bit size of the alignment of the `short' type family.
    short_alignment: 16

    # Bit size of the `int' type family.
    int_size: 32
    # Bit size of the alignment of the `int' type family.
    int_alignment: 32

    # Bit size of the `long int' type family.
    long_size: 32
    # Bit size of the alignment of the `long int' type family.
    long_alignment: 32

    # Bit size of the `long long int' type family.
    long_long_size: 64
    # Bit size of the alignment of the `long long int' type family.
    long_long_alignment: 64

    # Bit size of the `float' type.
    float_size: 32
    # Bit size of the alignment of the `float' type.
    float_alignment: 32

    # Bit size of the `double' type.
    double_size: 64
    # Bit size of the alignment of the `double' type.
    double_alignment: 64

    # Bit size of the `long double' type.
    long_double_size: 96
    # Bit size of the alignment of the `long double' type.
    long_double_alignment: 96

    # Bit size of the pointer to functions.
    code_ptr_size: 32
    # Bit size of the alignment of the pointer to functions.
    code_ptr_alignment: 32

    # Bit size of the pointer to data.
    data_ptr_size: 32
    # Bit size of the alignment of the pointer to data.
    data_ptr_alignment: 32

    # Treat the `char' type as same as the `unsigned char' type?
    char_as_unsigned_char: true

  # Treat the `>>' operator as a logical shift, not an arithmetic shift?
  arithmetic:
    logical_right_shift: true

  # Max length of all symbols can be identified by the compiler.
  identifier_max: 128

  # Token substitution setting to warn the use of compiler specific extensions.
  #
  # If your compiler supports `__attribute__(...)' extension and you want to
  # know the use of this extension, specify as below.
  #   extension_substitutions:
  #     "__attribute__(__adlint__any)": ""
  # The token sequence consists of `__attribute__', `(', any kind of tokens,
  # `)' will be replaced with nothing (erased) after the preprocessing phase.
  # And this substitution will be warned by the message W0061.
  extension_substitutions:
    "__extension__": ""
    "__attribute__(__adlint__any)": ""
    "__inline__": "inline"
    "__asm__ __adlint__any(__adlint__any)": ""

  # Token substitution setting to silently ignore the use of compiler specific
  # extensions.
  #
  # If your compiler supports `__asm__ volatile (...)' extension and you do not
  # mind the use of this extension, specify as below.
  #   arbitrary_substitutions:
  #     "__asm__ __adlint__any(__adlint__any)": ""
  # The token sequence consists of `__asm__', any kind of tokens, `(', any kind
  # of tokens, `)' will be replaced with nothing (erased) silently after the
  # preprocessing phase.
  arbitrary_substitutions:
    "typeof": "__typeof__"
    "__typeof": "__typeof__"
    "alignof": "__alignof__"
    "__alignof": "__alignof__"
    "__signed__": "signed"

#
# Linker specific traits section
#
linker_traits:

  # Max length of external symbols can be identified by the linker.
  identifier_max: 128

  # Are external symbols identified without case by the linker?
  identifier_ignore_case: false

#
# Message traits section
#
message_traits:

  # Language of the message text.
  # Currently, "en_US" and "ja_JP" are supported.
  # Please help to translate the message catalog into your language.
  language: "ja_JP"

  # Enable inline annotation based message suppression?
  individual_suppression: true

  # Project-wide code check exclusion settings.
  # Ex.
  #   exclusion:
  #     categories:
  #       - "REL"
  #       - "PRT"
  #     severities: "[ABC][5-9][0-9]"
  #     messages:
  #       W0001: "c_builtin"
  #       W0002: "c_ansi"
  exclusion:

  # Project-wide code check inclusion settings.
  # Ex.
  #   inclusion:
  #     messages:
  #       W0001: "c_builtin"
  #       W0002: "c_ansi"
  inclusion:

  # Message text replacement.
  # Ex.
  #   change_list:
  #     W9999:
  #       package: "c_builtin"
  #       classes:
  #         - "REL:A10"
  #         - "PRT:B20"
  #       format: "Your custom message for the warning of W9999."
  #     X9999:
  #       package: "core"
  #       classes:
  #         - "ERR:X99"
  #       format: "Your custom message for the warning of X9999."
  #     E9999:
  #       package: "core"
  #       classes:
  #         - "ERR:X99"
  #       format: "Your custom message for the warning of E9999."
  change_list:

A.3 è§£æžæ‰‹é † GNUmakefile ã®ã‚µãƒ³ãƒ—ル

#     ___    ____  __    ___   _________
#    /   |  / _  |/ /   / / | / /__  __/           Source Code Static Analyzer
#   / /| | / / / / /   / /  |/ /  / /                   AdLint - Advanced Lint
#  / __  |/ /_/ / /___/ / /|  /  / /
# /_/  |_|_____/_____/_/_/ |_/  /_/   Copyright (C) 2010-2014, OGIS-RI Co.,Ltd.
#
# This file is part of AdLint.
#
# 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/>.
#
# How...
#   - to validate configuration files
#     % make check
#   - to analyze whole project with compiler like messages
#     % make all
#   - to do only single module analyses with compiler like messages
#     % make sma-only
#   - to analyze whole project with progress report
#     % make verbose-all
#   - to do only single module analyses with progress report
#     % make verbose-sma-only
#   - to do only cross module analysis with progress report
#     % make verbose-cma-only
#   - to analyze whole project *FAST* on 4-core processor machine
#     % make -j 4 all
#   - to analyze whole project *FAST* and silently with elapsed time
#     % time make -j 4 all 2>/dev/null
#   - to delete all result files
#     % make clean
#

PROJECT = screen-4.0.3

SOURCES = \
  screen-4.0.3/screen.c \
  screen-4.0.3/ansi.c \
  screen-4.0.3/fileio.c \
  screen-4.0.3/mark.c \
  screen-4.0.3/misc.c \
  screen-4.0.3/resize.c \
  screen-4.0.3/socket.c \
  screen-4.0.3/search.c \
  screen-4.0.3/tty.c \
  screen-4.0.3/term.c \
  screen-4.0.3/window.c \
  screen-4.0.3/utmp.c \
  screen-4.0.3/loadav.c \
  screen-4.0.3/putenv.c \
  screen-4.0.3/help.c \
  screen-4.0.3/termcap.c \
  screen-4.0.3/input.c \
  screen-4.0.3/attacher.c \
  screen-4.0.3/pty.c \
  screen-4.0.3/process.c \
  screen-4.0.3/display.c \
  screen-4.0.3/comm.c \
  screen-4.0.3/kmapdef.c \
  screen-4.0.3/acls.c \
  screen-4.0.3/braille.c \
  screen-4.0.3/braille_tsi.c \
  screen-4.0.3/logfile.c \
  screen-4.0.3/layer.c \
  screen-4.0.3/sched.c \
  screen-4.0.3/teln.c \
  screen-4.0.3/nethack.c \
  screen-4.0.3/encoding.c

VPATH = ..
VPATH_COMPONENTS = 1

RUBY = ruby

ADLINT = adlint
ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS)

ADLINT_SMA = adlint_sma
ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS)

ADLINT_CMA = adlint_cma
ADLINT_CMA_FLAGS = -t adlint_traits.yml -o .

ADLINT_CHK = adlint_chk
ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS)

RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)'

VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES))

SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES))
SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES))
SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES)))
SMA_LOG_FILES = $(addsuffix .log, $(SOURCES))

CMA_MSG_FILE = $(PROJECT).msg.csv
CMA_MET_FILE = $(PROJECT).met.csv
CMA_LOG_FILE = $(PROJECT).log

.SUFFIXES:

%.c.msg.csv %.c.met.csv : %.c
	$(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $<

$(CMA_MET_FILE) : $(SMA_MET_FILES)
	$(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^

.PHONY: adlint_sma-all
adlint_sma-all : $(SMA_MET_FILES)

.PHONY: adlint_cma-all
adlint_cma-all : $(CMA_MET_FILE)

.PHONY: adlint_chk-all
adlint_chk-all :
	$(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES)

.PHONY: adlint_verbose-all
adlint_verbose-all :
	$(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES)

.PHONY: adlint_verbose-sma-only
adlint_verbose-sma-only :
	$(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES)

.PHONY: adlint_verbose-cma-only
adlint_verbose-cma-only : $(SMA_MET_FILES)
	$(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^

.PHONY: adlint_clean
adlint_clean :
	@$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \
	       $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE)

.PHONY: all
all : adlint_cma-all

.PHONY: sma-only
sma-only : adlint_sma-all

.PHONY: verbose-all
verbose-all : adlint_verbose-all

.PHONY: verbose-sma-only
verbose-sma-only : adlint_verbose-sma-only

.PHONY: verbose-cma-only
verbose-cma-only : adlint_verbose-cma-only

.PHONY: check
check : adlint_chk-all

.PHONY: clean
clean : adlint_clean


Previous: Appendix, Up: Top

索引

adlint-3.2.14/share/doc/developers_guide_ja.html0000644000004100000410000002445412340630463021652 0ustar www-datawww-data AdLint 3.2.14 開発者ガイド

AdLint 3.2.14 開発者ガイド


Next: , Up: (dir)

å°Žå…¥

ライセンス

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/>.

開発環境

åç§° ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 用途
Ruby 2.1.0p0 ベースã¨ãªã‚‹å®Ÿè£…言語
Racc 1.4.10 構文解æžå™¨ã®ç”Ÿæˆ
RSpec 2.14.7 å˜ä½“仕様ã®è¨˜è¿°ã¨å›žå¸°ãƒ†ã‚¹ãƒˆ
Cucumber 1.3.10 機能仕様ã®è¨˜è¿°ã¨å›žå¸°ãƒ†ã‚¹ãƒˆ

文書化環境

利用者ガイドã€é–‹ç™ºè€…ガイドãªã©ã®æ–‡æ›¸åŒ–ã«ã¯ GNU Texinfo を使用ã™ã‚‹ã€‚

コーディングè¦ç´„

Ruby è¨€èªžã‚³ãƒ¼ãƒ‰ã®æ•´å½¢ã¯ã€http://shugo.net/ruby-codeconv/codeconv.html 㫠従ã†ã€‚ãŸã ã—ã€return ã¯åŽŸå‰‡ã¨ã—ã¦ä½¿ç”¨ã—ãªã„。

Ruby 言語ソースをå«ã‚€å…¨ã¦ã®ãƒ†ã‚­ã‚¹ãƒˆãƒ•ァイル㯠UTF-8 ã§ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã—ã€æ”¹è¡Œæ–‡å­—㯠LF ã¨ã™ã‚‹ã€‚

目次


Next: , Previous: Top, Up: Top

1 アーキテクãƒãƒ£

追記予定。


Next: , Previous: Architecture, Up: Top

2 略語一覧

object                 -> obj
variable               -> var
function               -> fun
value                  -> val
expression             -> expr
interpreter            -> interp
array                  -> ary
pointer                -> ptr
subscript              -> subs
alignment              -> align
declaration            -> dcl
declarator             -> dcr
definition             -> def
enumerator             -> enum
member                 -> memb
element                -> elem
original               -> orig
converted              -> conved
conversion             -> conv
arithmetic             -> arith
alternative            -> alt
manipulator            -> manip
sequence-point         -> seqp
operator               -> op
initializer            -> init
source                 -> src
destination            -> dst
translation-unit       -> tunit
parameter              -> param
constant               -> const
specifier              -> spec
controlling            -> ctrl
reference              -> ref
dereference            -> deref
statement              -> stmt
controlling-expression -> ctrlexpr
option                 -> opt
options                -> opts
first                  -> fst
second                 -> snd
last                   -> lst
location               -> loc
composite              -> cmp
identifier             -> id
substitute             -> sub
indirection            -> ind
category               -> cat
severity               -> sev
complement             -> comp
message                -> msg
metric                 -> met
package                -> pkg
representation         -> rep
assignment             -> assign
literal                -> lit
directive              -> dire
count                  -> cnt
signature              -> sig
suppress               -> supp
version                -> ver
storage-class          -> sc
command                -> cmd
file-path              -> fpath
directory-path         -> dpath
length                 -> len
content                -> cont
context                -> ctxt
exception              -> ex
template               -> tmpl
format                 -> fmt
return                 -> ret
current                -> cur
replacement            -> repl
index                  -> idx
modifier               -> mod
environment            -> env
precision              -> prec
cyclomatic-complexity  -> cycle_compl
token                  -> tok
next                   -> nxt
encoding               -> enc
annotation             -> annot
pathname               -> path
user                   -> usr
system                 -> sys
new-line               -> nl
table                  -> tbl
abstract-syntax-tree   -> ast
pattern                -> ptn
condition              -> cond
collector              -> col
branch                 -> br
function-call          -> funcall
program                -> prog
address                -> addr
memory                 -> mem
window                 -> win
anonymous              -> anon
qualifier              -> qual
symbol                 -> sym
candidate              -> cand
terminator             -> term
initiator              -> init
selection              -> sel
global-variable        -> gvar
record                 -> rec
referrer               -> ref
cross-reference        -> xref
monitor                -> mon
iteration              -> iter
local-variable         -> lvar
previous               -> prv
operation              -> op
extractor              -> extr
enclosure              -> encl
relational             -> relat
equality               -> equal
logical-and            -> land
logical-or             -> lor
relationship           -> relat
prototype              -> proto
termination            -> term
result                 -> rslt
operand                -> ope
domain                 -> dom
qualified              -> qualed
error                  -> err
project                -> proj
temporary              -> tmp
referrer-function      -> ref_fun
sample                 -> smpl
representative         -> repr
descendant             -> desc
transition             -> trans
contributor            -> contrib
positive               -> pos
negative               -> neg
evidence               -> evid
traversal              -> trav
increment              -> inc
decrement              -> dec
prefix-increment       -> preinc
prefix-decrement       -> predec
postfix-increment      -> pstinc
postfix-decrement      -> pstdec
string-literal         -> strlit
compound-literal       -> complit
exclusive-or           -> xor
inclusive-or           -> ior


Previous: Abbreviation, Up: Top

索引

adlint-3.2.14/share/doc/adlint_on_vim_ja.png0000644000004100000410000033265712340630463020776 0ustar www-datawww-data‰PNG  IHDRbš—5’sBIT|dˆtEXtSoftwaregnome-screenshotï¿> IDATxœì{|ŒWúÀ¿3™™ÜD"’ ’ A¥(—RTmݺ«­î¶ÝJ·]-[TÛ¥D«íö¶­km±ªz Uwê²­û] ‚܉È=™d$™™óû#1„™w&“ªçûùÌ'™yßó\Îóœ3gÎ{Þ÷€D"‘H$‰D"‘H$‰D"‘H$‰D"‘H$‰D"‘HîUTv>·÷W"‘H$‰Dbaï¯ÆJ!UJJŠù¶š%‘H$‰DrV‡ŠA—Ì7ýÖb„††Þ~ %‰D"‘HîARSS<¨x™ÓMÍØšÈ/,¬ ;%‰D"‘HîU<©xoø«ªü+•Í1Ìòê¤D"‘H$I ð bÐå”s}½år¥Í1!„•C‰D"‘H$ñ¤bvó Ì\ùÞöŒ˜YΈI$÷4ï½÷|ðùË_øè£ìž/„ ,, ½^ÏÞ½{iÑ¢E-Xy{¹}’H$wžT̆Ý<s£âR¥ÕÅú'[™Û´y³Ãšôï_C%I 9á]»v¥¬¬ŒˆˆöìÞ­x~ÂéÓDµn B’’B§Î8zäMš4©rþ•ÌL"##Ñj44 ·ÚGX£]t4ééélذÎ:9áYõ1Ü×´)eee>>¸¹¹‘ŸŸÏ™³giݺ5eeeÌŠÅ7ß~ƒV£åŸÓþIrr ‘‘­0™ÇÇЦM«íwÞ¼y¼=ýmÌ‚… ,ï{õêEPpë×­G«ÕòÑÇ1`À¶þ´•gžyÆR><¼9†¤ä$ÜÝÝo‘¿dñ/^Lrr2~~~üiÄŸxýõ×Ñh4vuY#2²%§O'pæìYúôí À{ï}€Á` ï#}éÚ­ŸÏ™kÕ§¾ô¥aƒ†üðÃ4iÒ„EÿYÄ×Ë¿æë¯¿ÆÝÝöozõêU£˜I$ÇqvìQÛå¬àNÕAX9ƒ°k1…1'RB˜kT^"‘TŸéÓ¦#„`Ô¨QìÙ³‡ýû÷súÔiZµlÀ„W'GHH111L}}*F£‘   êÖ­‹0 Nœ8T Ĭµß“ñ'hݺ5Â,,ïwíÚň#hÚ´)ñññ|üÑÇôï×ooo:vìÈáljˆˆ gÏžøûû£Óên‘?mÚ4.\H£F1bëׯgÎçsðòôb„ vuY#22€sgÏ!Ì‚¤¤$V¬X››o¾ñfnöiÇöôìÙFÙ3gøè@Z¶l‰ŸŸçÏŸçã>¦gž5Š™D"qÎŽ=j¡œ–Š˜†ŠuaUa ð@W[‹õM&“¢Ækåäb‰¤vزe ûöíÃÇLJ1cÆ‘‘ÁþýûIHHÀl6süøqâââðôôdÍš5ãççÇ‚ hÕª•¥­ÆÇẄµnÝÚjû=uêT•ã×Þ?ž &°råJþþ÷¿£R©0›ÍtîÜ™fÍšqøðaÌ+¯¼ÜÚ7œ:uŠ… âííÍÚµkiذ!ááá̘1ƒíÛ·óÊ+¯ØÕeˆˆÎ;‡ÙlæwÞÁh4òôÓOÓ¢E‹*>ÜìÓèÑ£yë­·˜8q"ß|ó ÑÑÑ|ûí·,_¾œI“&¡V«e'‘Ô"ÎŽ=j»œ3Øž³±hÕÞc-®—¿Hn?F£‘Y³fƒÂÃÃHHH@Áÿþ÷?ºwïNPPP•¶ÙªU+„dggsåÊ rFì¦ök49wLyy¹åýðáÃBœœ\Eæ5 bvÊVŸðÓO?ðÐCÑ A„F¼¼¼Öu3×b‰‰‰9r„ 6àééÉ?þñ‹[>=õÔSUôܬWɉDâzœ{Ôv9g1‰ä7Ì×_Mbb"}ôQ•ÇP\ˆåççP§N„˜L&¶oß\P\› óðð <<ü–ö{îÜ9ÊËË©W¯ 6$!!òòr|}}iÒ¤ BNž¬¸¬wmpd6›9{ö,-[¶´Ù' R©,¤5kÖЧO‹n%]Ö¸ï¾ûððð ??Ÿ)S¦0fÌBØôÉÇLJ°°°*3dÑÑÑUô¶nÝZöqI-ò»ˆ™lL·Ù›†»vÜVy‰D⊋‹-¯Î]ºÐ AÊËÊØ¼y3iiiéõ´ª\°ÿÓO?ñùœ9>tÈ2ó‰Él¶¬3›Í :Ô¢£Ãý÷óÏiÓ8Y9 iÕª&³ù–÷§+‡Ñ²eKLf3ƒ«W¯ðî»ïÒ¼ys^0á?êÞ9sæ°mÛ6^yõU‰çþûïgä3ϰ~ýz»ºlѬY3Nž<ÉÉ“'©_¿>c^xÁr¾-ŸZGEa‚ÔÔTôz=îîî4 ÅtÃÀ¬å ¶H$’Û³cÚ.ç ÕÞâÈþ(ѬX^"‘¸†óæ‘MDDË—-C«­xT…‚6mÛR\\̹3gøÃc±oÏVÿø#‹¿ü’?þñlݺ›ÍÃÃÁl¶Ìô”••qìèQ‹Ž÷ßf3 × -[Vyߺuk0›Ñëõ\ºt©âœÈH0›ñtwgì /°lÙ2Ö¯_O·nݬö Ý|wß}—ùóçóã?Ø cFfü+¯ ussH—-"#",¾½2~<Þžž–ómùÕª˜Íœª,›JEVf&999hÜ܈lÑBöqI-âìØ£¶Ë9ƒÊÊgÚ”””2kFìÙ³‡nu¡º¶*Qñ¶â¢ò¼nÝjlœD"‘H$’ß7ÎŽ=j»ÜͨT*† ¤òU|ÃÿàªÂ]“6*d÷¥ú²[^"‘H$‰¤:8;ö¨ír7âææÛ3b×îZ’H$‰D"‘TFãÐŒ˜úΙ(‘H$‰Dòû¦Ú¯H$‰D"‘¸ÛwMʘD"‘H$ÉmÅæ@,7/¯6íH$‰D"¹ghذ¡CçYˆyxxдiS‚‚‚\j”D"‘H$ɽÎåË—>׿b}ÖöUK‰D"‘H$‰uª3†’wMJ$‰D"‘Ü!ä@L"‘H$‰ä!b’Z¥ØPÆà) 0a.ã>øöN›sO0|ê"â“3î´· Gü{fÆRœ>ïR½J2¿Ùz˜¾ã?§Ïß?s¨îOYÈéTÇ׌Ø"fÜÇ\É+ª±É­¸*FIuqÉ@lçøñ¬Š‰aE»v¬<˜´íÛo9'÷äIV´mKüüù®PyOQTRJŸ¿ÆåœÂ*ŸO™·¦Ú²¾Ú|Á“òÐØùöRR/çÖØ¾/×ïcöW?ÕX€·§ŽgaÒȾ.‘'¹3¸2'\!óÙG»äïR{lÉ,7š˜³j'ÿ}ëÏlû÷Ë´ v©Þ;³q¸9á,w“-‰=\²"?âé§é8u*ÎoÚÄ®‰¾kZoo„ÙÌ‘÷Þ÷ysW¨»çøqçq:·nJPýºÄ.Ý̽گçóU¿ðêŸzã[ÇSQηێ°êçc|ðÒBƒësì\&“ÜôSrïóH§–µ&³@o! ðu¹N‰DòûÃ%±†]ºXþ÷ ÁM§CuÃn—I+Wо=…))®PwOa6 ¾ß~”™cY>›0¢7K7îçÈÙ‹ÌYµ“±ƒ»Û„üwÓ^ùS/"š4 s«¦–c©9Ä.ÝLbZ¾u˜øÔÃtmT\úy¸c¿&^ââ•<žø #útàtêe¦Ì_C±¡£ÉÌÞøŠø};ãyeFƒ§,`öØÇijÿQ?[$0ñó0›c‡vgHL;@¹mOJgæâä3´G´EÖÉ” þñù¬ÿ`juÅ–Á»“ÙÌ?žê£h‡­z±[ùi¯œ­ܸï_m>HNA1mƒ1šÌœLÉà“ñÉ VÌÝšôYÎÄÈ^?a«m*µéáSñö¨Ç,3ªý^ÃÂÉO䯘»öl‘Üh322DNv–¨{§Nßwé"âºwYGZ>¿š—'Ö$ÊŠŠÄÏ/½$NÌ›W-¹÷:?LÏÅ.«òÙ¡ÓçÅ乫œÿ\,Þ\¸V¬ÝuB˜ÌfE9™¹…¢ó¨ÄåœB«ÇG¾½D,X½K˜Ìf±ûx’èõÒ§¢@oB1ìõ/Ä;K7 !„HIÏ1ã>¥eå–²ÿY·W¼»l‹U¹O^ ^x…(,®uñJž]}B±íÐ1öýo}º%;ŸŸõ•øpÅ6Qn4‰”ŒÑwügâbfž0™ÍbàĹâÌ…L!„¥åFÑûåO-vÚ*gÏ?{Ø*§¤oíîâRV¾0›…øùè93îcQl(B±nw¼2e¡HÍÈBŸœ.Ò³ó-õòÏWËÊžø‡êE!ÞX°V|úÝa6 a(-ñÉéÇÂVNØ‹»32•ü»QïþS©U>«‰¶d QÑÖºý¨Z²Ÿ¼@¼òIœ(-+ ç/‹/~".dæZôX«3“É,þ0i¾Xõ¿cÂlbΪ_DçQˆÌÜŠ6>ìõ/ÄSç…B˜ÍB zm¾8žxÉ®-öêÅV”òS©œ­ܰ÷¤õîrQrµLôxñ±ûD²Xºq¿øô»Šå®ùîlŸe ¥)Ù¢Ô6•êlØë_ˆI×ëþ‘W>)•2”bd¯Ï’Üädg‰ŒŒ  z€Ö@(Ðð´.[¬ßaÊÄÅ6h‡ß{a®¸$vìãiù—¿ ­SÇUªî)¾Ùz˜'ûv¬òÙùÌÖ³âD«ÐŠív²+ËÛS€ÞPjùÿùz:¦Êçþ>^äë –÷žî×§íÕj5F³ãkËú×­¶>g±fgVAEülì2Ë1Ci9ÍЧc$³¿ú‰†tgÇásôéXQßöÊÙòÏQn.gOß– |µù yE%¨Õ*òõŒ•kür Š V°ãÆK×:­Æ¡zyqX sWíäÙØeè4^z¢}oÊÅêp;ãnÍ?{¸Ú?Gxtâ\r KX9k\¸×óñ²üïïãEþªbÕñr§žjUÅ¥Gß:ž¸©¯ÿvî×¥£gͤ‘°õ`ýºT]ÓfËgëE)?m¡”ƒu½=,—UÝԪʗ£É~îBÍú,[X‹‘=[”Ú¦3u¶cähŸ%ùmáúÇç«T¨T*ÊõzŠ32È;s†mÛZ§mßNAb"ýë_.Wý[cÅO‡ùcïûѸYŸ˜|öÑ.V?·F]üëzq<éøWí}ëxPf4Rl(³tø¹E%ø9°î @…MàU7½wDŸZ­Â䂎 À×/¾›ùW«Ç£[4¢¨ä*‰iYüòk"‹§>ãP¹kÜ쟣Ü\NI_fn±K61Ò“´®\o4`Â\K½×÷õ&#·ð–rJØó/ЯÓþú(Û!véfútŒDå€ÃÖrâvçYu©‰βñÃmË+*±üŸ[TBTX°bùÕñDÃL¸¡´¼J› ò'¸~]öŸLeÇ‘s|2~¸C¶Ø«kq°—Ÿ¶Ê)åàÆ}§¬Úg¯œ#8›KÖbdÏ[mÓ^¹¹©-ñJ®–YÊÚŠQMëErwRãK“ú‹IŒ‹Ãpå eÄÏ›‡Ñ` :š#FðôÉ“–W㇦ÝË/ËAp%¯ˆ=ñÉ ímÿdyú‘˜÷ÃNÎ^¼B¹ÑÄá„ $]Ê&È¿.á!,ßr!`ωd.eåÓ!²‰Crëùx‘’žƒÙìXÇæˆ¾& ê‘’‘SqZ   ¡¿‹×ï£ÜhÂd6säÌEÒ²ò*.OvˆàÃÛ ò¯k™°WÎÕ(é3”•£Õ¸\€¿&UùRx¬kË7äBfP±À=#Gù‡=ÿvO¶èи¹¡Õ¸9y!*¬û`¬ÕõmŽòÁ߆ðþò­ôŸ0€È& yã¹þ–ã}ˆ nÇQÆ ©V9WcK_h?Ã{µç™KiàçC‹&–;"=Ô†¼¢þöáw•\¿3ËY}Ç“.»t†ÒrÔóazå/pG°•µgON[Œ¡´œì|=Ó­G§Õ0nh º´rÚ?%™5!4¸>C^ÿ³Y0áɇ-ë •êlÖ˜?ðî²-¸k54k€VãVEf¿Î-ù<îgF¶7è5ìÕ‹µ8ØËO[åKrû±öûP›‘‘Q¦Ójð¯/¯;ß®–•óøä…,œô$¡•¿–$‰¤º”Mô{ås–ýó/4iPïN›#‘H*ÉÍɦ¬ÜHppðpÀ”T¾Šoøß\•[Ý®äé3ø!9“H$5bÍ®´h(aÉo×/Ö—Øå¾†õ¸¯¡ì8%‰ó }ý Lf³C—¨%ÉÝ‹ˆI$ÉoÞmÿ$‰Dr×#/MJ$‰D"‘Ü!ä@L"‘H$‰ä!b§(6”1xÊBL˜Ë¸¾­UÝÏÌXÊÓç>øÔEÄ'gÜF‹¬S];/Üíõ2kéf¾X³çN›Q…»©În‡-w“Imã’ØÎñãYÊvíX?x0iÛ·[Žm~ê)¾ŽŠ²¼öLžì •¿ ¦Ì[s§M°‰·§ŽgaÒȾµ®ûÙG»Z¹¯Û|¹~³¿ú©Öì°§Ï–¿wd½TÅd6ÓetÅC®ÿúÎrŽœ¹xË9wSY³Åª+ÓµÝÞ%’Û…KëG<ý4§NEãáÁùM›Ø5q"ÃwíBëí @̧ŸSñ M•››’( »t3Oôj@v¾žÏWý«ê]å¿géÔÒþIw¿;kY/Õçnª³ÛaËÝäŸDRÛ¸d Ö°Ëõ=½CBpÓéª ¸ÔZ-nîÎ?5ý÷Æ„½Yºq?GÎ^dΪŒÜÝ¡AØð©‹x{Ôc´  ß«sX8ù)Bƒü99—·¿ÜHJFîZ ÃzE3æñ‡ì–[²a?«~>F~‘ úuyù‰žÄD7«‘ödž²?èÌš'È-,¦}‹ÆÄŽÄ7[³bëa²óõ|<~8[5*¶™2 ņRŒ&3{ãSøvÆó–§iN¸À´EëÉ),fÜÐFôéÀÆ}§øjóAr ŠiŒÑdædJŸŒNTX0YùzÞ]¶…£gÓ¨ãéÎKÃ{пK+»úlÙyå[ñí¶Ã_ ÷ÍO)·†­r©9Ä.ÝLbZ¾u˜øÔÃtmf‰íÃ#ø5ñ¯äñÜÀѧÇÎ¥1cñFV½sýλ·¾XGóF<;°‹MßíÅH)Ï”êÅ”°[GóúdJ¯Ï_Ãìqƒi¤X/J¾;‹½\r„ÜÂVï}Īž=ÅŽqãDArrµäþ9tú¼˜>yxáý¢°Ø „â╼*åG¾½Dì?•z‹Üÿ¬Û+Þ]¶Åj½üãóÄÕ²r±/>EÄŒûX”–•‹ {OŠQï.%WËD?»O$‹¥÷‹O¿Û!„âùY_‰WlåF“HÉÈ}Ç&.fæÙÕ§dçºÝñbÈ”…"µ²~ã“ÓEzv¾S.7òí%bÁê]Âd6‹ÝÇ“D¯—>zƒÅ÷w–nB‘’žmñÝd6‹çŠ32…B”–Eï—?µÔµ=ßmÅH)Ï”êÅ”°[¥Œ]²I,üq·H8YüaÒ|ñkâ%‹\¥zqÄwk˜ÍB¬þå¸Bˆ_Ž%Ь|½Cuf#g.Š7¬}þþ™˜¹d“H8Ùn¥¾@ÉG|PšL{q·Õþ”rI"©-r²³DFF††=N@k høZ—-Öï0e ââ4ˆÃg¨ÜU¾í¸qôþâ ^´]:üoìXÌF£«ÔÞ“œÏÌcƨÇhäÏÌуP«UJk$S«q#+_Ov–¨°`‡Ê êÖ†_T*èѾ9Þž:Ò³•7›v…Ì}:àãU±çµýÞj˜v¸k5t‰ E­Vq%OTl¼ë鮥ž÷5¬Gpýºä–’žÃ™ ™ŒƒÆMMh?]Û„±ûDrìX·'ž‘ý;Ñ´r=LTX0ÁõíïËj«\fn‰iYŒì× µJE·¶á„ør(á‚¥lßÊË>¡ÁõÑiݸ’§¯Ø½c;ŸàÀ©TúÑ8ÐÏaß­ÅÈ™\£ºqw$—$’» —=ÐUçãƒÎLJ“&±²G²#°CBzô°œÓeæL¾ïÒ…¼„ê·iã*Õ÷ÃzFÐ*´¢ãØ5ªÆ2_ÃÜU;y6v:†—žèAß"í–Ûr ¯6$¯¨µZE¾Þ€ÑdvHç£çZ¾øVÎEã~Ëlè_·š*sã¥]Vƒ±ò‡‚Z]±Ýª›ZUùRc4™É*¨èðŸ]f)g(-§Y£ší¿šSPL°‚o¶êÌV¹|½Fƒ·§Îò™¿ùzƒå½§ûõÍŽÕjµÅ÷>#™ýÕO¼0¤;;Ÿ£OÇŠ|pÔwk1r&Ïj⃶b öspßɢ‚Ùrà´å’¥½zq¶¹šÜ¢r Šéysš7ÄËCg¿Ð]JuãîH.I$w®²¾J…J¥¢\ë/µFƒJ­F˜L.W{/òì£]ìŸtnnjL••PrµÌr,ЯÓþú(Û!véfútŒD¥²].3·ˆØ%›˜?éIZ‡0`Â\„¹jµÊRöf6~øâ-Ÿ9"¬ïFoÜ"ÇY|½ññòà»™u©¾ú¾ÞdäÚÈ…Ì< âFƒŒû—zm• ò¯KxHË·DØs"™KYùtˆlbW¦Z¥¢w‡>\± ÿº–Ù7G|·…RžÙ¢&>8ƒ#9è¦VããåÎéÇûË·’SPl·^œñýváå¡ã‰^íùzús¼þç~œN½Ì{<êA©¹Û°Öþj;—$WPã1•FCêš5}ÿ}L¥¥øEDÐsî\t¾¾²²ˆŸ;—ÂÔT„´kG¯ùóQë~»Såw3£þЕ7¬cÛ¡3tly_•ËqÇ“.»t†ÒrÔóazå/w¥r¡Aþ ïÕžgf,¥Ÿ-šÞrw_³F ìÅã“¢RÁºÆRÇÓö²ŽÈ´Å“Óc(-';_Ï´EëÑi5ŒÀʻÖîÁ†½'0q.:q³þÏrפ3|ð·!¼¿|+ý'Ì ²ICÞx®¿å¸-}Jvz¨ yE%üíÃï(*¹~÷£=”ÊÅŽDì’Í,ßrˆ_ofŽäð @Ÿ"ˆÛq”qCcªå»-”òL©^jâCu©NvkN÷èf¼óß-|øòPÅzQòÝYìå¼#D7oDtóF ª”úWØr35‘i«ýÕf.I$®ÀÚï5mFFF™N«Á¿~ÍÖÃH$‰D"‘üÞÈÍɦ¬ÜHppðpÀ”T¾Šoøß\•[I$‰D"‘Ü!ä@L"‘H$‰ä!b‰D"‘H$w9“H$‰D"¹CȘD"‘H$ÉBÄ~gäë üñÍÿPZ^;ÛL=3c)NŸ¯]73îc®ä9|¾«í|õÓ•9sÑ©²wªÎ¬q7ÙrêÆÖç.">9ÃEÕŒ»Å–bCƒ§,dÀ„¹ŒûàÛ;mŽ…o¶¦ïøÏéó÷Ï\VOµ•׎Ķº¶Ô4_\åûÝš/Ö¸[Ú˜-\2Û9~<«bbXÑ®ë&mûvË1sY‡bc‰ëÖo;t`ßÔ©®Pù»`ʼ5Õ:ßd6Óeô¿øë;Ë­þ»éƒºµÁ]ëúM¬ñì£]­ÜñnÆ;¿\¿Ù6’ùLÿNÌ_½«Öl¹]X³Å‘<»[PŠQms7Ùb oO?Îä‘}ï´)Ê&æ¬ÚÉßú3Ûþý2mÂíïßéH~ÞMy]ÛíÝUúîÆ|¹ÛÛ˜-\òmñôÓtœ:‡ç7mb×ĉ ßµ ­·7G?úˆ¼3gè÷ÕW¸×«Gajª+TÞÓÄ.Ý̽گçóU¿ðêŸzWy¸¢3”M¬ßÏÒ·þì 3â‘ÊM{ïv\mg‡ÈûHÏÞ@Jza!õï¨-5án²Eòû£@o! ðu©Ü»)¯kÛ–»ÉwI.ˆ5ìr}ODïÜt:Tnn˜F’V®äÑï¿Ç'4€Àzõ\¡òžfˆÞ,ݸŸ#g/2gÕNÆî^ãAÀ©ÔËxyèºi³æáSñö¨Ç,¿6û½:‡…“ŸªxùÔE<Ü1‚_/qñJÏ |}:pþr.o¹‘”Œܵ†õŠfÌã—Vl=Lv¾žÇ§s«¦}'S2˜þŸ ä–0¼W{Vütˆ•A=E}YùzÞ]¶…£gÓ¨ãéÎKÃ{пò ÜǓҙ¹x#9…Å ííp(ÙiË–Ó©—™2 ņRŒ&3{ãSøvÆó–'ù«TpDcöœHvx ¦d‹£ä–°zçq²óõv©*ÅݶÜÌ’ ûYõó1ò‹ Õ¯ËËOô´l¨­wgbëHŒ'\`Ú¢õä3nhŒCy¦dgmÛb‹cçÒ˜±x#«Þmùì­/ÖѼQ Ïì¢%”òÅ;R3rˆ]º™Ä´,|ë0ñ©‡éÚ& €q|KZV>eFƒ§,`öØÇiU¹?¨3¸:¯½6ŸÏ'ü‘Ðàëm\è;þ3V¼ý`;¶ölY¾åßn;Lañõ4®íaK¦³¾+õå΢”Júœ±¥&mÌÙ~év£ÍÈÈ9ÙY¢:ì:U|ߥ‹ˆëÞ]d=*„¢ 9Y|ßµ«81ožøþÁŽ{‹Ä￯–Üß#‡NŸ“ç®Oþs±xsáZ±v× a2›í–3›…XýËq!„¿KYùú*Ç¿ßqT¼òIÜ-冽þ…8‘”nyÿÈ+Ÿ‹”Œ˱w–nB‘’ž-bÆ},JËÊ…B¼±`­øô»ÂlÂPZ&â“Óo‘=òí%bÿ©TË{“Ù,†LY(¾ßqT˜ÍB,X½KtõÈÌ-´«ïùY_‰WlåF“HÉÈ}Ç&.fæ “É,þ0i¾Xõ¿cÂlbΪ_ªÈt„›í´g‹BügÝ^ñî²-6eþgÝ^ñÖë¶AÉ{9sQ¼±`­èó÷ÏÄÌ%›DÂùËvË(Å]É{yf‹µ»OˆKYùÂlâç£çD̸E±¡Ôb‹µº®ilmÅhØë_ˆ|þƒ¸ZV.öŧ8”gJvÞ [la2›ÅÀ‰sÅ™ ™B!JË¢÷ËŸŠ‹W*Ê)ÅA!¶:#ƾÿU;må‹3v Q‘_ Vï&³Yì>ž$z½ô©(Ð,Ç3s E÷±Ù•s#Žä§«òzòÜņ='«|vþr®xìó„ʱU²eÝîx1dÊB‘ZY¿ñÉé"=;ßa™JXÓçH_n [ù¢”Jújb‹3mÌ™~Ér²³DFF††=N@k høZ—-Öï0e ââ4ˆÃg0›)/.¦\¯§äòe†ýü3ýë_œ5‹‚¤$W©½'9Ÿ™ÇŒQÑ4ÈŸ™£¡V«(6”Ú-§RÁà˜¶ÄD7#À×»Êñ¢â«x+ìi‹¾•SÙ¡ÁõÑiݸ’§@«q#+_Ov–¨0ûë7’Ò²É×Ö3• žz¤£CúRÒs8s!“qCcи© ò§k›0vŸHæ\Z…ÅWÜ£*Œ|äjûX]ßÁÇÓ¢â«.³ÅGÎ\äééKøôûÿñ@ËûXóÞÞ|¶?‘÷5¼m:íå™-ukCH€/*ôhßoOéÙ×7<·V×·3¶CbÚá®ÕÐ%*µZe7Ï”ì¼S¶XC­RÑ»c;ŸàÀ©TúÑ8°bSw{q¨.ÎÚ™™[DbZ#ûuB­RÑ­m8!¾J¸à´-à|~:S®mx0§Ï_Æh23`Â\’.e“p>“6á!–s¬ÅÖëöÄ3²'šV®åŠ &¸þõ˳ÎÈT™¾\ {9¡¤ÏÕ¶\ÃV9Ó/¹—­ØÖùø óñ¡Ã¤I¬ìуìcÇÐÕ­‹0™hõüó¨u:;t ~TW·™ý©ðß+ÃzV\~iZñe:°k”Käz{ê0”–W»œ§ûõ³Õj5F³€‡Å0wÕNž]†N£á¥'zÐ÷HEYyúüêx¢VUlsêã固êïkú² *’ÿÙØe–c†Òrš5   Ø@=/‹Lß:ž·Èt[¾;BÉÕ2§¾Õ!·¨„œ‚bzÞßœæñòÐÝV}5a˾Ú|¼¢ÔjùzFÓõú´V×·3¶7^î×i5vóLÉÎ;e‹-útŒdöW?ñÂîì8|Ž>¯·K{q¨.ÎÚ™¯7 Óhðö¼ž³þ>^äë NÛRÛ´iÂÏ+!>9?oöŸJ%+OOÛn*°[{ä|Ó’qF¦ÎôåJØË %}®¶å¶êÌ™~ÉÕ¸þÖ9• •JE¹^O½V­P¹¹UüÔ¨DQq]b—gíbÿ¤j\Ÿ¸ÇnùÜÍM©2¹„¨@8B _¦ýõQ¶:CìÒÍôéyc¸o¡^ŠŽÖ,j•Š¢’«ÝJøzããåÁw3ÿz˱³¯ ¿aÆÐPZîÌš¢¢2Ÿmp>3·Ú õ«Kß"éÖ&Œ ûNñÎ7c‚Ç»·åÑ[SÏÇK±¬³qw†ÌÜ"b—lbþ¤'i]¹ÆgÀ„¹ŠõàWdzF±µ£›QʳšR›¶D·hDQÉUÓ²øå×DO}p,jµÊjÛÊgíô­ãA™ÑH±¡Ì2Ë-ªø¡ö[¡eÓ†$§gsàÔyÆéÎ;OPTr•qCcj$·¾¯7¹….²Ò>Îôå×°–/örBI_Ml©ns¶_r55þi©¿x‘ĸ8 W®PVP@ü¼y ¢£ÑxzÔµ+g—/G˜LäÄÇ“{ò$ :ur…í’jÒ6<„¬|=yE%U>oèlj¤tvþšH¹Ñä¼ÝÇ“-²4nnh5nvK³Æøz{òã/ÇønÛQ‡t…‡ÐÐ߇Åë÷Qn4a2›9ræ"iYù4oT1tðtÅ%-’YSêùx‘’žƒÙl½ÑþzîF…Þv;¼(Ùi‡;F°aïILœ‹NãFܬÿ³Ü¡s*õ2î:MµÖ7ÔÄ–kD7oDtóF ª”âî [n$4ÈŸá½ÚóÌŒ¥4ðó¡E“@Ë`JÔ$¶ #[ØÊ³šRÛ¶ôy ‚¸G«ÌÎ8‡fØ5ŠÇ'/D¥‚uŒ¥Ž§»b¾8kgì˜AÄ.ÙÌò-‡ðõfæèA·uFÌÕy Ð&<„Ë9…hÜÔ´kBna±CÏiT²eÐCmÈ+*áo~GQÉõ»&k‚’>¥¾Ü¶òE)'”ôÕÄ–ê¶1gû%WcíÛO›‘‘Q¦Ójð¯o-‚ä·ÅåœB^ù÷J–O{ÖekmjBY¹‘žû”íŸý½Êµøß:o.\GŸ"éÝ¡Å6E"‘H$µLnN6eåF‚ƒƒ‡ ¤òU|Ãÿàjí<^]r×T¿.ŸOøÓ]¦w")F~ø×õbíîx¢Âƒï©AÀËOô¼#¿¬$‰DòÛBÄ~‡8z;÷í"1-‹×欠Q /o=ïøÔóo9“H$‰#Ș¤ÖÚ3š¡=ú½D"‘H$÷*w~‘D"‘H$Éï9“H$‰D"¹CȘÄ!ž™±”§Ï[ÞÊ9Cñœêæ„#2]©Ob㞁ý|U\2Û9~<«bbXÑ®ë&mûvòø:*ê–WÆ®]®P{Ï3eÞšjŸSPÌË}OÌ‹Ÿðôô%œra¢?ûhB+÷=ƒŠí’~œ=†I#ûÞr®Ò1‰2_®ßÇlÆêJnŽ­#Ü ;«üÛƒ39ñ[Òçjj»=Ü-íïv~çüžpÉ@,âé§Çð;‰xúivMœHyq1õ"#qäˆåÕÿ›oÐÕ­KÃÎ]¡öž%véfÎg¯gú—nyʵ5Þ_¾•ú¾Þlûô%þðP[^Ÿ·Æe[ý<Ò©% êÉ;ïEdl%7SÛ9!sð·ÉíüÎù=á’»&v¹¾'¢wHn:eI7÷ë›§®_OÓGE­»{7&¾˜0¢7K7îçÈÙ‹ÌYµ“±ƒ»Û}Ú}i¹‘]Ç“øï[A§Õð§>÷³híŽ'¦sDc›å½6ŸÏ'ü‘Ðàë{" }ÇÆŠ·ŸcûᳬØz˜ì|=NçVM]æ§-¶H`âç?`6 ÆíΘvdåëywÙŽžM£Ž§;/ ïAŸˆ½|Ë!¾Ýv˜ÂâëO©nèïCjF±K7“˜–E€o&>õ0]Û„ÓüwŒà×ÄK\¼’ÇsdDŸ;—ÆŒÅYõÎh‹ü·¾XGóF<;°‹];OYÈŸtfÍÎäÓ¾EcFö{€)ó×Pl(Åh2³7>€og<‡N«(óxR:3o$§°˜¡=¿õ›­‡mÆÖ–ï§S/+Ú©TŸJ,Ù°ŸU?#¿È@Pýº¼üDOb¢íïÀaËN°/örÞÖ€À^ÜkâÃÛ££MåFÑý^ÃÂÉOäïTÎÛóàp¦-ZONa1ã†ÆXêL)'Àv;R’©„’¾ó—syûˤdäà®Õ0¬W4cȮ̓)LÿÏr KÞ«=+~:ÄÊwFYâj­ýÅŽ¤X×¶bk¯=8ÓÄŽdÓ7{ú”â ”ŸJíÈÎ~ç\ÃÙ~ÞVÚóÏVSʳš|çT—=¾bßo¶m*­–Þ  ñð¨rÜ\^Nêºuôœ3ÇU*ïYN§^æüå\ê×õÆh2q(á»E¡VØ(=«“ÙLH€/»ƒ§y€Æ ü8Ÿ™«Ø(Ú„‡p:5³J§}ñJžîZÔóáɾy²oGž™±Ô¥>*‘š‘ÃêwG“’‘Ø÷¾¡cdš4¨Çä¹?Ò&<˜÷_BZV>£gMTX°e=[¬ßs’¸GùìÕ?Ò4ÈŸ“)˜Eů¶7¿XGèæ,œüûâS˜º`-?ÎC]ïŠü-,¾ÊÂÉO‘š‘Ã_f.chv´kÞˆÒ2#g/^!¢IÊŒ&vŸHæ…!ݲsëÁæLü#>^¤eåÓ8ÐgáËõû¸’WÄ”g©âƒ-™!¾¼¹p-Ï|!=¢™·z'eîi/¶Ö|o¤h§½ú´E€Ÿ7ó_{’àú¾ìü5‘7¬eÓG/âåaÿG›5;uZÍ:³—ó¶°÷šø` grÞÿâS2øúíç8v6׿¬¶Ô™RN(µ#%™J(éûbÍÚ·hÄ^Iiy9I—²íÖ—YÞ\¸Ž‘ý;1¼g{¾X³Ûj{¸¹ýr]ÛŠ­½öàL_ „=}`;öòÓV;²…³ß9×p¦ŸWÊAgÛŸRž9ûS]\¶X¿Ã”) ˆ‹#lÐ ¿÷â¦éÉ´;Ðùú-Ÿeó™yÌõMƒü™9zjµŠbC©bCY977®–•³aïIÒ®äá¡Ób¸Z®X®mx0§Ï_Æh23`Â\’.e“p>“6á!®t©Z ïÝVCä} ‰nш½ñ)¤¤çpæB&ã†Æ qSäO×6aì>‘lWÞº=ñŒì߉¦•kP¢Â‚ ®ïKfn‰iYŒì× µJE·¶á„ør(á‚¥lßN- ®NëÆ•<}ņÊ#Øqø,N¥Ò8ÐÆ~Û9¢O|¼*'•µ’ÌsiY_epv¨T0ò‘¯h;Xó] GêÓƒºµ!$À• z´oŽ·§ŽôlÇ69¶f§R9›óJq¯©Öp6çñoHL;ܵºD…¢V«ìÆl·£šÈTB«q#+_OvÖ¡}[“Ò²É×Ö3• žz¤£ÕónnöêÚ™ØÞ޾ÀlÅÁžÕmïÎ~ç\Ù~^)m¶ò¬&ß9ÕÅe3b:t>>t˜4‰•=z}ì®Om&¯ZEøã»JÝ=Ͱʇ¶ mÀÀ®QvËxê´M&êz{ðÓ'/p5îg<=”·jÓ,„ŸWþB|r:~Þì?•JVžž¶áŽoVíjêùxYþ÷÷ñ¢@•¬‚ŠNáÙØe–c†Òrš5²¿jNA1Áþuoù<_o@§Ñàíyý“¿ù7¬Ç»që%µZ±òFŸŽ‘Ìþê'^Ò‡Ïѧc$€Ãv6´b-”d¨çãe™-õ­ãé²=Dmùn GêÓ[$ðÕæƒä• V«È×0š[kbÍN¥:kߢ±Ó9o+î5õÁÎæ¼#múÆ¥:­ÆnlÁv;ª‰L%^ÃÜU;y6v:†—žèAß"ËäéKð«ãii>^VÛÃÍíÏ^];ÛÛÑ8‚­8Øó¡ºíÝÙïœk8ÓÏ+å ³íÏVžÕä;§º¸þÉú**•ŠrýõÑtIf&—÷î¥Ó´i.Ww/óì£]ìŸTIH /nj5ç/ç€Ù,H»’OÓ†Êw"µlÚäôlœ:ÏØ!Ýùqç ŠJ®2nhŒCzÕj•ÍÅ™JÇ”È+*±üŸ[TBTX0¾ÞøxyðÝÌ¿V[^}_o2r oùÜ·ŽeF#ņ2Ëà!·¨¢#·Gt‹F•\%1-‹_~MdñÔg¶ÓÖEf nÚTIæÙ‹WÐß0[j(-¯•ŲÖìt¶>3s‹ˆ]²‰ù“ž¤uh&̽E~uPª³Òr£Ó9o+îŽø`«=¸¹©-Ÿ %WËìú DMÛ´-lµ£ÛE _¦ýµbû³m‡Î»t3}:F¢°Bƒzu*þf!P«T•\µZç7‹PªkGb[Ýv«d‹#XÓ§ÄíhcÎ~ç\Ù~ÞVÚóÏVÛyV“ïœêRãŸÎú‹IŒ‹Ãpå eÄÏ›‡Ñ`¨r 2åÇ ìØïà;7Ër¯ã®Õн]3¾Ú|£ÉLÜÿŽâí©£m3åË-îZ ýØr £Â0šÌ$]ʦeÓ†émÒ )9VïêT:¦ÄÊÇ(+7ræÂŽ'^¢kÛ0ÂChèïÃâõû(7š0™Í9sÑîš €ÇºF±|óA.dækð2r ò¯KxHË·DØs"™KYùtˆlbW¦Z¥¢w‡>\± ÿº–55±*~%¦¤ç`6_ï •d6oˆ—‡Žƒ§+.ÿm9àžšbÍNgëÓPVŽVãFX嚦¿&Ué¤A©Îj’ó¶âÚC£@?N$¥W–K¤¼rM“³¹TÓ6m [íèv±ûx²¥5nnh5nŠƒ0€fðõöäÇ_Žðݶ£éRªkGb[Ýv[S¬éSâv´1g¿s®áL?o+íùg«í<»ñ»™ψ©4R׬áèûïc*-Å/"‚žsç¢ó½¾v yõj¢^x¡¦ª$vxmd_¦ÿg=½_þ7ýxwìãhÜìµÛ„‡p9§›švÍBÈ-,ƽr‘æ“Óc(-';_Ï´EëÑi5ŒÀÊ;Gš5 ``×(Ÿ¼• Ö}0–:žîv)\Ÿ!¯Ù,˜ðäÖuümï/ßJÿ 7|D6iÈÏõ·+oÐCmÈ+*áo~GQÉõ;mbÇ "vÉf–o9D€¯73GrhF  ÏÄí8zËLƒ³v<Ü1‚ {O2`â\t7âfý:­M™jµŠYcþÀ»Ë¶à®ÕЬQZ›CºìÅÖ;©ÏÐ †÷jÏ33–ÒÀχM]²iºR”rÞÖâÚè?tåëØvè [ÞWåÒ’³¹ä¬J9¡ÔŽœEIßñ¤KÄ.Ý„¡´œõ|˜^9k¡„Z¥bÖ ƒ˜þŸ Ì[½‹'z·G§qCeo‡íºv$¶Õm·5Å–>[Ü®6æìw8×ÏÛÊÁÐ _Eÿ”Ú˜RžÝ®øÝŒµìÔfdd”é´üë»þZ¨D"‘H$µAY¹‘žû”íŸý½Ê(‰äv“›“MY¹‘àààá€(©|ßð¿¸*·8’H$É=ɤtr +.5­ÝOTx°„Iîj\¿X_"‘H$’;DbZ¯ÍY @£@_ÞzÞþ%M‰äN"b‰D"¹gÚ3š¡=åó*%¿ä¥I‰D"‘H$’;„ˆI$‰D"‘Ü!ä@ìwÆ7[ÓwüçôùûgÄ'gÔHÖð©‹j,Câ1ã>æJ^Ñ6C"‘H$5Ä%kÄvŽOÖ‘#”P7,ŒèñãiüðÃäž<ÉéÓ)HJÂ30ö¯¾Ê}¸Bí=Ï”yk˜=ÎuÛB•MÌYµ“og€ì|=Ó¿ÜPí§Ó[£@o!ª5“H$‰DrûpÉŒXÃ.×÷Dô ÁM§C忆0›)NO§Iß¾¨ÔjBbbPk4gdà k‹ #z³tã~Žœ½ÈœU;;¸{•'Û"5#‡Ø¥›ILË"À·Ÿz˜®mÂ÷Á·¤eåSf41xÊBf}œV•ûrYãtêe¦Ì_C±¡£ÉÌÞø¾ñ¼å)·.0mÑzr ‹74†}*6zÏÊ×óî²-=›FOw^ÞƒþvžØ>èµù|>á„VnSû‚õÿ+Þ~Žõ9˜…J IDAT|uozŒ6•0÷{u '?Uñäë©‹x¸c¿&^ââ•<žø ¥>'¥3sñFr ‹ÚCÞ&‘H$÷ .{|ž7Þ mÛ6TZ-½,@ãá@HL 6oÆ·ysÒwí½^=üZ´p•Ú{’Ó©—99—úu½1šLJ¸ÀÀnQ¨ílÓñæëèÝœ…“Ÿb_| S¬åÇÙc¨ëíÁ¼×Fp%¯ˆáSñãì1ÙÑ*4ˆgQ¼4Ÿ’Á×o?DZ³i¼6g5C{´C§Õ0yî´ æý‡–•ÏèÙ_lÙ›ÏmÂC8šYe vñJžîZÔ»¾]ÅÖƒ Ì™øG|¼<,û~øy3ÿµ' ®ïËÎ_ycÁZ6}ô"^:K¹ÅoŒ°UhCv²[&_o@§Ñàíy}¶ÆßÇ‹|¬-SâÆK¦:­£ÙLV€gc—YŽJËiÖHùrt›f!ü¼òâ“Ó ðófÿ©T²òô´­¼Œw†þuo)»å@_m>H^Q jµŠ|½£Él9^Çëúfãu<Ý«ÔË£çZ¶DY9k”eÖΞLk¶Ô47nÅ¢V«1šÍ¨çãe™õ­ã‰›ZÞð,‘H$÷®²¾J…J¥¢\¯§ )‰âŒ š *÷ßOݰ02÷í“1xöÑ.öOªÄ·ŽeF#ņ2Ë ·¨?Ö–ÙC!>?À×/¾›ù×jéiÙ´!ÉéÙ8už±CºóãΕ\eÜИ[칑ÌÜ"b—lbþ¤'i]¹æmÀ„¹Ul¾6ЂŠz¹ÿ†Ë„?|ñ[‘iÍ{qpsScªœ-J®–Ù©ð«ã‰þ†QCi¹E†D"‘H~ÛÔøgµþâEãâ0\¹BYAñóæa4ˆŽÆ+(•JEÊš5 y äŸ=Kûîs…í’ò¯KxHË·DØs"™KYùtˆlRcÙõ|¼HIÏÁlvl0@C¯ßG¹Ñ„ÉlæÈ™‹–5T¶p×jhèÇ– <†Ñd&éR6-›6T,g(+G«q#¬rmÙÎ_“È+*©rÎÊÿ£¬ÜHÂùLN&gð`”òGdZÃ^úq")½Rf"å¬õjÞ(/OW\ÞÜr á–s.ç2|ê"vW¾ü+‘H$’»‹ψ©4R׬áèûïc*-Å/"‚žsç¢ó­XýпþůŸ~ÊþéÓq÷õ%jôh‚úöî;¬©ëø7! {C¢Fq ˆ"Vpá@ë¤u`‹­ÖjÝ­¶þlmÕ­b­ÕV­ukÕZë¨uï½ʰ ÌŠ„„M $9¿?Ð(’¢ø~ž‡çsï9ç=÷ž{ïáÎÎN*‹ŠˆMG±íØ ¸Ø[cÞ¸P£œ i× ‡.Ç¢ïg+!à™a×ü1ª§&«²èãAøqÛ ô™¶м¾¾ÕGk]­{"Cœž­½=!É/‚9_s7º;!¬»?FÌÝŒ×lÑ´¾+Üœl+ÌÓÐÝ ƒf®ƒRÉðù»!¨çªùF}]Ê¬Š¦õ0öÍŽøjÍœ¼v> tz–Ëå`þø7±à÷c0çóà]Ï|žY…yär%Ò²rQ\ªý !„‡ºÇðø"‘H&àóàäL¯˜ /¿Ð髱èãA_ÕA!„‹Dœ Y™a¤Šÿ=ó»@ ÝñK!„b"4#„B1ã?5IÈ æÀ¢‰¦BQ‹ÎˆB!„˜ Ä!„BL„b¤F„ÍZ˜$‘©Ãxa˜»×þM­µúr ¥xûë (-“×Zº*’Ê0pÆZô¶“í0u8um›Uû߲ݸÿ Vêš¿ù(Öí»T+uiò2nž¸‰^ŸþŠžŸ,×Ú—_†öe vþÓO±'8Û[·ÆÁ‘vê”jZæÕ«8ðæ›Ø€ÃaaÄÆ£ÊWÂŒUûª5L’£çoEç‰?£ï´•˜³áP EöÔo¯à‡­Çk¼žºæƒ~Aº;ÕZ}[Ž\Ch§VÞɦP*4n1àÃï·ÕÚèyÖ–üóÃx|1¼—Iê¯-µ½­¼(Û¦8¯S~Þ‰à–â½9›p7%C5­¶û ¦X`DŸöX½÷BÆð¢yÙ¶¿2¹+öœÇ–oÞÇÉ_¦ ÕsŸÀ{ÞËÐ>£ Äš½÷úîÚ…°óçÑì½÷pá³ÏPVTEI Îÿïh9v,ÂoÞ„÷!8ÿé§` ío•El>ЏÔL@vn!æüvyZ¾U(+“cÚò=èÛ¡%Nþ2[g€VÞžóÓy£½^sÔí±†*“+pðb úthQ+õò¬·€³½5N.›Œ7;ûaæª}&ûD—¶Xš7@zv’ÓÅ&‰h—W(ƒ§‹æ—r¿LŒòÔ¤[ÐÓo"Z{zÂL ÇÌ ¹ `r9 |Àv{ÉHîÞ…³ŸŸ1ª®“¦…÷ÀæÃWqëÞ¬ØsvÑúö‡Yy((.ÁÛ!mÁåp`!àchwÕô‘›"!- .ö6øìÝtl¥ÿ÷>ÿMÉÀŒÕûP$-…\¡Äå˜dÀ޹£UoÝ¿÷f¯?q~& FxÏ@Vn!ü~ ‘÷Ò`ciŽÉa]Ñ'Hû ¡ª|y…RŒ˜»ó'¼‰ÖÞžÈ)(ƈ¹[ðãGáÛÈ¡ÓW#¨¥IéÙ((.ŨAíÔJUîÀkñ~ß@ì; I~ü›z!b|¨Æ8S3$øî·ÃH‰aÎçaH÷6ÿVg­Óþ¡­}Um+ÚÚPU,Úè³mjjƒ>}0éa6 ·ˆ—ÈØÏžbâ|6rÞö÷¹;Œ1Í}P›[ñØWkö³žŸ,gó6aq©ÅòĆ—Ù7ët;FºËÆ.ØÆŠKd¬ëGKÙÅè$¶ùðU¶ì¯ÓŒ1ÍË3bÓ¶öŸ‹,.5ƒ½ùÅjv'ᡪ\}÷=šè³ý}¹òvèRl…´Ô ðù*­e™¹Ž]»›Ê+_Ï¡ÓW³¨ÇmÔ· Œ1–)Ég]&þl”öi‹EßccŒ‰³³˜H$b†è €öZx €-¾ÑnÖ˜1}wíB£ÐPÜ\¸L©„CÓ¦àš›#q÷n0…ñÛ¶A!“A!Õ|™íU—š™ƒ¹c ¡»æ —ËA‘´Tc k¾†ü")>Y²ý>[‰mÇn2%HHËÂðÞíÁåpÐɯ1<]ìq#î¿mÇ àÖ0çóä+—ËÁ£œB$§‹ÿ_&& ÏŒ ¡»:¶j„‹Ñš?V­-_¯üaÂÛ!Î+Âè*äïèpu°A«Æž¸“RazxÏØZY¼\´ÖÇç™!+·Ùy…°ðáÛèé} š¦UE—uÔ«}y„ÎðÍð(§Pk¹PPTkKóJé00¸üÌtpo¸Ø[«¦…vjO{p8@Wÿ&°¶ =;Oc=\=Ú5Ãé›÷×î¦ÀËÕ^®z—©‰¾})1-¹…R éÖðîíÔÎWÝ>¡OûtmÃó±Jݶ©KªÛ¥²2ðÌÌP"+á˱H{” Ò’2šû`UnÅ?À{s6aÙÎ3xݧö-¯?èƒæ Ü Šå [Ks•hã‰z®°4çÃÑÖ ÜáálI~1íË3ña6¦,Ù…éïõBëÇ·’²ïÑDŸþéרÿ¦f@®P¢ï´•H|˜¸ÔL´j쩵Ì>A-püú¿€è¤t˜q¹ð{ÜF}Û`ìöiŠEßý‹>ŒöBW­-¶¶øâ ìîÚÙ·oÃ5 ]~þ7æÏÇÍ à—6mÀ·±1VµuÒnm-„å;–þ}uÊ'ôpƼq¡` ˆ¼ÿÓ~ÙƒB7X[˜CÀãÁÚR š×ÉÖ ¹Zî;3Ô³—S|äJ%²òÊwÜDü®š&--ƒw=Íß5Õ%ßà®m°ãä-ÌÙ[u:ü «§KóJmw{î²¶ú>Œ•{Îトß!àñ0yhWôz½¹ÖiUÉ-”j]G–æO?´Îår!×ñ>kK¤¥eÚg|ƱkqØzô:r ŠÁår[(…\¡½¾žíšã‡­Ç1aPœ¾y=Û=m·¾eVEß¾”SX Kp9å}ÄÖÊfÜÊÿ“V·OèÓ>]Ûð|,†R·mÚÛPÝ>h)àC®PÀÎÚÇ—N”ì: K ¾Æ|šH Š!Î+B·¶MÐÄËV홪Kq‰Lí?.Uy²¯1ãrÿpUËLÛò¼› ßF8ví_Õe4Cö=šèÓ?[y{âìîsˆIJ‡‹ƒ5®ÞMAVN!üß& ©ÌÞA-0î‡?ðÅð7pâzzù¨ÊÕ· ÆnŸ¦XôÝ¿èÃøoÖçpÀápPVXÞ÷º?@)“aO·npôñÑTyìƒ~AÚgRƒÃšÕG«ÆHJ£KëÆÉå(’ÊTzIAùÁÈPŒ1çw±·†­•þš÷aµêÑ–O©dø~ËQ„÷ Àº."¸µ7œŸùïúɨ@yÛÛZ[TjGuêsu°ÁìûNÞˆGÄæ£èÙ®98ÍÓªbocQcëHèáŒ]§oë<¦¤›Ž`õÃÐòñ‡ÒûN[©ÓznÓ´ ŠK–…sw°qÖËär9joâ63ãªÒ+?Pú÷%G›ò®’1p9—¨­·:}B—ö©ÛVtmƒ†®£1Ou¶MCÖ{U<]íaÆå"5C‚Æž.P*Ò墡›þO ÷z½9:µj„CWîâû-G¡d ouñC¿-áhkep,©™îÓF—å9¬W; ïÝÃfoÄÉñèùzsƒö=†Ä¢nûói膤ôl\»›Š‰ƒºàŸóÑ((.Á¤ÁÁZ˺;ÁÃÙWcSpúÖ},ý4Ì 6hbÈþ¥ªXôÝ¿èÃàK“… a×.H=‚,/1«VA.•Â¥MùYœøx”æä@š•…ksç±E Ø …†VKžS(-Åúý—!ÎG™\qÿ!&I„¦^®pw²CcOl;vŒ—¢“ð0+Íë«ò—–ÉñÃÖãÕ~|ÜÑÖ Ééb(•ºí¬{ºÀÍÉ^A™\…R‰[ñ–•kP¾‡®ÀÆÊÓ†…`H7ÌÛt¤BþÝgnCV&G\j&b“Dèà«ùAmõ]ŒJBNAùàŽgf>ÏLµÑ4­*º¬#}ù5öDVn¡*&m¤²2ðyfhôøÝówuÎËåpÐ# ~Ú~ îNvðzÍAç2ë¿æˆd‘¸ÒÂõ\˜þ8_ÊäåO]ëÛ—¼½\`om‰ÎEþ:©SÛ4Õ§KûÔm+ú¶AÕÝ6 YïU1çóÐ¥µ7¶½¹B‰]g"am)P]¢Ò—•…C»ûã9£0óýÞø7% µ¼ªC×Xî܈¾Bƒât[žf\.l­ÌñÕÈÞøqÛ ˆóŠ Ú÷‹ºíÏœÏC=W»‡¾ W(‘ø0> Ýt*³OPK,ß}¶VæÎ$éÓ†šhŸ¦XjrÛ|žÁgÄ8<RöíCä?BQZ ‡fÍÐmåJìË-͸x1kÖ€ÉåðèÒ]/68hRŸg†Ä‡Ùø âwä—ÀÍÑ“£M“z€ˆñ¡ˆØtÛŽÝ€‹½5æ ­p¶¥¤´ Ÿ½Ÿ†nÕ:ø‡´k†C—cÑ÷³•ð̰kþÕ“YUYôñ ü¸íúL[h^ß _ꣵ®ªòÅ&‹°óT$¶Îþ0j@Æ,øº…wBÊŸêjèî„A3×A©døüÝÔsÕþ賦8£"bóHKËðš£-æ<þJÛ´a³7BZZ†ìÜBÌ^>“£oP ­ëH_–æ|ônïƒ×ãñvH[­ó ÝÖÝ#ænÆk¶hZßnNº¿j£çëͰët$& ®V™Þõ\п£/Þúr-8œòo„ÚXšcì›ñÕš8y#í|T¸¬¦O_âr8˜?!s6ª½0´‡?<3pt8TUŸ.í«j[Ñw{ЦºÛ¦¡ë½*Ó‡÷œ ÑcÊ/ðruÀ‚‰ogf¼w‰·iRmšÔS Ð ‰ånJÌ<£Ü³TåÙɯ1º´ñÆ÷[Žá§)ƒõÞ÷KUÛ_«ÆžÈçƒgÆEkoOHò‹`ÎçéTfï@üºë,Æ ¬øD¤>m¨©öiŠ¥¦¶Íç©ÛóðE"‘LÀçÁÉÙø×BÉ‹éÚÝTÌXýþùa¼ê¦àº"túj,úxZ<>eý*Êçcê/»±möjï‡z•ÉÊäèöñ2œZþI…{ È«çëµÐóõæèÐÔÔ¡Ô 2¹½§þŠß¿‰ú¯9š:œZ%gCV&‡‡‡G)€âÇ?EÏü.Pbü{ÄÈKéÖ½ ¨sƒ0RÎÝÙ¿N{ÜîS§D'¦£ž«œì¬°ÿb |{Ð Œ`ÊÐnF9 HÊí»¦^®¯Ü ¬ºh Fu1u¤†éòj€WEBZ¦¯Ø ¨çjoFvi„Ô 43žÁ3×A¡Tbᤦå…G—& !„BŒ¨:—&éfB!„¡!„Bˆ‰Ð@ŒB!ÄDŒ:“ÄÆb»ŸbV¯V¥•dgãÔØ±Ø€CƒAcÌ*ë´«öiœ^P\ŠžŸ,G†8¿–""„Bˆ1m Æ”JÜZ¸öMšTH¿>o,\\0ôòe42¦NShñÞ«,bóQÄ¥f²s 1ç·C•Þ ÿœB`ˆpw6îwè!„R;Œ6Kܽ.þþ°ñòR¥)JJððÌ´3fææh>|8d……ÈŠÔí“"¯ªiá=púÖ=ܺ÷+öœÇÄ]*¼M(ÿ¶âÎS‘x÷×M%!„B e”Xin.â¶lïøñÒ >„R¡€—n-\iVl4@~JŠ1ª­³þMÉ@j†ÎvÖ+Ê¿©|îMœ§n݃“ZøÍ6B!„˜ŽQb·—,ÏÈ‘àÛØTH—K¥àòxK¥Húçü÷xö!Ùº.53sÇ@Cw'Ì .—ƒ"ii…yþB!„¼Ì ˆ5 GÓðpÕßç¦L“¯/ZMœ¨×½;þýí7΋„;À·¶†‹¿¿¡Õ¾²åàRL¾ÞËÔ¡B!Ä@5~Jåõ¯¿Fqf&vâþ_!xéRpyô­q}í<‰Þ-`gmaêP!„b £ˆº._^áoKWW„lØ`ìj^I%²2üs!k¿fêP!„bt“ÑKäQN!Æì ¡‡³©C!„BˆÐ5—H7G4ps4u„B1:#F!„b"4#„B1ˆ™XQa>JK*ЛB!u ÄLH©TbÕ³pxÏ)ärü½m –Îý;qÑ7u.7;;Í›7‡TZy€çïï'N·±TKÿþýqæÌ½Êܰaêׯ֭[!„RóŒ:“ÄÆb»ŸbV¯V¥¥:„£ááØÞº5®}÷1««ÓR“âÆÍ|Ñwðxx uλpáBŒ5 –––•¦Íœ9>>>FŒTUÅ2}út|óÍ7z•ùÓO?aùò刊Š24ÃçÎðaÃТE $''cìØ±Õ.£º±´lÙ‘‘‘Õ*7!!YYYðôô4(>B!¤¶e v{ÉøŒ >õÒYƒÆÍáë¤vš¯ê5h ¨/lŠVm;ÀÞQ··éçääÀÎÎÎ(1ž9s~~~øì³Ï‚ÔÔTlذF)_äääè<ÿèѣѼysLŸ>5!„b<ÄÄ11DGÃ;,ÌñÙÙÙ¡¨¨È(e=zôð÷÷GëÖ­akkk”ruQPPP­åÆqëÖ-üüóÏÈÍÍ­ÁÈ!„ã1x &‰EN|<¶ûùá__¤:…¨åËqñóÏ©¦-ZàþýûF)ëwÞARRÚ¶m‹ñãÇÃ××?ÿü3²²²´æåñxËåÆ ªUw||<|}}«•§M›6°··GJJJµòB!¦bð@¬ix8Þ‹Uýx…„ õ”)è¼x1€)P”–‚)•`Jeùï …Á¿ÌJK¤ˆ‰¼‚ØÛWùyÄD^ABœá¯\èØ±#ÒÓÓu,éÂÖÖ}ô¢¢¢°fÍܸq'NÔšÏÛÛ—/_ìÛ·2™¬Zõ^¸p}úô©v¼Ï !„]¿ÐõþŽØ€û;v q×.ì@®]5]í ­¨0GþÞªz2ò‘( GþÞŠ 'ö\¶µµ5† †;v}ªËV IDATTH÷õõ…P(ÄÝ»w1bÄ…BlÛ¶­ZewéÒüñ¶oß®uÞo¿ý+W®D`` .]ºgç§÷¸i‹åúõë°²²B```µâÊ_ «v>B!ÄÔ=çωD2Ÿ'g—Zˆ.55ýû÷Ç;wÀãíUqµfذaxçw0dÈjç ĤI“0zô舌BÑN"Ά¬L0RÅŠžù]  „bu”H$‚‹‹ ø|¾©C©¶ ~ýúzå=pàf̘.—Ko×'„b4#„B1‘ê Äè£ß„B!&B1B!„¡!„Bˆ‰Ð@Œ˜Ìˆ¹›qíßÔjçË-”âí¯7 ´¬âûÂþ·l7nÅ?0Vxµ"xÒ<Ê©ÞËn]æŸ'n¢×§¿¢ç'Ë“$2j,Õ¥oŸxYÔÕö…ÍZ¯µïÔÕ¶ëâen».ë–ƨ1Il,¶ûù!fõjå/s½úÍ7ØÓµ+þlÓGß}’ØXcVIôPP\ŠžŸ,G†8¿BúŒUûj5ŽúAèîT)ý·ƒWðÃÖãUæÛräB;µ‚9¿â«9FôiÕ{/5Fm±¼ìÊä ¬Øs[¾y'™‚Vkö;Ú–gU}±Ôc·¯¶Û`H}µ¹nkÛ‹Ô¯õUS}IÛq¥ªãÑ«Äh1¦TâÖÂ…°oÒ¤BšÀÎ=û ƒNŸ†«¿?Î~üñ+ÿf}Sûç|[6„»sù·#6E\j& ;·s~;„¼BiÇñF{¼æX½ïW–É8x1}:´¨4- y¤gç!9]l¬ë¼¼B)À<]ìM ýúÄˤ®·Ojû«Õv]+Ï^EF{ÛgâîÝpñ÷G~r²*Ëç£íô骿[Œ¸-[ ÍΆ•››±ª&Õ T2ì<‰yãCUiÓÂ{`ó᫸uïVì9‰»ÀÞÆRkYY¹…Xðû1DÞKƒ¥9&‡uEŸ È+”bÄÜ-˜?áM´ööDNA1FÌÝ‚?ßFøóÄMl?qÙ¹…Xòi[4ü›’«÷¡HZ ¹B‰Ë1å}iÇÜѰ”¿ínJ¬,pwª¼Ñr8@Ûf^¸„FžÎ•¦«“š!Áw¿F²H s>Cº·Áø·:keÓ¡«Øsö6r ¤pw¶Ã”¡ÝÜÆ@ù©üvÍp'á!<ÊÁ¨þÞ3•˜ŽyCœ_„Á]ÛTˆES™0pÆZ¼ß7ûÎGC’_ÿ¦^ˆª±LM&-Ú´¬\Èä œ±ðÃÄ·ÐB莰YëñÝØª3d½ÿ·k¿|Bw'í€mÇn`ÇÉ›È/*Ðà ' „$¿Hãò¬ªO@ŠHŒˆÍG‘–{|ön:¶j¤uYWEÛº­ª_kZ[7ÆÖ£×!Î+B«Æ+”ˆMaé§aû¼¶6TÕ' iCU}Þe7ãþÃìõ!Î/¤ÁÁª6hj»>±úï{´­[u}×ÍɶÊíAZ"{aú5„N_ –B$¥g£ ¸£!´S+ú÷%MëV]Ž+êŽG¤_$1qvÓUINÛÊdììäÉ,zÕ*µó=<{–íéÞ)årË&Æuüzñ{…´ÿ¦²/WîeþÝȾ^»Ÿí¿ÍJ¥Ö²FÏßÊ~Ú~’•É,Y$f½>]Îdæ0Æ»“ÌÂf­gÅ%26}Åßlý¾K•òÿn»z7¥Rú†—Ù‚ß©­sçéH6ué®*cÚpà2ûfÝ­±?ñÕšýlÙ_§™Rɘ´TÆb’ÒuŠeÿÅhö0+—)•Œ¼Ï‚'-aEÒRÆcCf®cßo>Êc,9=›OZÂJeeL¡P²7¿XÍöœ¹Í”JÆVì9ÇÇ.b™’|­e2ÆØ[_®a~ÜÎò‹¤Œ1Æ<ÊÑZ¦6™’|Öeâϕ҇Ì\Ç¢Ÿ.‹7¦þÊ’EbícŒ±cØ kYÊãyc’ÒYzv®Öåù„º>1ü»MlÍÞ L¡T²‹Q‰¬ûäe,¯Pª5mªŠES¿fLýz8t9–]°—ÈX×–²‹ÑIlóá«lÙ_§µ¶OS´õ }Ú ­Ïë³Ì†Ì\Ç>ÿõoV"+cWb’Õ®um×7}÷=šòi껚¶MËESÛk¢_ø|›ûÛaÆcr XÏO~QµAß¾¤ËºUG—㊺ãQ]!ÎÎb"‘ˆ €nÚh @à5¶øF¹4y{ÉøŒ ¾M•óÈòóqcþ|´›933cTKôð牛Ö«]…´ÔÌÌ; Ý0o\(¸\Ф¥ËIN#þ¿LL žBw'tlÕ£“A¾Btòk„ ?n‡8¯£t0JüE%°¶4¯rº­¥9 ŠJt.Ï3CVn!²ó a!à÷‘n÷H…vjO{p8@Wÿ&°¶ =;O5½W{€Ðþåâ~Zò‹J0°kkp8Àð7^¯V™Þ3¶V/W­eÖu퀗b0¼O{4||?Œo#x8ëÙ3SR€„´, ïÝ\üÃÓÅ7âþÓ‹>´õë'ž_PÏÕ–æ|8ÚZ¡›#<œí É/Ö©ÞªÚ KŸ¨nôíóÚ n s>A¾Bp¹Öƒ>±è»ïÑ–ÏØ}W“šì×½Ëó¹:Ø UcO\ŽI __zBŸu«ËqEÝñèUdð¥IqL $ÑÑœ=»Êy%%8ûñÇhs¯IU±èC—~ T^åu—¯3.çñ·Òú«JUmÐ¥OT· úöymž½ì$àótZúÄ¢ï¾G[>c÷]Mj²_ÛX=ÝÿÙXš«ÊÔ§/=¡ÏºÕv\©êxô*2x &‰EN|<¶ûù©ÒÒNB^B:/^ ¥\Žóÿûœ|}ÑjâDC«#Ø~ü&ÞîÑ<3õêúé\–‹½5l­,ð×¼ÕNW*¾ßrá=°îŸ‹ní g{kÊæ`Œ©&ôpƮӷ«Ì›š)Ñùþ0 ü¿ÆÙöœ¼ˆÍGѳ]s<ר%SR€ˆMG°ú‹ah)tô¶²Ê˜Ÿp°±Dá3ÿJKË x¼CÓµÌ燳šÊ4„™WUcå\]8Û[C$©úé'MëV{ ÈärIeªƒ–¤ :ÜèºX´õëgóÖ4]ú„>mÐÖç5©îúÓFŸXôÝ÷h˧©ïjÛ^¤~ýìYXIA1ÚZ[èÝ—Œ¡ªãжãÑ«Äà%Ð4<ïÅÆª~¼BBÐzÊt^¼L©Äå3À·±ÿÔ©P”–BQZZÞ“I­z”S€K1IÜM÷›¹5iìé7'[lϬÂA@],RYø<34ò(ð¿“Xe<ÏjRÏV\ÿ·üòñkq5Z¦!ê¹: :1ýq, (“ëö¤ó€Ž¾Øvô:þËÌP~“·Hüôò‡¦u«Ž»“{º`Û±ë` ¸„‡Y¹h®ßG៥.mýº6éÒ'ôiƒ¶>¯Iuן6úÄ¢ï¾G[>M}WÛöð"õëÝgnCV&G\j&b“DèàÛHï¾TSŒ}ˆMaç©Hlý`Ô€ ŒYðþ:u ï„`Øì––!;·³×„€ÏäÁÁèûøé¥vÍpèr,ú~¶žvÍ£zzÇÒœÞí}pâz<Þi[!ž»)0ðªuÏKTâCDl>ii^s´ÅœÇÿ?¡.¡»ºûcÄÜÍxÍÁMë»ÂÍIû£é\.óÇ¿‰¿ƒ9Ÿïz.àóÊï—¬‰2 1öÍŽøjÍœ¼v> tzŠB;·BNA1>þé/?}ò쉪֭¦>1>›ŽbÛ±p±·Æ¼q¡F9sPU,UõkChëóêèÒ'ôiƒ¶>¯‰¦mSŸ¶ë‹¾ûMËESßÕ¶=¼Hýº¡»Í\¥’áówCPϵü>7}ûRM¨‰ãÑËLÝÿ|‘H$ðyprvQ3™¼lJdexë˵XûÅ0=t¿l÷¢Êçcê/»±möî‡úzíô|½9z45at„b¡ÓWcÑǃÐâñåÇQ];UE"Ά¬L0RÅŠžù]  ¤Fψ‘ãœBŒعÎtzwg;ü:íJW¸§ í¦ÓY$B!¦Q׎GÆ@±W@7G4ps4uF墿Æ„BÈ‹­. E1B!¤8°ˆÞLð2¢çF !„BL„b„B!&B1¢œ8q¢Úù²³³Ñ¼ysH¥Rí3?Ö¿œ9s¦ÚuB!/£Ä$±±Øî燘իUiç?ý{‚ƒ±½uk8i§N³JRKfΜ ŸJ阨ዠ.ĨQ£`iùôý8EyØùÛXúíXlZö2Ò’+ä™>}:¾ùæãO!„¼ Œ6cJ%n-\û&M*¤7{ï=ôݵ açÏ£Ù{ïáÂgŸ¡¬¨ÈXÕ’Z//¯jå‘ÉdØ´i†^!ýľͰ¶±ÇäoWÁïõ®Ø÷Çr(•OßTݽ{w$''ãîÝ»F‰ByQm –¸{7\üýaóÜÁÚ-(VnnØÛÃÚÓf8f†¿ù›TÏÇ ;;;Ô¯_üñ@,£~ýú¸téàÑ£G¨W¯®]»Xºt)„B!A…K“7nÜ€P(ÄO?ý„mÛ¶A(B(¢¸øég3®]»[[[4hÐ@•&/“!1î6» ÇGÛŽ½PZRŒôÔÕ<]»vÅ¡g¾Æ@!„ÔEFˆ•ææ"nËøŽ¯vú•¯¾Â®pyÖ,ôX³< ú¬Am2d¼½½!‹qüøqL™2 pvvƆ 0jÔ(a„ ˜0aS§NEJJ Z¶lY¡¼×_)))øì³Ï0|øp¤¤¤ %%VVVªy¢¢¢*]ÎÌËÉ‚R©„½£+NüEyppvƒ$[Ta¾–-["22²R;ÀápðçŸkÑB!&c”Øí%Kà3r$ø66j§̘¾»v¡Qh(n.\öø+ö¤vܽ{‘‘‘øþûïÁçóáãヾ}ûªÎ8õîÝýúõCpp0222ðÕW_¥ÞœœØÙÙUH+“É`Æ5C™¬±·. Gœ >ße²Ò ó988 ''§R™Í›7¯T.!„ò22x &މ$:ÞaaUÎ#°µ…—¾ø…iiȾ}ÛÐjI5¤§§Úµkøøøàܹs.#N˜0‘‘‘øðÃaf¤KÇvvv(zî~@¾@…R +kLþf%4n²²Rðææ+((P;ØjРâââп£ÄH!„˜’ÁoÖ—ÄÆ"'>ÛýüTii§N!/!/®83‡‡ƒ²ÂBC«%ÕàááGGGÄÅÅ©®P(0nÜ8|òÉ'˜={6Þ|óM¸»ëöÑX‡öüGkÑ¢V¬XQ!ÍÞÑ\.’¬ ¸¸ÕS*‘+΄“‹G…ùâããáëë«S „BÈËÊà3bMÃÃñ^l¬êÇ+$­§LAçÅ‹Qøàví‚ôÑ#Èòò³jäR)\Ú´1FìDG¾¾¾¨_¿>æÏŸ™L¹\Ž3gÎ 11ðý÷ßÃÁÁË–-Ãĉ1zôhËvuuÅÝ»w¡P(*MëØ±#ÒÓÓ‘••¥JãñðöñÇõó‡ T(yõ$æ–ðlPñiÛ . OŸ>•Ê”J¥˜8q"½gŒBHP£/tåðxHÙ·BC±§kW¤:…n+WB`o_“Õ5öîÝ‹«W¯ÂÕÕÎÎΘ3g€ò'ýõW¬_¿0kÖ,dggcùòåÊqB¡wïÞň#  ±mÛ6U¹C‡¸¹¹ÁËË«ÂåNkkk 6 ;vì¨K¯·F¢ O‚_¾›€¨k§ñÖð)à>s9ôúõë°²²R=0ð¬ââb¬Y³÷ïß7΂!„BLˆ£&/‰d>NÎ.µ©[RSSÑ¿ܹs<žnW‡ †wÞyC† ©4íøñã:t(RRRàèèhìp !„ƒIÄÙ•Éááá@  øñOÑ3¿K”|!š4lØ'Nœ¨ò>2u-Z„úõë«vöìY|òÉ'4#„R'Ð1B!„#ªÎ1úè7!„Bˆ‰Ð@ŒB!ÄDh F!„b"43‘1cÆÀÓÓÓ¦M3u(„B1£Ä$±±Øî燘ի«5íU´aÃDFFbéÒ¥ÈÏÏ7u8„B1£ ĘR‰[ ¾I“jM{•¹¹¹A    ÀÔ¡B!ÄŒ6Kܽ.þþ°ñòªÖ´W‡ÃR©4u„B1£ ÄJss·e |ǯÖ4xyyáâÅ‹¦ƒB!&`”Øí%Kà3r$ø66ÕšF€Å‹ãý÷߇©C!„BH-3x &މ$:ÞaaÕšFÊÍ™3+V¬@\\œ©C!„BH-3ø[“’ØXäÄÇc»ŸŸ*-íÔ)ä%$àµöí«œÖyñbC«®îÝ»‡Þ½{›: B!„˜€Á±¦ááh®úûÜ”)pòõE«‰UÓ«šF…B¾½N!„¼Šè…®&ƃ™™™©Ã „Bˆ ýTL×åËõšö*zr_˜“““‰#!„Bˆ)Ð513f Ξ=‹ ÀÜÜÜÔáB!Äh f"6l0u„B11ºGŒB!ÄDh F!„b"4#„B1ˆ=6fÌxzzbÚ´i¦…B!¯Žš4¾H$’ ø<89»T«0Il,Ž¿?V½´õè»ïB¥šGŠN sÉÌÌ„‡‡rssagggêp!„ò’ˆ³!+“ÃÃÃ# €@ñ㟢g~—(1ÚS“L©Ä­… aߤI¥iÁË–Á38Ày_^êææ@€‚‚ˆB!¤Æm –¸{7\üý‘Ÿœ\i—χÙKò®,‡¥Riê0!„ò 0Ê=b¥¹¹ˆÛ²¾ãÇ«~cÞ<üݽ;Î|ô‘ÚÚ‹ÄËË /^4u„Bye v{ÉøŒ ¾M¥i~“&¡ÇºuY¿œ™8J¹ÜÕֈŋãý÷߇©C!„BHgð@LIt4¼ÃÂÔN÷ìÚvÁ¾IÍ›‡âÌLä<þÆâ‹hΜ9X±b…ê;„B!5Åà{Ä$±±È‰Çv??UZÚ©SÈKH@çÅ‹+ÌËåñÀárÁ C«­1÷îÝCïÞ½M!„B^Äš†‡£ix¸êïsS¦ÀÉ×­&ND‰D‚¬[·ðZ»vcˆ]·æpjÑÂÐjkŒB¡GŸà$„BHÍ«ÑS(³r%òSRÀƒKëÖè¾z5¸AMVkÆÌ^àWlB!¤î0ú@¬ëòåªß-]]ÑoÏcWQcžÜæäädâH!„ò* kp3gϞł `þ’¼óŒB!/7ˆ=¶aÃS‡@!„W }ô›B!ÄDh F!„b"4#„B1ºGL‹«çáüñ}—‹ÏæüRkuoذsæÌ££#¢¢¢j­^B!„Ô£ž“ÄÆb»ŸbV¯V¥)e2܈ˆÀ®N°# WfÍ2f•5λY+ô<ήîµ^÷O?ý„åË—Ó ŒB©£ŒvFŒ)•¸µp!ì›4©ùóÏȉGï­[aîèˆü”cUY+\Ü<áâæ‰»w®C"~T«uÀËË«Vë$„BHí1Ú@,q÷n¸øû#?9Y•¦”Ë‘¸{7úíÜ [¡àêèh¬**3ý?œ8ð‰ÀÊÆ]Þ@Û ®Zó¥$ü‹Ó‡wC"~ss 4kÙ½¾kP™O(•Jp8½ÛD!„›Q.M–ææ"nËøŽ_!½ðÁpù|¤9‚];boHwí2F•F%+-Á®-+‘Ÿ+Aðáêæ‰“ÿBJ¿Zóù{+”J%B‡ŽB·ÞƒÀãó .••OOOƒÚF!„—Qb·—,ÏÈ‘àÛØTH/+*BYa!Š320äìYt^¼×çÏG^b¢1ª5š¤ûw!-.DûÎ=áÐ=¼ ø7ê†Ö¼ €LV ™¬šù"¤ÿPƒË=z4š7oŽéÓ§ÃÃÃCÿ†B!ä…fð¥IqL $ÑÑœ=»rá` ZŒ ®@×€8ûúâѰ÷ö6´j£)*Èœ9ú7Îýûiza¾Ö¼=¼S‡váèÞm‡¿¶ÐgÐpƒÊܸq#¦NŠ:`úôéppp¨n“!„ò0x &‰EN|<¶ûù©ÒÒNB^B‚æÍÇÌ xæ>'ÆÀ˜¡Õ•µ- ¨ko½[¨Ò-,­T¿óx<0¥ ¹f¼§‹­YK4kéqV.œ<€è[—Ñ®cÊÔ¤M›6°··GJJ üýý j!„B^LÄš†‡£ix¸êïsS¦ÀÉ×­&N¸wìˆ{Û¶!à‹/ ù÷_Hbc4w®¡Õ•°IKXXZáîëàóÍÁ™þ<¼ÁÕ½ÀÉÅ I÷bqêð.xx áY¿œ\ܰÇx ›ÀÆÎJ…@ùûÆt)S¹\^cí&„BˆiÕø ]ƒ¾û—gÍÂÎ °µEû¯¿~¡.Kåg©†ŽügŽìÁ•³GήîhÕ¶£jžvB–šˆ¨qçú¼ñæ08¹¸Çàò™#ÂÒÊzôW½sL[™Úp¹Üò3ˆ„B©“Ô½/‰d>NÎ.µy*00“&MÂèÑ£M !„Bt$gCV&‡‡‡G)€âÇ?EÏü.PBßš|}ûí·øé§ŸÐºukS‡B!„@ßš|…††"44ÔÔaB!¤†Ð1B!„¡!„Bˆ‰Ð@ŒB!ÄDh öŠ1w3®ý›ú—ù* ›µ1I"S‡ñÒ(’Ê0pÆZô¶“í0u8/ ]úÙ‹´M¿H±RŒ:“ÄÆb»ŸbV¯äÄÅá_ßJ?¢ ŒYíK¯ ¸=?YŽ qÅÏÍXµ¯Zå(”J[ øðûm¸ÿ Ò<ô ‚ÐÝ©Úù4QWæËä·ƒWðÃÖãu¶¾ºÊÚR€~/†÷Ò+¿±×ƒ8¯S~Þ‰à–â½9›p7%Ã(åê§!í{‘¶i}b1¤íÚö»Uí¯ Ñ—ÑbL©Ä­… aߤ‰*ͱys„ߺ¥úéóçŸØÙÁ-0ÐXÕÖ ÿœB`ˆpw¶Dl>ЏÔL@vn!æüvy…R£ÔõF{¼æhk”²j²LB^6?n;g{kœ\6ovöÃÌUû P*M–^^¤mº¶bÑu¿ûüþšCíõ‰»wÃÅßùÉÉO9˜™›«þL9x ûõW 0Vµ/=¥’aç©HÌÿô5ÓÂ{`ó᫸uïVì9‰»ÀÞÆÒ zþ’ü"ø7õBÄøPdåbÁïÇy/ 6–æ˜Ö}‚Ê¿ñ¹éÐUì9{¹R¸;ÛaÊÐnnãS20cõ>IK!W(q9¦¼ïî˜;¾Æ25ÅRmõÀ͸ÿ0{ýAˆó‹0ip0Â{hlP~©)¤]3ÜIxˆr0ªU>MRDbDl>Š„´,¸ØÛà³wCбU#½Û@ã2KHË·ëB$ÎGŸ 8y˦E³ú¯!lÖz|7vZ5öôþß ¬ýò]Ý4¶]ÚÖƒ¶å¢Ni™¢±å›‘ðyx§g[¬ß Q éhÛÌKc^}û§¾íªîg5±M‡N_ –B$¥g£ ¸£!´S+šû ¦Xªêóú.3@·ý®ºý5!5/‰˜8;‹éª$'‡í e²‚vvòd½jU¥y2Ûx Ô IDATÕ¹3˺}[çr_ǯDZQ¿WH»ño*ûrå^6ìÛìëµûÙþ ÑL¡Tj-K©dlï¹(Æcçn'°¬ÜÂJó ÿn»z7¥Úù4QWæWkö³efJ%cÒR‹IJ×ZŽB©dƒf¬e;OG2¥’±5{/°À±‹X¦$_5Ï[_®a~ÜÎò‹¤Œ1Æ<ÊaŒ16zþVöÓö“¬L®`É"1ëõérö ³|Úþ‹ÑìaV.S*;yŸOZФ¥ª27¸Ìü~¬R<šÊÔ‹6UÕ7dæ:öù¯³Y»“Ì‚'-a¥²2­m2sû~óQÆcÉéÙòi2ü»MlÍÞ L¡T²‹Q‰¬ûäe,¯PjPû4-³wgod¿¸Ì”Jƶ¹ÆÇ.bñÿeªÚø´¼1õW–,km;cŒ¼Ï&þø§ÖØžWÕzж\ÔIz˜Í‚Æ-bÅ%2öóŸ§X†8Ÿœ·…ý}îŽÖ8ôíŸú¶OS?{ÂXÛ4cŒ ø|›ûÛaÆcr XÏO~aéÙ¹ªz´-ku±hëóú,3]ö»êöׄ¨#ÎÎb"‘ˆ €nÚh @à5¶øF¹4y{ÉøŒ ¾M•ó¤> ½=\Ú´1F•uÆŸ'nbX¯vÒR3s0wì4tw¼q¡àr9(’–j-‹Ãû‚ÛxÃÅÞZ§ôͧ Ÿg†¬ÜBdçÂBÀ‡o#­yÓ²‘[(ÅnmÀáï¾ÑNí|á=`keðru@rºñÿebÒà`ð̸º;¡c«F¸íÔ ž.öàp€®þM`m)@zvžÆX´•YU,†Üæ|‚|…àr9x”S¨Szµ÷=œ!à›©òU%SR€„´, ïÝ\üÃÓÅ7âþÓ»}š–Y¦¤IéÙïx»gxfºí~ôYúÒu¹wOLuÚ§i™=©ÏÊ¢¼>Ï 6–æjËyž>ëO_º.—çY ø+°³¶Àñ¥“%»ÎÂÒBóå0 vÛ÷DUýL}¶é'l¬ž®kKsäJõ^ÖOT·Ïk£m¿[ÕþšC<“ÄÆ"'>ÛýüTii§N!/!—?‰Wœ™‰ŒË—Ñ^Ë`íU³ýøM¼Ý£m•g>èTË«ƒ fØpòF<"6EÏvÍÁQ÷™ùÇmÊwÂJÆÀåpPP\¢öfçç‹p±·†­•þš÷a¥y3%ˆØt«¿†–Bw@ßi+Á«PÞ³k+SS,ºPWŸ&º´¡ºìm, “ËQ$•©„’‚òðó±êJÛzÉå––ÁÒœ2¹…Ïœm03ãªÖ5c@q‰L•O[Û¹\Ž^7Å«[º.—çyºÚÃŒËEj†=] T2¤=ÊEC7ÍOûéÛ?õmŸ!ôÙ¦Ÿä?ý½ m­-ô^Öº0¤íUíwµí¯ Ñ—Á=ªix8Þ‹Uýx…„ õ”)ªA$ÿó\Ûµƒµ‡î§²ëºG9¸“„ÁÝêæ¥Ú‹QIÈ)(ßùòÌÌÀç™iÝa{{¹ÀÞÚÿœ‹üu2R§º{ºÀÍÉ^A™\…R‰[ñ–• ©¬ |žy8ÎßITÅõ„£­’ÓÅP*™NeJ]}šèÒ†êrw²CcOl;vŒ—¢“ð0+Íëë]¦¦eææd ïz®øëä-0ì:}»ÂYŸz®ˆNLܾ”Étk{ýב,WûÉbuëAßåbÎç¡Kkol=zr…»ÎDÂÚR?oOùôíŸú¶ÏúlÓOì>s²29âR3›$BßF5ÒŸ0vÛëúþš˜V­|ô;iï^øN˜PU½4vžŠDïÀ°³¶¨•ú†ÍÞii²s 1{ýAø[©z}©»B§¯Æ¢¡ÅãK¯/Ú_}HÄÙ•Éááá@  øñOÑ3¿K”ÐÅnx”Sˆñ;ÓF­Ftbºê~’ýcàÛØƒa„“¡ý5©iµri’TÔÀÍ ÜMÆ )!- ÓWìÔsµÇ7£u¿üA!ÆFûkRÓèÒ$!„BˆUçÒ¤NgÄÒÓÓk*VB^:õêÕ«rÚÇk1B!/OOÍOJ«C÷ˆÕAù…HK‹L!„B´ X£P*ðí/#ðÇþŸjµÞ1§0õûþ¸u÷¬Îy–-[†/¿ü²£zq½ñÆ8þ¼©Ã „bbF½Y¿àÞ=Üš2‘#ÑpøpUÚ½¥KQ”š sgg43®Ýº³Zò’êÞ½;Š‹ {1©.RïßAÜí ÈÉ¡q‹vì1X5MZT€Ë'þBVz l\g7¯j•ïàà€””´©ÆwT§L™‚&MšT«B!uÑbL©DâêÕ°jذBzlDÜBBðë¯Ü¸˜o¿EG??œ4úƒèÇŒk†¥³™: Tgàbs +´z=ÿ%DWšvãÜ?°´²ÅÐñ³‘sŽlÛï.×LçòLJãÇ#55UçBg¿Þ<ñðL¶îYÃÖ=kxá‰ùÜÕ´Óß ¥™g4j ç’þ$(` z€Ø³¿òÕŽe¤¦ÿ…­ÞžN~÷2zðs,ûì Nœ>@Ç6Ý™0òõÒ:Æîå‹m R©èÔî^öú–'|÷ƒÖw>éO¾Ø¶˜ ÉgpthHÿЫk(»nä»=kh`ë@@Ûž÷ûöí¼úê«deeñÐC1wî\EŽëÍ4iÖ€¤sb2K· Å\ˆûƒÁ£§¢Ñhiݱ;1¶s)é›6·¨lFÔ)S3fŒEû/_¾œ+VœœÌêÕ« ®z‡„BÔŠÜ#Vœ•Å… ð¹á‘J­Æõž{Hݽ³ÁÀ¥ýûÑ9;cïë«DµuÚ…¤?éê‚·G öÞÌÅ´ ¬ÝôL&}‰ûŽG§ý{)—n3æieÊÊÍÏfÍ·ïb2ê4CÇ~´¨¾‚Â<–¬Œ¬Tì;O÷»øbÛbbÏþJZf_íXŽN«'°]/öÿ¶Õâ¾ 0€^#£œœ¬tÌf3N®Þ»™‚¼]ÜÈÊLµ¸Œ#F’’ÂO?ýdÑþ'NäÀ´iÓ¦Üôøøxš6mÊÆ-nƒBˆÚK‘@ììÊ•xŽÖÞ¾LZ«ˆ.FG³kð`þxûmÚLŸŽÚ¦òuàê»fž­¹·Ëtöë @FÖÕàÀLaQ…Eùø·êÆð¯áÙÆ7»;ö+SÖé„£Ò¯Ç(¸ïqúuiQ}œ=Dn^}‚†Ôi #Nà×ãÑü™ƒÙlbà½cx°ïSÜÛå…Àõ–-[F‡ʼ¦L™Rí2 ÅŨUj ÅEœýãW²/§¡Õê1Š-.cÚ´i,X° Úm¸‘N§£eË–8:Ö|-I!„w¾Mføàƒj•éàäŠJ¥"+ã.<0›Ldg^ÂÉÅÝ¢ü/¼ð‹-¢¸Øò+hB!ĵjˆy…†âZúó±7ÞÀ±Mî;–¢ÌLRvìÀ£rΞ%7.ÛjÌ<[—Øèí°³±'î ŸØÅoX>ŸÔª oÑÒ§#ÎŽ0 ¨Tj óˆ9ùæ+Á]ÆåT~‰Ù­­|:¢ÕèØùóŠØ}вûüZÞ­íD¯·E§µáBòi|›¶£m‹.¨T*¢ù Ά}G¾«ú¨‚qãÆ1tèÐ2Û-¹"f6™0™K^fÌÔ*5­ïæ~üqd7ÝûŽàÔ±ŸÑémq÷¼«Ò2½½½2dÏ>ûlµús3¼ñÆ 6Œ=z(Z¶Bˆ;Ï-ÐUïâBûW^!aÝ:v=ð1/¿Ì]cÆàz÷Ý·²Ú;žJ¥"´Ï“å³e×ÿðñ*ÿÆíòèt6|¿omx‹s‰'<–&n>\ÎIcí¦ù¬Û\rÕèBÊÖnšÏ–]ãhß1¡/`6›‰>°v-º–¶£"v¶L‹¢‘³Ûö®cSô*’/Ãíî ½ÚïiÒ2“ùzû2ü®”y«888àééYæÕ°aå‹ñþyìë?xÓÇpæøAÖðgN”<]zÏ}CÉ˹ÌgKßàÌñ_2•ºò¯Å”)SX·nééU»اO‚‚‚8uêS§N%((ˆ 6”¦ççç³zõjΞ=[¥r…BÔN-ú-kMÖ~&“ õ•cÿo[Y¿å=Æ=4ƒ»;ô±Z›Þ}÷]ÒÒÒxë­·¬Ö†êhݺ5çÎ#88˜?þøãº´š®5¹{÷n&MšÄpvv®QYB!n¯«kM*¾è·¨ýÖ|;'WØ9²÷×M¨ÕjZx··Z{ŒF#¤ÿþVkCuy{{óú믗 ”°ÿ~žzê) „¢ž@¬žp°wáçß¶QXœOC' Ž«‹‡UÚÒ³gO’““éÒ¥ £G¶JjâÔ©Sœ:uê–”]_×ÞBˆúJ±zâáþ“x¸ÿ$k7ÀâÉO…BˆºÎ¢@Ì«ž?å(ĵÌf³µ› „¢Ž¸¥OM !„Bˆ›“@L!„ÂJ ÄÒg]ÇŽ[²¤t[ÊlzðAÖwéÂw#F~ü¸’U !„BÔZŠbf“‰ÃsçâܪUé6cA{^xöO?Íè_¥åðáìyþyÌF£RÕ !„BÔZŠbg¾ü·À@¼½K·ež>Ù` ÅС RÑæÑG)ÌÌ$ýÄ ¥ªB!„¨µ Ä 33‰ýßÿðŸTvz„ò®~eŸ;§DµB!„µš"ØoÿùíƒÃuÛ]Z·FmcÙ/¿Äl4rrÍŒEEóó•¨V!„¢V«q –vìé¿ÿNË#ʤillè5>¬ZÅçAA¤ÅÄàÖ©S™€M!„¢>ªñÌúéÇ“qò$ë:v,ÝvaçN.Ÿ>ͽóæÑ¤{wB¿ýSQíÚÕ´Z!„BˆZ¯ÆXëÑ£i}Íz»§NÅÕߟáádœù$vvveÒfÍšE»Û°²AlÌÏÚ»•‹‰çèxwo {òºô3fðÚk¯±gÏž*—ýî»ïòþûï3lØ0…Z+„BX‡bº/\ˆWp0*¦tûÁÈHlÝܹ?®_ÏÞiÓxhÛ¶ëö©¯Ôj5ÿ÷æËMËÍÉ ]Ç®´ñïlq™EEE¬ZµŠ_-ÿ ÚèkVA¸•ì8УÏPNþþK¹é!!!ÄÅÅqâÄ Ú·o_¥²³³³ñööV¢™B!„U)64©ÖéÐØØ ±±A­-‰ïŒüMû ÐØØÐvìXŠrrH=rD©jk­ «—0ïõ)Ì{} _¯]v]Ú»³ŸcÛ×køfýÊ* MþòË/8::âããsÝö àëë‹^¯¯öÐdJJ QQQDDDTºï]­:ÐÒ¯36¶ ÊMW©TôîÝ›-[¶T¹&“ •ª¼¹ˆ…BˆÚE±@ìPd$_…„AV\9ý…ÉhÄÁÛ›Ãsç’ŸšŠ£YññJU[kÝݳ÷Ú acéй;ƒz3èáqMÆÄÄ”;ô8mÚ4âãã«|õ `÷îÝ„……áççG\\O?ýt•Ë(Oûöí9RÅ üôéÓ¤¦¦âåå¥H„BkR$ë8y2}–/§ïŠèˆÇd0`ÈÏG­ÕbÈÏçìÆdŸ;‡ÖÖC^žÕÖj>-ÚâTnš`M}ZÐÌ·5:wǹa#‹ÊÍÈÈÀÉÉI‘6FGGÓ±cG^|ñEúöíKBB+W®¤K—.Š”ïââBFF†Åû?ž¶mÛ2cÆ <==iƒBaMŠb^½{ãÔ¼9έZI^J ±±híì0 Ø8;3ò§ŸðèÖ CAÚåW‰šsrr"77W‘².^¼Hrr2àèè¨H¹WeggW)hüè£8|ø0óçÏ'33SѶ!„Ö øôj­•ZÙhÄ¡iSÔMéP¥Ùh$ûÜ9œ|}•®V\áççÇŸþ©HY£FâìÙ³tîÜ™I“&áïïÏüùóIMMU¤ü“'Oâïï_¥<:uÂÙÙ™xÞBQÔ8+HOçüŽfdP˜žÎ‘yó°qqÁÕÏ­-MCBøãÃ1 üùé§èìíq T¢íµVaA>ÇŽüÌñßu9cG~ætlL%9+×£G –‰ˆˆ &&†¥K—rèÐ!ÂÃÃ+Íg6™0Š1™M˜Ì%ïÍ&ÓuûìÝ»—ûï¿¿ÊmÒjµ †*çB!î45ž¾Âl4rlñb²âã1›Í¸²d j½€»_}•ý3gòy·n84kFð‚¥OUÖW¹9YlýjuéÏ“.°õ«Õ¸5ö¤U»šMRjooOXXëׯgÊ”)¥ÛýýýÉÍÍ%11‘qãÆakkËœ9s;¶üÊÓ«W/zõêEQQQ¥ûþv`'?|û÷Dµ¿ÜÅ€¡OÐ)¨/¤AƒtëÖ­ ½+¡V«1›ÍUÎ'„BÜiÊ›@—””T¤×iqmävÛ$j.!!!C†pôèQ´whÐƨQ£>|x•óvëÖÉ“'3~üø[Ð2!„¢fÒÓ.QTlÀÓÓsä]yå^ó>(@¬ŽJJJÂÍÍ Ngí¦”ëüùó4kÖ¬Zy7mÚÄÌ™3Q«ÕÄÄÔ|8W!„P’bB!„VR•@LýB!„° Ä„B!¬D1!„B+‘@¬ž‰ŠŠ²h°Ú*00°Ú‹š×ãÞü˜_þH¸ã˼ró‹:sƒ¦/fò¿×[»9µÆˆ—WpìlR…ûÜIŸ‰;©-BÜ ŠbÛÆŒa­¿éë§—^*MKز…m£G³. €_þùO%ª50hÐ ÂÂÂny=×¼Ïâ·¦2ÿÕ§XµðeNŸ8\å2233qqq!!Áò“ð¬Y³Ê]ôüVÊÎ+¤ßs–uÝö™|S¥rŒ&AçðÔ[k8|ò|™}ž„o×*ç«HyeÖövz6¾3‰Œí_­ünþ™wVoW¬=i—s™:ÿs‚#ðèìUœˆOV¤Üê¶³&ý»“>ÕiKMú^Ù÷öfßw!ªK±I¦‚.Ä+8•FSºÝÆÅÿðpÎmÛ¦TU¢î¾ûîÛROçîýè:Þ†“1øöÓE<ûÊ"ô6¶—±|ùr À]wÝeqžÑ£GW§¹5²qO ÝÚßE“F%ëfF}¼‘!%«G\ÊÌá¿vó¨>8;ØÕ¸®÷(dÞŠ2룭ÙA#g{~X8…/£2ëƒoØðöÓhÔµoàáNúLÜ®¶Xú½½ñû.DM)ˆ©u:466e¶7éÙ€ä}û0JU'ªèÛo¿eêÔ©\¾|™Ñ£G³dÉ’[ZŸOËö¥ïº¡ÑèPUá’Ñhä¿ÿý/ëÖ­³hÿ °`ÁÙ²e ýûWï*IU™Lf>ßy„ÈI¡¥Û¦îÃÇßàð©ó,Ú°‡ð¡½j„}ºãWÖíø•K™9üçùtó³<8­N™ ÉéüóÃïˆKJÃF§exH'&=to¥e¦fæðö'ßsäÔìl˜2¢7÷ùpúB*¯¯ØLRZ÷ù±ëÈŸ,œ6’6Í3âåüóéèЀ/,bÙKcðmâʪ-ذë72³óiÒȉ©#ï#¸SËj÷ûødf.ù†ÜüB Fû•¬…»þÍñØêuÄ'¥õñ6N_HÅÍÙÇô¥G‡æ–YXl`oÌþ÷ÚãèuZFõëÌŠo"æt"ÛxW˜÷fý«¬ÕíÀ¯±çxcÅfÒ²r™üp0£ûunÍg"tÆ‚Úûr6ñÙy…<ù@¡=;Tx¬+jˈ—WзkŽžþ‹ó3xrHwF÷ëRíc–}oËû¾ QSŠb‡"#ùå7hؾ=]fÌÀ©yÅ'.q{=øàƒ<øàƒDEEqáÂ…ÛRçÖ/Vðç‰_Ñh4Œÿètz‹ó~ùå—xxxÐóJ _™iÓ¦1mÚ4o²ŽééÓ§iݺ5ëÖ­SthvçáS¸:5  ¥Wé¶?â“IHN§‘“=£‘C±çÒÓµª¼iûþ¦V©yùñ’µ7Ç?Пk†cÂúw%¬Wƽùq•òU¤¢2—ó­›²rÖX ‹‹9ó×%‹Ê|iñF:´ðä_øšÉÄwÖâßÜïÆ.¼¾b3îiÇ“Cº³öûƒ¤gåYT¦›‹=Kf„áÙÈ™=GOóÊÒoÙ:?‚¶–ž®åçÛ„ïLâÃÍ?s1#›™ã\—þêòMôîÔŠe/áçcq¼¼ô[6¾3 'û›_ÍML½ŒÑdÂËÍ™ÿ¬ÿ‘GÜwcRÒ+ ÄnÖ¿ÊÚYÝþ‹Kbí?Ÿä·S˜±èkî€^§½%Ÿ‰«>ze©™9Œyã#º¶m†g#ç uEmÈÊ-`ÙKcˆOJãñÈOx¸w@µXö½-ïû.DM)rͼãäÉôY¾œ¾+V wp :<“,Ê\ëÍŸ?77·2/K×§ìú(O}¿Àžü¸ym•Ö‡\°`Ó¦M«nÓËÐëõ´mÛ''e‡>Ýñ+aý»^·-!%ƒ7Ÿ~€»š¸91µZEn~a¥e©T04¸#ÁZâæloQª›¯":­†ÔÌ.]ÎÁV¯Ã¿¹g¥yâÓ8y.…É£Õ¨ñmâJÍÙ÷ûYRÒ³9›x‰Ñýº RÁ#ýº ÕXvú íÙ/7gT*èØ {;=‰—.×´‹åJIÏæô…TƼµJEÏŽ-ðrsæPì¹ óÛgl“ IDATå£Õh((*fËþã\¸˜­^G~Aq¥uÞÎþ]5,8– _Ôj3r*ÍSÏÄU»• /º»8С…ûÅWûX_ÕÿÊ¥¯g#ô:E}¨ˆ%ßÛò¾ïBÔ”"Wļz÷.}ÉçAAdÄÆÒ¨C%ŠV2qâDFUf»eÃl6¶ °±m@Ÿ!cXüÖTþ¤©o›JóýòË/œ;wŽGy¤Êm¾bcc+àx\ÉiYô»»íuÛ‡ß× ?_†ôðW´ÞÛ!bx0‹7ìቨOÐkµLÙ›þ7ôóF©—Kþ>õ÷bïù…Å´lêFfN>z­¶ô*–^«ÁÁ®ì­ åùþ—XVo;HFvjµŠÌœ| FS5{V±«í´·ûûj›«c2sò+Ìg§×a0q²·eû‚)|± ;ÛÊ—»ý»êÚ!7½N‹ÁTy}ÕùL\åÐàïßµƒ ™9ùÕ>ÖWÙÙü}lÕjµE}¨HeßÛ›}ß…¨)ÅW„Vkµ¨ÔjÌr?X­·téR¢¢¢Êl4hŸ~ú©å©T RSXhÙ ö?ÿùÏ>ûì»NæUë¶ÿÊ#}:ßôÊ΃ƒns‹”ãîâÀO à‡C'‰úxýº¶¥¢ÑU7g{ØòYäSeÒRÒ³)2È/,ÆÎFG±ÁHÎ5W45Æ+HÍfÈ+(*͵j+KþF{ß& š¾øº««jµª4oU¨ ÌUZg[Š ró‹J„ôì<\*¹ÇÏËÝZMBr:-¼Ü0™Ì\¸˜É][Ò¿òÚYÝþÕDu>W]; žGg{ÛjkKÔ¤ï7ûÞVö}¢ºjü‰*HOçüŽfdP˜žÎ‘yó°qqÁÕ¯ä]³Ñˆ±°³É„Ùd*y/AZ­ðÌ3ÏpìØ±2¯E‹U˜/3ý"1£ÉÉʤ ?—ý;¿¦¸¨/ŸV•Öyá¶lÙÂ3Ï<£T7ÈÏÏ'<<œèèhEÊ»˜‘ÍOÇÎòð•ÿE×5ûbÎ’‘]òÇS«Ñ Ój*ýƒÛÂË WG>Úü3Å#F“‰Ã'Ïs!5WGZ6uç³c6Ã?þvÝUŸ¦î.ü~&€=GOSl(9Gä£ÓjhîÙèJÚ™Òv]Õ¬qCâ’Ò¸lá•”«:6 .1 “éï?ØM\háåÆšïb6ÃO¿Ÿå¯ÔLº´­xz–^-Y½í £‰/¢`o§§c%÷YÒ¿òÚYÝþÕDu>W}ýEÅbR8~6‰îþÍ«}¬-¡tßëú÷]XW¯ˆ™FŽ-^LV|"¿°˜K™9¼±b3z–É3èʉJ—sæ/¢>ÞJ~a1:2ûÊ•ÊüûÙaükÍîŸ^¬·mæÁ+O–w5qeجå˜LfþoL_šº;Tx¬kò™¯î1»™Ûý}õKyÿŸÑ%%%éuZ\¹Ýö‰[köìÙ¤¦¦VzUËòòòðññaÏž=øùU?À(ÏöíÛ9r$ñññ4lذFeóÐKËXö0|¯\ÉU7øÅÅ¥ÓWˆº+tÆþýì0ü® ½Ö6ò}Õ‘žv‰¢bžžž#€| ïÊ+÷š÷ù@ v×#F£‘}ûöѦMå7Ì[Ã… xóÍ7ÂvíÚÅsÏ=Wã àbF“†Þ+'e!êù¾‹[Mñ›õÅ©eË–$&&Äøñã­ÝœrµiÓæ–‰å=tP]> ññ¨y@'„¸óÉ÷]Üj24)„B¡ šB!„¨$B!„° Ĭd„ xyy1}útk7E!„V¢È=bÛÆŒ!-&¦ôgßÐPz΋Ùhä—Ù³ùk×.Š._¦aûöÜó꫸ú×¾%_n…””<==ÉÌÌT| D!„BXGUîSì©Éà… ñ @¥Ñ`6™Ð;9ÑïñquåÄòåìzöY†ýðCé>õ™‡‡z½žììl Ä„BˆzH±¡IµN‡ÆÆ j­¶t[ç3pnÕ [WWüÆ'?5•üK—”ª¶ÖS©T˜j¸X­B!j'űC‘‘|BtDYqqåî“‹]ãÆØ¹É´Wy{{³oß>k7C!„V H Öqòdú,_Nß+Ð;8ŽÉ`¸nŸ¢¬,Í™C×Y³dXòóæÍã±Ç£]»vÖnŠB!n3E1¯Þ½qjÞçV­ŠŒ$/%…ŒØØÒtcA»ž}–?ŒÏÀJTYgÌž=›E‹{ÍñB!Dý øôj­•ZÙhÀd0°ç…põ÷§Cx¸ÒÕÕz§Nb §B!D½Tã§& ÒÓI=|˜Æ]»‚ÙÌñå˱qqÁÕϳÉÄþ™3Ñ988mÆÂB4z=¨Ê›9£þ1hµ²ä§BQÕ80[¼˜¬øxÌf3n„,Y‚Z¯'/%…„ï¾ aË–Ò<ƒ>ûLæ»Âl6£‘{æ„Bˆz©Æ˜»;ƒ7l(7­‡?^Ó*ꬫ÷…¹ººZ¹%B!„°³’ &°k×.Þ~ûmlll¬Ý!„BXbV²råJk7A!„V&‹~ !„BX‰bB!„V"˜B!„•H &„Ba%ŠÜ¬¿mÌÒbbJö ¥çܹìyþyR¦ðòeœš7§ÓóÏãÝ·¯Õ !„BÔjŠ=5¼p!^ÁÁ×-êÝæÑGéúòËhmmIغ•½/¾Èˆ½{ÑÙÛ+UµB!D­¤X ¦ÖéД3–GPPé{{//4zýušB!D}¥X v(2’_Þxƒ†íÛÓeÆ œš7/Mûù•W¸ðèt:ú,]ŠÖÖV©j…B!j­òVÞÖ%%%éuZ\¹YTHâîÝ84k†Ùhäø²e\:z”ÐÍ›Q_Y̺(;›¢Ë—9µf ©¿ýÆÀ5kP©å9!„BÔ=éi—(*6àéé9Èò®¼r¯yŸ( yõîSóæ8·jEPd$y))d\YG@ï舃·7]þñr.\àÒo¿)Q­B!D­¦øe)µV‹J­Æl4–MT©P©Tçä(]­B!D­Sã{Ä ÒÓI=|˜Æ]»‚ÙÌñå˱qqÁÕÏœóçI>p€¦½{£±±áÔÚµòóqëÔI‰¶ !„BÔj5ÄÌF#Ç/&+>³ÙŒ[@!K– ÖëQiµÄó Gþõ/Œ……¸´iÃ}‹£wvV¢íB!„µš"7ë !„Bˆ·ýf}!„BQuˆ !„BX‰bB!„V"˜B!„•H fe¹9Yä[»B!„° ĬÈd2ñÁ¿^æ» Ÿ”I3 |µf) Þ|y¯O!ö÷_-.÷Ò¥K´mÛ–üü²^`` ;vì¨Q»Å­3dÈ¢££«•wåÊ•4kÖŒ€€e%„â–QdÑïmcÆSú³oh(=çνnŸôãÇÙFÇgŸ¥Cx¸ÕÖi gc9sòwÚ´¤EÛxzûZœwîܹ<ù䓨ÙÙ•I›5kíÚµS°¥U—›}™-Ÿ/坸S¸4ò`Ј§iâݼFù6¶„?~ÛÝþÝûÆ «r^!„Ö¡H ¼p!^ÁÁ¨4šëÒÌ&‡çÎŹU+¥ª«Ôj5ÿ÷æËMËÍÉ ]Ç®´ñïlq™EEE¬ZµŠ_-ÿ ÚèÑ£«ÞP…íøæc윙òú=°“oÖ¾ÏÓÿ÷oÔjMòuîÑŸû‡•faùÚ’B\\'Nœ }ûöeggãíí]¥¶&“ •ª¼9š…BÜ© ÄEFòUHÑdÅÅ•n/ÌÌ$öÿÃÒ$¥ªªîîÙ‡û‡-7mа±tèÜ€ÎA½ôð8‹‡&cbbÊzœ6mñññU¾Ê°{÷nÂÂÂðóó#..ާŸ~ºÊe\u9#“É„sCw~ܼ–Üì˸4ò ýRv ¸ø¾û|9ÅE…|ÿõ*:u냧w‹ óÕ5íÛ·çÈ‘#UÊsúôiRSSñòòºE­Bq+(24Ùqòdš5Ãl4r|Ù2¢Ãà ݼµVËoÿù탃UÕ>-Úb2™J¯|]Ë?0“Ñȱ#?ÓÌ·u•†&322prrR¤ÑÑÑL:[[[&NœÈòåËqtt`þüù¼õÖ[eòÜÿý¬YS¶OW¡Qk(.*äøá½´ôëŒNgCqQ!¾­;мmë–ÍA£ÑÒ=dŠEùb~ù‘?~û©ôçqÏÎÆ¹¡{­Jpqq!##ã¦ÇðFãÇçÿû3gÎÄÓÓÓâ|B!¬O‘@Ì«wïÒ÷A‘‘|DFl,é¿ÿN·7ÞP¢a'''rss)ëâÅ‹$''3lØ0Jƒ0€‰'2jÔ¨2yÊ{@àZ:½£Éˆm{¦¼¶€]ÅŸ¢ÓÛ”îÓ©[ÿ´Guåþ)Kòùö¤g¿¿oTwpt©uiPr¯WU‚é>úˆiӦѽ{wf̘‹‹K噄BÜ»Yÿ*µV‹J­Æl4’KÆÉ“¬ëر4ýÂÎ\>}š{çÍSºjøùù±hÑ"EÊ5jƒæ“O>aÒ¤IF&L˜Àc=ÆÇLTTT™<ƒ âÓO?½i™Î ÝQ«Õ¤§&ãæÑ³ÉDfZ ®n%WrÌ&Û6|D—žØ·ã+Z¶ëŒ½£s¥ùtz]Ë­·¶¤œLã®]Álæøò娏¸àêç‡[§N´¾æ)½ÝS§âêï_璘(,ÈçÏ?Žb6›ȺœÎ±#?ck×€Víj6T=HLL$55ww÷Ê3TÂÑÑ‘ˆˆ"""Ø»w/‹/fß¾}¬ZµŠ°°°2ûWvEL«ÓÓ²] ÷láþ‡Ÿâ·_v¢·±Ã˧ä‰ÚŸ£¿ÅÖ®}CÇa×À­_.gÄ“ÿWi¾ºdïÞ½Õz B«Õb0nA‹„BÜ*5ÄÌF#Ç/&+>³ÙŒ[@!K– Öë•h_”›“ÅÖ¯V—þ|1é[¿Z[cÏbööö„……±~ýz¦L™RºÝßߟÜÜ\7n¶¶¶Ì™3‡±cË` <½zõ¢W¯^¡×믪¬Šþ=ÎæÏ–òÞ?ŸÁ¥Qc;µFCÒ…³ùyOL (äAÖ~ÉáýÛéÒcÀMóÕ%¤AƒtëÖ­ÊyÕjuip/„¢v(ïYw]RRR‘^§Åµ‘Ûmo¨¹„„† ÂÑ£GÑj}·PXX£FbøðáUÎÛ­[7&OžÌøñãoAË„BX*=íEÅ<==Gù@Þ•Wî5ïó Äꨤ¤$ÜÜÜÐétÖnЍ‚óçÏÓ¬Y³jåÝ´i3gÎD­VsÍJB!n/ Ä„B!¬¤*˜,ú-„Ba%ˆ !„BX‰bB!„V"X=XíE¿…B¡,Eæ6Ø6f i×<¥åJϹs+M·ß¬Y³Ê]üN±qÍûü•pŠ‚¼\\Ý›ÐkÀHZµïbíf !„·„b“L/\ˆWp0ª&Ù¬(MÜ^£¯YéàNÔ¹{?ú†ŽE§·ád̾ýtϾ²½­µ›&„B(N±¡IµN‡ÆÆ ê&­(MÜ ,À××½^_í¡É””¢¢¢Ê]~§¢´ªðiÙGgWlíìqjè†F£+]ø[!„¨kû w(2’¯BBˆŽˆ +.Îâ4q{L›6øøxÚ·o_å¼»wï&,, ???âââxúé§-J«®­_¬àý7'óÝçË9þÿÐéþ^.ëôéÓ¨Tª B!j E±Ž“'Ógùrú®XÞÁèðpLW®(MÜÙ¢££éر#/¾ø"}ûö%!!•+WÒ¥K— ÓæÏŸ››[™—¥ëZö }”ǧ¾‰_`O~ܼöºõõz=mÛ¶ÅÉÉéVu[!„¸m'ôêÝ»ô}Pd$Ÿ‘K£*Lw¶‹/’œœÌ°aøn‘ïŠÒ&NœÈ¨Q£Ê”ggggQ½6¶ °±m@Ÿ!cXüÖTþ¤©o|||ˆ­aÏ„Bˆ;ƒâ7ߨµZTj5f£±JiâÎ3jÔ(Ξ=KçΙ4iþþþÌŸ?ŸÔÔÔ Ó–.]J‡ʼž}öÙª5@¥•šÂÂü[ÓA!„ÂÊj|E¬ =ÔÇiܵ+˜Í_¾\ýü*Lµƒ££#DDD°wï^/^̾}ûøòË/oš¶jÕ*ÂÂÂÊ”UÙ±Ìô‹œ;s‚mÑêtÙ¿â¢B¼|Z•ŸÏ /¼@XX!!!JwW!„¸­j¼èw~j*ÑÏ'O2põjl6$+>^©*k=ôz=ÙÙÙˆ !„õb˜Z§CccsÝ6“ÁÀ™/¿dðçŸãèë €»Ìÿt•J…Éd²v3„BaŠÝ#v(2’¯BBˆŽˆ +.€œóçQët$lÝÊ=zðuß¾œùâ ¥ª¬¼½½Ù·oŸµ›!„B+P$ë8y2}–/§ïŠèˆÇd0Pœ›KqNyÉÉ ßµ‹{çÍãàœ9\>sF‰jë„yóæñØcÑ®]»ÊwB!D¢H æÕ»7NÍ›ãܪA‘‘䥤‹ÖÖ³Ñˆßøñ¨õzÜ»t¡‘¿?R¢Ú:aöìÙ,Z´ˆØØXk7E!„·™âÓW¨µZTj5f£û¦MKnÜWýýp¦Ùl³Yéjk­S§N1pà@k7C!„VPã@¬ =ó;vP˜‘Aaz:GæÍÃÆÅW??´vv4éуSkÖ`6I;vŒôãÇi|Ï=J´½N0hµ²ä§BQÕ80[¼˜¬øxÌf3n„,Y‚Z¯ èŸÿdÿË/óy÷îè¹çÕWqnÙ²Æ ¯+Ìf3šk¦ûB!DýQã@ÌÎÝÁ6Ü4½A“&ôûðÚVS']½/ÌÕÕÕÊ-B!„5Ș˜•L˜0]»vñöÛocsÃükB!„¨$³’•+WZ» B!„°2Yô[!„ÂJ$B!„° Ä„B!¬Dî»ÃØó={¶€J­æÅÙïݶºW®\ÉìÙ³iذ!111·­^!„¢¾R$Û6f i×üáö ¥çܹdÄÆò݈eöï³t)ž½z)QuÓ²Mìœ8¸wéiokÝï¾û.ï¿ÿ>Æ »­õ !„õ•bWÄ‚.Ä+8 dY# aÛ¶Œ>|¸tŸÌS§øqÒ$<ºuSªÚ:ÇÍà 7/N=xÛ±ììl¼½½okB!D}¦X ¦ÖéÐÜ8–JuݶøÍ›¹kðàÒY÷ë³”ÄsìØô“ÎÓÀÁ‰n½Ð9¨w¥ùâOÿÁß}IzÚEllliÓ¾3‡Ž©Q™W™L&T׬ *„Bˆ[K±›õEFòUHÑdÅÅ•I7¿i͇UªÊZ«¨°€/þ·˜¬Ìt‚ ÅÝË6Füé?*Í»õ«Õ˜L&BG>É}‡¡Õéj\&ÀéÓ§IMMÅËË«F}B!„å Ä:NžLŸåËé»bz¢ÃÃ1 ×ísáÇÑ;;ãÖ©“UÖjgÿ "#6–F:”n?»a-zH‰êj½ÜìËDoûŠèm_ý½='«Ò¼ýx„[¾`Û×k@¥¢cçîÜ?llÊü裘6mÝ»wgÆŒ¸¸¸TµKB!„¨ŧ¯Pkµ¨ÔjÌFcé¶¼”’÷ïçž7ÞPººZÉÞÁ€ ÞñméWºÝÖ®Aé{­V‹ÙdÂh0 ÑþýkjÓ>6íIKMfï›øýð~ºöècQ™éÔ©ÎÎÎÄÇÇX£þ !„Â25Ä ÒÓI=|˜Æ]»‚ÙÌñå˱qqÁÕïï` nãFÜ»vÅ^†½ðmÕ[»œ8zÎ^OJâ9<½›ãÞ¤)®nœ=uœß}§·/^ÍšãêæÁ·ëWâíÛ 'LW‚]•ZmQ™•ÑjµnRB!Ä­Sã@Ìl4rlñb²âã1›Í¸²dÉuOFžýúküŸy¦¦UÕ¶v ùø³DoÝÀÏ»¶ÐȽ :÷(ݧkϾ\H8CÌ¡}=¸—†áêæV§gôVòór°kà@Ï>ChäÞ Ò2+£V«1›Í öT!„)o®]RRR‘^§Åµ‘Ûmo°žnݺ1yòdÆoí¦!„µVzÚ%ŠŠ xzzŽò¼+¯ÜkÞç²Ö¤(õúë¯óî»ï`í¦!„õ‚¬5)J…††jíf!„õ†\B!„° Ä„B!¬D1!„B+‘@¬ž dÇŽu¶¾úlÜ›óË w|™õш—Wpìl’µ›Qkäæ1tæ2M_Ì䯷vs„¸¥ ĶÃZÿÒ×O/½Tš–~ü8[y„õ]ºðÍý÷snëV%ªÕ4kÖ,ÚµkWgë+OlÌϬ^<›ù¯>Åö¯WÝÖº³ó é÷Üû$§]¿ÔÔ̾©R9F“‰ ‰óxê­5>y¾Ì>O ·‰k•óU¤¼2k“7ÿÌ;«·×Ùúê*{;=ß™Ä?Æö¯V~¥i—s™:ÿs‚#ðèìUœˆO¶(ßöƒ±ŒŸ³šžÏÌ/ÓžŠÊ¬-i–¨ì\w³sd}¢Ø±à… }ø0£¦ûœ9¥Û÷¾ø"^½{3êÐ!î~õU~zé% .]RªZQE£GÆÛÛ»ÎÖW»ôè3”vA·½î{bèÖþ.š4r êãmÄ&¤p)3‡ÙnárN¾"u ¸§:*RÖ­,SˆÚæ_kvÐÈÙžNáÁ{;2ëƒo0šL•æs¶·ã©Ð ìVö?£•Y[Ò*bé¹îÆsd}¤X ¦ÖéÐØØ ±±A}emD³ÉDnb"Íú÷G¥VãŒZ«%7I.Ñßn ,À××½^[† •¨/%%…¨¨("""ª”v£»Zu ¥_gll-[wS)&“™ÏwaÌ€»K·M݇Ÿâð©ó,Ú°‡ð¡½pv°«Q=Ÿîø•¡3—qoø|ņ+*3!9§ÞZCŸ©ï1húb–}³Ï¢2Ç%ñÈ«+é÷Üû,Þ°‡àÉÿábFviúÐ™Ëø"ú7ü„ÐKxuÙ&R3s˜þþúL}ÿ±”mþ(ͳjËzi)½#0êµÙsô Ä'3tæ2Ö~­?Ÿ`èÌe ¹Œ‚¢âJˬ¨-7SY}¿ÆžcÄË+™²õ?®´P2¤¹èËÝLš»ŽÁ/.¾._Eâ“Òxúµ„LYÈÈWV²ÿX\ú³ÓRytö*úL}wVogð‹‹9uþbi®–øÂ"â“Ó+í{uTö{¨ì6Ïn IDAT¸”§°ØÀÞ˜3<6¨z–Qý:““_HÌéD.çäóà?–s&€Œì<˜±„ãq%ýíÖþ.‚;µÄÞÎÆâ2kKZe,9וwެ ÄEFòUHÑdÅ•|¸¯_ç¶mÃT\Ì…ĦaC\Z·VªZa¡iÓ¦OûöíïøúvïÞMXX~~~ÄÅÅñôÓO[”V]§OŸF¥Rñé§ŸÖ¸¬kí<| W§´ô*ÝöG|2 Éé4r²Ç`4r(ö& –•R«Ô¼üøýŒ ;>× †õïÊÆw&ÑÜ«Q•òU¤¢2—ó­›²ó½çøú‰ÜÛ±E¥å™Ìf^]¶‰Ñý»²cáT´5Ec™ývŒeÑ‹°éßá„?Ü €—oÄÛÝ…í ¦ðþôG˜·î.\ÌÀÍÅž%3ÂØµhSFô敥ߒWP„Ÿo6¾3‰GÞàîíÙøÎ$6¾3 [½®Ò2+jËÍTVÀ±¸$ÖþóIæNÊ¢/wSTl¨°Weå°ì¥1|ð£¯ËW‘W—o¢›ß]ì|ÿ9¦‡õáå¥ß’•[PíþUvÌ^_±™÷´cç{ÏÑÌÝ…ô¬¼J˳¤ïUUÙïÁ’ãr£ÄÔËM&¼ÜœùÏú¹”™‹wcRÒqv°ãÕ'îçÍ¿#¿°˜·?ùžá½;áß¼âu•+*³¶¤UÆ’s]yçÈúH‘@¬ãäÉôY¾œ¾+V wp :<Ó•Å£»ÎšEÂwßñi` ?ýãt{óM4¶¶JT+n±ùóçãææVæ5vìØ[R_tt4;väÅ_¤oß¾$$$°råJºtéRaZMéõzÚ¶m‹““²—Æ?Ýñ+aý»^·-!%ƒ7Ÿ~€»š¸91µZEn~a¥e©T04¸#ÁZâæloQª›¯":­†ÔÌ.]ÎÁV¯«ôÀ™ —ÈÌÉgø}P©`Ì€®åî7º_”œ¼Ý]ˆKLãä¹&?ŒV£Æ·‰+=:4gßïgíÙ/7gT*èØ {;=‰—.WØ–ÊʼY[jjXp6:-Aþ¾¨Õ*.fäXÔ‡þ÷” kùz6B¯Ó”æ»™”ôlN_HeìÀ{P«TôìØ/7gÅž«vÿ*:f)éÙœM¼Äè~]P©à‘~]Ðj,ûÓRß_uYz\n”_TŒV£¡ ¨˜-ûsáb¶zù%WÙ‚ü}éÙ±9Ïüki—sÿ@÷JÛRQ™µ%­2–œëÊ;GÖGŠÌ¬ïÕ»wéû ÈH> "#6—Ö­Ù9aþ“&Ñü¡‡H;vŒ] \»§æÍ•¨ZÜB'NdÔ¨Qe¶ÛÙÕl(íf.^¼Hrr2Æ # GGG‹ÒjÊÇÇ‡ØØXÅʃ’a¸ä´,úÝÝöºíÃï뀟¯Czø+Zïí1<˜ÅöðDÔ'èµZ¦ŒìMÿúy£Œœ<\ìP«J–·ul`‹F]öµ‡ëõÁpê咠㉨OJ·åÓ²iÉ:¸ßÿËêmÉÈÎC­V‘™“ÁXñý+••y³¶ÔÔµÃ2zÕûl*ëƒÍßWÕÔjui¾›ÉÌÉG¯Õbo§/ÝæêØ€ÌîÏ©Jÿ*:fWëk`[RŸ^«Áᆡ¸›©Îﯺ,=.7²Óë08ÙÛ²}Á ¾Ø…íß¿—‡{wbý‡™õø@Ôêò–p¶¼ÌÚ’V™ÊÎu7;GÖGŠ/q¤ÖjQ©Õ˜F.Ÿ9CnR-‡• ÷ÎqjÞœ”Ÿ–@¬Xºt)QQQe¶4Hña<€Q£F1xð`>ùä&Mš„Ñhd„ <öØc¦¹»»+Þ–šZ·ýWéÓù¦Wž|ûPŠ»‹o<5€$êãmôëÚU:”üÁ3™Í¨U*²ó ʽá÷Æ"Üœíql`Ëg‘O•Ù7%=›¨U[Yò0Úû6`ÐôŘ¯þPÁu?WVfEm±DyõUÄ’>T•³ƒ-E¹ùE¥AGzvI |c[-UÙï¡È` ¿°;Å#9×\ùÐhÔ¥¿k³™Ò¡GKú®V«,º1üFåý,=.7òrwF£V“œN /7L&3.fr—GÉ0¿Édæ­ÿmct¿.,ß¸à€–4ªäÊsEeÖ–4KÝì\WÙ9²>©ñ(HOçüŽfdP˜žÎ‘yó°qqÁÕÏMš R©ˆûæ0›Éˆ%óÔ)||”h»¸ÅžyæŽ;VæµhÑ¢[V§££#ÄÄİtéR:Dxxx¥i1›L ŘÌ&Læ’÷ækNîùùù„‡‡­H.fdóÓ±³<|å„u;˜³dd—ܤÕhÐi5a-½Ýp¶·cãî>ûáˆEuµðrÃÃÕ‘6ÿL±ÁˆÑdâðÉó\HÍ$¿¨VCsÏ’ûØö=SÚ®«:6 .1 “ÉlQ™5U^}±¤UÕÄÕ‰^n¬ùþ f3üôûYþJͤKÛfÕ.³¢cæáêH˦î|öÃaÌføâÇß®»ªÕÔ݅߯Ü̾çèiНÜhIß›5nH\RZ•Ÿ,.ï÷PÝãb£ÓÒ+ %«·Ä`4ñEôìíôt¼r_ÓG[~Æ¡-ÓÃú2ü¾@"Wý=E“Éd¦¨Ø€ÉdÂd2]yo®°ÌÚ’VuýYU5¾"f69¶x1Yññ˜ÍfÜY²µ^­«+÷ΛÇÑ… 90{66ÎÎøOœˆç½÷*ÑvQþþþäææ’˜˜È¸qã°µµeΜ9ÞïåèèXí!ÀêÔw£^½zÑ«W/ŠŠÊÞ¼[QÚ~;°“¾ý{Hå÷ƒ»0ô :õ //¥K—ÒµkWBBB,nßÍ|¾ó»ùád{î… {ã#ò ‹¹”™Ã+6£×i™üp0ƒ‚ünI™1gþ"êã­äÓ¸¡#³¯\«ˆZ¥bÎ3¡Ì^¹…¾ÞËÈ>èµT•EpÀ¿ŸÆ¿Öìàþé%ÿhÛ̃Wž¼ß&®Œ dܛӨőÖÍÜñp½þóÚ·k¶ì?Π£×jøbÎlõº›–YS7«ïf,éCuDM %jÕ6Ö|7g{"'†Vzå§2³NÂë+6³ê» îÞW§¿ŸP~úÁ¼²t?:I×v>¥C´–ô½eS7†ôðç¡—–¡RÁ¦‡[4ìy³ßCuËŒ±ý™½r3}¦¾‡·» o‡?„V£æx\Ÿï<Âê7žàÉ‚˜ðöZ>Ûy˜Q}»ðeôoÌ[÷Ci9÷üÎKã0ü¾N7-³¢úî´´êºÝçÈ;]ygA]RRR‘^§Åµ‘[9ÉBÔ-Û·ogäÈ‘ÄÇÇÓ°aÕUPTÌC/-cÙ?Âðõ,ûÄ¡(QTlà¾g²óýç®»JÔ ƒ_\ÌÂi#iÓ¬±µ›"î0õ噞v‰¢bžžž#€| ïÊ+÷š÷ù@ Ίzo×®]<÷Üs5Â.fä0iè½uúS]¿ŸI,ÖàÛ}Çðoá)A˜õŒœ#ËRüf}!j›òH¨.†øxÔ< «‹N_HeÆ¢¯hêîÌkã+ÒBÔ-rŽ,K†&…B!$C“B!„µ€bB!„V"˜•L˜0///¦OŸní¦!„ÂJ¹GlÛ˜1¤ÅÄ”þìJϹsH9p€ƒQQäþõNÍ›ô書ú×¾e]n…””<==ÉÌÌT|C!„BXGUîSì©Éà… ñ @¥Ñ`,(`Ï /Ð套hñÐCœZ»–=Ï?ÏCÛ¶•îSŸyxx ×ëÉÎΖ@L!„¨‡šTëthllÐØØ Ö–Äw™§Oc6h1t(¨T´yôQ 33I?qB©jk=•J…©k© !„¢öS,;ÉW!!DGDWºÝl4–Ù7ûÜ9¥ª­õ¼½½Ù·oŸµ›!„B+P$ë8y2}–/§ïŠèˆÇd0àÒº5jþŸ½óŽ‹ºüø› 2T@”¡€¸q¡˜¸MË–{eŽÒÌñsdYfVî²,Î4G4G¥æ63s›æÆ‚ ([à8ÖÝóûãäô¼ãîjêó~½îÅñÌÏó<Ÿ{¾Ÿï3#6mB¨T\^³UN*eá.p}–™3g  FOZ‰D"‘H$™1ļZ¶ÄÅߟÒUªÐxút2ïÜ!%<+;;šý5—V¬`CãÆ$=‹{½zØ89•D¶ÏS¦Laþüù„‡‡?iQ$‰D"‘“F˜D"‘H$Ï)Ò{BüøãOZ‰D"‘H$Oyé·D"‘H$ÉBb‰D"‘H$OiˆI$‰D"‘Lù^ /+ ëR¥JBv‰D"‘H$’§šbbŽÞÞš…÷÷ïB€8y{cieEÚw•Šô›7qñó+n¶‰D"‘H$O=Åsp B“&\Y³¡R‘tþ<É.àѨVööx·nÍ¥eËPçåquÝ:lq¯_¿$d—H$‰D"yª)‘sÄOJêÕ«l áà˜14š<™ÒOžLæ;lxá®þü3-¾ùKky׸D"‘H$‰…7›¸¸¸[k\ÝÜ»@‰D"‘H$O3ÉI‰ääæáééÙP™÷>о+,yÅ‘D"‘H$ÉBb‰D"‘H$OiˆI$‰D"‘qá–'$‘ù,ûý(Ÿ¯ÞS ÿO;Ó¹imìltÏŽ{½}#ýú÷c•åi'7OÅüÍùéãìûn4µ+{>ÒüLÕç Žñ«àúHe0W–GAI—ïq—¡8ù=ζ}Üü—ôº¨<*]2õÌ)èY%)%bˆþúkR._¦ÝêÕtÝ·€^½´~veÊ8|8¾¡¡%‘Õ3ÉoÏòB-_*¸¹0cå.£Á”eÛ¹›¡|’"‰Ü<¿:Oûšz~ ªW"6ñ.7b“ž€dO'w3” ^´(¼Ü¨eŸ´Œg½|Æe¾Ênî3çág•¤d(ö÷ê¼<"6m¢ã† 8ß»C²\Ù²Zÿ M›pûÐ!Ô*Uq³{æP«þ8Íôaµnãû¼ÈÊÇ8u%šù›2¼KsJ;9˜LkÅöcl>ð/©éJ*¸¹0ºg+ZÔ Ðúï>λó~A­ ïÖœ®-ê—ÄŒ•»¸“€{i'Þí׆&µýµñºLü^`ËÁs$§)¨_Õ‡þí‚™¸h e6y*5GÎkî]?í ìmm¸y›Rö¶TpÕÿÑZX@P5Ÿ»Ž¿—›Yuu;™©Ëvp#. ;kº·®Ç°W›q)ò¶QYŒÕKIKiÓ°g®Ý":>…Á¡!ôiÛ€³±L_¾ƒ¤4ÝZÖ+T]ª³Ã:MÓ#¾\OLB*9y*ºLü€Ï‡¿JM¿ ô˜´”©C;iGÈÚ½3Ÿ>è‡_W£åX³û$ë÷ýCš" ?O7fèBršÂh}®Ûûa{ÿ!15ƒ¹c{ðBM_mzÆtÉ”,†0Õ¶ ©|¶j7§¯Äàä`Çÿz´¤}ãû†¿¡vhV·2«w 鮂ڕ=ÉS©¹p#ŽoÆö ÐßÓhùŒ•¡ (N ÒùâÔÀ?á7ùtéï$¥)Ñ­…¶ ÆÊ^Y€Ëw7CÉëÓ~bæÛ¯P7À‹”ôL^Ÿö_ŒìB ¿§É¶5¤»å] ü=(³rþ3z ÐyÂ"×òãzl"é™Ù îÔ˜ÎMkE×%cmk sž9†žU’G‡M\\œHJLæp÷úu±¡IqnáB±!$Düòâ‹âÚ† záNLŸ.ŽM™bVšÏ{N„‹Á3V鸼%>Xð«èûÉr1ù‡­bëßç„J­6™ÖÖCçÄ­„T¡V qàôUÑbÄ\¡Pf !„xõƒÅbÜ7EvN®º-ZŽüFܼ“,„¢ÿÔbñ¯ •Z-­ÿ÷­¸›¡Ô¦ûê‹ÅÛ_„‰4…Æ-:>Eë÷ã¶#â³U» ʳaÿi1î›Êûã¶#âã%ÛL–+Ÿoßþ¼_¨ÕB(³sÄùë±zé’ÅX½tÿp‰˜µr—Bˆ±‰¢Åˆ¹";'W¨TjñÊû‹Äæ?ÿjµó7ÿ%^ú¥¸“œf2M! ×™©4Mq'9M4þµž{÷—ˆs÷ëâåqóĸ$£åBˆm‡Î‹®‘÷ž¿+bSMÖg>ý§®Ç.F깤KÆd1EA²¼1sµø*lŸÈÍS‰qI⥱ߋè;÷õÓP;l?rA ýlÈÌÊ-G~#».Vî8&¾ýy¿Éò+ƒ)(JLé|Qê¬û‡KÄ{ó~Y9¹âèùÛÁPÙ‹*‹±ò=Cô˜´Tdfåˆ óK·6+ž1Ý5ö{0V/ÆÊþ(ôºÓ{ Å´e;„Bħ¤‹¶c¾Ó–¡¨ºdNÛœgŽ¡g•¤`’D\\œºV@# àx΀M±§&s r32ȼ}›îÐlÎNÌœÉ݈ˆâ&ý\°nï?ô}©¡Ž[Ô¦ í„oW¦¿ÕKK Êl“iunZ/÷ÒXX@ËúUpt°%6ñ®Ö¿Ç‹õ±µ±¦z¥òÔ«êÍ‘ó7¸“œÎµ˜ú·k„¥…MëTÆË½4'Ãoê¤Ý§mœKÙàS®ŒYeKWdáè`W ¿³ƒéŠ,³Ò°±¶"!5ƒÄ»ØÛÚèoÞ)SõòR£øyºakcE|JWcHSdÑ¥e],, ÿËÁ…JôëÌTš CåØvø<ýÛ7Â÷Þz˜@O<ÝŠ>íiŽ.$KQ¸›Äå›wÑ­ÖV–øUp¥Im»®Îîz—+ƒƒ eKQ©|Y<Ý\HNË4+ß‚Ê`ŽN¶ EÕyStmQ;kúaiiaV;ESåkèGÓ:þ¼ýEIw¼Ñ)Ĭx%­»Æx”zÝîM¼reœ¨]Ù‹#ç#¢éR>Ei[sž9†žU’’¡ØS“Ööö•Ššo¼¥­-å4À-0ø“'µK sáF·“Òh\]ǽ{+Í”UM¿ò„6 4+½ÝÇÃY½ë)é™XZZš¡$O¥Öú—u.¥ýîê\Š»Y¤f(±µ¶ÆÑÁVÇ/õ¡õå L/šÂÑÁevnþ™Y9F µ‡Ù½ 6dÐŒUØZ[ó¿ž-y顺3„©zq°³Ñ~·´´$O­æ®BIYçRXZh®c-í䀕¥¥Ùi‚~™JóQa¨|Iwx¡] Â]*H–¢pWó€4c•ÖM™K€·î¹†t×ÒRÓV–÷>–zíW•Á(lŠªó¦xpÚÉÖÆÚ¬v(Š,æ´Q·–õX¿ïl§mSñJZwñ(õÚ©ÔýþÏÉÁN›fQt)Ÿ¢´­©gNAÏ*IÉPlCÌÑÛ ++Í¢Ÿ{!@ˆâ&ý̶çz½„µ•á‡ñ ŽÍNëNr:3VìdÑû}©åW€ãhÚâ)é÷ßø“Ó3 ô÷¤´“=9yy(”9ÚŽ&9=“2­0t;|¾»( ­ý<ÝØ¸ÿßeŽº“löú0м5~úfGö¼ÌŒ•»hÛ°ºVõ ÉbN½¢Œ“¼*³sQÝëÐÌMóá:3–fq°²²Ô¦#„ÆÀ5·ÒŽÄ%¼ûÉXÛÂ\]* †dq/íˆs){~žþ¦É¸st¢(e0¥óÆ(lû™¢(²˜*ŸZ-˜õÓ.ú´mÀ’ßÑ¢nn¥MÆ3¦»¦~ÿ%½~p69=“ Gû"ëRIPÐ3ÇÔ³JR<Š]«ÖThÒ„+kÖ T*’Ο'ùÂ<5@¨T¨²³j5B­Ö|—‹ö‰OIçðùëtkeþ‚mc(sr±±¶ÂßScØ<¡cxlÚÿ/9¹y\¾ÏÙk·hRÇŸ ®.TörgÍî‡Ï]çVB* ªW4+߲Υ¸›„Z­ß)Ô©ìEBj†žùœ¹z‹@?³ËxèìumZÖVVØX[é< ÉbN½¢Šw9JÙÛrâ’fúa÷ñðGšfqð.W†s±÷d¹Fnžy¿¯NMY³ë7駱EÞqI÷§?Œµ­!Š«KÆ0$Ke/wÊ»:³ü÷£äæ©P©ÕœºMLBj±ó+,æèDQÊ`JçQØö3EQd1U¾åÛâTÊžñ}ÛнU}¦¯ØiVÅhù„ª}ú”DÖO-þ8M»jââh_"éùUp¥Gëú¼>m%eœ©Z±å]u·`ûyºÑõÃ%¨Õ‚ñ}Ûh×ËÌÖ™+v±f÷IÜK;2ý­Îf¿íµiXíG.ÐáÝØZ[±qæíî;Ú5ªÁÞ—éÕ&H'ÞÅÈÛØÙZjÍËÙˆ[ÌX¹ev.e™rïíܘ,æÔ‹!,--˜9ì>[µ;k¼Ý±±¶Ì«ë¦Y†¾Ò„ocßÉË4¬Qɬ¶›Õ&%=“Q_ýLzæýgùÔ¶}?]Ž2;—ÄÔ >]ú;¶6ÖŒèÖ‚kK—ŒQ,_ŽêÊköÒ~ü|ªW,ÏGƒÛ+/cå+st¢(e0¥óÆ0öÛ,JÙ‹*KAå»p#Ž œfõ§ƒÜ©1C>[ËÏœ¢w›FëŘîšú=ü—ôÚ·‚«¶O~¯_¼ËiÖ¹U—%ý¬’ècè}Æ&...ÇÖÆW7wÞ’â’•“Ë«üÀï÷ÅÏÓü©¹§‘ÛIiŒûnk>¤³jòÛh\T}‚ÒI$É“¡ó„E|9ª+5ïM?þyžžU%MrR"9¹yxzzö”@æ½âïJ «DFÄ$…#>%ƒa]š=Š]ÁÍ…yã{ë-ݳ•Y£H‰D"y2#¸—vÔs“F˜D"‘ü·yÞžUO iˆI$‰Dò˜Ùöåð'-‚ä?‚Ü‹*‘H$‰Dò„†˜D"‘H$ÉBbÿAüüü8yòäcÏ711‘êÕ«£TꞪÊŸþùØå‘H$‰äY§D 1uN'gÌ`cÓ¦¬oЀ£“&šÃ\}ü1›[¶d]½zìê×ä J"KI˜1cǼ.aöìÙ <Ýóq&L˜ÀÇü¨Å“H$‰ä¹£DëŸþúkR._¦ÝêÕØ•-KZd$B­ÆÖÅ…¶Ë–açêÊÅ%K80j]÷íÓ\‹$ùÏ““Ê+øçŸôüZ·nÍ7¸xñ"µjÕzÒI$‰DòlRì1u^›62}:.•+cW¶,å‚4§¨[ÚØ4a¥«TÁÞÕ•šo¼2!ebb±Ú™5k•*U¢T©RÔ¨Qƒ­[·êø‡……áé鉇‡K–,Ѻ_ºt‰¦M›âääDµjÕØ¹s§N>^ç»»»;nnndee‘––¦ç÷ †îr׸‹‡/}¼GÍš5µÓŸ†¸|ù2f•O"‘H$‰yÛ³vp B“&\Y³¡R‘tþ<É.àѨB­æÈĉØ89QÜ8TÙÙ¨²³Ñ»ú9C¡P`kkKÍš5زe :a,X@VV§OŸæÐ¡CtìØ‘J•*Q»vmæÌ™ƒ‚íÛ·AëÖ­ÍÊ·\¹r\¼x•J¥çפIbccõäÈçï¿ÿ¦}ûözîJ¥’áÇËsÆ$‰D")%rŽXã©SI½z• !!3†F“'S: eBQ;vµ};ë6d}ƒ¬oЀä‹K"Û§–5j0bÄ‚‚‚hݺ5ûöí£bÅŠ:ajÖ¬‰¿¿?íÛ·çÛo¿Õ®õ c÷îÝ8991fÌÂÂÂôFÄ "YùòåñññÑÙ5éèèHß¾}Y¿~½^¼'NPªT)^xá=¿ÌÌL/^lt4M"‘H$‰a ÍaÙÄÅÅåØÚXãê&w7>ODEEÊ™3g°¶¾¿|°oß¾ôîÝ›îÝ»ëÅÙ³g={ö$22R»A@"‘H$’ç™ä¤Drróðôôì(Ì{Åß•@V‰è*y6ðõõeïÞ½zëȾüòK½»|8 ³KS"‘H$‰ùÈ1‰D"‘H$’¤0#bòÒo‰D"‘H$’'„YS“ÝÞyÔrH$‰D"‘<Õˆ_æ:N¡GÄ*”q¦Œ£C¡3’Hž4Rw%‰Dò_£P†˜µ•%q˧±bÌkJžåõVÁˆ_æÒ·yГ¥Ð|> 3â—¹ˆ_æò^×ÍŠRÍWçÏÿ+‘4MagcÍ–ICQþü庮‹¢»¦êS"‘H$’âòXvMn|0=šÔùßD2²²G–Ï õÞù’˜ÄT³Âþ{ã5ÿ÷¿|8¤ÄÒãí÷RÝj¼Ò(MGΰíäEŽ]½i2½N kñåàW©êYŽ;©é|µe?s·Ð gocMôÒ)üoÉ&Öÿ­áø£ÆÜú”H$Ï'nÎŽ¬~çuBªùâho˹¨8&¬ØÂç4ç*Fþð ¾åîï(¿•tŸ¡SÌNÿ­—›ðÃÈÞì:N‡i‹¢õŸ·9ñåx½0½¾\ÁÆÃg°µ¶böÀWè×¢®Î¥8u›ÆïÏ%×ÀáßÏÁU*­ßreùilWóåF|2o/ü™¿.DPÇד°ñq°³áÍïÃ8p!¢XrÊËS©åz±ÇÌ•[ñdåæ™6+7ð[ñd›_˜4MQ¾Œ3ëþ>ÍÆÃgL†·°°`Íø¤dd2uý.ÚUçë7º²óT8—bîè„кÊœ\61®)Š¢»æÖ§D"y>)ëä@E·2|ÿûATj5ã_mÍ–ICñ:…T…€S×c8r9€”ŒÌ‚{ˆ eœùbÐ+:nEí?½\K3ÇßZ¿—ëU§šW9n%Ýà«7ºð¿Ð¬úó$á·îШJ%,--àٶÈ¿›a´^–îG³šþü¸÷ÝCê²ñýÁø ›Îç^aÇ©KÜJ¾Ëüa=©=vv±ä0ÛÛ6ù-:5¬ÀoÇÏÓõ³µ~y›¾âĵhòT*‚«Tbù¾cŒ\¼‘¾Íƒ{w 6\zØçtœ¶˜§ÃéÈÖ†òÃî#„Tó¥VÅ üvü=¿XAƒÊ>,x»'A•}¸™Â‡«·™õ Ó©%Sú¶'U¡dóÑs:~ *2X‚*ûp'5Ù›÷1ÇßÌèJ·Æu(egKlò]âïfðr½êôŸ»ŠßŽŸ/²,6VV|>°3ZSº”ÿDDÓgÎJ¢ 1õ¨Ó,ãè@ÊêY¬ÿû4}¿ú‰)};ðiŸö4ùàü<\¶_Þ¦¯°²ÔÌno˜0€~_ýÄ:#£WBÒ•Y\Š¹Ã†ÃÿâhoKH5?2³sôÂŽíÜ’yÛ’§R•ó蕨u ÖÝ:¾žœœó.ÿDDÓtâ·Ì}³+ã^iÅàïÖ²rÿ‰"Õ§D"y~¸q'™:ã¾Ðž½X®´£:6Ç¿¼+§¯ß`Ï¿—™¸j[¡Óþî­î½E“ê~Z·¢öŸ7Røß›°²´$zé§\‰MàÈåHìl¬y³mcÖüõ#oÄÎÆšY÷¡6ž>ŒÕ‹»‹#/Ö®Âæ£gy{áÏ\‰gÎà.¼X» Nö¶\»Hd|2ÎvÅ–Ãì5bs·`ȼuúTdí_§8}=†šQÝÛƒcWoòÆ÷aœ¼ ÀðExãû0Î݌Ӊ;èÅFl=y‘‹7r&2G{[¶<Œª^åølÓ^ròòX÷î@êû{•1 ‚;s‡t%;OņÃgÖ®‰ÖÏ¥”=;?y_W>\µsQqÌÖƒöA5¨êUŽ•ûOд†?éÊl¢“Ry­eÃ"Ë0íµŽŒµ5—¢ï0sÃRJ¼\K›Œ÷¸Ó,Sí÷æ¼u,ßw€ù;þæïÃÌššìõÅ ZÔªLø¼™Ø½-£~ØHTBŠN˜võ«ãçáÊ’=GÍ–×BÁº{.*ŽiëwѤºÃÛ7eD‡fì8uIa‰Ä,TjµÖ³´° Iu?RJ.ߺgïÿB[³qç¾}ŸëT1+ÝÎÁtjX‹‹6èù·ÿ mXϲ.,ßw €*žî”²³¥†·)«g‘øÓ 6ð&ÖVÏ×éV×K5/,,,¸s‡1Z›œ¦q÷.Çç›÷1÷Í®lýh(Ó~ÞŸ‡+3ú‡2©çKEÊÛì±}g¯`meÉÿëkÐÿĵ›,Üy{[kšT÷£’{Yöœ¹Ì;It®Ep•Ь9ðÁ5bówüÍä5Ûµÿwy¡6åË8óþÊ­|ùëìù÷26†×Z6àß· ”±uí*XZX0ýç],Øq!to @Ç5qwq使±lß1~=vŽÐ†“é×¢1I©$ÜÍà»mñiŸöürì,V––x¹ºðRÝjE’`p›¸šN»©‹´Ó[ù#HEåQ¤Y7î$m¿ŸöŸÀÖÚŠ7Ú¾ÀŸç¯éŒÖõó⇽µÿÏßñ7«þ<‰…… ÞîEüÝ þ÷Ã&¾ØˆÙ_aë‰ Ä¥¤iÃ{¥?ýy¢PCù†tðò­x£º;û—}t ©Ã‚·{’®ÌfØ‚Ÿ [M‰DÂWot!Èß›þsWkG¨NEÄq;';´ fˤ¡T1“;©é¦ãdoÇ‚·{2eÝ."ã“uüJ¢ÿ|³mcTjµö…ÓÅÁ€Þåùß’M¼T·=›Ö£oó¬>p²Øõò´ðp½8ÚÙ`iaÉǽÛñÕoûMûì8u ¯7?¥sp mëV¥Š§;Kváú$föïTè¼Kì ž–™@nž+KC‡öæaeó,ë@ÄíD®Ýû›ï^®N¥¸« %öþ[I~Ü9ƒ»²z‹&ë¸ ê{o6B€@`meYdY,,,¨Pƙ˭1R©ÕFã=î4.ö4®æ«ýxßµ«ãëIPeofmÜËÊý'³t3ex¥Q 6nuoÚկηÛþ*TžEÑÁ<•šŸök Ľg¯“Tôic‰Dò|2¹W;ƽҊw–ýJØÁSZ÷î³—1aåF,ÚÀ»+~ÃÉÞŽ¶u«M«Oó <˺àíVš9ƒ»`ocMuo·y¡Øý§Gi':×bÇ©KZÃM™“ ÀöSY¼ë0ï­ø € Ê¦g}ž Õ‹âž1­R«)7h2§ï ¼ddeÓ20€ïßꎂÉk·R͗ßedÇfEÊÿ±ìšÌ¿ºÐ¢€çâCWrûÞÛBå nT© ¹jéA‹ß) õ_¡¬³Î_@ûòÙ¦½ìþ÷òý8™ôjVß`zfÉâQÚ‰j^Ä&ßåú¤{eÜNM§šW9l­­ÈÉÓ¬z´´°Ð|…åQ¤™/ÚÐ|·©ö3Äß—®\owï2q{ÍßR¶š·;›ûª8î•Vì:}™Ë·â %gQ(_Æ™Oú´#%#“î!ui[·ûÎ^)‘´%É³ÏØÎ-™þZGÞ[ñ›Ñ—LJïð-+K¬­,Û¹¥ÖÍÏÕ®ëpáæm ðýg>ZcceŲ{Óo×ï$¡Û{}s~ZùÚó€¡z¹›€‚>š%.+påV‡.Ýà¯{;%§öë@Zf¯³š­½U¤üÍ2ÄJ—²§[H],ï=‰+¹—ep›HÉÈä·ãçMÆ¿›ÀG=_&üV<{Î\ÖîJ0Äž3—‰¿›ÁÄîmq´³¥gÓz¨Ôj7 C8‚ñ¯¶&+'áíï[§;O‡“’‘Éë­‚Qdå ÈΡa€G/GMÓYBÖbùè~Ìßñ·váh¦îÞïÖ†Ÿ¼ÍÞ3WhRÝ™÷pìŠñ{·’ïòa—pv°cèüõœ‹ÒlÖ® ×ï$étVæÊicºÛ§yÝCêòãÞcœ¾~‹Ék·ãçáÊç:¹|‰äù¡BYg,,,ðr-ÍÛí›j?že]HWfSÚÑžQ›3 u#ÎEÅÑaÚbí‹-hvÁ[YZ’§6¢öŸ«ùX©«œÔ;lȼuüyþc:µ¤š—ã—ÿÊÁ‹×‹Q3OÆêåÍïÃ8~ƒ¡/‡’‘IÏ/VèíP¿ýoüË»±{Êp>^»£H22àlââârlm¬quÓLÃɳÃ?ŸèÌÝÛ¢R«yåV¾Þò§É8«ùrè³1XYZràB­'Ï+všk+Kn,þ˜©ëw±´»%¦êS"‘HŠÃÔ~ø¨çËTõ™vrQù¯õŸÏ+ùwM&'%’“›‡§§g@ dÞû(ø®²Ë1Iá™»õ«ü˜^—ÏÙÈXê¿3¸¿Ð°¸i>N¼\K³tÏQVÿùߨ©cª>%‰¤8´ ¬ÂÚ¿NÛƒÿ^ÿ)1Ÿ§nDÌØÍæù‡{J$‰D"‘…6Äúô)R>3j5¶..´]¶ ;WW..YÂQ£èºot¸O »2e>œ›»v=iQŠMŸÇ ØU«VåæÍ›:†ØíÛ·Q«ÕøûûÓ»wo*T¨@JJ .¤gÏžDDD`mmÍÈ‘# úÕ«W¥R©MïìÙ³tèÐ_|Г'OfÆ %V!sçÎeÕªUlݺÕ`;;;‚‚‚>|8ï½÷ööö:þ3fÌà£>ÂÂÀ½Y»ví"##ƒqãÆé¸ïÛ·Û·oSºtiƒy^¼xÕ½/_¾LNÎã;rÄ‚œœöìÙƒŸŸk×®Õ3:†Ê¿ÿþ« /„ 77—«W¯ŒZ­&88˜~øA'::šõë×pðàAm»®X±‚Ï?ÿœ¤¤$Nž<‰¯¯¯žL§N"55+++lllpppàØ±clݺ•æÍ›Ó¬Y3ôâ>|˜yóæ±qãF=¿Ý»wóǰlÙ2ƒõ°nÝ:ÿÿúë/ÆŒCÿþýéÞ½»±*”HÌfûöíŒ;–þýûS¡BÔj5]ºtaáÂ…¬X±‚U«Vé½ ÌŸ?ŸŸ~úIû"wíÚ5ªV­JÛ¶mP«Õ 8PÇËÉÉÁßߟ;wÉ´iÓX¶lYYY„††2wî\êÕ«G‡J¼¿±‰‹‹I‰ âAæÎÂ×W!öìÑñB|ðÍ› Q¾¼ß~«q?qB§L!œœ4ß}}…P(îÇõõbþ|!4ÂÛ[ˆ>}4î/ Ѥ‰ŽŽBT­*ÄŽÂ,¢Z5!\\„˜0A;;!¢£5~11Btê$„³³>>B¬Y£q_µJˆºu…ððâÕW…èÐAWW!Ž+ž,B1gŽ+jâ q󦮿···ˆÎЙwîˆ5µj ÅíÛfåwqùrñK›6b}ÆbG¯^B'„ânD„ØõÚkb}ÆbKÇŽ"öàAxQ»v‰=ƒ™_°81}º86eŠA?Så{8ìÅ‹uÜÔjµ(]º´ˆŽŽ3gÎ+V¢zõêbË–-:a}}}ÅüùóEƒ „···èsO™Ä| š7o.Ê—//¾ÍWP!Äܹs…¯¯¯°±±{RlcñŽ;&ªU«&J—.-&Nœ(ìììtÊ%ªW¯.~ÿýw­Û믿.æÌ™#¢££ ~ùåqôèQQ¥J‘™™)lllĹsç„BäææŠÒ¥K‹õ{˜±cÇŠáÇë¹5J¼ýöÛzî†ä4ƱcÇD³fÍÄ!CDzzºÑ° bذa¢ÿþ:î‘‘‘¢~ýú㤥¥ ___‘˜˜¨ççââ"ÔjuùùúúŠŒŒ !„ 64[ïŠBBB‚ðõõÕqËÎÎ?ýô“ÈÈÈJ¥Òì´6l(’““ úݹsG„……‰°°01pà@1{öl1`ÀÑ»wo‘œœ,FŽ)V¬Xa2¥R)úõë'† &âîõ ñí·ßŠéÓ§ôËÎÎ>>>&Û>99Y :T„††Š«W¯š”Ϲ¹¹BѸqc±ÿ~­_@@€8räˆö777qéÒ%!„ááá¢qãÆÂÙÙYxxxˆO>ùD.&&FtêÔI8;; ±&ÿ!p 6ˆV­ZéÉb,ž±üŒù# @Ìš5K'''¾Ç˜,ÆúÈC‡‰jÕª 1aÂ>ËT½Ô·µ ÆÚÖÇŽ"&&F!ĬY³Äܹsµþ£GS§NÕ‹çææ&rssµÿ7mÚTG‡rss…›››Nœ¨¨(1þ|qúôiQ¯^=ñÏ?ÿˆôôt‘žž.Î;'‚‚‚Äš5kÄüùóETT”NܤÄ'€î@G Ð¨ø€3`cö±qã 2jÕ2쟜 Âþý0q"deAp°&λïBÿþšï‘‘Pª”nÜõë5ëÎbb`æL[¿~ðÒK–ß|½{kò0†J}ûÂøñš ÖÖ}ß¿{w€¤$سF†kš+ºpr‚ˆcÆÀûïÃÏ?]€•+aþ|M^0ožFÆÂŽƒ‡îî&Ã^ÿí7®†…ÑféRzŸëׯgïÞ½ÄÄÄ03_™€ääd<Èþýû™8q"YYYŒ7ŽÈÈHj Ø†â©ÕjúöíËØ±cIIIÁÆÆ†ì Í›ÔåË—IK»pnµjÕ¸yó&§OŸÆÇLJS§NqóæMªV­Ê7ÈËËÃßߟwÞy‡¸¸8ªT©ÂåË—ú=œçš5k4hÙunH·ÉÊÊbãÆ¼üòË4mÚ”wÞy‡¥K—âääd4mwww/^ÌŠ+tÜW®\©Š{˜‰'2xð`ÜÜÜtÜãââpww78‚–Oþt‡¹äO×û¨Œü`“““ùöÛo ×\¥fkkË€pttÔ4F÷îݵ£^ãááAß¾}éÛ·/AAALŸ>jÕª±~ýzÊ–-‹«««ÎˆhA :” °xñb*T¨`4lLL +V4ègkkK‹-Ø¿ñׯ_OݺuIII¡qãÆ¬^½šµk×’‘‘Q`CXYYi×ðLš4‰êÕ«›ïÓO?¥yóæÜ½{—7nªõëÞ½;$%%±gÏF͵ü‡€ŒÅ3–Ÿ1?S;vŒsçαiÓ&>˘,õ‘*•о}û2~üxRSS±¶¶Öé³Ì©—‚úÖ¢”¡¨m ðñdzxñb¼½½¸páÕªUÓúÏš5K¯Ïy˜C‡Ã[o½¥ò7D¥J•HOOgäÈ‘lذ„„ZµjE«V­ˆåÏ?ÿdÙ²e(•J*Uªdv¦ÄvMæÏìÔ¬ vv…[ ?f ”-«ùÑÑpö,¼÷XZBh(øûÃOçìYHI·Þ ˜ÏÅ‹pú4Ìš66šun:@þRŽÊ•5Ƙ‡T«~~pçNÑeX±B/_Ç7Ö¤k.9iiœœ9“†~hÖ´ä_~¡æàÁ¸øûàV·.ŽÞÞdÞ¾MÊ•+Ô|ã ,,-ñjÙGoon;f"ÅÇKHHÿüó¹¹¹xxxpîÜ9þùçBBB>>F?ùkô aggGRRC† Áßߟ‘#Gò×_!„(0NLL ýúõ#00úõëLxx8_}õ•Ñ©´´4Ö­[Lj#tê'%%WW×ãæeæÄ‰zkÁ B¡Pàìì\ ÿ‹/¾ÈÁƒõÜ£¢¢ æ´¡ IDAT eêÔ© 4ˆ×_—_~™–-[röìYêÖ­ËíÛ·Í’4Ó·C‡àÕW_-p]ÚÃØÙÙKll,¥J•Ò.¸xñ"§OŸfÖ¬YØØØP£F :tè`r=Ÿ©xågÊÏo½õ´k×+++bbbLÊRPyöìYRRRxë­·°°°àÝŽæÖKA}kaËEo[•JÅåË—iÖ¬™ÖíôéÓÔ¯__û¿““NNNz/éù\¹r…Aƒ±aÃ6oÞÌðáà |hܸ1à×_eÖ¬YìÚµ‹]»v1sæL/^̶mÛ Õç¢Ätut¼ÿÝÊ ±qˆ‡ ÉÄDÍnG—ûnwc$%A¹rƒ ÀÍM3*«ùÛ°áýð Ô©®®™óeÏÿäå]€¸80°tÃ,TYY5ŠÊݺQ©€Å‡£LLÄÑËKÏ=;%+;;lÁ°ws#;%¥hÂ="BBB˜8q"GÅËË‹={öpëÖ-­’‡……1gÎâãã±²²"11‘ÜÜ\4 z+q|@A­¬¬ÌÞÙf(^BBîîîÚµeË–-põƒäb|þùçlذAkˆ9::’››‹««+IIIL˜0'''£~²lÙ2hV¹Ì!88˜öíÛS³fM£#Qæ’““Ã믿ÎèÑ£ñ2 §:u¢k×®zu™››Ëœ9sXºtiigffê´ÕÃŒ»»;Q…航W¯Î… ´ÿÿþûï,]ºTkˆU®\Ù`z}úôáîÝ»téÒ…øøxIHH`Á‚4kÖ ///233Í–ÃÖÖÖÚßœBgôÃÛÛ›•+W°aÆ ¢ÝùV¶lYíT²!¬¬¬ô¦£MÅ+(? £~EÁ˜,ÆúHwwwî>ðpÌÈÈÐÖŸ9õ§o5…‹‹ )))ÚÑïM›6ѹsg0×®]£L™2—)T¯^C‡é•lݺ•[·né…?sæ ƒæÎ;Œ=Z»9Ÿ¡C‡òý÷ßÓ«W/V¬XQ¨žy,º–+§™4÷9_©Ô® sæhŒ¡íÛ5ë·Lín­Sœaß>Íÿnà „Š5kÐrr4ÚŸjÒ-®,7oB•*ðûïºqÔÄ»rEóÿÉ“š5rÆj5G&NįɉúãÆ¡ÊÎF•mÜ’½‡—.\Z±‚ô{™$_¸€âÖ-==)Sµ*—–/!ˆýë/2¢£)ÿÀ´‹³¯/w#"ÈNM5™VV• Uv6B­F¨ÕšïÅ0æ`ݺu´oßžÜÜ\Ο?OÆ Q(ØÚÚR³fM@3 —P伊C:upssÓ®qøþûïõÂänüþ€R8;;cee¥]ëÔ¨Q#Ž=JÕªUqpp sçÎ|ùå—äææ²`Á\\\hÒ¤‰Q¿|V®\I‹-ôÞZU*YYYÚ$ÿ»19K •JÅ‘#G;v,/¼ð={ödÉ’%fuèjµš]»vѬY3òòòX°`Ѱ_|ñ…ÁéÕ+W®ÐµkW¾üòËB­+îîîGüœ±¶¶Ö;ÞÁ™™™|øá‡îêµ¶¶&##ƒ3gÎ0g΃aš4iBrr²vί¼ò ?ÿü3ÙÙÙ(•J&NœÈǬõwqq)pMáÚµk àÈ‘#ìÝ»—… òÝwß‘››Ëo¿ýÆK/½d– ¦ÈÏ4}Áƒ†ïï¿ÿN||<666ØÚÚbaaA`` +VdæÌ™äää——ÇŸþIĪU«rñâEíÈ3`2^Aù™ò+ Æd1ÖGÖ©SgggöÝ{8>¸»Õœz1Æ£ìCÆÂ‚ÐÐPæÍ›GJJ sæÌaÔ¨QZÿ´´4Þ|óÍ_ö4h`pdÏÏÏÏà´q½zõ8qâ^^^ôêÕ‹¡C‡ê|zõê¥}¡.ª… ÔLåÅÆÂë¯k¦ëfÎÔ,Â7EÏž°j”/¯‰wåŠþ‚ý‡ ƒ!C૯4#Kaa¦G¡¬¬4Æ×ÛoƒƒƒÆ€zpÉȯ¿Âȑà (~üÑ´ü¦dÉÉÑgOI¿ñ$$@Û¶šµk5kÂæÍÆóR&$uï0˨æè;üü³É³Ä*wëFVr2ûÞ|“œ´4\*W¦åwßÐìË/9úñÇ„¯X}¹r4›3GgD¬LÕªTîÒ…ßÚ¶ ºíß‘u"Wׯçä‹6#6n¤Ñ'ŸPµGA„„„… M›6åÎ;888P£F FŒAPPÞÞÞÔ«W¯ÀÅ…!00…BAll,¯¿þ:öööÌœ9“þFÛÒÒ’uëÖ1pà@>úè#F…N›““CDD„Þ:…*Uª hÖ(Y[[k˜?> ÀÅÅ…€€6nܨ5Œùæ8ƒ>úHOÖ… 2zôhíÿK—.eáÂ… ¿7ÒZœÅ¥M›6\¼x‘:uêðÊ+¯péÒ%\œß/€?þ˜³gÏòï¿ÿÌ矮=²ÁùÛÈ}||ô ±nݺ‘’’ÂW_}E—.]Š]¦âbaaÁ?ü@ÇŽéÑ£uêÔÁÞÞžŒŒ nÞ¼IïÞ½õÖÞxyy4êòiݺ5]ºtÁßß_;òò0666lݺ•^½z±zõjš5k† Õ«W7¸iÂËË‹×^{Î;“ÍàÁƒu¦­J•*Uà»!!!|÷ÝwÔªU‹*UªpòäI¢¢¢hѢݻw7:ªY>ùäúöíˆ xñÅuF>Ì!CP(x{{óÓO?iý~ýõWFŽ©=ß.((ˆxÔ®]›R©R%,,,¸uë¥K—6ÏX~ÆüŠJA²ë#­¬¬X·no¿ý6Ô®][g=¥©z1Æ£êC â‹/¾ gÏžÌ;—éÓ§kg¦L™ÂòåË7n\¡Ž#ŠçîÝ»(•JƒgòåOáþþûï”/_^ÇïÎ;:aŠŠ!ÓÜ&...ÇÖÆW73æß$ÅÂÇLJ£Gš\çñ´ò¬—4Æ€££#iiiF×)= |ýõ×¼öÚk&wÞ¥¤¤hö†ýû÷S®\9jÔ¨avçvôèQ½Å²»wïÆÍÍ   €- …‚Y³f™½{ìá¸ûöíãÊ•+(•Jñôô䥗^2znþ‚â‡2±±±Fµ|„>|˜ððpT* 6Ô1°fëÖ­”)S¦ÐSÔQQQÚ©+++|}}éСC‰¼8I$qþüy*UªTà _—.]ؼy³ž±õ믿²jÕ*rssiÚ´)'NÔ‹L=ô~Ÿ lÚ´Io·?@rR"9¹yxzzö”@æ½âïJ KbO˜gÝPyVËwäÈ*W®LùòåY¸p!«V­2º Z"‘H$O'J¥{{{½ie!YYY888èÅ)Œ!öXë—$S¦ì7t(† 7n111dggÓ¾}{íW <¸À2nÙ²E{r.hÎ%iР¹UT,–-[ƲeËK^qqqôêÕ‹^½zêÚ‘‰ˆˆàÌ™3&Ã]½zUçÄ÷Û·o³víÚÃ;vLÛ¶±±±ìÝ»—;wê}R̸àÚµklٲŬò?~œãÇ›ö¿ÂÚµk¹té’Épéééœ?^Ï}õêÕ\¿~Ýdü¤¤$ƒŠ–ÙÙÙœ;w€ü‘ˆˆÔjµÞˆïîÇò`¼Õ«Wk?ù‡RÞ¼y“þýû³wïÞBÉ‘••Å›o¾YŒ’<:vîÜ©w“„9(•J½ë222Ø·oŸYm_¾ýöÛ"õ/æêõÃü—ÛO")ˆB-Ö_»v-qqq|òÉ'z~ï¿ÿ>¯¾úªÞ–óÈÈHFŽIvv6eÊ”¡råÊÔ¨Qƒððp6oÞÌk¯½FVVÛ¶mÃÞÞ^{J®J¥âßÿÕ¦S¡BíÉáùç0ZCíÁ»¦@sÛäÉ“Y±bµjÕbÑ¢EŒ7ޱcǼç.ŸU«VѱcG­1¦P(ˆŽŽÖ1Îêׯopû~ZZaaa;vŒÔÔT*T¨@×®]igæE±NÅ!«W¯Ö^XüàA™™™ÚO@@€ÎùQrèÐ!Þ|óMfÏž‚V­Z±lÙ2û»LñË/¿ðÞ{ï™u’ûøñã5j …‚ÔÔTâââ˜2e 111¼ÿþûzá_zé% ĹsçèØ±#¹¹¹(•J¾ûî;ÆÀÏ?ÿÌòåËMÊœ””DXX˜ö¼¤¼¼¼EÈèç_}!„@­V<[à?þ --MÛyyydgg“™™‰R©$33“R¥Jé=srr¸rå µk×ÖK3>>žÿ³wæq5mïÿ4GRÈ24 ]®TêJƈ4 ™’¸º\\D†Ü®áš3\I×<¥| ©¤„ I)… Ét¤¢¹4œÎéœõûãܳgwΩNÜáû½ûýzõzuÖÞkïuÖ^gïg¯çYχÇãIÔ^c±XbÆPxx8•dÉî%AW+''›7o“¦¹qãz÷î }}}‰ßQH`` 1wîÜ&÷k-îîîÈÈÈ@||<Œ‘••…ØØXáöíÛØ»w/vìØ%K–Põ>þŒõë×cýúõ¸ôG’>UUUL:Û·oÇúõëÑÐЀñãÇÓÎÇårÅDÓÑrûömšÑjll,– vÚ´ib‰YPQQ7Ò²ç‹òøñcZ2MQìììšÌ™mmm™GfffÒ’s–––ÂÎÎ[·nÅüùó©$ŸÀ—Ý_êëëQVVBx<8âââ ¦¦†¾}û¢ººúúú4f uãúK¯Ã? ™ ±ôôtJ=>11‘¦Îþùógœ:u òòòpqq¡ô ôôôP[[‹~ø%%%¸xñ"† ‚!C†àÕ«W(..†¥¥¥Ø[SRRíøwî܆†h+N$ejþõ×_qá¼yóVVV(//GII Ξ=‹ÜÜ\|üø™™™X»v-­^uu5~üˆgÏžÁÈÈHâ«¡¡—/_Æ£Gš<î— ®®'''Zö÷]»váèÑ£xöìY“uµ´´0oÞ<£]»v˜2e Ž?Žo¿ýÑÑÑpqqÁãDZjÕ**§ØçÏŸ%¾DuùD·mܸQl¬56¦îÞ½‹%K–`ÆŒ˜2eŠÔ¶víÚUªœQs×ÍÔÔ=3Ĥ½\äææ¢¾¾ÑÑÑÐÑÑAVV”••¡¯¯OOO°X,L™2eee´ï×ÚûKzz:vìØEEE(**BEE•••8~ü8†555hjjŠÕk͸þÒëÇÀðOB&CìÍ›7Ô›s}}=ª««©m|>ÕÕÕ——ŸÏ§Ê¯^½Š?âÌ™3àp8x÷î^¿~+W® mÛ¶0`Ž= ===Ú¹HÍ~Y[·nµ¨Xµj•i[øð^¿~=ÁM411Q¬Þ©S§`ee[[[dggcÆŒÐI¡ëÖ-‰iÚ=|ø«V­ÂíÛ·¡££ƒ­[·bРA°³³ƒ–,Y‚-[¶ˆÍ$¦¥¥Ñô½„%¢3(}ûö¥Õ‘““£Í"åççÃÍÍ S¦LATTØl6ž>^b‚Qj©¸¦¦&8fÏžúúz¡ÜÊË—/ñéÓ'ôêÕ »wï–¨[xåÊŒ;ö«,Ón }}}TUUÅbáúõë3fŒDÍFI„……¡wïÞ A¯^½°bÅ deeQÆå›7opèÐ!üðú– ¸vÈÉÉ¥¥%îܹCmkŽòòr¬Zµ ¸pá‚DÑnQ´µµ%Îv¶KKK$&&ÂËË ÏŸ?Ç¥K— '1‡Ý±cÇPXXˆ¸¸8XYYQbÐeee¸zõ*>|HéG iíýH)]¾|™V–˜˜ˆ={ö`ëÖ­@{6i͸þZ×ៀL†Xqq1•Yv̘13f µmïÞ½øá‡ÄÎÆÆÆX¹r%|}}Áãñ€‰'âÞ½{ÔC°¡¡uuu´z:u‚››¥‹ççç>Ÿ»wïR†©ºmÛ¶mÉ'€Šƒ_?~®­­Å¯¿þJ½­>yò„Ò—MZâïïèèè²³³i®‰_ý”èÒ}CªÅKzk”DCCœœœ°mÛ6Œ;%%%7n:„ùóç#))‰šáèС.\¸€ŒŒ ìÝ»€À @–ãÆÃš5k$f"ÿí·ßŒcÇŽ‰e1—Daa!bccAÁ¹sç ªªŠyóæ!!!aaaÐÐР………4CŒÍfãСCÈÎΆ¹¹9¸\.¼¼¼påÊhiiAEER]†™2e ÂÃÃ)YQºtéBì?~„¿¿?V¯^Mí;v›’ðööÆàÁƒÅÜ’øðáL¤ÈU)++ÃÆÆ ptt¤mc±Xb,‹…»wïR¹ÚÂÃÃi³pºººHMMEZZšDפ§§'¼½½›Ä ÁÞ½{QUUõ§æ„ó÷÷‡¿¿?%/õàÁDDDHtá6&""‹-ÂèÑ£©2sssœ>}½{÷‰1¬àåå…®]»bùòåÔ=£%„‡‡cåÊ•°´´„¥¥%Μ9ƒ>}úÀÉÉÏþ :k×®…••ÚµkWWW„††JÍX¿uëVðù|èéé!<<œ2ž:wî 999,Z´éééRï7²Ü_àÇDff&!TâKBÒÓÓann޶mÛÂÔÔûöí£§5ãZ”Ö^?† 2bl6›2Z ‡ÃÁ‰'àïïêêjDFFbذa¸zõ*·…™3gŠÕ ¤nž={öÄË—/ѳgO|óÍ7ðòò‘#G°k×.±Ù4@`¸É2#¶víZôïߟú|€¯¯/ž>} %%%(**¢ÿþxð༼¼¤º]«ªªZ”——‹µ¯1¹¹¹HMMÅ™3gZÔ7555MŽƒQ£FáÞ½{b†X¯^½Ä¤4š›9„èƒ@“"ÄoÞ¼Áëׯ±|ùraÚ´iãú¾¢3‰²}»víÂìÙ³‘‘‘·oßìÿüóÏT_ûøøH4€¯_¿Ž¢¢"ÈËËc÷îݸxñb“çb±XðññÁ»wï0gΘ››£k×®¨««Ãõë×±~ýz$%%Iœ}òä ‚ƒƒ[[)JQQæÏŸ‘#Gâ—_~‘‘Q‹ê¥¤¤`àÀ´q¯¢¢xzz"((H¢F) Ûý¼¬Ibûöí¨¯¯—ø" |ù¸–õú10üÓÉSTT¤f¨x<"##‘›› ©.„èèh¼}ûaaaàp8¨¨¨‡ÃÁ¡C‡???„††âÒ¥KbÖcÇŽQç›5kJKKammI“&áØ±cèÒ¥‹Ô7ùàà`*ÖJ8ó#Œ7xûö­ØÃÕÁÁ¶¶¶TìÇÈ‘#iÆTyy9>|ø V¯ººšöP---E]]˜ö[mm­˜Ëçói¨0ÀTÔ])i*_Hvv¶X¼ˆ———؃V!„&ä*ŒùuéÍ›7ObÝ]»vÁÕÕ„Ô6 ÃÍ›7!//””¸¸¸ÀÂÂvvv°µµ‹Å›7o°wï^8::Š7³Ùl444PŸ'OžLÍÄUWWcçÎÏëèè___*ÖH8‹Êf³ñþý{‰®£ÊÊJØÛÛCUUUìºåçç7›å:33S¦jÔ××SŸ !ˆ¥fMLLÄf®DÉÈÈÀË—/¡­­M룖rýúu¬X±¦¦¦¸ÿ>Ö¬Y#ußÇCEEgÏž…ºº:LLLðÓO?Q3!ÿùÏàààðÕÜ–%%%Ôÿ¢¡ÍÑ£Gðx< 6 ß}÷”••qëÖ-¸ºº¢}ûöPSS“zûô部¨(8;;#** yyyÔB I$''cÅŠ3f ¸\.8¥1:zôhTVVâìÙ³X±b­^]]<<<š\1, B1þ|x{{ËT÷âÅ‹˜wÿÙÚÚÒ‚äuuuQQQšš¨©©!""b7 öíÛ£¼¼ÊÊʸxñ"µòSÈ«W¯ ©©)v³ÓÒҢ;ß’E]hééébßOHçΑ’’"VÞÔ Gk™5kÌÍÍááḸ8lß¾½É•Hððð ú…Ãá ++ ‰‰‰ „œœ‚‚‚hÁÙBLLL¨7á  99ÞÞÞ”»GšqZUU…òòršSÛ>L IDATQ'//‘#GJ ®¨¨€½½=–.]*1=CII‰Ä¸)Q´´´Àb±šÜGcccdggSŸ¯^½Š#GŽP†˜¾¾¾Ôã !!öööHJJÂÕ«WÑ¥KŒ;¶IW­è˜°³³ƒ ²²²ðÓO?It·‚Àç'N **ŠêƒÁƒãÉ“'077§f9\]]iõ¢¢¢ '''±ûASÈÉÉÑbçÞ¿ßâºÂX7CCCŒ3>DÛ¶mѯ_?¸»»#22ëž>}>>>ذaccc*ŽQîî¬„³³3ŠŠŠ ¦¦†ââbŸˆˆÚ¢$.— .— eeetìØÇGdd¤˜khÝýÅÕÕǧ…/¼zõ ñññ´ðƒÆ´v\²_¿ÖŽO†¿¥ÂÂBRZRL3}útr÷î]B!Ý»w'|>ŸÚ¦««K†J|ø@89wî «Ããñȯ¿þJÈÉ“' ŸÏ'OŸ>%wîÜ!<¬]»–°Ùl±z|>Ÿ·oß¶øûäçç“ÈÈHB!{öì!{öì¡m9r$IKK#?&;wî”x ‡C Ihhh‹ÏiddDØl6©­­%&&&$--Ú^SSCzôè!±nŸ>}HQQõyÚ´idÒ¤IÄÚÚš°X,©ç|ùò%:th‹Ú'äüùóÄÕÕ•VH8@!äðáÃdÕªU´íOž} ¢¢‚ºº:”——£  @â uPP–,Y‹GGGj|ˆÞ%!²Ü_„øûûÃÎ΋-¢ÚYSSƒüü|Œ1BêŠÑÖŽk@¶ë÷%ã“áÏB&ÑïÌÌL¼{÷ŽŽŽ`³Ù8~ü8ž={†îÝ»cáÂ…Ó”––ÂÌÌ ‹/œ]êïèKƵ,×ïKÆ'ƒ,È"ú-“!öWBAIII“ΖòùóghvÅ¢0›tKoÄ_›ÒÒRh6&é¿ .—ËÜèþ…cþ‰0ã“áÏFCL&×ä_‰œœÜW1€æ 0!ÂlÒÿK˜ÆûwÂ<äþÉ0ã“ោL¢ß _Æc```````ø›` 1†/„Ãá //ïïnÃ!2bƒ7nüMùsPU>|ø»[!]]]|ø‡6[]+cÇ⢠n4’vú³ù'÷‹(ƒ Âÿ¦Ä_D`` ¥ñ*äìÙ³R…ÙE©««Ó쬮®ÆÍ›7ÅŽù߆,‰J¥æø'+5ÍHS|Éu÷÷÷§©UüdffR ©kkkáææ†H•rú«)((K/Ó­Ÿ7nÜ )шЍ¨(‰Û þ’ßt]]Ž9Bû{øð!ÄÊk §¥¥‰¥JâñxSÔ´™ƒõ׬þ-l1›7 Œ!åÕþµ°bbðâäI”= ùùg@ù‹¸&!ö¨h7!ÚÜZ”Úµƒs|<Þ_¿Ž—2ʲHû¢”eg#nÚ4 X´ßHäþo`Íš5”ŽçŸE§NKKKªŒUUUdeeA]]³fÍBbb" qìØ1XXXÐŽñèÑ# 2¿üò Ö¯_‡ àêÕ«(++ÃàÁƒ33³&·µ”}ûö¡M›6´Ük, jjj”16cÆ üøãbu333ñúõkêsii)ììì°uëVÌŸ?7oÞlöü?†©©)Ö¯_M›6ätuu…­­-ŒŒŒðùógJ­á›o¾ŸŸfΜ [[[Œ?^¢€{SÛš#//“'O¦Ô2„rh¢tèÐ’Kj̱cÇ,Ó9§M›†wïÞÑÊPQQ7ŠI‹ yüø1%÷Ö;;;Œ5Jê9 ­­-³‚€¬×½®®•••’jsçΓ5ÒÐÐ(¿ÕÚ~%''W¯^ÅôéÓ‘““ƒaÆaåÊ•”h}K‰‰‰¡¤¡Da³Ùزe –,YÒª…k×®]CLLŒÄ4Abã¬5ã“ÍfSòq/^¼@EEi¢÷Ïž=“ªªpùòeäååQù[­[·PUUGe:¨¯¯Gmm-êêê(y+Ñßhee%~ùålݺ¨4C>|@Ÿ>}ЧO‚ûycɶ?"##W®\¡I륥¥Ñ”}Ö­[G©£ÈŠÌ†ØŸ—”¡*šš0Y¸ïãâhåŒá."yTñò%,@×&ªþ]HûBŸôíÛ¡!Aûñ¿‰?#QocŒŒŒðþý{š!öñãGðù|èééÁÍÍ ÝºuCyy9‚ƒƒáêêŠ×¯_Sy¥ø|>~úé'Zî'‡:àæÍ›èܹ3¶nÝ GGG¼ÿ|>_ê¶Æ¹ª$‘’’‚^½zÁÇÇ>>>¨¯¯ÇçÏŸáììŒ-[¶à›o¾‚‚‚XÞÁÜÜ\Ô××#:::::ÈÊÊ‚²²2ôõõáéé ‹…)S¦ ¬¬Lj2fQqúôiü­«¡…¤§§Ó¡:t< íãããC“Ý),,„££#8Þ¼yƒéÓ§Ž= eeeŒ?:uBÛ¶mñûï¿‹%'mlLݽ{K–,ÁŒ3šÌ…صkW©²`½zõjò{šššâÑ£Gb†XãDßBZ{Ý@'mÅŠb×ùûï¿§DËEiM¿œ={åååÔçÇãåË—8pàx<öíÛ‡èèh‰¹÷$AÁž={púôi©3F***055ÅÂ… ±råJ1½âÍ›7cݺuó8ÆÇÇCQQ.\ •Ÿ;w< Œ!­Ÿ¡¡¡8vìÁ=E[[æææ´<”999PVV†®®®˜Z]]Ìš éé騨¨€‚‚”””ЦM¤¤¤ ** Æ ƒµµµXâná¹?~ @ðRد_?‚ñ'”$klxÆÄÄ 44/^¼@ÿþý $&&B]]555°±±Á£G¾šÞ®‰G{öÒ«!JJ„ÄÇÓSù²z5!ÆÒµ+!ûö ÊSSu45 i×Nð¯^„ÔÔüÝ^½ "dð`Bttqw”?{FÈwߢ¦Fˆ‘!×®µLVàþ}Búô!¤}{B|} QQ!$/O°íÃB&N$D]]]BΞ”Ÿ>MÈÀ„téBˆ“!ãÇÒ±#!¨µº-„²k!=zêš›òþ=}»ŽŽÉ6°©›6‘”?äZ$‘¶u+yøË/-n˳ãÇÉåÑ£I¸™¹6u*©),$„Rùú5‰óð áff$rÂRpï­+.ŽÄÏ™Óâó´ä;äž?O2vï&w/&™dŽšêIû>{öŒVÆç󉆆ÉËË#[¶l!=zô mÚ´!ÆÆÆ”¤‘^½z‘   2xð`¢££CÜÿ„dõêÕdذa¤k×®dŸp`R¯^½ˆ’’‰oôƒhª^JJ éÓ§ÑÐÐ ~~~DEE…ö=Y,166&W¯^¥ÊfΜIvíÚEòòòrùòe’œœL Imm-QRR"™™™„B¸\.ÑÐÐ wîܡꇄ„U«Vggg©’Vùùù€Ä>—´MR;…x{{“½{÷’ððpB>LúõëG\\\ˆ‹‹ ™4i’˜T!„øùù‘9sænݺ‘I“&‘9sæ &KKKRRRBbbb$¶]DMM8;;“ˆˆB!cÆŒ!ÁÁÁ$77— Ÿ?¦ö711!§OŸ¦ö“&gÕÔ¶æ $[¶liUÝ£G’5kÖÐÊ233Éĉ !™­††©õËÊʈ··7±··'¹¹¹­jCK9~ü8™7o!„gÏž‘Í›7“aÆ‘ï¾ûNâþ_ãºÓ®gK‘¥_Μ9C~ûí7êoÞ¼yÄ‚VväÈ‘7%%…X[[“yóæ5Ûîââb²`Ášü!„¼{÷Ž 4Hb‚‚b``@¸\®Ø¶Þ½{Ó䤄´v| %¨òóóÉÀI]]yûö-õ·xñbâïïO***ÄênÞ¼™lß¾]æs ©««#Ó§O' , …<Ï$QXXHŒI^^ÉËË#û÷ï'+V¬ îîîäÒ¥KT¹±±1í8YYYdÆ dܸq$..ŽÔÕÕ‘U«V‘ß~ûÔÕÕ‘½{÷???RWW'Ö׊ÄѲe‚?M^eeÀ½{Àó瀙°``n¼{×¼k2<\wÖ¡ œ™ž>prØXÀÍMp¬¦^„y<`Ú4`Ý:Áù×­DæL¬¬€Ë—ç±¶„“IíÚ Êºv.\ž>ΟloM[àäI (ˆŒ”A¿|.1¢‘ïZo®\Aî¹s}äÚëé¡ôéS?såJ茅±§O£01‰Ë—Ã9>Ê-È®ßê+*ðâÔ)Ø;‡kÖ|ññ¬¬¬––F½á‚·œvíÚAWWÝ»wÇ;wлwoDFFÂÝÝŸ>}¢å— Ç7СCš{¤¬¬ ÷îÝÃóçÏaff† @UUË–-òeËh"Õ¢Hª§¬¬ŒiÓ¦aåÊ•ðññÁÏ?ÿ,×Âáp““ƒªª*ª¬OŸ>xÿþ=222 ««‹ôôt 0FFFxûö-%öÓO?aùòå044DNN†ŽÒÒRìÝ»ÉÉɘ={¶Ô>|üø1ºwï.Q‚FÒ6Ií §NBHHŠŠŠPRR]]]|óÍ7pss pg¤¦¦ŠgëÖ­Ô,_xx8•ë©sçΓ“âE‹žžNÉœµ„  ((ÎÎÎ-®ógQ\\ ==½VÕ ÅÞ½{¥no*__xx8V®\ KKKXZZâÌ™3èÓ§œœœh.¤¯ÅСC±víZXYY¡]»vpuuEhh¨TÅ/½îqqq(..ưaत„††ôéÓ+W®sÑ‹"k¿Ì˜1|>rrr““Ã… ¨¬þäù­¦ò“±ÙlDGG#$$ —(¶Þ---„„„ ¡¡V~òäI‰Š°lÙ2¬]»þþþ8p ¦N EEEjvZRÎÊÖŒÏêêjŒ7ÇôèÑ+W®ÄþóÈÉÉACC;v”¨ÖÂår¥ºâ[‚··7Ü¢P‚‚JáçÓ§O°µµ…ššöïßOµ­  €VÇÄÄÈÏÏGrr2%ùO›i?~<ÜÝÝáããÓªïñÕº =4ýú**ë¥^§%KFyyCèî]@^°·ôô€[·€F3›4ž>ÊËùó99`Å à—0ž=22ÇPRĹÄÄ *}}1Ö¥ ЧPUdeµ¾-pâ°r¥ÀÏÒó!!ÊÐjaÆÛË—ÑÏÓíÿø¡u8Pûñ#Ê_¾„í©S“—G÷áᦣƒ))è9nÜ×k°÷ìAßÙ³¡ô•VVVxôè¦M›ܼyYYY°²²xŠ,4pvvFûöíñöí[ ü£`É’%”«LtZ[èzìׯTTTðáö``KªWSSƒ’’,\¸rrrøé§Ÿ¨ø%!††† „ÐÊŒŒŒžžŽŒŒ ÌŸ?>„††ŒŒŒPSS%%%ÔÔÔàÔ©SprrBÛ¶mQ]] ðóóòeËš”ˆ)//Ç?þˆ}ûö‰¹v¤m“ÔNXºt©DÙ)>ŸO=HxM¼¤¤¤`àÀ´šŠŠ TTTàé鉠  ¬[·NjýÆŒ?‹/þG¬fc³Ù4×Òýû÷¡®®N‡’(,,Diii“²B’`±XðññÁ»wï0gΘ››£k×®¨««Ãõë×±~ýz$%%¡[·nbuŸ>>عs§X<Û—ôËáÇññãGüÜ(æõ÷ßG~~>6nÜ(VgÏž=¸ví^½zEż-\¸P¢ÜVSˆºu‹‹‹qøða¤¤¤ˆí'Œ#ôòòBzz:víÚ… 6`ÅŠÐÕÕÅ!C$Ƶf|¶k×—.]‚³³3&Mš„Aƒ¡}ûö „àòåËÍJòx¼V‡ äææ"55gΜiÑþ={öDDD^¿~-¦»¬§§©¿±OŸ>aèСˆˆˆ@MM ,--qúôiÚ½®±ÛX¾š!&jÔ*(Œ÷&éÙ“þ¹¤D°ÚQôÙÑ¥‹ ¼)JKÎtêÇ®ÐÐ7®© b±  ðÿ ­o Í„S´š7—.A_ÊÛ$êJJ &Aç­¾¼ **4£HµS'Ô‹ÄB|MJ³²P–™)1x¿µXYYÁÏÏÉÉÉèÞ½;âã㑟ŸObçÎî]»PTT”””ˆ­êêÙxþèÛš‚‚‚Ø[©4$Õ+..†––uìСC‹b®„1brrrضmþóŸÿàýû÷022‚šš¸\.:vìHIdùúú¢]»vHMMEjj*G#‰ºº:899aîܹã7¤m“†‹‹ mfRÈ«W¯ MöáÅ‹1yòdZ‡Ã’’/^ sss¬ZµªÅŠ òòòðôô¤­Ö”¦‹*­ük¡¨¨H}w‹…¹sç"NJ ¥(GÅܹs©zqqqàóùÍjØ&''cÅŠ3f ¸\.85.GÊÊJœ={+V¬ Õ«««ƒ‡‡Be\ C££#æÏŸooo™ê¶æºÿöÛoPQQÁ•+Wзo_ÈÉÉÅb!99„­­-Ö¯_/fˆµ¶_ø|>öïßëׯ‹µÖ¬YøöÛo±lÙ2±øEsssØÙÙ¡_¿~_eŒq8Ìœ9?þø£DíÎéÓ§cÞ¼y€Áƒ#44oß¾ÅæÍ›±xñbœ?^âq[;>û÷ï½{÷ÂÉÉ ·oß ÐK^¼xq³†˜¼¼¼Ä:ˆŽŽFvv6V¯^-q{ff¦Ì Bàøñãxóæ —žž}}}JëY”+W®`ãÆ¨¬¬„ºº:BCC‘˜˜ˆ`éÒ¥€{÷îÁÒÒ3gÎlq|`cþ‰#99@J_SÛEéÔ `³³RÂ{MQ eá…–ðÇ"@uõÿ„ÚÚ‚Y·/ÄëI3¨ i}[„çü‚ÕêR©ýô <€… ÆL--Ô4šveMMðêëÁ­®¦Œ1vi)TD©åäå)7æ—R–òœœ0€*ûpë*_½‚õ®]­:¦™™²³³Í›7ãÈ‘#(//Ç–-[——‡yóæáÎ;”›¢K—.b?þ?û! \-%%%àóù——Gyyy‹ »>}ú //„¡{÷îHMM…½½=ôôô ¨¨ˆœœ˜˜˜€ÇãáÕ«W066Æ£GðäÉÚç•+W••…°°0p¹\¸ººÂÌÌLLh¾©mM1{öløùù‰•ÛÛÛcíÚµ"Ò’V`òù|DDDPû Û!tùtìØÇGddd‹\:BæÍ›kkkÊí" ™ãñx2 ËŠ††µÊïðáÃX¶lY³® ‡³gÏ"99YYYpwwÇ?þ\ºt OŸ>Åýû÷amm-V×ÝÝ•••pvvFQQÔÔÔP\\ŒƒÂÚÚÝ»w§‚”E¹|ù2llld~Ƚxñ5552a­½îááá§>744`Þ¼yرc §§‡OŸ>‰¯µýræÌ 6LâŒoÛ¶m1oÞ<‰é+llldê¦ÈÏÏǬY³``` ¶ÊRˆ$®žžŒ1zôh©¢ï­ŸB:uêUUU\ºt 666055EÇŽññãÇ&ëihh ¢¢B¬œÇã! ”ZWKK«Õé6Øl6å5`³ÙR÷344ÄÂ… ‘’’‚#GŽ $$µµµHLL„¼¼ EEEê%³µü% ];w¸[ú,ïÙøæ`×.1#ˆß’²ˆ‡bÀ@]®r]cbôèlÙp8íöíÿIû’¶¼/pÃ^½J¯;{¶ ÞË—‚Ïii‚زæ <xõõ |>Ÿ/ø_¤óÞ^¹‚ÎffP“Ï# =gg³fÍ‚††¶nÝJ-C'„4¹­©vJCCC±±±ppp€ƒƒÜÜÜ$Þàããã1hÐ ÚŒBjj*Í]°sçNŒ?¾eþ:::8p ’““ݺuC=pòäIp8ܽ{ïÞ½ƒ©©)U§¡¡úÞl6›6ƒÚÔ¶¦èÑ£•¯K—.xôè8mŸÆ@VV&L˜ ܺu ³fÍÂÂ… 1wî\¬Zµ ºººðõõźuëÀçóÅÎ |¸Å/¹¹¹˜>}:®\¹‚sçÎItK­Ÿ€ÀM:gÎÄÄÄàáÇT𑍍(‰î]QLLLÄVfÀêÕ«1xð` i"#Àwß}‡²²2*—›,ûÑÕÕµÉs˜˜˜P±±%%%ˆˆˆ@=`mm `ÇŽ8{ö¬ÌçoL‹gÄLL®¼‚`æL»nË %)S\]Ó§ðªªä¹—Ïsç€yó€Ý»3KçÎ5? ¥  0¾¾ÿhÓF`@‰ÆNFD?ü 0 ÀÔ8z´ùö7×G`œ}þL¯7w.P\ Œ#ˆ]ë׸t©ùó冇#mËêóë `±aŒþˆ;z“ï¿oþ@"èOž vYnzySU…öúú¾?ÀzçN$ûûãʼnPíÜÖ»vÑfÄ4Œ ïìŒ+cÆrr˜œ¥f„Ô›û_+++°X,())aèСøôéÚ´iƒ¾}ûÂÇǦ¦¦ÐÑÑÁ·ß~+5hXLLLPSSƒ‚‚Ìœ9ªªªØ²eK“9„äåå†Ù³gcݺuX´hTTTh7T‡ƒ×¯_ãs£Ádhhsss‚@ŠŠŠT   Ìš5 íÛ·‡.\¸Ð¬ë®  €šM½‘¥¦¦¢[·nR· Û ­yöì¾ùæÚl‡ÌÌL ™ Â’%KÀb±àèè{{{$$$à‡~ öiM>%@Æ@˜"@NNçÏŸÇÂ… ±bÅ hkk#$$½{÷¦ö_³f Öˆ,$qqq¡‚s›ÚÖ&&&T.Z´7n„©©)©ºéÓ§ÓfT¾ýö[†ŽY³f¡oß¾ÐÔÔľ}ûàååOOOìܹÕÕÕbîJ+++ìß¿ýû÷‡¡¡!ÒÒÒÀb±`ccƒ)S¦HLJéèèˆääd|ûí·7nz÷î yyyTTT€ÅbáñãLjŒŒ„®®.­^çαaÃXXX`êÔ©èÓ§TTTPWW‡òòr`ûöíbc³µ×ýÇ„³³3999,\¸S¦LAAA~ÿýw\¾|Yj²eYûEII ÐÕÕÅíÛ·‘’’‚ŒŒ šñ¨©©Ù¤¡ÓFgÏžaÀ€pttÄóçÏ›uIÀ©S§žžŽû÷ïƒËåbÑ¢Eðòòj2«5ãóÍ›7prr‚¯¯/FŒAåº3f µÇ“Ú'£F²e˰aÃŒ;eee8|ø0TUU›u+))!** S§NÅ™3g`mm %%%K]Ä äÊ•+´TÂör8©®––öíÛ‡˜˜äää@QQ;vÄÂ… ±~ýúV¹I…H:£Raa!GYI;µÀÿÆðEèêê"99Yì¦öoçßÐ/l6jjj¨ªªú¢•Cÿ4üüüзo_TWW#22ã¤,ú°°°Àˆ#¨Ï/^¤\OŸ>}BBBTUU¥ºRþÛhhhÀÎ;iF ¸ù+((´(h933—/_F}}=¬¬¬àèèØl‹…¨¨(äççCAA½zõÂøñã›}!©¨¨@RRòóóÁãñо}{èêêÂÄÄDâª;!ÅÅÅHHHÀ»wïP__UUUhjjB[[ãÇ‹‹ü’ë^TT„ÊÊJRеk×BKK .lÒÝÜÚ~ÉÉÉÁýû÷ÑÐЀ‰'JtU6G`` <<<š1*//Ë·×Ο?˜™™µøÚšñyíÚ5ÔÕÕIŒ2dêêêPSSƒãÇÓ~뢔””àðáÃxñâÚµk‡‰'ÂÞÞ¾Em±‰Â­<fffb¡EEEpqqÁ½{÷Š.]ºPÉX«««agg‡††hkkãêÕ«Ôw=yò$vî܉Y³f!66;wƘ1càêêJý°~ýzœ~üˆ[·nÁÃÃCâþ)))T¢ž={âÙ³gYZZZJ\!RWWìÉ5U]]””èééA___¬NII víÚ___dddˆmWTTÄH)‰ÉÒÒÒо}{1uúæxøð!4™—äŸFhh(LMM%fCo 6›~øÇŽû“ZÆÀÀÀÀÀð¿O« ±åË—cÑ¢E¨©©AEE €>`ÕªUbûÛÚÚbΜ9ÈÌÌÄ„ ÀårQWW‡ýû÷cÙ²eËm?.1Ctff&Mˆ¹´´”Òìš?>•@NHQQœ±nÝ:#::Zì˜***R ±ØØXôîÝ›2Ä„I.›[^.\ý&4Äš«wëÖ-TUUÇãÇã¡¡¡õõõ¨­­E]]jkkѶm[1AS‡ƒ—/_JÔÅ***Ç“(ÞÌb±PXXH+ §–€€¶¶6•Ÿ $2ÌÉÉ;V]]nß¾¬¬,ªÌØØ¸ÅÒ3 2b;vì@LL ***°}ûvxxxÀÔÔß|ó fÏž¸¸8hjjŠé-©©©áÀ8pફ«áïïmÛ¶ÁÝÝÒwºwFWnn.êëë deeAYYúúúðôô‹Å”)SPVVFÕMKKìY³°}ûv888öîÝÛìwãr¹Ø·oØiïÞ½ñúõk¬Y³™™™hhh€©©)Nœ8AËM“——G%¿¼wï¥kvâÄ lÛ¶ ¥¥¥HKK£7BÒÓÓQQQ())¡M›6HIIATT† kkk𵤤$8p@bÉëׯãÖ­[gªÒÒÒ@+{õê!xõêA‚=Ѷ~þüY¢ð/—ËEyy9mÛÆÅ®!ƒtZ¼j²¤¤/D„_¿~ ???œ9s***îB‹h‰¤žïܹ3âããŽúúzTUU!77ÑÑÑØ²e •077—6{´fÍ"..VVVÐÐÐ@QQÊÊÊpõêU<|ø&L 5þýû÷R ؾ}»TÉ ---ª<×®] ˜%RPP@jj*)É ???ÈËËã×_¥ŽQTT„[·n$·311AVVêëëqèÐ!¬_¿C† Áœ9sš¼l6^^^PWWÇ/¿üÒd¢¿ýû÷£ªªJ¢ ‡Ãž?Žv"BÞÒðöö†««k‹dcØl6‘““KKKìß¿Ÿ6&þ¤ÀÄÄDâ6eeeØØØ !!A,ë¶ÐHn\v÷î]*gWxx¸ÄY8ðòòB×®]±|ùrœ8q¢Ùv20000004 Z“&°¶¶Æ¶mÛ`gg‡€€äää 66£FBuu5²³³áççGÓ®ÉC‡Q®É·oßâÙ³gÐÓÓC»ví ¤¤„µk×böìÙbçMIIÁÀiI"UTT ¢¢OOOaݺuÔ¶üü|Lš4 ÊÊÊ>|8†N;ÞðîÝ;Zà¿(wïÞÅž={pøða±8«Ž;¢ªªJb½ªª*„……ÁÇLJ6SU^^.ÖÉÍÍEjj*Μ9Óä~Bjjj Þ„Öã¨Q£pïÞ=1C¬W¯^HKK£•É2#výúuA^^»wïÆÅ‹[Ô^É´Ø ÃÍ›7!//””¸¸¸ÀÂÂvvv°µµ‹Å›7o°wï^8::Š­ d³Ù´•’“'O†••KsçÎÏ{ñâELž<™VÆáp ¤¤„Å‹ÃÜÜ«V­¢‚Ä=Š3f ,,¬¥_âÕ«Wøþûï›n–$ZYY {{{¨ªª¢{÷î´mùùùÍÊôdffÊ$ª¢¢‚úúzê3!±±±ÔŒ¤‰‰ """¤ÖÏÈÈÀË—/¡­­-qõª4úô部¨(8;;#** yyyÔ‚Ùi±!æááp8(++ƒÃá ++ ‰‰‰ „œœ‚‚‚(õvQLLL¨—  99ÞÞÞT ŸÏ—xN>Ÿˆˆ¬]»–*ãr¹àr¹PVVFÇŽ1|øpDFFR.· 6àÕ«W2bÕÕÕ˜:u*Ž=JÅ|5æÓ§Ob²;°··ÇÒ¥KÅV$‚غ¦rA¬‹Åjq[‘M}¾zõ*Ž9BbúúúR€„„ØÛÛ#)) W¯^E—.]0vìØfW…ž>}>>>ذaccc*>PQQQˆŽŽ†““&NœØâïÇÀÀÀÀÀðoAæ„®ë֭àAƒ`mmß~û mÚ´ÁñãÇ´´4‰+ìâããagg‡›7o¢¡¡—/_ƹsç°cÇ$%%aìØ±´8.Ñzƒ ¢­ÄKMM¥¥mعsg‹ÜjÍ¡ªªŠß~û C‡¥• óŸñù|¬Y³^^^´íµµµX³f ÜÝÝ%WQQÕÕÕxòä‰Twèwß}‡²²2‰F¬$qþüyÔ××£®®~~~ð÷÷§¶·oß^ª õܹs¸páV¯^}ûöÁÖÖ¹¹¹1bµÐA¸~ý:ž}ÂܹseeeøúúbäÈ‘˜8q"¦M›ôïßÓ¦MC`` ttt¨º/^¤\ŽŸ>}BBBTUU1iÒ¤&¿Ô«W¯0sæL$''SežžžHIIÇÃŽ;šþøcºvíª¶onn.wîÜ”A™»uëFNN~~~têÔ‰/^0|øpÖ¯_¯²ÐhåÊ•¬ZµŠ´´4üüü¸rå ãÆÃÔÔ”©S§2oÞ<Œ™:u*ýû÷C×äçç³jÕ*Ξ=ËáDZ±±AW·è6Z\úñãǬ^½Z%LΜ9sfÍšáéé‰D"!=={{{jÔ¨AÇŽÑÒÒbúôétìØñ­æ%''‡/^pèÐ!zöìÉõë× ¿›„„1ès»víTú»}û6;vì`äÈ‘üþûïøøøÊ4rÖÖÖÔªUK¥Ï;wÏ·ß~«6žéÓ§Ó«W/•¹¥ ½yófž={ÆO?ý„¿¿¿(¬èëë³qãFÚµkÇòåË>|8bÛØØXz÷îÍ­[·HII!//OåøUªTÁÄÄDm<«W¯ÆÅŹ\΂ ˆÅÍÍM ydkkK:uTÚ¼M›6mbíÚµëJb̘1ôïßooovìØÁÖ­[ÉÎΦW¯^L›6McȨèèhµ,/{öì!11‘ŒŒ ìììT¾?©TÊÇÕŽ•——Ç… ˆˆˆË\]]ÿ‹öþMTX+!€|%ïA¡àÖ?báì¬Rn`i‰ûèÑÄ{ûÿ'RÖ8Û®XýñÏ´ÊH­ôO¦¤Œ ïbbbT±„„ uêÔÁÏÏêÕ«“––ÆÚµkñõõåÉ“'èêê2cÆ Â¸rå ÕªUS¹ÙZYY1{ölöîÝ«Öç˜1cJ­R%89 ÂŒ‚Ц ØÚ ŠÊò7”m,-ÁÔTù­Z‚“SÔ¶V-AX½Zš5„5¡_?eùýû‚ðþû‚`b"..‚pü¸P.®^„zõÁÜ\¦MAˆUÖ½x!}$ff‚àà ;v(Ë·m„FÁÆFzõooA¨ZUBBÞn,‚ ‚àè¨lÛ¢… ÄĨÖרQCˆ-`1ÿú«p{Éáâ¸qÂݵkÕêoÌŸ/„Ì™Sþ‚pófá`ǎžæÍ…ã}û 9ññ‚ BÆ“'ÂÉ„=Í› ‡>üPˆ»|Y¥]ôÉ“Âé¡C+ÔWiã<Ñ¿¿ðâÂ…RÛ•4/%í{ÿþ}•2…B!XXX±±±ÂÂ… GGGÁÈÈHpuu:¤²o­Zµ„Õ«W Íš5jÔ¨!ôûã"trrf̘!´iÓF°µµV^Ø‚ ,[¶L¨U«– §§'œ~íQZ»¡^½z‚………ðÕW_ *ç-¸ºº GË $±±± |ˆ­­-úúúìÙ³‡eË–abbÂwß}ǨQ£JÏÒŽÙ®]»Çù¶|óÍ7¬[·NÔÐÜ»wˆõßÿ=5RÑRÉår1íXÕªUY°` zõê*Ç~ò䉊¯KXX¿ýö‘‘‘=zPú Y[[ãìì̺uë°´´Äù5tß¾}ñóóãÑ£GT«V%K–ààà@jj*ÏŸ?gÑ¢E( ^¾|ɽ{÷TÚêéé¡¥¥U¢VQSêµ7]]]-ZİaÃØµk+V¬àéÓ§äå呚šJ^^žhÒ]¾|¹Úuü&±¤¤$1=Z§NèÔ©“X·|ùrÆŒ£vîvvvüðÃ\½z•Q£F1uêT•ú€€òóóùᇰ³³SëïuóaY$$$È´iÓåõ3þ|jÖ¬IÿþýÅýFŽIçα±±y«þ Ù¹s'Ë—//±¾4SßéÓ§yôè‘J™½½=R©”œœ5Shtt´˜‘¦xÙ¥K—ÄÌ){öìÁÉÉIc#FŒÀÖÖ–É“'‹n •ü¹TØ4Y…šúõÁÀ@)x½v+‘ ”B€“ÄÆ*¡K—@[ºw‡:uàÜ9ðõ-ù8áá–Ÿ}ZZ0e üðƒ²îþ}¸}[y ==¥Ÿ›·7;¦¨êÖU c66P¯dfBDÄ›`˘:U)„³,•ÊeËp2½2R*U„gRØ0Qà±jԀ܄Ò=¢óÖ­hikcß®&5jBM ¾'þþ˜::"ÈåÜûùg.ŒM£GÑ.§Ùëu¼¼¼¸yó&ýû÷§Fœ={–ˆˆ¼¼¼ez«B|||077çÙ³g4úc&L˜@•?.Ââ7¨BÓcýúõ100àÅ‹jgMhj—““Crr2£GFKK‹I“&1þ|•vÎÎÎjNÍ...ܺu‹Û·oóÙgŸqýúu,,,pqq!''===rrrغu+½zõÂØØ˜ììl233ÉÌÌäÅ‹ÄÇÇsãÆ :wîL«V­JÍûYÚ1KgqÂÂÂX»v­Fs‡&är9>¤uëÖbÙíÛ·E§mSSSLMMÉÊÊ…èªU«Š8===ÂÃà ÇÒÒ€ôôtêÔ©CXX-Z´M“˜˜˜ ¯¯/>Ȉžžñññôïß]]]5_[[[N:ÅÑ£GILLÄ××—9sæpáÂ8räÙÙÙ%ú ZZZÒ¹sguš¹ßt^®_¿ÎªU«°··gãÆ„……qÿþ}ý¾N“&Mðóó#==PúÅÎ%€ŸŸŸÆüü|fÚÒ011¡C‡\½z•C‡©-йuë]»vÕèSøzW¯^ÅÌÌLåwý:“&MR©_¶lüüóÏb™T*ÅÑÑQE{Óþ@ižLII¡Aƒ¥îW Р\Â{­Zµ U)5j¾¾¾¢ciœ:uŠÄÄD´µµY²d û÷ï£qWR~Þ™ V\(×ÑŠ,ô¨YSu;9Y¹Ú±xÚCeyi¤¤@µjJ ÀÊ ŸíqqÊ¿ÅS7æä@ÆJA¬Ð½BG§è#“½ùXâã¡wÍçAêÝ»ïÜ ?/9 ù. ÒÒÐ10Pú ­¬(HK{§ýÇþ­ €çüùìõô$-2«7¼QyyyñÕW_Œ½½=§OŸæåË—¢ ¶k×.HLLDGG‡äädµ•i5_¿ÿ øÛ¦ŽŽN¹W0ij—””„µµµè`[¥J•rù\úˆiii±hÑ"öîÝKLL ...˜˜˜ •J©Zµª¸:nÚ´i˜ššbllŒL&cêÔ©ЦMZ´hÁ¥K—JÄJ;fyÈËËcÀ€ì¬Àììl e¡#ôë9ZsssU†ÙÙÙlذsss5jD½zõDXBBMš4” qss£K—.¼zõŠ>ø€7n ÿCCܸqc6nÜ(ú#½~Þ4kÖŒcÇŽ±{÷nîܹCrr2QQQ|üñÇâq4¡££Sâ…«W¯ÆÎÎŽO>ù___ªU«F^^žš0¢««+þ£££>|¸ÊÊYMôîÝ›ÄÄD’““¹rå , víÚâ½¢pì …‚Ï?ÿ\E@{“þ@é6|øp±ÝÉ“'Q(¥æõ-DGGGÅ7´ÂïÂØØ¸Ä¶·oßæÑ£GØÙÙUhåe½zõ8|ø0>>>>|˜ØØXrssKí«’·ã b¥¡¥¥¼<óºPoeùùJ­Tᵚ˜Öê©/U°¶†â÷Ûìì"ÐÎN©u‹ŒTo·}»æã ›¥°ÏŠ®vN½w´‡ÙÕ°¡XöâÜ92¢¢hP±ƒÃÈÚšœBi´ú––È fg‹ÂX~J …*J@K[[4c¾k´uußúøÍ›7çÞ½{œ>}š °aÃÒÒÒX¸p!±±±Œ9’‹/Š«þlllÔ´9%™…Þ%ÕªU#99…B¶¶6iiiåºAÖ«WØØXAÀÅÅ{{{nܸA÷îÝ©S§ººº<|øwwwär9QQQ¸ººR»vmtttTÎM¡P”ªÉJ=fy8xð mÛ¶¥qãÆåÚ”BTZZš˜›tÿþýôèÑCeŸ¨¨(,--UÌ8¢ÐU˜NkË–-â>R©ccc222TV0G¡P( iii,_¾\Lj?räH“” ôèу>}úпØo¿ýV¢FÌÚÚæÎ‹D"¡iÓ¦ây¥¤¤àááõk7–7Ö¬Yƒ™™aaaØÚÚ’ššJpp°¨-e˜˜â¦FGGGNœ8(M‘þþþ$%%!“ɰ··gݺub?…óSˆ……éééT©R…¡C‡bllLûö퉌Œ$99™“'Oª9άX±‚_~ùEtøð!FFF¢/::š¡C‡ª…—°°°’õë×3qâÄ2M‡~~~¬ZµJ\:oÞ<¼½½ÈÈHÚµkÇêÕ«iÛ¶-kÖ¬yëþär9;vì 88˜ˆˆúõëÇøñã100àÀ„‡‡sõêUgq6nܨ±|Ïž=WË2gÎΟ?O÷îÝ âèÑ£ØØØÐ¥Kq¶mÛ†¿¿?ß~û-5ÂÕÕUí».ÎáÇ9rä½zõÒøýVR6I@×jÕ”¦Áò>kkÖ„ @) ;¦ôß*a–HÆ`fgÏ*·‹¯žwwGGX¸$¥€váB‘OÚÛŒ%&Fi†ýÃÕDdÈe»Bó~h¨Ò·¬4\úõcÀ½{âÇ¡cG/ a‚\޼ A¡@P(”ÿ—cbëøøð`˲þ@ê½{ä¼|‰‰–..<ؼ¸K—ȎŶX¨³ZµÈxò„‚?L塤q槦{æ ii¤¦r; KKªóïª(FFF899±{÷nºuë†T*%""‚æÍ›“““ƒ¾¾¾è?vèÐ!’’’Þ¸¯·¡aÆXYY±~ýz@Báubbbpvvý–@¹ROGGkkk´´´ððð 88ŒŒŒèÑ£‹/F*•²fÍÌÍÍyÿý÷111¡K—.¬\¹¹\Î7¸yó&íÛ·”‰üü|är¹Êÿ¥³´qoddd©Z×ÑÒÒ¢{÷îbH‰€€ÆŽ+Ögff2bÄÑ·§—/_rþüyZ´hÁæÍ›¥)zÊ”)L™2…aÆñý÷ßÓ»woµ>ccc¹xñ"ü1:t GôèѺuë&n[YY©´;räõêÕÃÃà  Z¶lÉŒ3H$Ô©S___Úþ±"¸±µµE[[sss¬­­±¶¶M¤¶¶¶Ša&Þf^bbbppp nݺ<{ö¬Ü߃¡¡!111|ôÑG´k׎O?ý”ÁƒÓ¦M>úè#bcc144T{yqttM‹çÏŸgݺu 8ùóçceeÅ÷ß_bø†/¾ø‚'NpâÄ úôéØ1cÄí/¾øBc›âýÙØØpóæMµk.77WcÛ˜˜Ö­[ÇöíÛ¹sçû÷ïçÁƒ\¸pèèh._¾¬¶2ðMú‹ˆˆàÃ?Ä‚sçÎ1xð`FÍðáÙ>}:L›6Y³f•;¨ì¥K—X¸p¡Æ0!…ìÚµ‹}ûö1cÆ V¬XAçÎyüø1íÛ·'&&¦Ôã;99qêÔ)ÂÂÂ7nuëÖ-Qx gÓ¦ML›6uëÖ•Ûü]‰*åÖˆ¹»+Myqq0hÒ\·p! Xv[__ضMéoh¨LÊÒrîÚ#GÂ’%JÍÒ®]ek¡tt”Â×_€‘‘R€*žsú·ß`Ì¥`д)”ðÂQ¡±H$Já,+KµÝðá”:)}×êׇÊî¯4ïÙCèÂ…âö“}ûðøö[\Ê£P·woòSS9;b’ÌLÌëÖ¥ÝO?Ðzñb‚¿ù†È-[0¬VÖ*1Kêúøð{§N ¥EïóçÑ+f.©È8:v$bÍ2Ÿ?G¬5âƒÀ@´ß29¸——ÑÑÑèééѪU+^½z…‘‘nnnøûûÓ´iSjÔ¨AãÆqtt|«¾ÜÝÝÉÉÉ!..ŽAƒahhÈÂ… XÊB[[›Ý»w3dÈfÍšÅØ±c100Py I$žÏK—.%,,ŒM›6Ѹqc233E“¡¶¶6VVV¢I°¸Q*•òõ×_³uëVÜÜÜxþü9ëׯgÆ ´hÑ‚áÇóôéS¾ù敾ñöö&44”ÈÈHvîÜ©¢e( eP¸ïÛÎKXX 4 **ŠêÕ«‹þ}*&Ì׿¿””-ZÄ™3gX·n-[¶dÁ‚€2¤IÓ¦Mñõõ¥GLŸ>]%œ„»»;÷îÝ£mÛ¶´mÛ–3fðÑGqõêUêׯÏÁƒ™={62™¬\&ù§OŸŠñÏš÷))Öß®]»;v,óæÍ£iÓ¦èêꊋ >ýôS‹III´oßgggNž<É Aƒ¸uëßÿ=‹-¢^½zoÝ_ãÆÅà¹íÚµcðàÁ¸¹¹aiiÉŠ+1bÆ cñâÅdggk4WÞ»w»wïòôéSÎ;GVV¿ýö...%Î]ëÖ­™3gC† !..ޏ}û6Ý»wçüùóâŠבÉdsìØ1Ž;ÆRZ±±±xzzâììLË–-‰-Õí¡Íh²ÇèÅÇÇKôõt©jUû[%o…ƒƒÁÁÁj¥ÿ:ÿ…yÉÏÏÇÄÄ„ÌÌ̃@þ›IOO'((ˆ—/_"—Ë177ÇÁÁwww5-SiDDDP³fM©ÐÐPH—.]000 U«VÜ¿_|p§§§Á¾}ûøý÷ßUVÖ²}ûvѧ‰ÁƒÓ­[7q,{öìaêÔ©´nÝ???&Nœ¨2¶àïïϤI“Ä ¨ \97gÎ~ùåíâ–-[ eÕªUåž“²æåÉ“'èëë3xð`qss£eË–L:UÅ×g„ ܾ}[¨‚ƒƒ¹vícÇŽM½…‚Xa̪‚‚V¬XAûöíUü—îÞ½ËóçÏéÙ³'ùùùlÞ¼™û÷ïcooÏèÑ£ÅÅ0¯söìYtuuEMíÔ©S©]»6~ø!@.—3xð`µxg2™ŒÅ‹3óµ•創8«V­"99kkkš7oŽ»»;gÏž¥wïÞ,[¶ŒÝ»w“››ËñãÇUî?oÚ_qîÞ½ËÁƒ)((ÀËË‹ž={–ÙæÄ‰„„„àè舧§'îîîe¶)((`ýúõ„……aiiɰaÃÄv™™™¥ú§åçç3nÜ8:vìHŸ>}J5KJ$üüüÈÏÏÇØØ˜={öT{ýƒÔ”d$Rvvv}€< ÷ON±ÿó€üJAìoæ¿ p¼ ÿ_çåÚµkÔ­[[[[Ö®]˶mÛ ú»‡õ¯E*•’]âCþϤ¤Uk…ur¹\Eó“——‡ŽŽŽ(à"“ÉP(jå¼Œ•QAì/qÖ—Ì™SrݨQðo{nOž<¹\«gþkü—ððp>þøcAÀÉÉIôkªäÍÐÓÓû[„0(}‡¦xašBåÎVð&”Ôç?™?û^©±y÷T aoG¥F¬’J*©¤’J*©äò'hÄÔsÑURI%•TRI%•TRœ¾nñ—„¯¨¤’J*)NA´ì*©¤’JþTXkÒ¤ gÎØþcùS04ìËÿ\? ‡Ñ¼x‘òwC#Òì~ﲜýmsfØ–¿´ïò¼§I“iœ9s÷ïÆ?’;wž“”¤š‹råÊã\½úV­f“’¢úâM‰Ž~óØp;w^áâÅ~ü£'î •V<ðq^ž„©S·©”egçsöì]ž>}UjÛo¾Ùó—ÍK—QËŽ—Ù°áì;í§ @Êöí—ÅOdäKbb’8ð§RË2™œæÍgù’ôôÒÓsxù2w÷É$&fˆe𾣏¸´2çúŸÈÎWxðàe…ÛåçK1Bs̸JÔ©°—èÌ™‘¸¹U,Ñï‚õyñ˜ÀÀ›íî?Mê½8Nö_OñÐ`t{±ìúœÃd]…ŽŽ6cÇvcÅŠaðë¯×è×o9II03{;í²¥¥ C†´C__—¹sýTê.\¸GRR&={¶ÐØöðáP.\¸§ö¼uë)Íš¥š <͵kTöñ÷ïÊG5·ããÓèÙóG$OŸ¾âÓOW°q£?úúºx{/ÄÊÊ cc}~þù Þ{Ou9öîÝU¶/]zÀ„ ›8°-Ÿ|¢ž°[[ >ø@³°U«Vé‹£š6­ÍÍ›OÕ1™LŽ®®úîñãx d9r“5ª‹¾¾.uëÚ0lØDG'ñÉ'ž¤¦fSµjÑýãÊ•HÖ­; À«WL™²×~£_|Ñ….]Ô“]¿É¼„„<¦V­jøûwÅß¿+R²²òññù ö§AƒšèèhS¥Šj¬½øø4tt´ÑÑÑFOO==Ž¿Î­[Ïøè£fxy¹ˆ/ű¶6cäÈŽ¬]{ SSC>ù$€Í›Çиq-ŽùŠ>}–pçÎs¦O÷A[[¹žíâÅû=äĉ¯™0a3ÞÞMP(ÒÓs1¢}û.eÜ8oºwoª6W L^fËâÖ­g¤§çüq~:éÅáá´iãFëÖn89©[§‚‚²jÕ ö훢VwêT8çÎE°i“¿Z]hèSΟP)‹ŠJ@¢¢”‚|‡ T±¬¬<O©K*•“––£R7o^?•묒"Ê-ˆ-_îÂòåõˆ‹3䨱+tî\¤fuvþ_ß\½jÍãǦ|ýu$&<&4´ ¾¾­ÈÈÐC&ÓâÄ eN¸û÷O`l¬TßÖ®ýÓ§G²qc^½2¤M›dvïæÁsFŽlAx¸ööùüôÓm¼½4Ž­8AAV îAB‚!_|ñT¥îåK#¾ø¢9—.UÃÂBÊ?†3`@ Û·×bñbW ñòJA"Ñæúõª?~™–-Sßx,K–ÔcÅ RSõ©_?‹‚ptÔœv£8Oöߺ‰#™Ïв‹ œ¸ ;»¡¥­…}[´uuȉÏ(— ö`K·#ÉÈün5ÚýÔãêæd>M&ø›ßI˜€‘9-¾þ»6Îå:?MhëéÐtZQ´úÃ[¹õyÉÙÛš‹ûè¼›eû£9}úê×/ ø(Uª '"b [·^"0ðÉÉYÔ¬iÍâŃéÙ³(RwíÚc™>½7žãÕ« Ú´qc÷î‰8;Ç×׋«Wòøq<_ý &(ß®—/?ÊòåLj‹K娱¯éܹ(7hií®_bðà•¼z•¿W–-;JTÔO88(œÆÄ$Óµë–.J÷îÊ\„..Õ‰‰IæÅ‹ý9xpvv–Ô®] ©TΑ#7¹uëê1~¼7sçî%(èN%Öé#•Ê:T©i7Λ™3wróæSZ¶tVy£¯UË]•Œ¦qG¡ÈÏ—pî\—.=àÎçDE%P­š9¶¶(}û¾¯Ö®aÚ|ü±fÍÛóç‰$$¨§Ùzú4‘ºu‹H³f•­]µ³«Bhè"6m:OTTßÿ©XKÆ59rä+¤R¹ø0ÖDZZÓ§o'..•}û¦àì\½Ì~5i#ʃ§§ W®D2bDσæ4oÞ™Ï?J‹i<~´LÓäž=Žœ9s‰*U$ýÔ“^½â¸rå<'NTÇÏï}ž??JÕª%篓˵èßß‹Y³ðùçO™5«!EO>i…—W ñä‰ ­[w¤eËTLMe} W×,BBª"——X± =—È­×è¶ë3®Í<(–+…/gbNÞÇÂÙ†¸+QT1ÆÒŦ”£)yú{wÝ ã†!˜×±&%ü‚\™ÛìêÔ½ÔèàJ—m#ˆ¿Å•É{ñ9=}‹wã[—™€‘FÅ„ÅÐùG¹þÝaª¼gG³i]1¯óæ¡R¼¼\ }¢"ˆ=~œ€©©!VØÛWáâŹԮ]C‡Bé×o¯^­WÑîìÙÄ™3ßR¥Š Ož½d¤¦fsùò<'11ƒää,ªÒ AMüü”‚z~¾”7JN ,“ÉéÕëG-H—.HN΢k×~ÆgŸ­#(hÚ÷øÛo×;¶›Ê G‹_±mÛxj×Vj|Ч¶åµ Œ§ùš(-®œT*/Ñ4^F ¤Y³ºjfHM¼x‘‚»»æ4núúº´mëÆùó÷T^FAišìÓg‰ZÙ¥K07WÞ+÷왤Q 0bÄlm-™<¹[¶\(ÇYURÈ;‹$Xh²¬_?/^áìœ]®¶&DQ¥ŠR¨qrÊ&6Ö˜ðpK.]º€¶¶@÷îñÔ©“ùs6øú¾(ñ8áᤥéóÙgÏÐÒ‚)SòÃnÜ¿oÎíÛ–œ;w==nnYx{'pì˜U«J¨[7SS66ùÔ«—Mf¦æo<€-[j3uêC\]•NÉžž©åš;ËÎâ6ä}ôLÕ¸Íg~ȹ‘[¹·þ2ºÆú´]Ñr¼i=;x›úÃÞ«FJSKnB&ié¼u„RÐkç‚I KBžQ³ëÛç “dæºðÍg~(š ú·ÇÔ± ‚\Á½Ÿ/saôz¶î›™(½¼êqóæSú÷oM_pöì·DDÄâå¥4å ö¸¯ææF<{–H£FE&ž º‹¦â7šBÓcýú500ÐãÅ‹”2µ%µËÉ) 99‹Ñ£»¢¥¥Å¤I=˜?¿J;gçê¯*e..Õ¹uë)·o?ã³Ï:qýzƸ¸T''§==rròÙºõ"½zµÀØØ€ììüRë6¬‰¡¡7žcذX½ú$2rs Ä~—-Ê·ßú²råq&Mú…  ¢vHÓ8<<œÙ¿*ööU4h¥šXjj6Ë—ãÔ©ÙeÎayÉÏ—¨h®^}ˆ™™¡Ê÷«‰øø4RR²4úÒ”Fttþþxþ<‘¡CÛÓ¢…¶¶äåI8u*ŒÙ³w´@£Ö",,šµkOøY…úLLÌà³Ïùàƒ÷˜;×»rµ yL£FµT4Czè‰ßûëD¹\ÁðákÈÈÈÅÀ@Ë—çaffÄ_üLíÚÕð÷_ÏâŃÕüÙÞd^¾ür35j¨&×þÈÝ(ÇSGÞ¢vmQ‹gmmƸqÞ\¼xÿ®ÄÄ$« C2d·o?ãÙ³D@©åýî»_13S ‹þþ]ÕKKíwqJ[ð!—+4š,ËÃãÇñܸÅöíãËÞÈÉ)ÏA:4àòåj‚X­ZÕ ]¤RV–F¬8§N…“˜¸mm-–,ÂþýÁåo%ïP31)Z)¢£# “•?¥FÍšªoÕÉÉúÊ17/ÒØØä“œ\úEJŠÕª ­­|“±²’ ««ü?.N)Ñ7oÞYÜ?'G—† 3¨ZU9æÂ±~d2í7 @|¼!µj•m†T9‡ˆ8Rï¾ åw=Ôêä2ÎÜŠûçm©Ó«1)q\³ƒ®;G•©QÊKÎÆÄ^ýÁP–ƒŽ®ŠÐgheBAZÅÆ­ y¾”‹cwR·w¡Î¾]‘¯“ç|özþ@ZdV ÞÌéÝËË…¯¾ºNpð#ìí«pút8/_¦âå¥LÚ»k×UÑ,£££Mrr–Úʦš55ÏŸ‰IÑ MGG[|8”…¦vII™X[›‰ÂL•*&%¾]§ÐGLKK‹E‹²wï5bb’qq±ÃÄÄ©TNÕª¦¤¤l`Ú´LM K­34Ôã×_'1~ü&¾ür3>>xy¹`n^”‡ÐÒÒKK–,‚­íg=¤M·RÇjkkQb]LL2~~˘2¥G‰Zœ7AWWGü^¢£“>| 'OÎ*³ÝÆç>¼ƒØîäÉ0 A|û/‰ààÇL™ÒƒN"•Ê‘Hd¢¶£cÇddä²cÇe¦LQÕ^äåI0`;w~Y¡óž=ä³Ï:1jT§ µÝ¿?„Þ½[ª”I$2ôôt7Λ-¾bútÑÊ•Ç10Ðã÷ß§ãæ6---¢£“~Ìš5£èܹ³gïVÄÞd^úôñTÑd•À‰wÉJÄîÝ{¡æ77bD‡RSP9:Z!—+hÓÆ÷߯‡¾¾.çÎEàëë…¹¹&&¢»@qtt´KÔv–&hikkñš‚MäÈ‘›Ü»÷‚3|4Öß½CãÆµK<öëèRP ·Aàĉ;¢ÚÝÝß~+yñÕíÛÏxô(;»*å¾ßÔ«gÇááøøxpøp(±±)â‚‚JJç/Iq¤¥E‰¡²^µÒÊJB~¾™™z¢”˜hˆµu¦æ"ÖÖdd½gg늡]UªH‰ŒTOî»}»æ7gAxó±(ûÌ':Ú¸ÌýŠ“z/Ž´‡¯ØÕp®Xöâ\$QIÔÑšœø œ>i ZZTkêˆyk^?-S3²6%'NÝ¿FßÒy iv(Œå§ä`P¥hÜZÚZ¢³¼(d .Oú•ªîöâŠOMhëj¿Ññ‹Ó¼y]îÝ{ÁéÓá,XП Α––ÍÂ…Ÿ›ÂÈ‘k¹xq®hN±±¥fvø+RñU«fNrr …€¶¶ii9åºÑÕ«gGll ‚ ÔŽÙÛWåÆ'tïÞŒ:ulÐÕÕæáÃ8ÜÝ‘ËDE%àêj_j@§N ¹ ôa±³û\£o‰––ÚÚZdfæUè|uuUWAøæ›>*Nóï cqU×úõg™8±{™¦J¹\ÁŽW^HDD,ýú-cüø10ÐåÀÂã¹zõ!­[»ªµíׯ¹øøüÄÄ LL IJÊdÍšQ´n튽}UrsÕݼNÛ¶õ+¼ê122Žœœ‚ a …Ào¿]çë¯{‹eR©©T޾¾.U«šÒ®]} Uñ Ú³'ˆ={&‰Û2™œ‘#ùßÿ¡££M:6¼z¥~/y“y2¤=_}µCíXÝ»7Ç“S@óæ3J<ÏjÕÌ y¬V^š©ðÑ£x^½JÇÙ¹::Íãúõ066 ~ýôë·ŒC‡f`a¡zï¶¶6ÇÃɹs÷"‘ÈhÚT¹@$**””,<<œ°¶Öœ–͘ôôµr¹\Áœ9{Y³¦äU»ÖÖæ ÏâêjϽ{E‹ê޽ņ çDA¬n][¢£“5¶3g/çÏGн{3‚‚rôè-ll,èÒ¥Q™½mÛÆã￞o¿ý•FjâêjAÉ֚ÇoräÈMzõjñÎï ÿ6þ’åjÕªpÿ¾y¹ü£@©!kÐ ƒ€€z;fÇ“'&|ðAécƘ™É8{VyÞ½»H­ì£c. ÖG"ÑF&ÓâÂ…j¢OÚÛŒ%&Ægç9zTÕ\0dÈs\yôÈ €ÐÐ*<®Ù£—~-poŽøqèèF£ñhà‹qus´´àÙ¡0Ò"Hô Óšekêø4æÁ–kd=WÆæJ½GÎËtLì,°t±áÁæ« Ä]zLvl*¶µÅ¶fµ¬Èx’DAzù´d‚BàÚWÐ35 ÉÄNÈ dÈ d ä§æ{æi¹¤æp;à–ÆT­_¶¹¯$ŒŒôqr²e÷î ºuk‚T*#""–æÍë’““¾¾®øÖ}èPè;õOª ÖÄÊÊ”õëÏJÍÃëÄÄ$ãì<ž£Go‰effFèèhcmm†––N?ÆÅ¥:FFúôèќŋ!•ÊY³æ$ææF¼ÿ~½Rë@i&KNÎ">> ÿ 4mZ‡zõìxòäëן%..ÔÔlæÍÛGNNhê-iœ¯S«V5¢U¶ÿŒ®££/^(Íþ66ܼù‰D¦²Oq“+(ò?ü° Æœ;ÁàÁí=º Çw`út¬˜6m³fíB¡P‹Ü¹ó NN¶\»¶3g¾aíÚQüôÓ1¤R9¿ÿ~C£ùÊÌ̈ÈÈ—jc+ kk3’’2IKS—ÆéÓá4iR[e¥ÚQ*¦ØÅ‹«™d2…Êýü–áíÝ„nÝðë¯A´j¥. Â›ÍËëXXsâÄzôXD‹ðó[Zª`íãÓ‚£Go]â>¯³iÓ9æÌñcåÊôîÝR4ÝêêêðÃ5*PeÿÇžÂÖÖmmmÌͱ¶6ÃÚÚ ôõu±µµ 0ð”F¡ÐÝÝQm%/ÀŒ;hÖ¬Žè—©‰÷߯Gjj6»vi{ò:={¶à×_¯QP %/OÂW_íä›oúˆõææFj¾…ìÚu…}û¦0c†+V §sçF<~OûöߣYx+ÄÉÉ–S§f¶˜q㼩[×¶Dá-<<šM›Î1mZ/Ö­;Íýû¥»ùü§Ü1w÷nääègÈ A-14T°pá]Œ)³­¯ï ¶m«…­m/ åˆv «›Ê‹—— ÑÑÉèééЪ•+¯^e`d¤›[ üý»Ò´étjÔ¨JãÆµÞ‰YÌÝ}299ÄÅ¥2hÐOê³pal[bmm-vïžÈ!«˜5k7cÇvÃÀ@OåÍ]"‘ñäÉ+²²TµOÎÎÕÅÕXNèêj‹ËÈW¯ÉàÁ«07‚“Suöí›"ššJ«;u*Œ ö#“)ðön"†ÐÓÓaÛ¶KL™²•ü| Öäðá*ô’ÆYœ#:ЭÛBΞ½‹ªÉ2 `°šéÇÈHŸ¥KxZãñrs 9²£Z¹»»£ø;¶óæí£iÓéèêêüák¤àÓO[óí·¾b›Æk±téPÚµ«ÏàÁ+qs«¥¥1+VcĈ ö‹";;_Í\éååÂO?ç½÷pv®NhèS¢£“iÛö[>ùÄSv‹Ó³gs‚ƒѸñ4ºvmDíÚ6hkk‘žžCtt2wî<çСéjóR­š9ß~닇ÇWôíû>õêÙa` G^ž„´´ââRùñÇAjé«WŸ`„îDG'ѳçtïÞ”óçï‰+ ý:ãÇ{ããó?5ª…––£Gwá“O<‰‹KãçŸÏpðàuΜùFãwô&óRœû÷_Р£Š¯»wchذ¦Z¹;vL W¯ÿáíÝ„¦MkJÅâaMгhÑ@Nœ¸ÃÉ“w¸xQi}Ëhi)cÝmÙrß~»!®àut´ÆÛ» ¡¡O‰Œ|ÉÎ_bPlÕ·2äIqß×éÐÁ‰·ðí·{èÒ¥©©Ù¬_CC½2MÕzz:><ƒ¾}—²}û%Z·vCOOWW{zõRõbo_…ÚУÇ" d öÍ›×ë 8~ük}µníÆœ9{2¤qqi„„<&,l1·o?§{÷8þ;× (5§ÁÁ9vì6ÇŽÝâÀ©%žSll žž.8;W§eKgbcSÔBÄü—(gÒïÊ\“£ ^¨Ñá¿Ìa^ò󥘘 "3së[­¨ú'#ÑÑÉdd䪘ƒÝÜjTx9IÈdr/>ÄÌ™ªo‰D&Æ™*‹»wc8xð:R¼¼ê©92k"::‰Ã‡oòòe*::JÁØÛ»I™‚~zzAAxù2¹\¹¹V¸»;`eeVb»¤¤LΟ¿Çóç‰È04ÔÃÒÒ;;K¼½›¨ùîß"š_½Êàüù õK RœÂ žÎÎÕÅ…¯¿Þ…µµ£Gw)Õï§¢óòÕW;ps«Avv>‡…Òµkcûyx8Ѿ}É ˆrr 8yòQQ èèhÓ­[µ…))YôîÀ¥Ksyòäff†lÝz‰;.£­­ÅÕ« 04Ô#..¬¬<ÑŒJmßœ9{ùå—±*å–- }Rf¨†ää,Ö¯?Cdd¦¦†|ôQ3¡_JB‚‚ù¹\AóæuU¬×9|ø&––Æ´m[¿Ü}HY¿þ,aaÑXZ3lØâ‚…Ì̼Rý'ó󥌷‘ŽЧg©fI‰D†Ÿß2òó•ñÕöì™ôÿ(Ø«2×dE’~W b3ÿãMøÿ:/×®=¢n][lm-X»öÛ¶]Òª’Jþ+H$2Ñ™]„cýÝäåIÐÑÑVŸL&G¡øçŽûŸŒD"û8oÄþu30gNÉ)@FzŠƒCÅŠÿn&OR­%ÿ_ç%<<š?^Œ 89Ù²yó˜¿{H•Tò·òoykJé”kås%šù·|÷6•±J*©¤’J*©¤’wŸ¦ëû' ¶’J*©¤’J*©ä¿Í¿7Ûr%•Tò¯¥  ì8|•TRI%ÿ*,ˆ5igÎüCùs04„ÿà%¼ø‡PšÍï]º°¿m[Î ö—öýOž—â4iÒ„3ÿ¦Ä_È;wHJRý·råJ®^½J«V­HIIù›FVÄÒ¥Kyúô©JÙŽ;ذaÃ;í§  €íÛ·‹ŸÈHeÒ蘘Xê5$“ÉhÞ¼9‘‘‘¤§§“žžÎË—/qww'11Q,“J¥jmãââÔÎïßÀÎ;yðàA…Ûåçç3bĈ?aD•TòçQaO¹™3Á­ô,'j,X †ËÞ·8ù駤„‡‹Ûµ{ô Õ?}ì‘¿üBêƒ8õéCËï¾ûÓÆ¡gjŠÏéÓÄœ:Å£;+Ô¶´q¾ áÆ‚ä¼|‰y:xΛGU÷’aü“™9s&nýAT+++Ž;†§gQôsA044$""333Ì•+WpvvfÓ¦Mxx(C$$$”XwîÜ9ÆdzgÏpsscýúõ´hÑ‚;wîд©ú²úãÇãíí]îq0hÐ •6]»veèСLž<™eË–±`AÑŠÑ'NpáÂ…RùÁ”8†ÌÌLvíÚEHHéééT¯^?þ˜®]»–x¼+V`ddÄ/¿ü"–EGGcbb" cdüxež?Aؾ};r¹™L†\.G.—“ŸŸOnn®øqrrÛdee1{ölfÏžÍ044¤oß¾üøãÌž=™L¦ñÜæÌ™ƒ 4kÖ OOO$ éééØÛÛS£F :v숖–Ó§O§cGÕ8k$66–E‹©·$Î;Gff¦xn2™Œ‚‚rssÉËË#77ccc¦NU%‘Hxôè 4P;fbb"r¹;;õ™ÑÑÑÄÇÇ«”íÙ³‡ÄÄD222°³³£V­¢ŒR©”‡ª+// .Q¿ÐÕÕ=½w*¥’Jþ *,ˆõë÷g £’×i»böm•ÁAµtŠVåXZâ>z41'Oþ]C+%SžŸÏåI“h6cu{õâÑÎ\þòKz<©ržÿúý?bbbT±„„ uêÔÁÏÏêÕ«“––ÆÚµkñõõåÉ“'èêê2fÌuR©”¾}û²téR† ªU«èÓ§OŸ>¥qãÆäå­>ÇÛÛ›:¼õ¹XZZ2dÈôõõ™;w®JÝ… HJJ¢gÏžÛ>|˜ .hVŽ;Æ—_~ÉÀ©^½: …ŸÿkïÎ㪬òޏ—˾© ) :¸ÌH.M¹Š&*¦Öùsib2µGfúÙЭ4æŒVŽ¥¦™ZúÓ$ÔÜÍ‘DMrPLVYD–ËùýqáÊõ.\Êïûõz^\žóœç9ÏÃýß{ÎyÎáý÷ßgÉ’%,[¶ í ÷WFFÁÁÁ$$$@UUeeeÄÆÆ’œœLçÎÑjµ´hÑÂ$_^^Z­­V‹N§C§Ó±qãF<È!CˆŽŽæþûÍÚôõõeâĉ¼ÿþûxxx0räH/^L·nÝøòË/‰‹‹ã»ï¾ãü#¡±b×®]¤§§³iÓ&¦NÊ Aƒ¨««£¤¤„ &ðØc1eÊbbbÌÎ ‰›ÛÍ=}|ðàAJJJŒççêêJFF©©©ôîÝ›^½zb>ˆtzz:óæÍcõêÕfi›7ofûöí,Z´È,íÀìØ±Ãd]VVJ)²²²èÓ§I VVVƾÙ×ÔÔP\\l’ö׿þ•–-Í'âÇL———§ òUcsæ(¬”N§Ô–-&I*$D©™3•êÝ[)¥æÎ5¬ß¿ßÇÇG)Ãëà`¥**®ç Vjþ|¥ºwW*0P©1c ëWªG¥ÜÝ• SjãFe—={”êÐA)//¥fÌPÊÙY©œCZn®RC†(åé©TPRË—Ö/[¦T×®Jùù)5l˜Rƒ)Õ²¥Rÿ]Y”R*%E©¶m yï¿_©ìlÓôÀÀ@•ÓPÀz›ÆŽU¹;wÚÜïþÙ³UFR’ýQJ_¼X­íÛW­ŠŒT{LUäå)¥”ºræŒúê‰'ÔªÈHµ~ð`uq÷n“|ç¿úJmyê©›:–µr9¢>‹Šº¾A]Z© 6ÉgéºX¨Ž?n²®®®Ny{{«œœ•œœ¬Ú¶m«\]]Uxx¸Z¿~½É¶ÁÁÁjþüùª{÷î*00P©¿ CBBÔÌ™3UïÞ½•¿¿¿šÛpc+¥æÌ™£‚ƒƒ•N§S[nø‡°•/##CuèÐAy{{«ÄÄDåììlržçÏŸWááá*--͸nܸq*%%Eåää(@­]»VíÝ»W…††ª«W¯*N§Ž9¢”Rª¦¦Fy{{«]»vÙLÛ·oŸòôô4¹^îîî*£á¦odÚ´iê™gž1Yg©œéõz§f̘¡þô§?©Áƒ«°°0Õ³gO5bÄk–gæÌ™jΜ9÷×pÍgΜi¶>##CEDD¨ÜÜ\¥”R¯½öšÉ~ž{î9õÊ+¯˜å›4i’z÷ÝwÕªU«Ô‚ ÔÂ… U§NT\\œŠ‹‹SÇWVË£”R¹¹¹ªgÏž*%%EUVVªââbµsçN•™™i²]~~¾ŠŒŒTŸ~ú©9r¤4h>|¸êׯŸò÷÷W½{÷V}úôQ“'OVóçÏ7É›žž®üýýÕĉ-.þþþjÿþýË÷ꫯª7ß|Óæ9ØRYY©üqõôÓO«¼ú÷ kæÎ«fÏžm1­ªªJ©²²2»Ž;qâDµÑÎ7ÚÊÊJ•œœ¬âããÕüùóUxx¸]ù„¸“ òU^^žFƒ‡(àÀ}€à èìî#6}:œ;¿°2°qQìÞ ;v@b"\»÷ßoÈóâ‹ðÛß^Ÿ;7~A[µÊÐï,7’“ ëú÷‡ÒRx÷]=Úp [ôz;^xJJÀÑ÷ 9BB °¶l瞃ú/\xxÀ™3†rL ü#|öÙ­—àãaþ|ñÊËaÞò;ÿ{JÏžµ/“ ÿùâ N¯XAß?dôDýïÿ¢ê ³çàžèhÛ·ÈÄDþõ T×7 Ü ÊÂE(Ënzª,k¢££9pÀtªªÓ§OãááAPPìÚµ‹ŠŠ Þ|óMÆŒCYY™Éö«V­bëÖ­äææ’ÜpEEEìÞ½›;v˜˜Èµkט>}:çÎãVþ!,å«««cìØ±L›6ââbt:Y§õêêjNžû,7ndíÚµlݺ•   –-[ÆöíÛùç?ÿIBB‚IÎ0 –£££ÅÅÖäÖ55589YÿÊ“&M¢{÷î•ðÊ¥IDAT,X°€{î±=lnn.mÛ¶µ˜æääÄC=dVó†¦Éûï¿ßdùâ‹/˜:uªñ÷3gÎX=î„ ÈÏÏç…^àôióy…ø±»m£©5´ÐtêÎΆ *Ôú<¦&¦N…†ÚÿÈÉÇáë¯A£˜h×¶o‡Q£¬ïçða(.†É“ÁÁÁ¾þº!íøqÈÌ4ìC§3ôs46l€–-¡}{C0æç:‚®£Go½,K–Àþáõóã6jY²©KBmÛ¢ôzŽýóŸì|憦¥¡q¼õ?×Ùµké4~<^í s¯µêÚ€«—.Q|êý—.ÅA£!à׿Æ=0KÜk£oÍ­ò CãìÌ™5kh?|8§V¬@_]¾òÖ⎎æÛo¿eìØ±²mÛ6Ž=Jtt4ã=h‹——gÏž¥ký5˜:uª± ªq³KCÓc§Npvv&77—P;nlKù***(((à™gžÁÁÁ矞ٳg›ä 5™  M“$33“É“'³oß>¼½½ £¢¢NGEEK—.eذa¸¹¹Q^^n3­K—.¸¸¸ðÑG1~üxæÏŸoìÔØúõëiÙ²¥ñZÚ*'@TTkÖ¬! €qãÆ™õ+**âÝwßeóæÍM^C{èõzNž“>>>ôïßßb9víÚeµŒz½Þb“¥=NŸ>Íþýûùä“OìÚ¾¢¢Âx–ôéӇݻw›5=›}‘š4i£F²«OâæÍ›¹|ù2†wÞy‡5kÖØU^!~,n[ æî~ýµV õïev¹÷†y\ O;z5š[ÔÏϰޖÂBhÝÚ0´je¨¨ÿÂKd£)ä** KC Öð^¥Õ^_jko½,yyШ[ƒÝ~ýkãëgÏæó¤øÄ ZYèk¯Ê‚ÜÌÖW£uvFçq}Bg—V­¨*.¾åcÙ¢uv¦÷ßþÆäd¾}ýu‚úöÅ·[7“ã߬èèhÙ»w/lÙ²… .ƒ‡+V’’ÂåË—Ñjµ˜ÕVÜ{ãMXϽѭÕjÒM±”/??___cÿŸ-ZàhGpÝÐGÌÁÁ7ÞxƒÏ?ÿÜX#æîîNMM -[¶4>…8cÆ <<P ÄOÁ2¿€ƒXy/0¦7Öª•¡i³´ôztù2øšOjoÂ×·¨•—_Û´1ÔºÕ?5nÂÚ>¥n½, Ç<¾éílÑ8:â ÑXlλ®¾¾T4D£8ùø ¯ª¢¦¼Ü ]+,ĹQåÛqüÆî‰Žfhj*uÕÕüßÃÓâ¿xò022’cÇŽ±eË^}õU>üðCŠ‹‹INN&''‡‰'²k×.ãÓ‚~~~fN¶šwn—Ö­[SPP@]]†ââb»>p:tè@NNJ)ÂÂÂ`ÿþýÄÄÄЮ];9yò$èõz²²²·™Я_?Ž?†WhÓ¦ ¿üå/ǽpá[·nµØ)ÚŽŽŽ&ç§”bÖ¬Y 2ä–ög‰——ÅÅÅTWWãääÄš5k:t¨É6YYYøøø˜<9Obb¢ÙþbbbøóŸÿ jx"#­Oþݺuk222ÌÖÛº—N:Å÷ßOhh(ýúõcß¾}¸¹¹Ñ©S'ÆŒÃúõëñöö6ÉãëëKTT¯¼ò ÕÕÕÆ'Z³²²(,,$** _+oHÞÞÞ”””˜­×ëõ$%%ñÞ{ïY-«¯¯/çoâ ,<<œcÇŽOKKãÃ?4bíÛ··º¿¤¤$vìØALL éé餥¥áççÇ€š¬Ñ[¶l ¼üòËtíÚ•ððpœ­OJžššÊ—_~ɰaÃnë½(Ä­úAtmÝÚÐ4hïgù½÷BçÎ’b†6l0ôßzäÛùºtOOضÍðûÊ•×Ó"" m[C´êjC€¶s§a¿ÿmY²³ Ͱii¦yãã ùN2ü~à€¡œ-׊ŠÈÙº•ªâbªŠŠÈLIÁÙLJ–õßÞ•^¾ª UW‡ª«3¼¶ã¶‹åßK–PV_€¢cǨ¸p÷6mð ãß‹ƒR\üúkÊsrð¯Z<ƒƒ¹ræ UÞЭ±UÎâ“'©*.¦2?Ÿ}ý+-:uÂó¾ûìÞ÷\]] aåÊ• 8ššŽ=Jdd$899k?Ö¯_o6¶Õ¥K—.´jÕŠ… †1µn”Mhh(in&OOO´Z-¾¾¾888ÅÞ½{ ÃÕÕ•¡C‡òöÛoSSSÃ{g——=zô°™pèÐ! ÈËË#!!_ýêW&}«>þøczè!‹µ…–Êy£àà`:dòûíþàspp &&†yóæQ\\LJJ Ï>û¬1½´´” &0cÆŒ&÷åííͦM›:t(C‡eôèÑ´«oÊ·$66–´´47j¦)‹-"))‰üãŒ1ÂØËÑÑ‘×_I“&™lŸ‘‘Á|€¿¿?///|}}ñõõÅÝÝ'''üýýùàƒ,…|óÍ7fëgΜI÷îÝyଖµG±bÅ »ÎíÑGå³Ï>£ªªŠÊÊJ™5k–1ÝËËˬOaƒ+V°zõjfΜÉܹséß¿?§OŸæá‡&»‰þ£!!!lÞ¼™C‡1eÊÚ·oo5x;|ø0‹-bÆŒ,X°ÀøEDˆædwXD„¡)ïâE7ÎÐ\—œlè„ß”Q£`Ù2ð÷7ä;uʼÃþV¬€‰áw 5K+V4] ¥Õ‚¯ßý\] Tã~ªëÖÁïo ~õ+øè£¦ËßTYª« ÁÙ ý¿ùŸÿü|è×ÏÐw­S'¨BÈ*¥×sô½÷(=w¥¾]»òÈ ©?‘Ó«Vq Qgò3«WõòË„51ŒBû#¸VTĶ ¨.-Å«}{~ý÷¿Ðëí·Ù;k'–,Á¥ukz¥¤˜Ôˆù„…Ñ>6–/úõFìØÎF_¦ÊyiÏŽ.X€ª­¥MïÞôNI±}QìÍùóçÑétôìÙ“ï¿ÿWWW:vìh 2éÖ­Ûmi‹ˆˆ ¢¢‚‹/2nÜ8\\\HNNæ·6þ!4 +W®$>>ž—^z‰gŸ}ggg“”êêjΜ9cö0Ahh¨±ƒ{TTŽŽŽÆÇùçÏŸÏ“O>‰——!!!¬^½ÚXûc+móæÍ¼úê«Æñ«V6þæ,Y²„—^zÉâ¹X+gc&L`àÀlÛ¶ ???“´””³&8WWWþö·¿Y­»zõ*'N4[ÿÖ[o1jÔ(æÌ™ÃìÙ³5~III,^¼˜éÓ§79ÌÈñãÇéܹ³±6¬±#GŽÐ¥K³õ~~~,_¾œaÆ1hÐ cMUTTÝ»w·xœ7ÞxƒM›6ñÕW_ûvéõzøÍo~Ã’%KX·nÇ M™ƒ âÀœ8q‚O?ýÔ¤¶ÇÉÉÉØÊÒ}ݧO¦OŸÎË/¿Ì€(**báÂ…¸¸¸ðicêt:RSSyì±Çøä“OèÕ«:Žððp† f¶}@@O<ñC‡¥ªªŠñãÇ›Ô(º¹¹±qãF‹ÇêÕ«IIIÄÇÇsñâE2228tè™™™ÄÄİcÇZ7¼qß ¶¶–½{÷²aÃ6lØ`§Í’œœ|ðABCCyàÈÉɱúÀ?;'ýwJPP{÷îµØ/änv7\—k×®áîîNii©IŸ²Ÿ¥çÏŸçÊ•+&ÍÁ;v4é³u'=z”{ï½×¬ß[ƒÄÄD:vìHyy9ëׯ·:ðkTT?ü°ÕãTTTðÕW_‘••…V«eàÀfƒš2bľþúkΜ9ƒ§§'K—.eùòåh4öìÙƒ‹‹ /^¤¬¬ÌL‚a”ù¤¤$>þøccm&å0oÞ<›×¡  €… râÄ <<<2d1116ó4¦”"=='N ×뉌Œ´Ùd›ššŠÕƒhªª*.\È¡C‡ðññaüøñÆJKK­þ Áð4eÊúöíK\\œÍfÉêêjF͵k×psscÕªU2Ø«¸#nfÒo ÄšÙÝpÜŠŸëuùæ›ohß¾=þþþ¼ÿþû,[¶Œôôôæ.Ö]©ººÚØ™])õ_ óp'UVV¢ÕjÍÊW[[K]]ݶÜ?f } …¸Sn&ûA:ëßNIIÖÓ&M‚ŸÚçö /¼`óÛÞÝêçz]>ÌðáÃQJÂâÅ‹›»Hw­ŸÊ±«««ÅõöŸ¢ëSªtëÂÝ:²tí ‹¯x/;&t¶u¼¦ÎÁÕʼnşoÄ·¥7¿{üQ¾=rŠÚ&æ´çº!„âçí¦š&‹JÊxeîÇ=uÖd}ñ•rªkj©¸zÂâRJJËqw3 BøÝñ,JJË8ùŸªª«iáåaÌë×ʇ'G `ÃÎ rò.к¥müZ²-ý uuu_!ëüÂîkz´Ö_þ"”ôoRX|€ — ŒÇ·¦©ã5uGO  è µz=^žML¤iÇ>…Bñów[žšl˜C®aª¥¡ªsx;zvÀÝÍ¥êpsuA£¹ÿ…ráR>;´ãd}Óœ§‡!ˆûÝãCÛét:.”4YOwWJšh†4ËÓÄñš:‡ššZ“k¡qh:¾mjŸB!„øù»cÃW8à€—§;±ý{±xõ&c“㌧Çи¥0#ó8éñû'cùEØ}?}޲ŠJ*¯U3o麛>nYE%>žÖ'P®«S8ÜÐTiëxöœÃͲgŸ–ÊiOšB!~:nª ÆÛÓ©ãGÖξ Ñëõj–ÂÛ·ÅÍÕÅd›:¥¸VUMêÖoÒ'7Wò K(-¯à¡º¢ÕjÐh¸/èZx{6yÌCÿ>CÏÈδja˜§0À¿>šüŠJJiÝÒWgã:[dzçn–=û´TN{Ò„BñÓqÓõ[x{â¬Ó5½1PP|…ýGNò»'†QVq•KùEVŸ^<}.—Sgsx´OV¬ßÆÊÔí éÍŒ§Çp)¿ˆ/¶ìiò˜ßÏÂÝÕ…ø‘quv2>5Ùàra ‡þ}†ç'Žï|ô9UUÕVw3ç`/{öi­œM¥ !„â§Ã®I¿e®I!„BÛæš¼™I¿¥w¸B!D3‘@L!„¢™H &„BÑLìê¬ßÐæ)„B!n©B!„h&ˆ !„B4 Ä„B!š‰bB!„ÍD1!„Bˆf"˜B!D3‘@L!„¢™H &„BÑL$B!„h&ˆ !„B4 Ä„B!š‰bB!„ÍD1!„Bˆf"˜B!D3‘@L!„¢™H &„BÑL$B!„h&޶‹ ~¨r!„BÜu¬bÕ5µ?d9„B!~nj€ÚúEÔÕ/ª~ÁÁB&GÀp\ýlxíRŸ®»³eB!„øÉªª€kõKeýr­ÑÏ*k5b CĦÇÅÕZ®nª~½B!„0W‹!«ª¹^;ÖP3¦ÀrÓdCuY]}m}æÆA˜ÞJ^!„Bq½"«C0Ö¸™ÒØ. @unnumberedsec 目次 @menu * インストール:Installation. * サンプルセッション:Sample Session. * コマンド仕様:Command. * 入力仕様:Input. * 出力仕様:Output. * メッセージ一覧:Messages. * メトリクス一覧:Metrics. * コード情報一覧:CodeStructures. * 付録:Appendix. * 索引:Index. @end menu @node Installation @chapter インストール @menu * 動作è¦ä»¶:Requirements. * ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ç’°å¢ƒ:Hardware Environment. * MS Windows 環境ã¸ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ‰‹é †:Install On Windows. * Unix 環境ã¸ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ‰‹é †:Install On Unix. * 動作テスト㨠AdLint ã®è©¦ç”¨:Evaluation. @end menu @node Requirements @section 動作è¦ä»¶ AdLint ã®ä½¿ç”¨ã«ã¯ã€Ruby ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.9.3-p0 以é™ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒå¿…è¦ã§ã™ã€‚ ã¾ãŸã€@ref{AdLintize Command, @command{adlintize}} コマンドã«ã‚ˆã£ã¦ä½œæˆã™ã‚‹è§£æž 自動化 @file{GNUmakefile} を使用ã™ã‚‹ãŸã‚ã«ã€GNU Make ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3 以é™ã®ã‚¤ãƒ³ã‚¹ トールをãŠå‹§ã‚ã—ã¾ã™ã€‚ @node Hardware Environment @section ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ç’°å¢ƒ 推奨ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ç’°å¢ƒã¯ã€è§£æžå¯¾è±¡ã‚½ãƒ•トウェアã®è¦æ¨¡ã«ã‚ˆã‚Šä¸€æ¦‚ã«ã¯è¦å®šã§ãã¾ã›ã‚“ ãŒã€å‚考情報ã¨ã—㦠AdLint ã®ãƒ†ã‚¹ãƒˆç’°å¢ƒã¨å®Ÿéš›ã«è¨ˆæ¸¬ã—ãŸè§£æžæ™‚間を紹介ã—ã¾ã™ã€‚ @subsection MS Windows MS Windows XP (SP3) 上ã§ã®ãƒ†ã‚¹ãƒˆã¯ Intel Core i5 3.33GHz (660)ã€ç‰©ç†ãƒ¡ãƒ¢ãƒª 2 GB ã®ç’°å¢ƒã§è¡Œã£ã¦ã„ã¾ã™ã€‚ ã“ã®ç’°å¢ƒã§ Ruby 1.9.3-p0 (ビルド対象ã®ç·ç‰©ç†è¡Œæ•° 62 万行) ã‚’è§£æžã—ãŸå ´åˆã€ä¸‹è¨˜ ã®è§£æžæ™‚é–“ã‚’è¦ã—ã¾ã—ãŸã€‚ @itemize @item ã™ã¹ã¦ã‚·ãƒªã‚¢ãƒ«ã«è§£æž --- ç´„ 7.9 時間 @item シングルモジュール解æžã‚’ 3 並走ã•ã›ã¦è§£æž --- ç´„ 3.7 時間 @end itemize @subsection GNU/Linux Fedora 14 上ã§ã®ãƒ†ã‚¹ãƒˆã¯ Intel Core2 Duo 2.20GHz (E4500)ã€ç‰©ç†ãƒ¡ãƒ¢ãƒª 3.4 GB 㮠環境ã§è¡Œã£ã¦ã„ã¾ã™ã€‚ ã“ã®ç’°å¢ƒã§ Ruby 1.9.3-p0 (ビルド対象ã®ç·ç‰©ç†è¡Œæ•° 62 万行) ã‚’è§£æžã—ãŸå ´åˆã€ä¸‹è¨˜ ã®è§£æžæ™‚é–“ã‚’è¦ã—ã¾ã—ãŸã€‚ @itemize @item ã™ã¹ã¦ã‚·ãƒªã‚¢ãƒ«ã«è§£æž --- ç´„ 6.5 時間 @item シングルモジュール解æžã‚’ 2 並走ã•ã›ã¦è§£æž --- ç´„ 4.2 時間 @end itemize @node Install On Windows @section MS Windows 環境ã¸ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ‰‹é † @anchor{install_rubyinstaller} @subsection Ruby ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ« @uref{http://rubyinstaller.org/, RubyInstaller for Windows} ã® @uref{http://rubyinstaller.org/downloads/, ダウンロードページ}ã‹ã‚‰ 1.9.3-p0 以 é™ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® RubyInstaller を入手ã—ã¾ã™ã€‚ RubyInstaller を実行ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ©ã®æŒ‡ç¤ºã«å¾“ã„ Ruby をインストールã—ã¾ã™ã€‚ @anchor{install_devkit} @subsection DEVELOPMENT KIT (DevKit) ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ« @uref{http://www.gnu.org/software/make/make.html, GNU Make} ã‚’å«ã‚€ DEVELOPMENT KIT (DevKit) ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’推奨ã—ã¾ã™ã€‚ @uref{http://rubyinstaller.org/, RubyInstaller for Windows} ã§é…布ã•れã¦ã„ã‚‹ DEVELOPMENT KIT (DevKit) ã‚’@uref{http://rubyinstaller.org/downloads/, ダウンロ ードページ}ã‹ã‚‰å…¥æ‰‹ã—ã¾ã™ã€‚ @file{DevKit-*.exe} を実行ã™ã‚‹ã¨ã€DEVELOPMENT KIT ãŒæŒ‡å®šã—ãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«å±•é–‹ ã•れã¾ã™ã€‚ @subsection @code{PATH} 環境変数ã®è¨­å®š @ref{install_rubyinstaller, Ruby ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«} ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—㟠Ruby ディレ クトリ中㮠@file{bin}ã€@ref{install_devkit, DEVELOPMENT KIT (DevKit) ã®ã‚¤ãƒ³ã‚¹ãƒˆ ール} ã§å±•é–‹ã—㟠DevKit ディレクトリ中㮠@file{bin}ã€@file{mingw\bin} ã‚’ @code{PATH} 環境変数ã«è¿½åŠ ã—ã¦ãã ã•ã„。 @subsection AdLint ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ« コマンドプロンプトを起動ã—ã€ä¸‹è¨˜ã®ã‚³ãƒžãƒ³ãƒ‰ã«ã‚ˆã‚Š AdLint ã®æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウ ンロードã—インストールã—ã¾ã™ã€‚ @verbatim > gem install adlint --no-rdoc --no-ri @end verbatim HTTP プロキシを使用ã™ã‚‹å ´åˆã¯ã€ä¸‹è¨˜ã®ã‚ˆã†ã« @command{gem} コマンド㫠@option{--http-proxy http://ユーザ:パスワード@@プロキシホスト:ãƒãƒ¼ãƒˆç•ªå·} を指 定ã—ã¾ã™ã€‚ @verbatim > gem install adlint --no-rdoc --no-ri --http-proxy http://user:passwd@proxy:3128 @end verbatim @node Install On Unix @section Unix 環境ã¸ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ‰‹é † @uref{http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Ruby+Install+Guide, Ruby インストールガイド} ã«å¾“ã„ã€Ruby インタプリタをインストールã—ã¾ã™ã€‚ ãã®å¾Œã€ä¸‹è¨˜ã®ã‚³ãƒžãƒ³ãƒ‰ã«ã‚ˆã‚Š AdLint ã®æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンロードã—インストー ルã—ã¾ã™ã€‚ @verbatim % gem install adlint @end verbatim ã¾ãŸã¯ã€ @verbatim % sudo gem install adlint @end verbatim HTTP プロキシを使用ã™ã‚‹å ´åˆã¯ã€@command{gem} コマンド㫠@option{--http-proxy http://ユーザ:パスワード@@プロキシホスト:ãƒãƒ¼ãƒˆç•ªå·} を指定ã—ã¾ã™ã€‚ @node Evaluation @section 動作テスト㨠AdLint ã®è©¦ç”¨ AdLint ã«ã¯å°ã•ãªã‚µãƒ³ãƒ—ル㮠C 言語プロジェクトãŒä»˜å±žã—ã¦ã„ã¾ã™ã€‚ ä¸‹è¨˜ã®æ‰‹é †ã§ã€@code{intro_demo} プロジェクトを用ã„㦠AdLint ã®å‹•作テストを行㣠ã¦ãã ã•ã„。 @code{intro_demo} プロジェクトをユーザã®ãƒ¯ãƒ¼ã‚¯ã‚¹ãƒšãƒ¼ã‚¹ã¸ã‚³ãƒ”ーã—ã¾ã™ã€‚ @verbatim % cp -r `adlint --prefix`/share/demo/intro_demo . @end verbatim @ref{AdLintize Command, @command{adlintize}} コマンドã«ã‚ˆã‚Šã€é™çš„è§£æžã®ãŸã‚ã®è¨­ 定ファイルを生æˆã—ã¾ã™ã€‚ @verbatim % cd intro_demo % adlintize @end verbatim 下記ã®ãƒ•ァイルãŒå‡ºåŠ›ã•れã¾ã™ã€‚ @itemize @item @file{GNUmakefile} --- è§£æžæ‰‹é †ãŒè¨˜è¿°ã•れ㟠GNU Make 用ã®ãƒ¡ã‚¤ã‚¯ãƒ•ァイル @item @file{adlint_traits.yml} --- AdLint è§£æžå‹•作をカスタマイズã™ã‚‹ç‰¹æ€§ãƒ•ァイ ル @item @file{adlint_pinit.h} --- プロジェクト固有ã®ã‚¤ãƒ‹ã‚·ãƒ£ãƒ«ãƒ˜ãƒƒãƒ€ãƒ•ァイル @item @file{adlint_cinit.h} --- コンパイラ固有ã®ã‚¤ãƒ‹ã‚·ãƒ£ãƒ«ãƒ˜ãƒƒãƒ€ãƒ•ァイル @item @file{adlint_all.sh} --- è§£æžæ‰‹é †ãŒè¨˜è¿°ã•れãŸã‚·ã‚§ãƒ«ã‚¹ã‚¯ãƒªãƒ—ト @item @file{adlint_all.bat} --- è§£æžæ‰‹é †ãŒè¨˜è¿°ã•れ㟠MS Windows 用ãƒãƒƒãƒãƒ•ァイ ル @item @file{adlint_files.txt} --- シェルスクリプトã¨ãƒãƒƒãƒãƒ•ァイルã§ä½¿ç”¨ã™ã‚‹è§£ æžå¯¾è±¡ãƒ•ァイルã®ãƒªã‚¹ãƒˆ @end itemize GNU Make ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3 以é™ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã®å ´åˆã€ä¸‹è¨˜ã®ã‚³ãƒžãƒ³ãƒ‰ã«ã‚ˆã‚Šè§£æžã™ ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @verbatim % 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 @end verbatim GNU Make をインストールã—ã¦ã„ãªã„å ´åˆã¯ã€ä¸‹è¨˜ã®ã‚ˆã†ã«ç›´æŽ¥ @ref{AdLint Command, @command{adlint}} コマンドを使用ã—ã¦ãã ã•ã„。 @verbatim % 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 @end verbatim è§£æžå‡¦ç†ãŒæ­£å¸¸ã«çµ‚了ã™ã‚‹ã¨ã€ä¸‹è¨˜ã®ãƒ•ァイルãŒå‡ºåŠ›ã•れã¾ã™ã€‚ @itemize @item @file{intro_demo.i} --- プリプロセス済ã¿ã‚½ãƒ¼ã‚¹ãƒ•ァイル @item @file{intro_demo.c.met.csv} --- シングルモジュール解æžçµæžœã®ã‚³ãƒ¼ãƒ‰æƒ…報㨠メトリクス情報 @item @file{intro_demo.c.msg.csv} --- シングルモジュール解æžçµæžœã®è­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ ジ @item @file{intro_demo.met.csv} --- クロスモジュール解æžçµæžœã®ãƒ¡ãƒˆãƒªã‚¯ã‚¹æƒ…å ± @item @file{intro_demo.msg.csv} --- クロスモジュール解æžçµæžœã®è­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ @end itemize @file{intro_demo.c.msg.csv} ã®å†…容ã¯ã€ã€Œã„ãã¤ã‹ã®æ–‡ã«åˆ¶å¾¡ãŒåˆ°é”ã—ãªã„ã“ã¨ã€ã¨ 「ã„ãã¤ã‹ã®æ–‡ã§ã‚¼ãƒ­ã«ã‚ˆã‚‹é™¤ç®—ãŒç™ºç”Ÿã™ã‚‹ã“ã¨ã€ãªã©ã‚’示ã—ã¦ã„ã‚‹ã¯ãšã§ã™ã€‚ @node Sample Session @chapter サンプルセッション @menu * GNU Screen ã®è§£æž:Analyzing Screen. * distmake を用ã„ãŸé«˜é€Ÿãªåˆ†æ•£ä¸¦åˆ—è§£æž:Dist Analyzing Screen. @end menu @node Analyzing Screen @section GNU Screen ã®è§£æž @subsection ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã®æº–å‚™ @uref{ftp://ftp.gnu.org/gnu/screen/screen-4.0.3.tar.gz} をダウンロードã—ã€é©å½“ ãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«å±•é–‹ã—ã¾ã™ã€‚ @verbatim % 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 @end verbatim @anchor{screen_exam} @subsection プロジェクトã®èª¿æŸ» GNU Screen を実際ã«ãƒ“ルドã™ã‚‹ã“ã¨ã§ã€è§£æžã‚’実行ã™ã‚‹ç’°å¢ƒã§ã©ã®ã‚ˆã†ã«ãƒ“ルドã•れる ã‹ã‚’確èªã—ã¾ã™ã€‚ @verbatim % 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 @end verbatim @anchor{screen_prepare} @subsection é™çš„è§£æžã®æº–å‚™ @ref{AdLintize Command, @command{adlintize}} コマンドを使ã„ã€é™çš„è§£æžã«å¿…è¦ãªãƒ• ァイルã®é››å½¢ã‚’作æˆã—ã€å¯¾è±¡ãƒ—ロジェクトã«å¿œã˜ã¦è¨­å®šãƒ•ァイルを編集ã—ã¾ã™ã€‚ プロジェクトã®ãƒ“ルドã«ä½¿ç”¨ã—ãŸã‚³ãƒ³ãƒ”ュータ環境ã€ã‚³ãƒ³ãƒ‘イラ環境を調査ã—ã¾ã™ã€‚ @verbatim % 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. @end verbatim @ref{AdLintize Command, @command{adlintize}} コマンドãŒã‚µãƒãƒ¼ãƒˆã™ã‚‹ãƒ—リセット㮠ビルド環境を表示ã—ã€ãƒ—ロジェクトã®ãƒ“ルド環境ã«è¿‘ã„ã‚‚ã®ã‚’é¸æŠžã—ã¾ã™ã€‚ ã“ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã§ã¯ i686 アーキテクãƒãƒ£ä¸Šã® GNU/Linux ã§ GCC 4.5.1 を使用ã—ã¦ã„ ã‚‹ã®ã§ã€@code{i686-linux-gcc_4.5.1} ã‚’é¸æŠžã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ @verbatim % 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 @end verbatim @ref{AdLintize Command, @command{adlintize}} コマンドã§é™çš„è§£æžã«å¿…è¦ãªãƒ•ァイル ã®é››å½¢ã‚’生æˆã—ã¾ã™ã€‚ @verbatim % 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 @end verbatim @ref{screen_exam, プロジェクトã®èª¿æŸ»}ã§ä½œæˆã—㟠@file{make.log} ファイル㨠@ref{AdLintize Command, @command{adlintize}} コマンドãŒç”Ÿæˆã—㟠@file{GNUmakefile} 中㮠@code{SOURCES} 値を比較ã—ã¦ã€é™çš„è§£æžã®å¯¾è±¡ã‚½ãƒ¼ã‚¹ãƒ•ァイ ルã®éŽä¸è¶³ã‚’修正ã—ã¾ã™ã€‚ @verbatim % 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 \ @end verbatim 次ã«ã€@ref{screen_exam, プロジェクトã®èª¿æŸ»}ã§ä½œæˆã—㟠@file{make.log} ファイル 中ã§ã‚³ãƒ³ãƒ‘ã‚¤ãƒ©ã«æŒ‡å®šã•れãŸã‚ªãƒ—ションã‹ã‚‰ã€ãƒ—ロジェクト固有ã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ‘スを æ´—ã„出㗠@file{adlint_traits.yml} ファイルã«è¿½è¨˜ã—ã¾ã™ã€‚ @verbatim % 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 @end verbatim @subsection é™çš„è§£æžã®å®Ÿè¡Œ @ref{screen_prepare, é™çš„è§£æžã®æº–å‚™}ã§ä½œæˆã—㟠@file{GNUmakefile} を使ã„ã€é™çš„ è§£æžã‚’実行ã—ã¾ã™ã€‚ @verbatim % 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 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 @end verbatim @node Dist Analyzing Screen @section distmake を用ã„ãŸé«˜é€Ÿãªåˆ†æ•£ä¸¦åˆ—è§£æž è¿½è¨˜äºˆå®šã€‚ @node Command @chapter コマンド仕様 @menu * @command{adlintize} コマンド:AdLintize Command. * @command{adlint} コマンド:AdLint Command. * @command{adlint_sma} コマンド:AdLint SMA Command. * @command{adlint_cma} コマンド:AdLint CMA Command. * @command{adlint_chk} コマンド:AdLint CHK Command. @end menu @node AdLintize Command @section @command{adlintize} コマンド @cindex adlintize @subsection 機能 AdLint ã«ã‚ˆã‚‹é™çš„è§£æžã«å¿…è¦ãªä¸‹è¨˜ãƒ•ァイルã®é››å½¢ã‚’作æˆã—ã¾ã™ã€‚ @itemize @item @file{GNUmakefile} --- è§£æžæ‰‹é †ãŒè¨˜è¿°ã•れ㟠GNU Make 用ã®ãƒ¡ã‚¤ã‚¯ãƒ•ァイル @item @file{adlint_traits.yml} --- AdLint è§£æžå‹•作をカスタマイズã™ã‚‹ç‰¹æ€§ãƒ•ァイ ル @item @file{adlint_pinit.h} --- プロジェクト固有ã®ã‚¤ãƒ‹ã‚·ãƒ£ãƒ«ãƒ˜ãƒƒãƒ€ãƒ•ァイル @item @file{adlint_cinit.h} --- コンパイラ固有ã®ã‚¤ãƒ‹ã‚·ãƒ£ãƒ«ãƒ˜ãƒƒãƒ€ãƒ•ァイル @item @file{adlint_all.sh} --- è§£æžæ‰‹é †ãŒè¨˜è¿°ã•れãŸã‚·ã‚§ãƒ«ã‚¹ã‚¯ãƒªãƒ—ト @item @file{adlint_all.bat} --- è§£æžæ‰‹é †ãŒè¨˜è¿°ã•れ㟠MS Windows 用ãƒãƒƒãƒãƒ•ァイ ル @item @file{adlint_files.txt} --- シェルスクリプトã¨ãƒãƒƒãƒãƒ•ァイルã§ä½¿ç”¨ã™ã‚‹è§£ æžå¯¾è±¡ãƒ•ァイルã®ãƒªã‚¹ãƒˆ @end itemize @file{GNUmakefile} 中㮠@code{SOURCES} 変数ã«ã¯ã€@command{adlintize} コマンドを 実行ã—ãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªé…下ã«ã‚ã‚‹å…¨ã¦ã® @file{*.c} ファイルãŒè¨­å®šã•れã¾ã™ã€‚ @subsection 使用方法 è§£æžå¯¾è±¡ãƒ—ロジェクトã®ãƒ«ãƒ¼ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã€ä¸‹è¨˜ã®ã‚ˆã†ã« @command{adlintize} コ マンドを実行ã™ã‚‹ã¨ã€@file{adlint} ディレクトリ中ã«é™çš„è§£æžã«å¿…è¦ãªãƒ•ァイルを作 æˆã—ã¾ã™ã€‚ @verbatim % 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 @end verbatim @command{adlintize} コマンドã«ã¯ã€ãƒ—リセットã®ãƒ“ルド環境ãŒã„ãã¤ã‹ç”¨æ„ã•れã¦ã„ ã¾ã™ã€‚ プリセットã®ãƒ“ルド環境を指定ã™ã‚‹ã“ã¨ã§ã€è¨­å®šãƒ•ァイルã®é››å½¢ã«ã‚ˆã‚Šå¤šãã®æƒ…報を自 動生æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ 用æ„ã•れã¦ã„るプリセットã®ãƒ“ルド環境ã¯ã€ä¸‹è¨˜ã®ã‚³ãƒžãƒ³ãƒ‰ã«ã‚ˆã‚Šä¸€è¦§ã‚’確èªã™ã‚‹ã“㨠ãŒã§ãã¾ã™ã€‚ @verbatim % 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 @end verbatim プリセットã®ãƒ“ルド環境ã¯ã€@option{-e} ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã§æŒ‡å®šã—ã¾ã™ã€‚ @verbatim % 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 @end verbatim @subsection ヘルプメッセージ @verbatim 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 @end verbatim @node AdLint Command @section @command{adlint} コマンド @cindex adlint @subsection 機能 一括ã§ã‚·ãƒ³ã‚°ãƒ«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æž (コンパイルフェーズã«å¯¾å¿œã™ã‚‹è§£æž) ã¨ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ ãƒ¼ãƒ«è§£æž (リンクフェーズã«å¯¾å¿œã™ã‚‹è§£æž) を実行ã—ã¾ã™ã€‚ è§£æžå¯¾è±¡ã®ã‚½ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã§æŒ‡å®šã™ã‚‹æ–¹æ³•ã¨ã€ãƒªã‚¹ãƒˆãƒ•ァイルã«ã‚ˆã‚Š æŒ‡å®šã™ã‚‹æ–¹æ³•をサãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ 動作内容ã¯ã€è§£æžå¯¾è±¡ã®ã‚½ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å…¨ã¦æŒ‡å®šã—㦠@ref{AdLint SMA Command, @command{adlint_sma}} コマンドã«ã‚ˆã‚Šã‚·ãƒ³ã‚°ãƒ«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžã‚’実行ã—〠@ref{AdLint CMA Command, @command{adlint_cma}} コマンドã«ã‚ˆã‚Šã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£ æžã‚’実行ã™ã‚‹å ´åˆã¨åŒç­‰ã§ã™ã€‚ シングルモジュール解æžçµæžœã¨ã—ã¦ã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル毎ã«ä¸‹è¨˜ã®ãƒ•ァイルを作æˆã—ã¾ã™ 。 @itemize @item @file{*.i} --- ãƒ—ãƒªãƒ—ãƒ­ã‚»ã‚¹çµæžœ @item @file{*.c.msg.csv} --- シングルモジュール解æžã«ã‚ˆã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å‡ºåŠ›çµæžœ @item @file{*.c.met.csv} --- シングルモジュール解æžã«ã‚ˆã‚‹ãƒ¡ãƒˆãƒªã‚¯ã‚¹æ¸¬å®šçµæžœ @item @file{*.c.log} --- ã‚·ãƒ³ã‚°ãƒ«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžæ™‚ã®ãƒ­ã‚°ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ @end itemize クロスモジュール解æžçµæžœã¨ã—ã¦ã€ä¸‹è¨˜ã®ãƒ•ァイルを作æˆã—ã¾ã™ã€‚ @itemize @item @file{project_name.msg.csv} --- プロジェクト全体ã®ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžã« ã‚ˆã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å‡ºåŠ›çµæžœ @item @file{project_name.met.csv} --- プロジェクト全体ã®ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžã« ã‚ˆã‚‹ãƒ¡ãƒˆãƒªã‚¯ã‚¹æ¸¬å®šçµæžœ @item @file{project_name.log} --- プロジェクト全体ã®ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžæ™‚ã®ãƒ­ グメッセージ @end itemize @subsection 使用方法 @ref{AdLintize Command, @command{adlintize}} コマンドã«ã‚ˆã‚Šè¨­å®šãƒ•ァイルã®é››å½¢ã‚’ 作æˆã—ãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã€ä¸‹è¨˜ã®ã‚ˆã†ã« @command{adlint} コマンドを起動ã™ã‚‹ã¨ã‚·ãƒ³ グルモジュール解æžã¨ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžã‚’一括ã§å®Ÿè¡Œå¯èƒ½ã§ã™ã€‚ @verbatim % 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 @end verbatim テキストエディタや統åˆé–‹ç™ºç’°å¢ƒãªã©ã¨é€£æºã™ã‚‹å ´åˆã€ä¸‹è¨˜ã®ã‚ˆã†ã« @option{-v,--verbose} オプションを指定ã—ãªã„ã“ã¨ã§ã€é€²æ—表示を行ã‚ãšãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ ã‚’ stderr ã«å‡ºåŠ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @verbatim % 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)' ãŒå®šç¾©ã•れã¦ã„ã¾ã™ãŒã€ã“ã®ãƒ—ロジェクトã§ã¯ä½¿ã‚れã¦ã„ã¾ã›ã‚“。 @end verbatim @subsection ヘルプメッセージ @verbatim 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 @end verbatim @node AdLint SMA Command @section @command{adlint_sma} コマンド @cindex adlint_sma @subsection 機能 ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã§æŒ‡å®šã—ãŸè§£æžå¯¾è±¡ã‚½ãƒ¼ã‚¹ãƒ•ァイルã®ã‚·ãƒ³ã‚°ãƒ«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æž (コンパ イルフェーズã«å¯¾å¿œã™ã‚‹è§£æž) ã®ã¿ã‚’実行ã—ã¾ã™ã€‚ シングルモジュール解æžçµæžœã¨ã—ã¦ã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル毎ã«ä¸‹è¨˜ã®ãƒ•ァイルを作æˆã—ã¾ã™ 。 @itemize @item @file{*.i} --- ãƒ—ãƒªãƒ—ãƒ­ã‚»ã‚¹çµæžœ @item @file{*.c.msg.csv} --- シングルモジュール解æžã«ã‚ˆã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å‡ºåŠ›çµæžœ @item @file{*.c.met.csv} --- シングルモジュール解æžã«ã‚ˆã‚‹ãƒ¡ãƒˆãƒªã‚¯ã‚¹æ¸¬å®šçµæžœ @item @file{*.c.log} --- ã‚·ãƒ³ã‚°ãƒ«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžæ™‚ã®ãƒ­ã‚°ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ @end itemize @subsection 使用方法 @ref{AdLintize Command, @command{adlintize}} コマンドã«ã‚ˆã‚Šè¨­å®šãƒ•ァイルã®é››å½¢ã‚’ 作æˆã—ãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã€ä¸‹è¨˜ã®ã‚ˆã†ã« @command{adlint_sma} コマンドを起動ã™ã‚‹ã¨ シングルモジュール解æžã®ã¿ã‚’実行å¯èƒ½ã§ã™ã€‚ @verbatim % 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 @end verbatim テキストエディタや統åˆé–‹ç™ºç’°å¢ƒãªã©ã¨é€£æºã™ã‚‹å ´åˆã€ä¸‹è¨˜ã®ã‚ˆã†ã« @option{-v,--verbose} オプションを指定ã—ãªã„ã“ã¨ã§ã€é€²æ—表示を行ã‚ãšã‚³ãƒ³ãƒ‘イラ ã¨åŒã˜ã‚ˆã†ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ stderr ã«å‡ºåŠ›ã™ã‚‹ã“ã¨ãŒãã¾ã™ã€‚ @verbatim % 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" ã®å†…容ã¯ç¿»è¨³å˜ä½ã®ä¸­ã§å…¨ãå‚ç…§ã•れã¦ã„ã¾ã›ã‚“。削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @end verbatim @subsection ヘルプメッセージ @verbatim 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 @end verbatim @node AdLint CMA Command @section @command{adlint_cma} コマンド @cindex adlint_cma @subsection 機能 ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã§æŒ‡å®šã—ãŸå…¨ã‚·ãƒ³ã‚°ãƒ«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžã®ãƒ¡ãƒˆãƒªã‚¯ã‚¹æ¸¬å®šçµæžœã‚’ã‚‚ã¨ã«ã€ ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æž (リンクフェーズã«å¯¾å¿œã™ã‚‹è§£æž) ã®ã¿ã‚’実行ã—ã¾ã™ã€‚ クロスモジュール解æžçµæžœã¨ã—ã¦ã€ä¸‹è¨˜ã®ãƒ•ァイルを作æˆã—ã¾ã™ã€‚ @itemize @item @file{project_name.msg.csv} --- プロジェクト全体ã®ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžã« ã‚ˆã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å‡ºåŠ›çµæžœ @item @file{project_name.met.csv} --- プロジェクト全体ã®ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžã« ã‚ˆã‚‹ãƒ¡ãƒˆãƒªã‚¯ã‚¹æ¸¬å®šçµæžœ @item @file{project_name.log} --- プロジェクト全体ã®ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžæ™‚ã®ãƒ­ グメッセージ @end itemize @subsection 使用方法 @ref{AdLintize Command, @command{adlintize}} コマンドã«ã‚ˆã‚Šè¨­å®šãƒ•ァイルã®é››å½¢ã‚’ 作æˆã—ãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã€@ref{AdLint SMA Command, @command{adlint_sma}} コマンド ã«ã‚ˆã‚‹ã‚·ãƒ³ã‚°ãƒ«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžã‚’実行後ã«ä¸‹è¨˜ã®ã‚ˆã†ã« @command{adlint_cma} コマン ドを起動ã™ã‚‹ã¨ã‚¯ãƒ­ã‚¹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«è§£æžã®ã¿ã‚’実行å¯èƒ½ã§ã™ã€‚ @verbatim % 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 @end verbatim テキストエディタや統åˆé–‹ç™ºç’°å¢ƒãªã©ã¨é€£æºã™ã‚‹å ´åˆã€ä¸‹è¨˜ã®ã‚ˆã†ã« @option{-v,--verbose} オプションを指定ã—ãªã„ã“ã¨ã§ã€é€²æ—表示を行ã‚ãšãƒªãƒ³ã‚«ã¨åŒ ã˜ã‚ˆã†ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ stderr ã«å‡ºåŠ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @verbatim % 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)' ãŒå®šç¾©ã•れã¦ã„ã¾ã™ãŒã€ã“ã®ãƒ—ロジェクトã§ã¯ä½¿ã‚れã¦ã„ã¾ã›ã‚“。 @end verbatim @subsection ヘルプメッセージ @verbatim 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 @end verbatim @node AdLint CHK Command @section @command{adlint_chk} コマンド @cindex adlint_chk @subsection 機能 ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã§æŒ‡å®šã—ãŸè§£æžå¯¾è±¡ã‚½ãƒ¼ã‚¹ãƒ•ァイルã®å‰å‡¦ç†ã®ã¿ã‚’実行ã™ã‚‹ã“ã¨ã§ã€ @ref{Traits, 特性ファイル} ã®å†…容を検証ã—ã¾ã™ã€‚ @subsection 使用方法 @ref{AdLintize Command, @command{adlintize}} コマンドã«ã‚ˆã‚Šè¨­å®šãƒ•ァイルã®é››å½¢ã‚’ 作æˆã—ã€è§£æžå¯¾è±¡ãƒ—ロジェクトã«åˆã‚ã›ã¦ @ref{Traits, 特性ファイル} を編集ã—ãŸå¾Œ ã§ã€ä¸‹è¨˜ã®ã‚ˆã†ã« @command{adlint_chk} コマンドを起動ã™ã‚‹ã¨å‰å‡¦ç†ã‚’実行㗠@ref{Traits, 特性ファイル} ã®å†…容を検証å¯èƒ½ã§ã™ã€‚ @verbatim % 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 @end verbatim ヘッダファイルã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ‘ã‚¹ãŒæ­£ã—ã設定ã•れã¦ã„ãªã„å ´åˆã¯ã€ä¸‹è¨˜ã®ã‚ˆã†ã«ã‚¨ ラーãŒç™ºç”Ÿã—ã€ã‚½ãƒ¼ã‚¹ãƒ•ァイルã«è©²å½“ã™ã‚‹ @file{*.c.msg.csv} ファイルを確èªã™ã‚‹ã“ ã¨ã§ã€ã©ã®ãƒ˜ãƒƒãƒ€ãƒ•ァイルãŒã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã§ããªã‹ã£ãŸã‹ã‚’確èªå¯èƒ½ã§ã™ã€‚ @verbatim % 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,ヘッダファイル ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 X,../intro_demo.c,1,1,X0003,回復ä¸èƒ½ãªã‚¨ãƒ©ãƒ¼ã«ã‚ˆã‚Šè§£æžå‡¦ç†ã‚’中断ã—ã¾ã—ãŸã€‚詳細㯠`intro_demo.c.msg.csv' åŠã³ `intro_demo.c.log' を確èªã—ã¦ä¸‹ã•ã„。 @end verbatim @subsection ヘルプメッセージ @verbatim 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 @end verbatim @node Input @chapter 入力仕様 @menu * 入力ファイル:Input Files. * 特性ファイル:Traits. * メッセージ定義ファイル:Message Definition. * ソースコード注釈:Source Code Annotation. @end menu @node Input Files @section 入力ファイル 下記 2 種類ã®ãƒ•ァイルã«ã‚ˆã‚Šè§£æžå‹•作を設定ã—ã¾ã™ã€‚ @table @var @itemx @ref{Traits, 特性ファイル} è§£æžå‡¦ç†ã®æ–¹æ³•ã‚’ @uref{http://yaml.org/, YAML å½¢å¼}ã§è¨˜è¿°ã—ã¾ã™ã€‚ @itemx @ref{Message Definition, メッセージ定義ファイル} メッセージカタログを @uref{http://yaml.org/, YAML å½¢å¼}ã§è¨˜è¿°ã—ã¾ã™ã€‚ @end table 特性ファイルã¯ã€@ref{AdLint Command, @command{adlint}}ã€@ref{AdLint SMA Command, @command{adlint_sma}}ã€@ref{AdLint CMA Command, @command{adlint_cma}} コマンドã®ã‚ªãƒ—ション @option{--traits} ã§ãƒ‘スåを指定ã—ã¾ã™ã€‚ メッセージ定義ファイルã¯ã€AdLint インストールパス内㮠@file{etc/mesg.d} 内ã«ã‚¤ ンストールã•れã¾ã™ã€‚ @ref{AdLint Command, @command{adlint}}ã€@ref{AdLint SMA Command, @command{adlint_sma}}ã€@ref{AdLint CMA Command, @command{adlint_cma}} コマンド ã¯ã€@ref{Message Traits, メッセージ特性}ã® @ref{message_traits:language, @code{language}} é …ç›®ã§æŒ‡å®šã—ãŸè¨€èªžã«å¾“ã„ã€é©åˆ‡ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å®šç¾©ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã— ã¾ã™ã€‚ @node Traits @section 特性ファイル @menu * グローãƒãƒ«ç‰¹æ€§:Global Traits. * プロジェクト特性:Project Traits. * コンパイラ特性:Compiler Traits. * リンカ特性:Linker Traits. * メッセージ特性:Message Traits. @end menu @ref{Project Traits, プロジェクト特性}ã€@ref{Compiler Traits, コンパイラ特性}〠@ref{Linker Traits, リンカ特性}ã€@ref{Message Traits, メッセージ特性} ã‚’ å˜ä¸€ã® @uref{http://yaml.org/, YAML å½¢å¼}ã®è¨­å®šãƒ•ァイル(@ref{Traits Sample, サンプル}) ã«è¨˜è¿°ã—ã¾ã™ã€‚ 下記ã®ã‚ˆã†ã«è§£æžå¯¾è±¡ãƒ—ロジェクトã®ãƒ«ãƒ¼ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ @ref{AdLintize Command, @command{adlintize}} コマンドを実行ã™ã‚‹ã¨ã€ãã®ãƒ—ロジェクト用ã®ç‰¹æ€§ãƒ•ァイル @file{adlint_traits.yml} ã®é››å½¢ã€ãŠã‚ˆã³ã€è§£æžæ‰‹é †ã‚’自動化ã™ã‚‹ @file{GNUmakefile} やシェルスクリプトãªã©ã‚’生æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @verbatim % 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 @end verbatim 後述ã®ç‰¹æ€§ãƒ•ァイルã®å„設定項目ã«ã¯ã€ç’°å¢ƒå¤‰æ•°ã‚’指定ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ 例ãˆã°ã€è¨­å®šé …ç›® @code{item} ã«ã€ç’°å¢ƒå¤‰æ•° @code{ENV_VAR} ã®å€¤ã‚’指定ã™ã‚‹å ´åˆã¯ä¸‹ 記ã®ã‚ˆã†ã«è¨˜è¿°ã—ã¾ã™ã€‚ @verbatim item: $ENV_VAR @end verbatim ã¾ãŸã€æ–‡å­—列形å¼ã®è¨­å®šé …ç›®ã«ã€ç’°å¢ƒå¤‰æ•°ã®å€¤ã‚’埋ã‚è¾¼ã‚“ã æ–‡å­—列を指定ã™ã‚‹å ´åˆã¯ä¸‹ 記ã®ã‚ˆã†ã«è¨˜è¿°ã—ã¾ã™ã€‚ @verbatim item: "prefix${ENV_VAR}suffix" @end verbatim ディレクトリパスåã®é…列を指定ã™ã‚‹é …ç›®ã§ã¯ã€ä¸‹è¨˜ã®ã‚ˆã†ã«ä¸€ã¤ã®ç’°å¢ƒå¤‰æ•°ã®å€¤ã«ã‚ˆ り複数ã®ãƒ‘スåを指定ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ @verbatim % export ENV_VAR="/usr/local/include:/usr/include" @end verbatim @verbatim include_path: - $ENV_VAR @end verbatim @node Global Traits @subsection グローãƒãƒ«ç‰¹æ€§ グローãƒãƒ«ç‰¹æ€§ã¯ã€ç‰¹æ€§ãƒ•ァイルã®ãƒ«ãƒ¼ãƒˆé …ç›®ã§è¨­å®šã—ã¾ã™ã€‚ @multitable @columnfractions .01 .3 .1 @headitem No. @tab é …ç›®å @tab å½¢å¼ @tab 内容 @item 1 @cindex version @anchor{global_traits:version} @tab @code{version} @tab 文字列 @tab 特性ファイルフォーマットã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表ã—ã¾ã™ã€‚ã“ã®é …ç›®ã¯ç·¨é›†ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“ 。 @item 2 @cindex exam_packages @anchor{global_traits:exam_packages} @tab @code{exam_packages} @tab 文字列ã®é…列 @tab é™çš„è§£æžã«ç”¨ã„るソースコード検査パッケージã®åå‰ã‚’列挙ã—ã¾ã™ã€‚ @code{"c_builtin"} 㯠AdLint 本体ã«çµ„ã¿è¾¼ã¿æ¸ˆã¿ã®æ¤œæŸ»ãƒ‘ッケージåã§ã™ã€‚ ã¾ãŸã€ä»Šå¾Œã•ã¾ã–ã¾ãªç”¨é€”ã«ç‰¹åŒ–ã—ãŸã‚ªãƒ—ションã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰æ¤œæŸ»ãƒ‘ッケージを開発 ã™ã‚‹äºˆå®šã§ã™ã€‚ 例ãˆã°ã€@code{adlint-exam-c_ansi} ã¨ã„ã†ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ãŒ ANSI C ã«æº–æ‹ ã—ã¦ã„ã‚‹ ã‹ã‚’検査ã™ã‚‹ãƒ‘ッケージをインストールã—ãŸå ´åˆã€@code{exam_packages} を下記ã®ã‚ˆã† ã«ç·¨é›†ã—ã¦è§£æžã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ 以下ã®å ´åˆã¯ã€ANSI C æº–æ‹ ã®æ¤œæŸ»ãƒ‘ッケージã®ã¿ãŒå®Ÿè¡Œã•れã¾ã™ã€‚ @example exam_packages: - "c_ansi" @end example 以下ã®å ´åˆã¯ã€AdLint 組ã¿è¾¼ã¿ã®æ¤œæŸ»ãƒ‘ッケージã¨ã€ANSI C æº–æ‹ ã®æ¤œæŸ»ãƒ‘ッケージãŒå®Ÿ 行ã•れã¾ã™ã€‚ @example exam_packages: - "c_builtin" - "c_ansi" @end example @end multitable @node Project Traits @subsection プロジェクト特性 プロジェクト特性ã¯ã€ç‰¹æ€§ãƒ•ァイル㮠@code{project_traits} é…下ã®é …ç›®ã§è¨­å®šã—ã¾ã™ 。 @multitable @columnfractions .01 .3 .1 @headitem No. @tab é …ç›®å @tab å½¢å¼ @tab 内容 @item 1 @cindex project_traits:project_name @anchor{project_traits:project_name} @tab @code{project_name} @tab 文字列 @tab プロジェクトåを設定ã—ã¾ã™ã€‚ @item 2 @cindex project_traits:project_root @anchor{project_traits:project_root} @tab @code{project_root} @tab 文字列 @tab è§£æžå¯¾è±¡ãƒ—ロジェクトã®ãƒ«ãƒ¼ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’設定ã—ã¾ã™ã€‚ @item 3 @cindex project_traits:target_files:inclusion_paths @anchor{project_traits:target_files:inclusion_paths} @tab @code{target_files:inclusion_paths} @tab 文字列ã®é…列 @tab è§£æžå¯¾è±¡ã‚½ãƒ¼ã‚¹ãƒ•ァイルãŒå­˜åœ¨ã™ã‚‹ä¸Šä½ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ãƒ‘スåを設定ã—ã¾ã™ã€‚ å„ã‚¨ãƒ³ãƒˆãƒªã®æ–‡å­—列ã¯ã€@code{`:'} (Windows 環境ã§ã¯ @code{`;'}) を区切り文字ã¨ã— ã¦è¤‡æ•°ã®ãƒ‘スåを設定ã§ãã¾ã™ã€‚ @item 4 @cindex project_traits:target_files:exclusion_paths @anchor{project_traits:target_files:exclusion_paths} @tab @code{target_files:exclusion_paths} @tab 文字列ã®é…列 @tab @ref{project_traits:target_files:inclusion_paths, @code{target_files:inclusion_paths}} ã§æŒ‡å®šã—ãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªé…下ã®ãƒ•ァイルã§ã€è§£æžå¯¾è±¡ã‹ã‚‰é™¤å¤–ã™ã‚‹ã‚½ãƒ¼ã‚¹ãƒ•ァイルãŒå­˜åœ¨ã™ã‚‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’設定ã—ã¾ã™ã€‚ è§£æžå¯¾è±¡ãƒ—ロジェクト中ã«ã‚µãƒ¼ãƒ‰ãƒ‘ーティ製ライブラリã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’å«ã¿ã€ãれら ã®ã‚½ãƒ¼ã‚¹ãƒ•ァイルã«é–¢ã™ã‚‹ã‚³ãƒ¼ãƒ‰ãƒã‚§ãƒƒã‚¯ã‚’行ã„ãŸããªã„å ´åˆãªã©ã«æŒ‡å®šã—ã¾ã™ã€‚ å„ã‚¨ãƒ³ãƒˆãƒªã®æ–‡å­—列ã¯ã€@code{`:'} (Windows 環境ã§ã¯ @code{`;'}) を区切り文字ã¨ã— ã¦è¤‡æ•°ã®ãƒ‘スåを設定ã§ãã¾ã™ã€‚ @item 5 @cindex project_traits:initial_header @anchor{project_traits:initial_header} @tab @code{initial_header} @tab 文字列 @tab è§£æžå¯¾è±¡ã‚½ãƒ¼ã‚¹ãƒ•ァイルã®å…ˆé ­ã«è‡ªå‹•ã§ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れるヘッダファイルを指定ã—ã¾ ã™ã€‚ã“ã®ãƒ•ァイルã«ã¯ã€ãƒ—ロジェクト固有ã®ãƒžã‚¯ãƒ­å®šç¾©ãªã©ã‚’記述ã—ã¾ã™ã€‚ @item 6 @cindex project_traits:file_search_paths @anchor{project_traits:file_search_paths} @tab @code{file_search_paths} @tab 文字列ã®é…列 @tab プロジェクト固有ã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã®æŽ¢ç´¢ãƒ‘ã‚¹ã‚’è¨­å®šã—ã¾ã™ã€‚ å„ã‚¨ãƒ³ãƒˆãƒªã®æ–‡å­—列ã¯ã€@code{`:'} (Windows 環境ã§ã¯ @code{`;'}) を区切り文字ã¨ã— ã¦è¤‡æ•°ã®ãƒ‘スåを設定ã§ãã¾ã™ã€‚ @item 7 @cindex project_traits:coding_style:indent_style @anchor{project_traits:coding_style:indent_style} @tab @code{coding_style:indent_style} @tab 文字列 @tab コードã®å­—下ã’スタイルを @code{"K&R"}ã€@code{"Allman"}ã€@code{"GNU"} ã‹ã‚‰é¸æŠžã— ã¦è¨­å®šã—ã¾ã™ã€‚ @code{"K&R"} スタイルã¯ã€ @example int foo(int i) @{ if (i == 0) @{ return 0; @} return i; @} @end example ã¨ãªã‚Šã¾ã™ã€‚ @code{"Allman"} スタイルã¯ã€ @example int foo(int i) @{ if (i == 0) @{ return 0; @} return i; @} @end example ã¨ãªã‚Šã¾ã™ã€‚ @code{"GNU"} スタイルã¯ã€ @example int foo(int i) @{ if (i == 0) @{ return 0; @} return i; @} @end example ã¨ãªã‚Šã¾ã™ã€‚ @item 8 @cindex project_traits:coding_style:tab_width @anchor{project_traits:coding_style:tab_width} @tab @code{coding_style:tab_width} @tab 整数値 @tab タブ文字ã®è¦‹ãŸç›®ä¸Šã®æ¡æ•°ã‚’設定ã—ã¾ã™ã€‚ @item 9 @cindex project_traits:coding_style:indent_width @anchor{project_traits:coding_style:indent_width} @tab @code{coding_style:indent_width} @tab 整数値 @tab インデントã®è¦‹ãŸç›®ä¸Šã®æ¡æ•°ã‚’設定ã—ã¾ã™ã€‚ @item 10 @cindex project_traits:file_encoding @anchor{project_traits:file_encoding} @tab @code{file_encoding} @tab 文字列 @tab ã‚½ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã®æ–‡å­—エンコーディングを設定ã—ã¾ã™ã€‚値ãŒè¨­å®šã•れã¦ã„ãªã„å ´åˆã¯ "ASCII-8BIT" ã¨ã—ã¦å‡¦ç†ã—ã¾ã™ã€‚ @end multitable @node Compiler Traits @subsection コンパイラ特性 @cindex compiler_traits コンパイラ特性ã¯ã€@code{compiler_traits} é…下ã®é …ç›®ã§è¨­å®šã—ã¾ã™ã€‚ @multitable @columnfractions .01 .3 .1 @headitem No. @tab é …ç›®å @tab å½¢å¼ @tab 内容 @item 1 @cindex compiler_traits:initial_header @anchor{compiler_traits:initial_header} @tab @code{initial_header} @tab 文字列 @tab è§£æžå¯¾è±¡ã‚½ãƒ¼ã‚¹ãƒ•ァイルã®å…ˆé ­ã€ã‹ã¤ã€@ref{project_traits:initial_header, プロジ ェクト固有㮠@code{initial_header}} よりå‰ã«è‡ªå‹•ã§ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れるヘッダファ イルを指定ã—ã¾ã™ã€‚ã“ã®ãƒ•ァイルã«ã¯ã€ã‚³ãƒ³ãƒ‘イラ固有ã®å®šç¾©æ¸ˆã¿ãƒžã‚¯ãƒ­ã‚„型定義ãªã© を記述ã—ã¾ã™ã€‚ @item 2 @cindex compiler_traits:file_search_paths @anchor{compiler_traits:file_search_paths} @tab @code{file_search_paths} @tab 文字列ã®é…列 @tab コンパイラ固有ã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã®æŽ¢ç´¢ãƒ‘ã‚¹ã‚’è¨­å®šã—ã¾ã™ã€‚ å„ã‚¨ãƒ³ãƒˆãƒªã®æ–‡å­—列ã¯ã€@code{`:'} (Windows 環境ã§ã¯ @code{`;'}) を区切り文字ã¨ã— ã¦è¤‡æ•°ã®ãƒ‘スåを設定ã§ãã¾ã™ã€‚ @item 3 @cindex compiler_traits:standard_types:char_size @anchor{compiler_traits:standard_types:char_size} @tab @code{standard_types:char_size} @tab 整数値 @tab @code{char} 型ファミリã®ã‚µã‚¤ã‚ºã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 4 @cindex compiler_traits:standard_types:char_alignment @anchor{compiler_traits:standard_types:char_alignment} @tab @code{standard_types:char_alignment} @tab 整数値 @tab @code{char} 型ファミリã®ãƒ¡ãƒ¢ãƒªã‚¢ãƒ©ã‚¤ãƒ¡ãƒ³ãƒˆã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 5 @cindex compiler_traits:standard_types:short_size @anchor{compiler_traits:standard_types:short_size} @tab @code{standard_types:short_size} @tab 整数値 @tab @code{short} 型ファミリã®ã‚µã‚¤ã‚ºã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 6 @cindex compiler_traits:standard_types:short_alignment @anchor{compiler_traits:standard_types:short_alignment} @tab @code{standard_types:short_alignment} @tab 整数値 @tab @code{short} 型ファミリã®ãƒ¡ãƒ¢ãƒªã‚¢ãƒ©ã‚¤ãƒ¡ãƒ³ãƒˆã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 7 @cindex compiler_traits:standard_types:int_size @anchor{compiler_traits:standard_types:int_size} @tab @code{standard_types:int_size} @tab 整数値 @tab @code{int} 型ファミリã®ã‚µã‚¤ã‚ºã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 8 @cindex compiler_traits:standard_types:int_alignment @anchor{compiler_traits:standard_types:int_alignment} @tab @code{standard_types:int_alignment} @tab 整数値 @tab @code{int} 型ファミリã®ãƒ¡ãƒ¢ãƒªã‚¢ãƒ©ã‚¤ãƒ¡ãƒ³ãƒˆã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 9 @cindex compiler_traits:standard_types:long_size @anchor{compiler_traits:standard_types:long_size} @tab @code{standard_types:long_size} @tab 整数値 @tab @code{long int} 型ファミリã®ã‚µã‚¤ã‚ºã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 10 @cindex compiler_traits:standard_types:long_alignment @anchor{compiler_traits:standard_types:long_alignment} @tab @code{standard_types:long_alignment} @tab 整数値 @tab @code{long int} 型ファミリã®ãƒ¡ãƒ¢ãƒªã‚¢ãƒ©ã‚¤ãƒ¡ãƒ³ãƒˆã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 11 @cindex compiler_traits:standard_types:long_long_size @anchor{compiler_traits:standard_types:long_long_size} @tab @code{standard_types:long_long_size} @tab 整数値 @tab @code{long long int} 型ファミリã®ã‚µã‚¤ã‚ºã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 12 @cindex compiler_traits:standard_types:long_long_alignment @anchor{compiler_traits:standard_types:long_long_alignment} @tab @code{standard_types:long_long_alignment} @tab 整数値 @tab @code{long long int} 型ファミリã®ãƒ¡ãƒ¢ãƒªã‚¢ãƒ©ã‚¤ãƒ¡ãƒ³ãƒˆã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 13 @cindex compiler_traits:standard_types:float_size @anchor{compiler_traits:standard_types:float_size} @tab @code{standard_types:float_size} @tab 整数値 @tab @code{float} åž‹ã®ã‚µã‚¤ã‚ºã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 14 @cindex compiler_traits:standard_types:float_alignment @anchor{compiler_traits:standard_types:float_alignment} @tab @code{standard_types:float_alignment} @tab 整数値 @tab @code{float} åž‹ã®ãƒ¡ãƒ¢ãƒªã‚¢ãƒ©ã‚¤ãƒ¡ãƒ³ãƒˆã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 15 @cindex compiler_traits:standard_types:double_size @anchor{compiler_traits:standard_types:double_size} @tab @code{standard_types:double_size} @tab 整数値 @tab @code{double} åž‹ã®ã‚µã‚¤ã‚ºã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 16 @cindex compiler_traits:standard_types:double_alignment @anchor{compiler_traits:standard_types:double_alignment} @tab @code{standard_types:double_alignment} @tab 整数値 @tab @code{double} åž‹ã®ãƒ¡ãƒ¢ãƒªã‚¢ãƒ©ã‚¤ãƒ¡ãƒ³ãƒˆã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 17 @cindex compiler_traits:standard_types:long_double_size @anchor{compiler_traits:standard_types:long_double_size} @tab @code{standard_types:long_double_size} @tab 整数値 @tab @code{long double} åž‹ã®ã‚µã‚¤ã‚ºã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 18 @cindex compiler_traits:standard_types:long_double_alignment @anchor{compiler_traits:standard_types:long_double_alignment} @tab @code{standard_types:long_double_alignment} @tab 整数値 @tab @code{long double} åž‹ã®ãƒ¡ãƒ¢ãƒªã‚¢ãƒ©ã‚¤ãƒ¡ãƒ³ãƒˆã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 19 @cindex compiler_traits:standard_types:code_ptr_size @anchor{compiler_traits:standard_types:code_ptr_size} @tab @code{standard_types:code_ptr_size} @tab 整数値 @tab 関数ã¸ã®ãƒã‚¤ãƒ³ã‚¿åž‹ã®ã‚µã‚¤ã‚ºã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 20 @cindex compiler_traits:standard_types:code_ptr_alignment @anchor{compiler_traits:standard_types:code_ptr_alignment} @tab @code{standard_types:code_ptr_alignment} @tab 整数値 @tab 関数ã¸ã®ãƒã‚¤ãƒ³ã‚¿åž‹ã®ãƒ¡ãƒ¢ãƒªã‚¢ãƒ©ã‚¤ãƒ¡ãƒ³ãƒˆã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 21 @cindex compiler_traits:standard_types:data_ptr_size @anchor{compiler_traits:standard_types:data_ptr_size} @tab @code{standard_types:data_ptr_size} @tab 整数値 @tab データã¸ã®ãƒã‚¤ãƒ³ã‚¿åž‹ã®ã‚µã‚¤ã‚ºã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 22 @cindex compiler_traits:standard_types:data_ptr_alignment @anchor{compiler_traits:standard_types:data_ptr_alignment} @tab @code{standard_types:data_ptr_alignment} @tab 整数値 @tab データã¸ã®ãƒã‚¤ãƒ³ã‚¿åž‹ã®ãƒ¡ãƒ¢ãƒªã‚¢ãƒ©ã‚¤ãƒ¡ãƒ³ãƒˆã‚’ビットå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚ @item 23 @cindex compiler_traits:standard_types:char_as_unsigned_char @anchor{compiler_traits:standard_types:char_as_unsigned_char} @tab @code{standard_types:char_as_unsigned_char} @tab 真å½å€¤ @tab @code{`char'} 型を @code{`unsigned char'} åž‹ã¨ã—ã¦æ‰±ã†å ´åˆ true を指定ã—ã¾ã™ã€‚ @item 24 @cindex compiler_traits:arithmetic:logical_right_shift @anchor{compiler_traits:arithmetic:logical_right_shift} @tab @code{arithmetic:logical_right_shift} @tab 真å½å€¤ @tab å³ã‚·ãƒ•ãƒˆå¼ @code{`>>'} を算術シフトã§ã¯ãªãã€è«–ç†ã‚·ãƒ•トã¨ã—ã¦æ‰±ã†å ´åˆ true を指 定ã—ã¾ã™ã€‚ @item 25 @cindex compiler_traits:identifier_max @anchor{compiler_traits:identifier_max} @tab @code{identifier_max} @tab 整数値 @tab コンパイラã«ã‚ˆã‚Šè­˜åˆ¥å¯èƒ½ãªã‚·ãƒ³ãƒœãƒ«ã®æœ€å¤§é•·ã‚’指定ã—ã¾ã™ã€‚ @item 26 @cindex compiler_traits:extension_substitutions @anchor{compiler_traits:extension_substitutions} @tab @code{extension_substitutions} @tab 文字列ã®ãƒžãƒƒãƒ— @tab ã‚³ãƒ³ãƒ‘ã‚¤ãƒ©å›ºæœ‰ã®æ‹¡å¼µæ©Ÿèƒ½ã‚’調整ã™ã‚‹ãŸã‚ã®ãƒˆãƒ¼ã‚¯ãƒ³ç½®æ›ãƒ‘ターンを指定ã—ã¾ã™ã€‚ AdLint ã¯ã€ã“ã“ã§æŒ‡å®šã—ãŸæ‹¡å¼µæ©Ÿèƒ½ã®ä½¿ç”¨ç®‡æ‰€ã‚’ @ref{W0061} メッセージã«ã‚ˆã£ã¦è­¦ 告ã—ã¾ã™ã€‚ @code{`__attribute__ ( ä»»æ„ã®ãƒˆãƒ¼ã‚¯ãƒ³åˆ— )'} ã¨ã„ã†ãƒˆãƒ¼ã‚¯ãƒ³åˆ—をプリプロセス後㫠削除ã—ã¤ã¤ @ref{W0061} メッセージã«ã‚ˆã‚‹è­¦å‘Šã‚’出力ã™ã‚‹å ´åˆã¯ã€ä¸‹è¨˜ã®ã‚ˆã†ã«æŒ‡å®šã— ã¾ã™ã€‚ @example extension_substitutions: "__attribute__(__adlint__any)": "" @end example ã¾ãŸã€@code{`__restrict'} ã¨ã„ã†ãƒˆãƒ¼ã‚¯ãƒ³ã‚’ @code{`restrict'} ã«ç½®æ›ã—ã¤ã¤ @ref{W0061} メッセージã«ã‚ˆã‚‹è­¦å‘Šã‚’出力ã™ã‚‹å ´åˆã¯ã€ä¸‹è¨˜ã®ã‚ˆã†ã«æŒ‡å®šã—ã¾ã™ã€‚ @example extension_substitutions: "__restrict": "restrict" @end example @item 27 @cindex compiler_traits:arbitrary_substitutions @anchor{compiler_traits:arbitrary_substitutions} @tab @code{arbitrary_substitutions} @tab 文字列ã®ãƒžãƒƒãƒ— @tab @ref{compiler_traits:extension_substitutions, @code{extension_substitutions}} ã¨åŒæ§˜ã«ã€ãƒ—リプロセス後ã«ãƒˆãƒ¼ã‚¯ãƒ³åˆ—ã‚’ç½®æ›ã™ã‚‹ãŸã‚ã®é …ç›®ã§ã™ãŒã€@ref{W0061} メ ッセージを出力ã—ãªã„点ãŒç•°ãªã‚Šã¾ã™ã€‚ @end multitable @node Linker Traits @subsection リンカ特性 @cindex linker_traits リンカ特性ã¯ã€@code{linker_traits} é…下ã®é …ç›®ã§è¨­å®šã—ã¾ã™ã€‚ @multitable @columnfractions .01 .3 .1 @headitem No. @tab é …ç›®å @tab å½¢å¼ @tab 内容 @item 1 @cindex linker_traits:identifier_max @anchor{linker_traits:identifier_max} @tab @code{identifier_max} @tab 整数値 @tab リンカã«ã‚ˆã‚Šè­˜åˆ¥å¯èƒ½ãªå¤–éƒ¨ã‚·ãƒ³ãƒœãƒ«ã®æœ€å¤§é•·ã‚’指定ã—ã¾ã™ã€‚ @item 2 @cindex linker_traits:identifier_ignore_case @anchor{linker_traits:identifier_ignore_case} @tab @code{identifier_ignore_case} @tab 真å½å€¤ @tab リンカã«ã‚ˆã‚Šå¤–部シンボルを識別ã™ã‚‹éš›ã€å¤§æ–‡å­—å°æ–‡å­—を区別ã™ã‚‹ã‹ã‚’指定ã—ã¾ã™ã€‚ @end multitable @node Message Traits @subsection メッセージ特性 @cindex message_traits メッセージ特性ã¯ã€@code{message_traits} é…下ã®é …ç›®ã§è¨­å®šã—ã¾ã™ã€‚ @multitable @columnfractions .01 .3 .1 @headitem No. @tab é …ç›®å @tab å½¢å¼ @tab 内容 @item 1 @cindex message_traits:language @anchor{message_traits:language} @tab @code{language} @tab 文字列 @tab メッセージ本文ã®è¨€èªžã‚’指定ã—ã¾ã™ã€‚(ç¾æ™‚点ã§ã¯) @code{"en_US"} ã‹ @code{"ja_JP"} ãŒæŒ‡å®šå¯èƒ½ã§ã™ã€‚ @item 2 @cindex message_traits:individual_suppression @anchor{message_traits:individual_suppression} @tab @code{individual_suppression} @tab 真å½å€¤ @tab è§£æžå¯¾è±¡ãƒ•ァイル内㮠@ref{Source Code Annotation, ソースコード注釈} ã«ã‚ˆã‚‹è­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®æŠ‘止機能を有効化ã—ã¾ã™ã€‚ @code{true} ã®å ´åˆã€æ³¨é‡ˆã«ã‚ˆã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸æŠ‘æ­¢ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚ @item 3 @cindex message_traits:exclusion:categories @anchor{message_traits:exclusion:categories} @tab @code{exclusion:categories} @tab 文字列ã®é…列 @tab @ref{global_traits:exam_packages, exam_packages} ã§æŒ‡å®šã—ãŸã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰æ¤œæŸ»ãƒ‘ッ ケージ中ã®ã‚³ãƒ¼ãƒ‰ãƒã‚§ãƒƒã‚¯æ©Ÿèƒ½ã§ã€å®Ÿè¡Œã‚’除外ã™ã‚‹ã‚‚ã®ã‚’メッセージã®ã‚«ãƒ†ã‚´ãƒªã«ã‚ˆã‚Š æŒ‡å®šã—ã¾ã™ã€‚ @item 4 @cindex message_traits:exclusion:severities @anchor{message_traits:exclusion:severities} @tab @code{exclusion:severities} @tab æ­£è¦è¡¨ç¾ã‚’è¡¨ã™æ–‡å­—列 @tab @ref{global_traits:exam_packages, exam_packages} ã§æŒ‡å®šã—ãŸã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰æ¤œæŸ»ãƒ‘ッ ケージ中ã®ã‚³ãƒ¼ãƒ‰ãƒã‚§ãƒƒã‚¯æ©Ÿèƒ½ã§ã€å®Ÿè¡Œã‚’除外ã™ã‚‹ã‚‚ã®ã‚’ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®æ·±åˆ»åº¦ã«ã‚ˆã‚ŠæŒ‡ 定ã—ã¾ã™ã€‚ @item 5 @cindex message_traits:exclusion:messages @anchor{message_traits:exclusion:messages} @tab @code{exclusion:messages} @tab メッセージ ID ã¨æ–‡å­—列ã®ãƒžãƒƒãƒ— @tab @ref{global_traits:exam_packages, exam_packages} ã§æŒ‡å®šã—ãŸã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰æ¤œæŸ»ãƒ‘ッ ケージ中ã®ã‚³ãƒ¼ãƒ‰ãƒã‚§ãƒƒã‚¯æ©Ÿèƒ½ã§ã€å®Ÿè¡Œã‚’除外ã™ã‚‹ã‚‚ã®ã‚’メッセージ ID ã«ã‚ˆã‚ŠæŒ‡å®šã— ã¾ã™ã€‚ メッセージ ID ã¯ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰æ¤œæŸ»ãƒ‘ッケージをã¾ãŸã„ã§ãƒ¦ãƒ‹ãƒ¼ã‚¯ã§ã¯ãªã„å ´åˆãŒã‚ ã‚‹ãŸã‚ã€æ–‡å­—列ã¨ã—ã¦è©²å½“ã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ ID ãŒå«ã¾ã‚Œã‚‹ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰æ¤œæŸ»ãƒ‘ッケージ åも指定ã—ã¦ãã ã•ã„。 @item 6 @cindex message_traits:inclusion:messages @anchor{message_traits:inclusion:messages} @tab @code{inclusion:messages} @tab メッセージ ID ã¨æ–‡å­—列ã®ãƒžãƒƒãƒ— @tab @code{exclusion} セクションã®è¨­å®šå†…容ã«ã‚ˆã‚Šé™¤å¤–ã—ã¾ã—ãŸãŒã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ ID 指定㧠特定ã®ã‚³ãƒ¼ãƒ‰ãƒã‚§ãƒƒã‚¯æ©Ÿèƒ½ã‚’å«ã‚ã‚‹å ´åˆã«æŒ‡å®šã—ã¾ã™ã€‚ 例ãˆã°ã€@ref{message_traits:exclusion:categories, exclusion:categories} ã§ã‚«ãƒ† ゴリ指定ã«ã‚ˆã‚Šé™¤å¤–ã—ãŸã‚³ãƒ¼ãƒ‰ãƒã‚§ãƒƒã‚¯æ©Ÿèƒ½ç¾¤ã®ã†ã¡ã€ç‰¹å®šã®ã‚‚ã®ã®ã¿ã‚’実行ã—ãŸã„å ´ åˆã‚’想定ã—ãŸé …ç›®ã§ã™ã€‚ @item 7 @cindex message_traits:change_list @anchor{message_traits:change_list} @tab @code{change_list} @tab メッセージ ID ã¨å¤‰æ›´å†…容ã®ãƒžãƒƒãƒ— @tab 特定メッセージã®å®šç¾©æƒ…報を変更ã™ã‚‹å ´åˆã«æŒ‡å®šã—ã¾ã™ã€‚ 例ãˆã°ã€@code{"c_builtin"} パッケージ㮠@code{W9999} メッセージを変更ã™ã‚‹å ´åˆã€ 下記ã®ã‚ˆã†ã«è¨­å®šã—ã¾ã™ã€‚ @example change_list: W9999: package: "c_builtin" classes: - "æ–°ã—ã„カテゴリå1:深刻度1" - "æ–°ã—ã„カテゴリå2:深刻度2" format: "æ–°ã—ã„メッセージフォーマット。" @end example @end multitable @node Message Definition @section メッセージ定義ファイル AdLint ãŒå‡ºåŠ›ã™ã‚‹å…¨ã¦ã®ã‚¨ãƒ©ãƒ¼ã€è­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ @uref{http://yaml.org/, YAML å½¢ å¼}ã®è¨­å®šãƒ•ァイルã«è¨˜è¿°ã—ã¾ã™ã€‚ 通常ã€ã“ã®ãƒ•ァイルã¯ç›´æŽ¥ç·¨é›†ã™ã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。 メッセージ内容を変更ã™ã‚‹å ´åˆã¯ã€ç‰¹æ€§ãƒ•ァイル㮠@ref{message_traits:change_list, @code{change_list}} é …ç›®ã§å¤‰æ›´å†…容を指定ã—ã¦ãã ã•ã„。 @node Source Code Annotation @section ソースコード注釈 è§£æžå¯¾è±¡ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«ã‚³ãƒ¡ãƒ³ãƒˆã¨ã—ã¦ã€AdLint ã®è§£æžå‹•作を制御ã™ã‚‹ãŸã‚ã®æ³¨é‡ˆ を記述ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @subsection 警告メッセージ抑止注釈 通常ã®ã‚³ãƒ¡ãƒ³ãƒˆã« @code{ADLINT:SF} ã§å§‹ã¾ã‚‹æ³¨é‡ˆã‚’å«ã‚ã‚‹ã“ã¨ã§ã€è©²å½“ファイルã®è§£ æžæ™‚ã«æŒ‡å®šã—ãŸè­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’抑止ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã¾ãŸã€@code{ADLINT:SL} ã§å§‹ã¾ã‚‹æ³¨é‡ˆã‚’å«ã‚ã‚‹ã¨ã€è©²å½“行ã®è§£æžæ™‚ã«æŒ‡å®šã—ãŸè­¦å‘Šãƒ¡ãƒƒ セージを抑止ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ æ³¨é‡ˆã®æ›¸å¼ã€ãŠã‚ˆã³ã€ä½¿ç”¨ä¾‹ã‚’下記ã«ç¤ºã—ã¾ã™ã€‚ @subheading @bullet{ 共通定義} @example @anchor{message_specifier_list} message_specifier_list : @ref{qualified_message_specifier} | @ref{unqualified_message_specifier} | @ref{message_specifier_list} @ref{qualified_message_specifier} | @ref{message_specifier_list} @ref{unqualified_message_specifier} @anchor{qualified_message_specifier} qualified_message_specifier : ':' @ref{package_name} @ref{unqualified_message_specifier} @anchor{unqualified_message_specifier} unqualified_message_specifier : ':' '[' @ref{message_name_list} ']' @anchor{message_name_list} message_name_list : @ref{message_name} | @ref{message_name_list} ',' @ref{message_name} @anchor{message_name} message_name : 'W' [0-9]@{4@} @anchor{package_name} package_name : 特性ファイル㮠@ref{global_traits:exam_packages, @code{exam_packages}} ã«æŒ‡å®šã—ãŸæ–‡å­—列 @end example @subheading @bullet{ ファイル毎ã®è­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸æŠ‘止注釈} @example @anchor{file_wise_suppressor_annotation} file_wise_suppressor_annotation : "/*" @ref{file_wise_suppressor_head} @ref{message_specifier_list} "*/" | "//" @ref{file_wise_suppressor_head} @ref{message_specifier_list} @anchor{file_wise_suppressor_head} file_wise_suppressor_head : "ADLINT:SF" @end example @subheading @bullet{ 行毎ã®è­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸æŠ‘止注釈} @example @anchor{line_wise_suppressor_annotation} line_wise_suppressor_annotation : "/*" @ref{line_wise_suppressor_head} @ref{message_specifier_list} "*/" | "//" @ref{line_wise_suppressor_head} @ref{message_specifier_list} @anchor{line_wise_suppressor_head} line_wise_suppressor_head : "ADLINT:SL" @end example @subheading @bullet{ サンプルコード} @verbatim /* ADLINT:SF:[W0001,W0002] (to suppress W0001 and W0002 of all exam-packages in this file.) */ #include 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); } @end verbatim @node Output @chapter 出力仕様 @menu * 出力ファイル:Output Files. * 共通定義:Common. * メトリクスファイル:Metrics File. * メッセージファイル:Message File. @end menu @node Output Files @section 出力ファイル シングルモジュール解æžã®çµæžœã‚’ã€ä¸‹è¨˜ 4 種類ã®ãƒ•ァイルã«å‡ºåŠ›ã—ã¾ã™ã€‚ @multitable @columnfractions .01 .2 .2 .3 @headitem No. @tab åç§° @tab ファイルå @tab 内容 @item 1 @tab プリプロセス済ã¿ã‚½ãƒ¼ã‚¹ @tab @file{<æ‹¡å¼µå­ã‚’除ã„ãŸã‚½ãƒ¼ã‚¹ãƒ•ァイルå>.i} @tab # ã§å§‹ã¾ã‚‹è¡Œã¯ãƒ©ã‚¤ãƒ³ãƒžãƒ¼ã‚«ãƒ¼ã§ã™ã€‚ @item 2 @tab @ref{Metrics File, メトリクスファイル} @tab @file{<ソースファイルå>.met.csv} @tab メトリクスã€ã‚³ãƒ¼ãƒ‰æƒ…報を CSV å½¢å¼ã§å‡ºåŠ›ã—ã¾ã™ã€‚ @item 3 @tab @ref{Message File, メッセージファイル} @tab @file{<ソースファイルå>.msg.csv} @tab エラーã€è­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ CSV å½¢å¼ã§å‡ºåŠ›ã—ã¾ã™ã€‚ @item 4 @tab ログファイル @tab @file{<ソースファイルå>.log} @tab シングルモジュール解æžå‡¦ç†ã®ãƒ­ã‚°ã‚’出力ã—ã¾ã™ã€‚ @end multitable クロスモジュール解æžã®çµæžœã‚’ã€ä¸‹è¨˜ 3 種類ã®ãƒ•ァイルã«å‡ºåŠ›ã—ã¾ã™ã€‚ @multitable @columnfractions .01 .2 .2 .3 @headitem No. @tab åç§° @tab ファイルå @tab 内容 @item 1 @tab @ref{Metrics File, メトリクスファイル} @tab @file{<プロジェクトå>.met.csv} @tab メトリクス情報を CSV å½¢å¼ã§å‡ºåŠ›ã—ã¾ã™ã€‚ @item 2 @tab @ref{Message File, メッセージファイル} @tab @file{<プロジェクトå>.msg.csv} @tab 警告メッセージを CSV å½¢å¼ã§å‡ºåŠ›ã—ã¾ã™ã€‚ @item 3 @tab ログファイル @tab @file{<プロジェクトå>.log} @tab クロスモジュール解æžå‡¦ç†ã®ãƒ­ã‚°ã‚’出力ã—ã¾ã™ã€‚ @end multitable @node Common @section 共通定義 @example @anchor{version_number} version_number : @ref{major_version} '.' @ref{minor_version} '.' @ref{patch_level} @anchor{major_version} major_version : 整数値 @anchor{minor_version} minor_version : 整数値 @anchor{patch_level} patch_level : 整数値 @anchor{exec_timestamp} exec_timestamp : å¹´ '-' 月 '-' æ—¥ ' ' 時 ':' 分 ':' ç§’ ':' タイムゾーン @anchor{exec_working_directory} exec_working_directory : è§£æžã‚’実行ã—ãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ãƒ•ルパスå @anchor{new_line} new_line : 実行環境ä¾å­˜ã®æ”¹è¡Œæ–‡å­—列 @anchor{file_path} file_path : 実行環境ä¾å­˜ã®ãƒ•ァイルパスå @anchor{line_no} line_no : 整数値 @anchor{lines} lines : 整数値 @anchor{column_no} column_no : 整数値 @anchor{location} location : @ref{file_path} ',' @ref{line_no} ',' @ref{column_no} @anchor{function_identifier} function_identifier : @ref{function_name} ',' @ref{function_signature} @anchor{function_name} function_name : c_identifier @anchor{function_signature} function_signature : c_declaration_specifiers c_declarator @anchor{function_linkage_type} function_linkage_type : 'I' <- Internal | 'X' <- eXternal @anchor{function_scope_type} function_scope_type : 'F' <- File | 'B' <- Block @anchor{function_declaration_type} function_declaration_type : 'E' <- Explicit | 'I' <- Implicit @anchor{type_name} type_name : c_identifier @anchor{type_rep} type_rep : c_declaration @anchor{variable_name} variable_name : c_identifier @anchor{initializer_rep} initializer_rep : c_initializer @anchor{assignment_rep} assignment_rep : c_assignment_operator c_assignment_expression @anchor{macro_name} macro_name : c_identifier @anchor{macro_value} macro_value : | @ref{pp_tokens} @anchor{pp_tokens} pp_tokens : c_pp_tokens @anchor{exam_package_name} exam_package_name : ä»»æ„ã®æ–‡å­—列 @anchor{message_id} message_id : 'W' [0-9]@{4@} | 'E' [0-9]@{4@} | 'C' [0-9]@{4@} @anchor{message_category} message_category : [A-Z]@{3@} @anchor{message_severity} message_severity : [A-Z][0-9]@{2@} @anchor{message_text} message_text : ä»»æ„ã®æ–‡å­—列 @end example @node Metrics File @section メトリクスファイル @itemize @item @ref{Output_Metrics_Ver, ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ¬ã‚³ãƒ¼ãƒ‰} @item @ref{Output_Metrics_Dcl, 宣言レコード} @item @ref{Output_Metrics_Def, 定義レコード} @item @ref{Output_Metrics_Ini, åˆæœŸåŒ–レコード} @item @ref{Output_Metrics_Asn, 代入å¼ãƒ¬ã‚³ãƒ¼ãƒ‰} @item @ref{Output_Metrics_Dep, ä¾å­˜ãƒ¬ã‚³ãƒ¼ãƒ‰} @item @ref{Output_Metrics_Lit, リテラルレコード} @item @ref{Output_Metrics_Pre, プリプロセスレコード} @item @ref{Output_Metrics_Met, メトリック値レコード} @end itemize @anchor{Output_Metrics_Ver} @subsection ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ¬ã‚³ãƒ¼ãƒ‰ @example @anchor{metrics_version_record} metrics_version_record : @ref{metrics_version_head} ',' @ref{version_number} ',' @ref{exec_timestamp} ',' @ref{exec_working_directory} @anchor{metrics_version_head} metrics_version_head : "VER" @end example @anchor{Output_Metrics_Ver_Sample} @subheading @bullet{ 出力例} @example VER,0.6.4,2012-02-16 14:10:59 +0900,/home/yanoh/intro_demo @end example @anchor{Output_Metrics_Dcl} @subsection 宣言レコード @example @anchor{declaration_record} declaration_record : @ref{declaration_head} ',' @ref{location} ',' @ref{typedcl_record_body} | @ref{declaration_head} ',' @ref{location} ',' @ref{gvardcl_record_body} | @ref{declaration_head} ',' @ref{location} ',' @ref{funcdcl_record_body} @anchor{declaration_head} declaration_head : "DCL" @end example @subheading @bullet{ 型宣言レコード} @example @anchor{typedcl_record_body} typedcl_record_body : 'T' ',' @ref{typedcl_type} ',' @ref{type_name} ',' @ref{type_rep} @anchor{typedcl_type} typedcl_type : 'T' <- typedef | 'S' <- struct | 'U' <- union | 'E' <- enum @end example @subheading @bullet{ 外部変数宣言レコード} @example @anchor{gvardcl_record_body} gvardcl_record_body : 'V' ',' @ref{variable_name} ',' @ref{type_rep} @end example @subheading @bullet{ 関数宣言レコード} @example @anchor{funcdcl_record_body} funcdcl_record_body : 'F' ',' @ref{function_linkage_type} ',' @ref{function_scope_type} ',' @ref{function_declaration_type} ',' @ref{function_identifier} @end example @anchor{Output_Metrics_Dcl_Sample} @subheading @bullet{ 出力例} @verbatim 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); @end verbatim @example 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) @end example @anchor{Output_Metrics_Def} @subsection 定義レコード @example @anchor{definition_record} definition_record : @ref{definition_head} ',' @ref{location} ',' @ref{vardef_record_body} | @ref{definition_head} ',' @ref{location} ',' @ref{fundef_record_body} | @ref{definition_head} ',' @ref{location} ',' @ref{macrodef_record_body} | @ref{definition_head} ',' @ref{location} ',' @ref{labeldef_record_body} @anchor{definition_head} definition_head : "DEF" @end example @subheading @bullet{ 変数定義レコード} @example @anchor{vardef_record_body} vardef_record_body : 'V' ',' @ref{variable_linkage_type} ',' @ref{variable_scope_type} ',' @ref{storage_class_type} ',' @ref{variable_name} ',' @ref{type_rep} @anchor{variable_linkage_type} variable_linkage_type : 'I' <- Internal | 'X' <- eXternal | 'N' <- None @anchor{variable_scope_type} variable_scope_type : 'F' <- File | 'B' <- Block | 'P' <- Parameter @anchor{storage_class_type} storage_class_type : 'A' <- Auto | 'R' <- Register | 'S' <- Static | 'N' <- None @end example @subheading @bullet{ 関数定義レコード} @example @anchor{fundef_record_body} fundef_record_body : 'F' ',' @ref{function_linkage_type} ',' @ref{function_scope_type} ',' @ref{function_identifier} ',' @ref{lines} @end example @subheading @bullet{ マクロ定義レコード} @example @anchor{macrodef_record_body} macrodef_record_body : 'M' ',' @ref{macro_name} ',' @ref{macro_form_type} @anchor{macro_form_type} macro_form_type : 'O' <- Object | 'F' <- Function @end example @subheading @bullet{ ラベル定義レコード} @example @anchor{labeldef_record_body} labeldef_record_body : 'L' ',' @ref{label_name} @anchor{label_name} label_name : c_identifier @end example @anchor{Output_Metrics_Def_Sample} @subheading @bullet{ 出力例} @verbatim 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)) @end verbatim @example 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 @end example @anchor{Output_Metrics_Ini} @subsection åˆæœŸåŒ–レコード @example @anchor{initialization_record} initialization_record : @ref{initialization_head} ',' @ref{location} ',' @ref{variable_name} ',' @ref{initializer_rep} @anchor{initialization_head} initialization_head : "INI" @end example @anchor{Output_Metrics_Ini_Sample} @subheading @bullet{ 出力例} @verbatim 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: } @end verbatim @example 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 @end example @anchor{Output_Metrics_Asn} @subsection 代入å¼ãƒ¬ã‚³ãƒ¼ãƒ‰ @example @anchor{assignment_record} assignment_record : @ref{assignment_head} ',' @ref{location} ',' @ref{variable_name} ',' @ref{assignment_rep} @anchor{assignment_head} assignment_head : "ASN" @end example @anchor{Output_Metrics_Asn_Sample} @subheading @bullet{ 出力例} @verbatim 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: } @end verbatim @example ASN,test.c,5,12,i,= 0 ASN,test.c,7,15,i,+= 1 @end example @anchor{Output_Metrics_Dep} @subsection ä¾å­˜ãƒ¬ã‚³ãƒ¼ãƒ‰ @example @anchor{dependency_record} dependency_record : @ref{dependency_head} ',' @ref{location} ',' @ref{include_record_body} | @ref{dependency_head} ',' @ref{location} ',' @ref{call_record_body} | @ref{dependency_head} ',' @ref{location} ',' @ref{xref_record_body} @anchor{dependency_head} dependency_head : "DEP" @end example @subheading @bullet{ インクルードレコード} @example @anchor{include_record_body} include_record_body : 'I' ',' @ref{included_fpath} @anchor{included_fpath} included_fpath : '<' @ref{file_path} '>' | '"' @ref{file_path} '"' @end example @subheading @bullet{ 呼ã³å‡ºã—レコード} @example @anchor{call_record_body} call_record_body : 'C' ',' @ref{caller_function} ',' @ref{callee_function} @anchor{caller_function} caller_function : @ref{function_identifier} @anchor{callee_function} callee_function : @ref{function_identifier} @end example @subheading @bullet{ 外部å‚照レコード} @example @anchor{xref_record_body} xref_record_body : 'X' ',' xref_variable_record_body | 'X' ',' xref_function_record_body @anchor{xref_variable_record_body} xref_variable_record_body : 'V' ',' @ref{accessor_function} ',' @ref{access_type} ',' @ref{accessee_variable} @anchor{xref_function_record_body} xref_function_record_body : 'F' ',' @ref{accessor_function} ',' @ref{access_type} ',' @ref{accessee_function} @anchor{accessor_function} accessor_function : @ref{function_identifier} @anchor{access_type} access_type : 'R' | 'W' @anchor{accessee_variable} accessee_variable : @ref{variable_name} @anchor{accessee_function} accessee_function : @ref{function_identifier} @end example @anchor{Output_Metrics_Dep_Sample} @subheading @bullet{ 出力例} @verbatim 1: #include 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: } @end verbatim @example DEP,test.c,1,1,I, 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 @end example @anchor{Output_Metrics_Lit} @subsection リテラルレコード @example @anchor{literal_record} literal_record : @ref{literal_head} ',' @ref{location} ',' @ref{literal_type} ',' @ref{literal_prefix} ',' @ref{literal_suffix} ',' @ref{literal_value} @anchor{literal_head} literal_head : "LIT" @anchor{literal_type} 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 @anchor{literal_prefix} literal_prefix : | 'l' | 'L' | '0' | '0x' | '0X' | '0b' | '0B' @anchor{literal_suffix} literal_suffix : | 'u' | 'U' | 'l' | 'L' | 'ul' | 'Ul' | 'uL' | 'UL' | 'ull' | 'Ull' | 'uLL' | 'ULL' | 'll' | 'LL' | 'f' | 'F' @anchor{literal_value} literal_value : c_constant | c_string_literal @end example @anchor{Output_Metrics_Lit_Sample} @subheading @bullet{ 出力例} @verbatim 1: unsigned int i = 0xFFU; 2: 3: int foo(long l) 4: { 5: const wchar_t *s = L"foobar"; 6: 7: return 0; 8: } @end verbatim @example LIT,test.c,1,18,HN,0x,U,0xFFU LIT,test.c,5,24,SW,L,,"L""foobar""" @end example @anchor{Output_Metrics_Pre} @subsection プリプロセスレコード @example @anchor{preprocess_record} preprocess_record : @ref{preprocess_head} ',' @ref{location} ',' @ref{pp_directive} ',' @ref{pp_tokens} @anchor{preprocess_head} preprocess_head : "PRE" @anchor{pp_directive} pp_directive : "#if" | "#ifdef" | "#ifndef" | "#elif" | "#else" | "#endif" | "#include" | "#define" | "#undef" | "#line" | "#error" | "#pragma" | "#" @end example @anchor{Output_Metrics_Pre_Sample} @subheading @bullet{ 出力例} @verbatim 1: #pragma once 2: 3: #if defined(NDEBUG) 4: void debug(const char *msg) {} 5: #else 6: #include 7: void debug(const char *msg) 8: { 9: puts(msg); 10: } 11: #endif @end verbatim @example 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, PRE,test.c,11,1,#endif, @end example @anchor{Output_Metrics_Met} @subsection メトリック値レコード @example @anchor{metric_record} metric_record : @ref{metric_head} ',' @ref{file_metric_record_body} | @ref{metric_head} ',' @ref{func_metric_record_body} @anchor{metric_head} metric_head : "MET" @anchor{file_metric_record_body} file_metric_record_body : @ref{file_metric_name} ',' @ref{file_path} ',' @ref{metric_value} @anchor{func_metric_record_body} func_metric_record_body : @ref{func_metric_name} ',' @ref{function_identifier} ',' @ref{location} ',' @ref{metric_value} @anchor{file_metric_name} file_metric_name : "FL_STMT" <- ステートメント数 | "FL_FUNC" <- é–¢æ•°ã®æ•° @anchor{func_metric_name} 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" <- サイクロマティック複雑度 @anchor{metric_value} metric_value : 整数値 @end example @node Message File @section メッセージファイル @example @anchor{message_file} message_file : @ref{message_version_record} | @ref{message_version_record} @ref{new_line} @ref{message_list} @anchor{message_version_record} message_version_record : 'V' ',' @ref{version_number} ',' @ref{exec_timestamp} ',' @ref{exec_working_directory} @anchor{message_list} message_list : @ref{error_record} | @ref{warning_record} | @ref{message_list} @ref{new_line} @ref{error_record} | @ref{message_list} @ref{new_line} @ref{warning_record} @anchor{error_record} error_record : @ref{error_line} @ref{new_line} @ref{context_line_list} @anchor{error_line} error_line : 'E' ',' @ref{file_path} ',' @ref{line_no} ',' @ref{column_no} ',' @ref{exam_package_name} ',' @ref{message_id} ',' @ref{message_category} ',' @ref{message_severity} ',' @ref{message_text} @anchor{warning_record} warning_record : @ref{warning_line} @ref{new_line} @ref{context_line_list} @anchor{warning_line} warning_line : 'W' ',' @ref{file_path} ',' @ref{line_no} ',' @ref{column_no} ',' @ref{exam_package_name} ',' @ref{message_id} ',' @ref{message_category} ',' @ref{message_severity} ',' @ref{message_text} @anchor{context_line_list} context_line_list : | @ref{context_line} @ref{new_line} @ref{context_line_list} @anchor{context_line} context_line : 'C' ',' @ref{file_path} ',' @ref{line_no} ',' @ref{column_no} ',' @ref{exam_package_name} ',' @ref{message_id} ',' @ref{message_category} ',' @ref{message_severity} ',' @ref{message_text} @end example @node Messages @chapter メッセージ一覧 @menu * X0001::䏿˜Žãªä¾‹å¤–æ¡ä»¶ `%s' を検出ã—ã¾ã—ãŸã€‚ * X0002::䏿­£ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ ID`%s' を検出ã—ã¾ã—ãŸã€‚ * X0003::回復ä¸èƒ½ãªã‚¨ãƒ©ãƒ¼ã«ã‚ˆã‚Šè§£æžå‡¦ç†ã‚’中断ã—ã¾ã—ãŸã€‚詳細㯠`%s' åŠã³ `%s' を確èªã—ã¦ä¸‹ã•ã„。 * X0004::䏿­£ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãƒ•ォーマット `%s' を検出ã—ã¾ã—ãŸã€‚ * E0004::対応ã™ã‚‹ #endif 行ãŒã‚りã¾ã›ã‚“。 * E0007::æ¡ä»¶å¼ä¸­ã®ãƒˆãƒ¼ã‚¯ãƒ³ `%s' ã§æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ã‚’検出ã—ã¾ã—ãŸã€‚æ¡ä»¶å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã™ã€‚ * E0008::トークン `%s' ã§æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ã‚’検知ã—ã¾ã—ãŸã€‚ * E0009::ヘッダファイル <%s> ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 * E0010::ヘッダファイル "%s" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 * E0013::å¼ã«æ–‡ã‚’å«ã‚ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 * E0014::ラベルã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–å¾—ã™ã‚‹ãŸã‚ã® && å˜é …演算å­ã¯ GCC ç‹¬è‡ªã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚ * E0015::ラベルã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’指定ã—㟠goto 文㯠GCC ç‹¬è‡ªã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚ * E0016::終了ã—ãªã„コメントブロックãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ * E0018::大域スコープã«ä½™åˆ†ãªã‚»ãƒŸã‚³ãƒ­ãƒ³ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ * W0001::括弧 `()' ã®ãƒã‚¹ãƒˆã®æ·±ã•㌠32 ã‚’è¶…ãˆã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯ã€ISO C90 æ¨™æº–è¦æ ¼ã«å޳坆ã«åˆè‡´ã—ã¦ã„ã¾ã›ã‚“。 * W0002::関数 `%s()' ã®å®šç¾©ã«ãŠã„ã¦ã€è­˜åˆ¥å­ã¨ä»®å¼•数宣言を分ã‘ã¦è¨˜è¿°ã™ã‚‹ã®ã¯ã€å¤ã„スタイルã§ã™ã€‚ * W0003::ã“ã® switch æ–‡ã«ã¯ default ラベルãŒå«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 * W0007::ç›´å‰ã® case 節ã‚ã‚‹ã„㯠default ç¯€ã®æœ«å°¾ã«ã€break æ–‡ã¾ãŸã¯ return æ–‡ãŒã‚りã¾ã›ã‚“。 * W0010::ã“ã®ä¸‰é …æ¼”ç®—å­ (æ¡ä»¶æ¼”ç®—å­) ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«å‰¯ä½œç”¨ãŒã‚りã¾ã™ã€‚ * W0013::ç¹°ã‚Šè¿”ã—æ–‡ã®ä¸­ã§ã€continue æ–‡ãŒä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚ * W0016::å¤‰æ›æŒ‡å®šå­ã®ãƒ•ィールド幅㌠509 文字を超ãˆã¦ã„ã¾ã™ã€‚ * W0017::å¤‰æ›æŒ‡å®šå­ã®ãƒ•ィールド幅㌠509 文字を超ãˆã¦ã„ã¾ã™ã€‚ * W0018::å¤‰æ›æŒ‡å®šå­ã®ç²¾åº¦å¹…㌠509 文字を超ãˆã¦ã„ã¾ã™ã€‚ * W0019::ã“ã®ãƒã‚¤ãƒ³ã‚¿ã‚­ãƒ£ã‚¹ãƒˆã¯ã€const 修飾を削除ã—ã¦ã„ã‚‹ã®ã§å±é™ºã§ã™ã€‚ * W0021::ã“ã®ãƒã‚¤ãƒ³ã‚¿ã‚­ãƒ£ã‚¹ãƒˆã¯ã€volatile 修飾を削除ã—ã¦ã„ã‚‹ã®ã§å±é™ºã§ã™ã€‚ * W0023::ãƒã‚¤ãƒ³ã‚¿åž‹ã®å¤‰æ•°ã«å¯¾ã—ã¦ç®—術演算ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ * W0024::ãƒã‚¤ãƒ³ã‚¿åž‹ã®å¤‰æ•°ã«å¯¾ã—ã¦ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã¾ãŸã¯ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ * W0025::`%s' ã¯ã€æ—¢ã«ã“ã®ãƒ•ァイルã‹ã‚‰ç›´æŽ¥ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã™ã€‚ * W0026::`%s' ã¯ã€æ—¢ã«ã“ã®ãƒ•ァイルã‹ã‚‰é–“接的ã«ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã™ã€‚ * W0027::ãƒã‚¤ãƒ³ã‚¿åž‹ã®å¤‰æ•°ã«å¯¾ã—ã¦æ¯”較演算ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ * W0028::NULL ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ * W0030::NULL ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ * W0031::仮引数 `%s' ã¯ã€ã“ã®é–¢æ•°ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã›ã‚“。 * W0033::ラベル `%s:' ã¯ã€ã“ã®é–¢æ•°ã®ä¸­ã§ä½¿ã‚れã¦ã„ãªã„ãŸã‚ã€å‰Šé™¤ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ * W0035::`&&' ã¾ãŸã¯ `||' ã®å³ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯ã€ç®—è¡“åž‹ã¾ãŸã¯ãƒã‚¤ãƒ³ã‚¿åž‹ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 * W0036::宣言å­ã®ä¸­ã®ä¿®é£¾å­ã®æ•°ãŒ 12 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 * W0037::構造体ã¾ãŸã¯å…±ç”¨ä½“ã®ãƒã‚¹ãƒˆãŒ 15 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 * W0038::オブジェクト `%s' ã®ã‚µã‚¤ã‚ºãŒ 32767 ãƒã‚¤ãƒˆã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 * W0039::ブロックã®ä¸­ã®ãƒ­ãƒ¼ã‚«ãƒ«ãªè­˜åˆ¥å­ã®æ•°ãŒ 127 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 * W0040::ビットフィールド㌠signed ã¾ãŸã¯ unsigned 付ãã§å®£è¨€ã•れã¦ã„ã¾ã›ã‚“。 * W0041::構造体ã¾ãŸã¯å…±ç”¨ä½“ã®ãƒ¡ãƒ³ãƒã®æ•°ãŒ 127 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 * W0042::åˆ—æŒ™å®šæ•°ã®æ•°ãŒ 127 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 * W0043::é…列ã®åˆæœŸå€¤ãŒã€å®£è¨€ã•れãŸé…列ã®ã‚µã‚¤ã‚ºã«è¶³ã‚Šã¾ã›ã‚“。残りã®é…列è¦ç´ ã¯ã‚¼ãƒ­ã§åˆæœŸåŒ–ã•れã¾ã™ã€‚ * W0049::制御構造ã®ãƒã‚¹ãƒˆãŒ 15 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 * W0050::case ãƒ©ãƒ™ãƒ«ã®æ•°ãŒ 257 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 * W0051::å¤–éƒ¨è­˜åˆ¥å­ `%s' ãŒä»–ã®è­˜åˆ¥å­åã¨ã€ãƒªãƒ³ã‚«ç‰¹æ€§ã§æŒ‡å®šã•ã‚ŒãŸæ–‡å­—æ•°ã®ç¯„囲内ã§åŒºåˆ¥ã§ãã¾ã›ã‚“。 * W0052::識別å­å `%s' ãŒä»–ã®è­˜åˆ¥å­åã¨ã€ã‚³ãƒ³ãƒ‘ã‚¤ãƒ©ç‰¹æ€§ã§æŒ‡å®šã•ã‚ŒãŸæ–‡å­—æ•°ã®ç¯„囲内ã§åŒºåˆ¥ã§ãã¾ã›ã‚“。 * W0053::`#include "%s"' ã®ãƒã‚¹ãƒˆãŒ 8 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 * W0054::`#if...' ã®ãƒã‚¹ãƒˆã®æœ€å¤§å€¤ãŒ 8 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 * W0055::ãƒžã‚¯ãƒ­å®šç¾©ã®æ•°ãŒ 1024 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 * W0056::関数形å¼ãƒžã‚¯ãƒ­ã®ä»®å¼•æ•°ã®æ•°ãŒ 31 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 * W0057::関数形å¼ãƒžã‚¯ãƒ­ã®å‘¼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒ 31 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 * W0058::æ–‡å­—åˆ—ãƒªãƒ†ãƒ©ãƒ«ã®æ–‡å­—数㌠509 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 * W0059::ã“ã®ãƒ•ァイルã®è¡Œæœ«ã« Ctrl-M(^M) 制御文字ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ * W0060::ã“ã®ãƒ•ァイル内㫠Ctrl-Z(^Z) 制御文字ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ * W0061::`%s' 㯠ISO C æ¨™æº–è¦æ ¼ã®æ­£å¼ãªäºˆç´„語ã§ã¯ã‚りã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—無視ã—ã¾ã™ã€‚ * W0062::`__typeof__' 㯠ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚ * W0063::`__alignof__' 㯠ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚ * W0064::2 進数整数リテラルãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ * W0065::代入演算å­ã®å·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã‚’キャストã—ã¦ã¯ãªã‚Šã¾ã›ã‚“。 * W0066::`main()' 関数ã¯ã€`int (void)' ã¾ãŸã¯ `int (int, char *[])' ã®ã©ã¡ã‚‰ã‹ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 * W0067::ãƒã‚¹ãƒˆã•ã‚ŒãŸæ§‹é€ ä½“ã®ãƒ¡ãƒ³ãƒã«ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ * W0068::ビットã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã« `.' を使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ * W0069::`/*' ã§å§‹ã¾ã‚‹ã‚³ãƒ¡ãƒ³ãƒˆã®ä¸­ã« `/*' ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ãƒã‚¹ãƒˆã•れãŸã‚³ãƒ¡ãƒ³ãƒˆã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã¯èªã‚られã¦ã„ã¾ã›ã‚“。 * W0070::インクルードã•れã¦ã„ã‚‹ <%s> ã®å†…容ã¯ç¿»è¨³å˜ä½ã®ä¸­ã§å…¨ãå‚ç…§ã•れã¦ã„ã¾ã›ã‚“。削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ * W0071::インクルードã•れã¦ã„ã‚‹ "%s" ã®å†…容ã¯ç¿»è¨³å˜ä½ã®ä¸­ã§å…¨ãå‚ç…§ã•れã¦ã„ã¾ã›ã‚“。削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ * W0072::基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ãƒ˜ãƒƒãƒ€ãƒ•ァイルåã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0073::ã“ã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ•ァイルã«ã¯ã€ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã‚¬ãƒ¼ãƒ‰ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 * W0076::ã“ã® 16 進整数リテラルã«ã¯ã€æŽ¥å°¾èªž `U' ã¾ãŸã¯ `u' ãŒä»˜ã‘られã¦ã„ã¾ã›ã‚“。 * W0077::接尾語ã¨ã—ã¦å°æ–‡å­—ã® `l' ãŒæ•´æ•°ã¾ãŸã¯æµ®å‹•å°æ•°ç‚¹æ•°ã«ä»˜ã‘られã¦ã„ã¾ã™ã€‚ * W0078::仮引数並ã³ãŒãªã„関数ãŒå®£è¨€ã•れã¦ã„ã¾ã™ã€‚ * W0079::ã“ã®é…列ã¯ã€åˆæœŸå€¤ã®æ–‡å­—列リテラルã®çµ‚端文字 `\0' ã‚’ä¿æŒã§ãã¾ã›ã‚“。 * W0080::const 修飾ã•れãŸã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトãŒã€æ˜Žç¤ºçš„ã«åˆæœŸåŒ–ã•れãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚ * W0081::å˜é …æ¼”ç®—å­ `-' ã‚’ unsigned int åž‹ã€unsigned long åž‹ã€unsigned long long åž‹ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«å¯¾ã—ã¦ä½¿ã†ã¨ã€ç¬¦å·ç„¡ã—åž‹ã«ãªã£ã¦ã—ã¾ã„ã¾ã™ã€‚ * W0082::å˜é …æ¼”ç®—å­ `-' を符å·ç„¡ã—ã®æ½œåœ¨åž‹ `%s' ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«å¯¾ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ * W0084::ã“ã®ã‚«ãƒ³ãƒžæ¼”ç®—å­ `,' ã®å·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«ã¯å‰¯ä½œç”¨ã‚’ã‚‚ã¤å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 * W0085::ã“ã®æ–‡ã«ã¯å‰¯ä½œç”¨ãŒã‚りã¾ã›ã‚“。誤りã®ã‚ã‚‹å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚ * W0086::ä¸‰é …æ¼”ç®—å­ (æ¡ä»¶æ¼”ç®—å­) ã®ä¸­ã§ã€2 番目ã‚ã‚‹ã„㯠3 番目ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ * W0087::カンマ演算å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ * W0088::è«–ç†æ¼”ç®—å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ * W0093::ゼロã§é™¤ç®—ã•れるæã‚ŒãŒã‚りã¾ã™ã€‚ * W0096::ゼロã«ãªã‚‹å®šæ•°å¼ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚ * W0097::ゼロã®å€¤ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚ * W0100::変数 `%s' ã¯åˆæœŸå€¤ã‚’設定後ã«å†ä»£å…¥ã•れã¾ã›ã‚“。変数を const 付ãã§åˆæœŸå€¤ã‚’指定ã—ã¦å®šç¾©ã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ * W0101::自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€ã‚ˆã‚Šé•·ã„寿命をæŒã¤ãƒã‚¤ãƒ³ã‚¿ã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ * W0102::自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€é–¢æ•°ã®ä»®å¼•数を介ã—ã¦æˆ»ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ * W0103::自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€æˆ»ã‚Šå€¤ã¨ã—ã¦é–¢æ•°ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ * W0104::仮引数 `%s' ã¯å€¤ãŒå¤‰ã‚りã¾ã›ã‚“。const 付ãã§å®£è¨€ã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ * W0105::ãƒã‚¤ãƒ³ã‚¿ä»®å¼•æ•° `%s' ãŒæŒ‡ã—ã¦ã„るオブジェクトã¯é–¢æ•°å†…ã§å¤‰ã‚らãªã„ã®ã§ã€const オブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿åž‹ã¨ã—ã¦å®£è¨€ã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ * W0107::自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€static 付ãローカルãƒã‚¤ãƒ³ã‚¿ã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ * W0108::代入演算å­ãŒè«–ç†æ¼”ç®—å¼ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0109::ã“ã®é–¢æ•°ã®å®£è¨€ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。çœç•¥ã•れãŸã‚‚ã®ã¨ã¿ãªã—ã€`extern int %s()' を挿入ã—ã¾ã™ã€‚ * W0110::æµ®å‹•å°æ•°ç‚¹åž‹ã®å¤‰æ•°ãŒ for æ–‡ã®ãƒ«ãƒ¼ãƒ—カウンタã¨ã—ã¦ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0112::æµ®å‹•å°æ•°ç‚¹ã®å¼ã‚’等価演算å­ã§æ¯”較ã—ã¦ã„ã¾ã™ã€‚ * W0114::ã“ã®åˆ¶å¾¡å¼ã¯æ˜Žç¤ºçš„ãªè«–ç†æ¼”ç®—ã§ã¯ã‚りã¾ã›ã‚“。 * W0115::符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã¾ã™ã€‚ * W0116::符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã‚‹æã‚ŒãŒã‚りã¾ã™ã€‚ * W0117::`%s' ã®å®šç¾©ã¯å¤–部çµåˆã‚’æŒã¡ã¾ã™ãŒã€å®šç¾©ã‚ˆã‚Šå‰ã«ãã®å®£è¨€ãŒã‚りã¾ã›ã‚“。 * W0118::外部çµåˆã‚’æŒã¤ `%s' ã®å®£è¨€ãŒã€ãƒ˜ãƒƒãƒ€ãƒ•ァイルã®ä¸­ã«ã‚りã¾ã›ã‚“。 * W0119::暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0120::暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0121::暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0122::暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0123::暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0124::暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0125::暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0126::暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0127::暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0128::暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0129::暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0130::暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0131::暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0132::暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0133::暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0134::暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0135::暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0136::暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0137::暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0138::暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0139::暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0140::暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0141::暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0142::暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0143::暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0144::暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0145::暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0146::暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0147::暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0148::暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0149::暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0150::暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0151::暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0152::暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0153::暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0154::暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0155::暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0156::暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0157::暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0158::暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0159::暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0160::暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0161::暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0162::暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0163::暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0164::暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0165::暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0166::暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0167::暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0168::暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0169::暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0170::暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0171::暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0172::暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0173::暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0174::暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0175::暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0176::暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0177::暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0178::暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0179::暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0180::暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0181::暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0182::暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0183::暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0184::暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0185::暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0186::暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0187::暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0188::暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0189::暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0190::暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0191::暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0192::暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0193::暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0194::暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0195::暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0196::暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0197::暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0198::暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0199::暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0200::暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0201::暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0202::暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0203::暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0204::暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0205::暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0206::暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0207::暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0208::暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0209::暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0210::暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0211::暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0212::暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0213::暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0214::暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0215::暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0216::暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0217::暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0218::暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0219::暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0220::暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0221::暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0222::暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0223::暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0224::暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0225::暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0226::暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0227::暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0228::暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0229::暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0230::暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0231::暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0232::暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0233::暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0234::暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0235::暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0236::暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0237::暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0238::暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0239::暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0240::暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0241::暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0242::暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0243::暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0244::暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0245::暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0246::暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0247::暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0248::暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0249::暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0250::暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0251::暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0252::暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0253::暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0254::暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0255::char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0256::char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0257::char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0258::char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0259::char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0260::char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0261::char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0262::char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0263::char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0264::char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0265::char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0266::char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0267::char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0268::unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0269::signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0270::signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0271::unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0272::signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0273::unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0274::signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0275::unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0276::signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0277::unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0278::unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0279::unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0280::unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0281::unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0282::unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0283::unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0284::unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0285::unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0286::unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0287::unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0288::unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0289::unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0290::unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0291::unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0292::unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0293::signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0294::signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0295::signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0296::signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0297::signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0298::signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0299::signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0300::signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0301::signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0302::signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0303::signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0304::signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0305::signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0306::signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0307::signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0308::signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0309::signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0310::signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0311::signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0312::signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0313::signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0314::signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0315::signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0316::signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0317::signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0318::unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0319::unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0320::unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0321::signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0322::signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0323::signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0324::signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0325::signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0326::signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0327::unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0328::unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0329::unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0330::signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0331::signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0332::signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0333::unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0334::unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0335::unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0336::signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0337::signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0338::signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0339::unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0340::unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0341::unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0342::signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0343::signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0344::signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0345::unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0346::unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0347::unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0348::float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0349::float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0350::float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0351::float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0352::float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0353::float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0354::float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0355::float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0356::float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0357::double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0358::double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0359::double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0360::double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0361::double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0362::double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0363::double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0364::double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0365::double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0366::long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0367::long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0368::long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0369::long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0370::long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0371::long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0372::long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0373::long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0374::long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0375::float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0376::float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0377::double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0378::double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0379::long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0380::long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0381::signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0382::unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0383::signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0384::signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0385::unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0386::unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0387::signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0388::signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0389::signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0390::unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0391::unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0392::unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0393::signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0394::signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0395::signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0396::signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0397::unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0398::unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0399::unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0400::unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0401::unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0402::unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0403::unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0404::unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0405::unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0406::unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0407::unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0408::unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0409::unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0410::unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0411::列挙体ã¯ã€æœ€åˆã ã‘åˆæœŸåŒ–ã™ã‚‹ã‹ã€å…¨ã¦ã‚’åˆæœŸåŒ–ã™ã‚‹ã‹ã€å…¨ãåˆæœŸåŒ–ã—ãªã„ã‹ã®ã„ãšã‚Œã‹ã«ã—ã¦ãã ã•ã„。 * W0413::åˆ¶å¾¡æ–‡ã®æœ¬ä½“㌠`@{@}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックã«ãªã£ã¦ã„ã¾ã›ã‚“。 * W0414::åˆ¶å¾¡æ–‡ã®æœ¬ä½“ãŒåŒã˜è¡Œã«ã‚りã€`@{@}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックã«ãªã£ã¦ã„ã¾ã›ã‚“。 * W0421::値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ * W0422::値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ * W0423::値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚ * W0424::値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚ * W0425::一ã¤ã®è¡Œã«è¤‡æ•°ã®å®£è¨€ã¾ãŸã¯æ–‡ãŒå­˜åœ¨ã—ã¾ã™ã€‚ * W0431::ã“ã®è¡Œã¯ä»¥å‰ã®åŒã˜æ·±ã•ã®ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã‚ˆã‚Šå·¦ã«ãšã‚Œã¦ã„ã¾ã™ã€‚ * W0432::ã“ã®è¡Œã¯ãƒ—ロジェクトã®ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã‚¹ã‚¿ã‚¤ãƒ«ã¨åˆã£ã¦ã„ã¾ã›ã‚“。 * W0440::ã“ã®é–‰ã˜ã‚«ãƒƒã‚³ `@}' ã¯ã€å¯¾å¿œã™ã‚‹é–‹ãカッコ `@{' ã«åˆã†ã‚ˆã†ãªã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã«ç½®ã‹ã‚Œã¦ã„ã¾ã›ã‚“。 * W0441::接尾辞ãŒãªã„整数リテラルã®åž‹ãŒã€int åž‹ã§ã¯ã‚りã¾ã›ã‚“。 * W0442::関数形å¼ãƒžã‚¯ãƒ­ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ * W0443::ã“ã®é–¢æ•°å½¢å¼ãƒžã‚¯ãƒ­ã¯é–¢æ•°ã§ç½®ãæ›ãˆã‚‹ã“ã¨ãŒã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ * W0444::`#' 演算å­ã¨ `##' 演算å­ãŒä¸€ã¤ã®ãƒžã‚¯ãƒ­å®šç¾©å†…ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0445::複数㮠`##' 演算å­ãŒä¸€ã¤ã®ãƒžã‚¯ãƒ­å®šç¾©å†…ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0446::代入演算ã®çµæžœå€¤ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0447::カンマ演算å­ãŒ for æ–‡ã®åˆ¶å¾¡å¼ä»¥å¤–ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0456::外部çµåˆã‚’æŒã¤ã‚ªãƒ–ジェクトã‚ã‚‹ã„ã¯é–¢æ•° `%s' ãŒã€ãƒ˜ãƒƒãƒ€ãƒ•ァイル内ã§å®šç¾©ã•れã¦ã„ã¾ã™ã€‚ * W0457::関数ã®å®£è¨€ã‚ã‚‹ã„ã¯å®šç¾©ã§ã€æˆ»ã‚Šå€¤åž‹ãŒæ˜Žç¤ºçš„ã«å®šç¾©ã•れã¦ã„ãªã„ã®ã§ã€æš—黙的㫠int åž‹ã¨å®šç¾©ã•れã¾ã™ã€‚ * W0458::オブジェクトã®å®£è¨€ã‚ã‚‹ã„ã¯å®šç¾©ã§ã€åž‹ãŒæ˜Žç¤ºçš„ã«å®šç¾©ã•れã¦ã„ãªã„ã®ã§ã€æš—黙的㫠int åž‹ã¨å®šç¾©ã•れã¾ã™ã€‚ * W0459::変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ * W0460::変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ * W0461::値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ * W0462::値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ * W0477::マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`@{@}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚ * W0478::ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ * W0479::ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ * W0480::ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€ã‚ã‚‹ã„ã¯å¥èª­æ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚ * W0481::ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`@{@}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚ * W0482::ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ * W0483::ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ * W0488::関数呼ã³å‡ºã— `()'ã€é…列添字演算 `[]'ã€ã‚ã‚‹ã„ã¯æ§‹é€ ä½“/å…±ç”¨ä½“ãƒ¡ãƒ³ãƒæ¼”ç®— `->' ã¾ãŸã¯ `.' ãŒã€&& ã‚ã‚‹ã„㯠|| ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ * W0489::å˜é …演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ * W0490::二項演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ * W0491::åŒã˜è­˜åˆ¥å­å `%s' ã¯ä»–ã®åå‰ç©ºé–“内ã®å®£è¨€ã§ã‚‚使ã‚れã¦ã„ã¾ã™ã€‚ * W0492::åŒã˜è­˜åˆ¥å­å `%s' ãŒæ§‹é€ ä½“/共用体ã®ãƒ¡ãƒ³ãƒã®ä»–ã«ã€ãƒ©ãƒ™ãƒ«ã€ã‚¿ã‚°ã€ã¾ãŸã¯é€šå¸¸ã®è­˜åˆ¥å­ã¨ã—ã¦ã‚‚使ã‚れã¦ã„ã¾ã™ã€‚ * W0493::構造体ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®å€¤ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã—ã¦ã„ã¾ã™ã€‚ * W0495::æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ * W0496::三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ * W0497::シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ * W0498::äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ * W0499::+ - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ * W0500::äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ * W0501::三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ * W0502::+ - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ * W0508::`&&' ã‚ã‚‹ã„㯠`||' 演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«å‰¯ä½œç”¨ãŒã‚りã¾ã™ã€‚ * W0511::C++ コメント `//' ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0512::`++' ã‚ã‚‹ã„㯠`--' 演算å­ã®çµæžœãŒå¼ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0525::1 ビットã®åå‰ãŒä»˜ã„ãŸãƒ•ィールドãŒç¬¦å·ä»˜ãåž‹ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ * W0528::ã“ã®ãƒžã‚¯ãƒ­ã¯ã€8 進数定数を定義ã—ã¦ã„ã¾ã™ã€‚ * W0529::8 進数リテラルãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0530::文字定数ã¾ãŸã¯æ–‡å­—列リテラルã®ä¸­ã§ã€8 進拡張表記ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0532::switch 文㮠case 節ã€default 節ã‹ã‚‰å‡ºã‚‹ãŸã‚ã« break æ–‡ãŒä½¿ã‚れã¦ã„ã¾ã™ãŒã€case ç¯€ã®æœ«å°¾ã«è¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 * W0534::制御変数 `%s' ã¯ã€ã“ã® for 文制御å¼ã§åˆæœŸåŒ–ã•れã¦ã„ã¾ã›ã‚“。 * W0535::for æ–‡ã®åˆ¶å¾¡å¼ã®ä¸­ã«ã‚«ãƒ³ãƒžæ¼”ç®—å­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0538::ã“ã® default ラベルã¯ã€switch æ–‡å†…ã®æœ€å¾Œã®ãƒ©ãƒ™ãƒ«ã§ã¯ã‚りã¾ã›ã‚“。 * W0540::空ã®ä»®å¼•数並ã³ã®é–¢æ•°ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚`void' ãŒçœç•¥ã•れã¦ã„ã¾ã™ã€‚ * W0541::マクロã§éš è”½ã•れãªã„インラインアセンブリコードã§ã™ã€‚ * W0542::関数宣言ã®ä»®å¼•æ•°ã®ä¸€éƒ¨ã«ã®ã¿è­˜åˆ¥å­ãŒå­˜åœ¨ã—ã¾ã™ã€‚ * W0543::ã“ã®é–¢æ•°å®£è¨€ã«ãŠã‘る仮引数ã®è­˜åˆ¥å­ã¯ã€ä»¥å‰ã®å®£è¨€ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ã¨ç•°ãªã‚Šã¾ã™ã€‚ * W0544::関数宣言ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ã¨é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã®å®£è¨€ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ãŒç•°ãªã‚Šã¾ã™ã€‚ * W0546::switch 文㮠case ラベルã‚ã‚‹ã„㯠default ラベルãŒã€ãƒã‚¹ãƒˆã•れãŸãƒ–ロックã®ä¸­ã«å­˜åœ¨ã—ã¾ã™ã€‚ * W0549::マクロã®ä»®å¼•数㌠`()' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 * W0551::共用体型指定å­ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ * W0552::共用体型ã®ã‚ªãƒ–ジェクトãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ * W0553::関数を指ã™ãƒã‚¤ãƒ³ã‚¿ãŒã€ç•°ãªã‚‹é–¢æ•°ãƒã‚¤ãƒ³ã‚¿åž‹ã¸ã‚­ãƒ£ã‚¹ãƒˆã•れã¦ã„ã¾ã™ã€‚ * W0554::`#pragma' ã®å®Ÿå¼•æ•° `%s' ã¯èªè­˜ã§ãã¾ã›ã‚“。ã“ã® `#pragma' 指令ã¯ç„¡è¦–ã•れã¾ã—ãŸã€‚ * W0555::ã“ã®é–¢æ•°ã¯ãƒ—ロジェクト中ã§é–“接的ã«å†å¸°å‘¼ã³å‡ºã—ã•れã¦ã„ã¾ã™ã€‚ * W0556::ã“ã®å‘¼ã³å‡ºã—ã‚’å«ã‚€é–¢æ•°ã¯ã€å†å¸°å‘¼ã³å‡ºã—ã•れã¦ã„ã¾ã™ã€‚ * W0559::`!' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒç®—術演算ã‚ã‚‹ã„ã¯ãƒ“ット演算ã®å¼ã«ãªã£ã¦ã„ã¾ã™ã€‚ * W0560::`~' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ–ール型å¼ã«ãªã£ã¦ã„ã¾ã™ã€‚ * W0561::`*p++' ã®æ„味ã¯ã€`(*p)++' ã§ã¯ãªãã€`*(p++)' ã§ã™ã€‚`*' 演算å­ã¯å†—é•·ã§ã™ã€‚ * W0562::åˆæœŸåŒ–å­ã®ä¸­ã«ä½™åˆ†ãª `@{@}' ãŒã‚りã¾ã™ã€‚ * W0563::ã“ã®ãƒ–ロックã®å¤–å´ã‹ã‚‰ãƒ©ãƒ™ãƒ« `%s' ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ãŸå ´åˆã€ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¯åˆæœŸåŒ–ã•れã¾ã›ã‚“。 * W0564::ã“ã® goto æ–‡ãŒãƒ©ãƒ™ãƒ« `%s' ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ãŸå ´åˆã€ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¯åˆæœŸåŒ–ã•れã¾ã›ã‚“。 * W0565::汎整数型を volatile ãƒã‚¤ãƒ³ã‚¿åž‹(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ * W0566::汎整数型を関数ãƒã‚¤ãƒ³ã‚¿åž‹(ã¾ãŸã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ * W0567::汎整数型をオブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ * W0568::符å·ä»˜ã定数å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ * W0569::符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ * W0570::符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ * W0571::符å·ä»˜ãデータã®å³ã‚·ãƒ•ト演算ã«ã¯ã€å‡¦ç†ç³»ã«ã‚ˆã£ã¦è«–ç†ã‚·ãƒ•トã¨ç®—術シフトã®ä¸¡æ–¹ã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ * W0572::符å·ä»˜ãã®ãƒ‡ãƒ¼ã‚¿ã«å¯¾ã™ã‚‹ãƒ“ット演算ã¯å‡¦ç†ç³»å®šç¾©ã®çµæžœã«ãªã‚Šã¾ã™ã€‚ * W0573::`[]' 内ã®èµ°æŸ»ã‚»ãƒƒãƒˆã® `-' 文字ã¯ã€å‡¦ç†ç³»å®šç¾©ã«ãªã‚Šã¾ã™ã€‚ * W0574::基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—定数ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0575::基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—列リテラルã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0576::基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã‚³ãƒ¡ãƒ³ãƒˆã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0577::基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã“ã®å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0578::æš—é»™çš„ã«æ±Žæ•´æ•°åž‹ `%s' ã®è¤‡åˆå¼ã‹ã‚‰ã‚ˆã‚Šå¤§ããªåž‹ `%s' ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0579::汎整数型 `%s' ã®è¤‡åˆå¼ã‚’ã€ã‚ˆã‚Šå¤§ããªåž‹ `%s' ã«ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ * W0580::ローカルãªé™çš„変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€ã‚ˆã‚Šé•·ã„有効範囲をæŒã¤ãƒã‚¤ãƒ³ã‚¿ã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ * W0581::実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®é–¢æ•°ã®ä»¥å‰ã®ä½¿ç”¨æ™‚ã¨ç•°ãªã‚Šã¾ã™ã€‚ * W0582::実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°ãƒ—ロトタイプ宣言ã¨ç•°ãªã‚Šã¾ã™ã€‚ * W0583::実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°å®šç¾©ã¨ç•°ãªã‚Šã¾ã™ã€‚ * W0584::%s 番目ã®å®Ÿå¼•æ•°ã®åž‹ãŒã€é–¢æ•°å®šç¾©ã®ä¸­ã®ä»®å¼•æ•°ã®åž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ * W0585::制御変数 `%s' ã¯ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆå¼ã«ç¾ã‚Œã¾ã›ã‚“。 * W0586::typedef`%s' ãŒäºŒã¤ä»¥ä¸Šã®å ´æ‰€ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ * W0589::オブジェクト `%s' ã¯ã€å®šç¾©ã•れã¦ã„る翻訳å˜ä½ã®å†…ã®ã€é–¢æ•° `%s' ã®ã¿ã‹ã‚‰å‚ç…§ã•れã¦ã„ã¾ã™ã€‚ * W0591::関数 `%s' ã¯ã€å®šç¾©ã•れã¦ã„る翻訳å˜ä½ã®å†…ã§ã®ã¿å‚ç…§ã•れã¦ã„ã¾ã™ã€‚ * W0593::オブジェクト `%s' ã¯ã€å®šç¾©ã•れã¦ã„る翻訳å˜ä½ã®ä¸­ã§ã®ã¿å‚ç…§ã•れã¦ã„ã¾ã™ã€‚ * W0597::副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ * W0598::副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ * W0599::副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ * W0600::副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ * W0605::ç¹°ã‚Šè¿”ã—æ–‡ã‚’終了ã•ã›ã‚‹ç›®çš„ã§ã€break æ–‡ãŒäºŒã¤ä»¥ä¸Šä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚ * W0606::å…±ç”¨ä½“ã«æµ®å‹•å°æ•°ç‚¹åž‹ã®ãƒ¡ãƒ³ãƒãŒã‚りã¾ã™ã€‚ * W0607::値ãŒè² ã«ãªã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0608::値ãŒè² ã«ãªã‚‹ã“ã¨ãŒã‚りã†ã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0609::ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«çœŸã«ãªã‚Šã¾ã™ã€‚ * W0610::ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ * W0611::ã“ã®ç¹°ã‚Šè¿”ã—æ–‡ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚ * W0612::ã“ã® if æ¡ä»¶å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚ * W0613::ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ * W0614::ã“ã® `do-while' 制御å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ç¹°ã‚Šè¿”ã—æ–‡ã®æœ¬ä½“ã¯ä¸€å›žã®ã¿å®Ÿè¡Œã•れã¾ã™ã€‚ * W0622::関数ãŒãƒ–ロックスコープ内ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ * W0623::外部çµåˆã®ã‚ªãƒ–ジェクトãŒã€ãƒ–ロックスコープ内ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ * W0624::#define ã‚ã‚‹ã„㯠#undef ãŒãƒ–ロックã®ä¸­ã«å­˜åœ¨ã—ã¾ã™ã€‚ * W0625::外部çµåˆã®å®šç¾©ã¾ãŸã¯å®£è¨€ã®ä¸­ã§ `%s' ãŒä½¿ã‚れã¦ã„ã¾ã™ãŒã€ãã® typedef ãŒãƒ˜ãƒƒãƒ€ãƒ•ァイルã®ä¸­ã§å®£è¨€ã•れã¦ã„ã¾ã›ã‚“。 * W0626::ワイド文字ã¾ãŸã¯ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0627::一行ã«ã€ç©ºæ–‡(`;' ã ã‘ã®æ–‡)ãŒã€ä»–ã®ã‚³ãƒ¼ãƒ‰ã®å¾Œã«ã‚りã¾ã™ã€‚ * W0628::関数 `%s' ãŒå®šç¾©ã•れã¦ã„ã¾ã™ãŒã€ã“ã®ãƒ—ロジェクトã§ã¯ä½¿ã‚れã¦ã„ã¾ã›ã‚“。 * W0629::static 関数 `%s()' ã¯ã€ã“ã®ç¿»è¨³å˜ä½ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã›ã‚“。 * W0632::`#include <%s>' ã®ä¸­ã§ ' ã‚„ " 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ * W0633::`#include "%s"' ã®ä¸­ã§ ' 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ * W0634::`#include' 行ã®ä¸­ã§ `\' を使ã£ã¦ã„ã¾ã™ã€‚パス区切り文字ã¨ã—ã¦ã¯ `/' ã‚’å‹§ã‚ã¾ã™ã€‚ * W0635::%s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。 * W0636::%s 番目ã®å¤‰æ›æŒ‡å®šå­ã«å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã›ã‚“。 * W0637::関数呼ã³å‡ºã—ã«ã€å¤‰æ›æŒ‡å®šå­ã®æ•°ã‚ˆã‚Šã‚‚多ãã®å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã™ã€‚ * W0638::ã“ã®é–¢æ•°å‘¼ã³å‡ºã—ã«ã¯ã€å°‘ãªãã¨ã‚‚一ã¤ã®å®Ÿå¼•æ•°ãŒå¿…è¦ã§ã™ã€‚ * W0639::%s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。 * W0640::scanf 関数ã®å®Ÿå¼•æ•°ã«ã¯ãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒã‚¤ãƒ³ã‚¿ã‚’渡ã•ãªã‘れã°ã„ã‘ã¾ã›ã‚“。 * W0641::æµ®å‹•å°æ•°ç‚¹æ•°åž‹ã‚’オブジェクトã¸ã®ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ * W0642::register 指定ã§å®£è¨€ã•れãŸã‚ªãƒ–ジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å¾—ã‚‹ã“ã¨ã¯ä¸å¯èƒ½ã§ã™ã€‚ * W0643::ã“ã®ãƒžã‚¯ãƒ­ã§æ§‹æˆã•ã‚ŒãŸæ–‡å­—列リテラルã¯ã€`"' ã§å›²ã¾ã‚Œã¦ã„ãªã„䏿­£ãªå½¢å¼ã§ã™ã€‚マクロ内㮠`#' 演算å­ãŒ `\' ãŒæœ«å°¾ã«ã‚る実引数ã«é©ç”¨ã•れãŸçµæžœã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ * W0644::void å¼ã®å€¤ã‚’使用ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚void å¼ã¯å€¤ã‚’ã‚‚ã¡ã¾ã›ã‚“。 * W0645::仮引数ã®åž‹ã«ã¯ã€void 型を使ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。 * W0646::é€šå¸¸ã®æ–‡å­—列リテラルã¨ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒéš£æŽ¥ã—ã¦ã„ã¾ã™ã€‚ * W0649::シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®å€¤ãŒè² ã®å®šæ•°ã§ã™ã€‚çµæžœã¯æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ * W0650::シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®å€¤ãŒå·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®åž‹ `%s' ã§è¡¨ã•れるビット数ã«å¯¾ã—ã¦å¤§ãã™ãŽã¾ã™ã€‚çµæžœã¯æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ * W0653::é…åˆ—ã€æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®åˆæœŸå€¤ãŒ `@{@}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 * W0654::構造体ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®åˆæœŸåŒ–å­ã¯ã€åŒã˜æ§‹é€ ä½“åž‹ã‚ã‚‹ã„ã¯å…±ç”¨ä½“åž‹ã®å€¤ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 * W0655::ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ * W0656::%s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 * W0657::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0658::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0659::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0660::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0661::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0662::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0663::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0664::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0665::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0666::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0667::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0668::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0669::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0670::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0671::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0672::%s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0673::%s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 * W0674::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0675::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0676::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0677::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0678::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0679::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0680::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0681::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0682::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0683::%s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0684::%s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0685::`[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ * W0686::走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ * W0687::defined 演算å­ã‚’削除ã™ã‚‹ç›®çš„ã§ #undef を使ã£ã¦ã„ã¾ã™ã€‚ * W0688::#line 指令ã®å¾Œã«ã€1 ã‹ã‚‰ 32767 ã®ç¯„囲ã®è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 * W0689::#line æŒ‡ä»¤ã®æ§‹æ–‡ãŒ `#line 汎整数定数 "文字列"' ã®å½¢å¼ã¨åˆã£ã¦ã„ã¾ã›ã‚“。 * W0690::#line 指令ã®å¾Œã«è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 * W0691::`##' 演算å­ã®çµæžœãŒæœ‰åйãªå‰å‡¦ç†å­—å¥ã§ã¯ã‚りã¾ã›ã‚“。 * W0692::関数形å¼ãƒžã‚¯ãƒ­ `%s' ã«å®Ÿå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“。 * W0693::関数形å¼ãƒžã‚¯ãƒ­ãŒãã®å®šç¾©ã‚ˆã‚Šã‚‚å°‘ãªã„実引数ã§å‘¼ã³å‡ºã•れã¦ã„ã¾ã™ã€‚ * W0694::`assert' ã¨ã„ã†åç§°ã®é–¢æ•°ã‚’呼ã³å‡ºã™ç›®çš„ã§ã€assert ãƒžã‚¯ãƒ­ãŒæŠ‘åˆ¶ã•れã¦ã„ã¾ã™ã€‚未定義ã®çµæžœã«ãªã‚Šã¾ã™ã€‚ * W0695::assert マクロを #undef ã—ã¦ãã®åå‰ã®é–¢æ•°ã‚’呼ã³å‡ºã—ã§ãるよã†ã«ã™ã‚‹ã¨ã€æœªå®šç¾©ã®çµæžœã«ãªã‚Šã¾ã™ã€‚ * W0696::ã“ã® `#if...' ã§ä½¿ã‚れã¦ã„るマクロ `%s' ã¯å®šç¾©ã•れã¦ã„ã¾ã›ã‚“。 * W0697::戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã«ã€æš—黙㮠`return;' æ–‡ã§çµ‚了ã™ã‚‹ãƒ‘スãŒå­˜åœ¨ã—ã¾ã™ã€‚ * W0698::戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã§ã€`return;' æ–‡ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ * W0699::関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€return æ–‡ã«å€¤ã‚’戻ã™ãŸã‚ã®å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 * W0700::関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€å€¤ã‚’戻㙠return æ–‡ãŒã‚りã¾ã›ã‚“。 * W0703::ã‚¿ã‚° `%s' ãŒã‚ˆã‚Šåºƒã„有効範囲をもã¤åŒã˜è­˜åˆ¥å­ã®å®£è¨€ã‚’éš ã—ã¦ã„ã¾ã™ã€‚ * W0704::ã“ã® `%s' ã®å®£è¨€ã¯ã€ã‚ˆã‚Šåºƒã„有効範囲をもã¤åŒã˜è­˜åˆ¥å­ã®å®£è¨€ã‚’éš ã—ã¦ã„ã¾ã™ã€‚ * W0705::é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™ã“ã¨ãŒã‚りã¾ã™ã€‚ * W0707::é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™å®šæ•°ã§ã™ã€‚ * W0708::for æ–‡ã®åˆ¶å¾¡å¤‰æ•° `%s' ã¯ç¹°ã‚Šè¿”ã—æ–‡æœ¬ä½“ã®ä¸­ã§å€¤ã‚’変ãˆã‚‰ã‚Œã¦ã„ã¾ã™ã€‚ * W0711::関係演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ * W0712::関係演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ * W0713::関係演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ * W0714::`&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ * W0715::`|' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ * W0716::ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ * W0717::ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ * W0718::ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ * W0719::シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒã€æ½œåœ¨åž‹ `%s' ã®ãƒ“ット幅以上ã®å®šæ•°å€¤ã§ã™ã€‚ * W0720::æµ®å‹•å°æ•°ç‚¹åž‹ã®å€¤ãŒå¤‰æ›å…ˆã®åž‹ã®ç¯„囲ã«å…¥ã‚Šãりã¾ã›ã‚“。 * W0721::ã“ã®æ±Žæ•´æ•°åž‹ã¯ã€ãƒã‚¤ãƒ³ã‚¿ã®å€¤ã‚’ä¿æŒã™ã‚‹ã®ã«å分ãªå¤§ãã•ã‚’ã‚‚ã¡ã¾ã›ã‚“。 * W0722::符å·ä»˜ãã®å¼ã®å€¤ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã—ã¦ã„ã¾ã™ã€‚ * W0723::符å·ä»˜ãã®å¼ã®å€¤ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ * W0724::æ¡ä»¶ä»˜ãインクルード指令ã«ã‚ˆã£ã¦ã€èªè­˜ã§ããªã„å‰å‡¦ç†æŒ‡ä»¤ãŒç„¡è¦–ã•れã¾ã—ãŸã€‚ * W0726::修飾å­ä»˜ã void åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•° `%s()' ã®ä¸­ã§ã€`return å¼;' ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ * W0727::列挙型ã«ãªã„値を使ã£ã¦ã„ã¾ã™ã€‚ * W0728::列挙型ã®é–¢æ•°ä»®å¼•æ•°ã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒå®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã•れã¦ã„ã¾ã™ã€‚ * W0729::列挙型ã®ã‚ªãƒ–ジェクトã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ * W0730::åˆ—æŒ™åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•°ã§ã€åˆ¥ã®åˆ—挙型ã®åˆ—æŒ™å®šæ•°ãŒæˆ»ã•れã¦ã„ã¾ã™ã€‚ * W0731::switch 文㮠case ラベルã®å€¤ `%s' ã¯åˆ¶å¾¡å¼ã®åˆ—挙型ã«å±žã—ã¦ã„ã¾ã›ã‚“。 * W0732::`&&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ * W0733::`||' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ * W0734::è«–ç†æ¼”ç®—å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ * W0735::è«–ç†æ¼”ç®—å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ * W0736::ファイルスコープã§å®£è¨€ã•れãŸé™çš„変数 `%s' 㯠1 ã¤ã®é–¢æ•°å†…ã§ã—ã‹èª­ã¿æ›¸ãã•れã¦ã„ã¾ã›ã‚“。 * W0737::`enum %s' ã®å†…容ãŒä¸æ˜Žã§ã™ã€‚列挙体タグãŒå†…容を指定ã›ãšã«å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ * W0738::æ­£ã®æ•´æ•°å®šæ•°ã®å€¤ãŒã‚ˆã‚Šå°ã•ãªç¬¦å·ç„¡ã—åž‹ã¸ã®æš—é»™ã®åž‹å¤‰æ›ã‚’行ã£ãŸãŸã‚ã€åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™ã€‚ * W0739::定数å¼ã«ãŠã‘る符å·ç„¡ã—減算ã®çµæžœãŒè² ã«ãªã‚Šã¾ã—ãŸã€‚ * W0740::定数å¼ã«ãŠã‘る符å·ç„¡ã—加算ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚ * W0741::定数å¼ã«ãŠã‘る符å·ç„¡ã—ä¹—ç®—ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚ * W0742::è² ã®æ•´æ•°å®šæ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0743::整数定数å¼ã®å€¤ã¯ã€å¤‰æ›å…ˆã®ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãる範囲を超ãˆã¦ã„ã¾ã™ã€‚ * W0744::ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å½ã«ãªã‚‹å®šæ•°ã®ãŸã‚ã€åˆ¶å¾¡æ–‡æœ¬ä½“ã¯å®Ÿè¡Œã•れã¾ã›ã‚“。 * W0745::é…åˆ—ã®æ·»å­—ãŒã€é ˜åŸŸå¤–を指ã—ã¦ã„ã¾ã™ã€‚ * W0747::暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0748::暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0749::暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0750::暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0751::暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0752::暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0753::暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0754::暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0755::暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0756::暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0757::暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0758::暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0759::暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0760::暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0761::暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0762::暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0763::暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0764::暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0765::暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0766::暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0767::暗黙的㫠double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0768::暗黙的㫠long double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0769::暗黙的㫠long double åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0770::外部çµåˆã‚’ã‚‚ã¤è­˜åˆ¥å­ `%s' ã®å®£è¨€ãŒã€äºŒã¤ä»¥ä¸Šå­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚ * W0771::グローãƒãƒ«ãªè­˜åˆ¥å­ `%s' ãŒã€äºŒã¤ä»¥ä¸Šã®ãƒ•ァイルã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ * W0774::double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0775::long double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0776::long double åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ * W0777::暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0778::暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0779::暗黙的㫠double åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * W0780::定数å¼ã«ãŠã‘る符å·ç„¡ã—左シフト演算 `<<' ã¯ã€éžã‚¼ãƒ­ã®ä¸Šä½ãƒ“ットを切り詰ã‚ã¾ã™ã€‚ * W0781::ã“ã® switch æ–‡ã«ã¯ãƒ‘ス㌠1 ã¤ã—ã‹ã‚りã¾ã›ã‚“。ã“ã® switch æ–‡ã¯å†—é•·ã§ã™ã€‚ * W0783::ä¸å®Œå…¨åž‹ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’å«ã‚€ã‚­ãƒ£ã‚¹ãƒˆãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯ç§»æ¤æ€§ãŒã‚りã¾ã›ã‚“。 * W0784::éžæ¨™æº–ã®æ‹¡å¼µè¡¨è¨˜ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0785::ã“ã®ã‚¿ã‚° `%s' ã®å®£è¨€ã¯ã€ä»¥å‰ã®å®£è¨€ã¨ç•°ãªã‚Šã¾ã™ã€‚ * W0786::intã€signed intã€ã‚ã‚‹ã„㯠unsigned int 以外ã®åž‹ã‚’ã‚‚ã¤ãƒ“ットフィールドã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 * W0787::`%s' ã®åž‹ãŒã€ä»¥å‰ã®ç•°ãªã‚‹ã‚¹ã‚³ãƒ¼ãƒ—ã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ * W0788::`%s' ã®åž‹ãŒã€ä»¥å‰ã®åŒã˜ã‚¹ã‚³ãƒ¼ãƒ—内ã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ * W0789::`%s' ã®åž‹ãŒã€ä»¥å‰ã®ã‚ˆã‚Šåºƒã„スコープã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ * W0790::グローãƒãƒ«ãªã‚ªãƒ–ジェクトã¾ãŸã¯é–¢æ•° `%s' ãŒäºŒå›žä»¥ä¸Šå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ * W0791::グローãƒãƒ«ãªã‚ªãƒ–ジェクトã¾ãŸã¯é–¢æ•° `%s' ãŒäºŒå›žä»¥ä¸Šå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ * W0792::æµ®å‹•å°æ•°ç‚¹æ•°åž‹ã‚’関数ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ * W0793::関数ãƒã‚¤ãƒ³ã‚¿ã‚’オブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ * W0794::符å·ä»˜ãã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã‚’左シフト演算ã—ã¦ã„ã¾ã™ã€‚ * W0795::関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚å°‘ãªã„ã§ã™ã€‚ * W0796::関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚多ã„ã§ã™ã€‚ * W0797::関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°å®šç¾©ã«ãŠã‘ã‚‹ä»®å¼•æ•°ã®æ•°ã¨ã¯ç•°ãªã‚Šã¾ã™ã€‚ * W0798::ä¸å®Œå…¨ãªå…±ç”¨ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。 * W0799::ä¸å®Œå…¨ãªæ§‹é€ ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。 * W0800::`%s' ã¯çµåˆã‚’ã‚‚ãŸãªã„ä¸å®Œå…¨åž‹ã§ã™ã€‚ã“ã‚Œã¯æœªå®šç¾©ã§ã™ã€‚ * W0801::ã“ã®æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã«ã¯åå‰ä»˜ãã®ãƒ¡ãƒ³ãƒãŒã‚りã¾ã›ã‚“。 * W0802::`#include' å‰å‡¦ç†æŒ‡ä»¤ã®å¾ŒãŒã€<ファイルå> ã‚ã‚‹ã„㯠" ファイルå " å½¢å¼ã®ã©ã¡ã‚‰ã§ã‚‚ã‚りã¾ã›ã‚“。 * W0803::関数形å¼ãƒžã‚¯ãƒ­ã®å®Ÿå¼•æ•°ã®ä¸­ã«ã€å‰å‡¦ç†æŒ‡ä»¤ãŒè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ * W0804::defined æ§‹æ–‡ãŒã€`defined(識別å­)' ã‚ã‚‹ã„㯠`defined 識別å­' ã®ã©ã¡ã‚‰ã§ã‚‚ã‚りã¾ã›ã‚“。 * W0805::`defined' ã«ã€å®Ÿå¼•æ•°ã¨ãªã‚‹è­˜åˆ¥å­ãŒã‚りã¾ã›ã‚“。 * W0806::`defined' ã¨ã„ã†åç§°ã®ãƒžã‚¯ãƒ­ã‚’定義ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ * W0807::事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' を削除ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ * W0808::事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' ã‚’å†å®šç¾©ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ * W0809::è­˜åˆ¥å­ `%s' ã¯ãƒ©ã‚¤ãƒ–ラリã§äºˆç´„済ã¿ã§ã™ã€‚ * W0810::ã“ã® `if-if-else' æ–‡ã®æ§‹é€ ã‚’より明確ã«ã™ã‚‹ãŸã‚ã«ã¯ `@{@}' ãŒå¿…è¦ã§ã™ã€‚ * W0811::ã“ã®ãƒžã‚¯ãƒ­ã®å±•é–‹çµæžœã®ã€`defined' トークンã¯ã€è¨±å®¹ã•れã¾ã›ã‚“。 * W0827::ãƒã‚¹ãƒˆã•ã‚ŒãŸæ§‹é€ ä½“ã®åˆæœŸå€¤ã®å„è¦ç´ ãŒ `@{@}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 * W0828::ãƒã‚¹ãƒˆã•れãŸé…列ã®åˆæœŸå€¤ã®å„è¦ç´ ãŒ `@{@}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 * W0830::列挙å­ä¸¦ã³ã®æœ«å°¾ã«ã‚«ãƒ³ãƒž `,' ãŒã‚りã¾ã™ã€‚ * W0831::ã“れã¯ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ã‚¢ã‚»ãƒ³ãƒ–リ用ã®è¨€èªžæ‹¡å¼µã§ã™ã€‚#asm 㨠#endasm ã®é–“ã¯ç„¡è¦–ã—ã¾ã™ã€‚ * W0832::インラインアセンブリ構文を使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ã“ã®ã‚³ãƒ¼ãƒ‰ã¯ç„¡è¦–ã—ã¾ã™ã€‚ * W0833::接尾語 LL を使ã£ã¦ã„ã¾ã™ã€‚ * W0834::long long 型を使ã£ã¦ã„ã¾ã™ã€‚ * W0835::å¯å¤‰å¼•æ•°ã‚’å—ã‘å–るマクロãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ * W0947::文字列リテラルãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0948::文字定数 %s ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0949::ビットフィールドã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W0950::é…列ã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W1026::%s 番目ã®å®Ÿå¼•æ•°ãŒã‚ªãƒ–ジェクト型ã§ã¯ã‚りã¾ã›ã‚“。 * W1027::é…列ã®åŸºæœ¬åž‹ãŒé–¢æ•°åž‹ã§ã™ã€‚ã“ã‚Œã¯æ„味ãŒã‚りã¾ã›ã‚“。 * W1028::é…列ã®åŸºæœ¬åž‹ãŒã‚µã‚¤ã‚ºä¸æ˜Žã®é…列ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。 * W1029::é…列ã®åŸºæœ¬åž‹ãŒå†…容䏿˜Žã®æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。 * W1030::ラベル `%s' ãŒã“ã®é–¢æ•°ã®ä¸­ã§äºŒå›žä»¥ä¸Šä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W1031::オブジェクト `%s' ã¯ã€å¤–部çµåˆã¨å†…部çµåˆã®ä¸¡æ–¹ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ãã®å‹•ä½œã¯æœªå®šç¾©ã§ã™ã€‚ * W1032::内部çµåˆã‚’ã‚‚ã¤å¤‰æ•° '%s' ã®ä»®å®šç¾©ã¯ã€ä¸å®Œå…¨åž‹ã§ã¯ã„ã‘ã¾ã›ã‚“。 * W1033::é–¢æ•°ã®æˆ»ã‚Šå€¤ã®åž‹ã« volatile ã‚ã‚‹ã„㯠const 修飾å­ã‚’使ã£ã¦ã„ã¾ã™ã€‚ãã®å‹•ä½œã¯æœªå®šç¾©ã§ã™ã€‚ * W1034::ブロックスコープã§ã€é–¢æ•° `%s()' ã« static 記憶域クラス指定å­ã‚’使ã£ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ã“ã®ç”¨æ³•ã¯æ„味ãŒã‚りã¾ã›ã‚“。 * W1035::`%s' 㯠typedef ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚明示的ãªåž‹æŒ‡å®šå­ã‚’使ã‚ãšã«ã€ã‚ˆã‚Šå†…å´ã®ã‚¹ã‚³ãƒ¼ãƒ—ã§å†å®£è¨€ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 * W1036::`%s' 㯠typedef ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚明示的ãªåž‹æŒ‡å®šå­ã‚’使ã‚ãšã«ã€æ§‹é€ ä½“ã¾ãŸã¯å…±ç”¨ä½“ã®ãƒ¡ãƒ³ãƒã¨ã—ã¦å†å®£è¨€ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 * W1037::外部çµåˆã‚’も㤠`%s' ãŒã€äºŒã¤ä»¥ä¸Šå®£è¨€ã•れã¦ã„ã¾ã™ãŒäº’æ›æ€§ãŒã‚りã¾ã›ã‚“。 * W1039::%s 番目ã®å¤‰æ›æŒ‡å®šå­ã« `ll' ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W1040::å‰å‡¦ç†æŒ‡ä»¤ã®å¾Œã«èªè­˜ã§ããªã„文字列ãŒè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ * W1041::`%s' ã¯ã€ISO C æ¨™æº–è¦æ ¼ã®æ­£å¼ãªå‰å‡¦ç†æŒ‡ä»¤ã§ã¯ã‚りã¾ã›ã‚“。 * W1042::å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ sizeof 演算å­ã‚’使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ * W1043::`@@ address' ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚ * W1045::ã“ã® `@@ word' æ§‹æ–‡ã¯ç„¡è¦–ã•れã¾ã™ã€‚ * W1046::`\' ã¨æ”¹è¡Œã®é–“ã«ã‚る空白文字類ãŒç„¡è¦–ã•れã¦ã„ã¾ã™ã€‚ * W1047::構造体ã€å…±ç”¨ä½“ã€ã‚ã‚‹ã„ã¯é…列ã®åˆæœŸåŒ–å­ãŒãƒªãƒ†ãƒ©ãƒ«ã§ã¯ã‚りã¾ã›ã‚“。 * W1048::マルãƒãƒã‚¤ãƒˆæ–‡å­—リテラルã¯å‡¦ç†ç³»å®šç¾©ã®å€¤ã«ãªã‚Šã¾ã™ã€‚ * W1049::ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ * W1050::ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。 * W1051::符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込ã¿ã¾ã™ã€‚ * W1052::符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込むã“ã¨ãŒã‚りã¾ã™ã€‚ * W1053::仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ * W1054::列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ * W1055::戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ * W1056::仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚ * W1057::列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ * W1058::戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ * W1059::仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ * W1060::戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ * W1061::仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ * W1062::ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ * W1063::戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ * W1064::列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W1065::列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ * W1066::明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚ * W1067::明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚ * W1068::明示的㫠double åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚ * W1069::ã“ã® `if-else-if' æ–‡ã«ã¯ã€æœ«å°¾ã® `else' 節ãŒã‚りã¾ã›ã‚“。 * W1070::ã“ã® `switch' æ–‡ã«ã¯å®Ÿè¡ŒçµŒè·¯ãŒ 2 ã¤ã—ã‹ç„¡ã„ãŸã‚ã€`if-else' æ–‡ã«å¤‰æ›å¯èƒ½ã§ã™ã€‚ * W1071::関数 `%s' ã«ã¯è¤‡æ•°ã®çµ‚了点ãŒã‚りã¾ã™ã€‚ * W1072::`goto' 文を使用ã—ã¦ã„ã¾ã™ã€‚ * W1073::関数 `%s' ã®æˆ»ã‚Šå€¤ã‚’破棄ã—ã¦ã„ã¾ã™ã€‚ * W1074::`sizeof' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯å®Ÿè¡Œã•れãªã„ãŸã‚ã€å‰¯ä½œç”¨ãŒç™ºç”Ÿã—ã¾ã›ã‚“。 * W1075::`%s' ã¯ä»¥å‰ã«å†…部çµåˆã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ãŒã€ã“ã®å®£è¨€ã«ã¯ `static' ãŒã‚りã¾ã›ã‚“。 * W1076::関数 `%s' ã¯å†…部çµåˆã‚’æŒã¡ã¾ã™ãŒã€äº‹å‰ã«å†…部çµåˆã¨ã—ã¦å®£è¨€ã—ã¦ã„ã¾ã›ã‚“。 * W1077::サイズãŒçœç•¥ã•れãŸé…列を宣言ã—ã¦ã„ã¾ã™ã€‚ * W9001::ã“ã®æ–‡ã«ã¯åˆ¶å¾¡ãŒåˆ°é”ã—ã¾ã›ã‚“。 * W9002::ãƒ•ã‚¡ã‚¤ãƒ«ã®æœ«å°¾ã«æ”¹è¡Œæ–‡å­—ãŒã‚りã¾ã›ã‚“。 * W9003::暗黙的㫠`%s' åž‹ã®ã‚ªãƒ–ジェクト㌠`%s' åž‹ã®ã‚ªãƒ–ジェクトã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ * C0001::ã“ã®è­˜åˆ¥å `%s' ã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ * C1000::次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ * C1001::ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ * C1002::ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ * C1003::ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚ * C1004::ã“ã“ã§è©²å½“変数㫠NULL ã®å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ * C1005::ã“ã“ã§è©²å½“変数㫠NULL ã®å¯èƒ½æ€§ãŒã‚る値を割り当ã¦ã¾ã—ãŸã€‚ * C1006::ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end menu @node X0001 @section X0001 @cindex X0001 @subsection メッセージ本文 䏿˜Žãªä¾‹å¤–æ¡ä»¶ `%s' を検出ã—ã¾ã—ãŸã€‚ @subsection 内容 AdLint 内部ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸã“ã¨ã‚’示ã—ã¾ã™ã€‚ ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå‡ºåŠ›ã•れãŸå ´åˆã€è©²å½“ソースファイルã€@ref{Traits, 特性ファイル} ã€@ref{Message File, メッセージファイル}ã€ãƒ­ã‚°ãƒ•ァイルã¨ã¨ã‚‚ã« AdLint 開発ãƒãƒ¼ ムã¸ã”報告ã„ãŸã ã‘れã°ã€AdLint ã®å“質å‘上ã«ã¤ãªã’ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @subsection サンプルコード ãªã—。 @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node X0002 @section X0002 @cindex X0002 @subsection メッセージ本文 䏿­£ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ ID `%s' を検出ã—ã¾ã—ãŸã€‚ @subsection 内容 AdLint ãŒå†…部ã§ä½¿ç”¨ã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚«ã‚¿ãƒ­ã‚°ãƒ•ァイルãŒå£Šã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ AdLint ã‚’å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã‚‚å•題ãŒè§£æ±ºã•れãªã„å ´åˆã¯ã€AdLint 開発ãƒãƒ¼ãƒ ã¸ã”å ± 告ãã ã•ã„。 @subsection サンプルコード ãªã—。 @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node X0003 @section X0003 @cindex X0003 @subsection メッセージ本文 回復ä¸èƒ½ãªã‚¨ãƒ©ãƒ¼ã«ã‚ˆã‚Šè§£æžå‡¦ç†ã‚’中断ã—ã¾ã—ãŸã€‚詳細㯠`%s' åŠã³ `%s' を確èªã—ã¦ä¸‹ã•ã„。 @subsection 内容 ヘッダファイルãŒè¦‹ã¤ã‹ã‚‰ãªã„ã€ã‚½ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã®æ§‹æ–‡è§£æžãŒã§ããªã„ãªã©ã€AdLint ㌠解æžã‚’続行ã§ããªã„エラーを検知ã—ãŸå ´åˆã«å‡ºåŠ›ã•れã¾ã™ã€‚ ã“ã®å•題ã®å¤šãã¯ã€@ref{Traits, 特性ファイル}ã®å†…容を見直ã™ã“ã¨ã§è§£æ±ºã§ãã¾ã™ã€‚ @subsection サンプルコード ãªã—。 @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node X0004 @section X0004 @cindex X0004 @subsection メッセージ本文 䏿­£ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãƒ•ォーマット `%s' を検出ã—ã¾ã—ãŸã€‚ @subsection 内容 AdLint ãŒå†…部ã§ä½¿ç”¨ã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚«ã‚¿ãƒ­ã‚°ãƒ•ァイルãŒå£Šã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ AdLint ã‚’å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã‚‚å•題ãŒè§£æ±ºã•れãªã„å ´åˆã¯ã€AdLint 開発ãƒãƒ¼ãƒ ã¸ã”å ± 告ãã ã•ã„。 @subsection サンプルコード ãªã—。 @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node E0004 @section E0004 @cindex E0004 @subsection メッセージ本文 対応ã™ã‚‹ @code{#endif} 行ãŒã‚りã¾ã›ã‚“。 @subsection 内容 @code{#if}ã€@code{#ifdef}ã€@code{#ifndef} ディレクティブã«å¯¾å¿œã™ã‚‹ @code{#endif} ディレクティブãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã«å‡ºåŠ›ã•れã¾ã™ã€‚ @subsection サンプルコード @verbatim #if DEBUG int i = 0; #else int i = 1; @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node E0007 @section E0007 @cindex E0007 @subsection メッセージ本文 æ¡ä»¶å¼ä¸­ã®ãƒˆãƒ¼ã‚¯ãƒ³ `%s' ã§æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ã‚’検出ã—ã¾ã—ãŸã€‚æ¡ä»¶å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã™ã€‚ @subsection 内容 @code{#if}ã€@code{#elif} ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–ã®æ¡ä»¶å¼ã‚’è©•ä¾¡ä¸­ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ã‚’検知ã—ãŸå ´ åˆã«å‡ºåŠ›ã—ã¾ã™ã€‚ ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå‡ºåŠ›ã•れãŸå ´åˆã€è©²å½“ã™ã‚‹æ¡ä»¶å¼ã¯å½ã¨ã—ã¦è©•価ã•れã¾ã™ã€‚ @subsection サンプルコード ãªã—。 @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node E0008 @section E0008 @cindex E0008 @subsection メッセージ本文 トークン `%s' ã§æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ã‚’検知ã—ã¾ã—ãŸã€‚ @subsection 内容 ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ãƒ—リプロセス後ã®ã‚½ãƒ¼ã‚¹ãƒ•ァイルを構文解æžã§ããªã„å ´åˆã«å‡ºåŠ›ã•れ ã¾ã™ã€‚ ビルドã«ä½¿ç”¨ã™ã‚‹ã‚³ãƒ³ãƒ‘ã‚¤ãƒ©ç‹¬è‡ªã®æ‹¡å¼µæ©Ÿèƒ½ã‚’使用ã—ã¦ã„ã‚‹å ´åˆã¯ã€ @ref{Traits, 特性ファイル}ã§è©²å½“ã™ã‚‹ãƒˆãƒ¼ã‚¯ãƒ³åˆ—を削除ã™ã‚‹ã‚ˆã†ã«æŒ‡å®šã™ã‚Œã°è§£æ±ºã§ ãã¾ã™ã€‚ @subsection サンプルコード ãªã—。 @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node E0009 @section E0009 @cindex E0009 @subsection メッセージ本文 ヘッダファイル <%s> ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 @subsection 内容 @code{#include <...>} ディレクティブã§ãƒ˜ãƒƒãƒ€ãƒ•ァイルをインクルードã—ã¦ã„ã¾ã™ãŒ ã€@ref{Traits, 特性ファイル}ã§æŒ‡å®šã—ãŸã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ‘ス中ã«è©²å½“ã™ã‚‹ãƒ˜ãƒƒãƒ€ãƒ•ァイ ルãŒå­˜åœ¨ã—ãªã„å ´åˆã«å‡ºåŠ›ã•れã¾ã™ã€‚ @ref{Traits, 特性ファイル}ã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ‘ス設定を見直ã™ã“ã¨ã§è§£æ±ºã§ãã¾ã™ã€‚ @subsection サンプルコード ãªã—。 @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node E0010 @section E0010 @cindex E0010 @subsection メッセージ本文 ヘッダファイル "%s" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 @subsection 内容 @code{#include "..."} ディレクティブã§ãƒ˜ãƒƒãƒ€ãƒ•ァイルをインクルードã—ã¦ã„ã¾ã™ãŒ ã€@ref{Traits, 特性ファイル}ã§æŒ‡å®šã—ãŸã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ‘ス中ã«è©²å½“ã™ã‚‹ãƒ˜ãƒƒãƒ€ãƒ•ァイ ルãŒå­˜åœ¨ã—ãªã„å ´åˆã«å‡ºåŠ›ã•れã¾ã™ã€‚ @ref{Traits, 特性ファイル}ã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ‘ス設定を見直ã™ã“ã¨ã§è§£æ±ºã§ãã¾ã™ã€‚ @subsection サンプルコード ãªã—。 @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node E0013 @section E0013 @cindex E0013 @subsection メッセージ本文 å¼ã«æ–‡ã‚’å«ã‚ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 @subsection 内容 å¼ã®ä¸­ã«æ–‡ã‚’記述ã™ã‚‹ GCC 拡張機能 (Statement Exprs) を使用ã—ãŸå ´åˆã«å‡ºåŠ›ã•れã¾ã™ 。 @subsection サンプルコード @verbatim #define maxint(a, b) ({int _a = (a), _b = (b); _a > _b ? _a : _b; }) int i = maxint(1, 2); /* E0013 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node E0014 @section E0014 @cindex E0014 @subsection メッセージ本文 ラベルã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–å¾—ã™ã‚‹ãŸã‚ã® && å˜é …演算å­ã¯ GCC ç‹¬è‡ªã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚ @subsection 内容 ラベルを値ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ GCC 拡張機能 (Labels as Values) を使用ã—ãŸå ´åˆã«å‡ºåŠ›ã•れ ã¾ã™ã€‚ @subsection サンプルコード @verbatim void *label_ptr = &&foo; /* E0014 */ goto *label_ptr; /* E0015 */ foo:; @end verbatim @subsection 関連メッセージ @itemize @item @ref{E0015} ラベルã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’指定ã—㟠goto 文㯠GCC ç‹¬è‡ªã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node E0015 @section E0015 @cindex E0015 @subsection メッセージ本文 ラベルã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’指定ã—㟠goto 文㯠GCC ç‹¬è‡ªã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚ @subsection 内容 ラベルを値ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ GCC 拡張機能 (Labels as Values) を使用ã—ãŸå ´åˆã«å‡ºåŠ›ã•れ ã¾ã™ã€‚ @subsection サンプルコード @verbatim void *label_ptr = &&foo; /* E0014 */ goto *label_ptr; /* E0015 */ foo:; @end verbatim @subsection 関連メッセージ @itemize @item @ref{E0014} ラベルã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–å¾—ã™ã‚‹ãŸã‚ã® && å˜é …演算å­ã¯ GCC ç‹¬è‡ªã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node E0016 @section E0016 @cindex E0016 @subsection メッセージ本文 終了ã—ãªã„コメントブロックãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ @subsection 内容 @code{/*} ã§é–‹å§‹ã™ã‚‹ãƒ–ロックコメント㌠@code{*/} ã§çµ‚了ã•れãªã„状態ã§ã€ç¿»è¨³å˜ä½ ã®æœ«å°¾ã«åˆ°é”ã—ãŸå ´åˆã«å‡ºåŠ›ã•れã¾ã™ã€‚ @subsection サンプルコード ãªã—。 @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node E0018 @section E0018 @cindex E0018 @subsection メッセージ本文 大域スコープã«ä½™åˆ†ãªã‚»ãƒŸã‚³ãƒ­ãƒ³ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ @subsection 内容 大域スコープ中ã«ã‚»ãƒŸã‚³ãƒ­ãƒ³ãŒå˜ç‹¬ã§ç¾ã‚ŒãŸå ´åˆã«å‡ºåŠ›ã•れã¾ã™ã€‚ @subsection サンプルコード @verbatim int foo(int i) { return i + 1; }; /* E0018 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2.6 @node W0001 @section W0001 @cindex W0001 @subsection メッセージ本文 括弧 `()' ã®ãƒã‚¹ãƒˆã®æ·±ã•㌠32 ã‚’è¶…ãˆã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯ã€ISO C90 æ¨™æº–è¦æ ¼ã«å޳坆ã«åˆè‡´ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 括弧ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã¯æœ€å¤§ 32 ã¾ã§ã¨ ISO C æ¨™æº–è¦æ ¼ã§å®šã‚られã¦ã„ã¾ã™ã€‚ã“ã®æ°´æº–ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ã‚’æãªã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim int a = 10; int b = 20; int c = (((((((((((((((((((((((((((((((((a + b))))))))))))))))))))))))))))))))); /* W0001 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0002 @section W0002 @cindex W0002 @subsection メッセージ本文 関数 `%s()' ã®å®šç¾©ã«ãŠã„ã¦ã€è­˜åˆ¥å­ã¨ä»®å¼•数宣言を分ã‘ã¦è¨˜è¿°ã™ã‚‹ã®ã¯ã€å¤ã„スタイルã§ã™ã€‚ @subsection 内容 éž ANSI ã®é–¢æ•°å®šç¾©ã¯ã€ã„ã¾ã‚„多ãã®ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ã«ã¨ã£ã¦é¦´æŸ“ã¿ãŒãªã„ã‚‚ã®ã¨ã„ãˆã¾ã™ã€‚ãã®ã‚ˆã†ãªã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ã«ã¨ã£ã¦ã€è§£æžæ€§ãŒä½Žããªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim /* function definition in K&R style */ int func(arg) /* W0002 */ char arg; { return 0; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0003 @section W0003 @cindex W0003 @subsection メッセージ本文 ã“ã® switch æ–‡ã«ã¯ default ラベルãŒå«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 @subsection 内容 @code{default} æ¡ä»¶ã‚’æŒãŸãªã„ @code{switch} æ–‡ã§ã¯ã€@code{case} ãƒ©ãƒ™ãƒ«ã®æ¡ä»¶ã«è©²å½“ã—ãªã„å ´åˆã«ä½•も処ç†ãŒè¡Œã‚れãªã„ã“ã¨ã«ãªã‚Šã€å¤šãã®å ´åˆã€ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã—ãªã„動作ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim 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; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0007 @section W0007 @cindex W0007 @subsection メッセージ本文 ç›´å‰ã® case 節ã‚ã‚‹ã„㯠default ç¯€ã®æœ«å°¾ã«ã€break æ–‡ã¾ãŸã¯ return æ–‡ãŒã‚りã¾ã›ã‚“。 @subsection 内容 @code{case} ラベルã§ã¯ @code{break} 文や @code{return} 文を書ã‹ãªã„é™ã‚Šã€æ¬¡ã® @code{case} ラベルã¸ãƒ•ォールスルーã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ãŒã€ ã“ã®ã‚ˆã†ãªãƒ•ã‚©ãƒ¼ãƒ«ã‚¹ãƒ«ãƒ¼ã¯æ°—ã¥ãã«ãã„ã¨ã„ã†ç‚¹ã§ã‚³ãƒ¼ãƒ‰ã®ä¿å®ˆæ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim 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; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0010 @section W0010 @cindex W0010 @subsection メッセージ本文 ã“ã®ä¸‰é …演算å­(æ¡ä»¶æ¼”ç®—å­)ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«å‰¯ä½œç”¨ãŒã‚りã¾ã™ã€‚ @subsection 内容 副作用を生ã˜ã‚‹æ¡ä»¶æ¼”ç®—å­ã‚’使用ã™ã‚‹ã¨ã€æ¡ä»¶ã«ã‚ˆã£ã¦å‰¯ä½œç”¨ã®å†…容ãŒå¤‰ã‚りã€ã‚³ãƒ¼ãƒ‰ãŒè¤‡é›‘ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim x = (a > 0) ? b++ : b--; /* W0010 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0013 @section W0013 @cindex W0013 @subsection メッセージ本文 ç¹°ã‚Šè¿”ã—æ–‡ã®ä¸­ã§ã€continue æ–‡ãŒä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 @code{continue} æ–‡ã¯ã—ã°ã—ã°ã€æ§‹é€ åŒ–定ç†(「順次ã€ã€Œå復ã€ã€Œåˆ†å²ã€)ã«åŸºã¥ã„ãŸã‚³ãƒ¼ãƒ‰ã®æ§‹é€ ã‚’壊ã—ã¦ã—ã¾ã„ã¾ã™ã€‚影響ã¯ãƒ«ãƒ¼ãƒ—æ–‡ã®ä¸­ã«é™å®šã•れるãŸã‚〠@code{goto} æ–‡ã»ã©å¤§ããªãƒã‚¬ãƒ†ã‚£ãƒ–インパクトã¯ã‚りã¾ã›ã‚“ãŒã€åˆ©ç”¨ã®éš›ã¯æ³¨æ„ãŒå¿…è¦ã§ã™ã€‚ @subsection サンプルコード @verbatim 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 */ } } } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0016 @section W0016 @cindex W0016 @subsection メッセージ本文 å¤‰æ›æŒ‡å®šå­ã®ãƒ•ィールド幅㌠509 文字を超ãˆã¦ã„ã¾ã™ã€‚ @subsection 内容 @code{printf()} 関数ã«ãŠã‘ã‚‹å¤‰æ›æŒ‡å®šå­ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰å¹…ã¯æœ€å¤§ 509 文字ã¾ã§ã¨ ISO C æ¨™æº–è¦æ ¼ã§å®šã‚られã¦ã„ã¾ã™ã€‚ã“ã®æ°´æº–ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ã‚’æãªã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim printf("%510d\n", a); /* W0016 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0017} å¤‰æ›æŒ‡å®šå­ã®ãƒ•ィールド幅㌠509 文字を超ãˆã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0017 @section W0017 @cindex W0017 @subsection メッセージ本文 å¤‰æ›æŒ‡å®šå­ã®ãƒ•ィールド幅㌠509 文字を超ãˆã¦ã„ã¾ã™ã€‚ @subsection 内容 @code{scanf()} 関数ã«ãŠã‘ã‚‹å¤‰æ›æŒ‡å®šå­ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰å¹…ã¯æœ€å¤§ 509 文字ã¾ã§ã¨ ISO C æ¨™æº–è¦æ ¼ã§å®šã‚られã¦ã„ã¾ã™ã€‚ã“ã®æ°´æº–ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ã‚’æãªã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim scanf("%510d", &a); /* W0017 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0016} å¤‰æ›æŒ‡å®šå­ã®ãƒ•ィールド幅㌠509 文字を超ãˆã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0018 @section W0018 @cindex W0018 @subsection メッセージ本文 å¤‰æ›æŒ‡å®šå­ã®ç²¾åº¦å¹…㌠509 文字を超ãˆã¦ã„ã¾ã™ã€‚ @subsection 内容 å¤‰æ›æŒ‡å®šå­ã®ç²¾åº¦å¹…ã¯æœ€å¤§ 509 文字ã¾ã§ã¨ ISO C æ¨™æº–è¦æ ¼ã§å®šã‚られã¦ã„ã¾ã™ã€‚ã“ã®æ°´æº–ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ã‚’æãªã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim printf("%.510f\n", a); /* W0018 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0019 @section W0019 @cindex W0019 @subsection メッセージ本文 ã“ã®ãƒã‚¤ãƒ³ã‚¿ã‚­ãƒ£ã‚¹ãƒˆã¯ã€const 修飾を削除ã—ã¦ã„ã‚‹ã®ã§å±é™ºã§ã™ã€‚ @subsection 内容 @code{const} 修飾ã•れãŸå¤‰æ•°ã¯å€¤ãŒå¤‰æ›´ã•れãªã„ã“ã¨ã‚’剿ã¨ã—ã¦ä½¿ç”¨ã•れã¾ã™ã€‚ ãã®ã‚ˆã†ãªå¤‰æ•°ã« @code{const} ãŒå¤±ã‚れるキャストãŒå®Ÿè¡Œã•れるã¨å‰æãŒå´©ã‚Œã¦ã—ã¾ã„ã€æ„図ã—ãªã„çµæžœã‚’引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int *pa; const int *pb; pa = (int *) pb; /* W0019 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0021 @section W0021 @cindex W0021 @subsection メッセージ本文 ã“ã®ãƒã‚¤ãƒ³ã‚¿ã‚­ãƒ£ã‚¹ãƒˆã¯ã€volatile 修飾を削除ã—ã¦ã„ã‚‹ã®ã§å±é™ºã§ã™ã€‚ @subsection 内容 @code{volatile} 修飾ã•れãŸå¤‰æ•°ã¯æœ€é©åŒ–ã®å¯¾è±¡å¤–ã«ã—ãŸã„ã¨ã„ã†æ„図ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ ãã®ã‚ˆã†ãªå¤‰æ•°ã« @code{volatile} ãŒå¤±ã‚れるキャストãŒå®Ÿè¡Œã•ã‚Œã‚‹ã¨æ„図ã«åã—ã¦æœ€é©åŒ–ãŒè¡Œã‚れã¦ã—ã¾ã„〠æ„図ã—ãªã„çµæžœã‚’引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int *pa; volatile int *pb; pa = (int *) pb; /* W0021 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0023 @section W0023 @cindex W0023 @subsection メッセージ本文 ãƒã‚¤ãƒ³ã‚¿åž‹ã®å¤‰æ•°ã«å¯¾ã—ã¦ç®—術演算ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 ãƒã‚¤ãƒ³ã‚¿æ¼”ç®—ã«ã‚ˆã‚Šæ„図ã—ãªã„アドレスを使用ã™ã‚‹å¯èƒ½æ€§ãŒé«˜ããªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim int *p; int *q; long r = p + r; /* W0023 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0024} ãƒã‚¤ãƒ³ã‚¿åž‹ã®å¤‰æ•°ã«å¯¾ã—ã¦ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã¾ãŸã¯ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0024 @section W0024 @cindex W0024 @subsection メッセージ本文 ãƒã‚¤ãƒ³ã‚¿åž‹ã®å¤‰æ•°ã«å¯¾ã—ã¦ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã¾ãŸã¯ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 ãƒã‚¤ãƒ³ã‚¿æ¼”ç®—ã«ã‚ˆã‚Šæ„図ã—ãªã„アドレスを使用ã™ã‚‹å¯èƒ½æ€§ãŒé«˜ããªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim int *p; p++; /* W0024 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0023} ãƒã‚¤ãƒ³ã‚¿åž‹ã®å¤‰æ•°ã«å¯¾ã—ã¦ç®—術演算ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0025 @section W0025 @cindex W0025 @subsection メッセージ本文 `%s' ã¯ã€æ—¢ã«ã“ã®ãƒ•ァイルã‹ã‚‰ç›´æŽ¥ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 é‡è¤‡ã—ãŸã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã¯æ„味ã®ãªã„記述ã§ã™ã€‚æ„味ã®ãªã„ä¸è¦ãªè¨˜è¿°ãŒã‚³ãƒ¼ãƒ‰ä¸­ã«ã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #include "test.h" #include "test2.h" #include "test.h" /* W0025 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0026} `%s' ã¯ã€æ—¢ã«ã“ã®ãƒ•ァイルã‹ã‚‰é–“接的ã«ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0026 @section W0026 @cindex W0026 @subsection メッセージ本文 `%s' ã¯ã€æ—¢ã«ã“ã®ãƒ•ァイルã‹ã‚‰é–“接的ã«ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 é‡è¤‡ã—ãŸã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã¯æ„味ã®ãªã„記述ã§ã™ã€‚æ„味ã®ãªã„ä¸è¦ãªè¨˜è¿°ãŒã‚³ãƒ¼ãƒ‰ä¸­ã«ã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @file{test.h} @verbatim #include "test2.h" @end verbatim @file{test.c} @verbatim #include "test.h" #include "test2.h" /* W0026 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0025} `%s' ã¯ã€æ—¢ã«ã“ã®ãƒ•ァイルã‹ã‚‰ç›´æŽ¥ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0027 @section W0027 @cindex W0027 @subsection メッセージ本文 ãƒã‚¤ãƒ³ã‚¿åž‹ã®å¤‰æ•°ã«å¯¾ã—ã¦æ¯”較演算ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 比較演算å­ã‚’用ã„ã¦ç•°ãªã‚‹é…列ã®ãƒã‚¤ãƒ³ã‚¿ã‚„ç•°ãªã‚‹æ§‹é€ ä½“ã®ãƒã‚¤ãƒ³ã‚¿ã¨æ¯”較ã™ã‚‹å‹•作㯠ISO C90 ã§æœªå®šç¾©ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int *p; int *q; if (p < q) { /* W0027 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0028 @section W0028 @cindex W0028 @subsection メッセージ本文 NULL ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 @code{NULL} ãƒã‚¤ãƒ³ã‚¿ãŒæŒ‡ã™å€¤ã‚’間接å‚ç…§ã™ã‚‹å‹•作㯠ISO C90 ã§æœªå®šç¾©ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int i = *(int *) NULL; /* W0028 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0030 @section W0030 @cindex W0030 @subsection メッセージ本文 NULL ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 @code{NULL} ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã™ã‚‹ç®—術演算㯠ISO C90 ã§æœªå®šç¾©ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int *p; p = (int *) NULL + 1; /* W0030 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0031 @section W0031 @cindex W0031 @subsection メッセージ本文 仮引数 `%s' ã¯ã€ã“ã®é–¢æ•°ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã›ã‚“。 @subsection 内容 未使用ã®å®Ÿå¼•æ•°ã¯è³‡æºã‚’ç„¡é§„ã«ä½¿ç”¨ã™ã‚‹ã¨ã„ã†ç‚¹ã§åŠ¹çŽ‡æ€§ã‚’ä½Žä¸‹ã•ã›ã¾ã™ã€‚ã¾ãŸã‚³ãƒ¼ãƒ‰ä¸­ã«ç„¡é§„ãªè¦ç´ ãŒã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int num) /* W0031 */ { return 0; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0033 @section W0033 @cindex W0033 @subsection メッセージ本文 ラベル `%s:' ã¯ã€ã“ã®é–¢æ•°ã®ä¸­ã§ä½¿ã‚れã¦ã„ãªã„ãŸã‚ã€å‰Šé™¤ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @subsection 内容 使用ã•れãªã„ラベルã¯ç„¡é§„ãªè¦ç´ ã¨ã„ãˆã¾ã™ã€‚コード中ã«ç„¡é§„ãªè¦ç´ ãŒã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { int num = 0; for (int i =0; i < 10; i++) { num++; } ERROR: /* W0033 */ num = 0; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0035 @section W0035 @cindex W0035 @subsection メッセージ本文 `&&' ã¾ãŸã¯ `||' ã®å³ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯ã€ç®—è¡“åž‹ã¾ãŸã¯ãƒã‚¤ãƒ³ã‚¿åž‹ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 @subsection 内容 ISO C90 ã§ã¯ @code{&&} ã‚„ @code{||} ã®å³è¾ºã¯ã‚¹ã‚«ãƒ©åž‹ã§ãªã‘れã°ãªã‚‰ãªã„ã¨ã•れã¦ã„ã¾ã™ã€‚ 従ã£ã¦æ§‹é€ ä½“åž‹ã«ã—ãŸå ´åˆã®å‹•ä½œã¯æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim struct STR { int x; int y; }; extern struct STR str; void func(void) { int x; int y; x = y && str; /* W0035 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0036 @section W0036 @cindex W0036 @subsection メッセージ本文 宣言å­ã®ä¸­ã®ä¿®é£¾å­ã®æ•°ãŒ 12 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ISO C90 ã§ã¯å®£è¨€å­ã®ä¿®é£¾å­æ•°ã®åˆ¶é™ã‚’ 12 ã¨å®šã‚ã¦ã„ã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int num[1][2][3][4][5][6][7][8][9][10][11][12][13]; /* W0036 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0037 @section W0037 @cindex W0037 @subsection メッセージ本文 構造体ã¾ãŸã¯å…±ç”¨ä½“ã®ãƒã‚¹ãƒˆãŒ 15 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ISO C90 ã§ã¯æ§‹é€ ä½“や共用体ã®ãƒã‚¹ãƒˆæ•°ã®åˆ¶é™ã‚’ 15 ã¨å®šã‚ã¦ã„ã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim 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; }; @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0038 @section W0038 @cindex W0038 @subsection メッセージ本文 オブジェクト `%s' ã®ã‚µã‚¤ã‚ºãŒ 32767 ãƒã‚¤ãƒˆã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ISO C90 ã§ã¯ã‚ªãƒ–ジェクトã®ã‚µã‚¤ã‚ºåˆ¶é™ã‚’ 32767 ãƒã‚¤ãƒˆã¨å®šã‚ã¦ã„ã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int num[100][330]; /* W0038 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0039 @section W0039 @cindex W0039 @subsection メッセージ本文 ブロックã®ä¸­ã®ãƒ­ãƒ¼ã‚«ãƒ«ãªè­˜åˆ¥å­ã®æ•°ãŒ 127 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ISO C90 ã§ã¯ãƒ–ロックスコープ識別å­ã‚’æŒã¤ãƒ–ロック数ã®åˆ¶é™ã‚’ 127 個ã¨å®šã‚ã¦ã„ã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim 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 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0040 @section W0040 @cindex W0040 @subsection メッセージ本文 ビットフィールド㌠signed ã¾ãŸã¯ unsigned 付ãã§å®£è¨€ã•れã¦ã„ã¾ã›ã‚“。 @subsection 内容 å˜ãªã‚‹ @code{int} åž‹ã§ãƒ“ットフィールドを定義ã—ãŸå ´åˆã€@code{signed int} ã«ãªã‚‹ã‹ @code{unsigned int} ã«ãªã‚‹ã‹ã¯å‡¦ç†ç³»ä¾å­˜ã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ãƒ—ãƒ­ã‚°ãƒ©ãƒžãŒæ„図ã—ãªã„åž‹ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim struct STR { /* W0040 */ int a:5; }; @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0041 @section W0041 @cindex W0041 @subsection メッセージ本文 構造体ã¾ãŸã¯å…±ç”¨ä½“ã®ãƒ¡ãƒ³ãƒã®æ•°ãŒ 127 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ISO C90 ã§ã¯æ§‹é€ ä½“や共用体ã®ãƒ¡ãƒ³ãƒæ•°ã®åˆ¶é™ã‚’ 127 ã¨å®šã‚ã¦ã„ã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim struct STR { int num1; int num2; int num3; int num4; int num5; ...snip... int num125; int num126; int num127; int num128; /* W0041 */ }; @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0042 @section W0042 @cindex W0042 @subsection メッセージ本文 åˆ—æŒ™å®šæ•°ã®æ•°ãŒ 127 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ISO C90 ã§ã¯åˆ—挙定数ã®åˆ¶é™ã‚’ 127 ã¨å®šã‚ã¦ã„ã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim 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 */ }; @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0043 @section W0043 @cindex W0043 @subsection メッセージ本文 é…列ã®åˆæœŸå€¤ãŒã€å®£è¨€ã•れãŸé…列ã®ã‚µã‚¤ã‚ºã«è¶³ã‚Šã¾ã›ã‚“。残りã®é…列è¦ç´ ã¯ã‚¼ãƒ­ã§åˆæœŸåŒ–ã•れã¾ã™ã€‚ @subsection 内容 åˆæœŸåŒ–å­ãŒä¸è¶³ã™ã‚‹å ´åˆã¯ 0 ã§åˆæœŸåŒ–ã•れã¾ã™ãŒã€æ„図ã—ãŸã‚‚ã®ã‹ã€ãã†ã§ãªã„ã‹ãŒåˆ†ã‹ã‚Šã¥ã‚‰ããªã‚Šã¾ã™ã€‚ åˆæœŸåŒ–å­ã‚’指定ã™ã‚‹å ´åˆã«ã¯ã€è¦ç´ æ•°ã¨åˆæœŸå€¤ã®æ•°ã‚’一致ã•ã›ã‚‹ã“ã¨ãŒæœ›ã¾ã—ã„ã§ã™ã€‚ @subsection サンプルコード @verbatim int array[5] = { 1, 2, 3 }; /* W0043 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0049 @section W0049 @cindex W0049 @subsection メッセージ本文 制御構造ã®ãƒã‚¹ãƒˆãŒ 15 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ISO C90 ã§ã¯åˆ¶å¾¡æ§‹é€ ã®ãƒã‚¹ãƒˆæ•°ã®åˆ¶é™ã‚’ 15 ã¨å®šã‚ã¦ã„ã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim 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 */ ; } } } } } } } } } } } } } } } } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0050 @section W0050 @cindex W0050 @subsection メッセージ本文 case ãƒ©ãƒ™ãƒ«ã®æ•°ãŒ 257 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ISO C90 ã§ã¯ @code{case} ラベルã®åˆ¶é™ã‚’ 257 ã¨å®šã‚ã¦ã„ã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim switch (num) { case 1: break; case 2: break; case 3: break; ...snip... case 257: break; case 258: /* W0050 */ break; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0051 @section W0051 @cindex W0051 @subsection メッセージ本文 å¤–éƒ¨è­˜åˆ¥å­ `%s' ãŒä»–ã®è­˜åˆ¥å­åã¨ã€ãƒªãƒ³ã‚«ç‰¹æ€§ã§æŒ‡å®šã•ã‚ŒãŸæ–‡å­—æ•°ã®ç¯„囲内ã§åŒºåˆ¥ã§ãã¾ã›ã‚“。 @subsection 内容 処ç†ç³»ã§æ±ºã‚られã¦ã„る文字数ã®åˆ¶é™ã‚’è¶…ãˆãŸå ´åˆã®å‹•ä½œã¯æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int very_long_long_long_ ...snip... _long_external_symbol; /* W0051 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{C0001} ã“ã®è­˜åˆ¥å `%s' ã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0052 @section W0052 @cindex W0052 @subsection メッセージ本文 識別å­å `%s' ãŒä»–ã®è­˜åˆ¥å­åã¨ã€ã‚³ãƒ³ãƒ‘ã‚¤ãƒ©ç‰¹æ€§ã§æŒ‡å®šã•ã‚ŒãŸæ–‡å­—æ•°ã®ç¯„囲内ã§åŒºåˆ¥ã§ãã¾ã›ã‚“。 @subsection 内容 処ç†ç³»ã§æ±ºã‚られã¦ã„る文字数ã®åˆ¶é™(原則 31 文字)ã‚’è¶…ãˆãŸå ´åˆã®å‹•ä½œã¯æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { int very_long_long_long_long_long_ ...snip... _long_symbol; /* W0052 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{C0001} ã“ã®è­˜åˆ¥å `%s' ã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0053 @section W0053 @cindex W0053 @subsection メッセージ本文 `#include "%s"' ã®ãƒã‚¹ãƒˆãŒ 8 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ISO C90 ã§ã¯ @code{include} ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®åˆ¶é™ã‚’ 8 ã¨å®šã‚ã¦ã„ã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @file{test.c} @verbatim #include "test1.h" @end verbatim @file{test1.h} @verbatim #include "test2.h" @end verbatim @file{test2.h} @verbatim #include "test3.h" @end verbatim @file{test3.h} @verbatim #include "test4.h" @end verbatim @file{test4.h} @verbatim #include "test5.h" @end verbatim @file{test5.h} @verbatim #include "test6.h" @end verbatim @file{test6.h} @verbatim #include "test7.h" @end verbatim @file{test7.h} @verbatim #include "test8.h" @end verbatim @file{test8.h} @verbatim #include "test9.h" @end verbatim @file{test9.h} @verbatim #include "test10.h" /* W0053 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0054 @section W0054 @cindex W0054 @subsection メッセージ本文 `#if...' ã®ãƒã‚¹ãƒˆã®æœ€å¤§å€¤ãŒ 8 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ISO C90 ã§ã¯ @code{#if} ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®åˆ¶é™ã‚’ 8 ã¨å®šã‚ã¦ã„ã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #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 @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0055 @section W0055 @cindex W0055 @subsection メッセージ本文 ãƒžã‚¯ãƒ­å®šç¾©ã®æ•°ãŒ 1024 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ISO C90 ã§ã¯ä¸€ã¤ã®ç¿»è¨³å˜ä½ä¸­ã§å®šç¾©ã§ãるマクロã®åˆ¶é™ã‚’ 1024 ã¨å®šã‚ã¦ã„ã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define MACRO_1 #define MACRO_2 #define MACRO_3 ...snip... #define MACRO_1023 #define MACRO_1024 #define MACRO_1025 /* W0055 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0056 @section W0056 @cindex W0056 @subsection メッセージ本文 関数形å¼ãƒžã‚¯ãƒ­ã®ä»®å¼•æ•°ã®æ•°ãŒ 31 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ISO C90 ã§ã¯ãƒžã‚¯ãƒ­å¼•æ•°æ•°ã®åˆ¶é™ã‚’ 31 ã¨å®šã‚ã¦ã„ã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define MACRO(a1, a2, a3, ...snip... a30, a31, a32) /* W0056 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0057 @section W0057 @cindex W0057 @subsection メッセージ本文 関数形å¼ãƒžã‚¯ãƒ­ã®å‘¼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒ 31 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ISO C90 ã§ã¯ãƒžã‚¯ãƒ­å‘¼ã³å‡ºã—ã®å¼•æ•°æ•°ã®åˆ¶é™ã‚’ 31 ã¨å®šã‚ã¦ã„ã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int i = MACRO(1, 2, 3 ...snip... 30, 31, 32); /* W0057 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0058 @section W0058 @cindex W0058 @subsection メッセージ本文 æ–‡å­—åˆ—ãƒªãƒ†ãƒ©ãƒ«ã®æ–‡å­—数㌠509 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ISO C90 ã§ã¯æ–‡å­—åˆ—ãƒªãƒ†ãƒ©ãƒ«ã®æ–‡å­—æ•°ã®åˆ¶é™ã‚’ 509 ã¨å®šã‚ã¦ã„ã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’è¶…ãˆã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim char buf[] = "very long long long ...snip... long string literal"; /* W0058 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0059 @section W0059 @cindex W0059 @subsection メッセージ本文 ã“ã®ãƒ•ァイルã®è¡Œæœ«ã« Ctrl-M(^M) 制御文字ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ @subsection 内容 PC ã§ä½œæˆã—ãŸã‚½ãƒ¼ã‚¹ã«ã¯æ©Ÿç¨®ä¾å­˜ã®åˆ¶å¾¡ã‚³ãƒ¼ãƒ‰ãŒä½¿ç”¨ã•れるã“ã¨ãŒã‚りã¾ã™ã€‚ ã“ã®ã‚ˆã†ãªåˆ¶å¾¡ã‚³ãƒ¼ãƒ‰ã‚’無視ã›ãšã€æ„図ã—ãªã„処ç†ã‚’ã™ã‚‹å‡¦ç†ç³»ãŒå­˜åœ¨ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ 従ã£ã¦ã“ã®ã‚ˆã†ãªæ©Ÿç¨®ä¾å­˜ã®è¨˜è¿°ã¯ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード ãªã—。 @subsection 関連メッセージ @itemize @item @ref{W0060} ã“ã®ãƒ•ァイル内㫠Ctrl-Z(^Z) 制御文字ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0060 @section W0060 @cindex W0060 @subsection メッセージ本文 ã“ã®ãƒ•ァイル内㫠Ctrl-Z(^Z) 制御文字ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ @subsection 内容 PC ã§ä½œæˆã—ãŸã‚½ãƒ¼ã‚¹ã«ã¯æ©Ÿç¨®ä¾å­˜ã®åˆ¶å¾¡ã‚³ãƒ¼ãƒ‰ãŒä½¿ç”¨ã•れるã“ã¨ãŒã‚りã¾ã™ã€‚ ã“ã®ã‚ˆã†ãªåˆ¶å¾¡ã‚³ãƒ¼ãƒ‰ã‚’無視ã›ãšã€æ„図ã—ãªã„処ç†ã‚’ã—ã¦ã—ã¾ã†å‡¦ç†ç³»ãŒå­˜åœ¨ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ 従ã£ã¦ã“ã®ã‚ˆã†ãªæ©Ÿç¨®ä¾å­˜ã®è¨˜è¿°ã¯ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード ãªã—。 @subsection 関連メッセージ @itemize @item @ref{W0059} ã“ã®ãƒ•ァイルã®è¡Œæœ«ã« Ctrl-M(^M) 制御文字ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0061 @section W0061 @cindex W0061 @subsection メッセージ本文 `%s' 㯠ISO C æ¨™æº–è¦æ ¼ã®æ­£å¼ãªäºˆç´„語ã§ã¯ã‚りã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—無視ã—ã¾ã™ã€‚ @subsection 内容 ã‚る特定ã®ã‚³ãƒ³ãƒ‘イラã§å®šç¾©ã•れã¦ã„る言語拡張を使用ã™ã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int func(void) __attribute__ ((__const__)); /* W0061 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0062} `__typeof__' 㯠ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚ @item @ref{W0063} `__alignof__' 㯠ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0062 @section W0062 @cindex W0062 @subsection メッセージ本文 `__typeof__' 㯠ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚ @subsection 内容 ã‚る特定ã®ã‚³ãƒ³ãƒ‘イラã§å®šç¾©ã•れã¦ã„る言語拡張を使用ã™ã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define DEF_FUNPTR(func) __typeof__(func) *ptr_##func = 0 DEF_FUNPTR(main); /* W0062 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0061} `%s' 㯠ISO C æ¨™æº–è¦æ ¼ã®æ­£å¼ãªäºˆç´„語ã§ã¯ã‚りã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—無視ã—ã¾ã™ã€‚ @item @ref{W0063} `__alignof__' 㯠ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0063 @section W0063 @cindex W0063 @subsection メッセージ本文 `__alignof__' 㯠ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚ @subsection 内容 ã‚る特定ã®ã‚³ãƒ³ãƒ‘イラã§å®šç¾©ã•れã¦ã„る言語拡張を使用ã™ã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int a = __alignof__(struct sockaddr *) /* W0063 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0061} `%s' 㯠ISO C æ¨™æº–è¦æ ¼ã®æ­£å¼ãªäºˆç´„語ã§ã¯ã‚りã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—無視ã—ã¾ã™ã€‚ @item @ref{W0062} `__typeof__' 㯠ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0064 @section W0064 @cindex W0064 @subsection メッセージ本文 2 進数整数リテラルãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ @subsection 内容 2 進数定数ãŒèªã‚られã¦ã„ã‚‹å ´åˆã€ãれã¯è¨€èªžæ‹¡å¼µã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚言語拡張を使用ã™ã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned char c = 0b00000001; /* W0064 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0065 @section W0065 @cindex W0065 @subsection メッセージ本文 代入演算å­ã®å·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã‚’キャストã—ã¦ã¯ãªã‚Šã¾ã›ã‚“。 @subsection 内容 左オペランドã«å¯¾ã™ã‚‹ã‚­ãƒ£ã‚¹ãƒˆãŒèªã‚られã¦ã„ã‚‹å ´åˆã€ãれã¯è¨€èªžæ‹¡å¼µã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚ 言語拡張を使用ã™ã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int num) { (unsigned short) num = 100U; /* W0065 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0066 @section W0066 @cindex W0066 @subsection メッセージ本文 `main()' 関数ã¯ã€`int (void)' ã¾ãŸã¯ `int (int, char *[])' ã®ã©ã¡ã‚‰ã‹ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 @subsection 内容 @code{int main(void)} ã¾ãŸã¯ @code{int main(int, char*[])} 以外ã®å½¢å¼ã® @code{main} 関数ã®å®šç¾©ãŒèªã‚られã¦ã„ã‚‹å ´åˆã€ãれã¯è¨€èªžæ‹¡å¼µã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚ @subsection サンプルコード @verbatim void main(void) {} /* W0066 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0067 @section W0067 @cindex W0067 @subsection メッセージ本文 ãƒã‚¹ãƒˆã•ã‚ŒãŸæ§‹é€ ä½“ã®ãƒ¡ãƒ³ãƒã«ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ @subsection 内容 入れå­ã®æ§‹é€ ä½“ã¸ã®ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã‚„特定ビットã¸ã®ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ãŒèªã‚られã¦ã„ã‚‹å ´åˆã€ ãれã¯è¨€èªžæ‹¡å¼µã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚言語拡張を使用ã™ã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim struct BBB { int mb; struct AAA { int ma; }; } bbb; bbb.ma = 1; /* W0067 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0068} ビットã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã« `.' を使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0068 @section W0068 @cindex W0068 @subsection メッセージ本文 ビットã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã« `.' を使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ @subsection 内容 入れå­ã®æ§‹é€ ä½“ã¸ã®ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã‚„特定ビットã¸ã®ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ãŒèªã‚られã¦ã„ã‚‹å ´åˆã€ ãれã¯è¨€èªžæ‹¡å¼µã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚言語拡張を使用ã™ã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned short a; a.2 = 0; /* W0068 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0067} ãƒã‚¹ãƒˆã•ã‚ŒãŸæ§‹é€ ä½“ã®ãƒ¡ãƒ³ãƒã«ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0069 @section W0069 @cindex W0069 @subsection メッセージ本文 `/*' ã§å§‹ã¾ã‚‹ã‚³ãƒ¡ãƒ³ãƒˆã®ä¸­ã« `/*' ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ãƒã‚¹ãƒˆã•れãŸã‚³ãƒ¡ãƒ³ãƒˆã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã¯èªã‚られã¦ã„ã¾ã›ã‚“。 @subsection 内容 @code{/*} コメントã®å…¥ã‚Œå­ã¯ ISO C90 ã§ã¯èªã‚られã¦ã„ã¾ã›ã‚“。 入れå­ã«ã‚ˆã£ã¦å³å•題ã«ç›´çµã™ã‚‹ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“ãŒã€ 内å´ã®ã‚³ãƒ¡ãƒ³ãƒˆã®çµ‚端 @code{*/} ã«ã‚ˆã£ã¦å¤–å´ã®ã‚³ãƒ¡ãƒ³ãƒˆãŒçµ‚了ã—ã¦ã—ã¾ã†ã“ã¨ã§ 予期ã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim /* /* W0069 */ */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0070 @section W0070 @cindex W0070 @subsection メッセージ本文 インクルードã•れã¦ã„ã‚‹ <%s> ã®å†…容ã¯ç¿»è¨³å˜ä½ã®ä¸­ã§å…¨ãå‚ç…§ã•れã¦ã„ã¾ã›ã‚“。削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @subsection 内容 å‚ç…§ã—ãªã„ヘッダファイルをインクルードã™ã‚‹ã“ã¨ã¯ç„¡é§„ãªæ–‡ã ã¨è¨€ãˆã¾ã™ã€‚コード中ã«ç„¡é§„ãªæ–‡ãŒã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード ãªã—。 @subsection 関連メッセージ @itemize @item @ref{W0071} インクルードã•れã¦ã„ã‚‹ "%s" ã®å†…容ã¯ç¿»è¨³å˜ä½ã®ä¸­ã§å…¨ãå‚ç…§ã•れã¦ã„ã¾ã›ã‚“。削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0071 @section W0071 @cindex W0071 @subsection メッセージ本文 インクルードã•れã¦ã„ã‚‹ "%s" ã®å†…容ã¯ç¿»è¨³å˜ä½ã®ä¸­ã§å…¨ãå‚ç…§ã•れã¦ã„ã¾ã›ã‚“。削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @subsection 内容 å‚ç…§ã—ãªã„ヘッダファイルをインクルードã™ã‚‹ã“ã¨ã¯ç„¡é§„ãªæ–‡ã ã¨è¨€ãˆã¾ã™ã€‚コード中ã«ç„¡é§„ãªæ–‡ãŒã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード ãªã—。 @subsection 関連メッセージ @itemize @item @ref{W0070} インクルードã•れã¦ã„ã‚‹ <%s> ã®å†…容ã¯ç¿»è¨³å˜ä½ã®ä¸­ã§å…¨ãå‚ç…§ã•れã¦ã„ã¾ã›ã‚“。削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0072 @section W0072 @cindex W0072 @subsection メッセージ本文 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ãƒ˜ãƒƒãƒ€ãƒ•ァイルåã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 ISO C90 ã§ã¯å‡¦ç†ã§ãる最å°é™ã®æ–‡å­—集åˆã‚’定ã‚ã¦ã„ã¾ã™ã€‚ã“ã®é›†åˆã«å½“ã¦ã¯ã¾ã‚‰ãªã„文字を処ç†ã™ã‚‹å ´åˆã¯å‡¦ç†ç³»å®šç¾©ã®å‹•作ã¨ãªã‚Šã¾ã™ã€‚ 処ç†ç³»å®šç¾©ã®å‹•作を使用ã™ã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #include /* W0072 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0073 @section W0073 @cindex W0073 @subsection メッセージ本文 ã“ã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ•ァイルã«ã¯ã€ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã‚¬ãƒ¼ãƒ‰ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @subsection 内容 é‡è¤‡ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã¯åž‹ã®å†å®šç¾©ã«é–¢ã™ã‚‹ã‚¨ãƒ©ãƒ¼ã‚’引ãèµ·ã“ã™åŽŸå› ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード ãªã—。 @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0076 @section W0076 @cindex W0076 @subsection メッセージ本文 ã“ã® 16 進整数リテラルã«ã¯ã€æŽ¥å°¾èªž `U' ã¾ãŸã¯ `u' ãŒä»˜ã‘られã¦ã„ã¾ã›ã‚“。 @subsection 内容 整数定数ã®å€¤ã¯ã€è¦æ ¼ã§æŒ‡å®šã•れãŸåž‹ã®ã†ã¡ã€ãã®å€¤ã‚’表ç¾ã§ãる最åˆã®åž‹ã«ãªã‚Šã¾ã™ã€‚ ã¤ã¾ã‚Šã€æŽ¥å°¾èªž "@code{U}" を使用ã—ã¦ã„ãªã„ 16 進定数ã¯ã€ @code{unsigned} ã‚’æ„図ã—ã¦ã„ã¦ã‚‚ã€@code{signed} åž‹ã§è¡¨ç¾ã§ãã‚‹å ´åˆã¯ @code{signed} ã¨ãªã‚Šã¾ã™ã€‚ 例ãˆã°ã€@code{0x8000} ã¯ã€@code{int} ã®å®Ÿè£…サイズ㌠16bit ã®å ´åˆ @code{unsigned int} ã«ãªã‚Šã¾ã™ãŒã€ int ã®å®Ÿè£…サイズ㌠32bit ã®å ´åˆ @code{signed int} åž‹ã«ãªã‚Šã¾ã™ã€‚ ã“ã®ã‚ˆã†ã«ã€16 é€²å®šæ•°ã«æŽ¥å°¾èªž "@code{U}" を使用ã—ã¦ã„ãªã„時〠@code{signed} 㨠@code{unsigned} ã®ã©ã¡ã‚‰ã«ãªã‚‹ã®ã‹ãŒåˆ¤æ–­ã—ã¥ã‚‰ããªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int num = 0x1234; /* W0076 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0077 @section W0077 @cindex W0077 @subsection メッセージ本文 接尾語ã¨ã—ã¦å°æ–‡å­—ã® `l' ãŒæ•´æ•°ã¾ãŸã¯æµ®å‹•å°æ•°ç‚¹æ•°ã«ä»˜ã‘られã¦ã„ã¾ã™ã€‚ @subsection 内容 @code{long} åž‹ã‚’è¡¨ã™æŽ¥å°¾èªž "@code{l}" ã®ä½¿ç”¨ã¯ã€æ•°å­—ã® "@code{1}" ã¨é–“é•ãˆã‚‰ã‚Œã‚„ã™ã„ãŸã‚è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim long a = 0x1000l; /* W0077 */ long b = 0x1000L; /* OK */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0078 @section W0078 @cindex W0078 @subsection メッセージ本文 仮引数並ã³ãŒãªã„関数ãŒå®£è¨€ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 仮引数ã®ä¸¦ã³ãŒç©ºã®é–¢æ•°å®£è¨€ã¯æ—§å¼ (K&R) ã®æ–‡æ³•ã§ã‚り〠ã“れãŒç¾åœ¨ã§ã‚‚利用ã§ãã‚‹ã®ã¯ã‚³ãƒ³ãƒ‘ã‚¤ãƒ©ãŒæ—§å¼ã®æ–‡æ³•ã®ä¸€éƒ¨ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹ãŸã‚ã§ã™ã€‚ ã“ã®ã‚ˆã†ãªã‚³ãƒ³ãƒ‘イラã®é…æ…®ã«ä¾å­˜ã—ãŸã‚³ãƒ¼ãƒ‰ã¯å°†æ¥çš„ã«å¤‰æ›´ã‚’余儀ãªãã•れる未æˆç†Ÿãªã‚³ãƒ¼ãƒ‰ã¨ã„ãˆã¾ã™ã€‚ @subsection サンプルコード @verbatim int sample() /* W0078 */ { return 0; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0079 @section W0079 @cindex W0079 @subsection メッセージ本文 ã“ã®é…列ã¯ã€åˆæœŸå€¤ã®æ–‡å­—列リテラルã®çµ‚端文字 `\0' ã‚’ä¿æŒã§ãã¾ã›ã‚“。 @subsection 内容 文字列é…列ã¯ã‚¿ãƒ¼ãƒŸãƒãƒ¼ã‚¿ã¨ã—ã¦çµ‚端ã«ãƒŒãƒ«æ–‡å­—ãŒå…¥ã£ã¦ã„ã‚‹ã“ã¨ã‚’想定ã—ã¦ä½¿ç”¨ã•れる場åˆãŒå¤šãã‚りã¾ã™ã€‚ 例ãˆã°ã€æ–‡å­—æ•°ã‚’æ•°ãˆã‚‹ãŸã‚ã«çµ‚端ã®ãƒŒãƒ«æ–‡å­—ãŒè¦‹ã¤ã‹ã‚‹ã¾ã§å復処ç†ã™ã‚‹ã‚ˆã†ãªä½¿ç”¨æ³•ãŒæŒ™ã’られã¾ã™ã€‚ ã“ã®ã‚ˆã†ãªå‡¦ç†ã‚’ã€ãƒŒãƒ«æ–‡å­—ã‚’ä¿æŒã—ã¦ã„ãªã„文字列é…列ã«è¡Œã£ãŸå ´åˆã€ç„¡é™ãƒ«ãƒ¼ãƒ—ã«é™¥ã£ã¦ã—ã¾ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim char text[3] = "ABC"; /* W0079 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0080 @section W0080 @cindex W0080 @subsection メッセージ本文 const 修飾ã•れãŸã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトãŒã€æ˜Žç¤ºçš„ã«åˆæœŸåŒ–ã•れãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 @code{const} 指定ã•れã¦ã„る変数ã¯ã€å€¤ã‚’代入ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã®ã§ã€å®£è¨€æ™‚ã«åˆæœŸåŒ–ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ 従ã£ã¦ã€@code{const} 指定ã•れã¦ãŠã‚Šã€å®£è¨€æ™‚ã«åˆæœŸåŒ–ã•れã¦ã„ãªã„変数ã¯ä½¿ã„よã†ã®ãªã„ç„¡é§„ãªãƒ‡ãƒ¼ã‚¿ã¨ã„ã†ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ ç„¡é§„ãªã‚‚ã®ã¯ã€ãƒ¡ãƒ¢ãƒªè³‡æºã‚’消費ã™ã‚‹ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®å¯èª­æ€§ã‚’低下ã•ã›ã‚‹ã€ãªã©ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim const int num; /* W0080 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0081 @section W0081 @cindex W0081 @subsection メッセージ本文 å˜é …æ¼”ç®—å­ `-' ã‚’ unsigned int åž‹ã€unsigned long åž‹ã€unsigned long long åž‹ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«å¯¾ã—ã¦ä½¿ã†ã¨ã€ç¬¦å·ç„¡ã—åž‹ã«ãªã£ã¦ã—ã¾ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã®å¤‰æ•°ã«ã€å˜é …æ¼”ç®—å­ "@code{-}" を使用ã™ã‚‹ã¨çµæžœã¯å‡¦ç†ç³»å®šç¾©ã€ã¾ãŸã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long num = 0; long val = -num; /* W0081 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0082 @section W0082 @cindex W0082 @subsection メッセージ本文 å˜é …æ¼”ç®—å­ `-' を符å·ç„¡ã—ã®æ½œåœ¨åž‹ `%s' ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«å¯¾ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã®å¤‰æ•°ã«ã€å˜é …æ¼”ç®—å­ "@code{-}" を使用ã™ã‚‹ã¨çµæžœã¯å‡¦ç†ç³»å®šç¾©ã€ã¾ãŸã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned short num = 20; int val = -num; /* W0082 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0084 @section W0084 @cindex W0084 @subsection メッセージ本文 ã“ã®ã‚«ãƒ³ãƒžæ¼”ç®—å­ `,' ã®å·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«ã¯å‰¯ä½œç”¨ã‚’ã‚‚ã¤å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @subsection 内容 副作用ãŒãªã„æ–‡ã¯ç„¡é§„ãªæ–‡ã ã¨è¨€ãˆã¾ã™ã€‚コード中ã«ç„¡é§„ãªæ–‡ãŒã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int a = 0; int b = 1; a, b++; /* W0084 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0085} ã“ã®æ–‡ã«ã¯å‰¯ä½œç”¨ãŒã‚りã¾ã›ã‚“。誤りã®ã‚ã‚‹å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚ @item @ref{W0086} 三項演算å­(æ¡ä»¶æ¼”ç®—å­)ã®ä¸­ã§ã€2 番目ã‚ã‚‹ã„㯠3 番目ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ @item @ref{W0087} カンマ演算å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ @item @ref{W0088} è«–ç†æ¼”ç®—å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0085 @section W0085 @cindex W0085 @subsection メッセージ本文 ã“ã®æ–‡ã«ã¯å‰¯ä½œç”¨ãŒã‚りã¾ã›ã‚“。誤りã®ã‚ã‚‹å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚ @subsection 内容 副作用ãŒãªã„æ–‡ã¯ç„¡é§„ãªæ–‡ã ã¨è¨€ãˆã¾ã™ã€‚コード中ã«ç„¡é§„ãªæ–‡ãŒã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim a; /* W0085 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0084} ã“ã®ã‚«ãƒ³ãƒžæ¼”ç®—å­ `,' ã®å·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«ã¯å‰¯ä½œç”¨ã‚’ã‚‚ã¤å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @item @ref{W0086} 三項演算å­(æ¡ä»¶æ¼”ç®—å­)ã®ä¸­ã§ã€2 番目ã‚ã‚‹ã„㯠3 番目ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ @item @ref{W0087} カンマ演算å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ @item @ref{W0088} è«–ç†æ¼”ç®—å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0086 @section W0086 @cindex W0086 @subsection メッセージ本文 三項演算å­(æ¡ä»¶æ¼”ç®—å­)ã®ä¸­ã§ã€2 番目ã‚ã‚‹ã„㯠3 番目ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ @subsection 内容 副作用ãŒãªã„æ–‡ã¯ç„¡é§„ãªæ–‡ã ã¨è¨€ãˆã¾ã™ã€‚コード中ã«ç„¡é§„ãªæ–‡ãŒã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int a; int b; (a < 0) ? b : b++; /* W0086 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0084} ã“ã®ã‚«ãƒ³ãƒžæ¼”ç®—å­ `,' ã®å·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«ã¯å‰¯ä½œç”¨ã‚’ã‚‚ã¤å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @item @ref{W0085} ã“ã®æ–‡ã«ã¯å‰¯ä½œç”¨ãŒã‚りã¾ã›ã‚“。誤りã®ã‚ã‚‹å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚ @item @ref{W0087} カンマ演算å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ @item @ref{W0088} è«–ç†æ¼”ç®—å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0087 @section W0087 @cindex W0087 @subsection メッセージ本文 カンマ演算å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ @subsection 内容 副作用ãŒãªã„æ–‡ã¯ç„¡é§„ãªæ–‡ã ã¨è¨€ãˆã¾ã™ã€‚コード中ã«ç„¡é§„ãªæ–‡ãŒã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int a = 0; int b = 1; a++, b; /* W0087 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0084} ã“ã®ã‚«ãƒ³ãƒžæ¼”ç®—å­ `,' ã®å·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«ã¯å‰¯ä½œç”¨ã‚’ã‚‚ã¤å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @item @ref{W0085} ã“ã®æ–‡ã«ã¯å‰¯ä½œç”¨ãŒã‚りã¾ã›ã‚“。誤りã®ã‚ã‚‹å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚ @item @ref{W0086} 三項演算å­(æ¡ä»¶æ¼”ç®—å­)ã®ä¸­ã§ã€2 番目ã‚ã‚‹ã„㯠3 番目ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ @item @ref{W0088} è«–ç†æ¼”ç®—å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0088 @section W0088 @cindex W0088 @subsection メッセージ本文 è«–ç†æ¼”ç®—å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ @subsection 内容 副作用ãŒãªã„æ–‡ã¯ç„¡é§„ãªæ–‡ã ã¨è¨€ãˆã¾ã™ã€‚コード中ã«ç„¡é§„ãªæ–‡ãŒã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim (a < 0) && func(a) && func(b) && c; /* W0088 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0084} ã“ã®ã‚«ãƒ³ãƒžæ¼”ç®—å­ `,' ã®å·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«ã¯å‰¯ä½œç”¨ã‚’ã‚‚ã¤å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @item @ref{W0085} ã“ã®æ–‡ã«ã¯å‰¯ä½œç”¨ãŒã‚りã¾ã›ã‚“。誤りã®ã‚ã‚‹å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚ @item @ref{W0086} 三項演算å­(æ¡ä»¶æ¼”ç®—å­)ã®ä¸­ã§ã€2 番目ã‚ã‚‹ã„㯠3 番目ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ @item @ref{W0087} カンマ演算å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0093 @section W0093 @cindex W0093 @subsection メッセージ本文 ゼロã§é™¤ç®—ã•れるæã‚ŒãŒã‚りã¾ã™ã€‚ @subsection 内容 ゼロã§ã®é™¤ç®—ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a, int b) { if (b > 0) { return a / b; /* OK */ } return a / b; /* W0093 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0096 @section W0096 @cindex W0096 @subsection メッセージ本文 ゼロã«ãªã‚‹å®šæ•°å¼ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 ゼロã§ã®é™¤ç®—ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #define A (0) int b = 10 / A; /* W0096 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0097 @section W0097 @cindex W0097 @subsection メッセージ本文 ゼロã®å€¤ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 ゼロã§ã®é™¤ç®—ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a, int b) { if (a < 0) { ...snip... } else { ...snip... if (a < 1) { return b / a; /* W0097 */ } } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0100 @section W0100 @cindex W0100 @subsection メッセージ本文 変数 `%s' ã¯åˆæœŸå€¤ã‚’設定後ã«å†ä»£å…¥ã•れã¾ã›ã‚“。変数を const 付ãã§åˆæœŸå€¤ã‚’指定ã—ã¦å®šç¾©ã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªå¤‰æ•°ã¯ã€å€¤ã‚’変更ã—ã¦ã‚‚良ã„ã‹å¦ã‹ãŒã‚ã‹ã‚Šã¥ã‚‰ã„ã¨ã„ã£ãŸå•題ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a) { int b = a; /* W0100 */ return b; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0101 @section W0101 @cindex W0101 @subsection メッセージ本文 自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€ã‚ˆã‚Šé•·ã„寿命をæŒã¤ãƒã‚¤ãƒ³ã‚¿ã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @subsection 内容 ã‚る関数ã§å®£è¨€ã•れãŸè‡ªå‹•変数ã®ã‚¹ã‚³ãƒ¼ãƒ—ã¯ãã®é–¢æ•°å†…ã«é™å®šã•れã¾ã™ãŒã€ ãã®è‡ªå‹•変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’より大ããªã‚¹ã‚³ãƒ¼ãƒ—ã‚’æŒã¤ãƒã‚¤ãƒ³ã‚¿ã«ä»£å…¥ã—ã¦ä½¿ç”¨ã—ãŸå ´åˆã€ ã‚ãŸã‹ã‚‚ãã®ãƒã‚¤ãƒ³ã‚¿ãŒæœ‰åйãªã‚¹ã‚³ãƒ¼ãƒ—ã§è‡ªå‹•変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’扱ã†ã‚ˆã†ãªã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã«ãªã‚Šã¾ã™ã€‚ ã—ã‹ã—実際ã¯ã€é–¢æ•°å†…ã§å®£è¨€ã•れãŸè‡ªå‹•変数ã¯ã€ãã®é–¢æ•°ã‚’抜ã‘ãŸæ™‚点ã§ã‚¹ã‚³ãƒ¼ãƒ—を外れるãŸã‚〠ãã®è‡ªå‹•変数ã®ãƒã‚¤ãƒ³ã‚¿ã‚‚無効ã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€è‡ªå‹•変数ã®ãƒã‚¤ãƒ³ã‚¿ã‚’より大ãã„スコープをæŒã¤ãƒã‚¤ãƒ³ã‚¿ã¸ä»£å…¥ã™ã‚‹ã“ã¨ã¯ã€ 無効ãªãƒã‚¤ãƒ³ã‚¿ã‚’æ„図ã—ãªã„タイミングã§ä½¿ã†å¯èƒ½æ€§ã‚’生ã˜ã•ã›ã‚‹ãŸã‚å±é™ºã§ã™ã€‚ @subsection サンプルコード @verbatim extern long *ptr; void func() { long value = 0; ptr = &value; /* W0101 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0102 @section W0102 @cindex W0102 @subsection メッセージ本文 自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€é–¢æ•°ã®ä»®å¼•数を介ã—ã¦æˆ»ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @subsection 内容 関数内ã§å®£è¨€ã•れãŸè‡ªå‹•変数ã¯ã€é–¢æ•°ã®å®Ÿè¡ŒãŒçµ‚了ã—ãŸæ™‚点ã§ç„¡åйã«ãªã‚Šã¾ã™ã€‚ ãã®ã‚ˆã†ãªå¤‰æ•°ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ã€ã„ã¤åˆ¥ã®å¤‰æ•°ã®ãƒ¡ãƒ¢ãƒªé ˜åŸŸã¨ã—ã¦ä½¿ç”¨ã•れるã‹ã‚ã‹ã‚Šã¾ã›ã‚“。 @subsection サンプルコード @verbatim void func(int **ptr) { int num; *ptr = # /* W0102 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0103} 自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€æˆ»ã‚Šå€¤ã¨ã—ã¦é–¢æ•°ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0103 @section W0103 @cindex W0103 @subsection メッセージ本文 自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€æˆ»ã‚Šå€¤ã¨ã—ã¦é–¢æ•°ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @subsection 内容 関数内ã§å®£è¨€ã•れãŸè‡ªå‹•変数ã¯ã€é–¢æ•°ã®å®Ÿè¡ŒãŒçµ‚了ã—ãŸæ™‚点ã§ç„¡åйã«ãªã‚Šã¾ã™ã€‚ ãã®ã‚ˆã†ãªå¤‰æ•°ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ã€ã„ã¤åˆ¥ã®å¤‰æ•°ã®ãƒ¡ãƒ¢ãƒªé ˜åŸŸã¨ã—ã¦ä½¿ç”¨ã•れるã‹ã‚ã‹ã‚Šã¾ã›ã‚“。 @subsection サンプルコード @verbatim char *foo1(void) { char a[3]; return a; /* W0103 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0102} 自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€é–¢æ•°ã®ä»®å¼•数を介ã—ã¦æˆ»ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0104 @section W0104 @cindex W0104 @subsection メッセージ本文 仮引数 `%s' ã¯å€¤ãŒå¤‰ã‚りã¾ã›ã‚“。const 付ãã§å®£è¨€ã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªå¼•æ•°ã¯ã€å€¤ã‚’変更ã—ã¦ã‚‚良ã„ã‹å¦ã‹ãŒã‚ã‹ã‚Šã¥ã‚‰ã„ã¨ã„ã£ãŸå•題ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int val) /* W0104 */ { const int num = val + 1; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0105} ãƒã‚¤ãƒ³ã‚¿ä»®å¼•æ•° `%s' ãŒæŒ‡ã—ã¦ã„るオブジェクトã¯é–¢æ•°å†…ã§å¤‰ã‚らãªã„ã®ã§ã€const オブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿åž‹ã¨ã—ã¦å®£è¨€ã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0105 @section W0105 @cindex W0105 @subsection メッセージ本文 ãƒã‚¤ãƒ³ã‚¿ä»®å¼•æ•° `%s' ãŒæŒ‡ã—ã¦ã„るオブジェクトã¯é–¢æ•°å†…ã§å¤‰ã‚らãªã„ã®ã§ã€const オブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿åž‹ã¨ã—ã¦å®£è¨€ã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªå¼•æ•°ã¯ã€å€¤ã‚’変更ã—ã¦ã‚‚良ã„ã‹å¦ã‹ãŒã‚ã‹ã‚Šã¥ã‚‰ã„ã¨ã„ã£ãŸå•題ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int *val) /* W0105 */ { const int num = *val; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0104} 仮引数 `%s' ã¯å€¤ãŒå¤‰ã‚りã¾ã›ã‚“。const 付ãã§å®£è¨€ã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0107 @section W0107 @cindex W0107 @subsection メッセージ本文 自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€static 付ãローカルãƒã‚¤ãƒ³ã‚¿ã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @subsection 内容 関数ã®ã‚¹ã‚³ãƒ¼ãƒ—を抜ã‘ã‚‹ã¨è‡ªå‹•記憶域期間をæŒã¤ã‚ªãƒ–ジェクトãŒç„¡åйã«ãªã‚‹ä¸€æ–¹ã§ã€ é™çš„記憶域期間をæŒã¤ã‚ªãƒ–ジェクトã¯ç„¡åйã«ãªã‚Šã¾ã›ã‚“。 従ã£ã¦ã€é™çš„記憶域期間をæŒã¤ãƒã‚¤ãƒ³ã‚¿ã«è‡ªå‹•記憶域期間をæŒã¤ã‚ªãƒ–ジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’代入ã™ã‚‹ã“ã¨ã¯å±é™ºã§ã™ã€‚ @subsection サンプルコード @verbatim void foo() { static int *p; int b = 100; p = &b; /* W0107 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0108 @section W0108 @cindex W0108 @subsection メッセージ本文 代入演算å­ãŒè«–ç†æ¼”ç®—å¼ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 実質的ã«ãƒ–ール型ã¨ã—ã¦ä½¿ç”¨ã•れã¦ã„る変数ã«å¯¾ã™ã‚‹ä»£å…¥æ¼”ç®—å­ã‚„複åˆä»£å…¥æ¼”ç®—å­ã®ä½¿ç”¨ã¯ã€ ã©ã®ã‚ˆã†ã«è§£é‡ˆã—ã¦ã‚ˆã„ã‹ãŒã‚ã‹ã‚Šã¥ã‚‰ãã€ã‚³ãƒ¼ãƒ‰ã‚’複雑ã«ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int a; int b; if (a = b) { /* W0108 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0109 @section W0109 @cindex W0109 @subsection メッセージ本文 ã“ã®é–¢æ•°ã®å®£è¨€ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。çœç•¥ã•れãŸã‚‚ã®ã¨ã¿ãªã—ã€`extern int %s()' を挿入ã—ã¾ã™ã€‚ @subsection 内容 ISO C90 ã§ã¯ã€é–¢æ•°ã¯ä½¿ç”¨ã•れるå‰ã«å®šç¾©ã‚‚ã—ãã¯ãƒ—ロトタイプ宣言ã™ã¹ãã¨ã•れã¦ã„ã¾ã™ã€‚ 定義もã—ãã¯ãƒ—ロトタイプ宣言ãªã—ã§ä½¿ç”¨ã™ã‚‹å ´åˆã¯ã€æš—é»™ã®å®£è¨€ãŒã‚ã‚‹ã‚‚ã®ã¨è¦‹ãªã•れã¾ã™ã€‚ ã—ã‹ã—ã€ã“ã®ã‚ˆã†ãªè¦æ ¼ã®é…æ…®ã«ä¾å­˜ã—ãŸã‚³ãƒ¼ãƒ‰ã¯å°†æ¥çš„ã«å¤‰æ›´ã‚’余儀ãªãã•れる未æˆç†Ÿãªã‚³ãƒ¼ãƒ‰ã¨ã„ãˆã¾ã™ã€‚ @subsection サンプルコード @verbatim void func() { foo(); /* W0109 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0110 @section W0110 @cindex W0110 @subsection メッセージ本文 æµ®å‹•å°æ•°ç‚¹åž‹ã®å¤‰æ•°ãŒ for æ–‡ã®ãƒ«ãƒ¼ãƒ—カウンタã¨ã—ã¦ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 ループカウンタ(ループã®åˆ¶å¾¡å¤‰æ•°)ã®åž‹ã‚’æµ®å‹•å°æ•°ç‚¹åž‹ã«ã—ãŸå ´åˆã€ ループを抜ã‘ã‚‹æ¡ä»¶ã«ç­‰å¼ã‚„ä¸ç­‰å¼ã‚’採用ã—ãŸå ´åˆã«ã€ ループカウンタã®ä¸¸ã‚誤差ãŒåŽŸå› ã§ç„¡é™ãƒ«ãƒ¼ãƒ—ã«ãªã‚‹å¯èƒ½æ€§ãŒé«˜ããªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim double d; for (d = 0.0; d != 1.0; d += 0.1) { /* W0110 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0112 @section W0112 @cindex W0112 @subsection メッセージ本文 æµ®å‹•å°æ•°ç‚¹ã®å¼ã‚’等価演算å­ã§æ¯”較ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã®å¤‰æ•°ã¯æ§˜ã€…ãªèª¤å·®ã®å½±éŸ¿ã«ã‚ˆã‚Šã€ã‚ã‚‹æ•°ã¨ç­‰å¼ã‚„ä¸ç­‰å¼ã§æ¯”較ã—ã¦ã‚‚目的ã®çµæžœã‚’得られるã¨ã¯é™ã‚Šã¾ã›ã‚“。 @subsection サンプルコード @verbatim double a = 0.1; a = (a + 0.1) * 5.0; if (a == 1.0) { /* W0112 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0114 @section W0114 @cindex W0114 @subsection メッセージ本文 ã“ã®åˆ¶å¾¡å¼ã¯æ˜Žç¤ºçš„ãªè«–ç†æ¼”ç®—ã§ã¯ã‚りã¾ã›ã‚“。 @subsection 内容 制御å¼ã§æ¯”較演算å­ã‚’使用ã—ãªã„ã¨æš—黙的㫠0 ã¨æ¯”較ã•れãŸçµæžœã‚’判定ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ ã“ã®ã‚ˆã†ãªæ¯”較演算å­ã‚’用ã„ãªã„æ›¸ãæ–¹ã¯ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°é‡ãŒæ¸›ã‚‹ãƒ¡ãƒªãƒƒãƒˆã‚ˆã‚Šã‚‚è§£æžæ€§ãŒä½Žä¸‹ã™ã‚‹ãƒ‡ãƒ¡ãƒªãƒƒãƒˆã®æ–¹ãŒå¤§ãã„ã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚ @subsection サンプルコード @verbatim int a; if (a != 0) { /* OK */ } if (a) { /* W0114 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0115 @section W0115 @cindex W0115 @subsection メッセージ本文 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã®å¤‰æ•°ã«å¯¾ã™ã‚‹å·¦ã‚·ãƒ•ト演算ã¯ä¸Šä½ãƒ“ットを切り詰ã‚ã¦ã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int func(unsigned int a) { if (a > 0x40000000U) { return a << 2; /* W0115 */ } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0116} 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã‚‹æã‚ŒãŒã‚りã¾ã™ã€‚ @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0116 @section W0116 @cindex W0116 @subsection メッセージ本文 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã‚‹æã‚ŒãŒã‚りã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã®å¤‰æ•°ã«å¯¾ã™ã‚‹å·¦ã‚·ãƒ•ト演算ã¯ä¸Šä½ãƒ“ットを切り詰ã‚ã¦ã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int func(unsigned int a) { if (a > 0x40000000U) { return a << 1; /* W0116 */ } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0115} 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã¾ã™ã€‚ @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0117 @section W0117 @cindex W0117 @subsection メッセージ本文 `%s' ã®å®šç¾©ã¯å¤–部çµåˆã‚’æŒã¡ã¾ã™ãŒã€å®šç¾©ã‚ˆã‚Šå‰ã«ãã®å®£è¨€ãŒã‚りã¾ã›ã‚“。 @subsection 内容 外部変数や外部関数ã¯è¤‡æ•°ã®ãƒ•ァイルã§ä½¿ç”¨ã•れるã“ã¨ã‚’想定ã—ã¦å®£è¨€ã•れã¾ã™ã€‚ 従ã£ã¦ã€ã“れらã¯ãƒ˜ãƒƒãƒ€ãƒ•ァイルã§å®£è¨€ã•れã€ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã—ã¦ä½¿ç”¨ã•れるã¹ãã§ã™ã€‚ ソースファイルã§å®£è¨€ã—ã¦ä½¿ç”¨ã™ã‚‹å ´åˆã€ãƒ˜ãƒƒãƒ€ãƒ•ァイルã§å®£è¨€ã—ã¦ä½¿ç”¨ã™ã‚‹ã‚ˆã‚Šã‚‚安全性ã€ä¿å®ˆæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) /* W0117 */ { ...snip... } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0118} 外部çµåˆã‚’æŒã¤ `%s' ã®å®£è¨€ãŒã€ãƒ˜ãƒƒãƒ€ãƒ•ァイルã®ä¸­ã«ã‚りã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0118 @section W0118 @cindex W0118 @subsection メッセージ本文 外部çµåˆã‚’æŒã¤ `%s' ã®å®£è¨€ãŒã€ãƒ˜ãƒƒãƒ€ãƒ•ァイルã®ä¸­ã«ã‚りã¾ã›ã‚“。 @subsection 内容 外部変数や外部関数ã¯è¤‡æ•°ã®ãƒ•ァイルã§ä½¿ç”¨ã•れるã“ã¨ã‚’想定ã—ã¦å®£è¨€ã•れã¾ã™ã€‚ 従ã£ã¦ã€ã“れらã¯ãƒ˜ãƒƒãƒ€ãƒ•ァイルã§å®£è¨€ã•れã€ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã—ã¦ä½¿ç”¨ã•れるã¹ãã§ã™ã€‚ ソースファイルã§å®£è¨€ã—ã¦ä½¿ç”¨ã™ã‚‹å ´åˆã€ãƒ˜ãƒƒãƒ€ãƒ•ァイルã§å®£è¨€ã—ã¦ä½¿ç”¨ã™ã‚‹ã‚ˆã‚Šã‚‚安全性ã€ä¿å®ˆæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @file{test.c} @verbatim extern int val; /* W0118 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0117} `%s' ã®å®šç¾©ã¯å¤–部çµåˆã‚’æŒã¡ã¾ã™ãŒã€å®šç¾©ã‚ˆã‚Šå‰ã«ãã®å®£è¨€ãŒã‚りã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0119 @section W0119 @cindex W0119 @subsection メッセージ本文 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(signed char a); void bar(char a) { signed char b = a; /* W0119 */ foo(a); /* W0119 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0120} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0121} 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0122} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0123} 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0124} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0125} 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0126} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0127} 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0128} 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0129} 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0130} 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0131} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0120 @section W0120 @cindex W0120 @subsection メッセージ本文 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned char a); void bar(char a) { unsigned char b = a; /* W0120 */ foo(a); /* W0120 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0119} 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0121} 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0122} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0123} 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0124} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0125} 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0126} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0127} 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0128} 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0129} 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0130} 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0131} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0121 @section W0121 @cindex W0121 @subsection メッセージ本文 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(short a); void bar(char a) { short b = a; /* W0121 */ foo(a); /* W0121 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0119} 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0120} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0122} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0123} 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0124} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0125} 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0126} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0127} 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0128} 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0129} 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0130} 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0131} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0122 @section W0122 @cindex W0122 @subsection メッセージ本文 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned short a); void bar(char a) { unsigned short b = a; /* W0122 */ foo(a); /* W0122 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0119} 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0120} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0121} 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0123} 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0124} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0125} 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0126} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0127} 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0128} 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0129} 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0130} 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0131} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0123 @section W0123 @cindex W0123 @subsection メッセージ本文 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(int a); void bar(char a) { int b = a; /* W0123 */ foo(a); /* W0123 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0119} 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0120} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0121} 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0122} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0124} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0125} 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0126} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0127} 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0128} 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0129} 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0130} 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0131} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0124 @section W0124 @cindex W0124 @subsection メッセージ本文 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned int a); void bar(char a) { unsigned int b = a; /* W0124 */ foo(a); /* W0124 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0119} 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0120} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0121} 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0122} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0123} 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0125} 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0126} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0127} 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0128} 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0129} 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0130} 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0131} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0125 @section W0125 @cindex W0125 @subsection メッセージ本文 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long a); void bar(char a) { long b = a; /* W0125 */ foo(a); /* W0125 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0119} 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0120} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0121} 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0122} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0123} 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0124} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0126} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0127} 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0128} 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0129} 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0130} 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0131} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0126 @section W0126 @cindex W0126 @subsection メッセージ本文 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long a); void bar(char a) { unsigned long b = a; /* W0126 */ foo(a); /* W0126 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0119} 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0120} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0121} 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0122} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0123} 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0124} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0125} 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0127} 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0128} 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0129} 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0130} 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0131} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0127 @section W0127 @cindex W0127 @subsection メッセージ本文 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(float a); void bar(char a) { float b = a; /* W0127 */ foo(a); /* W0127 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0119} 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0120} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0121} 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0122} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0123} 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0124} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0125} 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0126} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0128} 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0129} 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0130} 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0131} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0128 @section W0128 @cindex W0128 @subsection メッセージ本文 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(double a); void bar(char a) { double b = a; /* W0128 */ foo(a); /* W0128 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0119} 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0120} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0121} 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0122} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0123} 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0124} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0125} 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0126} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0127} 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0129} 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0130} 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0131} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0129 @section W0129 @cindex W0129 @subsection メッセージ本文 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long double a); void bar(char a) { long double b = a; /* W0129 */ foo(a); /* W0129 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0119} 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0120} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0121} 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0122} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0123} 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0124} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0125} 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0126} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0127} 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0128} 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0130} 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0131} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0130 @section W0130 @cindex W0130 @subsection メッセージ本文 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long long a); void bar(char a) { long long b = a; /* W0130 */ foo(a); /* W0130 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0119} 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0120} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0121} 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0122} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0123} 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0124} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0125} 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0126} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0127} 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0128} 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0129} 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0131} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0131 @section W0131 @cindex W0131 @subsection メッセージ本文 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long long a); void bar(char a) { unsigned long long b = a; /* W0131 */ foo(a); /* W0131 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0119} 暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0120} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0121} 暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0122} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0123} 暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0124} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0125} 暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0126} 暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0127} 暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0128} 暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0129} 暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0130} 暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0132 @section W0132 @cindex W0132 @subsection メッセージ本文 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(char a); void bar(unsigned char a) { char b = a; /* W0132 */ foo(a); /* W0132 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0133} 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0134} 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0135} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0136} 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0137} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0138} 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0139} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0140} 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0141} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0133 @section W0133 @cindex W0133 @subsection メッセージ本文 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(char a); void bar(signed char a) { char b = a; /* W0133 */ foo(a); /* W0133 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0132} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0134} 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0135} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0136} 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0137} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0138} 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0139} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0140} 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0141} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0134 @section W0134 @cindex W0134 @subsection メッセージ本文 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(char a); void bar(short a) { char b = a; /* W0134 */ foo(a); /* W0134 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0132} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0133} 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0135} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0136} 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0137} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0138} 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0139} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0140} 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0141} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0135 @section W0135 @cindex W0135 @subsection メッセージ本文 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(char a); void bar(unsigned short a) { char b = a; /* W0135 */ foo(a); /* W0135 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0132} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0133} 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0134} 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0136} 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0137} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0138} 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0139} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0140} 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0141} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0136 @section W0136 @cindex W0136 @subsection メッセージ本文 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(char a); void bar(int a) { char b = a; /* W0136 */ foo(a); /* W0136 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0132} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0133} 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0134} 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0135} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0137} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0138} 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0139} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0140} 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0141} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0137 @section W0137 @cindex W0137 @subsection メッセージ本文 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(char a); void bar(unsigned int a) { char b = a; /* W0137 */ foo(a); /* W0137 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0132} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0133} 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0134} 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0135} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0136} 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0138} 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0139} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0140} 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0141} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0138 @section W0138 @cindex W0138 @subsection メッセージ本文 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(char a); void bar(long a) { char b = a; /* W0138 */ foo(a); /* W0138 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0132} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0133} 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0134} 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0135} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0136} 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0137} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0139} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0140} 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0141} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0139 @section W0139 @cindex W0139 @subsection メッセージ本文 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(char a); void bar(unsigned long a) { char b = a; /* W0139 */ foo(a); /* W0139 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0132} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0133} 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0134} 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0135} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0136} 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0137} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0138} 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0140} 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0141} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0140 @section W0140 @cindex W0140 @subsection メッセージ本文 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(char a); void bar(long long a) { char b = a; /* W0140 */ foo(a); /* W0140 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0132} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0133} 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0134} 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0135} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0136} 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0137} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0138} 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0139} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0141} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0141 @section W0141 @cindex W0141 @subsection メッセージ本文 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(char a); void bar(unsigned long long a) { char b = a; /* W0141 */ foo(a); /* W0141 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0132} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0133} 暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0134} 暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0135} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0136} 暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0137} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0138} 暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0139} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0140} 暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0142 @section W0142 @cindex W0142 @subsection メッセージ本文 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(signed char a); void bar(unsigned char a) { signed char b = a; /* W0142 */ foo(a); /* W0142 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0143} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0144} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0145} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0146} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0147} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0148} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0149} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0150} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0151} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0152} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0153} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0154} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0155} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0156} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0143 @section W0143 @cindex W0143 @subsection メッセージ本文 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(signed char a); void bar(unsigned short a) { signed char b = a; /* W0143 */ foo(a); /* W0143 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0142} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0144} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0145} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0146} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0147} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0148} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0149} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0150} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0151} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0152} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0153} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0154} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0155} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0156} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0144 @section W0144 @cindex W0144 @subsection メッセージ本文 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(short a); void bar(unsigned short a) { short b = a; /* W0144 */ foo(a); /* W0144 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0142} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0143} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0145} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0146} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0147} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0148} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0149} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0150} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0151} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0152} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0153} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0154} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0155} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0156} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0145 @section W0145 @cindex W0145 @subsection メッセージ本文 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(signed char a); void bar(unsigned int a) { signed char b = a; /* W0145 */ foo(a); /* W0145 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0142} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0143} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0144} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0146} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0147} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0148} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0149} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0150} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0151} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0152} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0153} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0154} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0155} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0156} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0146 @section W0146 @cindex W0146 @subsection メッセージ本文 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(short a); void bar(unsigned int a) { short b = a; /* W0146 */ foo(a); /* W0146 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0142} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0143} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0144} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0145} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0147} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0148} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0149} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0150} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0151} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0152} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0153} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0154} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0155} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0156} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0147 @section W0147 @cindex W0147 @subsection メッセージ本文 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(int a); void bar(unsigned int a) { int b = a; /* W0147 */ foo(a); /* W0147 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0142} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0143} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0144} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0145} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0146} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0148} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0149} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0150} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0151} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0152} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0153} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0154} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0155} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0156} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0148 @section W0148 @cindex W0148 @subsection メッセージ本文 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(signed char a); void bar(unsigned long a) { signed char b = a; /* W0148 */ foo(a); /* W0148 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0142} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0143} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0144} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0145} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0146} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0147} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0149} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0150} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0151} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0152} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0153} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0154} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0155} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0156} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0149 @section W0149 @cindex W0149 @subsection メッセージ本文 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(short a); void bar(unsigned long a) { short b = a; /* W0149 */ foo(a); /* W0149 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0142} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0143} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0144} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0145} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0146} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0147} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0148} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0150} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0151} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0152} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0153} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0154} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0155} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0156} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0150 @section W0150 @cindex W0150 @subsection メッセージ本文 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(int a); void bar(unsigned long a) { int b = a; /* W0150 */ foo(a); /* W0150 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0142} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0143} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0144} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0145} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0146} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0147} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0148} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0149} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0151} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0152} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0153} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0154} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0155} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0156} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0151 @section W0151 @cindex W0151 @subsection メッセージ本文 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long a); void bar(unsigned long a) { long b = a; /* W0151 */ foo(a); /* W0151 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0142} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0143} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0144} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0145} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0146} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0147} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0148} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0149} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0150} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0152} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0153} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0154} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0155} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0156} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0152 @section W0152 @cindex W0152 @subsection メッセージ本文 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(signed char a); void bar(unsigned long long a) { signed char b = a; /* W0152 */ foo(a); /* W0152 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0142} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0143} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0144} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0145} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0146} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0147} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0148} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0149} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0150} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0151} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0153} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0154} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0155} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0156} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0153 @section W0153 @cindex W0153 @subsection メッセージ本文 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(short a); void bar(unsigned long long a) { short b = a; /* W0153 */ foo(a); /* W0153 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0142} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0143} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0144} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0145} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0146} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0147} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0148} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0149} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0150} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0151} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0152} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0154} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0155} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0156} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0154 @section W0154 @cindex W0154 @subsection メッセージ本文 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(int a); void bar(unsigned long long a) { int b = a; /* W0154 */ foo(a); /* W0154 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0142} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0143} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0144} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0145} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0146} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0147} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0148} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0149} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0150} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0151} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0152} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0153} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0155} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0156} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0155 @section W0155 @cindex W0155 @subsection メッセージ本文 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long a); void bar(unsigned long long a) { long b = a; /* W0155 */ foo(a); /* W0155 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0142} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0143} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0144} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0145} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0146} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0147} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0148} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0149} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0150} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0151} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0152} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0153} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0154} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0156} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0156 @section W0156 @cindex W0156 @subsection メッセージ本文 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long long a); void bar(unsigned long long a) { long long b = a; /* W0156 */ foo(a); /* W0156 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0142} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0143} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0144} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0145} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0146} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0147} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0148} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0149} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0150} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0151} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0152} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0153} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0154} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0155} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0157 @section W0157 @cindex W0157 @subsection メッセージ本文 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned char a); void bar(signed char a) { unsigned char b = a; /* W0157 */ foo(a); /* W0157 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0158 @section W0158 @cindex W0158 @subsection メッセージ本文 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned short a); void bar(signed char a) { unsigned short b = a; /* W0158 */ foo(a); /* W0158 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0159 @section W0159 @cindex W0159 @subsection メッセージ本文 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned int a); void bar(signed char a) { unsigned int b = a; /* W0159 */ foo(a); /* W0159 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0160 @section W0160 @cindex W0160 @subsection メッセージ本文 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long a); void bar(signed char a) { unsigned long b = a; /* W0160 */ foo(a); /* W0160 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0161 @section W0161 @cindex W0161 @subsection メッセージ本文 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned char a); void bar(short a) { unsigned char b = a; /* W0161 */ foo(a); /* W0161 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0162 @section W0162 @cindex W0162 @subsection メッセージ本文 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned short a); void bar(short a) { unsigned short b = a; /* W0162 */ foo(a); /* W0162 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0163 @section W0163 @cindex W0163 @subsection メッセージ本文 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned int a); void bar(short a) { unsigned int b = a; /* W0163 */ foo(a); /* W0163 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0164 @section W0164 @cindex W0164 @subsection メッセージ本文 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long a); void bar(short a) { unsigned long b = a; /* W0164 */ foo(a); /* W0164 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0165 @section W0165 @cindex W0165 @subsection メッセージ本文 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned char a); void bar(int a) { unsigned char b = a; /* W0165 */ foo(a); /* W0165 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0166 @section W0166 @cindex W0166 @subsection メッセージ本文 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned short a); void bar(int a) { unsigned short b = a; /* W0166 */ foo(a); /* W0166 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0167 @section W0167 @cindex W0167 @subsection メッセージ本文 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned int a); void bar(int a) { unsigned int b = a; /* W0167 */ foo(a); /* W0167 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0168 @section W0168 @cindex W0168 @subsection メッセージ本文 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long a); void bar(int a) { unsigned long b = a; /* W0168 */ foo(a); /* W0168 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0169 @section W0169 @cindex W0169 @subsection メッセージ本文 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned char a); void bar(long a) { unsigned char b = a; /* W0169 */ foo(a); /* W0169 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0170 @section W0170 @cindex W0170 @subsection メッセージ本文 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned short a); void bar(long a) { unsigned short b = a; /* W0170 */ foo(a); /* W0170 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0171 @section W0171 @cindex W0171 @subsection メッセージ本文 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned int a); void bar(long a) { unsigned int b = a; /* W0171 */ foo(a); /* W0171 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0172 @section W0172 @cindex W0172 @subsection メッセージ本文 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long a); void bar(long a) { unsigned long b = a; /* W0172 */ foo(a); /* W0172 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0173 @section W0173 @cindex W0173 @subsection メッセージ本文 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long long a); void bar(signed char a) { unsigned long long b = a; /* W0173 */ foo(a); /* W0173 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0174 @section W0174 @cindex W0174 @subsection メッセージ本文 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long long a); void bar(short a) { unsigned long long b = a; /* W0174 */ foo(a); /* W0174 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0175 @section W0175 @cindex W0175 @subsection メッセージ本文 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long long a); void bar(int a) { unsigned long long b = a; /* W0175 */ foo(a); /* W0175 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0176 @section W0176 @cindex W0176 @subsection メッセージ本文 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long long a); void bar(long a) { unsigned long long b = a; /* W0176 */ foo(a); /* W0176 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0177 @section W0177 @cindex W0177 @subsection メッセージ本文 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned char a); void bar(long long a) { unsigned char b = a; /* W0177 */ foo(a); /* W0177 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0178 @section W0178 @cindex W0178 @subsection メッセージ本文 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned short a); void bar(long long a) { unsigned short b = a; /* W0178 */ foo(a); /* W0178 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0179 @section W0179 @cindex W0179 @subsection メッセージ本文 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned int a); void bar(long long a) { unsigned int b = a; /* W0179 */ foo(a); /* W0179 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0180 @section W0180 @cindex W0180 @subsection メッセージ本文 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long a); void bar(long long a) { unsigned long b = a; /* W0180 */ foo(a); /* W0180 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0181} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0181 @section W0181 @cindex W0181 @subsection メッセージ本文 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long long a); void bar(long long a) { unsigned long long b = a; /* W0181 */ foo(a); /* W0181 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0157} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0158} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0159} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0160} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0161} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0162} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0163} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0164} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0165} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0166} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0167} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0168} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0169} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0170} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0171} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0172} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0173} 暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0174} 暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0175} 暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0176} 暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0177} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0178} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0179} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0180} 暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0182 @section W0182 @cindex W0182 @subsection メッセージ本文 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(float a); void bar(unsigned char a) { float b = a; /* W0182 */ foo(a); /* W0182 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0183 @section W0183 @cindex W0183 @subsection メッセージ本文 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(double a); void bar(unsigned char a) { double b = a; /* W0183 */ foo(a); /* W0183 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0184 @section W0184 @cindex W0184 @subsection メッセージ本文 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long double a); void bar(unsigned char a) { long double b = a; /* W0184 */ foo(a); /* W0184 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0185 @section W0185 @cindex W0185 @subsection メッセージ本文 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(float a); void bar(signed char a) { float b = a; /* W0185 */ foo(a); /* W0185 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0186 @section W0186 @cindex W0186 @subsection メッセージ本文 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(double a); void bar(signed char a) { double b = a; /* W0186 */ foo(a); /* W0186 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0187 @section W0187 @cindex W0187 @subsection メッセージ本文 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long double a); void bar(signed char a) { long double b = a; /* W0187 */ foo(a); /* W0187 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0188 @section W0188 @cindex W0188 @subsection メッセージ本文 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(float a); void bar(short a) { float b = a; /* W0188 */ foo(a); /* W0188 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0189 @section W0189 @cindex W0189 @subsection メッセージ本文 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(double a); void bar(short a) { double b = a; /* W0189 */ foo(a); /* W0189 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0190 @section W0190 @cindex W0190 @subsection メッセージ本文 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long double a); void bar(short a) { long double b = a; /* W0190 */ foo(a); /* W0190 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0191 @section W0191 @cindex W0191 @subsection メッセージ本文 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(float a); void bar(unsigned short a) { float b = a; /* W0191 */ foo(a); /* W0191 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0192 @section W0192 @cindex W0192 @subsection メッセージ本文 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(double a); void bar(unsigned short a) { double b = a; /* W0192 */ foo(a); /* W0192 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0193 @section W0193 @cindex W0193 @subsection メッセージ本文 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long double a); void bar(unsigned short a) { long double b = a; /* W0193 */ foo(a); /* W0193 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0194 @section W0194 @cindex W0194 @subsection メッセージ本文 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(float a); void bar(int a) { float b = a; /* W0194 */ foo(a); /* W0194 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0195 @section W0195 @cindex W0195 @subsection メッセージ本文 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(double a); void bar(int a) { double b = a; /* W0195 */ foo(a); /* W0195 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0196 @section W0196 @cindex W0196 @subsection メッセージ本文 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long double a); void bar(int a) { long double b = a; /* W0196 */ foo(a); /* W0196 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0197 @section W0197 @cindex W0197 @subsection メッセージ本文 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(float a); void bar(unsigned int a) { float b = a; /* W0197 */ foo(a); /* W0197 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0198 @section W0198 @cindex W0198 @subsection メッセージ本文 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(double a); void bar(unsigned int a) { double b = a; /* W0198 */ foo(a); /* W0198 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0199 @section W0199 @cindex W0199 @subsection メッセージ本文 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long double a); void bar(unsigned int a) { long double b = a; /* W0199 */ foo(a); /* W0199 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0200 @section W0200 @cindex W0200 @subsection メッセージ本文 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(float a); void bar(long a) { float b = a; /* W0200 */ foo(a); /* W0200 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0201 @section W0201 @cindex W0201 @subsection メッセージ本文 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(double a); void bar(long a) { double b = a; /* W0201 */ foo(a); /* W0201 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0202 @section W0202 @cindex W0202 @subsection メッセージ本文 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long double a); void bar(long a) { long double b = a; /* W0202 */ foo(a); /* W0202 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0203 @section W0203 @cindex W0203 @subsection メッセージ本文 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(float a); void bar(unsigned long a) { float b = a; /* W0203 */ foo(a); /* W0203 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0204 @section W0204 @cindex W0204 @subsection メッセージ本文 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(double a); void bar(unsigned long a) { double b = a; /* W0204 */ foo(a); /* W0204 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0205 @section W0205 @cindex W0205 @subsection メッセージ本文 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long double a); void bar(unsigned long a) { long double b = a; /* W0205 */ foo(a); /* W0205 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0206 @section W0206 @cindex W0206 @subsection メッセージ本文 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(float a); void bar(long long a) { float b = a; /* W0206 */ foo(a); /* W0206 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0207 @section W0207 @cindex W0207 @subsection メッセージ本文 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(double a); void bar(long long a) { double b = a; /* W0207 */ foo(a); /* W0207 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0208 @section W0208 @cindex W0208 @subsection メッセージ本文 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long double a); void bar(long long a) { long double b = a; /* W0208 */ foo(a); /* W0208 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0209 @section W0209 @cindex W0209 @subsection メッセージ本文 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(float a); void bar(unsigned long long a) { float b = a; /* W0209 */ foo(a); /* W0209 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0210 @section W0210 @cindex W0210 @subsection メッセージ本文 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(double a); void bar(unsigned long long a) { double b = a; /* W0210 */ foo(a); /* W0210 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0211} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0211 @section W0211 @cindex W0211 @subsection メッセージ本文 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long double a); void bar(unsigned long long a) { long double b = a; /* W0211 */ foo(a); /* W0211 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0182} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0183} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0184} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0185} 暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0186} 暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0187} 暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0188} 暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0189} 暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0190} 暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0191} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0192} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0193} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0194} 暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0195} 暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0196} 暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0197} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0198} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0199} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0200} 暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0201} 暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0202} 暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0203} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0204} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0205} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0206} 暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0207} 暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0208} 暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0209} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0210} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0212 @section W0212 @cindex W0212 @subsection メッセージ本文 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(char a); void bar(float a) { char b = a; /* W0212 */ foo(a); /* W0212 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0213 @section W0213 @cindex W0213 @subsection メッセージ本文 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(signed char a); void bar(float a) { signed char b = a; /* W0213 */ foo(a); /* W0213 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0214 @section W0214 @cindex W0214 @subsection メッセージ本文 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned char a); void bar(float a) { unsigned char b = a; /* W0214 */ foo(a); /* W0214 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0215 @section W0215 @cindex W0215 @subsection メッセージ本文 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(short a); void bar(float a) { short b = a; /* W0215 */ foo(a); /* W0215 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0216 @section W0216 @cindex W0216 @subsection メッセージ本文 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned short a); void bar(float a) { unsigned short b = a; /* W0216 */ foo(a); /* W0216 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0217 @section W0217 @cindex W0217 @subsection メッセージ本文 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(int a); void bar(float a) { int b = a; /* W0217 */ foo(a); /* W0217 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0218 @section W0218 @cindex W0218 @subsection メッセージ本文 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned int a); void bar(float a) { unsigned int b = a; /* W0218 */ foo(a); /* W0218 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0219 @section W0219 @cindex W0219 @subsection メッセージ本文 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long a); void bar(float a) { long b = a; /* W0219 */ foo(a); /* W0219 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0220 @section W0220 @cindex W0220 @subsection メッセージ本文 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long a); void bar(float a) { unsigned long b = a; /* W0220 */ foo(a); /* W0220 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0221 @section W0221 @cindex W0221 @subsection メッセージ本文 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(char a); void bar(double a) { char b = a; /* W0221 */ foo(a); /* W0221 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0222 @section W0222 @cindex W0222 @subsection メッセージ本文 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(signed char a); void bar(double a) { signed char b = a; /* W0222 */ foo(a); /* W0222 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0223 @section W0223 @cindex W0223 @subsection メッセージ本文 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned char a); void bar(double a) { unsigned char b = a; /* W0223 */ foo(a); /* W0223 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0224 @section W0224 @cindex W0224 @subsection メッセージ本文 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(short a); void bar(double a) { short b = a; /* W0224 */ foo(a); /* W0224 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0225 @section W0225 @cindex W0225 @subsection メッセージ本文 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned short a); void bar(double a) { unsigned short b = a; /* W0225 */ foo(a); /* W0225 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0226 @section W0226 @cindex W0226 @subsection メッセージ本文 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(int a); void bar(double a) { int b = a; /* W0226 */ foo(a); /* W0226 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0227 @section W0227 @cindex W0227 @subsection メッセージ本文 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned int a); void bar(double a) { unsigned int b = a; /* W0227 */ foo(a); /* W0227 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0228 @section W0228 @cindex W0228 @subsection メッセージ本文 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long a); void bar(double a) { long b = a; /* W0228 */ foo(a); /* W0228 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0229 @section W0229 @cindex W0229 @subsection メッセージ本文 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long a); void bar(double a) { unsigned long b = a; /* W0229 */ foo(a); /* W0229 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0230 @section W0230 @cindex W0230 @subsection メッセージ本文 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(char a); void bar(long double a) { char b = a; /* W0230 */ foo(a); /* W0230 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0231 @section W0231 @cindex W0231 @subsection メッセージ本文 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(signed char a); void bar(long double a) { signed char b = a; /* W0231 */ foo(a); /* W0231 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0232 @section W0232 @cindex W0232 @subsection メッセージ本文 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned char a); void bar(long double a) { unsigned char b = a; /* W0232 */ foo(a); /* W0232 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0233 @section W0233 @cindex W0233 @subsection メッセージ本文 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(short a); void bar(long double a) { short b = a; /* W0233 */ foo(a); /* W0233 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0234 @section W0234 @cindex W0234 @subsection メッセージ本文 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned short a); void bar(long double a) { unsigned short b = a; /* W0234 */ foo(a); /* W0234 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0235 @section W0235 @cindex W0235 @subsection メッセージ本文 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(int a); void bar(long double a) { int b = a; /* W0235 */ foo(a); /* W0235 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0236 @section W0236 @cindex W0236 @subsection メッセージ本文 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned int a); void bar(long double a) { unsigned int b = a; /* W0236 */ foo(a); /* W0236 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0237 @section W0237 @cindex W0237 @subsection メッセージ本文 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long a); void bar(long double a) { long b = a; /* W0237 */ foo(a); /* W0237 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0238 @section W0238 @cindex W0238 @subsection メッセージ本文 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long a); void bar(long double a) { unsigned long b = a; /* W0238 */ foo(a); /* W0238 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0239 @section W0239 @cindex W0239 @subsection メッセージ本文 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long long a); void bar(float a) { long long b = a; /* W0239 */ foo(a); /* W0239 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0240 @section W0240 @cindex W0240 @subsection メッセージ本文 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long long a); void bar(float a) { unsigned long long b = a; /* W0240 */ foo(a); /* W0240 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0241 @section W0241 @cindex W0241 @subsection メッセージ本文 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long long a); void bar(double a) { long long b = a; /* W0241 */ foo(a); /* W0241 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0242 @section W0242 @cindex W0242 @subsection メッセージ本文 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long long a); void bar(double a) { unsigned long long b = a; /* W0242 */ foo(a); /* W0242 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0243 @section W0243 @cindex W0243 @subsection メッセージ本文 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long long a); void bar(long double a) { long long b = a; /* W0243 */ foo(a); /* W0243 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0244} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0244 @section W0244 @cindex W0244 @subsection メッセージ本文 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long long a); void bar(long double a) { unsigned long long b = a; /* W0244 */ foo(a); /* W0244 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0212} 暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0213} 暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0214} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0215} 暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0216} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0217} 暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0218} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0219} 暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0220} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0221} 暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0222} 暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0223} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0224} 暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0225} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0226} 暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0227} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0228} 暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0229} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0230} 暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0231} 暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0232} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0233} 暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0234} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0235} 暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0236} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0237} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0238} 暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0239} 暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0240} 暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0241} 暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0242} 暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0243} 暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0245 @section W0245 @cindex W0245 @subsection メッセージ本文 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(short a); void bar(unsigned char a) { short b = a; /* W0245 */ foo(a); /* W0245 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0246} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0247} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0248} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0249} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0250} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0251} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0252} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0253} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0254} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0246 @section W0246 @cindex W0246 @subsection メッセージ本文 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(int a); void bar(unsigned char a) { int b = a; /* W0246 */ foo(a); /* W0246 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0245} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0247} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0248} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0249} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0250} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0251} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0252} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0253} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0254} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0247 @section W0247 @cindex W0247 @subsection メッセージ本文 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long a); void bar(unsigned char a) { long b = a; /* W0247 */ foo(a); /* W0247 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0245} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0246} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0248} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0249} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0250} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0251} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0252} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0253} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0254} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0248 @section W0248 @cindex W0248 @subsection メッセージ本文 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(int a); void bar(unsigned short a) { int b = a; /* W0248 */ foo(a); /* W0248 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0245} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0246} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0247} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0249} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0250} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0251} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0252} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0253} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0254} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0249 @section W0249 @cindex W0249 @subsection メッセージ本文 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long a); void bar(unsigned short a) { long b = a; /* W0249 */ foo(a); /* W0249 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0245} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0246} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0247} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0248} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0249} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0251} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0252} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0253} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0254} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0250 @section W0250 @cindex W0250 @subsection メッセージ本文 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long a); void bar(unsigned int a) { long b = a; /* W0250 */ foo(a); /* W0250 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0245} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0246} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0247} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0248} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0249} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0251} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0252} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0253} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0254} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0251 @section W0251 @cindex W0251 @subsection メッセージ本文 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long long a); void bar(unsigned char a) { long long b = a; /* W0251 */ foo(a); /* W0251 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0245} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0246} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0247} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0248} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0249} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0250} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0252} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0253} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0254} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0252 @section W0252 @cindex W0252 @subsection メッセージ本文 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long long a); void bar(unsigned short a) { long long b = a; /* W0252 */ foo(a); /* W0252 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0245} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0246} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0247} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0248} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0249} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0250} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0251} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0253} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0254} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0253 @section W0253 @cindex W0253 @subsection メッセージ本文 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long long a); void bar(unsigned int a) { long long b = a; /* W0253 */ foo(a); /* W0253 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0245} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0246} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0247} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0248} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0249} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0250} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0251} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0252} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0254} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0254 @section W0254 @cindex W0254 @subsection メッセージ本文 暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long long a); void bar(unsigned long a) { long long b = a; /* W0254 */ foo(a); /* W0254 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0245} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0246} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0247} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0248} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0249} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0250} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0251} 暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0252} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0253} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0255 @section W0255 @cindex W0255 @subsection メッセージ本文 char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim signed char func(void) { char a = 0; return a; /* W0255 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0256} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0257} char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0258} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0259} char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0260} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0261} char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0262} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0263} char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0264} char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0265} char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0266} char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0267} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0256 @section W0256 @cindex W0256 @subsection メッセージ本文 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned char func(void) { char a = 0; return a; /* W0256 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0255} char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0257} char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0258} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0259} char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0260} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0261} char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0262} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0263} char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0264} char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0265} char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0266} char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0267} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0257 @section W0257 @cindex W0257 @subsection メッセージ本文 char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim short func(void) { char a = 0; return a; /* W0257 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0255} char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0256} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0258} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0259} char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0260} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0261} char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0262} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0263} char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0264} char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0265} char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0266} char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0267} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0258 @section W0258 @cindex W0258 @subsection メッセージ本文 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned short func(void) { char a = 0; return a; /* W0258 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0255} char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0256} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0257} char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0259} char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0260} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0261} char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0262} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0263} char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0264} char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0265} char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0266} char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0267} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0259 @section W0259 @cindex W0259 @subsection メッセージ本文 char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(void) { char a = 0; return a; /* W0259 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0255} char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0256} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0257} char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0258} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0260} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0261} char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0262} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0263} char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0264} char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0265} char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0266} char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0267} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0260 @section W0260 @cindex W0260 @subsection メッセージ本文 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int func(void) { char a = 0; return a; /* W0260 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0255} char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0256} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0257} char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0258} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0259} char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0261} char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0262} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0263} char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0264} char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0265} char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0266} char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0267} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0261 @section W0261 @cindex W0261 @subsection メッセージ本文 char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long func(void) { char a = 0; return a; /* W0261 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0255} char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0256} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0257} char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0258} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0259} char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0260} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0262} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0263} char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0264} char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0265} char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0266} char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0267} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0262 @section W0262 @cindex W0262 @subsection メッセージ本文 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long func(void) { char a = 0; return a; /* W0262 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0255} char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0256} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0257} char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0258} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0259} char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0260} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0261} char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0263} char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0264} char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0265} char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0266} char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0267} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0263 @section W0263 @cindex W0263 @subsection メッセージ本文 char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim float func(void) { char a = 0; return a; /* W0263 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0255} char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0256} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0257} char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0258} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0259} char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0260} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0261} char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0262} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0264} char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0265} char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0266} char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0267} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0264 @section W0264 @cindex W0264 @subsection メッセージ本文 char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim double func(void) { char a = 0; return a; /* W0264 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0255} char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0256} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0257} char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0258} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0259} char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0260} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0261} char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0262} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0263} char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0265} char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0266} char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0267} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0265 @section W0265 @cindex W0265 @subsection メッセージ本文 char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long double func(void) { char a = 0; return a; /* W0265 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0255} char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0256} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0257} char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0258} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0259} char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0260} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0261} char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0262} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0263} char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0264} char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0266} char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0267} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0266 @section W0266 @cindex W0266 @subsection メッセージ本文 char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long long func(void) { char a = 0; return a; /* W0266 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0255} char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0256} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0257} char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0258} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0259} char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0260} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0261} char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0262} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0263} char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0264} char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0265} char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0267} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0267 @section W0267 @cindex W0267 @subsection メッセージ本文 char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã‹ã‚‰ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long long func(void) { char a = 0; return a; /* W0267 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0255} char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0256} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0257} char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0258} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0259} char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0260} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0261} char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0262} char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0263} char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0264} char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0265} char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0266} char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0268 @section W0268 @cindex W0268 @subsection メッセージ本文 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim char func(void) { unsigned char a = 0; return a; /* W0268 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0269} signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0270} signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0271} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0272} signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0273} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0274} signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0275} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0276} signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0277} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0269 @section W0269 @cindex W0269 @subsection メッセージ本文 signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim char func(void) { signed char a = 0; return a; /* W0269 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0268} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0270} signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0271} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0272} signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0273} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0274} signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0275} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0276} signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0277} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0270 @section W0270 @cindex W0270 @subsection メッセージ本文 signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim char func(void) { short a = 0; return a; /* W0270 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0268} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0269} signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0271} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0272} signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0273} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0274} signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0275} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0276} signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0277} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0271 @section W0271 @cindex W0271 @subsection メッセージ本文 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim char func(void) { unsigned short a = 0; return a; /* W0271 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0268} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0269} signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0270} signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0272} signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0273} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0274} signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0275} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0276} signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0277} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0272 @section W0272 @cindex W0272 @subsection メッセージ本文 signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim char func(void) { int a = 0; return a; /* W0272 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0268} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0269} signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0270} signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0271} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0273} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0274} signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0275} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0276} signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0277} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0273 @section W0273 @cindex W0273 @subsection メッセージ本文 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim char func(void) { unsigned int a = 0; return a; /* W0273 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0268} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0269} signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0270} signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0271} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0272} signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0274} signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0275} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0276} signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0277} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0274 @section W0274 @cindex W0274 @subsection メッセージ本文 signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim char func(void) { long a = 0; return a; /* W0274 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0268} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0269} signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0270} signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0271} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0272} signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0273} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0275} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0276} signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0277} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0275 @section W0275 @cindex W0275 @subsection メッセージ本文 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim char func(void) { unsigned long a = 0; return a; /* W0275 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0268} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0269} signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0270} signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0271} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0272} signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0273} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0274} signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0276} signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0277} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0276 @section W0276 @cindex W0276 @subsection メッセージ本文 signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim char func(void) { long long a = 0; return a; /* W0276 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0268} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0269} signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0270} signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0271} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0272} signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0273} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0274} signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0275} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0277} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0277 @section W0277 @cindex W0277 @subsection メッセージ本文 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å˜ãªã‚‹ @code{char} åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim char func(void) { unsigned long long a = 0; return a; /* W0277 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0268} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0269} signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0270} signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0271} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0272} signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0273} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0274} signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0275} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0276} signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0278 @section W0278 @cindex W0278 @subsection メッセージ本文 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim signed char func(void) { unsigned char a = 0; return a; /* W0278 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0279} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0280} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0281} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0282} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0283} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0284} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0285} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0286} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0287} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0288} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0289} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0290} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0291} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0292} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0279 @section W0279 @cindex W0279 @subsection メッセージ本文 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim signed char func(void) { unsigned short a = 0; return a; /* W0279 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0278} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0280} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0281} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0282} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0283} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0284} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0285} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0286} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0287} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0288} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0289} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0290} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0291} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0292} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0280 @section W0280 @cindex W0280 @subsection メッセージ本文 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim short func(void) { unsigned short a = 0; return a; /* W0280 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0278} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0279} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0281} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0282} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0283} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0284} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0285} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0286} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0287} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0288} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0289} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0290} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0291} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0292} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0281 @section W0281 @cindex W0281 @subsection メッセージ本文 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim signed char func(void) { unsigned int a = 0; return a; /* W0281 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0278} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0279} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0280} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0282} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0283} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0284} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0285} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0286} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0287} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0288} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0289} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0290} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0291} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0292} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0282 @section W0282 @cindex W0282 @subsection メッセージ本文 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim short func(void) { unsigned int a = 0; return a; /* W0282 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0278} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0279} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0280} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0281} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0283} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0284} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0285} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0286} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0287} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0288} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0289} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0290} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0291} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0292} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0283 @section W0283 @cindex W0283 @subsection メッセージ本文 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(void) { unsigned int a = 0; return a; /* W0283 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0278} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0279} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0280} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0281} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0282} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0284} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0285} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0286} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0287} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0288} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0289} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0290} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0291} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0292} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0284 @section W0284 @cindex W0284 @subsection メッセージ本文 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim signed char func(void) { unsigned long a = 0; return a; /* W0284 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0278} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0279} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0280} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0281} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0282} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0283} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0285} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0286} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0287} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0288} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0289} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0290} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0291} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0292} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0285 @section W0285 @cindex W0285 @subsection メッセージ本文 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim short func(void) { unsigned long a = 0; return a; /* W0285 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0278} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0279} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0280} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0281} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0282} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0283} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0284} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0286} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0287} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0288} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0289} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0290} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0291} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0292} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0286 @section W0286 @cindex W0286 @subsection メッセージ本文 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(void) { unsigned long a = 0; return a; /* W0286 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0278} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0279} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0280} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0281} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0282} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0283} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0284} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0285} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0287} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0288} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0289} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0290} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0291} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0292} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0287 @section W0287 @cindex W0287 @subsection メッセージ本文 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long func(void) { unsigned long a = 0; return a; /* W0287 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0278} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0279} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0280} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0281} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0282} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0283} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0284} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0285} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0286} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0288} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0289} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0290} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0291} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0292} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0288 @section W0288 @cindex W0288 @subsection メッセージ本文 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim signed char func(void) { unsigned long long a = 0; return a; /* W0288 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0278} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0279} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0280} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0281} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0282} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0283} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0284} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0285} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0286} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0287} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0289} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0290} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0291} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0292} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0289 @section W0289 @cindex W0289 @subsection メッセージ本文 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim short func(void) { unsigned long long a = 0; return a; /* W0289 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0278} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0279} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0280} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0281} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0282} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0283} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0284} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0285} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0286} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0287} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0288} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0290} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0291} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0292} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0290 @section W0290 @cindex W0290 @subsection メッセージ本文 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(void) { unsigned long long a = 0; return a; /* W0290 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0278} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0279} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0280} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0281} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0282} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0283} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0284} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0285} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0286} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0287} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0288} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0289} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0291} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0292} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0291 @section W0291 @cindex W0291 @subsection メッセージ本文 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long func(void) { unsigned long long a = 0; return a; /* W0291 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0278} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0279} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0280} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0281} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0282} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0283} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0284} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0285} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0286} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0287} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0288} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0289} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0290} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0292} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0292 @section W0292 @cindex W0292 @subsection メッセージ本文 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long long func(void) { unsigned long long a = 0; return a; /* W0292 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0278} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0279} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0280} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0281} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0282} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0283} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0284} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0285} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0286} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0287} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0288} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0289} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0290} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0291} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0293 @section W0293 @cindex W0293 @subsection メッセージ本文 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned char func(void) { signed char a = 0; return a; /* W0293 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0294 @section W0294 @cindex W0294 @subsection メッセージ本文 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned short func(void) { signed char a = 0; return a; /* W0294 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0295 @section W0295 @cindex W0295 @subsection メッセージ本文 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int func(void) { signed char a = 0; return a; /* W0295 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0296 @section W0296 @cindex W0296 @subsection メッセージ本文 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long func(void) { signed char a = 0; return a; /* W0296 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0297 @section W0297 @cindex W0297 @subsection メッセージ本文 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned char func(void) { short a = 0; return a; /* W0297 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0298 @section W0298 @cindex W0298 @subsection メッセージ本文 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned short func(void) { short a = 0; return a; /* W0298 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0299 @section W0299 @cindex W0299 @subsection メッセージ本文 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int func(void) { short a = 0; return a; /* W0299 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0300 @section W0300 @cindex W0300 @subsection メッセージ本文 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long func(void) { short a = 0; return a; /* W0300 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0301 @section W0301 @cindex W0301 @subsection メッセージ本文 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned char func(void) { int a = 0; return a; /* W0301 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0302 @section W0302 @cindex W0302 @subsection メッセージ本文 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned short func(void) { int a = 0; return a; /* W0302 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0303 @section W0303 @cindex W0303 @subsection メッセージ本文 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int func(void) { int a = 0; return a; /* W0303 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0304 @section W0304 @cindex W0304 @subsection メッセージ本文 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long func(void) { int a = 0; return a; /* W0304 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0305 @section W0305 @cindex W0305 @subsection メッセージ本文 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned char func(void) { long a = 0; return a; /* W0305 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0306 @section W0306 @cindex W0306 @subsection メッセージ本文 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned short func(void) { long a = 0; return a; /* W0306 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0307 @section W0307 @cindex W0307 @subsection メッセージ本文 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int func(void) { long a = 0; return a; /* W0307 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0308 @section W0308 @cindex W0308 @subsection メッセージ本文 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long func(void) { long a = 0; return a; /* W0308 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0309 @section W0309 @cindex W0309 @subsection メッセージ本文 signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long long func(void) { signed char a = 0; return a; /* W0309 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0310 @section W0310 @cindex W0310 @subsection メッセージ本文 signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long long func(void) { short a = 0; return a; /* W0310 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0311 @section W0311 @cindex W0311 @subsection メッセージ本文 signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long long func(void) { int a = 0; return a; /* W0311 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0312 @section W0312 @cindex W0312 @subsection メッセージ本文 signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long long func(void) { long a = 0; return a; /* W0312 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0313 @section W0313 @cindex W0313 @subsection メッセージ本文 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned char func(void) { long long a = 0; return a; /* W0313 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0314 @section W0314 @cindex W0314 @subsection メッセージ本文 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned short func(void) { long long a = 0; return a; /* W0314 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0315 @section W0315 @cindex W0315 @subsection メッセージ本文 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int func(void) { long long a = 0; return a; /* W0315 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0316 @section W0316 @cindex W0316 @subsection メッセージ本文 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚ˆã‚Šå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long func(void) { long long a = 0; return a; /* W0316 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0317} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0317 @section W0317 @cindex W0317 @subsection メッセージ本文 signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ã¤ãåž‹ã‹ã‚‰ç¬¦å·ãªã—åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã‹ã‚‰å¤§ããªæ­£ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long long func(void) { long long a = 0; return a; /* W0317 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0293} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0294} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0295} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0296} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0297} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0298} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0299} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0300} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0301} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0302} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0303} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0304} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0305} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0306} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0307} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0308} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0309} signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0310} signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0311} signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0312} signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0313} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0314} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0315} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0316} signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0318 @section W0318 @cindex W0318 @subsection メッセージ本文 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim float func(void) { unsigned char a = 0; return a; /* W0318 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0319 @section W0319 @cindex W0319 @subsection メッセージ本文 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim double func(void) { unsigned char a = 0; return a; /* W0319 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0320 @section W0320 @cindex W0320 @subsection メッセージ本文 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long double func(void) { unsigned char a = 0; return a; /* W0320 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0321 @section W0321 @cindex W0321 @subsection メッセージ本文 signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim float func(void) { unsigned char a = 0; return a; /* W0321 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0322 @section W0322 @cindex W0322 @subsection メッセージ本文 signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim double func(void) { unsigned char a = 0; return a; /* W0322 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0323 @section W0323 @cindex W0323 @subsection メッセージ本文 signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long double func(void) { unsigned char a = 0; return a; /* W0323 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0324 @section W0324 @cindex W0324 @subsection メッセージ本文 signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim float func(void) { short a = 0; return a; /* W0324 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0325 @section W0325 @cindex W0325 @subsection メッセージ本文 signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim double func(void) { short a = 0; return a; /* W0325 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0326 @section W0326 @cindex W0326 @subsection メッセージ本文 signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long double func(void) { short a = 0; return a; /* W0326 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0327 @section W0327 @cindex W0327 @subsection メッセージ本文 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim float func(void) { unsigned short a = 0; return a; /* W0327 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0328 @section W0328 @cindex W0328 @subsection メッセージ本文 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim double func(void) { unsigned short a = 0; return a; /* W0328 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0329 @section W0329 @cindex W0329 @subsection メッセージ本文 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long double func(void) { unsigned short a = 0; return a; /* W0329 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0330 @section W0330 @cindex W0330 @subsection メッセージ本文 signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim float func(void) { int a = 0; return a; /* W0330 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0331 @section W0331 @cindex W0331 @subsection メッセージ本文 signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim double func(void) { int a = 0; return a; /* W0331 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0332 @section W0332 @cindex W0332 @subsection メッセージ本文 signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long double func(void) { int a = 0; return a; /* W0332 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0333 @section W0333 @cindex W0333 @subsection メッセージ本文 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim float func(void) { unsigned int a = 0; return a; /* W0333 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0334 @section W0334 @cindex W0334 @subsection メッセージ本文 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim double func(void) { unsigned int a = 0; return a; /* W0334 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0335 @section W0335 @cindex W0335 @subsection メッセージ本文 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long double func(void) { unsigned int a = 0; return a; /* W0335 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0336 @section W0336 @cindex W0336 @subsection メッセージ本文 signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim float func(void) { long a = 0; return a; /* W0336 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0337 @section W0337 @cindex W0337 @subsection メッセージ本文 signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim double func(void) { long a = 0; return a; /* W0337 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0338 @section W0338 @cindex W0338 @subsection メッセージ本文 signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long double func(void) { long a = 0; return a; /* W0338 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0339 @section W0339 @cindex W0339 @subsection メッセージ本文 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim float func(void) { unsigned long a = 0; return a; /* W0339 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0340 @section W0340 @cindex W0340 @subsection メッセージ本文 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim double func(void) { unsigned long a = 0; return a; /* W0340 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0341 @section W0341 @cindex W0341 @subsection メッセージ本文 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long double func(void) { unsigned long a = 0; return a; /* W0341 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0342 @section W0342 @cindex W0342 @subsection メッセージ本文 signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim float func(void) { long long a = 0; return a; /* W0342 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0343 @section W0343 @cindex W0343 @subsection メッセージ本文 signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim double func(void) { long long a = 0; return a; /* W0343 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0344 @section W0344 @cindex W0344 @subsection メッセージ本文 signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long double func(void) { long long a = 0; return a; /* W0344 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0345 @section W0345 @cindex W0345 @subsection メッセージ本文 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim float func(void) { unsigned long long a = 0; return a; /* W0345 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0346 @section W0346 @cindex W0346 @subsection メッセージ本文 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim double func(void) { unsigned long long a = 0; return a; /* W0346 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0347} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0347 @section W0347 @cindex W0347 @subsection メッセージ本文 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°åž‹ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long double func(void) { unsigned long long a = 0; return a; /* W0347 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0318} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0319} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0320} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0321} signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0322} signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0323} signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0324} signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0325} signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0326} signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0327} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0328} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0329} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0330} signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0331} signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0332} signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0333} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0334} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0335} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0336} signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0337} signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0338} signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0339} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0340} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0341} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0342} signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0343} signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0344} signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0345} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0346} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0348 @section W0348 @cindex W0348 @subsection メッセージ本文 float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim char func(void) { float a = 0; return a; /* W0348 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0349 @section W0349 @cindex W0349 @subsection メッセージ本文 float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim signed char func(void) { float a = 0; return a; /* W0349 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0350 @section W0350 @cindex W0350 @subsection メッセージ本文 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned char func(void) { float a = 0; return a; /* W0350 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0351 @section W0351 @cindex W0351 @subsection メッセージ本文 float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim short func(void) { float a = 0; return a; /* W0351 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0352 @section W0352 @cindex W0352 @subsection メッセージ本文 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned short func(void) { float a = 0; return a; /* W0352 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0353 @section W0353 @cindex W0353 @subsection メッセージ本文 float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(void) { float a = 0; return a; /* W0353 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0354 @section W0354 @cindex W0354 @subsection メッセージ本文 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int func(void) { float a = 0; return a; /* W0354 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0355 @section W0355 @cindex W0355 @subsection メッセージ本文 float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long func(void) { float a = 0; return a; /* W0355 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0356 @section W0356 @cindex W0356 @subsection メッセージ本文 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long func(void) { float a = 0; return a; /* W0356 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0357 @section W0357 @cindex W0357 @subsection メッセージ本文 double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim char func(void) { double a = 0; return a; /* W0357 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0358 @section W0358 @cindex W0358 @subsection メッセージ本文 double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim signed char func(void) { double a = 0; return a; /* W0358 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0359 @section W0359 @cindex W0359 @subsection メッセージ本文 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned char func(void) { double a = 0; return a; /* W0359 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0360 @section W0360 @cindex W0360 @subsection メッセージ本文 double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim short func(void) { double a = 0; return a; /* W0360 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0361 @section W0361 @cindex W0361 @subsection メッセージ本文 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned short func(void) { double a = 0; return a; /* W0361 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0362 @section W0362 @cindex W0362 @subsection メッセージ本文 double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(void) { double a = 0; return a; /* W0362 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0363 @section W0363 @cindex W0363 @subsection メッセージ本文 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int func(void) { double a = 0; return a; /* W0363 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0364 @section W0364 @cindex W0364 @subsection メッセージ本文 double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long func(void) { double a = 0; return a; /* W0364 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0365 @section W0365 @cindex W0365 @subsection メッセージ本文 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long func(void) { double a = 0; return a; /* W0365 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0366 @section W0366 @cindex W0366 @subsection メッセージ本文 long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim char func(void) { long double a = 0; return a; /* W0366 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0367 @section W0367 @cindex W0367 @subsection メッセージ本文 long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim signed char func(void) { long double a = 0; return a; /* W0367 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0368 @section W0368 @cindex W0368 @subsection メッセージ本文 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned char func(void) { long double a = 0; return a; /* W0368 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0369 @section W0369 @cindex W0369 @subsection メッセージ本文 long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim short func(void) { long double a = 0; return a; /* W0369 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0370 @section W0370 @cindex W0370 @subsection メッセージ本文 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned short func(void) { long double a = 0; return a; /* W0370 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0371 @section W0371 @cindex W0371 @subsection メッセージ本文 long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(void) { long double a = 0; return a; /* W0371 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0372 @section W0372 @cindex W0372 @subsection メッセージ本文 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int func(void) { long double a = 0; return a; /* W0372 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0373 @section W0373 @cindex W0373 @subsection メッセージ本文 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long func(void) { long double a = 0; return a; /* W0373 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0374 @section W0374 @cindex W0374 @subsection メッセージ本文 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long func(void) { long double a = 0; return a; /* W0374 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0375 @section W0375 @cindex W0375 @subsection メッセージ本文 float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long long func(void) { float a = 0; return a; /* W0375 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0376 @section W0376 @cindex W0376 @subsection メッセージ本文 float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long long func(void) { float a = 0; return a; /* W0376 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0377 @section W0377 @cindex W0377 @subsection メッセージ本文 double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long long func(void) { double a = 0; return a; /* W0377 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0378 @section W0378 @cindex W0378 @subsection メッセージ本文 double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long long func(void) { double a = 0; return a; /* W0378 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0379 @section W0379 @cindex W0379 @subsection メッセージ本文 long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long long func(void) { long double a = 0; return a; /* W0379 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0380} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0380 @section W0380 @cindex W0380 @subsection メッセージ本文 long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã‹ã‚‰æ•´æ•°åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned long long func(void) { long double a = 0; return a; /* W0380 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0348} float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0349} float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0350} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0351} float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0352} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0353} float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0354} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0355} float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0356} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0357} double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0358} double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0359} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0360} double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0361} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0362} double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0363} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0364} double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0365} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0366} long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0367} long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0368} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0369} long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0370} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0371} long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0372} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0373} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0374} long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0375} float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0376} float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0377} double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0378} double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0379} long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0381 @section W0381 @cindex W0381 @subsection メッセージ本文 signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim signed char func(void) { short a = 0; return a; /* W0381 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0382 @section W0382 @cindex W0382 @subsection メッセージ本文 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim unsigned char func(void) { unsigned short a = 0; return a; /* W0382 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0383 @section W0383 @cindex W0383 @subsection メッセージ本文 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim signed char func(void) { int a = 0; return a; /* W0383 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0384 @section W0384 @cindex W0384 @subsection メッセージ本文 signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim short func(void) { int a = 0; return a; /* W0384 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0385 @section W0385 @cindex W0385 @subsection メッセージ本文 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim unsigned char func(void) { unsigned int a = 0; return a; /* W0385 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0386 @section W0386 @cindex W0386 @subsection メッセージ本文 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim unsigned short func(void) { unsigned int a = 0; return a; /* W0386 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®値ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0387 @section W0387 @cindex W0387 @subsection メッセージ本文 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim signed char func(void) { long a = 0; return a; /* W0387 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0388 @section W0388 @cindex W0388 @subsection メッセージ本文 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim short func(void) { long a = 0; return a; /* W0388 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0389 @section W0389 @cindex W0389 @subsection メッセージ本文 signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim int func(void) { long a = 0; return a; /* W0389 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0390 @section W0390 @cindex W0390 @subsection メッセージ本文 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim unsigned char func(void) { unsigned long a = 0; return a; /* W0390 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0391 @section W0391 @cindex W0391 @subsection メッセージ本文 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim unsigned short func(void) { unsigned long a = 0; return a; /* W0391 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0392 @section W0392 @cindex W0392 @subsection メッセージ本文 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim unsigned int func(void) { unsigned long a = 0; return a; /* W0392 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0393 @section W0393 @cindex W0393 @subsection メッセージ本文 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim signed char func(void) { long long a = 0; return a; /* W0393 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0394 @section W0394 @cindex W0394 @subsection メッセージ本文 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim short func(void) { long long a = 0; return a; /* W0394 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0395 @section W0395 @cindex W0395 @subsection メッセージ本文 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim int func(void) { long long a = 0; return a; /* W0395 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0396 @section W0396 @cindex W0396 @subsection メッセージ本文 signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim long func(void) { long long a = 0; return a; /* W0396 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0397 @section W0397 @cindex W0397 @subsection メッセージ本文 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim unsigned char func(void) { unsigned long long a = 0; return a; /* W0397 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0398 @section W0398 @cindex W0398 @subsection メッセージ本文 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim unsigned short func(void) { unsigned long long a = 0; return a; /* W0398 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0399 @section W0399 @cindex W0399 @subsection メッセージ本文 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim unsigned int func(void) { unsigned long long a = 0; return a; /* W0399 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0400} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0400 @section W0400 @cindex W0400 @subsection メッセージ本文 unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€å°ã•ã„データ型ã«ã‚­ãƒ£ã‚¹ãƒˆã•れãŸçµæžœã‚’表ç¾ã™ã‚‹ã“ã¨ãŒã§ããªã„å ´åˆã®å‡¦ç†ã¯å‡¦ç†ç³»ä¾å­˜ã§ã™ã€‚ @subsection サンプルコード @verbatim unsigned long func(void) { unsigned long long a = 0; return a; /* W0400 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0381} signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0382} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0383} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0384} signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0385} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0386} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0387} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0388} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0389} signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0390} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0391} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0392} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0393} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0394} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0395} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0396} signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0397} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0398} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0399} unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0401 @section W0401 @cindex W0401 @subsection メッセージ本文 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim short func(void) { unsigned char a = 0; return a; /* W0401 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0402} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0403} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0404} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0405} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0406} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0407} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0408} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0409} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0410} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0402 @section W0402 @cindex W0402 @subsection メッセージ本文 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(void) { unsigned char a = 0; return a; /* W0402 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0401} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0403} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0404} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0405} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0406} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0407} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0408} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0409} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0410} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0403 @section W0403 @cindex W0403 @subsection メッセージ本文 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long func(void) { unsigned char a = 0; return a; /* W0403 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0401} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0402} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0404} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0405} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0406} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0407} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0408} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0409} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0410} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0404 @section W0404 @cindex W0404 @subsection メッセージ本文 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(void) { unsigned short a = 0; return a; /* W0404 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0401} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0402} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0403} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0405} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0406} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0407} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0408} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0409} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0410} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0405 @section W0405 @cindex W0405 @subsection メッセージ本文 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long func(void) { unsigned short a = 0; return a; /* W0405 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0401} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0402} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0403} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0404} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0406} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0407} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0408} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0409} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0410} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0406 @section W0406 @cindex W0406 @subsection メッセージ本文 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long func(void) { unsigned int a = 0; return a; /* W0406 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0401} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0402} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0403} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0404} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0405} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0407} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0408} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0409} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0410} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0407 @section W0407 @cindex W0407 @subsection メッセージ本文 unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long long func(void) { unsigned char a = 0; return a; /* W0407 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0401} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0402} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0403} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0404} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0405} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0406} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0408} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0409} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0410} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0408 @section W0408 @cindex W0408 @subsection メッセージ本文 unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long long func(void) { unsigned short a = 0; return a; /* W0408 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0401} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0402} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0403} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0404} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0405} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0406} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0407} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0409} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0410} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0409 @section W0409 @cindex W0409 @subsection メッセージ本文 unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long long func(void) { unsigned int a = 0; return a; /* W0409 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0401} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0402} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0403} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0404} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0405} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0406} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0407} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0408} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0410} unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0410 @section W0410 @cindex W0410 @subsection メッセージ本文 unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 符å·ãªã—åž‹ã‹ã‚‰ç¬¦å·ã¤ãåž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€çµæžœãŒæ„図ã›ãšè² ã®æ•°ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim long long func(void) { unsigned long a = 0; return a; /* W0410 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0401} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0402} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0403} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0404} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0405} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0406} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0407} unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0408} unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0409} unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0411 @section W0411 @cindex W0411 @subsection メッセージ本文 列挙体ã¯ã€æœ€åˆã ã‘åˆæœŸåŒ–ã™ã‚‹ã‹ã€å…¨ã¦ã‚’åˆæœŸåŒ–ã™ã‚‹ã‹ã€å…¨ãåˆæœŸåŒ–ã—ãªã„ã‹ã®ã„ãšã‚Œã‹ã«ã—ã¦ãã ã•ã„。 @subsection 内容 “列挙型ã®åˆæœŸåŒ–ãŒä¸å分â€ã¨åˆ¤æ–­ã•れるã®ã¯ã€ã‚µãƒ³ãƒ—ルコードã®ã‚ˆã†ãªåˆæœŸåŒ–ã®å ´åˆã§ã™ã€‚ ã“ã®ã‚ˆã†ãªåˆæœŸåŒ–を行ã†ã¨ã€@code{spring} ã‚„ @code{winter} ãŒã©ã®ã‚ˆã†ãªå€¤ã§åˆæœŸåŒ–ã•れã¦ã„ã‚‹ã®ã‹ãŒã‚ã‹ã‚Šã¥ã‚‰ããªã‚Šã¾ã™ã€‚ ã¾ãŸã€æ„図的ã«è¡Œã£ã¦ã„ã‚‹ã®ã‹ã€ä¸€éƒ¨ã®åˆæœŸåŒ–を忘れã¦ã„ã‚‹ã®ã‹ã®åˆ¤æ–­ã‚‚難ã—ããªã‚Šã¾ã™ã€‚ ä»¥ä¸Šã‚ˆã‚Šã€æ··ä¹±ã‚’æ‹›ãå¯èƒ½æ€§ã®é«˜ã„記述ã ã¨è¨€ãˆã¾ã™ã€‚ @subsection サンプルコード @verbatim enum SEASON1 { /* W0411 */ SPRING, SUMMER = 4, AUTUMN = 8, WINTER }; enum SEASON2 { /* OK */ SPRING, SUMMER, AUTUMN, WINTER }; enum SEASON3 { /* OK */ SPRING = 0, SUMMER = 1, AUTUMN = 2, WINTER = 3 }; enum SEASON4 { /* OK */ SPRING = 1, SUMMER, AUTUMN, WINTER }; @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0413 @section W0413 @cindex W0413 @subsection メッセージ本文 åˆ¶å¾¡æ–‡ã®æœ¬ä½“㌠`@{@}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックã«ãªã£ã¦ã„ã¾ã›ã‚“。 @subsection 内容 波括弧ãŒãªã‘れã°ã€æœ¬ä½“ãŒã©ã“ã¾ã§ãªã®ã‹ãŒç›´æ„Ÿçš„ã«ã‚ã‹ã‚Šã¥ã‚‰ããªã‚‹ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚ ã¾ãŸã€åˆ¶å¾¡æ–‡ã«ãŠã‘る本体ãŒå˜ä¸€æ–‡ã§æ¸ˆã¾ãªããªã£ãŸã¨ãã«ã€æ³¢æ‹¬å¼§ã‚’ã¤ã‘忘れるリスクもã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim if (x > 0) x++; /* W0413 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0414} åˆ¶å¾¡æ–‡ã®æœ¬ä½“ãŒåŒã˜è¡Œã«ã‚りã€`@{@}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックã«ãªã£ã¦ã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0414 @section W0414 @cindex W0414 @subsection メッセージ本文 åˆ¶å¾¡æ–‡ã®æœ¬ä½“ãŒåŒã˜è¡Œã«ã‚りã€`@{@}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックã«ãªã£ã¦ã„ã¾ã›ã‚“。 @subsection 内容 波括弧ãŒãªã‘れã°ã€æœ¬ä½“ãŒã©ã“ã¾ã§ãªã®ã‹ãŒç›´æ„Ÿçš„ã«ã‚ã‹ã‚Šã¥ã‚‰ããªã‚‹ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚ ã¾ãŸã€åˆ¶å¾¡æ–‡ã«ãŠã‘る本体ãŒå˜ä¸€æ–‡ã§æ¸ˆã¾ãªããªã£ãŸã¨ãã«ã€æ³¢æ‹¬å¼§ã‚’ã¤ã‘忘れるリスクもã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim if (x > 0) x++; /* W0414 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0413} åˆ¶å¾¡æ–‡ã®æœ¬ä½“㌠`@{@}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックã«ãªã£ã¦ã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0421 @section W0421 @cindex W0421 @subsection メッセージ本文 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 @code{NULL} ãƒã‚¤ãƒ³ã‚¿ã‚’間接å‚ç…§ã™ã‚‹ã¨ãã®å‹•作㯠ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a, int *p) { int b; if (p) { b = *p; /* OK */ } else { b = *p; /* W0421 */ } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1004} ã“ã“ã§è©²å½“変数㫠NULL ã®å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @item @ref{C1005} ã“ã“ã§è©²å½“変数㫠NULL ã®å¯èƒ½æ€§ãŒã‚る値を割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0422 @section W0422 @cindex W0422 @subsection メッセージ本文 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 @code{NULL} ãƒã‚¤ãƒ³ã‚¿ã‚’間接å‚ç…§ã™ã‚‹ã¨ãã®å‹•作㯠ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a, int *p) { int b; if (p) { b = *p; /* OK */ } b = *p; /* W0422 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1004} ã“ã“ã§è©²å½“変数㫠NULL ã®å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @item @ref{C1005} ã“ã“ã§è©²å½“変数㫠NULL ã®å¯èƒ½æ€§ãŒã‚る値を割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0423 @section W0423 @cindex W0423 @subsection メッセージ本文 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚ @subsection 内容 @code{NULL} ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算ã™ã‚‹ã¨ãã®å‹•作㯠ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int *func(int *p) { if (p) { return p + 1; /* OK */ } else { return p + 1; /* W0423 */ } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1004} ã“ã“ã§è©²å½“変数㫠NULL ã®å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @item @ref{C1005} ã“ã“ã§è©²å½“変数㫠NULL ã®å¯èƒ½æ€§ãŒã‚る値を割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0424 @section W0424 @cindex W0424 @subsection メッセージ本文 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚ @subsection 内容 @code{NULL} ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算ã™ã‚‹ã¨ãã®å‹•作㯠ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int *func(int *p) { int a; if (p) { a = *(p + 1); /* OK */ } return p + 1; /* W0424 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1004} ã“ã“ã§è©²å½“変数㫠NULL ã®å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @item @ref{C1005} ã“ã“ã§è©²å½“変数㫠NULL ã®å¯èƒ½æ€§ãŒã‚る値を割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0425 @section W0425 @cindex W0425 @subsection メッセージ本文 一ã¤ã®è¡Œã«è¤‡æ•°ã®å®£è¨€ã¾ãŸã¯æ–‡ãŒå­˜åœ¨ã—ã¾ã™ã€‚ @subsection 内容 1 行中ã«è¤‡æ•°ã®å®£è¨€ã‚„文を書ãã“ã¨ã¯æ–‡æ³•上ã®èª¤ã‚Šã§ã¯ã‚りã¾ã›ã‚“ãŒã€ã‚³ãƒ¼ãƒ‰ãŒã‚„や複雑ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim int a, b; /* W0425 */ int a; int b; /* W0425 */ struct C { int i; } c = { 0 }; c.i = a; /* W0425 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0431 @section W0431 @cindex W0431 @subsection メッセージ本文 ã“ã®è¡Œã¯ä»¥å‰ã®åŒã˜æ·±ã•ã®ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã‚ˆã‚Šå·¦ã«ãšã‚Œã¦ã„ã¾ã™ã€‚ @subsection 内容 インデントã®ä»˜ã‘æ–¹ã«ä¸€è²«æ€§ãŒä¿ãŸã‚Œã¦ã„ãªã„ã¨ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func() { int a; int b; /* W0431 */ a = var(); } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0432} ã“ã®è¡Œã¯ãƒ—ロジェクトã®ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã‚¹ã‚¿ã‚¤ãƒ«ã¨åˆã£ã¦ã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0432 @section W0432 @cindex W0432 @subsection メッセージ本文 ã“ã®è¡Œã¯ãƒ—ロジェクトã®ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã‚¹ã‚¿ã‚¤ãƒ«ã¨åˆã£ã¦ã„ã¾ã›ã‚“。 @subsection 内容 インデントã®ä»˜ã‘æ–¹ã«ä¸€è²«æ€§ãŒä¿ãŸã‚Œã¦ã„ãªã„ã¨ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func() { int a; int b; /* W0432 */ a = var(); } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0431} ã“ã®è¡Œã¯ä»¥å‰ã®åŒã˜æ·±ã•ã®ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã‚ˆã‚Šå·¦ã«ãšã‚Œã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0440 @section W0440 @cindex W0440 @subsection メッセージ本文 ã“ã®é–‰ã˜ã‚«ãƒƒã‚³ `@}' ã¯ã€å¯¾å¿œã™ã‚‹é–‹ãカッコ `@{' ã«åˆã†ã‚ˆã†ãªã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã«ç½®ã‹ã‚Œã¦ã„ã¾ã›ã‚“。 @subsection 内容 制御文ã®é–‹ã波括弧ã¨é–‰ã˜æ³¢æ‹¬å¼§ã®é…置をåˆã£ã¦ã„ãªã„コードã¯ã‚¹ã‚¿ã‚¤ãƒ«ã®çµ±ä¸€æ„ŸãŒãªã„ã¨ã„ã†æ„味ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func() { if (x == 0) { if (y == 0) { ...snip... } /* W0440 */ } /* W0440 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0441 @section W0441 @cindex W0441 @subsection メッセージ本文 接尾辞ãŒãªã„整数リテラルã®åž‹ãŒã€int åž‹ã§ã¯ã‚りã¾ã›ã‚“。 @subsection 内容 整数定数ã®åž‹ãŒ @code{int} åž‹ã§ãªã„å ´åˆã€ã©ã®ã‚ˆã†ãªåž‹ã«ãªã‚‹ã‹ã¯ã€æŽ¥å°¾èªžã®æœ‰ç„¡ã€ã‚µã‚¤ã‚ºã€@code{int} ã®å‡¦ç†ç³»ä¾å­˜ã®ã‚µã‚¤ã‚ºãªã©ã«ã‚ˆã£ã¦æ±ºã¾ã‚Šã¾ã™ã€‚ 従ã£ã¦ã€æŽ¥å°¾èªžãŒãªã„å ´åˆã€æ•´æ•°å®šæ•°ã®åž‹ãŒä¸æ˜Žç¢ºã¨ãªã‚Šè§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int i = 0x1234; /* W0441 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0442 @section W0442 @cindex W0442 @subsection メッセージ本文 関数形å¼ãƒžã‚¯ãƒ­ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 関数形å¼ãƒžã‚¯ãƒ­ã¯é–¢æ•°å‘¼ã³å‡ºã—ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ˜ãƒƒãƒ‰ãŒãªã„分ã ã‘効率性ã«ãƒ¡ãƒªãƒƒãƒˆãŒã‚ã‚‹åé¢ã€ 実引数ã«å¯¾ã™ã‚‹åž‹ãƒã‚§ãƒƒã‚¯ãŒè¡Œã‚れãªã„ã€ãƒ–レークãƒã‚¤ãƒ³ãƒˆç­‰ã‚’用ã„ãŸãƒ‡ãƒãƒƒã‚°ãŒè¡Œã„ã«ãã„ã€ãªã©ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #define MAX(a, b) (a < b ? b : a) /* W0442 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0443} ã“ã®é–¢æ•°å½¢å¼ãƒžã‚¯ãƒ­ã¯é–¢æ•°ã§ç½®ãæ›ãˆã‚‹ã“ã¨ãŒã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0443 @section W0443 @cindex W0443 @subsection メッセージ本文 ã“ã®é–¢æ•°å½¢å¼ãƒžã‚¯ãƒ­ã¯é–¢æ•°ã§ç½®ãæ›ãˆã‚‹ã“ã¨ãŒã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection 内容 関数形å¼ãƒžã‚¯ãƒ­ã¯é–¢æ•°å‘¼ã³å‡ºã—ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ˜ãƒƒãƒ‰ãŒãªã„分ã ã‘効率性ã«ãƒ¡ãƒªãƒƒãƒˆãŒã‚ã‚‹åé¢ã€ 実引数ã«å¯¾ã™ã‚‹åž‹ãƒã‚§ãƒƒã‚¯ãŒè¡Œã‚れãªã„ã€ãƒ–レークãƒã‚¤ãƒ³ãƒˆç­‰ã‚’用ã„ãŸãƒ‡ãƒãƒƒã‚°ãŒè¡Œã„ã«ãã„ã€ãªã©ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #define MACRO(a, b) (a * b) /* W0443 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0442} 関数形å¼ãƒžã‚¯ãƒ­ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0444 @section W0444 @cindex W0444 @subsection メッセージ本文 `#' 演算å­ã¨ `##' 演算å­ãŒä¸€ã¤ã®ãƒžã‚¯ãƒ­å®šç¾©å†…ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 プリプロセッサ㌠@code{#} 演算å­ã‚„ @code{##} 演算å­ã‚’評価ã™ã‚‹é †ç•ªã¯ã€ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #define MACRO(a) L ## #a /* W0444 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0445} 複数㮠`##' 演算å­ãŒä¸€ã¤ã®ãƒžã‚¯ãƒ­å®šç¾©å†…ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0445 @section W0445 @cindex W0445 @subsection メッセージ本文 複数㮠`##' 演算å­ãŒä¸€ã¤ã®ãƒžã‚¯ãƒ­å®šç¾©å†…ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 プリプロセッサ㌠@code{#} 演算å­ã‚„ @code{##} 演算å­ã‚’評価ã™ã‚‹é †ç•ªã¯ã€ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #define MACRO(prefix, name, suffix) int i = prefix##name##suffix /* W0445 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0444} `#' 演算å­ã¨ `##' 演算å­ãŒä¸€ã¤ã®ãƒžã‚¯ãƒ­å®šç¾©å†…ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0446 @section W0446 @cindex W0446 @subsection メッセージ本文 代入演算ã®çµæžœå€¤ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 1 ã¤ã®å¼ã®ä¸­ã«ã€è¤‡æ•°ã®ä»£å…¥æ¼”ç®—å­ã‚„複åˆä»£å…¥æ¼”ç®—å­ã‚’使用ã™ã‚‹ã¨ã€æ–‡ãŒè¤‡é›‘ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { int a; int b; a = b += 3; /* W0446 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0447 @section W0447 @cindex W0447 @subsection メッセージ本文 カンマ演算å­ãŒ for æ–‡ã®åˆ¶å¾¡å¼ä»¥å¤–ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 カンマ演算å­ã¯è¤‡æ•°ã®å¼ã‚’一ã¤ã®æ–‡ã§æ›¸ããŸã„ã¨ãã«ä½¿ç”¨ã—ã¾ã™ã€‚主ãªç”¨é€”㯠@code{for} æ–‡ã§ã™ã€‚@code{for} 文以外ã§ä½¿ç”¨ã™ã‚‹ã¨ã‚³ãƒ¼ãƒ‰ãŒè¤‡é›‘ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim int a = 1; int b = 0; int c = (b = a, a); /* W0447 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0456 @section W0456 @cindex W0456 @subsection メッセージ本文 外部çµåˆã‚’æŒã¤ã‚ªãƒ–ジェクトã‚ã‚‹ã„ã¯é–¢æ•° `%s' ãŒã€ãƒ˜ãƒƒãƒ€ãƒ•ァイル内ã§å®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 ヘッダファイルã¯é€šå¸¸ã¯è¤‡æ•°ã®ãƒ•ァイルã‹ã‚‰ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れるã“ã¨ã‚’想定ã—ã¾ã™ã€‚ã“ã®ã‚ˆã†ãªãƒ˜ãƒƒãƒ€ãƒ•ァイルã«å¤–部çµåˆã‚’æŒã¤ã‚ªãƒ–ジェクトや関数ãŒå®šç¾©ã•れã¦ã„ã‚‹ã¨ã€ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れã¦ã„る数分定義ã•れるã“ã¨ã«ãªã‚Šã€é€šå¸¸ã¯ãƒªãƒ³ã‚¯ã‚¨ãƒ©ãƒ¼ã¨ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @file{test.h} @verbatim int num = 1; /* W0456 */ int func(void) /* W0456 */ { return num; } @end verbatim @file{test.c} @verbatim #include "test.h" @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0457 @section W0457 @cindex W0457 @subsection メッセージ本文 関数ã®å®£è¨€ã‚ã‚‹ã„ã¯å®šç¾©ã§ã€æˆ»ã‚Šå€¤åž‹ãŒæ˜Žç¤ºçš„ã«å®šç¾©ã•れã¦ã„ãªã„ã®ã§ã€æš—黙的㫠int åž‹ã¨å®šç¾©ã•れã¾ã™ã€‚ @subsection 内容 関数宣言ã®éš›ã«åž‹ã‚’明示ã—ãªã‘れã°ã€æš—黙的㫠@code{int} åž‹ã®é–¢æ•°ã¨ã—ã¦å®£è¨€ã•れã¾ã™ã€‚ã“れã¯ã‚³ãƒ¼ãƒ‰ã‚’çœç•¥ã—ãŸã„動機ã§ä½¿ã‚れるã“ã¨ã‚‚ã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“ãŒã€ã‚³ãƒ¼ãƒ‰ã®æ˜Žç¢ºã•ãŒå¤±ã‚れã€è§£æžæ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim func1(void); /* W0457 */ func2(void) /* W0457 */ { return 0; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0458 @section W0458 @cindex W0458 @subsection メッセージ本文 オブジェクトã®å®£è¨€ã‚ã‚‹ã„ã¯å®šç¾©ã§ã€åž‹ãŒæ˜Žç¤ºçš„ã«å®šç¾©ã•れã¦ã„ãªã„ã®ã§ã€æš—黙的㫠int åž‹ã¨å®šç¾©ã•れã¾ã™ã€‚ @subsection 内容 オブジェクト宣言ã®éš›ã«åž‹ã‚’明示ã—ãªã‘れã°ã€æš—黙的㫠@code{int} åž‹ã®é–¢æ•°ã¨ã—ã¦å®£è¨€ã•れã¾ã™ã€‚ã“れã¯ã‚³ãƒ¼ãƒ‰ã‚’çœç•¥ã—ãŸã„動機ã§ä½¿ã‚れるã“ã¨ã‚‚ã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“ãŒã€ã‚³ãƒ¼ãƒ‰ã®æ˜Žç¢ºã•ãŒå¤±ã‚れã€è§£æžæ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim a; /* W0458 */ b = 0; /* W0458 */ extern c; /* W0458 */ static d; /* W0458 */ int func(e) /* W0458 */ { const f = e; /* W0458 */ return f; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0459 @section W0459 @cindex W0459 @subsection メッセージ本文 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @subsection 内容 変数を明示的ã«åˆæœŸåŒ–ã—ãªã„å ´åˆã€é™çš„変数ã¨ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã¯æš—黙的㫠0 ã§åˆæœŸåŒ–ã•れã¾ã™ãŒã€è‡ªå‹•変数ã¯ä¸å®šã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ãã®ã‚ˆã†ãªè‡ªå‹•変数を使用ã™ã‚‹ã¨äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int a; if(a > 0) { /* W0459 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0460} 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W0461} 値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @item @ref{W0462} 値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1003} ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0460 @section W0460 @cindex W0460 @subsection メッセージ本文 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ @subsection 内容 変数を明示的ã«åˆæœŸåŒ–ã—ãªã„å ´åˆã€é™çš„変数ã¨ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã¯æš—黙的㫠0 ã§åˆæœŸåŒ–ã•れã¾ã™ãŒã€è‡ªå‹•変数ã¯ä¸å®šã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ãã®ã‚ˆã†ãªè‡ªå‹•変数を使用ã™ã‚‹ã¨äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a) { int b; if (a == 0) { b = 1; } if (b > 0) { /* W0460 */ } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0459} 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @item @ref{W0461} 値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @item @ref{W0462} 値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1003} ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0461 @section W0461 @cindex W0461 @subsection メッセージ本文 値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @subsection 内容 変数を明示的ã«åˆæœŸåŒ–ã—ãªã„å ´åˆã€é™çš„変数ã¨ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã¯æš—黙的㫠0 ã§åˆæœŸåŒ–ã•れã¾ã™ãŒã€è‡ªå‹•変数ã¯ä¸å®šã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ãã®ã‚ˆã†ãªè‡ªå‹•変数を使用ã™ã‚‹ã¨äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int func1(const int *); void func2(int a) { int b; func1(&a); /* OK */ func1(&b); /* W0461 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0459} 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @item @ref{W0460} 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W0462} 値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1003} ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0462 @section W0462 @cindex W0462 @subsection メッセージ本文 値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ @subsection 内容 変数を明示的ã«åˆæœŸåŒ–ã—ãªã„å ´åˆã€é™çš„変数ã¨ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã¯æš—黙的㫠0 ã§åˆæœŸåŒ–ã•れã¾ã™ãŒã€è‡ªå‹•変数ã¯ä¸å®šã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ãã®ã‚ˆã†ãªè‡ªå‹•変数を使用ã™ã‚‹ã¨äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int func1(const int *); int func2(int a) { int b; if (a > 10) { b = a + 10; } func1(&b); /* W0462 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0459} 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @item @ref{W0460} 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W0461} 値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1003} ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0477 @section W0477 @cindex W0477 @subsection メッセージ本文 マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`@{@}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªãƒžã‚¯ãƒ­å®šç¾©ã¯ã€ãƒ—ロジェクトやプログラマã«ç‰¹æœ‰ã®ã‚‚ã®ã«ãªã‚ŠãŒã¡ãªãŸã‚〠外部ã®äººãŒè¦‹ãŸã¨ãã®è§£æžæ€§ãŒå¤§å¹…ã«ä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define BEGIN { /* W0477 */ #define END } /* W0477 */ void func() BEGIN ...snip... END @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0478} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0479} ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @item @ref{W0480} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€ã‚ã‚‹ã„ã¯å¥èª­æ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0481} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`@{@}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0482} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0483} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0478 @section W0478 @cindex W0478 @subsection メッセージ本文 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªãƒžã‚¯ãƒ­å®šç¾©ã¯ã€ãƒ—ロジェクトやプログラマã«ç‰¹æœ‰ã®ã‚‚ã®ã«ãªã‚ŠãŒã¡ãªãŸã‚〠外部ã®äººãŒè¦‹ãŸã¨ãã®è§£æžæ€§ãŒå¤§å¹…ã«ä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define MALLOC_OR_DIE(ptr, size) ptr = malloc(size); if (!ptr) exit(1); /* W0478 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0477} マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`@{@}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚ @item @ref{W0479} ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @item @ref{W0480} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€ã‚ã‚‹ã„ã¯å¥èª­æ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0481} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`@{@}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0482} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0483} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0479 @section W0479 @cindex W0479 @subsection メッセージ本文 ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @subsection 内容 外部ã®äººãŒè¦‹ãŸã¨ãã®è§£æžæ€§ãŒå¤§å¹…ã«ä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define foo unsigned int /* W0479 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0477} マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`@{@}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚ @item @ref{W0478} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0480} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€ã‚ã‚‹ã„ã¯å¥èª­æ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0481} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`@{@}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0482} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0483} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0480 @section W0480 @cindex W0480 @subsection メッセージ本文 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€æ¼”ç®—å­ã€ã‚ã‚‹ã„ã¯åŒºåˆ‡ã‚Šæ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 外部ã®äººãŒè¦‹ãŸã¨ãã®è§£æžæ€§ãŒå¤§å¹…ã«ä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define PLUS + /* W0480 */ #define LOOP while /* W0480 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0477} マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`@{@}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚ @item @ref{W0478} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0479} ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @item @ref{W0481} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`@{@}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0482} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0483} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0481 @section W0481 @cindex W0481 @subsection メッセージ本文 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`@{@}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 外部ã®äººãŒè¦‹ãŸã¨ãã®è§£æžæ€§ãŒå¤§å¹…ã«ä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define SETUP(a, b) /* W0481 */ \ { \ if (a) \ b = 0; \ else \ b = 1; \ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0477} マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`@{@}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚ @item @ref{W0478} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0479} ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @item @ref{W0480} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€ã‚ã‚‹ã„ã¯å¥èª­æ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0482} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0483} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0482 @section W0482 @cindex W0482 @subsection メッセージ本文 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 外部ã®äººãŒè¦‹ãŸã¨ãã®è§£æžæ€§ãŒå¤§å¹…ã«ä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define COMPOSITE struct /* W0482 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0477} マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`@{@}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚ @item @ref{W0478} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0479} ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @item @ref{W0480} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€ã‚ã‚‹ã„ã¯å¥èª­æ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0481} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`@{@}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0483} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0483 @section W0483 @cindex W0483 @subsection メッセージ本文 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 外部ã®äººãŒè¦‹ãŸã¨ãã®è§£æžæ€§ãŒå¤§å¹…ã«ä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define PRIVATE_FINAL static const /* W0483 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0477} マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`@{@}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚ @item @ref{W0478} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0479} ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @item @ref{W0480} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€ã‚ã‚‹ã„ã¯å¥èª­æ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0481} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`@{@}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0482} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0488 @section W0488 @cindex W0488 @subsection メッセージ本文 関数呼ã³å‡ºã— `()'ã€é…列添字演算 `[]'ã€ã‚ã‚‹ã„ã¯æ§‹é€ ä½“/å…±ç”¨ä½“ãƒ¡ãƒ³ãƒæ¼”ç®— `->' ã¾ãŸã¯ `.' ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @subsection 内容 演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim while (func(&a, &b) < 0 && i > 0) { /* W0488 */ ...snip... } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0489} å˜é …演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0490} 二項演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0489 @section W0489 @cindex W0489 @subsection メッセージ本文 å˜é …演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @subsection 内容 演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(unsigned int a, unsigned int b) { unsigned int c = !a && b; /* W0489 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0488} 関数呼ã³å‡ºã— `()' ã€é…列添字演算 `[]' ã€ã‚ã‚‹ã„ã¯æ§‹é€ ä½“/å…±ç”¨ä½“ãƒ¡ãƒ³ãƒæ¼”ç®— `->' ã¾ãŸã¯ `.' ãŒã€&& ã‚ã‚‹ã„㯠|| ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0490} 二項演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0490 @section W0490 @cindex W0490 @subsection メッセージ本文 二項演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @subsection 内容 演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(unsigned int a, unsigned int b, unsigned int c) { unsigned int d = a && b || c; /* W0490 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0488} 関数呼ã³å‡ºã— `()' ã€é…列添字演算 `[]' ã€ã‚ã‚‹ã„ã¯æ§‹é€ ä½“/å…±ç”¨ä½“ãƒ¡ãƒ³ãƒæ¼”ç®— `->' ã¾ãŸã¯ `.' ãŒã€&& ã‚ã‚‹ã„㯠|| ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0489} å˜é …演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0491 @section W0491 @cindex W0491 @subsection メッセージ本文 åŒã˜è­˜åˆ¥å­å `%s' ã¯ä»–ã®åå‰ç©ºé–“内ã®å®£è¨€ã§ã‚‚使ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 åå‰ç©ºé–“ãŒç•°ãªã‚‹ã‹ã‚‰ã¨ã„ã£ã¦ã€åŒã˜åå‰ã®è­˜åˆ¥å­ã‚’使用ã™ã‚‹ã¨ã€ã‚³ãƒ¼ãƒ‰ãŒç´›ã‚‰ã‚ã—ããªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int foo; struct foo { /* W0491 */ int a; int b; }; @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0492} åŒã˜è­˜åˆ¥å­å `%s' ãŒæ§‹é€ ä½“/共用体ã®ãƒ¡ãƒ³ãƒã®ä»–ã«ã€ãƒ©ãƒ™ãƒ«ã€ã‚¿ã‚°ã€ã¾ãŸã¯é€šå¸¸ã®è­˜åˆ¥å­ã¨ã—ã¦ã‚‚使ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0492 @section W0492 @cindex W0492 @subsection メッセージ本文 åŒã˜è­˜åˆ¥å­å `%s' ãŒæ§‹é€ ä½“/共用体ã®ãƒ¡ãƒ³ãƒã®ä»–ã«ã€ãƒ©ãƒ™ãƒ«ã€ã‚¿ã‚°ã€ã¾ãŸã¯é€šå¸¸ã®è­˜åˆ¥å­ã¨ã—ã¦ã‚‚使ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 åå‰ç©ºé–“ãŒç•°ãªã‚‹ã‹ã‚‰ã¨ã„ã£ã¦ã€åŒã˜åå‰ã®è­˜åˆ¥å­ã‚’使用ã™ã‚‹ã¨ã€ã‚³ãƒ¼ãƒ‰ãŒç´›ã‚‰ã‚ã—ããªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int foo; struct a { int foo; /* W0492 */ int b; }; void func(void) { struct a a; int b; /* W0492 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0491} åŒã˜è­˜åˆ¥å­å `%s' ã¯ä»–ã®åå‰ç©ºé–“内ã®å®£è¨€ã§ã‚‚使ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0493 @section W0493 @cindex W0493 @subsection メッセージ本文 構造体ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®å€¤ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 引数ã«ã‚ªãƒ–ジェクトã®å€¤ã‚’渡ã™ã¨ã€ãれらã®è¦ç´ ã®ã‚µã‚¤ã‚ºåˆ†ã‚¹ã‚¿ãƒƒã‚¯ãƒ¡ãƒ¢ãƒªã‚’消費ã™ã‚‹ã“ã¨ã«ãªã‚Šã€ãƒ‘フォーマンスã®é¢ã§ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim struct STR { long a; long b; }; extern int foo(struct STR s); void func(void) { struct STR s = { 0 }; foo(s); /* W0493 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0495 @section W0495 @cindex W0495 @subsection メッセージ本文 æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @subsection 内容 演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a, int b, int c) { int x = a % b * c; /* W0495 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0496} 三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0497} シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0498} äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0499} + - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0500} äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0501} 三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0502} + - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0496 @section W0496 @cindex W0496 @subsection メッセージ本文 三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @subsection 内容 演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a, int b, int c, int d, int e) { int f = a ? b : c ? d : e; /* W0496 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0495} æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0497} シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0498} äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0499} + - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0500} äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0501} 三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0502} + - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0497 @section W0497 @cindex W0497 @subsection メッセージ本文 シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @subsection 内容 演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a, int b, int c) { int d = a << b << c; /* W0497 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0495} æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0496} 三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0498} äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0499} + - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0500} äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0501} 三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0502} + - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0498 @section W0498 @cindex W0498 @subsection メッセージ本文 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @subsection 内容 演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a, int b, int c) { int d = a - b + c; /* W0498 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0495} æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0496} 三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0497} シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0499} + - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0500} äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0501} 三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0502} + - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0499 @section W0499 @cindex W0499 @subsection メッセージ本文 + - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @subsection 内容 演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a, int b, int c) { int d = a << b >> c; /* W0499 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0495} æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0496} 三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0497} シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0498} äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0500} äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0501} 三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0502} + - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0500 @section W0500 @cindex W0500 @subsection メッセージ本文 äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @subsection 内容 演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a, int b, int c) { int d = a * b + c; /* W0500 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0495} æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0496} 三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0497} シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0498} äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0499} + - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0501} 三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0502} + - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0501 @section W0501 @cindex W0501 @subsection メッセージ本文 三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @subsection 内容 演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a, int b, int c) { int d = a ? a : a + c; /* W0501 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0495} æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0496} 三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0497} シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0498} äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0499} + - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0500} äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0502} + - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0502 @section W0502 @cindex W0502 @subsection メッセージ本文 + - * / % 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @subsection 内容 演算å­ã®è©•価順åºã¯ ISO C90 ã§å®šã‚られã¦ã„ã‚‹ãŸã‚ã€æ›–昧ã•ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒãƒ¼ãƒ å†…ã®ãƒ¡ãƒ³ãƒå…¨å“¡ãŒãã®é †åºã‚’把æ¡ã™ã‚‹ã“ã¨ã¯å®¹æ˜“ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ã»ã¨ã‚“ã©ã®ãƒ¡ãƒ³ãƒã«ã¨ã£ã¦è©•価順åºãŒä¸æ˜Žç¢ºã«ãªã‚‹ãŸã‚ã€è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a, int b, int c) { int d = a != b << c; /* W0502 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0495} æ¼”ç®—å­ % ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0496} 三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0497} シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0498} äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0499} + - * / % 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0500} äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @item @ref{W0501} 三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0508 @section W0508 @cindex W0508 @subsection メッセージ本文 `&&' ã‚ã‚‹ã„㯠`||' 演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«å‰¯ä½œç”¨ãŒã‚りã¾ã™ã€‚ @subsection 内容 && 演算å­ãŠã‚ˆã³ || 演算å­ã¯çŸ­çµ¡è©•ä¾¡ã®æ–¹å¼ã§å‡¦ç†ã•れã¾ã™ã€‚ ã—ãŸãŒã£ã¦ã€ã“れらã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«å‰¯ä½œç”¨ã‚’å«ã‚€å¼ãŒã‚ã‚‹å ´åˆã€ ãã®å‰¯ä½œç”¨ã®æœ‰ç„¡ãŒå·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«ä¾å­˜ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ ã“れã¯éžå¸¸ã«ç´›ã‚‰ã‚ã—ãã€ãƒã‚°ãŒå…¥ã‚Šè¾¼ã‚€å¯èƒ½æ€§ã‚’高ã‚ã¾ã™ã€‚ @subsection サンプルコード @verbatim if ((a == b) && ((c = func()) == d)) /* W0508 */ @end verbatim @code{c} ã«ã¯ã€ @code{a==b} ã®è©•価ãŒçœŸã®å ´åˆã«ã®ã¿ @code{func()} ã®æˆ»ã‚Šå€¤ãŒä»£å…¥ã•れã¾ã™ã€‚ @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0511 @section W0511 @cindex W0511 @subsection メッセージ本文 C++ コメント `//' ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 @code{//} コメント㯠ISO C90 ã§è¦å®šã•れã¦ãŠã‚‰ãšã€è¨€èªžæ‹¡å¼µã«è©²å½“ã—ã¾ã™ã€‚言語拡張を使用ã™ã‚‹ã¨ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim // W0511 @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0512 @section W0512 @cindex W0512 @subsection メッセージ本文 `++' ã‚ã‚‹ã„㯠`--' 演算å­ã®çµæžœãŒå¼ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªå¼ã§ã¯ @code{++} 演算å­ã‚„ @code{--} 演算å­ã®è©•価順ã®èªè­˜èª¤ã‚ŠãŒã‚れã°ã€æ„図ã—ãªã„çµæžœã«ãªã‚‹å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚ 見ãŸç›®ã«ã‚‚複雑ãªå¼ã«ãªã‚Šã€ç†è§£ãŒå›°é›£ã‹ã¤èª¤ã£ãŸç†è§£ã‚’ã—ã‚„ã™ã„ãªã©ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆã‚‚ã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim a = b++ + --c + d++; /* W0512 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0525 @section W0525 @cindex W0525 @subsection メッセージ本文 1 ビットã®åå‰ãŒä»˜ã„ãŸãƒ•ィールドãŒç¬¦å·ä»˜ãåž‹ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 1 ビットã®ç¬¦å·ä»˜ãƒ“ットフィールドã§è¡¨ã™ã“ã¨ãŒã§ãã‚‹ã®ã¯ "-1" 㨠"0" ã®ã¿ã§ã€"1" を表ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。 ã“ã®ã‚ˆã†ãªãƒ“ットフィールドã¯ç”¨é€”ãŒè€ƒãˆã¥ã‚‰ãã€ç†è§£ãŒå›°é›£ã§ã™ã€‚ @subsection サンプルコード @verbatim struct ST { int bit:1; /* W0525 */ }; @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0528 @section W0528 @cindex W0528 @subsection メッセージ本文 ã“ã®ãƒžã‚¯ãƒ­ã¯ã€8 進数定数を定義ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 0 ã§å§‹ã¾ã‚‹å®šæ•°ã¯ 8 進数ã¨ã—ã¦è§£é‡ˆã•れã¾ã™ã€‚ 10 é€²æ•°ã¨æ¯”ã¹ã¦ç´›ã‚‰ã‚ã—ã„ã§ã™ã€‚ @subsection サンプルコード @verbatim #define MACRO 0123 /* W0528 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0529} 8 進数リテラルãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0530} 文字定数ã¾ãŸã¯æ–‡å­—列リテラルã®ä¸­ã§ã€8 進拡張表記ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0529 @section W0529 @cindex W0529 @subsection メッセージ本文 8 進数リテラルãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 0 ã§å§‹ã¾ã‚‹å®šæ•°ã¯ 8 進数ã¨ã—ã¦è§£é‡ˆã•れã¾ã™ã€‚ 10 é€²æ•°ã¨æ¯”ã¹ã¦ç´›ã‚‰ã‚ã—ã„ã§ã™ã€‚ @subsection サンプルコード @verbatim #define MACRO 0123 int a = 0123; /* W0529 */ int b = MACRO; /* W0529 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0528} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€8 進数定数を定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0530} 文字定数ã¾ãŸã¯æ–‡å­—列リテラルã®ä¸­ã§ã€8 進拡張表記ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0530 @section W0530 @cindex W0530 @subsection メッセージ本文 文字定数ã¾ãŸã¯æ–‡å­—列リテラルã®ä¸­ã§ã€8 進拡張表記ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 0 ã§å§‹ã¾ã‚‹å®šæ•°ã¯ 8 進数ã¨ã—ã¦è§£é‡ˆã•れã¾ã™ã€‚ 10 é€²æ•°ã¨æ¯”ã¹ã¦ç´›ã‚‰ã‚ã—ã„ã§ã™ã€‚ @subsection サンプルコード @verbatim char *s = "\012"; /* W0530 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0528} ã“ã®ãƒžã‚¯ãƒ­ã¯ã€8 進数定数を定義ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0529} 8 進数リテラルãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0532 @section W0532 @cindex W0532 @subsection メッセージ本文 switch 文㮠case 節ã€default 節ã‹ã‚‰å‡ºã‚‹ãŸã‚ã« break æ–‡ãŒä½¿ã‚れã¦ã„ã¾ã™ãŒã€case ç¯€ã®æœ«å°¾ã«è¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @subsection 内容 @code{break} æ–‡ã¯ã€@code{case} æ–‡å†…ã®æœ«å°¾ã§ã®ã¿ä½¿ç”¨ã•れるã¹ãã§ã™ã€‚ @subsection サンプルコード @verbatim switch (x) { case 1: if (y == 0) { break; /* W0532 */ } ...snip... break; case 2: ...snip... break; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0534 @section W0534 @cindex W0534 @subsection メッセージ本文 制御変数 `%s' ã¯ã€ã“ã® for 文制御å¼ã§åˆæœŸåŒ–ã•れã¦ã„ã¾ã›ã‚“。 @subsection 内容 ループ制御変数ã¯å¿…ãšã—ã‚‚ @code{for} æ–‡ã®åˆæœŸåŒ–å¼ã®ä¸­ã§åˆæœŸåŒ–ã—ãªã„ã¨ã„ã‘ãªã„ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“。 ã—ã‹ã—ã€@code{for} 文以å‰ã®ã©ã“ã‹ã‹ã‚‰åˆæœŸåŒ–文を探ã™ã‚ˆã‚Šã‚‚ã€@code{for} æ–‡ã®åˆæœŸåŒ–å¼ã«åˆæœŸåŒ–æ–‡ãŒæ›¸ã„ã¦ã„ã‚‹æ–¹ãŒã‚ã‹ã‚Šã‚„ã™ã„ã¨ã„ãˆã¾ã™ã€‚ @subsection サンプルコード @verbatim int i = 0; int j; for (; i < 10; i++) { /* W0534 */ } for (j = 0; i < 20; i++) { /* W0534 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0535 @section W0535 @cindex W0535 @subsection メッセージ本文 for æ–‡ã®åˆ¶å¾¡å¼ã®ä¸­ã«ã‚«ãƒ³ãƒžæ¼”ç®—å­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 @code{for} æ–‡ã«ãŠã‘るカンマ演算å­ã®ä½¿ç”¨ã¯ã€@code{for} 文以外ã§ã®ä½¿ç”¨ã‚ˆã‚Šã¯ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒå°‘ãªã„ã¨è¨€ãˆã¾ã™ã€‚ ã—ã‹ã—ã€ç¨‹åº¦ã¯å°ã•ã„ãªãŒã‚‰ã‚‚è§£æžæ€§ã‚’低下ã•ã›ã‚‹ã“ã¨ã«å¤‰ã‚りã¯ã‚りã¾ã›ã‚“。 @subsection サンプルコード @verbatim int i, j, k = 0; for (i = 0, j = 0; i < 10; i++, j++, k--) { /* W0535 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0538 @section W0538 @cindex W0538 @subsection メッセージ本文 ã“ã® default ラベルã¯ã€switch æ–‡å†…ã®æœ€å¾Œã®ãƒ©ãƒ™ãƒ«ã§ã¯ã‚りã¾ã›ã‚“。 @subsection 内容 @code{switch} æ–‡ã«ãŠã„㦠@code{default} ç¯€ãŒæœ«å°¾ã§ãªã„å ´åˆã€ãã®ç¯€ä»¥é™ã® @code{case} 節ãŒåˆ¤å®šã•れã¾ã›ã‚“。 ã“れã¯ã€ã»ã©ã‚“ã©ã®å ´åˆãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã§ã¯ãªã„ã¨æƒ³å®šã•れã¾ã™ã€‚ @subsection サンプルコード @verbatim switch (x) { default: /* W0538 */ ...snip... case 1: ...snip... } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0540 @section W0540 @cindex W0540 @subsection メッセージ本文 空ã®ä»®å¼•数並ã³ã®é–¢æ•°ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚`void' ãŒçœç•¥ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 引数をæŒãŸãªã„関数定義㧠@code{void} を使用ã—ãªã„æ›¸ãæ–¹ã¯ã€å¤ã„å½¢å¼ã®é–¢æ•°å®šç¾©ã¨è¦‹ãªã•ã‚Œã€æ„図ã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func() /* W0540 */ { ...snip... } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0541 @section W0541 @cindex W0541 @subsection メッセージ本文 マクロã§éš è”½ã•れãªã„インラインアセンブリコードã§ã™ã€‚ @subsection 内容 アセンブラコードã¯ç’°å¢ƒã«ã‚ˆã£ã¦å¤‰ã‚ã‚‹ãŸã‚ã€è¤‡æ•°ã®é–¢æ•°ã«ç‚¹åœ¨ã•ã›ã‚‹ã¨ã€åˆ¥ã®ç’°å¢ƒã«ç§»æ¤ã™ã‚‹ã¨ãã®å¤‰æ›´ã‚³ã‚¹ãƒˆãŒå¤§ãããªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim #define ASM_CODE asm("movl %ecx, %eax") void foo(int arg1, int *arg2, int arg3) { asm("movl %ecx, %eax"); /* W0541 */ __asm__("movl %ecx, (%eax)"); /* W0541 */ asm { /* W0541 */ xorl eax, eax } ASM_CODE; /* OK */ __asm__ volatile ( /* W0541 */ "int $0x80" : "=a" (r) "+b" (arg1), "+c" (arg2), "+d" (arg3) : "a" (128) : "memory", "cc"); } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W0542 @section W0542 @cindex W0542 @subsection メッセージ本文 関数宣言ã®ä»®å¼•æ•°ã®ä¸€éƒ¨ã«ã®ã¿è­˜åˆ¥å­ãŒå­˜åœ¨ã—ã¾ã™ã€‚ @subsection 内容 関数定義ã®ä»®å¼•æ•°åãŒå¯¾å¿œã™ã‚‹å®£è¨€ã®ä»®å¼•æ•°åã¨ç•°ãªã‚‹å ´åˆã€ãã®é–¢æ•°ã®ä»•æ§˜å¤‰æ›´ãŒæœªå®Œäº†ã¨ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int i, char, int, char c); /* W0542 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0543 @section W0543 @cindex W0543 @subsection メッセージ本文 ã“ã®é–¢æ•°å®£è¨€ã«ãŠã‘る仮引数ã®è­˜åˆ¥å­ã¯ã€ä»¥å‰ã®å®£è¨€ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ã¨ç•°ãªã‚Šã¾ã™ã€‚ @subsection 内容 関数定義ã®ä»®å¼•æ•°åãŒå¯¾å¿œã™ã‚‹å®£è¨€ã®ä»®å¼•æ•°åã¨ç•°ãªã‚‹å ´åˆã€ãã®é–¢æ•°ã®ä»•æ§˜å¤‰æ›´ãŒæœªå®Œäº†ã¨ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int i1, int i2); void func(int i2, int i1) /* W0543 */ { ...snip... } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0544} 関数宣言ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ã¨é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã®å®£è¨€ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ãŒç•°ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0544 @section W0544 @cindex W0544 @subsection メッセージ本文 関数宣言ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ã¨é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã®å®£è¨€ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ãŒç•°ãªã‚Šã¾ã™ã€‚ @subsection 内容 関数定義ã®ä»®å¼•æ•°åãŒå¯¾å¿œã™ã‚‹å®£è¨€ã®ä»®å¼•æ•°åã¨ç•°ãªã‚‹å ´åˆã€ãã®é–¢æ•°ã®ä»•æ§˜å¤‰æ›´ãŒæœªå®Œäº†ã¨ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int i1, int i2); void (*p)(int i2, int i1) = &func; /* W0544 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0543} ã“ã®é–¢æ•°å®£è¨€ã«ãŠã‘る仮引数ã®è­˜åˆ¥å­ã¯ã€ä»¥å‰ã®å®£è¨€ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ã¨ç•°ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0546 @section W0546 @cindex W0546 @subsection メッセージ本文 switch 文㮠case ラベルã‚ã‚‹ã„㯠default ラベルãŒã€ãƒã‚¹ãƒˆã•れãŸãƒ–ロックã®ä¸­ã«å­˜åœ¨ã—ã¾ã™ã€‚ @subsection 内容 @code{switch} 文中ã®å…¥ã‚Œå­ãƒ–ロックã®ä¸­ã« @code{case} 節や @code{default} 節を記述ã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ãŒã€æ–‡ãŒè¤‡é›‘ã«ãªã‚Šã¾ã™ã€‚ ã¾ãŸã€å…¥ã‚Œå­ãƒ–ãƒ­ãƒƒã‚¯ãŒæ¡ä»¶æ–‡ã«ãªã£ã¦ã„ã‚‹å ´åˆã«ã¯æ§‹é€ åŒ–定ç†ã®å´é¢ã‹ã‚‰è¦‹ã¦ã‚‚怪ã—ã„ã‚‚ã®ã«ãªã£ã¦ã—ã¾ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim switch (x) { case 1: if (y > 0) { case 2: /* W0546 */ break; } ...snip... break; default: ...snip... } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0549 @section W0549 @cindex W0549 @subsection メッセージ本文 マクロã®ä»®å¼•数㌠`()' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 @subsection 内容 マクロ仮引数ãŒå¼ã§ã‚ã‚‹å ´åˆã«ã€æ¼”ç®—å­ã®å„ªå…ˆé †ä½ã«é–¢ã—ã¦å•題ãŒç”Ÿã˜ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #define ADD(a, b) a + b /* W0549 */ int x = 3 * ADD(1, 2); @end verbatim 上記コードã§ã¯ã€ @code{3 * (1 + 2) = 9} ã§ã¯ãªãã€@code{(3 * 1) + 2 = 5} ㌠@code{x} ã«ä»£å…¥ã•れã¾ã™ã€‚ @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0551 @section W0551 @cindex W0551 @subsection メッセージ本文 共用体型指定å­ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 共用体ã§ã¯ã€ãƒ¡ãƒ³ãƒãŒã©ã®ã‚ˆã†ãªé †ç•ªã§ãƒ¡ãƒ¢ãƒªã«é…ç½®ã•れるã‹ãŒç’°å¢ƒä¾å­˜ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim union UNI { /* W0551 */ int a; short b; long c; }; @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0552} 共用体型ã®ã‚ªãƒ–ジェクトãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0552 @section W0552 @cindex W0552 @subsection メッセージ本文 共用体型ã®ã‚ªãƒ–ジェクトãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 共用体ã§ã¯ã€ãƒ¡ãƒ³ãƒãŒã©ã®ã‚ˆã†ãªé †ç•ªã§ãƒ¡ãƒ¢ãƒªã«é…ç½®ã•れるã‹ãŒç’°å¢ƒä¾å­˜ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim union UNI { int a; short b; long c; }; union UNI u; /* W0552 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0551} 共用体型指定å­ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0553 @section W0553 @cindex W0553 @subsection メッセージ本文 関数を指ã™ãƒã‚¤ãƒ³ã‚¿ãŒã€ç•°ãªã‚‹é–¢æ•°ãƒã‚¤ãƒ³ã‚¿åž‹ã¸ã‚­ãƒ£ã‚¹ãƒˆã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 ç•°ãªã‚‹é–¢æ•°ãƒã‚¤ãƒ³ã‚¿åž‹ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã‚’使用ã—ã¦ã‚‚å•題ãªã„処ç†ç³»ãŒå¤šã„ã§ã™ãŒã€ä¸­ã«ã¯é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã®ã‚­ãƒ£ã‚¹ãƒˆã‚’実施ã—ãŸæ™‚点ã§ã‚¢ãƒœãƒ¼ãƒˆã™ã‚‹ã‚ˆã†ãªå‡¦ç†ç³»ã‚‚存在ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int func(void); void (*p)(int) = (void (*)(int)) &func; /* W0553 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0554 @section W0554 @cindex W0554 @subsection メッセージ本文 `#pragma' ã®å®Ÿå¼•æ•° `%s' ã¯èªè­˜ã§ãã¾ã›ã‚“。ã“ã® `#pragma' 指令ã¯ç„¡è¦–ã•れã¾ã—ãŸã€‚ @subsection 内容 @code{#pragma} ディレクティブã§å®Ÿè¡Œã§ãる命令ã®å†…容や種類ã¯å‡¦ç†ç³»ä¾å­˜ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€@code{#pragma} ディレクティブを使用ã™ã‚‹ã ã‘ã§ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #pragma SystemSpecificPragmaName 5 /* W0544 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0555 @section W0555 @cindex W0555 @subsection メッセージ本文 ã“ã®é–¢æ•°ã¯ãƒ—ロジェクト中ã§é–“接的ã«å†å¸°å‘¼ã³å‡ºã—ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å†å¸°é–¢æ•°ã¯ã€åŠ¹çŽ‡æ€§ã®é¢ã§ã€Œå‡¦ç†ãŒé…ããªã‚‹ã€ã€ã€Œã‚¹ã‚¿ãƒƒã‚¯ã‚’想定以上ã«ä½¿ç”¨ã—ã¦ã—ã¾ã†å¯èƒ½æ€§ãŒã‚ã‚‹ã€ãªã©ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ç„¡é™ãƒ«ãƒ¼ãƒ—ã«é™¥ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚å±é™ºã ã¨ã„ã†å´é¢ã‚‚ã‚りã¾ã™ã€‚ @subsection サンプルコード @file{test1.c} @verbatim int func1(int i) /* W0555 */ { if (i < 10) { return i + 1; } else { return func3(i); } } @end verbatim @file{test2.c} @verbatim int func2(int i) /* W0555 */ { return func1(i) + 2; } @end verbatim @file{test3.c} @verbatim int func3(int i) /* W0555 */ { return func2(i) + 3; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0556} ã“ã®å‘¼ã³å‡ºã—ã‚’å«ã‚€é–¢æ•°ã¯ã€å†å¸°å‘¼ã³å‡ºã—ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0556 @section W0556 @cindex W0556 @subsection メッセージ本文 ã“ã®å‘¼ã³å‡ºã—ã‚’å«ã‚€é–¢æ•°ã¯ã€å†å¸°å‘¼ã³å‡ºã—ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 å†å¸°é–¢æ•°ã¯ã€åŠ¹çŽ‡æ€§ã®é¢ã§ã€ã€Œå‡¦ç†ãŒé…ããªã‚‹ã€ã€ã€Œã‚¹ã‚¿ãƒƒã‚¯ã‚’想定以上ã«ä½¿ç”¨ã—ã¦ã—ã¾ã†å¯èƒ½æ€§ãŒã‚ã‚‹ã€ã€ãªã©ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ç„¡é™ãƒ«ãƒ¼ãƒ—ã«é™¥ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚å±é™ºã ã¨ã„ã†å´é¢ã‚‚ã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int i) { if (i == 0) { return 0; } else { return func(i - 1); /* W0556 */ } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0555} ã“ã®é–¢æ•°ã¯ãƒ—ロジェクト中ã§é–“接的ã«å†å¸°å‘¼ã³å‡ºã—ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0559 @section W0559 @cindex W0559 @subsection メッセージ本文 `!' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒç®—術演算ã‚ã‚‹ã„ã¯ãƒ“ット演算ã®å¼ã«ãªã£ã¦ã„ã¾ã™ã€‚ @subsection 内容 æ­£ã—ã„å˜é …演算å­ã®ä½¿ã„方をã—ã¦ã„ã¾ã›ã‚“。ビットå˜ä½ã®è«–ç†ç© `&' ã¾ãŸã¯è«–ç†å’Œ `|' を使用ã™ã¹ãã§ã™ã€‚ @subsection サンプルコード @verbatim int func(int a, int b) { if (!(a || b)) { return 0; } else { return !(a & b); /* W0559 */ } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0560} `~' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ–ール型å¼ã«ãªã£ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0560 @section W0560 @cindex W0560 @subsection メッセージ本文 `~' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ–ール型å¼ã«ãªã£ã¦ã„ã¾ã™ã€‚ @subsection 内容 æ­£ã—ã„å˜é …演算å­ã®ä½¿ã„方をã—ã¦ã„ã¾ã›ã‚“。論ç†å¦å®šæ¼”ç®—å­ `!' を使用ã™ã¹ãã§ã™ã€‚ @subsection サンプルコード @verbatim int func(int a, int b) { return ~((a < b) && (b > 0)); /* W0560 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0559} `!' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒç®—術演算ã‚ã‚‹ã„ã¯ãƒ“ット演算ã®å¼ã«ãªã£ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0561 @section W0561 @cindex W0561 @subsection メッセージ本文 `*p++' ã®æ„味ã¯ã€`(*p)++' ã§ã¯ãªãã€`*(p++)' ã§ã™ã€‚`*' 演算å­ã¯å†—é•·ã§ã™ã€‚ @subsection 内容 プログラムã®å‹•作ã«å¯„与ã—ãªã„æ–‡ã®å…·ä½“例ã¨ã—ã¦ã‚µãƒ³ãƒ—ルコードã®ä¾‹ãŒæŒ™ã’られã¾ã™ã€‚ ã“ã®æ–‡ã¯ @code{*(p++)} ã¨åŒç¾©ã«ãªã‚‹ãŸã‚ã€@code{p++} ã¨ã—ãŸå ´åˆã¨å‡¦ç†çµæžœã¯å¤‰ã‚りã¾ã›ã‚“。 従ã£ã¦ @code{*} 演算å­ãŒå†—é•·ã¨ã„ãˆã¾ã™ã€‚冗長ãªè¨˜è¿°ãŒå‰Šé™¤ã•れãšã«ã‚³ãƒ¼ãƒ‰ä¸­ã«æ®‹ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim *p++; /* W0561 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0562 @section W0562 @cindex W0562 @subsection メッセージ本文 åˆæœŸåŒ–å­ã®ä¸­ã«ä½™åˆ†ãª `@{@}' ãŒã‚りã¾ã™ã€‚ @subsection 内容 ã“ã“ã§ã®ä½™åˆ†ãªæ³¢æ‹¬å¼§ã¨ã¯ã€é…列ã®åˆæœŸåŒ–å­ã§ã„ã†ã¨ã‚µãƒ³ãƒ—ルコードã®é…列 @code{ng} ã«ãŠã‘る外å´ã‹ã‚‰ä¸€ã¤å†…å´ã«ã‚る波括弧ã§ã™ã€‚ ã“ã®ã‚ˆã†ãªæ³¢æ‹¬å¼§ã¯å†—é•·ã§ã‚りã€é…列è¦ç´ ã®æ•°ã‚’変ãˆã‚‹ã¨ããªã©ã«ä¿®æ­£ãƒŸã‚¹ã‚’生ã˜ã‚„ã™ãã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim int ng[3][2] = { { {1, 2}, { 3, 4}, { 5, 6 } } }; /* W0562 */ int ok[3][2] = { { 1, 2 }, { 3, 4 }, { 5, 6 } }; /* OK */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0563 @section W0563 @cindex W0563 @subsection メッセージ本文 ã“ã®ãƒ–ロックã®å¤–å´ã‹ã‚‰ãƒ©ãƒ™ãƒ« `%s' ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ãŸå ´åˆã€ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¯åˆæœŸåŒ–ã•れã¾ã›ã‚“。 @subsection 内容 ä¸å®šå€¤ã‚’使ã†ã“ã¨ã§äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a, int b) { if (a == 0) { if (b != 0) { goto ERR; } } else { int c = 0; ERR: /* W0563 */ b = c; } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0564} ã“ã® goto æ–‡ãŒãƒ©ãƒ™ãƒ« `%s' ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ãŸå ´åˆã€ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¯åˆæœŸåŒ–ã•れã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0564 @section W0564 @cindex W0564 @subsection メッセージ本文 ã“ã® goto æ–‡ãŒãƒ©ãƒ™ãƒ« `%s' ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ãŸå ´åˆã€ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¯åˆæœŸåŒ–ã•れã¾ã›ã‚“。 @subsection 内容 ä¸å®šå€¤ã‚’使ã†ã“ã¨ã§äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a, int b) { if (a == 0) { int c = 0; RETRY: b = c; } if (b != 0) { goto RETRY; /* W0564 */ } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0563} ã“ã®ãƒ–ロックã®å¤–å´ã‹ã‚‰ãƒ©ãƒ™ãƒ« `%s' ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ãŸå ´åˆã€ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¯åˆæœŸåŒ–ã•れã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0565 @section W0565 @cindex W0565 @subsection メッセージ本文 汎整数型を volatile ãƒã‚¤ãƒ³ã‚¿åž‹(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªã‚­ãƒ£ã‚¹ãƒˆã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int a = 0xFFFFU; volatile unsigned int *b = (volatile unsigned int *) a; /* W0565 */ unsigned int c = (unsigned int) b; /* W0565 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0566} 汎整数型を関数ãƒã‚¤ãƒ³ã‚¿åž‹(ã¾ãŸã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0567} 汎整数型をオブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0566 @section W0566 @cindex W0566 @subsection メッセージ本文 汎整数型を関数ãƒã‚¤ãƒ³ã‚¿åž‹(ã¾ãŸã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªã‚­ãƒ£ã‚¹ãƒˆã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int addr = 0xFFFFFFFFU; void (*p)(int, long) = (void (*)(int, long)) addr; /* W0566 */ int i = (int) p; /* W0566 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0565} 汎整数型を volatile ãƒã‚¤ãƒ³ã‚¿åž‹(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0567} 汎整数型をオブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0567 @section W0567 @cindex W0567 @subsection メッセージ本文 汎整数型をオブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªã‚­ãƒ£ã‚¹ãƒˆã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int addr = 0xFFFFFFFFU; void (*p)(int, long) = (void (*)(int, long)) addr; /* W0567 */ int i = (int) p; /* W0567 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0565} 汎整数型を volatile ãƒã‚¤ãƒ³ã‚¿åž‹(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0566} 汎整数型を関数ãƒã‚¤ãƒ³ã‚¿åž‹(ã¾ãŸã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0568 @section W0568 @cindex W0568 @subsection メッセージ本文 符å·ä»˜ã定数å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªã‚·ãƒ•ト演算ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int a = 0x7FFFFFFF << 1; /* W0568 */ int b = -5 << 1; /* W0568 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0569} 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0570} 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0569 @section W0569 @cindex W0569 @subsection メッセージ本文 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªã‚·ãƒ•ト演算ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a) { if (a >= 0x40000000) { return a << 1; /* W0569 */ } if (a < 0) { return a << 1; /* W0569 */ } return a << 1; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0568} 符å·ä»˜ã定数å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0570} 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0570 @section W0570 @cindex W0570 @subsection メッセージ本文 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªã‚·ãƒ•ト演算ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a) { if (a >= 0x10000000) { return a << 1; /* W0570 */ } if (a < 10) { return a << 1; /* W0570 */ } return a << 1; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0568} 符å·ä»˜ã定数å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0569} 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0571 @section W0571 @cindex W0571 @subsection メッセージ本文 符å·ä»˜ãデータã®å³ã‚·ãƒ•ト演算ã«ã¯ã€å‡¦ç†ç³»ã«ã‚ˆã£ã¦è«–ç†ã‚·ãƒ•トã¨ç®—術シフトã®ä¸¡æ–¹ã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªç¬¦å·ä»˜ãåž‹ã®æ¼”ç®—ã¯ã€ç¬¦å·ãƒ“ットãŒã‚¼ãƒ­ã«ãªã‚‹(è«–ç†ã‚·ãƒ•ト)å ´åˆã¨ç¬¦å·ãƒ“ットを複製ã—ãŸã‚‚ã®ã«ç½®ãæ›ã‚ã‚‹(算術シフト)å ´åˆãŒã‚り〠ã©ã¡ã‚‰ã«ãªã‚‹ã‹ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a) { return a >> 3; /* W0571 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0572} 符å·ä»˜ãã®ãƒ‡ãƒ¼ã‚¿ã«å¯¾ã™ã‚‹ãƒ“ット演算ã¯å‡¦ç†ç³»å®šç¾©ã®çµæžœã«ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0572 @section W0572 @cindex W0572 @subsection メッセージ本文 符å·ä»˜ãã®ãƒ‡ãƒ¼ã‚¿ã«å¯¾ã™ã‚‹ãƒ“ット演算ã¯å‡¦ç†ç³»å®šç¾©ã®çµæžœã«ãªã‚Šã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªç¬¦å·ä»˜ãåž‹ã®æ¼”ç®—ã¯ã€ç¬¦å·ãƒ“ットãŒã‚¼ãƒ­ã«ãªã‚‹(è«–ç†ã‚·ãƒ•ト)å ´åˆã¨ç¬¦å·ãƒ“ットを複製ã—ãŸã‚‚ã®ã«ç½®ãæ›ã‚ã‚‹(算術シフト)å ´åˆãŒã‚り〠ã©ã¡ã‚‰ã«ãªã‚‹ã‹ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(short a) { short b; b = a >> 8; /* W0572 */ b <<= 1; /* W0572 */ b = a & 15; /* W0572 */ b = a | 15; /* W0572 */ b = a ^ 15; /* W0572 */ b = ~a; /* W0572 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0571} 符å·ä»˜ãデータã®å³ã‚·ãƒ•ト演算ã«ã¯ã€å‡¦ç†ç³»ã«ã‚ˆã£ã¦è«–ç†ã‚·ãƒ•トã¨ç®—術シフトã®ä¸¡æ–¹ã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0573 @section W0573 @cindex W0573 @subsection メッセージ本文 `[]' 内ã®èµ°æŸ»ã‚»ãƒƒãƒˆã® `-' 文字ã¯ã€å‡¦ç†ç³»å®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªå¤‰æ›æŒ‡å®šå­ã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim char c; scanf("%[a-z]", &c); /* W0573 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W0574 @section W0574 @cindex W0574 @subsection メッセージ本文 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—定数ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 基本ソース文字集åˆä»¥å¤–ã®æ–‡å­—ã®å‡¦ç†ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim const char c = '$'; /* W0574 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0575} 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—列リテラルã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0576} 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã‚³ãƒ¡ãƒ³ãƒˆã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0577} 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã“ã®å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0575 @section W0575 @cindex W0575 @subsection メッセージ本文 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—列リテラルã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 基本ソース文字集åˆä»¥å¤–ã®æ–‡å­—ã®å‡¦ç†ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim const char *str = "@$"; /* W0575 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0574} 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—定数ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0576} 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã‚³ãƒ¡ãƒ³ãƒˆã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0577} 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã“ã®å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0576 @section W0576 @cindex W0576 @subsection メッセージ本文 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã‚³ãƒ¡ãƒ³ãƒˆã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 基本ソース文字集åˆä»¥å¤–ã®æ–‡å­—ã®å‡¦ç†ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim /* $ W0576 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0574} 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—定数ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0575} 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—列リテラルã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0577} 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã“ã®å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0577 @section W0577 @cindex W0577 @subsection メッセージ本文 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã“ã®å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 基本ソース文字集åˆä»¥å¤–ã®æ–‡å­—ã®å‡¦ç†ã¯å‡¦ç†ç³»å®šç¾©ã®ãŸã‚ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define MACRO $ /* W0577 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0574} 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—定数ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0575} 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—列リテラルã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0576} 基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã‚³ãƒ¡ãƒ³ãƒˆã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0578 @section W0578 @cindex W0578 @subsection メッセージ本文 æš—é»™çš„ã«æ±Žæ•´æ•°åž‹ `%s' ã®è¤‡åˆå¼ã‹ã‚‰ã‚ˆã‚Šå¤§ããªåž‹ `%s' ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 サンプルコードã®é–¢æ•°ã§ã¯ @code{int} 型変数 @code{a} ã® 2 ä¹—ã—ãŸå€¤ãŒ @code{int} åž‹ã®ç¯„囲ã«åŽã¾ã‚‰ãªã„ã“ã¨ã‚’想定ã—㦠@code{long} 型変数 @code{b} ã¸ä»£å…¥ã—ã¦ã„ã¾ã™ã€‚ ã—ã‹ã—ã€ç’°å¢ƒã«ã‚ˆã£ã¦ã¯ @code{a * a} ã®æ¼”ç®—ã¯ã„ã£ãŸã‚“ @code{int} åž‹ã¨ã—ã¦çµæžœã‚’出ã—ãŸã‚ã¨ã« @code{b} ã¸ä»£å…¥ã•れる場åˆãŒã‚りã¾ã™ã€‚ãã®å ´åˆã€@code{a} ã®å€¤ã«ã‚ˆã£ã¦ã¯æƒ…å ±ã®æå¤±ãŒèµ·ã“りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a) { long b = a * a; /* W0578 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0579 @section W0579 @cindex W0579 @subsection メッセージ本文 汎整数型 `%s' ã®è¤‡åˆå¼ã‚’ã€ã‚ˆã‚Šå¤§ããªåž‹ `%s' ã«ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 サンプルコードã®é–¢æ•°ã§ã¯ @code{int} 型変数 @code{a} ã® 2 ä¹—ã—ãŸå€¤ãŒ @code{int} åž‹ã®ç¯„囲ã«åŽã¾ã‚‰ãªã„ã“ã¨ã‚’想定ã—㦠@code{long} 型変数 @code{b} ã¸ä»£å…¥ã—ã¦ã„ã¾ã™ã€‚ ã—ã‹ã—ã€ç’°å¢ƒã«ã‚ˆã£ã¦ã¯ @code{a * a} ã®æ¼”ç®—ã¯ã„ã£ãŸã‚“ @code{int} åž‹ã¨ã—ã¦çµæžœã‚’出ã—ãŸã‚ã¨ã« @code{b} ã¸ä»£å…¥ã•れる場åˆãŒã‚りã¾ã™ã€‚ãã®å ´åˆã€@code{a} ã®å€¤ã«ã‚ˆã£ã¦ã¯æƒ…å ±ã®æå¤±ãŒèµ·ã“りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a) { long b = (long) (a * a); /* W0579 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W0580 @section W0580 @cindex W0580 @subsection メッセージ本文 ローカルãªé™çš„変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€ã‚ˆã‚Šé•·ã„寿命をæŒã¤ãƒã‚¤ãƒ³ã‚¿ã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 ローカル㧠@code{static} ãªå¤‰æ•°ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€çµåˆã¾ãŸã¯ã‚ˆã‚Šåºƒã„スコープをæŒã¤ãƒã‚¤ãƒ³ã‚¿ã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ é™çš„記憶域期間をæŒã¤ãŸã‚ã€å±é™ºã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‡ãƒ¼ã‚¿éš è”½ã®åŽŸå‰‡ã«åã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int *p; void func(void) { static int i = 0; p = &i; /* W0580 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0581 @section W0581 @cindex W0581 @subsection メッセージ本文 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®é–¢æ•°ã®ä»¥å‰ã®ä½¿ç”¨æ™‚ã¨ç•°ãªã‚Šã¾ã™ã€‚ @subsection 内容 足りãªã„引数ãŒã‚ã‚‹å ´åˆã¯è£œã‚れã¾ã™ãŒã€å€¤ã¯ä¸å®šã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ãã®ä¸å®šå€¤ã‚’使用ã™ã‚‹éƒ¨åˆ†ã®å‡¦ç†ã«ä¸å…·åˆãŒç”Ÿã˜ã‚‹å±é™ºæ€§ãŒé«˜ã„ã¨ã„ãˆã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a, short b, long c) { switch (a) { case 0: return foo(a, b, c); case 1: return foo(a, c, b); /* W0581 */ default: return foo(b, c); /* W0581 */ } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0582} 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°ãƒ—ロトタイプ宣言ã¨ç•°ãªã‚Šã¾ã™ã€‚ @item @ref{W0583} 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°å®šç¾©ã¨ç•°ãªã‚Šã¾ã™ã€‚ @item @ref{W0584} %s 番目ã®å®Ÿå¼•æ•°ã®åž‹ãŒã€é–¢æ•°å®šç¾©ã®ä¸­ã®ä»®å¼•æ•°ã®åž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0582 @section W0582 @cindex W0582 @subsection メッセージ本文 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°ãƒ—ロトタイプ宣言ã¨ç•°ãªã‚Šã¾ã™ã€‚ @subsection 内容 足りãªã„引数ãŒã‚ã‚‹å ´åˆã¯è£œã‚れã¾ã™ãŒã€å€¤ã¯ä¸å®šã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ãã®ä¸å®šå€¤ã‚’使用ã™ã‚‹éƒ¨åˆ†ã®å‡¦ç†ã«ä¸å…·åˆãŒç”Ÿã˜ã‚‹å±é™ºæ€§ãŒé«˜ã„ã¨ã„ãˆã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a, short b, long c) { switch (a) { case 0: return foo(a, b, c); case 1: return foo(a, c, b); /* W0582 */ default: return foo(b, c); /* W0582 */ } } extern int foo(int, short, long); @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0581} 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®é–¢æ•°ã®ä»¥å‰ã®ä½¿ç”¨æ™‚ã¨ç•°ãªã‚Šã¾ã™ã€‚ @item @ref{W0583} 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°å®šç¾©ã¨ç•°ãªã‚Šã¾ã™ã€‚ @item @ref{W0584} %s 番目ã®å®Ÿå¼•æ•°ã®åž‹ãŒã€é–¢æ•°å®šç¾©ã®ä¸­ã®ä»®å¼•æ•°ã®åž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0583 @section W0583 @cindex W0583 @subsection メッセージ本文 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°å®šç¾©ã¨ç•°ãªã‚Šã¾ã™ã€‚ @subsection 内容 足りãªã„引数ãŒã‚ã‚‹å ´åˆã¯è£œã‚れã¾ã™ãŒã€å€¤ã¯ä¸å®šã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ãã®ä¸å®šå€¤ã‚’使用ã™ã‚‹éƒ¨åˆ†ã®å‡¦ç†ã«ä¸å…·åˆãŒç”Ÿã˜ã‚‹å±é™ºæ€§ãŒé«˜ã„ã¨ã„ãˆã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a, short b, long c) { switch (a) { case 0: return foo(a, b, c); case 1: return foo(a, c, b); /* W0583 */ default: return foo(b, c); /* W0583 */ } } int foo(int a, short b, long c) { return a + b + c; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0581} 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®é–¢æ•°ã®ä»¥å‰ã®ä½¿ç”¨æ™‚ã¨ç•°ãªã‚Šã¾ã™ã€‚ @item @ref{W0582} 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°ãƒ—ロトタイプ宣言ã¨ç•°ãªã‚Šã¾ã™ã€‚ @item @ref{W0584} %s 番目ã®å®Ÿå¼•æ•°ã®åž‹ãŒã€é–¢æ•°å®šç¾©ã®ä¸­ã®ä»®å¼•æ•°ã®åž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0584 @section W0584 @cindex W0584 @subsection メッセージ本文 %s 番目ã®å®Ÿå¼•æ•°ã®åž‹ãŒã€é–¢æ•°å®šç¾©ã®ä¸­ã®ä»®å¼•æ•°ã®åž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ @subsection 内容 実引数ã®åž‹ã¨ä»®å¼•æ•°ã®åž‹ãŒç•°ãªã‚‹å ´åˆã€å€¤ãŒæš—黙的ã«å¤‰æ›ã•れã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void func1(a, b) long a; double b; { ...snip... } void func2(void) { int a = 0; long b = 0; func1(a, b); /* W0584 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0581} 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®é–¢æ•°ã®ä»¥å‰ã®ä½¿ç”¨æ™‚ã¨ç•°ãªã‚Šã¾ã™ã€‚ @item @ref{W0582} 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°ãƒ—ロトタイプ宣言ã¨ç•°ãªã‚Šã¾ã™ã€‚ @item @ref{W0583} 実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°å®šç¾©ã¨ç•°ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0585 @section W0585 @cindex W0585 @subsection メッセージ本文 制御変数 `%s' ã¯ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆå¼ã«ç¾ã‚Œã¾ã›ã‚“。 @subsection 内容 ループ変数ã®å¢—分を増分å¼ã§è¡Œã‚ãšã«ãƒ«ãƒ¼ãƒ—本体中ã§è¡Œã†ã¨ãƒ«ãƒ¼ãƒ—ã®ä»•様ãŒã‚ã‹ã‚Šã«ãããªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim int i, j; for (i = j = 0; i < 10; j++) { /* W0585 */ i++; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0586 @section W0586 @cindex W0586 @subsection メッセージ本文 typedef`%s' ãŒäºŒã¤ä»¥ä¸Šã®å ´æ‰€ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 @code{typedef} åã¯ãƒªãƒ³ã‚±ãƒ¼ã‚¸ã‚’æŒã¡ã¾ã›ã‚“。åŒä¸€ã® @code{typedef} を複数宣言ã—ã¦ã‚‚ã€ãれら㮠@code{typedef} åã¯åˆ¥ç‰©ã¨ã—ã¦æ‰±ã‚れã¾ã™ã€‚ ã“れã¯éžå¸¸ã«ç´›ã‚‰ã‚ã—ãã€ã‚³ãƒ¼ãƒ‰ã®å¯èª­æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @file{test1.c} @verbatim typedef int *INT_PTR; /* W0586 */ void func1(INT_PTR) { ...snip... } @end verbatim @file{test2.c} @verbatim typedef int *INT_PTR; /* W0586 */ void func2(INT_PTR) { ...snip... } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0589 @section W0589 @cindex W0589 @subsection メッセージ本文 オブジェクト `%s' ã¯ã€å®šç¾©ã•れã¦ã„る翻訳å˜ä½ã®å†…ã®ã€é–¢æ•° `%s' ã®ã¿ã‹ã‚‰å‚ç…§ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 グローãƒãƒ«ãªå¯è¦–性をæŒã¡ãªãŒã‚‰ã€å±€æ‰€çš„ãªå‚ç…§ã‚’ã•れã¦ã„ã¾ã™ã€‚グローãƒãƒ«ãªã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ•°ãŒå¤šã„ã¨ã€ãƒ—ログラム全体をç†è§£ã™ã‚‹å ´åˆã®å¯èª­æ€§ãŒæ¸›å°‘ã—ã¾ã™ã€‚ @subsection サンプルコード @file{test1.c} @verbatim void func1(void) /* W0589 & W0591 */ { ...snip... } void func2(void) { func1(); } @end verbatim @file{test2.c} @verbatim extern void func2(void); void func3(void) { func2(); } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0591 @section W0591 @cindex W0591 @subsection メッセージ本文 関数 `%s' ã¯ã€å®šç¾©ã•れã¦ã„る翻訳å˜ä½ã®å†…ã§ã®ã¿å‚ç…§ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 グローãƒãƒ«ãªé–¢æ•°ã®æ•°ãŒå¤šã„ã¨ã€ãƒ—ログラム全体をç†è§£ã™ã‚‹å ´åˆã®å¯èª­æ€§ãŒæ¸›å°‘ã—ã¾ã™ã€‚ @subsection サンプルコード @file{test1.c} @verbatim void func1(void) /* W0589 & W0591 */ { ...snip... } void func2(void) { func1(); } @end verbatim @file{test2.c} @verbatim extern void func2(void); void func3(void) { func2(); } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0593 @section W0593 @cindex W0593 @subsection メッセージ本文 オブジェクト `%s' ã¯ã€å®šç¾©ã•れã¦ã„る翻訳å˜ä½ã®ä¸­ã§ã®ã¿å‚ç…§ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 グローãƒãƒ«ãªã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ•°ãŒå¤šã„ã¨ã€ãƒ—ログラム全体をç†è§£ã™ã‚‹å ´åˆã®å¯èª­æ€§ãŒæ¸›å°‘ã—ã¾ã™ã€‚ @subsection サンプルコード @file{test1.c} @verbatim int a = 100; /* W0593 */ void func1(void) { a += 1; } void func2(void) { func1(); a += 2; } @end verbatim @file{test2.c} @verbatim extern void func2(void); void func3(void) { func2(); } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0597 @section W0597 @cindex W0597 @subsection メッセージ本文 副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @subsection 内容 åŒä¸€ã®å¤‰æ•°ãŒå‰¯ä½œç”¨å®Œäº†ç‚¹ã®é–“ã« 2 度以上アクセスã•れãŸå ´åˆã€ãã®è©•価順åºã¯ ISO è¦æ ¼ã§ã¯æœªå®šç¾©ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作ãŒç”Ÿã˜ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int bar(int *); extern int baz(const int *); void foo(int a, int b) { a = b * a++; /* W0597 */ a = bar(&a) * a++; /* W0597 */ b = bar(&a) * (a++ + --a); /* W0597, W0599 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0598} 副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @item @ref{W0599} 副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @item @ref{W0600} 副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.2.0 @node W0598 @section W0598 @cindex W0598 @subsection メッセージ本文 副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @subsection 内容 åŒä¸€ã®å¤‰æ•°ãŒå‰¯ä½œç”¨å®Œäº†ç‚¹ã®é–“ã« 2 度以上アクセスã•れãŸå ´åˆã€ãã®è©•価順åºã¯ ISO è¦æ ¼ã§ã¯æœªå®šç¾©ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作ãŒç”Ÿã˜ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int bar(int *); extern int baz(const int *); void foo(int a, int b) { b = bar(&a) * a++; /* W0598 */ b = bar(&a) + bar(&a); /* W0598 */ b = bar(&a) + baz(&a); /* W0600 */ b = baz(&a) + baz(&a); } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0597} 副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @item @ref{W0599} 副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @item @ref{W0600} 副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.2.0 @node W0599 @section W0599 @cindex W0599 @subsection メッセージ本文 副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @subsection 内容 åŒä¸€ã®å¤‰æ•°ãŒå‰¯ä½œç”¨å®Œäº†ç‚¹ã®é–“ã« 2 度以上アクセスã•れãŸå ´åˆã€ãã®è©•価順åºã¯ ISO è¦æ ¼ã§ã¯æœªå®šç¾©ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作ãŒç”Ÿã˜ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void bar(int, int, int); void foo(int a, int b, int *c) { b = (a + 1) + a++; /* W0599 */ b = c[a] + c[++a]; /* W0599 */ bar(a, a++, c[a]); /* W0599 */ bar(a, a, c[a++]); /* W0599 */ a = a + b; c[a] = a++ + b; /* W0599 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0597} 副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @item @ref{W0598} 副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @item @ref{W0600} 副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.2.0 @node W0600 @section W0600 @cindex W0600 @subsection メッセージ本文 副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @subsection 内容 åŒä¸€ã®å¤‰æ•°ãŒå‰¯ä½œç”¨å®Œäº†ç‚¹ã®é–“ã« 2 度以上アクセスã•れãŸå ´åˆã€ãã®è©•価順åºã¯ ISO è¦æ ¼ã§ã¯æœªå®šç¾©ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作ãŒç”Ÿã˜ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int bar(int *); extern int baz(const int *); void foo(int a, int b) { b = bar(&a) * a; /* W0600 */ b = baz(&a) * a; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0597} 副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @item @ref{W0598} 副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @item @ref{W0599} 副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.2.0 @node W0605 @section W0605 @cindex W0605 @subsection メッセージ本文 ç¹°ã‚Šè¿”ã—æ–‡ã‚’終了ã•ã›ã‚‹ç›®çš„ã§ã€break æ–‡ãŒäºŒã¤ä»¥ä¸Šä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 ç¹°ã‚Šè¿”ã—æ–‡ã§è¤‡æ•°ã® @code{break} æ–‡ãŒä½¿ç”¨ã•れã¦ã„ã‚‹å ´åˆã€ã‚³ãƒ¼ãƒ‰ã®æ§‹é€ ãŒè¤‡é›‘ã«ãªã‚Šã€ 構造化定ç†(「順次ã€ã€Œå復ã€ã€Œåˆ†å²ã€)ã«åŸºã¥ã„ãŸã‚³ãƒ¼ãƒ‰ã§å®Ÿç¾ã§ãã‚‹ä¿å®ˆæ€§ã«é–¢ã™ã‚‹ãƒ¡ãƒªãƒƒãƒˆã‚’æãªã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim while (n > 0) { if (n == 1) { break; } if (n == 2) { break; /* W0605 */ } } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0606 @section W0606 @cindex W0606 @subsection メッセージ本文 å…±ç”¨ä½“ã«æµ®å‹•å°æ•°ç‚¹åž‹ã®ãƒ¡ãƒ³ãƒãŒã‚りã¾ã™ã€‚ @subsection 内容 æµ®å‹•å°æ•°ç‚¹åž‹ã®ãƒ¡ãƒ³ãƒå¤‰æ•°ã«å¯¾ã—ã¦å…±ç”¨ä½“を使ã£ã¦ãƒ“ットå˜ä½ã§ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã®å‹•作ã¯ã‚³ãƒ³ãƒ‘イラä¾å­˜ãªã®ã§ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim union UNI { /* W0606 */ float a; int b; }; @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0607 @section W0607 @cindex W0607 @subsection メッセージ本文 値ãŒè² ã«ãªã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 明らã‹ã«è² ã«ãªã‚‹ã“ã¨ãŒæ˜Žã‚‰ã‹ãªæ•´æ•°ã¯ã€è² ã®æ•°ã¨ã—ã¦æ‰±ã‚れるã“ã¨ãŒæƒ³å®šã•れã¾ã™ã€‚ ãã®ã‚ˆã†ãªå€¤ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れるã“ã¨ã§æ„図ã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a) { if (a < 0) { unsigned int b = (unsigned int) a; /* W0607 */ } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0608} 値ãŒè² ã«ãªã‚‹ã“ã¨ãŒã‚りã†ã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.8.0 @node W0608 @section W0608 @cindex W0608 @subsection メッセージ本文 値ãŒè² ã«ãªã‚‹ã“ã¨ãŒã‚りã†ã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 明らã‹ã«è² ã«ãªã‚‹ã“ã¨ãŒæ˜Žã‚‰ã‹ãªæ•´æ•°ã¯ã€è² ã®æ•°ã¨ã—ã¦æ‰±ã‚れるã“ã¨ãŒæƒ³å®šã•れã¾ã™ã€‚ ãã®ã‚ˆã†ãªå€¤ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れるã“ã¨ã§æ„図ã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void fuu(int a) { unsigned char b; if (a < 256) { b = (unsigned char) a; /* W0608 */ } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0607} 値ãŒè² ã«ãªã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.8.0 @node W0609 @section W0609 @cindex W0609 @subsection メッセージ本文 ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«çœŸã«ãªã‚Šã¾ã™ã€‚ @subsection 内容 処ç†ãƒ•ãƒ­ãƒ¼ãŒæ„図通りã§ã‚ã‚‹ã‹ä¸æ˜Žç¢ºã§ã€æ··ä¹±ã‚’æ‹›ãå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ æ„図通りã§ãªã„å ´åˆã€ã‚³ãƒ¼ãƒ‰ã®ä¿¡é ¼æ€§ãŒç–‘ã‚れã¾ã™ã€‚ã¾ãŸã€ä¸å¿…è¦ãªå‡¦ç†ãŒã‚ã‚‹å ´åˆã¯ã€ã‚³ãƒ¼ãƒ‰ãŒå†—é•·ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a) { if (a < 0) { if (a != 0) { /* W0609 */ ...snip... } } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0610} ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0611} ã“ã®ç¹°ã‚Šè¿”ã—æ–‡ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚ @item @ref{W0612} ã“ã® if æ¡ä»¶å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚ @item @ref{W0613} ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0614} ã“ã® `do-while' 制御å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ç¹°ã‚Šè¿”ã—æ–‡ã®æœ¬ä½“ã¯ä¸€å›žã®ã¿å®Ÿè¡Œã•れã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0610 @section W0610 @cindex W0610 @subsection メッセージ本文 ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ @subsection 内容 処ç†ãƒ•ãƒ­ãƒ¼ãŒæ„図通りã§ã‚ã‚‹ã‹ä¸æ˜Žç¢ºã§ã€æ··ä¹±ã‚’æ‹›ãå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ æ„図通りã§ãªã„å ´åˆã€ã‚³ãƒ¼ãƒ‰ã®ä¿¡é ¼æ€§ãŒç–‘ã‚れã¾ã™ã€‚ã¾ãŸã€ä¸å¿…è¦ãªå‡¦ç†ãŒã‚ã‚‹å ´åˆã¯ã€ã‚³ãƒ¼ãƒ‰ãŒå†—é•·ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a) { if (a < 0) { if (a == 0) { /* W0610 */ } } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0609} ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«çœŸã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0611} ã“ã®ç¹°ã‚Šè¿”ã—æ–‡ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚ @item @ref{W0612} ã“ã® if æ¡ä»¶å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚ @item @ref{W0613} ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0614} ã“ã® `do-while' 制御å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ç¹°ã‚Šè¿”ã—æ–‡ã®æœ¬ä½“ã¯ä¸€å›žã®ã¿å®Ÿè¡Œã•れã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0611 @section W0611 @cindex W0611 @subsection メッセージ本文 ã“ã®ç¹°ã‚Šè¿”ã—æ–‡ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚ @subsection 内容 処ç†ãƒ•ãƒ­ãƒ¼ãŒæ„図通りã§ã‚ã‚‹ã‹ä¸æ˜Žç¢ºã§ã€æ··ä¹±ã‚’æ‹›ãå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ æ„図通りã§ãªã„å ´åˆã€ã‚³ãƒ¼ãƒ‰ã®ä¿¡é ¼æ€§ãŒç–‘ã‚れã¾ã™ã€‚ã¾ãŸã€ä¸å¿…è¦ãªå‡¦ç†ãŒã‚ã‚‹å ´åˆã¯ã€ã‚³ãƒ¼ãƒ‰ãŒå†—é•·ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a) { if ( a > 0 ) { while (a != 0) { /* W0611 */ ...snip... } } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0609} ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«çœŸã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0610} ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0612} ã“ã® if æ¡ä»¶å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚ @item @ref{W0613} ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0614} ã“ã® `do-while' 制御å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ç¹°ã‚Šè¿”ã—æ–‡ã®æœ¬ä½“ã¯ä¸€å›žã®ã¿å®Ÿè¡Œã•れã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0612 @section W0612 @cindex W0612 @subsection メッセージ本文 ã“ã® if æ¡ä»¶å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚ @subsection 内容 処ç†ãƒ•ãƒ­ãƒ¼ãŒæ„図通りã§ã‚ã‚‹ã‹ä¸æ˜Žç¢ºã§ã€æ··ä¹±ã‚’æ‹›ãå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ æ„図通りã§ãªã„å ´åˆã€ã‚³ãƒ¼ãƒ‰ã®ä¿¡é ¼æ€§ãŒç–‘ã‚れã¾ã™ã€‚ã¾ãŸã€ä¸å¿…è¦ãªå‡¦ç†ãŒã‚ã‚‹å ´åˆã¯ã€ã‚³ãƒ¼ãƒ‰ãŒå†—é•·ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim int i; for (i = 0; i < 10; i++) { if (i < 20) { /* W0612 */ ...snip... } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0609} ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«çœŸã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0610} ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0611} ã“ã®ç¹°ã‚Šè¿”ã—æ–‡ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚ @item @ref{W0613} ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0614} ã“ã® `do-while' 制御å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ç¹°ã‚Šè¿”ã—æ–‡ã®æœ¬ä½“ã¯ä¸€å›žã®ã¿å®Ÿè¡Œã•れã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0613 @section W0613 @cindex W0613 @subsection メッセージ本文 ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ @subsection 内容 処ç†ãƒ•ãƒ­ãƒ¼ãŒæ„図通りã§ã‚ã‚‹ã‹ä¸æ˜Žç¢ºã§ã€æ··ä¹±ã‚’æ‹›ãå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ æ„図通りã§ãªã„å ´åˆã€ã‚³ãƒ¼ãƒ‰ã®ä¿¡é ¼æ€§ãŒç–‘ã‚れã¾ã™ã€‚ã¾ãŸã€ä¸å¿…è¦ãªå‡¦ç†ãŒã‚ã‚‹å ´åˆã¯ã€ã‚³ãƒ¼ãƒ‰ãŒå†—é•·ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim int i; for (i = 0; i < 10; i++) { if (i > 10) { /* W0613 */ ...snip... } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0609} ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«çœŸã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0610} ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0611} ã“ã®ç¹°ã‚Šè¿”ã—æ–‡ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚ @item @ref{W0612} ã“ã® if æ¡ä»¶å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚ @item @ref{W0614} ã“ã® `do-while' 制御å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ç¹°ã‚Šè¿”ã—æ–‡ã®æœ¬ä½“ã¯ä¸€å›žã®ã¿å®Ÿè¡Œã•れã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0614 @section W0614 @cindex W0614 @subsection メッセージ本文 ã“ã® `do-while' 制御å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ç¹°ã‚Šè¿”ã—æ–‡ã®æœ¬ä½“ã¯ä¸€å›žã®ã¿å®Ÿè¡Œã•れã¾ã™ã€‚ @subsection 内容 処ç†ãƒ•ãƒ­ãƒ¼ãŒæ„図通りã§ã‚ã‚‹ã‹ä¸æ˜Žç¢ºã§ã€æ··ä¹±ã‚’æ‹›ãå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ æ„図通りã§ãªã„å ´åˆã€ã‚³ãƒ¼ãƒ‰ã®ä¿¡é ¼æ€§ãŒç–‘ã‚れã¾ã™ã€‚ ã¾ãŸã€ä¸å¿…è¦ãªå‡¦ç†ãŒã‚ã‚‹å ´åˆã¯ã€ã‚³ãƒ¼ãƒ‰ãŒå†—é•·ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a) { if (a == 0) { do { } while (a > 0); /* W0614 */ } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0609} ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«çœŸã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0610} ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0611} ã“ã®ç¹°ã‚Šè¿”ã—æ–‡ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚ @item @ref{W0612} ã“ã® if æ¡ä»¶å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚ @item @ref{W0613} ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0622 @section W0622 @cindex W0622 @subsection メッセージ本文 関数ãŒãƒ–ロックスコープ内ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®é–¢æ•°ã¯ã€ãƒ•ァイルスコープ内ã§å®£è¨€ã•れるã¹ãã§ã™ã€‚ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯è§£æžæ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim int func1(void) { extern int func2(void); /* W0622 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0623 @section W0623 @cindex W0623 @subsection メッセージ本文 外部çµåˆã®ã‚ªãƒ–ジェクトãŒã€ãƒ–ロックスコープ内ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ªãƒ–ジェクトã¯ã€ãƒ•ァイルスコープ内ã§å®£è¨€ã•れるã¹ãã§ã™ã€‚ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯è§£æžæ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(void) { extern int i; /* W0623 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0624 @section W0624 @cindex W0624 @subsection メッセージ本文 #define ã‚ã‚‹ã„㯠#undef ãŒãƒ–ロックã®ä¸­ã«å­˜åœ¨ã—ã¾ã™ã€‚ @subsection 内容 @code{#define}ã€@code{#undef} ã¯ã€ãƒ•ァイルスコープ内ã§å®£è¨€ã•れるã¹ãã§ã™ã€‚ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯è§£æžæ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define MACRO 0 int foo(void) { #if defined(MACRO) #undef MACRO /* W0624 */ #define MACRO 1 /* W0624 */ #endif return MACRO; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0625 @section W0625 @cindex W0625 @subsection メッセージ本文 外部çµåˆã®å®šç¾©ã¾ãŸã¯å®£è¨€ã®ä¸­ã§ `%s' ãŒä½¿ã‚れã¦ã„ã¾ã™ãŒã€ãã® typedef ãŒãƒ˜ãƒƒãƒ€ãƒ•ァイルã®ä¸­ã§å®£è¨€ã•れã¦ã„ã¾ã›ã‚“。 @subsection 内容 @code{typedef} 宣言ã¯ãƒ˜ãƒƒãƒ€ãƒ•ァイル内ã§ã®ã¿è¡Œã†ã¹ãã§ã™ã€‚ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ä¿å®ˆæ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim typedef int *INT_PTR; /* W0625 */ extern INT_PTR func(void); INT_PTR func(void) { return 0; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.8.0 @node W0626 @section W0626 @cindex W0626 @subsection メッセージ本文 ワイド文字ã¾ãŸã¯ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 ワイド文字ã¾ãŸã¯ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルを使用ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã¯å®Ÿè¡Œç’°å¢ƒã®ãƒ­ã‚±ãƒ¼ãƒ«ã«ä¾å­˜ ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim const wchar_t a = L'ã‚'; /* W0626 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0627 @section W0627 @cindex W0627 @subsection メッセージ本文 一行ã«ã€ç©ºæ–‡(`;' ã ã‘ã®æ–‡)ãŒã€ä»–ã®ã‚³ãƒ¼ãƒ‰ã®å¾Œã«ã‚りã¾ã™ã€‚ @subsection 内容 ä»–ã®æ–‡ã¨ç©ºæ–‡ãŒ 1 è¡Œã§æ›¸ã‹ã‚Œã¦ã„ã‚‹å ´åˆã€ç©ºæ–‡ã®æ„図ãŒä¸æ˜Žç¢ºã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim if (0); /* W0627 */ { ...snip... } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0628 @section W0628 @cindex W0628 @subsection メッセージ本文 関数 `%s' ãŒå®šç¾©ã•れã¦ã„ã¾ã™ãŒã€ã“ã®ãƒ—ロジェクトã§ã¯ä½¿ã‚れã¦ã„ã¾ã›ã‚“。 @subsection 内容 使用ã•れã¦ã„ãªã„関数ã¯ç„¡é§„ãªè¦ç´ ã¨ã„ãˆã¾ã™ã€‚コード中ã«ç„¡é§„ãªè¦ç´ ãŒã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @file{test1.c} @verbatim int func1(void) { return 0; } void func2(void) /* W0628 */ { ...snip... } @end verbatim @file{test2.c} @verbatim extern int func1(void); int main(void) { return func1(); } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0629} static 関数 `%s()' ã¯ã€ã“ã®ç¿»è¨³å˜ä½ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0629 @section W0629 @cindex W0629 @subsection メッセージ本文 static 関数 `%s()' ã¯ã€ã“ã®ç¿»è¨³å˜ä½ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã›ã‚“。 @subsection 内容 使用ã•れã¦ã„ãªã„関数ã¯ç„¡é§„ãªè¦ç´ ã¨ã„ãˆã¾ã™ã€‚コード中ã«ç„¡é§„ãªè¦ç´ ãŒã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim static int func1(void) /* W0629 */ { return 1; } int func2(void) { return 1; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0628} 関数 `%s' ãŒå®šç¾©ã•れã¦ã„ã¾ã™ãŒã€ã“ã®ãƒ—ロジェクトã§ã¯ä½¿ã‚れã¦ã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0632 @section W0632 @cindex W0632 @subsection メッセージ本文 `@code{#include <%s>}' ã®ä¸­ã§ ' ã‚„ " 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ @subsection 内容 `@code{'}'ã€`@code{"}' ã¾ãŸã¯ `@code{/*}' ã‚’ @code{#include} æ–‡ã§ä½¿ç”¨ã™ã‚‹ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim #include /* W0632 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0633} `#include "%s"' ã®ä¸­ã§ ' 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0634} `#include' 行ã®ä¸­ã§ `\' を使ã£ã¦ã„ã¾ã™ã€‚パス区切り文字ã¨ã—ã¦ã¯ `/' ã‚’å‹§ã‚ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.8.0 @node W0633 @section W0633 @cindex W0633 @subsection メッセージ本文 `@code{#include "%s"}' ã®ä¸­ã§ ' 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ @subsection 内容 `@code{'}' ã‚’ @code{#include} æ–‡ã§ä½¿ç”¨ã™ã‚‹ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim #include "NG'_header.h" /* W0633 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0632} `#include <%s>' ã®ä¸­ã§ ' ã‚„ " 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0634} `#include' 行ã®ä¸­ã§ `\' を使ã£ã¦ã„ã¾ã™ã€‚パス区切り文字ã¨ã—ã¦ã¯ `/' ã‚’å‹§ã‚ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.8.0 @node W0634 @section W0634 @cindex W0634 @subsection メッセージ本文 `#include' 行ã®ä¸­ã§ `\' を使ã£ã¦ã„ã¾ã™ã€‚パス区切り文字ã¨ã—ã¦ã¯ `/' ã‚’å‹§ã‚ã¾ã™ã€‚ @subsection 内容 @code{\} 㯠PC 環境ã«ãŠã‘るパス区切り文字ã§ã‚りã€@code{#include} æ–‡ã§ä½¿ç”¨ã™ã‚‹ã“ã¨ã§ç§»æ¤æ€§ã‚’æãªã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim #include "..\ng\header.h" /* W0634 */ #include "..\\ng\\header.h" /* W0634 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0632} `#include <%s>' ã®ä¸­ã§ ' ã‚„ " 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0633} `#include "%s"' ã®ä¸­ã§ ' 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.8.0 @node W0635 @section W0635 @cindex W0635 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。 @subsection 内容 未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a) { printf("Apple %f\n", a); /* W0635 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0636} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã«å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã›ã‚“。 @item @ref{W0637} 関数呼ã³å‡ºã—ã«ã€å¤‰æ›æŒ‡å®šå­ã®æ•°ã‚ˆã‚Šã‚‚多ãã®å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã™ã€‚ @item @ref{W0638} ã“ã®é–¢æ•°å‘¼ã³å‡ºã—ã«ã¯ã€å°‘ãªãã¨ã‚‚一ã¤ã®å®Ÿå¼•æ•°ãŒå¿…è¦ã§ã™ã€‚ @item @ref{W0639} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。 @item @ref{W0640} scanf 関数ã®å®Ÿå¼•æ•°ã«ã¯ãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒã‚¤ãƒ³ã‚¿ã‚’渡ã•ãªã‘れã°ã„ã‘ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0636 @section W0636 @cindex W0636 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã«å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã›ã‚“。 @subsection 内容 未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a, int b, int c) { printf("Banana %d, %d, %d\n", a, b); /* W0636 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0635} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。 @item @ref{W0637} 関数呼ã³å‡ºã—ã«ã€å¤‰æ›æŒ‡å®šå­ã®æ•°ã‚ˆã‚Šã‚‚多ãã®å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã™ã€‚ @item @ref{W0638} ã“ã®é–¢æ•°å‘¼ã³å‡ºã—ã«ã¯ã€å°‘ãªãã¨ã‚‚一ã¤ã®å®Ÿå¼•æ•°ãŒå¿…è¦ã§ã™ã€‚ @item @ref{W0639} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。 @item @ref{W0640} scanf 関数ã®å®Ÿå¼•æ•°ã«ã¯ãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒã‚¤ãƒ³ã‚¿ã‚’渡ã•ãªã‘れã°ã„ã‘ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0637 @section W0637 @cindex W0637 @subsection メッセージ本文 関数呼ã³å‡ºã—ã«ã€å¤‰æ›æŒ‡å®šå­ã®æ•°ã‚ˆã‚Šã‚‚多ãã®å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int a, int b) { printf("Orange %d\n", a, b); /* W0637 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0635} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。 @item @ref{W0636} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã«å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã›ã‚“。 @item @ref{W0638} ã“ã®é–¢æ•°å‘¼ã³å‡ºã—ã«ã¯ã€å°‘ãªãã¨ã‚‚一ã¤ã®å®Ÿå¼•æ•°ãŒå¿…è¦ã§ã™ã€‚ @item @ref{W0639} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。 @item @ref{W0640} scanf 関数ã®å®Ÿå¼•æ•°ã«ã¯ãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒã‚¤ãƒ³ã‚¿ã‚’渡ã•ãªã‘れã°ã„ã‘ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0638 @section W0638 @cindex W0638 @subsection メッセージ本文 ã“ã®é–¢æ•°å‘¼ã³å‡ºã—ã«ã¯ã€å°‘ãªãã¨ã‚‚一ã¤ã®å®Ÿå¼•æ•°ãŒå¿…è¦ã§ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim printf(); /* W0638 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0635} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。 @item @ref{W0636} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã«å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã›ã‚“。 @item @ref{W0637} 関数呼ã³å‡ºã—ã«ã€å¤‰æ›æŒ‡å®šå­ã®æ•°ã‚ˆã‚Šã‚‚多ãã®å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã™ã€‚ @item @ref{W0639} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。 @item @ref{W0640} scanf 関数ã®å®Ÿå¼•æ•°ã«ã¯ãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒã‚¤ãƒ³ã‚¿ã‚’渡ã•ãªã‘れã°ã„ã‘ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0639 @section W0639 @cindex W0639 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。 @subsection 内容 未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int a; scanf("%f", &a); /* W0639 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0635} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。 @item @ref{W0636} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã«å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã›ã‚“。 @item @ref{W0637} 関数呼ã³å‡ºã—ã«ã€å¤‰æ›æŒ‡å®šå­ã®æ•°ã‚ˆã‚Šã‚‚多ãã®å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã™ã€‚ @item @ref{W0638} ã“ã®é–¢æ•°å‘¼ã³å‡ºã—ã«ã¯ã€å°‘ãªãã¨ã‚‚一ã¤ã®å®Ÿå¼•æ•°ãŒå¿…è¦ã§ã™ã€‚ @item @ref{W0640} scanf 関数ã®å®Ÿå¼•æ•°ã«ã¯ãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒã‚¤ãƒ³ã‚¿ã‚’渡ã•ãªã‘れã°ã„ã‘ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0640 @section W0640 @cindex W0640 @subsection メッセージ本文 scanf 関数ã®å®Ÿå¼•æ•°ã«ã¯ãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒã‚¤ãƒ³ã‚¿ã‚’渡ã•ãªã‘れã°ã„ã‘ã¾ã›ã‚“。 @subsection 内容 未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int a; fscanf(stdin, "%d", a); /* W0640 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0635} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。 @item @ref{W0636} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã«å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã›ã‚“。 @item @ref{W0637} 関数呼ã³å‡ºã—ã«ã€å¤‰æ›æŒ‡å®šå­ã®æ•°ã‚ˆã‚Šã‚‚多ãã®å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã™ã€‚ @item @ref{W0638} ã“ã®é–¢æ•°å‘¼ã³å‡ºã—ã«ã¯ã€å°‘ãªãã¨ã‚‚一ã¤ã®å®Ÿå¼•æ•°ãŒå¿…è¦ã§ã™ã€‚ @item @ref{W0639} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0641 @section W0641 @cindex W0641 @subsection メッセージ本文 æµ®å‹•å°æ•°ç‚¹æ•°åž‹ã‚’オブジェクトã¸ã®ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªã‚­ãƒ£ã‚¹ãƒˆã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int *foo(const float f) { return (int *) f; /* W0641 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W0642 @section W0642 @cindex W0642 @subsection メッセージ本文 register 指定ã§å®£è¨€ã•れãŸã‚ªãƒ–ジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å¾—ã‚‹ã“ã¨ã¯ä¸å¯èƒ½ã§ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { register int a[3]; int *p1 = a; /* W0642 */ int *p2 = &a[1]; /* W0642 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0643} ã“ã®ãƒžã‚¯ãƒ­ã§æ§‹æˆã•ã‚ŒãŸæ–‡å­—列リテラルã¯ã€`"' ã§å›²ã¾ã‚Œã¦ã„ãªã„䏿­£ãªå½¢å¼ã§ã™ã€‚マクロ内㮠`#' 演算å­ãŒ `\' ãŒæœ«å°¾ã«ã‚る実引数ã«é©ç”¨ã•れãŸçµæžœã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @item @ref{W0644} void å¼ã®å€¤ã‚’使用ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚void å¼ã¯å€¤ã‚’ã‚‚ã¡ã¾ã›ã‚“。 @item @ref{W0645} 仮引数ã®åž‹ã«ã¯ã€void 型を使ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。 @item @ref{W0646} é€šå¸¸ã®æ–‡å­—列リテラルã¨ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒéš£æŽ¥ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.8.0 @node W0643 @section W0643 @cindex W0643 @subsection メッセージ本文 ã“ã®ãƒžã‚¯ãƒ­ã§æ§‹æˆã•ã‚ŒãŸæ–‡å­—列リテラルã¯ã€`"' ã§å›²ã¾ã‚Œã¦ã„ãªã„䏿­£ãªå½¢å¼ã§ã™ã€‚マクロ内㮠`#' 演算å­ãŒ `\' ãŒæœ«å°¾ã«ã‚る実引数ã«é©ç”¨ã•れãŸçµæžœã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #define MACRO(x) #x const char *str = MACRO(foo\); /* W0643 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0642} register 指定ã§å®£è¨€ã•れãŸã‚ªãƒ–ジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å¾—ã‚‹ã“ã¨ã¯ä¸å¯èƒ½ã§ã™ã€‚ @item @ref{W0644} void å¼ã®å€¤ã‚’使用ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚void å¼ã¯å€¤ã‚’ã‚‚ã¡ã¾ã›ã‚“。 @item @ref{W0645} 仮引数ã®åž‹ã«ã¯ã€void 型を使ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。 @item @ref{W0646} é€šå¸¸ã®æ–‡å­—列リテラルã¨ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒéš£æŽ¥ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.16.0 @node W0644 @section W0644 @cindex W0644 @subsection メッセージ本文 void å¼ã®å€¤ã‚’使用ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚void å¼ã¯å€¤ã‚’ã‚‚ã¡ã¾ã›ã‚“。 @subsection 内容 未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(void); int bar(void) { return (int) foo(); /* W0644 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0642} register 指定ã§å®£è¨€ã•れãŸã‚ªãƒ–ジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å¾—ã‚‹ã“ã¨ã¯ä¸å¯èƒ½ã§ã™ã€‚ @item @ref{W0643} ã“ã®ãƒžã‚¯ãƒ­ã§æ§‹æˆã•ã‚ŒãŸæ–‡å­—列リテラルã¯ã€`"' ã§å›²ã¾ã‚Œã¦ã„ãªã„䏿­£ãªå½¢å¼ã§ã™ã€‚マクロ内㮠`#' 演算å­ãŒ `\' ãŒæœ«å°¾ã«ã‚る実引数ã«é©ç”¨ã•れãŸçµæžœã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @item @ref{W0645} 仮引数ã®åž‹ã«ã¯ã€void 型を使ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。 @item @ref{W0646} é€šå¸¸ã®æ–‡å­—列リテラルã¨ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒéš£æŽ¥ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W0645 @section W0645 @cindex W0645 @subsection メッセージ本文 仮引数ã®åž‹ã«ã¯ã€void 型を使ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。 @subsection 内容 未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void func(a) /* W0645 */ void a; { } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0642} register 指定ã§å®£è¨€ã•れãŸã‚ªãƒ–ジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å¾—ã‚‹ã“ã¨ã¯ä¸å¯èƒ½ã§ã™ã€‚ @item @ref{W0643} ã“ã®ãƒžã‚¯ãƒ­ã§æ§‹æˆã•ã‚ŒãŸæ–‡å­—列リテラルã¯ã€`"' ã§å›²ã¾ã‚Œã¦ã„ãªã„䏿­£ãªå½¢å¼ã§ã™ã€‚マクロ内㮠`#' 演算å­ãŒ `\' ãŒæœ«å°¾ã«ã‚る実引数ã«é©ç”¨ã•れãŸçµæžœã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @item @ref{W0644} void å¼ã®å€¤ã‚’使用ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚void å¼ã¯å€¤ã‚’ã‚‚ã¡ã¾ã›ã‚“。 @item @ref{W0646} é€šå¸¸ã®æ–‡å­—列リテラルã¨ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒéš£æŽ¥ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.14.0 @node W0646 @section W0646 @cindex W0646 @subsection メッセージ本文 é€šå¸¸ã®æ–‡å­—列リテラルã¨ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒéš£æŽ¥ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim static const char *str = "foo" L"bar"; /* W0646 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0642} register 指定ã§å®£è¨€ã•れãŸã‚ªãƒ–ジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å¾—ã‚‹ã“ã¨ã¯ä¸å¯èƒ½ã§ã™ã€‚ @item @ref{W0643} ã“ã®ãƒžã‚¯ãƒ­ã§æ§‹æˆã•ã‚ŒãŸæ–‡å­—列リテラルã¯ã€`"' ã§å›²ã¾ã‚Œã¦ã„ãªã„䏿­£ãªå½¢å¼ã§ã™ã€‚マクロ内㮠`#' 演算å­ãŒ `\' ãŒæœ«å°¾ã«ã‚る実引数ã«é©ç”¨ã•れãŸçµæžœã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @item @ref{W0644} void å¼ã®å€¤ã‚’使用ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚void å¼ã¯å€¤ã‚’ã‚‚ã¡ã¾ã›ã‚“。 @item @ref{W0645} 仮引数ã®åž‹ã«ã¯ã€void 型を使ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.16.0 @node W0649 @section W0649 @cindex W0649 @subsection メッセージ本文 シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®å€¤ãŒè² ã®å®šæ•°ã§ã™ã€‚çµæžœã¯æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªã‚·ãƒ•ãƒˆæ¼”ç®—ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int foo(int i) { return i << -1; /* W0649 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0650} シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®å€¤ãŒå·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®åž‹ `%s' ã§è¡¨ã•れるビット数ã«å¯¾ã—ã¦å¤§ãã™ãŽã¾ã™ã€‚çµæžœã¯æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W0650 @section W0650 @cindex W0650 @subsection メッセージ本文 シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®å€¤ãŒå·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®åž‹ `%s' ã§è¡¨ã•れるビット数ã«å¯¾ã—ã¦å¤§ãã™ãŽã¾ã™ã€‚çµæžœã¯æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªã‚·ãƒ•ãƒˆæ¼”ç®—ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int foo(unsigned int i) { return i << 32; /* W0650 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0649} シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®å€¤ãŒè² ã®å®šæ•°ã§ã™ã€‚çµæžœã¯æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W0653 @section W0653 @cindex W0653 @subsection メッセージ本文 é…åˆ—ã€æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®åˆæœŸå€¤ãŒ `@{@}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 @subsection 内容 é©åˆã—ãªã„åž‹ã®å¤‰æ•°ã‚’用ã„ã¦ã€æ§‹é€ ä½“ã‚„å…±ç”¨ä½“ã‚’åˆæœŸåŒ–ã™ã‚‹ã“ã¨ã¯ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€ 予期ã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim struct ST { int i; }; int a[3] = 0; /* W0653 */ struct ST s = 0; /* W0653 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0654} 構造体ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®åˆæœŸåŒ–å­ã¯ã€åŒã˜æ§‹é€ ä½“åž‹ã‚ã‚‹ã„ã¯å…±ç”¨ä½“åž‹ã®å€¤ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0654 @section W0654 @cindex W0654 @subsection メッセージ本文 構造体ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®åˆæœŸåŒ–å­ã¯ã€åŒã˜æ§‹é€ ä½“åž‹ã‚ã‚‹ã„ã¯å…±ç”¨ä½“åž‹ã®å€¤ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 @subsection 内容 é©åˆã—ãªã„åž‹ã®å¤‰æ•°ã‚’用ã„ã¦ã€æ§‹é€ ä½“ã‚„å…±ç”¨ä½“ã‚’åˆæœŸåŒ–ã™ã‚‹ã“ã¨ã¯ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€ 予期ã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim struct A { int i; }; struct B { int j; }; struct A a = { 0 }; struct B b = a; /* W0654 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0653} é…åˆ—ã€æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®åˆæœŸå€¤ãŒ `@{@}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0655 @section W0655 @cindex W0655 @subsection メッセージ本文 ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @subsection 内容 ビットフィールドå¼ã«å¯¾ã—㦠@code{sizeof} 演算å­ã‚’使用ã™ã‚‹ã“ã¨ã¯ç„¡æ„味ã§ã™ã€‚ @subsection サンプルコード @verbatim struct ST { unsigned int a:2; unsigned int b:4; }; void func(void) { struct ST s = { 0 }; int i = sizeof(s.a); /* W0655 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0656 @section W0656 @cindex W0656 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int count) { printf("There are %Ld apples\n", count); /* W0656 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0657 @section W0657 @cindex W0657 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int count) { printf("There are %Ld apples\n", count); /* W0657 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0658 @section W0658 @cindex W0658 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(unsigned int count) { printf("There are %Lo apples\n", count); /* W0658 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0659 @section W0659 @cindex W0659 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(unsigned int count) { printf("There are %Lu apples\n", count); /* W0659 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0660 @section W0660 @cindex W0660 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(unsigned int count) { printf("There are %Lx apples\n", count); /* W0660 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0661 @section W0661 @cindex W0661 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(unsigned int count) { printf("There are %LX apples\n", count); /* W0661 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0662 @section W0662 @cindex W0662 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(double count) { printf("There are %lf apples\n", count); /* W0662 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0663 @section W0663 @cindex W0663 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(double count) { printf("There are %le apples\n", count); /* W0663 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0664 @section W0664 @cindex W0664 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(double count) { printf("There are %lE apples\n", count); /* W0664 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0665 @section W0665 @cindex W0665 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(double count) { printf("There are %lg apples\n", count); /* W0665 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0666 @section W0666 @cindex W0666 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(double count) { printf("There are %lG apples\n", count); /* W0666 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0667 @section W0667 @cindex W0667 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(char count) { printf("There are %hc apples\n", count); /* W0667 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0668 @section W0668 @cindex W0668 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(double percent) { printf("There is %f%l% apple juice\n", percent); /* W0668 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0669 @section W0669 @cindex W0669 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(char *s) { printf("There are %hs apples\n", s); /* W0669 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0670 @section W0670 @cindex W0670 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { int n; printf("There are %Ln apples\n", &n); /* W0670 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0671 @section W0671 @cindex W0671 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(char *p) { printf("p points to %lp\n", p); /* W0671 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0672 @section W0672 @cindex W0672 @subsection メッセージ本文 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { int a; printf("%0", &a); /* W0672 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0673 @section W0673 @cindex W0673 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { int a; scanf("%y", &a); /* W0673 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0674 @section W0674 @cindex W0674 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { int a; scanf("%Ld", &a); /* W0674 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0675 @section W0675 @cindex W0675 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { int a; scanf("%Lo", &a); /* W0675 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0676 @section W0676 @cindex W0676 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { int a; scanf("%Lu", &a); /* W0676 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0677 @section W0677 @cindex W0677 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { int a; scanf("%Lx", &a); /* W0677 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0678 @section W0678 @cindex W0678 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { double a; scanf("%lle", &a); /* W0678 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0679 @section W0679 @cindex W0679 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { char a[256]; scanf("%lls", a); /* W0679 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0680 @section W0680 @cindex W0680 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { void *a; scanf("%lp", &a); /* W0680 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0681 @section W0681 @cindex W0681 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { int a; scanf("%d%l%", &a); /* W0681 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0682 @section W0682 @cindex W0682 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { char buf[256]; scanf("%L[0-9]", buf); /* W0682 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0683 @section W0683 @cindex W0683 @subsection メッセージ本文 %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { char a; scanf("%Lc", &a); /* W0683 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0684 @section W0684 @cindex W0684 @subsection メッセージ本文 %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(void) { long a; scanf("%l", &a); /* W0684 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0685 @section W0685 @cindex W0685 @subsection メッセージ本文 `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim char c; scanf("%[z-a]", &c); /* W0685 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0686} 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W0686 @section W0686 @cindex W0686 @subsection メッセージ本文 走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 未定義ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim char c; scanf("%[abcda]", &c); /* W0686 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0655} ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚ @item @ref{W0656} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0657} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0658} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0659} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0660} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0661} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0662} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0663} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0664} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0665} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0666} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0667} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0668} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0669} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0670} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0671} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0672} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0673} %s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @item @ref{W0674} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0675} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0676} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0677} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0678} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0679} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0680} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0681} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0682} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0683} %s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0684} %s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0685} `[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W0687 @section W0687 @cindex W0687 @subsection メッセージ本文 defined 演算å­ã‚’削除ã™ã‚‹ç›®çš„ã§ #undef を使ã£ã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #undef defined /* W0687 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0688} #line 指令ã®å¾Œã«ã€1 ã‹ã‚‰ 32767 ã®ç¯„囲ã®è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @item @ref{W0689} #line æŒ‡ä»¤ã®æ§‹æ–‡ãŒ `#line 汎整数定数 "文字列"' ã®å½¢å¼ã¨åˆã£ã¦ã„ã¾ã›ã‚“。 @item @ref{W0690} #line 指令ã®å¾Œã«è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @item @ref{W0691} `##' 演算å­ã®çµæžœãŒæœ‰åйãªå‰å‡¦ç†å­—å¥ã§ã¯ã‚りã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0688 @section W0688 @cindex W0688 @subsection メッセージ本文 #line 指令ã®å¾Œã«ã€1 ã‹ã‚‰ 32767 ã®ç¯„囲ã®è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #line 35000 "test.c" /* W0688 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0687} defined 演算å­ã‚’削除ã™ã‚‹ç›®çš„ã§ #undef を使ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0689} #line æŒ‡ä»¤ã®æ§‹æ–‡ãŒ `#line 汎整数定数 "文字列"' ã®å½¢å¼ã¨åˆã£ã¦ã„ã¾ã›ã‚“。 @item @ref{W0690} #line 指令ã®å¾Œã«è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @item @ref{W0691} `##' 演算å­ã®çµæžœãŒæœ‰åйãªå‰å‡¦ç†å­—å¥ã§ã¯ã‚りã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.2.0 @node W0689 @section W0689 @cindex W0689 @subsection メッセージ本文 #line æŒ‡ä»¤ã®æ§‹æ–‡ãŒ `#line 汎整数定数 "文字列"' ã®å½¢å¼ã¨åˆã£ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #line 35 * 100 /* W0689 */ #line 35 * 100 "test.c" /* W0689 */ #line 35 L"ã‚ã„ã†.c" /* W0689 */ #line __FILE__ 35 /* W0689 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0687} defined 演算å­ã‚’削除ã™ã‚‹ç›®çš„ã§ #undef を使ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0688} #line 指令ã®å¾Œã«ã€1 ã‹ã‚‰ 32767 ã®ç¯„囲ã®è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @item @ref{W0690} #line 指令ã®å¾Œã«è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @item @ref{W0691} `##' 演算å­ã®çµæžœãŒæœ‰åйãªå‰å‡¦ç†å­—å¥ã§ã¯ã‚りã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.2.0 @node W0690 @section W0690 @cindex W0690 @subsection メッセージ本文 #line 指令ã®å¾Œã«è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #line LINE1000 /* W0690 */ #line __FILE__ 35 /* W0690 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0687} defined 演算å­ã‚’削除ã™ã‚‹ç›®çš„ã§ #undef を使ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0688} #line 指令ã®å¾Œã«ã€1 ã‹ã‚‰ 32767 ã®ç¯„囲ã®è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @item @ref{W0689} #line æŒ‡ä»¤ã®æ§‹æ–‡ãŒ `#line 汎整数定数 "文字列"' ã®å½¢å¼ã¨åˆã£ã¦ã„ã¾ã›ã‚“。 @item @ref{W0691} `##' 演算å­ã®çµæžœãŒæœ‰åйãªå‰å‡¦ç†å­—å¥ã§ã¯ã‚りã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.2.0 @node W0691 @section W0691 @cindex W0691 @subsection メッセージ本文 `##' 演算å­ã®çµæžœãŒæœ‰åйãªå‰å‡¦ç†å­—å¥ã§ã¯ã‚りã¾ã›ã‚“。 @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #define MACRO(a, b) a ## b double d = (double) MACRO(-, 123); /* W0691 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0687} defined 演算å­ã‚’削除ã™ã‚‹ç›®çš„ã§ #undef を使ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0688} #line 指令ã®å¾Œã«ã€1 ã‹ã‚‰ 32767 ã®ç¯„囲ã®è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @item @ref{W0689} #line æŒ‡ä»¤ã®æ§‹æ–‡ãŒ `#line 汎整数定数 "文字列"' ã®å½¢å¼ã¨åˆã£ã¦ã„ã¾ã›ã‚“。 @item @ref{W0690} #line 指令ã®å¾Œã«è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.16.0 @node W0692 @section W0692 @cindex W0692 @subsection メッセージ本文 関数形å¼ãƒžã‚¯ãƒ­ `%s' ã«å®Ÿå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“。 @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ ISO C99 ã®ã¿ã§ä½¿ç”¨å¯èƒ½ãªã®ã§ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define MACRO(a) #a const char *s = (char *) MACRO(); /* W0692 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0693} 関数形å¼ãƒžã‚¯ãƒ­ãŒãã®å®šç¾©ã‚ˆã‚Šã‚‚å°‘ãªã„実引数ã§å‘¼ã³å‡ºã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.16.0 @node W0693 @section W0693 @cindex W0693 @subsection メッセージ本文 関数形å¼ãƒžã‚¯ãƒ­ãŒãã®å®šç¾©ã‚ˆã‚Šã‚‚å°‘ãªã„実引数ã§å‘¼ã³å‡ºã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 @b{ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚} ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€è¨€èªžåˆ¶ç´„é•åã«ãªã‚Šã¾ã™ã®ã§ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim /* 追記予定 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0692} 関数形å¼ãƒžã‚¯ãƒ­ `%s' ã«å®Ÿå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.0 以é™ã®äºˆå®š @node W0694 @section W0694 @cindex W0694 @subsection メッセージ本文 `assert' ã¨ã„ã†åç§°ã®é–¢æ•°ã‚’呼ã³å‡ºã™ç›®çš„ã§ã€assert ãƒžã‚¯ãƒ­ãŒæŠ‘åˆ¶ã•れã¦ã„ã¾ã™ã€‚未定義ã®çµæžœã«ãªã‚Šã¾ã™ã€‚ @subsection 内容 @code{assert} ã¨ã„ã†åå‰ã®é–¢æ•°ã‚’作æˆã™ã‚‹ã¨ã€æœªå®šç¾©ã®çµæžœã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim #undef assert extern void assert(int); void foo(void) { assert("should not be reached" == ""); /* W0694 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.16.0 @node W0695 @section W0695 @cindex W0695 @subsection メッセージ本文 assert マクロを #undef ã—ã¦ãã®åå‰ã®é–¢æ•°ã‚’呼ã³å‡ºã—ã§ãるよã†ã«ã™ã‚‹ã¨ã€æœªå®šç¾©ã®çµæžœã«ãªã‚Šã¾ã™ã€‚ @subsection 内容 @code{assert} マクロã®å®šç¾©è§£æ¶ˆã‚„å†å®šç¾©ã¯ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #undef assert /* W0695 */ extern void assert(int a); @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0696 @section W0696 @cindex W0696 @subsection メッセージ本文 ã“ã® `#if...' ã§ä½¿ã‚れã¦ã„るマクロ `%s' ã¯å®šç¾©ã•れã¦ã„ã¾ã›ã‚“。 @subsection 内容 é€šå¸¸ã€æœªå®šç¾©ãƒžã‚¯ãƒ­ã¯ 0 ã«ç½®ãæ›ãˆã‚‰ã‚Œã‚‹ãŸã‚ã€æœªå®šç¾©ã®å‹•作ã¨ã„ã†ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ—リプロセッサã«ä¾å­˜ã—ãŸå‡¦ç†ã¨ã„ãˆã¾ã™ã®ã§ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ ã¾ãŸã€ãƒžã‚¯ãƒ­ãŒæœªå®šç¾©ã§ã‚ã‚‹ã“ã¨ã¯ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã—ãªã„ã“ã¨ã®å¯èƒ½æ€§ã‚‚ã‚りã¾ã™ã€‚ãã®å ´åˆã¯ã€å‹•作上ã®ãƒã‚°ã«ã¤ãªãŒã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim #define MACRO (1) #if MACRO == 1 ...snip... #endif #undef MACRO #if MACRO == 2 /* W0696 */ ...snip... #endif @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0697 @section W0697 @cindex W0697 @subsection メッセージ本文 戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã«ã€æš—黙㮠`return;' æ–‡ã§çµ‚了ã™ã‚‹ãƒ‘スãŒå­˜åœ¨ã—ã¾ã™ã€‚ @subsection 内容 å¼ã‚’æŒãŸãªã„ @code{return} æ–‡ã¯ä¸å®šå€¤ã‚’è¿”ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int value) /* W0697 */ { if (value == 0) { return 0; } /* No return statement at the end of this function. */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0698} 戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã§ã€`return;' æ–‡ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ @item @ref{W0699} 関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€return æ–‡ã«å€¤ã‚’戻ã™ãŸã‚ã®å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @item @ref{W0700} 関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€å€¤ã‚’戻㙠return æ–‡ãŒã‚りã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.14.0 @node W0698 @section W0698 @cindex W0698 @subsection メッセージ本文 戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã§ã€`return;' æ–‡ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ @subsection 内容 å¼ã‚’æŒãŸãªã„ @code{return} æ–‡ã¯ä¸å®šå€¤ã‚’è¿”ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(void) { return; /* W0698 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0698} 戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã§ã€`return;' æ–‡ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ @item @ref{W0699} 関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€return æ–‡ã«å€¤ã‚’戻ã™ãŸã‚ã®å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @item @ref{W0700} 関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€å€¤ã‚’戻㙠return æ–‡ãŒã‚りã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0699 @section W0699 @cindex W0699 @subsection メッセージ本文 関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€return æ–‡ã«å€¤ã‚’戻ã™ãŸã‚ã®å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @subsection 内容 å¼ã‚’æŒãŸãªã„ @code{return} æ–‡ã¯ä¸å®šå€¤ã‚’è¿”ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim extern func(void) { return; /* W0699 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0697} 戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã«ã€æš—黙㮠`return;' æ–‡ã§çµ‚了ã™ã‚‹ãƒ‘スãŒå­˜åœ¨ã—ã¾ã™ã€‚ @item @ref{W0698} 戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã§ã€`return;' æ–‡ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ @item @ref{W0700} 関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€å€¤ã‚’戻㙠return æ–‡ãŒã‚りã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0700 @section W0700 @cindex W0700 @subsection メッセージ本文 関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€å€¤ã‚’戻㙠return æ–‡ãŒã‚りã¾ã›ã‚“。 @subsection 内容 å¼ã‚’æŒãŸãªã„ @code{return} æ–‡ã¯ä¸å®šå€¤ã‚’è¿”ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim extern func(void) /* W0700 */ { } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0697} 戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã«ã€æš—黙㮠`return;' æ–‡ã§çµ‚了ã™ã‚‹ãƒ‘スãŒå­˜åœ¨ã—ã¾ã™ã€‚ @item @ref{W0698} 戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã§ã€`return;' æ–‡ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ @item @ref{W0699} 関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€return æ–‡ã«å€¤ã‚’戻ã™ãŸã‚ã®å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.14.0 @node W0703 @section W0703 @cindex W0703 @subsection メッセージ本文 ã‚¿ã‚° `%s' ãŒã‚ˆã‚Šåºƒã„有効範囲をもã¤åŒã˜è­˜åˆ¥å­ã®å®£è¨€ã‚’éš ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 ローカル変数ãŒã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’隠蔽ã™ã‚‹ã“ã¨ã§ã€ãƒ­ãƒ¼ã‚«ãƒ«é ˜åŸŸã§ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’使用ã—ã¦ã„る箇所ãŒå½±éŸ¿ã‚’å—ã‘ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim union FOO { ...snip... }; void func(void) { struct FOO { /* W0703 */ ...snip... }; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0704} ã“ã® `%s' ã®å®£è¨€ã¯ã€ã‚ˆã‚Šåºƒã„有効範囲をもã¤åŒã˜è­˜åˆ¥å­ã®å®£è¨€ã‚’éš ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0704 @section W0704 @cindex W0704 @subsection メッセージ本文 ã“ã® `%s' ã®å®£è¨€ã¯ã€ã‚ˆã‚Šåºƒã„有効範囲をもã¤åŒã˜è­˜åˆ¥å­ã®å®£è¨€ã‚’éš ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 ローカル変数ãŒã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’隠蔽ã™ã‚‹ã“ã¨ã§ã€ãƒ­ãƒ¼ã‚«ãƒ«é ˜åŸŸã§ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’使用ã—ã¦ã„る箇所ãŒå½±éŸ¿ã‚’å—ã‘ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int a; void func(void) { double a; /* W0704 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0703} ã‚¿ã‚° `%s' ãŒã‚ˆã‚Šåºƒã„有効範囲をもã¤åŒã˜è­˜åˆ¥å­ã®å®£è¨€ã‚’éš ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0705 @section W0705 @cindex W0705 @subsection メッセージ本文 é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™ã“ã¨ãŒã‚りã¾ã™ã€‚ @subsection 内容 é…列ã®é ˜åŸŸå¤–ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å‹•ä½œã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(unsigned int a) { int buf[10]; if (a < 10) { buf[a] = 0; } ...snip... buf[a] = 5; /* W0705 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0707 @section W0707 @cindex W0707 @subsection メッセージ本文 é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™å®šæ•°ã§ã™ã€‚ @subsection 内容 é…列ã®é ˜åŸŸå¤–ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å‹•ä½œã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int a[5]; int foo(void) { int i = a[5]; /* W0707 */ return i; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W0708 @section W0708 @cindex W0708 @subsection メッセージ本文 for æ–‡ã®åˆ¶å¾¡å¤‰æ•° `%s' ã¯ç¹°ã‚Šè¿”ã—æ–‡æœ¬ä½“ã®ä¸­ã§å€¤ã‚’変ãˆã‚‰ã‚Œã¦ã„ã¾ã™ã€‚ @subsection 内容 ループ本体ã§ãƒ«ãƒ¼ãƒ—制御変数を変更ã™ã‚‹ã“ã¨ãŒã€ã™ãã•ã¾æ§‹é€ åŒ–定ç†ã«é•åã™ã‚‹ã“ã¨ã«ã¯ãªã‚Šã¾ã›ã‚“ãŒã€ ã©ã®ã‚ˆã†ã«å復ã™ã‚‹ã‹ã‚’判断ã—ã«ãããªã‚Šã€ä¿®æ­£ã‚„ãƒ†ã‚¹ãƒˆæ™‚ã«æ··ä¹±ã®ã‚‚ã¨ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim int i, j; for (i = j = 0; i < 10; j++) { i++; /* W0708 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0711 @section W0711 @cindex W0711 @subsection メッセージ本文 関係演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a, int b, int c, int d) { return (a + b) > (c > d); /* W0711 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0712} 関係演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0713} 関係演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.8.0 @node W0712 @section W0712 @cindex W0712 @subsection メッセージ本文 関係演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a, int b, int c, int d) { return (a > b) > (c + d); /* W0712 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0711} 関係演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0713} 関係演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.8.0 @node W0713 @section W0713 @cindex W0713 @subsection メッセージ本文 関係演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a, int b, int c, int d) { return (a > b) > (c > d); /* W0713 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0711} 関係演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0712} 関係演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.8.0 @node W0714 @section W0714 @cindex W0714 @subsection メッセージ本文 `&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a, int b, int c, int d) { return (a > b) & (c > d); /* W0714 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0715} `|' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0716} ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0717} ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0718} ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.8.0 @node W0715 @section W0715 @cindex W0715 @subsection メッセージ本文 `|' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a, int b, int c, int d) { return (a > b) | (c > d); /* W0715 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0714} `&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0716} ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0717} ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0718} ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.8.0 @node W0716 @section W0716 @cindex W0716 @subsection メッセージ本文 ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a, int b, int c, int d) { return (a > b) + (c > d); /* W0716 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0714} `&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0715} `|' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0717} ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0718} ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.10.0 @node W0717 @section W0717 @cindex W0717 @subsection メッセージ本文 ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a, int b, int c) { return (a > b) + c; /* W0717 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0714} `&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0715} `|' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0716} ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0717} ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.10.0 @node W0718 @section W0718 @cindex W0718 @subsection メッセージ本文 ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a, int b, int c) { return a + (b > c); /* W0718 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0714} `&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0715} `|' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0716} ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @item @ref{W0717} ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.10.0 @node W0719 @section W0719 @cindex W0719 @subsection メッセージ本文 シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒã€æ½œåœ¨åž‹ `%s' ã®ãƒ“ット幅以上ã®å®šæ•°å€¤ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªã‚·ãƒ•ãƒˆæ¼”ç®—ã¯æ±Žæ•´æ•°æ‹¡å¼µå¾Œã®åž‹ã®ç¯„囲を超ãˆã¦ã„ãªã„ãŸã‚〠未定義ã®å‹•作ã«ã¯ãªã‚Šã¾ã›ã‚“ãŒã€ 汎整数拡張ãŒç”Ÿã˜ãªã„åž‹ã®å¤‰æ•°ã¸ã®ä»£å…¥ã«å¤‰æ›´ã—ãŸæ™‚ç‚¹ã§æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã®ã§ã€ 潜在的ãªå±é™ºã‚’ä¼´ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim int foo(char c) { return c << 31; /* W0719 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W0720 @section W0720 @cindex W0720 @subsection メッセージ本文 æµ®å‹•å°æ•°ç‚¹åž‹ã®å€¤ãŒå¤‰æ›å…ˆã®åž‹ã®ç¯„囲ã«å…¥ã‚Šãりã¾ã›ã‚“。 @subsection 内容 ã“ã®ã‚ˆã†ãªå¼ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim signed char sc1 = (signed char) 127.5; /* OK */ signed char sc2 = (signed char) 128.5; /* W0720 */ signed char sc3 = (signed char) -128.5; /* OK */ signed char sc4 = (signed char) -129.5; /* W0720 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0721 @section W0721 @cindex W0721 @subsection メッセージ本文 ã“ã®æ±Žæ•´æ•°åž‹ã¯ã€ãƒã‚¤ãƒ³ã‚¿ã®å€¤ã‚’ä¿æŒã™ã‚‹ã®ã«å分ãªå¤§ãã•ã‚’ã‚‚ã¡ã¾ã›ã‚“。 @subsection 内容 上記ã®ã‚ˆã†ãªå¤‰æ›ã«ã‚ˆã‚Šã€ãƒã‚¤ãƒ³ã‚¿åž‹å¤‰æ•°ã®ä¸€éƒ¨ã®æƒ…å ±ãŒæ¬ è½ã—ãŸã‚‚ã®ãŒæ•´æ•°åž‹ã«ä»£å…¥ã•れるã“ã¨ã«ãªã‚Šã¾ã™ã€‚ ã—ãŸãŒã£ã¦ã€ä»£å…¥å…ˆã®å€¤ã¯ã‚‚ã¯ã‚„æ­£ã—ã„アドレスを指ã—ã¦ã„ãªã„ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(int *p) { /* when short is 16 bit long and pointer is 32 bit long */ unsigned short us = (unsigned short) p; /* W0721 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0722 @section W0722 @cindex W0722 @subsection メッセージ本文 符å·ä»˜ãã®å¼ã®å€¤ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 値ãŒåž‹ã§è¡¨ç¾å¯èƒ½ãªç¯„囲を超ãˆã¦ã—ã¾ã†(オーãƒãƒ¼ãƒ•ローã™ã‚‹)ã¨ã€ã©ã®ã‚ˆã†ãªå€¤ãŒä»£å…¥ã•れるã‹ã¯æœªå®šç¾©ã§ã™ã€‚ ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a) { /* when int is 32 bit long */ if (a < 0) { return a + 1; /* OK */ } else if (a < 2147483647) { return a + 1; /* OK */ } return a + 1; /* W0722 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0723} 符å·ä»˜ãã®å¼ã®å€¤ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0723 @section W0723 @cindex W0723 @subsection メッセージ本文 符å·ä»˜ãã®å¼ã®å€¤ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection 内容 値ãŒåž‹ã§è¡¨ç¾å¯èƒ½ãªç¯„囲を超ãˆã¦ã—ã¾ã†(オーãƒãƒ¼ãƒ•ローã™ã‚‹)ã¨ã€ã©ã®ã‚ˆã†ãªå€¤ãŒä»£å…¥ã•れるã‹ã¯æœªå®šç¾©ã§ã™ã€‚ ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int a) { /* when int is 32 bit long */ if (a < 0) { return a + 1; /* OK */ } else if (a < 2000000000) { return a + 1; /* OK */ } return a + 1; /* W0723 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0722} 符å·ä»˜ãã®å¼ã®å€¤ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0724 @section W0724 @cindex W0724 @subsection メッセージ本文 æ¡ä»¶ä»˜ãインクルード指令ã«ã‚ˆã£ã¦ã€èªè­˜ã§ããªã„å‰å‡¦ç†æŒ‡ä»¤ãŒç„¡è¦–ã•れã¾ã—ãŸã€‚ @subsection 内容 @b{ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚} èªè­˜ã§ããªã„å‰å‡¦ç†æŒ‡ä»¤ã‚’見ã¤ã‘ãŸã¨ãã®å¯¾å‡¦æ–¹æ³•ã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ã—ãŸãŒã£ã¦ã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @c{未実装} @verbatim /* 追記予定 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.0 以é™ã®äºˆå®š @node W0726 @section W0726 @cindex W0726 @subsection メッセージ本文 修飾å­ä»˜ã void åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•° `%s()' ã®ä¸­ã§ã€`return å¼;' ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ @subsection 内容 値を戻ã—ã¦ã¯ãªã‚‰ãªã„関数ã§ã‚ã‚‹ã«ã‚‚é–¢ã‚らãšã€æ˜Žç¤ºçš„㪠@code{return} æ–‡ãŒã‚りã¾ã™ã€‚ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã§ã™ã€‚ @subsection サンプルコード @verbatim const void func(int a) { if (a == 0) { return 0; /* W0726 */ } } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0727 @section W0727 @cindex W0727 @subsection メッセージ本文 列挙型ã«ãªã„値を使ã£ã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªåˆ—挙型ã®ä½¿ã„æ–¹ã¯æ–‡æ³•çš„ã«ã¯åˆæ³•ã§ã™ãŒã€æœ¬æ¥ã®åˆ—挙型変数ã¨ã—ã¦ä½¿ç”¨ã•れるã¹ã情報をæå¤±ã™ã‚‹ã¨ã„ã†æ„味ã§å•題ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Fruits { APPLE = 1, BANANA, ORANGE }; enum Fruits fruit = 5; /* W0727 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0728} 列挙型ã®é–¢æ•°ä»®å¼•æ•°ã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒå®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0729} 列挙型ã®ã‚ªãƒ–ジェクトã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0730} åˆ—æŒ™åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•°ã§ã€åˆ¥ã®åˆ—挙型ã®åˆ—æŒ™å®šæ•°ãŒæˆ»ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0731} switch 文㮠case ラベルã®å€¤ `%s' ã¯åˆ¶å¾¡å¼ã®åˆ—挙型ã«å±žã—ã¦ã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0728 @section W0728 @cindex W0728 @subsection メッセージ本文 列挙型ã®é–¢æ•°ä»®å¼•æ•°ã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒå®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªåˆ—挙型ã®ä½¿ã„æ–¹ã¯æ–‡æ³•çš„ã«ã¯åˆæ³•ã§ã™ãŒã€æœ¬æ¥ã®åˆ—挙型変数ã¨ã—ã¦ä½¿ç”¨ã•れるã¹ã情報をæå¤±ã™ã‚‹ã¨ã„ã†æ„味ã§å•題ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED, BLUE, GREEN }; enum Fruits { APPLE, BANANA, ORANGE }; extern void func1(enum Color); void func2(void) { func1(ORANGE); /* W0728 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0727} 列挙型ã«ãªã„値を使ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0729} 列挙型ã®ã‚ªãƒ–ジェクトã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0730} åˆ—æŒ™åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•°ã§ã€åˆ¥ã®åˆ—挙型ã®åˆ—æŒ™å®šæ•°ãŒæˆ»ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0731} switch 文㮠case ラベルã®å€¤ `%s' ã¯åˆ¶å¾¡å¼ã®åˆ—挙型ã«å±žã—ã¦ã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0729 @section W0729 @cindex W0729 @subsection メッセージ本文 列挙型ã®ã‚ªãƒ–ジェクトã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªåˆ—挙型ã®ä½¿ã„æ–¹ã¯æ–‡æ³•çš„ã«ã¯åˆæ³•ã§ã™ãŒã€æœ¬æ¥ã®åˆ—挙型変数ã¨ã—ã¦ä½¿ç”¨ã•れるã¹ã情報をæå¤±ã™ã‚‹ã¨ã„ã†æ„味ã§å•題ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED, BLUE, GREEN }; enum Fruits { APPLE, BANANA, ORANGE }; void func(void) { enum Color c; c = ORANGE; /* W0729 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0727} 列挙型ã«ãªã„値を使ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0728} 列挙型ã®é–¢æ•°ä»®å¼•æ•°ã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒå®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0730} åˆ—æŒ™åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•°ã§ã€åˆ¥ã®åˆ—挙型ã®åˆ—æŒ™å®šæ•°ãŒæˆ»ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0731} switch 文㮠case ラベルã®å€¤ `%s' ã¯åˆ¶å¾¡å¼ã®åˆ—挙型ã«å±žã—ã¦ã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0730 @section W0730 @cindex W0730 @subsection メッセージ本文 åˆ—æŒ™åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•°ã§ã€åˆ¥ã®åˆ—挙型ã®åˆ—æŒ™å®šæ•°ãŒæˆ»ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªåˆ—挙型ã®ä½¿ã„æ–¹ã¯æ–‡æ³•çš„ã«ã¯åˆæ³•ã§ã™ãŒã€æœ¬æ¥ã®åˆ—挙型変数ã¨ã—ã¦ä½¿ç”¨ã•れるã¹ã情報をæå¤±ã™ã‚‹ã¨ã„ã†æ„味ã§å•題ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED, BLUE, GREEN }; enum Fruits { APPLE, BANANA, ORANGE }; enum Color func(void) { return ORANGE; /* W0730 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0727} 列挙型ã«ãªã„値を使ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0728} 列挙型ã®é–¢æ•°ä»®å¼•æ•°ã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒå®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0729} 列挙型ã®ã‚ªãƒ–ジェクトã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0731} switch 文㮠case ラベルã®å€¤ `%s' ã¯åˆ¶å¾¡å¼ã®åˆ—挙型ã«å±žã—ã¦ã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0731 @section W0731 @cindex W0731 @subsection メッセージ本文 switch 文㮠case ラベルã®å€¤ `%s' ã¯åˆ¶å¾¡å¼ã®åˆ—挙型ã«å±žã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 ã“ã®ã‚ˆã†ãªåˆ—挙型ã®ä½¿ã„æ–¹ã¯æ–‡æ³•çš„ã«ã¯åˆæ³•ã§ã™ãŒã€æœ¬æ¥ã®åˆ—挙型変数ã¨ã—ã¦ä½¿ç”¨ã•れるã¹ã情報をæå¤±ã™ã‚‹ã¨ã„ã†æ„味ã§å•題ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED, BLUE, GREEN }; enum Fruits { APPLE, BANANA, ORANGE, GRAPE }; int func(enum Color c) { switch (c) { case RED: return 1; case GRAPE: /* W0731 */ return 2; } return 0; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0727} 列挙型ã«ãªã„値を使ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0728} 列挙型ã®é–¢æ•°ä»®å¼•æ•°ã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒå®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0729} 列挙型ã®ã‚ªãƒ–ジェクトã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0730} åˆ—æŒ™åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•°ã§ã€åˆ¥ã®åˆ—挙型ã®åˆ—æŒ™å®šæ•°ãŒæˆ»ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0732 @section W0732 @cindex W0732 @subsection メッセージ本文 `&&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void func(unsigned int a, unsigned int b,unsigned int c, unsigned int d) { int r; r = (a + b) && (c - d); /* W0732 */ r = (a * b) && (c / d); /* W0732 */ r = (a << b) && (c << d); /* W0732 */ r = (a >> b) && (c >> d); /* W0732 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0733} `||' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @item @ref{W0734} è«–ç†æ¼”ç®—å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @item @ref{W0735} è«–ç†æ¼”ç®—å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.12.0 @node W0733 @section W0733 @cindex W0733 @subsection メッセージ本文 `||' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void func(unsigned int a, unsigned int b,unsigned int c, unsigned int d) { int r; r = (a + b) || (c - d); /* W0733 */ r = (a * b) || (c / d); /* W0733 */ r = (a << b) || (c << d); /* W0733 */ r = (a >> b) || (c >> d); /* W0733 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0732} `&&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @item @ref{W0734} è«–ç†æ¼”ç®—å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @item @ref{W0735} è«–ç†æ¼”ç®—å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.12.0 @node W0734 @section W0734 @cindex W0734 @subsection メッセージ本文 è«–ç†æ¼”ç®—å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void func(unsigned int a, unsigned int b, unsigned int c) { int r; r = (a + b) && c; /* W0734 */ r = (a - b) && c; /* W0734 */ r = (a << b) || c; /* W0734 */ r = (a >> b) || c; /* W0734 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0732} `&&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @item @ref{W0733} `||' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @item @ref{W0735} è«–ç†æ¼”ç®—å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.12.0 @node W0735 @section W0735 @cindex W0735 @subsection メッセージ本文 è«–ç†æ¼”ç®—å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯èª¤ã‚Šã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void func(unsigned int a, unsigned int b, unsigned int c) { int r; r = a && (b + c); /* W0735 */ r = a && (b - c); /* W0735 */ r = a || (b >> c); /* W0735 */ r = a || (b << c); /* W0735 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0732} `&&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @item @ref{W0733} `||' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @item @ref{W0734} è«–ç†æ¼”ç®—å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.12.0 @node W0736 @section W0736 @cindex W0736 @subsection メッセージ本文 ファイルスコープã§å®£è¨€ã•れãŸé™çš„変数 `%s' 㯠1 ã¤ã®é–¢æ•°å†…ã§ã—ã‹èª­ã¿æ›¸ãã•れã¦ã„ã¾ã›ã‚“。 @subsection 内容 グローãƒãƒ«å¤‰æ•°ãŒã€1 ã¤ã®é–¢æ•°å†…ã§ã—ã‹ä½¿ç”¨ã•れã¦ã„ã¾ã›ã‚“。ã“ã®ã‚ˆã†ãªå¤‰æ•°ã¯ã€ä¿å®ˆæ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim static int a = 10; /* W0736 */ int func1(void) { return 0; } int func2(void) { return ++a; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0737 @section W0737 @cindex W0737 @subsection メッセージ本文 `enum %s' ã®å†…容ãŒä¸æ˜Žã§ã™ã€‚列挙体タグãŒå†…容を指定ã›ãšã«å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 定義ã—ã¦ã„ãªã„列挙体ã®ã‚¿ã‚°ã‚’使用ã™ã‚‹ã“ã¨ã¯è¨€èªžåˆ¶ç´„é•åã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim extern enum Foo foo; /* W0737 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0738 @section W0738 @cindex W0738 @subsection メッセージ本文 æ­£ã®æ•´æ•°å®šæ•°ã®å€¤ãŒã‚ˆã‚Šå°ã•ãªç¬¦å·ç„¡ã—åž‹ã¸ã®æš—é»™ã®åž‹å¤‰æ›ã‚’行ã£ãŸãŸã‚ã€åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™ã€‚ @subsection 内容 値ãŒåž‹ã§è¡¨ç¾å¯èƒ½ãªç¯„囲を超ãˆã¦ã—ã¾ã†(オーãƒãƒ¼ãƒ•ローã™ã‚‹)ã“ã¨ã§ã€ä»£å…¥å…ˆã«ã¯å…ƒã€…ã®å®šæ•°ã®å€¤ãŒãã®ã¾ã¾å…¥ã‚‰ãªããªã‚Šã¾ã™ã€‚ ã¤ã¾ã‚Šã€ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã—ãªã„値ãŒä»£å…¥ã•れるã“ã¨ã«ãªã‚Šã€ä¸å…·åˆã«ã¤ãªãŒã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim /* when char is 8 bit long */ const unsigned char uc1 = 255; /* OK */ const unsigned char uc2 = 256; /* W0738 */ /* when int is 32 bit long */ const unsigned int ui1 = 4294967295; /* OK */ const unsigned int ui2 = 4294967296; /* W0738 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0739 @section W0739 @cindex W0739 @subsection メッセージ本文 定数å¼ã«ãŠã‘る符å·ç„¡ã—減算ã®çµæžœãŒè² ã«ãªã‚Šã¾ã—ãŸã€‚ @subsection 内容 値ãŒåž‹ã§è¡¨ç¾å¯èƒ½ãªç¯„囲を超ãˆã¦ã—ã¾ã†ã“ã¨ã§ã€ä»£å…¥å…ˆã«ã¯å…ƒã€…ã®å®šæ•°ã®å€¤ãŒãã®ã¾ã¾å…¥ã‚‰ãªããªã‚Šã¾ã™ã€‚ ã¤ã¾ã‚Šã€ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã—ãªã„値ãŒä»£å…¥ã•れるã“ã¨ã«ãªã‚Šã€ä¸å…·åˆã«ã¤ãªãŒã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim const unsigned int ui1 = 3U - 3U; /* OK */ const unsigned int ui2 = 3U - 5U; /* W0739 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0740} 定数å¼ã«ãŠã‘る符å·ç„¡ã—加算ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚ @item @ref{W0741} 定数å¼ã«ãŠã‘る符å·ç„¡ã—ä¹—ç®—ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0740 @section W0740 @cindex W0740 @subsection メッセージ本文 定数å¼ã«ãŠã‘る符å·ç„¡ã—加算ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚ @subsection 内容 値ãŒåž‹ã§è¡¨ç¾å¯èƒ½ãªç¯„囲を超ãˆã¦ã—ã¾ã†ã“ã¨ã§ã€ä»£å…¥å…ˆã«ã¯å…ƒã€…ã®å®šæ•°ã®å€¤ãŒãã®ã¾ã¾å…¥ã‚‰ãªããªã‚Šã¾ã™ã€‚ ã¤ã¾ã‚Šã€ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã—ãªã„値ãŒä»£å…¥ã•れるã“ã¨ã«ãªã‚Šã€ä¸å…·åˆã«ã¤ãªãŒã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim /* when int is 32 bit long */ const unsigned int ui1 = 4294967294U + 1U; /* OK */ const unsigned int ui2 = 4294967295U + 1U; /* W0740 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0739} 定数å¼ã«ãŠã‘る符å·ç„¡ã—減算ã®çµæžœãŒè² ã«ãªã‚Šã¾ã—ãŸã€‚ @item @ref{W0741} 定数å¼ã«ãŠã‘る符å·ç„¡ã—ä¹—ç®—ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0741 @section W0741 @cindex W0741 @subsection メッセージ本文 定数å¼ã«ãŠã‘る符å·ç„¡ã—ä¹—ç®—ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚ @subsection 内容 値ãŒåž‹ã§è¡¨ç¾å¯èƒ½ãªç¯„囲を超ãˆã¦ã—ã¾ã†ã“ã¨ã§ã€ä»£å…¥å…ˆã«ã¯å…ƒã€…ã®å®šæ•°ã®å€¤ãŒãã®ã¾ã¾å…¥ã‚‰ãªããªã‚Šã¾ã™ã€‚ ã¤ã¾ã‚Šã€ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã—ãªã„値ãŒä»£å…¥ã•れるã“ã¨ã«ãªã‚Šã€ä¸å…·åˆã«ã¤ãªãŒã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim /* when int is 32 bit long */ const unsigned int ui1 = 2000000000U * 2U; /* OK */ const unsigned int ui2 = 3000000000U * 2U; /* W0741 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0739} 定数å¼ã«ãŠã‘る符å·ç„¡ã—減算ã®çµæžœãŒè² ã«ãªã‚Šã¾ã—ãŸã€‚ @item @ref{W0740} 定数å¼ã«ãŠã‘る符å·ç„¡ã—加算ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0742 @section W0742 @cindex W0742 @subsection メッセージ本文 è² ã®æ•´æ•°å®šæ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®å¤‰æ›ã¯æ–‡æ³•çš„ã«å•題ã‚りã¾ã›ã‚“ãŒã€ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã©ãŠã‚Šã§ãªã„å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚ @subsection サンプルコード @verbatim #define MACRO (50) unsigned int ui; ui = MACRO - 100; /* W0742 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0743 @section W0743 @cindex W0743 @subsection メッセージ本文 整数定数å¼ã®å€¤ã¯ã€å¤‰æ›å…ˆã®ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãる範囲を超ãˆã¦ã„ã¾ã™ã€‚ @subsection 内容 値ãŒåž‹ã§è¡¨ç¾å¯èƒ½ãªç¯„囲を超ãˆã¦ã—ã¾ã†ã“ã¨ã§ã€ä»£å…¥å…ˆã«ã¯å…ƒã€…ã®å®šæ•°ã®å€¤ãŒãã®ã¾ã¾å…¥ã‚‰ãªããªã‚Šã¾ã™ã€‚ ã¤ã¾ã‚Šã€ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図ã—ãªã„値ãŒä»£å…¥ã•れるã“ã¨ã«ãªã‚Šã€ä¸å…·åˆã«ã¤ãªãŒã‚Šã¾ã™ã€‚ ã¾ãŸã€ã“ã®ã‚ˆã†ãªå‡¦ç†ã¯ã€å‹•作ãŒå‡¦ç†ç³»å®šç¾©ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim /* when char is 8 bit long */ const signed char sc1 = 127; /* OK */ const signed char sc2 = 128; /* W0743 */ /* when int is 32 bit long */ const int si1 = 2147483647; /* OK */ const int si2 = 2147483648; /* W0743 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0744 @section W0744 @cindex W0744 @subsection メッセージ本文 ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å½ã«ãªã‚‹å®šæ•°ã®ãŸã‚ã€åˆ¶å¾¡æ–‡æœ¬ä½“ã¯å®Ÿè¡Œã•れã¾ã›ã‚“。 @subsection 内容 到é”ã—ãªã„コードãŒã‚ã‚‹ãŸã‚ã€ä¿¡é ¼æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define MACRO1 (0) #define MACRO2 (1) if (MACRO1 == MACRO2) { /* W0744 */ ...snip... } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0745 @section W0745 @cindex W0745 @subsection メッセージ本文 é…åˆ—ã®æ·»å­—ãŒã€é ˜åŸŸå¤–を指ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 é…列ã®é ˜åŸŸå¤–ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å‹•ä½œã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(unsigned int a) { int buf[10]; if (a > 5 && a < 10) { buf[a + 5] = 0; /* W0745 */ } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0747 @section W0747 @cindex W0747 @subsection メッセージ本文 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(signed char a); void bar(short a) { signed char b = a; /* W0747 */ foo(a); /* W0747 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0748 @section W0748 @cindex W0748 @subsection メッセージ本文 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned char a); void bar(unsigned short a) { unsigned char b = a; /* W0748 */ foo(a); /* W0748 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0749 @section W0749 @cindex W0749 @subsection メッセージ本文 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(signed char a); void bar(int a) { signed char b = a; /* W0749 */ foo(a); /* W0749 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0750 @section W0750 @cindex W0750 @subsection メッセージ本文 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(short a); void bar(int a) { short b = a; /* W0750 */ foo(a); /* W0750 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0751 @section W0751 @cindex W0751 @subsection メッセージ本文 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned char a); void bar(unsigned int a) { unsigned char b = a; /* W0751 */ foo(a); /* W0751 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0752 @section W0752 @cindex W0752 @subsection メッセージ本文 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned short a); void bar(unsigned int a) { unsigned short b = a; /* W0752 */ foo(a); /* W0752 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0753 @section W0753 @cindex W0753 @subsection メッセージ本文 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(signed char a); void bar(long a) { signed char b = a; /* W0753 */ foo(a); /* W0753 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0754 @section W0754 @cindex W0754 @subsection メッセージ本文 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(short a); void bar(long a) { short b = a; /* W0754 */ foo(a); /* W0754 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0755 @section W0755 @cindex W0755 @subsection メッセージ本文 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(int a); void bar(long a) { int b = a; /* W0755 */ foo(a); /* W0755 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0756 @section W0756 @cindex W0756 @subsection メッセージ本文 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned char a); void bar(unsigned long a) { unsigned char b = a; /* W0756 */ foo(a); /* W0756 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0757 @section W0757 @cindex W0757 @subsection メッセージ本文 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned short a); void bar(unsigned long a) { unsigned short b = a; /* W0757 */ foo(a); /* W0757 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0758 @section W0758 @cindex W0758 @subsection メッセージ本文 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned int a); void bar(unsigned long a) { unsigned int b = a; /* W0758 */ foo(a); /* W0758 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0759 @section W0759 @cindex W0759 @subsection メッセージ本文 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(signed char a); void bar(long long a) { signed char b = a; /* W0759 */ foo(a); /* W0759 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0760 @section W0760 @cindex W0760 @subsection メッセージ本文 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(short a); void bar(long long a) { short b = a; /* W0760 */ foo(a); /* W0760 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0761 @section W0761 @cindex W0761 @subsection メッセージ本文 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(int a); void bar(long long a) { int b = a; /* W0761 */ foo(a); /* W0761 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0762 @section W0762 @cindex W0762 @subsection メッセージ本文 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(long a); void bar(long long a) { long b = a; /* W0762 */ foo(a); /* W0762 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0763 @section W0763 @cindex W0763 @subsection メッセージ本文 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned char a); void bar(unsigned long long a) { unsigned char b = a; /* W0763 */ foo(a); /* W0763 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0764 @section W0764 @cindex W0764 @subsection メッセージ本文 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned short a); void bar(unsigned long long a) { unsigned short b = a; /* W0764 */ foo(a); /* W0764 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0765 @section W0765 @cindex W0765 @subsection メッセージ本文 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned int a); void bar(unsigned long long a) { unsigned int b = a; /* W0765 */ foo(a); /* W0765 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0766} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0766 @section W0766 @cindex W0766 @subsection メッセージ本文 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„データ型ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€æƒ…報をæå¤±ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(unsigned long a); void bar(unsigned long long a) { unsigned long b = a; /* W0766 */ foo(a); /* W0766 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0747} 暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0748} 暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0749} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0750} 暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0751} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0752} 暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0753} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0754} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0755} 暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0756} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0757} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0758} 暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0759} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0760} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0761} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0762} 暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0763} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0764} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0765} 暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0767 @section W0767 @cindex W0767 @subsection メッセージ本文 暗黙的㫠double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(float a); void bar(double a) { float b = a; /* W0767 */ foo(a); /* W0767 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0768} 暗黙的㫠long double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0769} 暗黙的㫠long double åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0768 @section W0768 @cindex W0768 @subsection メッセージ本文 暗黙的㫠long double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(float a); void bar(long double a) { float b = a; /* W0768 */ foo(a); /* W0768 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0767} 暗黙的㫠double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0769} 暗黙的㫠long double åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0769 @section W0769 @cindex W0769 @subsection メッセージ本文 暗黙的㫠long double åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(double a); void bar(long double a) { double b = a; /* W0769 */ foo(a); /* W0769 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0767} 暗黙的㫠double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0768} 暗黙的㫠long double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0770 @section W0770 @cindex W0770 @subsection メッセージ本文 外部çµåˆã‚’ã‚‚ã¤è­˜åˆ¥å­ `%s' ã®å®£è¨€ãŒã€äºŒã¤ä»¥ä¸Šå­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 リンケージをもã¤ã‚ªãƒ–ジェクトãŠã‚ˆã³é–¢æ•°ã‚’複数ã®ãƒ•ァイルã§å®£è¨€ã™ã‚‹éš›ã¯ã€ãã®å®£è¨€ã«äº’æ›æ€§ãŒã‚ã‚‹ã“ã¨ã‚’ä¿è¨¼ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ ã“れã¯ã€ä¿å®ˆæ€§ã‚’大ãã低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @file{test1.h} @verbatim extern int func(void); /* W0770 */ @end verbatim @file{test2.h} @verbatim extern int func(void); /* W0770 */ @end verbatim @file{test.c} @verbatim #include "test1.h" #include "test2.h" int func(void) { return 0; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0771} グローãƒãƒ«ãªè­˜åˆ¥å­ `%s' ãŒã€äºŒã¤ä»¥ä¸Šã®ãƒ•ァイルã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0771 @section W0771 @cindex W0771 @subsection メッセージ本文 グローãƒãƒ«ãªè­˜åˆ¥å­ `%s' ãŒã€äºŒã¤ä»¥ä¸Šã®ãƒ•ァイルã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 リンケージをもã¤ã‚ªãƒ–ジェクトãŠã‚ˆã³é–¢æ•°ã‚’複数ã®ãƒ•ァイルã§å®£è¨€ã™ã‚‹éš›ã¯ã€ãã®å®£è¨€ã«äº’æ›æ€§ãŒã‚ã‚‹ã“ã¨ã‚’ä¿è¨¼ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ ã“れã¯ã€ä¿å®ˆæ€§ã‚’大ãã低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @file{test1.h} @verbatim extern int func(void); /* W0771 */ extern int a; /* W0771 */ @end verbatim @file{test2.h} @verbatim extern int func(void); /* W0771 */ extern int a; /* W0771 */ @end verbatim @file{test.c} @verbatim #include "test1.h" #include "test2.h" @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0770} 外部çµåˆã‚’ã‚‚ã¤è­˜åˆ¥å­ `%s' ã®å®£è¨€ãŒã€äºŒã¤ä»¥ä¸Šå­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0774 @section W0774 @cindex W0774 @subsection メッセージ本文 double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern double foo(void); float bar(void) { return foo(); /* W0774 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0775} long double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0776} long double åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0775 @section W0775 @cindex W0775 @subsection メッセージ本文 long double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern long double foo(void); float bar(void) { return foo(); /* W0775 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0774} double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0776} long double åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0776 @section W0776 @cindex W0776 @subsection メッセージ本文 long double åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern long double foo(void); double bar(void) { return foo(); /* W0776 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0774} double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0775} long double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0777 @section W0777 @cindex W0777 @subsection メッセージ本文 暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ より大ãã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã§ã¯ã€å¤§ããªå•題ã¯èµ·ãã¾ã›ã‚“ãŒã€æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯è§£æžæ€§ã«ã‚‚デメリットãŒã‚ã‚‹ãŸã‚推奨ã—ã¾ã›ã‚“。 @subsection サンプルコード @verbatim void func(float a, float b) { double c = a + b; /* W0777 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0778} 暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0779} 暗黙的㫠double åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0778 @section W0778 @cindex W0778 @subsection メッセージ本文 暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ より大ãã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã§ã¯ã€å¤§ããªå•題ã¯èµ·ãã¾ã›ã‚“ãŒã€æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯è§£æžæ€§ã«ã‚‚デメリットãŒã‚ã‚‹ãŸã‚推奨ã—ã¾ã›ã‚“。 @subsection サンプルコード @verbatim void func(float a, float b) { long double c = a + b; /* W0778 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0777} 暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0779} 暗黙的㫠double åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0779 @section W0779 @cindex W0779 @subsection メッセージ本文 暗黙的㫠double åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 よりå°ã•ã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã«ã‚ˆã‚Šã€ç²¾åº¦è½ã¡ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ より大ãã„æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã§ã¯ã€å¤§ããªå•題ã¯èµ·ãã¾ã›ã‚“ãŒã€æš—é»™ã®ã‚­ãƒ£ã‚¹ãƒˆã¯è§£æžæ€§ã«ã‚‚デメリットãŒã‚ã‚‹ãŸã‚推奨ã—ã¾ã›ã‚“。 @subsection サンプルコード @verbatim void func(double a, double b) { long double c = a + b; /* W0779 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0777} 暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0778} 暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0780 @section W0780 @cindex W0780 @subsection メッセージ本文 定数å¼ã«ãŠã‘る符å·ç„¡ã—左シフト演算 `<<' ã¯ã€éžã‚¼ãƒ­ã®ä¸Šä½ãƒ“ットを切り詰ã‚ã¾ã™ã€‚ @subsection 内容 シフト演算ã®çµæžœã¨ã—ã¦ä¸Šä½ãƒ“ãƒƒãƒˆã®æƒ…å ±ãŒæ¬ è½ã—ã¦ã—ã¾ã„ã¾ã™ã€‚ ã“ã‚ŒãŒæ„図通りã§ã‚れã°å•題ã‚りã¾ã›ã‚“ãŒã€æ„図通りã§ãªã„å ´åˆã¯ã€ä¸å…·åˆã®åŽŸå› ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int foo(void) { return 0x08000000U << 5; /* W0780 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W0781 @section W0781 @cindex W0781 @subsection メッセージ本文 ã“ã® switch æ–‡ã«ã¯ãƒ‘ス㌠1 ã¤ã—ã‹ã‚りã¾ã›ã‚“。ã“ã® switch æ–‡ã¯å†—é•·ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãª @code{switch} æ–‡ãŒãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図通りã ã¨ã—ãŸã‚‰ã€ 冗長ãªè¨˜è¿°ã¨ã„ã†æ„味ã§å•題ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€æ„図通りã§ãªã„ã¨ã—ãŸã‚‰ @code{case} ç¯€ã®æ›¸ã忘れãŒè€ƒãˆã‚‰ã‚Œã¾ã™ã®ã§ã€ 動作上ã®ãƒã‚°ãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚³ãƒ¼ãƒ‰ã®é–²è¦§è€…ã‹ã‚‰è¦‹ã¦ãƒ—ãƒ­ã‚°ãƒ©ãƒžã®æ„図通りã‹ã©ã†ã‹ã‚’判断ã§ããªã„ã¨ã„ã†å•題もã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int foo(const int i) { if (i > 5) { switch (i) { /* W0781 */ case 0: return 1; case 5: return 2; default: return 3; } } switch (i) { /* OK */ case 0: return 4; default: switch (i) { /* W0781 */ case 10: return 5; default: return 6; } } } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W0783 @section W0783 @cindex W0783 @subsection メッセージ本文 ä¸å®Œå…¨åž‹ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’å«ã‚€ã‚­ãƒ£ã‚¹ãƒˆãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯ç§»æ¤æ€§ãŒã‚りã¾ã›ã‚“。 @subsection 内容 完全型ã‹ã‚‰ä¸å®Œå…¨åž‹ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã¯ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern struct Foo *gp; void foo(int *p) { gp = (struct Foo *) p; /* W0783 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W0784 @section W0784 @cindex W0784 @subsection メッセージ本文 éžæ¨™æº–ã®æ‹¡å¼µè¡¨è¨˜ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 @b{ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚} æœªå®šç¾©ã®æ‹¡å¼µè¡¨è¨˜ã‚’使用ã—ãŸå ´åˆã®å‹•ä½œã¯æœªå®šç¾©ã§ã™ã€‚ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @c{未実装} @verbatim /* 追記予定 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.0 以é™ã®äºˆå®š @node W0785 @section W0785 @cindex W0785 @subsection メッセージ本文 ã“ã®ã‚¿ã‚° `%s' ã®å®£è¨€ã¯ã€ä»¥å‰ã®å®£è¨€ã¨ç•°ãªã‚Šã¾ã™ã€‚ @subsection 内容 構造体ã€å…±ç”¨ä½“ã€åˆ—挙体ã¯è¡çªã—ãªã„よã†ã«ç•°ãªã‚‹è­˜åˆ¥å­ã§ã‚¿ã‚°å®£è¨€ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ åŒã˜è­˜åˆ¥å­ã§ã‚¿ã‚°å®£è¨€ã•れã¦ã„る構造体や共用体ã®å‹•作㯠ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim struct AAA { int a; }; union AAA { /* W0785 */ long a; int b; }; @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0786 @section W0786 @cindex W0786 @subsection メッセージ本文 intã€signed intã€ã‚ã‚‹ã„㯠unsigned int 以外ã®åž‹ã‚’ã‚‚ã¤ãƒ“ットフィールドã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。 @subsection 内容 コンパイラã®ä¸­ã«ã¯ @code{int} 型以外ã®ãƒ“ットフィールドã®ä½¿ç”¨ã‚’許ã™ã‚‚ã®ãŒã‚りã¾ã™ã€‚ ã—ã‹ã—ã€@code{int} 型以外ã®ãƒ“ットフィールドã®å‹•作㯠ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim struct ST { /* W0786 */ unsigned int a:3; unsigned long b:1; }; @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0787 @section W0787 @cindex W0787 @subsection メッセージ本文 `%s' ã®åž‹ãŒã€ä»¥å‰ã®ç•°ãªã‚‹ã‚¹ã‚³ãƒ¼ãƒ—ã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ @subsection 内容 宣言ãŒç•°ãªã‚‹ã‚¹ã‚³ãƒ¼ãƒ—ã«ã‚ã‚‹å ´åˆã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã«ãªã‚Šã¾ã™ã€‚ ã¾ãŸã€å®£è¨€ãŒåŒã˜ã‚¹ã‚³ãƒ¼ãƒ—ã«ã‚ã‚‹å ´åˆã¯æ¨™æº–制約é•åã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ ãŸã ã—ã€ä¸€æ–¹ãŒã‚‚ã†ä¸€æ–¹ã®å†…å´ã®ã‚¹ã‚³ãƒ¼ãƒ—ã§å®£è¨€ã•れる場åˆã¯å•題ã‚りã¾ã›ã‚“。 @subsection サンプルコード @verbatim void func1(void) { extern int num; extern void func3(void); } void func2(void) { extern double num; /* W0787 */ extern void func3(int); /* W0787 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0788} `%s' ã®åž‹ãŒã€ä»¥å‰ã®åŒã˜ã‚¹ã‚³ãƒ¼ãƒ—内ã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ @item @ref{W0789} `%s' ã®åž‹ãŒã€ä»¥å‰ã®ã‚ˆã‚Šåºƒã„スコープã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W0788 @section W0788 @cindex W0788 @subsection メッセージ本文 `%s' ã®åž‹ãŒã€ä»¥å‰ã®åŒã˜ã‚¹ã‚³ãƒ¼ãƒ—内ã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ @subsection 内容 宣言ãŒç•°ãªã‚‹ã‚¹ã‚³ãƒ¼ãƒ—ã«ã‚ã‚‹å ´åˆã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã«ãªã‚Šã¾ã™ã€‚ ã¾ãŸã€å®£è¨€ãŒåŒã˜ã‚¹ã‚³ãƒ¼ãƒ—ã«ã‚ã‚‹å ´åˆã¯æ¨™æº–制約é•åã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ ãŸã ã—ã€ä¸€æ–¹ãŒã‚‚ã†ä¸€æ–¹ã®å†…å´ã®ã‚¹ã‚³ãƒ¼ãƒ—ã§å®£è¨€ã•れる場åˆã¯å•題ã‚りã¾ã›ã‚“。 @subsection サンプルコード @verbatim extern int func(void); void func(void) /* W0788 */ { typedef int num; double num; /* W0788 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0787} `%s' ã®åž‹ãŒã€ä»¥å‰ã®ç•°ãªã‚‹ã‚¹ã‚³ãƒ¼ãƒ—ã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ @item @ref{W0789} `%s' ã®åž‹ãŒã€ä»¥å‰ã®ã‚ˆã‚Šåºƒã„スコープã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W0789 @section W0789 @cindex W0789 @subsection メッセージ本文 `%s' ã®åž‹ãŒã€ä»¥å‰ã®ã‚ˆã‚Šåºƒã„スコープã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ @subsection 内容 宣言ãŒç•°ãªã‚‹ã‚¹ã‚³ãƒ¼ãƒ—ã«ã‚ã‚‹å ´åˆã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã«ãªã‚Šã¾ã™ã€‚ ã¾ãŸã€å®£è¨€ãŒåŒã˜ã‚¹ã‚³ãƒ¼ãƒ—ã«ã‚ã‚‹å ´åˆã¯æ¨™æº–制約é•åã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ ãŸã ã—ã€ä¸€æ–¹ãŒã‚‚ã†ä¸€æ–¹ã®å†…å´ã®ã‚¹ã‚³ãƒ¼ãƒ—ã§å®£è¨€ã•れる場åˆã¯å•題ã‚りã¾ã›ã‚“。 @subsection サンプルコード @verbatim int num = 0; extern int func1(void); void func2(void) { extern double num; /* W0789 */ extern void func1(void); /* W0789 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0788} `%s' ã®åž‹ãŒã€ä»¥å‰ã®åŒã˜ã‚¹ã‚³ãƒ¼ãƒ—内ã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ @item @ref{W0789} `%s' ã®åž‹ãŒã€ä»¥å‰ã®ã‚ˆã‚Šåºƒã„スコープã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W0790 @section W0790 @cindex W0790 @subsection メッセージ本文 グローãƒãƒ«ãªã‚ªãƒ–ジェクトã¾ãŸã¯é–¢æ•° `%s' ãŒäºŒå›žä»¥ä¸Šå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 文法上ã®èª¤ã‚Šã§ã¯ã‚りã¾ã›ã‚“ã®ã§ã€é‡è¤‡å®šç¾©ãã®ã‚‚ã®ãŒåŽŸå› ã§äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™ã“ã¨ã¯ã‚りã¾ã›ã‚“。 ã—ã‹ã—ã€åŒã˜è­˜åˆ¥å­ã§è¤‡æ•°å›žå®šç¾©ã™ã‚‹ã“ã¨ã¯ç„¡é§„ãªå‡¦ç†ã¨è¨€ãˆã¾ã™ã€‚ ç„¡é§„ãªã‚‚ã®ã¯ã€ãƒ¡ãƒ¢ãƒªè³‡æºã‚’消費ã™ã‚‹ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®å¯èª­æ€§ã‚’低下ã•ã›ã‚‹ã€ãªã©ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(void) { return 0; } int a = 0; int func(void) /* W0790 */ { return 1; } int a = 1; /* W0790 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0791} グローãƒãƒ«ãªã‚ªãƒ–ジェクトã¾ãŸã¯é–¢æ•° `%s' ãŒäºŒå›žä»¥ä¸Šå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0791 @section W0791 @cindex W0791 @subsection メッセージ本文 グローãƒãƒ«ãªã‚ªãƒ–ジェクトã¾ãŸã¯é–¢æ•° `%s' ãŒäºŒå›žä»¥ä¸Šå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 文法上ã®èª¤ã‚Šã§ã¯ã‚りã¾ã›ã‚“ã®ã§ã€é‡è¤‡å®šç¾©ãã®ã‚‚ã®ãŒåŽŸå› ã§äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™ã“ã¨ã¯ã‚りã¾ã›ã‚“。 ã—ã‹ã—ã€åŒã˜è­˜åˆ¥å­ã§è¤‡æ•°å›žå®šç¾©ã™ã‚‹ã“ã¨ã¯ç„¡é§„ãªå‡¦ç†ã¨è¨€ãˆã¾ã™ã€‚ ç„¡é§„ãªã‚‚ã®ã¯ã€ãƒ¡ãƒ¢ãƒªè³‡æºã‚’消費ã™ã‚‹ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®å¯èª­æ€§ã‚’低下ã•ã›ã‚‹ã€ãªã©ã®ãƒ‡ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @file{test1.c} @verbatim int func(void) /* W0791 */ { return 0; } int a = 0; /* W0791 */ @end verbatim @file{test2.c} @verbatim int func(void) /* W0791 */ { return 1; } int a = 1; /* W0791 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0790} グローãƒãƒ«ãªã‚ªãƒ–ジェクトã¾ãŸã¯é–¢æ•° `%s' ãŒäºŒå›žä»¥ä¸Šå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0792 @section W0792 @cindex W0792 @subsection メッセージ本文 æµ®å‹•å°æ•°ç‚¹æ•°åž‹ã‚’関数ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 関数ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰æµ®å‹•å°æ•°ç‚¹åž‹ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã€ã¾ãŸã¯ãã®é€†ã®ã‚­ãƒ£ã‚¹ãƒˆã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int (*foo(const float f))(void) { return (int (*)(void)) f; /* W0792 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W0793 @section W0793 @cindex W0793 @subsection メッセージ本文 関数ãƒã‚¤ãƒ³ã‚¿ã‚’オブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 オブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿ã‹ã‚‰é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã¸ã®ã‚­ãƒ£ã‚¹ãƒˆã€ã¾ãŸã¯ãã®é€†ã®é»„ã‚„ã‚¹ãƒˆã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim typedef int (*funptr_t)(void); funptr_t foo(float *p) { return (funptr_t) p; /* W0793 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W0794 @section W0794 @cindex W0794 @subsection メッセージ本文 符å·ä»˜ãã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã‚’左シフト演算ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 æ•´æ•°ã®è² ã®å€¤ã‚’ã©ã®ã‚ˆã†ã«è¡¨ç¾ã™ã‚‹ã‹ã¯è¦æ ¼ã§å®šç¾©ã•れã¦ã„ã‚‹ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“。 従ã£ã¦ã€ç¬¦å·ä»˜ãåž‹ã®å€¤ã«å¯¾ã—ã¦å·¦ã‚·ãƒ•ト演算をã—ãŸçµæžœã¯ã€ã‚³ãƒ³ãƒ‘イラã«ä¾å­˜ã™ã‚‹ã“ã¨ã«ãªã‚Šã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int func(int i) { return i << 1; /* W0794 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W0795 @section W0795 @cindex W0795 @subsection メッセージ本文 関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚å°‘ãªã„ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€è¨€èªžåˆ¶ç´„é•åã«ãªã‚Šã¾ã™ã®ã§ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ ã¾ãŸã€ã‚¹ã‚¿ãƒƒã‚¯ã‚’破壊ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚å±é™ºã§ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(int, int, int); static void bar(void) { foo(1, 2); /* W0795 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0796} 関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚多ã„ã§ã™ã€‚ @item @ref{W0797} 関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°å®šç¾©ã«ãŠã‘ã‚‹ä»®å¼•æ•°ã®æ•°ã¨ã¯ç•°ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0796 @section W0796 @cindex W0796 @subsection メッセージ本文 関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚多ã„ã§ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€è¨€èªžåˆ¶ç´„é•åã«ãªã‚Šã¾ã™ã®ã§ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ ã¾ãŸã€ã‚¹ã‚¿ãƒƒã‚¯ã‚’破壊ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚å±é™ºã§ã™ã€‚ @subsection サンプルコード @verbatim extern void foo(int, int); static void bar(void) { foo(1, 2, 3); /* W0796 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0795} 関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚å°‘ãªã„ã§ã™ã€‚ @item @ref{W0797} 関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°å®šç¾©ã«ãŠã‘ã‚‹ä»®å¼•æ•°ã®æ•°ã¨ã¯ç•°ãªã‚Šã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0797 @section W0797 @cindex W0797 @subsection メッセージ本文 関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°å®šç¾©ã«ãŠã‘ã‚‹ä»®å¼•æ•°ã®æ•°ã¨ã¯ç•°ãªã‚Šã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€è¨€èªžåˆ¶ç´„é•åã«ãªã‚Šã¾ã™ã®ã§ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ ã¾ãŸã€ã‚¹ã‚¿ãƒƒã‚¯ã‚’破壊ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚å±é™ºã§ã™ã€‚ @subsection サンプルコード @verbatim static int foo(int, int); static int bar(void) { int a = foo(1); /* W0795 */ int b = foo(1, 2); int c = foo(1, 2, 3); /* W0795 */ } static int foo(int a, int b) { return a + b; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0795} 関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚å°‘ãªã„ã§ã™ã€‚ @item @ref{W0796} 関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚多ã„ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0798 @section W0798 @cindex W0798 @subsection メッセージ本文 ä¸å®Œå…¨ãªå…±ç”¨ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。 @subsection 内容 オブジェクトã®å€¤ãŒå¿…è¦ãªæ–‡è„ˆã§ã€ä¸å®Œå…¨åž‹ã‚’ã‚‚ã¤å·¦è¾ºå€¤ã‚’用ã„るよã†ãªå¼ã¯ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern union UN *p; void func(void) { int i = 0; if (p) { i = p->i; /* W0798 */ } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0799} ä¸å®Œå…¨ãªæ§‹é€ ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。 @item @ref{W0800} `%s' ã¯çµåˆã‚’ã‚‚ãŸãªã„ä¸å®Œå…¨åž‹ã§ã™ã€‚ã“ã‚Œã¯æœªå®šç¾©ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0799 @section W0799 @cindex W0799 @subsection メッセージ本文 ä¸å®Œå…¨ãªæ§‹é€ ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。 @subsection 内容 オブジェクトã®å€¤ãŒå¿…è¦ãªæ–‡è„ˆã§ã€ä¸å®Œå…¨åž‹ã‚’ã‚‚ã¤å·¦è¾ºå€¤ã‚’用ã„るよã†ãªå¼ã¯ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern struct ST *p; void func(void) { int i = 0; if (p) { i = p->i; /* W0799 */ } } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0798} ä¸å®Œå…¨ãªå…±ç”¨ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。 @item @ref{W0800} `%s' ã¯çµåˆã‚’ã‚‚ãŸãªã„ä¸å®Œå…¨åž‹ã§ã™ã€‚ã“ã‚Œã¯æœªå®šç¾©ã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0800 @section W0800 @cindex W0800 @subsection メッセージ本文 `%s' ã¯çµåˆã‚’ã‚‚ãŸãªã„ä¸å®Œå…¨åž‹ã§ã™ã€‚ã“ã‚Œã¯æœªå®šç¾©ã§ã™ã€‚ @subsection 内容 オブジェクトã®å€¤ãŒå¿…è¦ãªæ–‡è„ˆã§ã€ä¸å®Œå…¨åž‹ã‚’ã‚‚ã¤å·¦è¾ºå€¤ã‚’用ã„るよã†ãªå¼ã¯ ISO C90 ã§æœªå®šç¾©ãªã®ã§ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int a[]; /* W0800 */ struct ST s = { 0 }; /* W0800 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0798} ä¸å®Œå…¨ãªå…±ç”¨ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。 @item @ref{W0799} ä¸å®Œå…¨ãªæ§‹é€ ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0801 @section W0801 @cindex W0801 @subsection メッセージ本文 ã“ã®æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã«ã¯åå‰ä»˜ãã®ãƒ¡ãƒ³ãƒãŒã‚りã¾ã›ã‚“。 @subsection 内容 åå‰ä»˜ãã®ãƒ¡ãƒ³ãƒã‚’一ã¤ã‚‚æŒãŸãªã„構造体ã¾ãŸã¯å…±ç”¨ä½“を使用ã—ãŸã¨ãã®å‹•ä½œã¯æœªå®šç¾©ã§ã™ã€‚ 従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim struct foo { /* W0801 */ }; struct bar { /* W0801 */ int; int :1; long; double; }; @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0802 @section W0802 @cindex W0802 @subsection メッセージ本文 `#include' å‰å‡¦ç†æŒ‡ä»¤ã®å¾ŒãŒã€<ファイルå> ã‚ã‚‹ã„㯠"ファイルå" å½¢å¼ã®ã©ã¡ã‚‰ã§ã‚‚ã‚りã¾ã›ã‚“。 @subsection 内容 @b{ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚} @code{#include <ファイルå>} ã¾ãŸã¯ @code{#include "ファイルå"} 以外ã®å½¢å¼ã§è¨˜è¿°ã•れã¦ã„ã‚‹ @code{#include} æ–‡ã®å‹•ä½œã¯æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ 従ã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" @subsection サンプルコード @verbatim #include fruits.h /* W0802 */ #define MACRO 1 #include MACRO /* W0802 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.0 以é™ã®äºˆå®š @node W0803 @section W0803 @cindex W0803 @subsection メッセージ本文 関数形å¼ãƒžã‚¯ãƒ­ã®å®Ÿå¼•æ•°ã®ä¸­ã«ã€å‰å‡¦ç†æŒ‡ä»¤ãŒè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 @b{ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚} ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @c{未実装} @verbatim /* 追記予定 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.0 以é™ã®äºˆå®š @node W0804 @section W0804 @cindex W0804 @subsection メッセージ本文 defined æ§‹æ–‡ãŒã€`defined(識別å­)' ã‚ã‚‹ã„㯠`defined 識別å­' ã®ã©ã¡ã‚‰ã§ã‚‚ã‚りã¾ã›ã‚“。 @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #if defined "MACRO" /* W0804 */ #endif @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0805} `defined' ã«ã€å®Ÿå¼•æ•°ã¨ãªã‚‹è­˜åˆ¥å­ãŒã‚りã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0805 @section W0805 @cindex W0805 @subsection メッセージ本文 `defined' ã«ã€å®Ÿå¼•æ•°ã¨ãªã‚‹è­˜åˆ¥å­ãŒã‚りã¾ã›ã‚“。 @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #if defined "foo" /* W0805 */ int i = 0; #endif @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0804} defined æ§‹æ–‡ãŒã€`defined(識別å­)' ã‚ã‚‹ã„㯠`defined 識別å­' ã®ã©ã¡ã‚‰ã§ã‚‚ã‚りã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.16.0 @node W0806 @section W0806 @cindex W0806 @subsection メッセージ本文 `defined' ã¨ã„ã†åç§°ã®ãƒžã‚¯ãƒ­ã‚’定義ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 ISO C90 ã§è¦å®šã•れã¦ã„る予約語を定義ã€å†å®šç¾©ã€å®šç¾©è§£æ¶ˆã™ã‚‹ã“ã¨ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #define defined !defined /* W0806 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0807} 事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' を削除ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0808} 事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' ã‚’å†å®šç¾©ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W0807 @section W0807 @cindex W0807 @subsection メッセージ本文 事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' を削除ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 ISO C90 ã§è¦å®šã•れã¦ã„る予約語を定義ã€å†å®šç¾©ã€å®šç¾©è§£æ¶ˆã™ã‚‹ã“ã¨ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #undef __STDC_VERSION__ /* W0807 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0806} `defined' ã¨ã„ã†åç§°ã®ãƒžã‚¯ãƒ­ã‚’定義ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0808} 事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' ã‚’å†å®šç¾©ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W0808 @section W0808 @cindex W0808 @subsection メッセージ本文 事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' ã‚’å†å®šç¾©ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 ISO C90 ã§è¦å®šã•れã¦ã„る予約語を定義ã€å†å®šç¾©ã€å®šç¾©è§£æ¶ˆã™ã‚‹ã“ã¨ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #define __FILE__ "test.c" /* W0808 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0806} `defined' ã¨ã„ã†åç§°ã®ãƒžã‚¯ãƒ­ã‚’定義ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0807} 事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' を削除ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W0809 @section W0809 @cindex W0809 @subsection メッセージ本文 è­˜åˆ¥å­ `%s' ã¯ãƒ©ã‚¤ãƒ–ラリã§äºˆç´„済ã¿ã§ã™ã€‚ @subsection 内容 ISO C90 ã§è¦å®šã•れã¦ã„る予約語をå†ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ ã—ãŸãŒã£ã¦ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int __value; /* W0809 */ int _VAL = 10; /* W0809 */ static void _func(void); /* W0809 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W0810 @section W0810 @cindex W0810 @subsection メッセージ本文 ã“ã® `if-if-else' æ–‡ã®æ§‹é€ ã‚’より明確ã«ã™ã‚‹ãŸã‚ã«ã¯ `@{@}' ãŒå¿…è¦ã§ã™ã€‚ @subsection 内容 サンプルコードã®ã‚ˆã†ãªã‚³ãƒ¼ãƒ‰ã§ã¯ã€@code{else} ãŒã©ã¡ã‚‰ã® @code{if} ã«å¯¾å¿œã™ã‚‹ã®ã‹ãŒä¸æ˜Žç¢ºã§ã™ã€‚ ã¾ãŸã€æœ¬ä½“ãŒå˜ä¸€æ–‡ã§æ¸ˆã¾ãªããªã£ãŸã¨ãã«ã€æ³¢æ‹¬å¼§ã‚’ã¤ã‘忘れるリスクもã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim int foo(int i, int j) { if (i < 0) /* W0810 */ if (j > 0) { return 0; } else { return 1; } if (i > 0) /* W0810 */ if (j < 0) { return 2; } else { return 3; } return 4; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0811 @section W0811 @cindex W0811 @subsection メッセージ本文 ã“ã®ãƒžã‚¯ãƒ­ã®å±•é–‹çµæžœã®ã€`defined' トークンã¯ã€è¨±å®¹ã•れã¾ã›ã‚“。 @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€æœªå®šç¾©ã®å‹•作ã®ãŸã‚ã€äºˆæœŸã—ãªã„動作を引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim #define COND defined(FOO) #if COND /* W0811 */ int i = 0; #endif @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.16.0 @node W0827 @section W0827 @cindex W0827 @subsection メッセージ本文 ãƒã‚¹ãƒˆã•ã‚ŒãŸæ§‹é€ ä½“ã®åˆæœŸå€¤ã®å„è¦ç´ ãŒ `@{@}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 @subsection 内容 構造体を 0 以外ã§åˆæœŸåŒ–ã™ã‚‹å ´åˆã¯ã€æ§‹é€ ã‚’示ã—ã€åˆæœŸåŒ–å­ã¯æ³¢æ‹¬å¼§ "@{@}" ã§å›²ã¾ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 @subsection サンプルコード @verbatim struct ST { int i; int j; }; struct ST a[2] = { 10, 20, 30, 40 }; /* W0827 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0828} ãƒã‚¹ãƒˆã•れãŸé…列ã®åˆæœŸå€¤ã®å„è¦ç´ ãŒ `@{@}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0828 @section W0828 @cindex W0828 @subsection メッセージ本文 ãƒã‚¹ãƒˆã•れãŸé…列ã®åˆæœŸå€¤ã®å„è¦ç´ ãŒ `@{@}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 @subsection 内容 é…列を 0 以外ã§åˆæœŸåŒ–ã™ã‚‹å ´åˆã¯ã€æ§‹é€ ã‚’示ã—ã€åˆæœŸåŒ–å­ã¯æ³¢æ‹¬å¼§ "@{@}" ã§å›²ã¾ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 @subsection サンプルコード @verbatim int a[3][2] = { {1, 2}, {3, 4}, {5, 6} }; int b[3][2] = { 1, 2, 3, 4, 5, 6 }; /* W0828 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0827} ãƒã‚¹ãƒˆã•ã‚ŒãŸæ§‹é€ ä½“ã®åˆæœŸå€¤ã®å„è¦ç´ ãŒ `@{@}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0830 @section W0830 @cindex W0830 @subsection メッセージ本文 列挙å­ä¸¦ã³ã®æœ«å°¾ã«ã‚«ãƒ³ãƒž `,' ãŒã‚りã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ã€è¨€èªžæ‹¡å¼µã«è©²å½“ã™ã‚‹ãŸã‚ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { Red, Green, Blue, }; /* W0830 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W0831 @section W0831 @cindex W0831 @subsection メッセージ本文 ã“れã¯ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ã‚¢ã‚»ãƒ³ãƒ–リ用ã®è¨€èªžæ‹¡å¼µã§ã™ã€‚#asm 㨠#endasm ã®é–“ã¯ç„¡è¦–ã—ã¾ã™ã€‚ @subsection 内容 インライン・アセンブラ構文ã¯ã€è¨€èªžæ‹¡å¼µã«è©²å½“ã™ã‚‹ãŸã‚ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @c{未実装} @verbatim /* 追記予定 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0832} インラインアセンブリ構文を使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ã“ã®ã‚³ãƒ¼ãƒ‰ã¯ç„¡è¦–ã—ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0832 @section W0832 @cindex W0832 @subsection メッセージ本文 インラインアセンブリ構文を使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ã“ã®ã‚³ãƒ¼ãƒ‰ã¯ç„¡è¦–ã—ã¾ã™ã€‚ @subsection 内容 インライン・アセンブラ構文ã¯ã€è¨€èªžæ‹¡å¼µã«è©²å½“ã™ã‚‹ãŸã‚ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define ASM_CODE asm("movl %ecx, %eax") void foo(int arg1, int *arg2, int arg3) { asm("movl %ecx, %eax"); /* W0832 */ __asm__("movl %ecx, (%eax)"); /* W0832 */ asm { /* W0832 */ xorl eax, eax } ASM_CODE; /* W0832 */ __asm__ volatile ( /* W0832 */ "int $0x80" : "=a" (r) "+b" (arg1), "+c" (arg2), "+d" (arg3) : "a" (128) : "memory", "cc"); } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0831} ã“れã¯ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ã‚¢ã‚»ãƒ³ãƒ–リ用ã®è¨€èªžæ‹¡å¼µã§ã™ã€‚#asm 㨠#endasm ã®é–“ã¯ç„¡è¦–ã—ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.8.0 @node W0833 @section W0833 @cindex W0833 @subsection メッセージ本文 接尾語 LL を使ã£ã¦ã„ã¾ã™ã€‚ @subsection 内容 接尾語 @code{LL} ã¯ã€è¨€èªžæ‹¡å¼µã«è©²å½“ã™ã‚‹ãŸã‚ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim long long ll = 123LL; /* W0833 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0834} long long 型を使ã£ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W0834 @section W0834 @cindex W0834 @subsection メッセージ本文 long long 型を使ã£ã¦ã„ã¾ã™ã€‚ @subsection 内容 @code{long long} åž‹ã¯ã€è¨€èªžæ‹¡å¼µã«è©²å½“ã™ã‚‹ãŸã‚ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @verbatim extern long long ll; /* W0834 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0833} 接尾語 LL を使ã£ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W0835 @section W0835 @cindex W0835 @subsection メッセージ本文 å¯å¤‰å¼•æ•°ã‚’å—ã‘å–るマクロãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 @b{ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚} å¯å¤‰å€‹å¼•数マクロã®å®šç¾©ã¯ã€è¨€èªžæ‹¡å¼µã«è©²å½“ã™ã‚‹ãŸã‚ã€ç§»æ¤æ€§ã‚’低下ã•ã›ã¾ã™ã€‚ @subsection サンプルコード @c{未実装} @verbatim /* 追記予定 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.0 以é™ã®äºˆå®š @node W0947 @section W0947 @cindex W0947 @subsection メッセージ本文 文字列リテラルãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 リテラルãŒä½•を表ã—ã¦ã„ã‚‹ã®ã‹åˆ†ã‹ã‚Šé›£ãã€ä¿å®ˆæ€§ã«æ‚ªå½±éŸ¿ã‚’åŠã¼ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim func("Apple, Banana, Chocolate"); /* W0947 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0948} 文字定数 %s ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0949} ビットフィールドã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0950} é…列ã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0948 @section W0948 @cindex W0948 @subsection メッセージ本文 文字定数 %s ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 リテラルãŒä½•を表ã—ã¦ã„ã‚‹ã®ã‹åˆ†ã‹ã‚Šé›£ãã€ä¿å®ˆæ€§ã«æ‚ªå½±éŸ¿ã‚’åŠã¼ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim func('a'); /* W0948 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0947} 文字列リテラルãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0949} ビットフィールドã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0950} é…列ã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0949 @section W0949 @cindex W0949 @subsection メッセージ本文 ビットフィールドã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 リテラルãŒä½•を表ã—ã¦ã„ã‚‹ã®ã‹åˆ†ã‹ã‚Šé›£ãã€ä¿å®ˆæ€§ã«æ‚ªå½±éŸ¿ã‚’åŠã¼ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim struct ST { unsigned int a:1; unsigned int a:2; /* W0949 */ unsigned int a:3; /* W0949 */ }; @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0947} 文字列リテラルãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0948} 文字定数 %s ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0950} é…列ã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W0950 @section W0950 @cindex W0950 @subsection メッセージ本文 é…列ã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 リテラルãŒä½•を表ã—ã¦ã„ã‚‹ã®ã‹åˆ†ã‹ã‚Šé›£ãã€ä¿å®ˆæ€§ã«æ‚ªå½±éŸ¿ã‚’åŠã¼ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int a[10]; /* W0950 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0947} 文字列リテラルãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0948} 文字定数 %s ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0949} ビットフィールドã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W1026 @section W1026 @cindex W1026 @subsection メッセージ本文 %s 番目ã®å®Ÿå¼•æ•°ãŒã‚ªãƒ–ジェクト型ã§ã¯ã‚りã¾ã›ã‚“。 @subsection 内容 ä¸å®Œå…¨åž‹ã®æ§‹é€ ä½“ã‚„é…列を仮引数ã«ã—ã¦ã„ã¾ã™ã€‚関数ã®å…¨ã¦ã®ä»®å¼•æ•°ã¯ã‚ªãƒ–ジェクト型ã®å¼ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim extern struct st s; extern void foo(struct st); void bar(void) { foo(s); /* W1026 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W1027 @section W1027 @cindex W1027 @subsection メッセージ本文 é…列ã®åŸºæœ¬åž‹ãŒé–¢æ•°åž‹ã§ã™ã€‚ã“ã‚Œã¯æ„味ãŒã‚りã¾ã›ã‚“。 @subsection 内容 関数ã®é…列ãŒå­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim int (fun_tbl[20])(void); /* W1027 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1028} é…列ã®åŸºæœ¬åž‹ãŒã‚µã‚¤ã‚ºä¸æ˜Žã®é…列ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。 @item @ref{W1029} é…列ã®åŸºæœ¬åž‹ãŒå†…容䏿˜Žã®æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W1028 @section W1028 @cindex W1028 @subsection メッセージ本文 é…列ã®åŸºæœ¬åž‹ãŒã‚µã‚¤ã‚ºä¸æ˜Žã®é…列ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。 @subsection 内容 ã“ã®é…列ã¯ä¸å®Œå…¨åž‹ã§å®šç¾©ã•れã¦ã„ã¾ã™ã€‚ã“れã¯èª¤ã‚Šã§ã™ã€‚ @subsection サンプルコード @verbatim int a[4][]; /* W1028 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1027} é…列ã®åŸºæœ¬åž‹ãŒé–¢æ•°åž‹ã§ã™ã€‚ã“ã‚Œã¯æ„味ãŒã‚りã¾ã›ã‚“。 @item @ref{W1029} é…列ã®åŸºæœ¬åž‹ãŒå†…容䏿˜Žã®æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W1029 @section W1029 @cindex W1029 @subsection メッセージ本文 é…列ã®åŸºæœ¬åž‹ãŒå†…容䏿˜Žã®æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。 @subsection 内容 ã“ã®é…列ã¯ã€ä¸å®Œå…¨ãªè¦ç´ ã‚’æŒã¤æ§‹é€ ä½“ã¾ãŸã¯å…±ç”¨ä½“ã‚’åž‹ã¨ã—ã¦å®šç¾©ã—ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim struct ST a[5]; /* W1029 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1027} é…列ã®åŸºæœ¬åž‹ãŒé–¢æ•°åž‹ã§ã™ã€‚ã“ã‚Œã¯æ„味ãŒã‚りã¾ã›ã‚“。 @item @ref{W1028} é…列ã®åŸºæœ¬åž‹ãŒã‚µã‚¤ã‚ºä¸æ˜Žã®é…列ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W1030 @section W1030 @cindex W1030 @subsection メッセージ本文 ラベル `%s' ãŒã“ã®é–¢æ•°ã®ä¸­ã§äºŒå›žä»¥ä¸Šä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 åŒã˜åå‰ã®ãƒ©ãƒ™ãƒ«ãŒã€é–¢æ•°å†…ã§ 2 回以上使ã‚れã¦ã„ã¾ã™ã€‚ã“ã®ã‚ˆã†ãªä½¿ã„æ–¹ã¯èª¤ã‚Šã§ã™ã€‚ @subsection サンプルコード @verbatim void func(int a, int b) { if (a == 0) { int c = 0; RETRY: b = 10; } if (b != 0) { goto RETRY; } RETRY: /* W1030 */ b = 1; ...snip... } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W1031 @section W1031 @cindex W1031 @subsection メッセージ本文 オブジェクト `%s' ã¯ã€å¤–部çµåˆã¨å†…部çµåˆã®ä¸¡æ–¹ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ãã®å‹•ä½œã¯æœªå®šç¾©ã§ã™ã€‚ @subsection 内容 åŒã˜åå‰ã®å¤‰æ•°ãŒ 2 回以上定義ã•れã¦ã„ã¦ã€ãã® 1 ã¤ã«ã¯ @code{static} 宣言ãŒã¤ã„ã¦ã„ã¾ã™ã€‚ã“ã®ã‚ˆã†ãªä½¿ã„æ–¹ã¯èª¤ã‚Šã§ã™ã€‚ @subsection サンプルコード @file{test.h} @verbatim extern int a; @end verbatim @file{test.c} @verbatim #include "test.h" static int a; /* W1031 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W1032 @section W1032 @cindex W1032 @subsection メッセージ本文 内部çµåˆã‚’ã‚‚ã¤å¤‰æ•° '%s' ã®ä»®å®šç¾©ã¯ã€ä¸å®Œå…¨åž‹ã§ã¯ã„ã‘ã¾ã›ã‚“。 @subsection 内容 内部çµåˆã‚’æŒã¤ã‚ªãƒ–ジェクトã®ä»®å®šç¾©ã§ã®ã†ã¡ã€å¾Œã§ç¤ºã•れãŸã»ã†ã«ã«æ˜Žç¤ºçš„ãªå®šç¾©ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。ã“ã®ã‚ˆã†ãªä½¿ã„æ–¹ã¯èª¤ã‚Šã§ã™ã€‚ @subsection サンプルコード @verbatim static struct ST a[3]; /* W1032 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W1033 @section W1033 @cindex W1033 @subsection メッセージ本文 é–¢æ•°ã®æˆ»ã‚Šå€¤ã®åž‹ã« volatile ã‚ã‚‹ã„㯠const 修飾å­ã‚’使ã£ã¦ã„ã¾ã™ã€‚ãã®å‹•ä½œã¯æœªå®šç¾©ã§ã™ã€‚ @subsection 内容 é–¢æ•°ã®æˆ»ã‚Šå€¤ã®åž‹ãŒã€@code{volatile} åž‹ã®å ´åˆã®å‹•作ã¯å‡¦ç†ç³»å®šç¾©ã§ã™ã€‚ ã¾ãŸã€@code{const} åž‹ã®å ´åˆã¯æœªå®šç¾©ã§ã™ã€‚ @subsection サンプルコード @verbatim extern const int func1(int); /* W1033 */ const int func2(int i) /* W1033 */ { return i + 1; } const int *func3(int i) /* OK */ { static int j; j = i; return &j; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W1034 @section W1034 @cindex W1034 @subsection メッセージ本文 ブロックスコープã§ã€é–¢æ•° `%s()' ã« static 記憶域クラス指定å­ã‚’使ã£ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ã“ã®ç”¨æ³•ã¯æ„味ãŒã‚りã¾ã›ã‚“。 @subsection 内容 @code{static} ãªé–¢æ•°ãŒãƒ–ロックスコープ内ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ 関数宣言ã¯ãƒ–ロック・スコープã®å ´åˆ @code{static} を使用ã§ãã¾ã›ã‚“。 @subsection サンプルコード @verbatim int func(void) { static int func1(void); /* W1034 */ extern int func2(void); } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W1035 @section W1035 @cindex W1035 @subsection メッセージ本文 `%s' 㯠typedef ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚明示的ãªåž‹æŒ‡å®šå­ã‚’使ã‚ãšã«ã€ã‚ˆã‚Šå†…å´ã®ã‚¹ã‚³ãƒ¼ãƒ—ã§å†å®£è¨€ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 @subsection 内容 @b{ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚} @code{typedef} ã®å†å®šç¾©ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @c{未実装} @verbatim /* 追記予定 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1036} `%s' 㯠typedef ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚明示的ãªåž‹æŒ‡å®šå­ã‚’使ã‚ãšã«ã€æ§‹é€ ä½“ã¾ãŸã¯å…±ç”¨ä½“ã®ãƒ¡ãƒ³ãƒã¨ã—ã¦å†å®£è¨€ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.0 以é™ã®äºˆå®š @node W1036 @section W1036 @cindex W1036 @subsection メッセージ本文 `%s' 㯠typedef ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚明示的ãªåž‹æŒ‡å®šå­ã‚’使ã‚ãšã«ã€æ§‹é€ ä½“ã¾ãŸã¯å…±ç”¨ä½“ã®ãƒ¡ãƒ³ãƒã¨ã—ã¦å†å®£è¨€ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 @subsection 内容 @b{ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚} @code{typedef} ã®å†å®šç¾©ã¯æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚ @subsection サンプルコード @c{未実装} @verbatim /* 追記予定 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1035} `%s' 㯠typedef ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚明示的ãªåž‹æŒ‡å®šå­ã‚’使ã‚ãšã«ã€ã‚ˆã‚Šå†…å´ã®ã‚¹ã‚³ãƒ¼ãƒ—ã§å†å®£è¨€ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.0 以é™ã®äºˆå®š @node W1037 @section W1037 @cindex W1037 @subsection メッセージ本文 外部çµåˆã‚’も㤠`%s' ãŒã€äºŒã¤ä»¥ä¸Šå®£è¨€ã•れã¦ã„ã¾ã™ãŒäº’æ›æ€§ãŒã‚りã¾ã›ã‚“。 @subsection 内容 外部çµåˆã‚’æŒã¤åŒä¸€ã®è­˜åˆ¥å­ã‚’複数宣言ã™ã‚‹éš›ã¯ã€ã™ã¹ã¦ã®å®£è¨€ã«ãŠã„ã¦ã€ ãã®åž‹ï¼ˆé–¢æ•°ã®å®£è¨€ã®å ´åˆã¯ã€æˆ»ã‚Šå€¤ã®åž‹ã€çµåˆã€ä¾‹å¤–仕様)ã«äº’æ›æ€§ã‚’ä¿è¨¼ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @file{test1.c} @verbatim extern void func(void); /* W1037 */ extern int a; /* W1037 */ @end verbatim @file{test2.c} @verbatim extern int func(int); /* W1037 */ extern long a; /* W1037 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W1039 @section W1039 @cindex W1039 @subsection メッセージ本文 %s ç•ªç›®ã®æŒ‡å®šå­ã« `ll' ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 '@code{ll}' ã‚’å¤‰æ›æŒ‡å®šå­ã«ä½¿ç”¨ã—ã¦ã„ã¾ã™ã€‚ã“ã®ã‚ˆã†ãªè¨˜è¿°ã¯ ISO C90 ã§ã¯èªã‚られã¦ã„ã¾ã›ã‚“。 @subsection サンプルコード @verbatim extern int printf(const char *, ...); void foo(long long ll) { printf("%lld", ll); /* W1039 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W1040 @section W1040 @cindex W1040 @subsection メッセージ本文 å‰å‡¦ç†æŒ‡ä»¤ã®å¾Œã«èªè­˜ã§ããªã„文字列ãŒè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®ã‚ˆã†ãªå‰å‡¦ç†æŒ‡ä»¤ã®è¨˜è¿°ã¯ã€ISO C90 æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。 @subsection サンプルコード @verbatim #define TEST #ifdef TEST #if defined(CASE_1) int i = 1; #elif defined(CASE_2) int i = 2; #endif CASE /* W1040 */ #else int i = 0; #endif TEST /* W1040 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1041} `%s' ã¯ã€ISO C æ¨™æº–è¦æ ¼ã®æ­£å¼ãªå‰å‡¦ç†æŒ‡ä»¤ã§ã¯ã‚りã¾ã›ã‚“。 @item @ref{W1042} å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ sizeof 演算å­ã‚’使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.16.0 @node W1041 @section W1041 @cindex W1041 @subsection メッセージ本文 `%s' ã¯ã€ISO C æ¨™æº–è¦æ ¼ã®æ­£å¼ãªå‰å‡¦ç†æŒ‡ä»¤ã§ã¯ã‚りã¾ã›ã‚“。 @subsection 内容 ã“ã®ã‚ˆã†ãªå‰å‡¦ç†æŒ‡ä»¤ã®è¨˜è¿°ã¯ã€ISO C90 æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。 @subsection サンプルコード @verbatim #compiler_specific_extension 1 2.3 "4" /* W1041 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1040} å‰å‡¦ç†æŒ‡ä»¤ã®å¾Œã«èªè­˜ã§ããªã„文字列ãŒè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1042} å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ sizeof 演算å­ã‚’使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.16.0 @node W1042 @section W1042 @cindex W1042 @subsection メッセージ本文 å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ sizeof 演算å­ã‚’使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ @subsection 内容 @b{ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚} ã“ã®ã‚ˆã†ãªå‰å‡¦ç†æŒ‡ä»¤ã®è¨˜è¿°ã¯ã€ISO C90 æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。 @subsection サンプルコード @c{未実装} @verbatim /* 追記予定 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1040} å‰å‡¦ç†æŒ‡ä»¤ã®å¾Œã«èªè­˜ã§ããªã„文字列ãŒè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1041} `%s' ã¯ã€ISO C æ¨™æº–è¦æ ¼ã®æ­£å¼ãªå‰å‡¦ç†æŒ‡ä»¤ã§ã¯ã‚りã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.0 以é™ã®äºˆå®š @node W1043 @section W1043 @cindex W1043 @subsection メッセージ本文 `@@ address' ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚ @subsection 内容 @b{ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚} ã“ã®ã‚ˆã†ãªæ§‹æ–‡è¨˜è¿°ã¯ã€ISO C90 æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ãŸã‚ã€è¨€èªžæ‹¡å¼µã¨ã¿ãªã•れã¾ã™ã€‚ @subsection サンプルコード @c{未実装} @verbatim /* 追記予定 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1045} ã“ã® `@@ word' æ§‹æ–‡ã¯ç„¡è¦–ã•れã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.0 以é™ã®äºˆå®š @node W1045 @section W1045 @cindex W1045 @subsection メッセージ本文 ã“ã® `@@ word' æ§‹æ–‡ã¯ç„¡è¦–ã•れã¾ã™ã€‚ @subsection 内容 @b{ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚} ã“ã®ã‚ˆã†ãªæ§‹æ–‡è¨˜è¿°ã¯ã€ISO C90 æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ãŸã‚ã€è¨€èªžæ‹¡å¼µã¨ã¿ãªã•れã¾ã™ã€‚ @subsection サンプルコード @c{未実装} @verbatim /* 追記予定 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1043} `@@ address' ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.0 以é™ã®äºˆå®š @node W1046 @section W1046 @cindex W1046 @subsection メッセージ本文 `\' ã¨æ”¹è¡Œã®é–“ã«ã‚る空白文字類ãŒç„¡è¦–ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 ISO C è¦æ ¼ã§ã¯ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥æ–‡å­—ã®å¾Œã«ç›´æŽ¥æ”¹è¡Œæ–‡å­—ãŒç¶šãã¹ãã§ã‚ã‚‹ã¨è¦å®šã—ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim #define FOO(a, b) /* OK */ \ ( /* W1046 */ \ (a) + (b) /* W1046 */ \ ) @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.16.0 @node W1047 @section W1047 @cindex W1047 @subsection メッセージ本文 構造体ã€å…±ç”¨ä½“ã€ã‚ã‚‹ã„ã¯é…列ã®åˆæœŸåŒ–å­ãŒãƒªãƒ†ãƒ©ãƒ«ã§ã¯ã‚りã¾ã›ã‚“。 @subsection 内容 åˆæœŸåŒ–å­ãŒå®šæ•°å¼ã«ãªã£ã¦ã„ã¾ã›ã‚“。 @subsection サンプルコード @verbatim int foo(int i, int j) { int a[] = { 0, i, j }; /* W1047 */ return a[1]; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W1048 @section W1048 @cindex W1048 @subsection メッセージ本文 マルãƒãƒã‚¤ãƒˆæ–‡å­—リテラルã¯å‡¦ç†ç³»å®šç¾©ã®å€¤ã«ãªã‚Šã¾ã™ã€‚ @subsection 内容 @b{ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ AdLint 2.0.0 以é™ã§å‡ºåŠ›ã™ã‚‹äºˆå®šã§ã™ã€‚} マルãƒãƒã‚¤ãƒˆæ–‡å­—定数ãŒä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚ã“ã®å€¤ã‚„サイズã¯å‡¦ç†ç³»ã«ã‚ˆã£ã¦ç•°ãªã‚‹ãŸã‚ã€ç§»æ¤æ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ @subsection サンプルコード @c{未実装} @verbatim /* 追記予定 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.0 以é™ã®äºˆå®š @node W1049 @section W1049 @cindex W1049 @subsection メッセージ本文 ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ @subsection 内容 @code{char} ㌠8bit ã®å ´åˆã€@code{signed char} 型㯠-128~127 ã®ç¯„囲ã—ã‹è¡¨ç¾ã§ãã¾ã›ã‚“。ã—ãŸãŒã£ã¦ã€ä¾‹ 1 ã§ã¯è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ã“ã®å ´åˆã€çµæžœã¯ "処ç†ç³»å®šç¾©" ã«ãªã‚Šã¾ã™ã€‚ 符å·ãªã—演算ã®çµæžœã¯ã€ã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã›ãšã€ãƒ©ãƒƒãƒ—アラウンドã—ã¾ã™ã€‚例 2 ã§ã¯ã€ãƒ©ãƒƒãƒ—アラウンドã—çµæžœãŒåˆ‡ã‚Šè©°ã‚られるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード 例 1 @verbatim void func1(signed int si) { signed char sc = (signed char) si + 10; /* W1049 */ } @end verbatim 例 2 @verbatim void func(unsigned int ui) { unsigned int a = ui * ui; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1050} ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。 @item @ref{W1051} 符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込ã¿ã¾ã™ã€‚ @item @ref{W1052} 符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込むã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W1050 @section W1050 @cindex W1050 @subsection メッセージ本文 ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。 @subsection 内容 @code{char} ㌠8bit ã®å ´åˆã€@code{signed char} 型㯠-128~127 ã®ç¯„囲ã—ã‹è¡¨ç¾ã§ãã¾ã›ã‚“。ã—ãŸãŒã£ã¦ã€ä¾‹ 1 ã§ã¯è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ã“ã®å ´åˆã€çµæžœã¯ "処ç†ç³»å®šç¾©" ã«ãªã‚Šã¾ã™ã€‚ 符å·ãªã—演算ã®çµæžœã¯ã€ã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã›ãšã€ãƒ©ãƒƒãƒ—アラウンドã—ã¾ã™ã€‚例 2 ã§ã¯ã€ãƒ©ãƒƒãƒ—アラウンドã—çµæžœãŒåˆ‡ã‚Šè©°ã‚られるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード 例 1 @verbatim void func(signed int si) { signed char sc = 0; if (si > 127) { sc = (signed char) si + 1; /* W1050 */ } } @end verbatim 例 2 @verbatim void func(unsigned int ui) { unsigned int a = ui * ui; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1049} ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W1051} 符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込ã¿ã¾ã™ã€‚ @item @ref{W1052} 符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込むã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{C1000} 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W1051 @section W1051 @cindex W1051 @subsection メッセージ本文 符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込ã¿ã¾ã™ã€‚ @subsection 内容 符å·ãªã—演算ã®çµæžœã¯ã€ã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã›ãšãƒ©ãƒƒãƒ—アラウンドã—ã€çµæžœãŒåˆ‡ã‚Šè©°ã‚られるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int func(unsigned int ui) { if (ui > 0xEFFFFFFFU) { return ui + 0x10000000U; /* W1051 */ } return 0U; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1049} ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W1050} ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。 @item @ref{W1052} 符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込むã“ã¨ãŒã‚りã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W1052 @section W1052 @cindex W1052 @subsection メッセージ本文 符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込むã“ã¨ãŒã‚りã¾ã™ã€‚ @subsection 内容 符å·ãªã—演算ã®çµæžœã¯ã€ã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã›ãšãƒ©ãƒƒãƒ—アラウンドã—ã€çµæžœãŒåˆ‡ã‚Šè©°ã‚られるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim unsigned int func(unsigned int a, unsigned int b) { if (a > 0xEFFFFFFFU && b < 0x20000000U) { return a + b; /* W1052 */ } return 0U; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1049} ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W1050} ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。 @item @ref{W1051} 符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込ã¿ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W1053 @section W1053 @cindex W1053 @subsection メッセージ本文 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 éžåˆ—挙型ã‹ã‚‰åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; extern void func1(enum Color); void func2(void) { func1(4); /* W1053 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1054} 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1055} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1056} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚ @item @ref{W1057} 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1058} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1059} 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1060} 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1061} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1062} ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1063} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1064} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W1065} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W1054 @section W1054 @cindex W1054 @subsection メッセージ本文 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 éžåˆ—挙型ã‹ã‚‰åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; extern enum Color col; void func2(void) { col = 4; /* W1054 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1053} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1055} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1056} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚ @item @ref{W1057} 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1058} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1059} 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1060} 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1061} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1062} ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1063} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1064} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W1065} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W1055 @section W1055 @cindex W1055 @subsection メッセージ本文 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 列挙型ã‹ã‚‰éžåˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; enum Color func(void) { return 4; /* W1055 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1053} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1054} 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1056} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚ @item @ref{W1057} 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1058} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1059} 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1060} 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1061} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1062} ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1063} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1064} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W1065} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W1056 @section W1056 @cindex W1056 @subsection メッセージ本文 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚ @subsection 内容 列挙型ã‹ã‚‰ç•°ãªã‚‹åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED = 1, GREEN= 2, BLUE = 4 }; enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER }; extern void func1(enum Color); void func2(enum Season ssn) { func1(ssn); /* W1056 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1053} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1054} 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1055} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1057} 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1058} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1059} 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1060} 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1061} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1062} ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1063} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1064} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W1065} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W1057 @section W1057 @cindex W1057 @subsection メッセージ本文 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 列挙型ã‹ã‚‰ç•°ãªã‚‹åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER }; extern enum Color col; void func(enum Season ssn) { col = ssn; /* W1057 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1053} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1054} 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1055} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1056} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚ @item @ref{W1058} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1059} 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1060} 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1061} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1062} ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1063} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1064} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W1065} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W1058 @section W1058 @cindex W1058 @subsection メッセージ本文 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 列挙型ã‹ã‚‰ç•°ãªã‚‹åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER }; enum Color func(enum Season ssn) { return ssn; /* W1058 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1053} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1054} 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1055} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1056} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚ @item @ref{W1057} 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1059} 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1060} 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1061} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1062} ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1063} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1064} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W1065} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W1059 @section W1059 @cindex W1059 @subsection メッセージ本文 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 列挙型ã‹ã‚‰éžåˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; extern void func1(int num); void func2(enum Color col) { func1(col); /* W1059 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1053} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1054} 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1055} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1056} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚ @item @ref{W1057} 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1058} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1060} 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1061} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1062} ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1063} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1064} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W1065} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W1060 @section W1060 @cindex W1060 @subsection メッセージ本文 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 éžåˆ—挙型ã‹ã‚‰åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; int func2(enum Color col) { return col; /* W1060 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1053} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1054} 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1055} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1056} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚ @item @ref{W1057} 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1058} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1059} 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1061} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1062} ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1063} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1064} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W1065} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W1061 @section W1061 @cindex W1061 @subsection メッセージ本文 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 éžåˆ—挙型ã‹ã‚‰åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; extern void func1(enum Color); void func2(int num) { func1(num); /* W1061 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1053} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1054} 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1055} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1056} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚ @item @ref{W1057} 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1058} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1059} 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1060} 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1062} ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1063} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1064} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W1065} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W1062 @section W1062 @cindex W1062 @subsection メッセージ本文 ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 éžåˆ—挙型ã‹ã‚‰åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; extern enum Color col; void func(int num) { col = num + 1; /* W1062 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1053} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1054} 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1055} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1056} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚ @item @ref{W1057} 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1058} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1059} 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1060} 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1061} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1063} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1064} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W1065} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W1063 @section W1063 @cindex W1063 @subsection メッセージ本文 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 éžåˆ—挙型ã‹ã‚‰åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED = 1, GREEN = 2, BLUE = 4 }; enum Color func(int num) { return num / 2; /* W1063 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1053} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1054} 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1055} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1056} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚ @item @ref{W1057} 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1058} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1059} 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1060} 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1061} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1062} ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1064} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W1065} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.6.0 @node W1064 @section W1064 @cindex W1064 @subsection メッセージ本文 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 éžåˆ—挙型ã‹ã‚‰åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED, BLUE, GREEN }; int func(enum Color c) { switch (c) { case RED: /* OK */ return 1; case 1: /* W1064 */ return 2; } return 0; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1053} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1054} 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1055} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1056} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚ @item @ref{W1057} 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1058} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1059} 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1060} 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1061} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1062} ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1063} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1065} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W1065 @section W1065 @cindex W1065 @subsection メッセージ本文 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @subsection 内容 列挙型ã‹ã‚‰ç•°ãªã‚‹åˆ—挙型ã¸ã®å¤‰æ›ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED, BLUE, GREEN }; enum Fruits { APPLE, BANANA, ORANGE, GRAPE }; int func(enum Color c) { switch (c) { case RED: /* OK */ return 1; case ORANGE: /* W1065 */ return 2; } return 0; } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1053} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1054} 列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1055} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1056} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚ @item @ref{W1057} 列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1058} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1059} 仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1060} 戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1061} 仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1062} ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1063} 戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W1064} 列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.4.0 @node W1066 @section W1066 @cindex W1066 @subsection メッセージ本文 明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 例ãˆã°ã‚µãƒ³ãƒ—ルコードã§ã¯ @code{float} 型変数 @code{a} ã® 2 ä¹—ã—ãŸå€¤ãŒ @code{float} åž‹ã®ç¯„囲ã«åŽã¾ã‚‰ãªã„ã“ã¨ã‚’想定ã—㦠@code{double} 型変数 @code{b} ã¸ä»£å…¥ã—ã¦ã„ã¾ã™ã€‚ã—ã‹ã—ã€ç’°å¢ƒã«ã‚ˆã£ã¦ã¯ @code{a * a} ã®æ¼”ç®—ã¯ã„ã£ãŸã‚“ @code{float} åž‹ã¨ã—ã¦ çµæžœã‚’出ã—ãŸã‚ã¨ã« @code{double} åž‹ã«ã‚­ãƒ£ã‚¹ãƒˆã•れã€@code{b} ã¸ä»£å…¥ã•れる場åˆãŒã‚りã¾ã™ã€‚ãã®å ´åˆã€@code{a} ã®å€¤ã«ã‚ˆã£ã¦ã¯ç²¾åº¦è½ã¡ãŒèµ·ã“りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(float a) { double b = (double) (a * a); } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1067} 明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W1068} 明示的㫠double åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.14.0 @node W1067 @section W1067 @cindex W1067 @subsection メッセージ本文 明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 例ãˆã°ã‚µãƒ³ãƒ—ルコードã§ã¯ @code{float} 型変数 @code{a} ã® 2 ä¹—ã—ãŸå€¤ãŒ @code{float} åž‹ã®ç¯„囲ã«åŽã¾ã‚‰ãªã„ã“ã¨ã‚’想定ã—㦠@code{long double} 型変数 @code{b} ã¸ä»£å…¥ã—ã¦ã„ã¾ã™ã€‚ã—ã‹ã—ã€ç’°å¢ƒã«ã‚ˆã£ã¦ã¯ @code{a * a} ã®æ¼”ç®—ã¯ã„ã£ãŸã‚“ @code{float} åž‹ã¨ã—ã¦ çµæžœã‚’出ã—ãŸã‚ã¨ã« @code{long double} åž‹ã«ã‚­ãƒ£ã‚¹ãƒˆã•れã€@code{b} ã¸ä»£å…¥ã•れる場åˆãŒã‚りã¾ã™ã€‚ãã®å ´åˆã€@code{a} ã®å€¤ã«ã‚ˆã£ã¦ã¯ç²¾åº¦è½ã¡ãŒèµ·ã“りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(float a) { long double b = (long double) (a * a); } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1066} 明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W1068} 明示的㫠double åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.14.0 @node W1068 @section W1068 @cindex W1068 @subsection メッセージ本文 明示的㫠double åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 例ãˆã°ã‚µãƒ³ãƒ—ルコードã§ã¯ @code{double} 型変数 @code{a} ã® 2 ä¹—ã—ãŸå€¤ãŒ @code{double} åž‹ã®ç¯„囲ã«åŽã¾ã‚‰ãªã„ã“ã¨ã‚’想定ã—㦠@code{long double} 型変数 @code{b} ã¸ä»£å…¥ã—ã¦ã„ã¾ã™ã€‚ã—ã‹ã—ã€ç’°å¢ƒã«ã‚ˆã£ã¦ã¯ @code{a * a} ã®æ¼”ç®—ã¯ã„ã£ãŸã‚“ @code{double} åž‹ã¨ã—ã¦ çµæžœã‚’出ã—ãŸã‚ã¨ã« @code{long double} åž‹ã«ã‚­ãƒ£ã‚¹ãƒˆã•れã€@code{b} ã¸ä»£å…¥ã•れる場åˆãŒã‚りã¾ã™ã€‚ãã®å ´åˆã€@code{a} ã®å€¤ã«ã‚ˆã£ã¦ã¯ç²¾åº¦è½ã¡ãŒèµ·ã“りã¾ã™ã€‚ @subsection サンプルコード @verbatim void func(double a) { long double b = (long double) (a * a); } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W1066} 明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W1067} 明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.14.0 @node W1069 @section W1069 @cindex W1069 @subsection メッセージ本文 ã“ã® `if-else-if' æ–‡ã«ã¯ã€æœ«å°¾ã® `else' 節ãŒã‚りã¾ã›ã‚“。 @subsection 内容 @code{else} 節ãŒãªã„ã¨ã€ @code{else} 節を書ã忘れã¦ã„ã‚‹ã®ã‹ã€ @code{else} 節ãŒç™ºç”Ÿã—ãªã„ @code{if-else if} æ–‡ãªã®ã‹ãŒåˆ†ã‹ã‚‰ãšã€æ··ä¹±ã‚’æ‹›ãã¾ã™ã€‚ @subsection サンプルコード @verbatim static int func(int i) { if (i == 2) { /* W1069 */ return 0; } else if (i == 4) { return 1; } return 2; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.14.0 @node W1070 @section W1070 @cindex W1070 @subsection メッセージ本文 ã“ã® `switch' æ–‡ã«ã¯å®Ÿè¡ŒçµŒè·¯ãŒ 2 ã¤ã—ã‹ç„¡ã„ãŸã‚ã€`if-else' æ–‡ã«å¤‰æ›å¯èƒ½ã§ã™ã€‚ @subsection 内容 深刻ãªå•題ã§ã¯ã‚りã¾ã›ã‚“ãŒã€é€šå¸¸ @code{switch} 文㯠2 ã¤ä»¥ä¸Šã®åˆ†å²ãŒã‚ã‚‹ã“ã¨ãŒæƒ³å®šã•れるã®ã§ã€ @code{case} 節㌠1 ã¤ã—ã‹ãªã„ @code{switch} æ–‡ã§ã¯ã€å®Ÿè¡Œãƒ‘スã®å®šç¾©æ¼ã‚ŒãŒç–‘ã‚れã¾ã™ã€‚ @subsection サンプルコード @verbatim switch (x) { /* W1070 */ case 1: ... break; default: ... } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.14.0 @node W1071 @section W1071 @cindex W1071 @subsection メッセージ本文 関数 `%s' ã«ã¯è¤‡æ•°ã®çµ‚了点ãŒã‚りã¾ã™ã€‚ @subsection 内容 出å£ã¨ãªã‚‹ @code{return} æ–‡ãŒé–¢æ•°å†…ã«è¤‡æ•°å€‹å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim void foo(int i) /* W1071 */ { if (i == 0) { return; } } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.18.0 @node W1072 @section W1072 @cindex W1072 @subsection メッセージ本文 `goto' 文を使用ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 ファイル内㧠@code{goto} æ–‡ãŒä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim static int func(int i) { if (i == 1) { goto Label1; /* W1072 */ } goto Label2; /* W1072 */ Label1: i = 10; Label2: i = 20; return i; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.14.0 @node W1073 @section W1073 @cindex W1073 @subsection メッセージ本文 関数 `%s' ã®æˆ»ã‚Šå€¤ã‚’破棄ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 é–¢æ•°ã®æˆ»ã‚Šå€¤ãŒä½¿ç”¨ã•れã¦ã„ãªã„å ´åˆã€ãã®æˆ»ã‚Šå€¤ã¯ç„¡é§„ãªè¦ç´ ã¨ã„ãˆã¾ã™ã€‚コード中ã«ç„¡é§„ãªè¦ç´ ãŒã‚ã‚‹ã“ã¨ã§è§£æžæ€§ãŒä½Žä¸‹ã—ã¾ã™ã€‚ ã¾ãŸã€ä½¿ç”¨ã•れãªã„戻り値ãŒå¤šã„ã“ã¨ã¯ã€æˆ»ã‚Šå€¤ã®ãƒã‚§ãƒƒã‚¯ã‚‚怠ã£ã¦ã„ã‚‹ã“ã¨ãŒæŽ¨æ¸¬ã•れるãŸã‚ã€éšœå®³è¨±å®¹æ€§ãŒä½Žä¸‹ã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒé«˜ã„ã¨ã„ãˆã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int bar(void); static void foo(void) { int i; int j; for (i = 0, bar(); i < 10; i++) { /* W1073 */ j = bar(); /* OK */ } } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.16.0 @node W1074 @section W1074 @cindex W1074 @subsection メッセージ本文 `sizeof' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯å®Ÿè¡Œã•れãªã„ãŸã‚ã€å‰¯ä½œç”¨ãŒç™ºç”Ÿã—ã¾ã›ã‚“。 @subsection 内容 サンプルコードã§ç¤ºã—ãŸã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®å ´åˆã€@code{sizeof} 演算å­ã¯å¼ã‚’評価ã—ãªã„ãŸã‚ã€@code{data++} ã¯å®Ÿè¡Œã•れã¾ã›ã‚“。 従ã£ã¦ @code{data++} ãŒå®Ÿè¡Œã•れã¦ã„ã‚‹ã“ã¨ãŒå‰æã ã¨ã™ã‚‹ã¨æ§˜ã€…ãªäºˆæœŸã—ãªã„å•題ãŒèµ·ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ @subsection サンプルコード @verbatim static int foo(void) { int i = 0; if (sizeof(i++) == 4) { /* W1074 */ return 0; } else { return 1; } } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.16.0 @node W1075 @section W1075 @cindex W1075 @subsection メッセージ本文 `%s' ã¯ä»¥å‰ã«å†…部çµåˆã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ãŒã€ã“ã®å®£è¨€ã«ã¯ `static' ãŒã‚りã¾ã›ã‚“。 @subsection 内容 static 記憶域クラス指定å­ãŒæ˜Žç¤ºã•れã¦ã„ã¾ã›ã‚“。 @subsection サンプルコード @verbatim static int func(void); int func(void) /* W1075 */ { ... } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.16.0 @node W1076 @section W1076 @cindex W1076 @subsection メッセージ本文 関数 `%s' ã¯å†…部çµåˆã‚’æŒã¡ã¾ã™ãŒã€äº‹å‰ã«å†…部çµåˆã¨ã—ã¦å®£è¨€ã—ã¦ã„ã¾ã›ã‚“。 @subsection 内容 関数プロトタイプ宣言ãŒãªã„ã¾ã¾ static 記憶域クラス指定å­ä»˜ãã®é–¢æ•°ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @subsection サンプルコード @verbatim static int func(void) /* W1076 */ { return 0; } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.16.0 @node W1077 @section W1077 @cindex W1077 @subsection メッセージ本文 サイズãŒçœç•¥ã•れãŸé…列を宣言ã—ã¦ã„ã¾ã™ã€‚ @subsection 内容 ã“ã®é…列ã¯ã€ã‚µã‚¤ã‚ºãŒæ˜Žç¤ºã•れã¦ã„ã¾ã›ã‚“。 @subsection サンプルコード @verbatim extern int a[]; /* W1077 */ @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.16.0 @node W9001 @section W9001 @cindex W9001 @subsection メッセージ本文 ã“ã®æ–‡ã«ã¯åˆ¶å¾¡ãŒåˆ°é”ã—ã¾ã›ã‚“。 @subsection 内容 ã“ã®å®Ÿè¡ŒçµŒè·¯ã«è‡³ã‚‹ãŸã‚ã®åˆ†å²æ¡ä»¶ãŒå¸¸ã«å½ã¨è©•価ã•れるãŸã‚ã€ã“ã®æ–‡ã¯å®Ÿè¡Œã•れる㓠ã¨ãŒã‚りã¾ã›ã‚“。 @subsection サンプルコード @verbatim extern int all_possible_values_of_int(void); extern unsigned int zero_if_succeeded(void); void func(void) { int i = all_possible_values_of_int(); if (i < 0) { unsigned int ui = zero_if_succeeded(); if (ui > 0) { return; } /* "ui" is equal to zero at this point */ /* Always be true? No, it'll be false all the time */ if (i < ui) { return; /* W9001: Control never reaches here! */ } /* * ISO standard says; * Usual Arithmetic Conversion performed before evaluating * the expression "i < ui". * Usual Arithmetic Conversion makes "i < ui" into * "(unsigned int) i < ui" and then the value of "i" which * is less than 0 will be converted into a new value which * is greater than 0 because of the wrap-around. * So, the expression ("a value greater than 0" < 0) makes * always false. */ } } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W9002 @section W9002 @cindex W9002 @subsection メッセージ本文 ãƒ•ã‚¡ã‚¤ãƒ«ã®æœ«å°¾ã«æ”¹è¡Œæ–‡å­—ãŒã‚りã¾ã›ã‚“。 @subsection 内容 プリプロセッサã«ã‚ˆã£ã¦å‡¦ç†ã™ã‚‹è¡Œã¯ã€ã™ã¹ã¦æœ«å°¾ã«æ”¹è¡Œæ–‡å­—ãŒå¿…è¦ã§ã™ã€‚ @subsection サンプルコード ãªã—。 @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node W9003 @section W9003 @cindex W9003 @subsection メッセージ本文 暗黙的㫠`%s' åž‹ã®ã‚ªãƒ–ジェクト㌠`%s' åž‹ã®ã‚ªãƒ–ジェクトã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 変æ›å…ƒã¾ãŸã¯å¤‰æ›å…ˆã®åž‹ãŒéžæ¨™æº–åž‹ã§ã‚る暗黙的ãªå¤‰æ›ãŒç™ºç”Ÿã™ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim enum Color { RED, BLUE, GREEN }; enum Fruit { APPLE, BANANA, ORANGE }; extern void foo(enum Color); static void bar(void) { int i = RED; /* W9003 */ foo(ORANGE); /* W9003 */ } @end verbatim @subsection 関連メッセージ ãªã—。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.12.0 @node C0001 @section C0001 @cindex C0001 @subsection メッセージ本文 ã“ã®è­˜åˆ¥å `%s' ã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @subsection 内容 @ref{W0051,W0051}ã€@ref{W0052,W0052}ã€@ref{W0491,W0491}ã€@ref{W0492,W0492}〠@ref{W0703,W0703}ã€@ref{W0770,W0770}ã€@ref{W0771,W0771}ã€@ref{W0787,W0787}〠@ref{W0788,W0788}ã€@ref{W0789,W0789}ã€@ref{W0790,W0790}ã€@ref{W0791,W0791}〠@ref{W1037,W1037} メッセージã®ç›´å¾Œã«å‡ºåŠ›ã•れã€å•題ã¨ãªã‚‹è­˜åˆ¥å­ã®å¯¾ã¨ãªã‚‹è­˜åˆ¥å­ã®ä½ç½®ã‚’示ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int very_long_long_long_long_long_long_long_identifier_2 = 1; /* W0052 */ int very_long_long_long_long_long_long_long_identifier_1 = 0; /* C0001 */ @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0051} å¤–éƒ¨è­˜åˆ¥å­ `%s' ãŒä»–ã®è­˜åˆ¥å­åã¨ã€ãƒªãƒ³ã‚«ç‰¹æ€§ã§æŒ‡å®šã•ã‚ŒãŸæ–‡å­—æ•°ã®ç¯„囲内ã§åŒºåˆ¥ã§ãã¾ã›ã‚“。 @item @ref{W0052} 識別å­å `%s' ãŒä»–ã®è­˜åˆ¥å­åã¨ã€ã‚³ãƒ³ãƒ‘ã‚¤ãƒ©ç‰¹æ€§ã§æŒ‡å®šã•ã‚ŒãŸæ–‡å­—æ•°ã®ç¯„囲内ã§åŒºåˆ¥ã§ãã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node C1000 @section C1000 @cindex C1000 @subsection メッセージ本文 次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ @subsection 内容 @ref{W0093,W0093}ã€@ref{W0096,W0096}ã€@ref{W0097,W0097}ã€@ref{W0115,W0115}〠@ref{W0116,W0116}ã€@ref{W0421,W0421}ã€@ref{W0422,W0422}ã€@ref{W0423,W0423}〠@ref{W0424,W0424}ã€@ref{W0459,W0459}ã€@ref{W0460,W0460}ã€@ref{W0461,W0461}〠@ref{W0462,W0462}ã€@ref{W0568,W0568}ã€@ref{W0569,W0569}ã€@ref{W0570,W0570}〠@ref{W0607,W0607}ã€@ref{W0608,W0608}ã€@ref{W0705,W0705}ã€@ref{W0707,W0707}〠@ref{W0720,W0720}ã€@ref{W0745,W0745}ã€@ref{W1049,W1049}ã€@ref{W1050,W1050} メッセージã®ç›´å¾Œã«å‡ºåŠ›ã•れã€ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®å¾Œã«å•題を検出ã—ãŸçжæ³ã‚’補足ã™ã‚‹ãƒ¡ ッセージãŒç¶šãã“ã¨ã‚’示ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim 1: int foo(int i) 2: { 3: int j; /* C1003 */ 4: 5: if (i < 0) { /* C1001 */ 6: if (i < -10) { /* C1002 */ 7: j = 2; 8: } 9: else if (i < -5) { /* C1002 */ 10: j = 3; 11: } 12: } 13: else { 14: j = 1; 15: } 16: 17: return j; /* W0460 */ 18: } a.c:17:12:warning:c_builtin:W0460:UNC:X99:変数 `j' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ :::context:c_builtin:C1000:INF:X99:次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚ a.c:3:9:context:c_builtin:C1003:INF:X99:ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚ a.c:5:11:context:c_builtin:C1001:INF:X99:ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ a.c:6:15:context:c_builtin:C1002:INF:X99:ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ a.c:9:20:context:c_builtin:C1002:INF:X99:ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @end verbatim @subsection 関連メッセージ @itemize @item @ref{C1001} ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1002} ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @item @ref{C1003} ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @item @ref{C1004} ã“ã“ã§è©²å½“変数㫠NULL ã®å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @item @ref{C1005} ã“ã“ã§è©²å½“変数㫠NULL ã®å¯èƒ½æ€§ãŒã‚る値を割り当ã¦ã¾ã—ãŸã€‚ @item @ref{C1006} ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2.0 @node C1001 @section C1001 @cindex C1001 @subsection メッセージ本文 ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @subsection 内容 @ref{W0093,W0093}ã€@ref{W0096,W0096}ã€@ref{W0097,W0097}ã€@ref{W0115,W0115}〠@ref{W0116,W0116}ã€@ref{W0421,W0421}ã€@ref{W0422,W0422}ã€@ref{W0423,W0423}〠@ref{W0424,W0424}ã€@ref{W0459,W0459}ã€@ref{W0460,W0460}ã€@ref{W0461,W0461}〠@ref{W0462,W0462}ã€@ref{W0568,W0568}ã€@ref{W0569,W0569}ã€@ref{W0570,W0570}〠@ref{W0607,W0607}ã€@ref{W0608,W0608}ã€@ref{W0705,W0705}ã€@ref{W0707,W0707}〠@ref{W0720,W0720}ã€@ref{W0745,W0745}ã€@ref{W1049,W1049}ã€@ref{W1050,W1050} メッセージを検出ã—ãŸçжæ³ã¨ã—ã¦ã€è©²å½“制御å¼ã‚’真ã¨è©•価ã—ãŸã“ã¨ã‚’示ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int foo(int i) { int j; /* C1003 */ if (i < 0) { /* C1001 */ if (i < -10) { /* C1002 */ j = 2; } else if (i < -5) { /* C1002 */ j = 3; } } else { j = 1; } return j; /* W0460 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0093} ゼロã§é™¤ç®—ã•れるæã‚ŒãŒã‚りã¾ã™ã€‚ @item @ref{W0096} ゼロã«ãªã‚‹å®šæ•°å¼ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0097} ゼロã®å€¤ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0115} 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã¾ã™ã€‚ @item @ref{W0116} 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã‚‹æã‚ŒãŒã‚りã¾ã™ã€‚ @item @ref{W0421} 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0422} 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0423} 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0424} 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0459} 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @item @ref{W0460} 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W0461} 値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @item @ref{W0462} 値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0568} 符å·ä»˜ã定数å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0569} 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0570} 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W0607} 値ãŒè² ã«ãªã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0608} 値ãŒè² ã«ãªã‚‹ã“ã¨ãŒã‚りã†ã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0705} é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W0707} é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™å®šæ•°ã§ã™ã€‚ @item @ref{W0720} æµ®å‹•å°æ•°ç‚¹åž‹ã®å€¤ãŒå¤‰æ›å…ˆã®åž‹ã®ç¯„囲ã«å…¥ã‚Šãりã¾ã›ã‚“。 @item @ref{W0745} é…åˆ—ã®æ·»å­—ãŒã€é ˜åŸŸå¤–を指ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W1049} ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W1050} ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2.0 @node C1002 @section C1002 @cindex C1002 @subsection メッセージ本文 ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚ @subsection 内容 @ref{W0093,W0093}ã€@ref{W0096,W0096}ã€@ref{W0097,W0097}ã€@ref{W0115,W0115}〠@ref{W0116,W0116}ã€@ref{W0421,W0421}ã€@ref{W0422,W0422}ã€@ref{W0423,W0423}〠@ref{W0424,W0424}ã€@ref{W0459,W0459}ã€@ref{W0460,W0460}ã€@ref{W0461,W0461}〠@ref{W0462,W0462}ã€@ref{W0568,W0568}ã€@ref{W0569,W0569}ã€@ref{W0570,W0570}〠@ref{W0607,W0607}ã€@ref{W0608,W0608}ã€@ref{W0705,W0705}ã€@ref{W0707,W0707}〠@ref{W0720,W0720}ã€@ref{W0745,W0745}ã€@ref{W1049,W1049}ã€@ref{W1050,W1050} メッセージを検出ã—ãŸçжæ³ã¨ã—ã¦ã€è©²å½“制御å¼ã‚’å½ã¨è©•価ã—ãŸã“ã¨ã‚’示ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int foo(int i) { int j; /* C1003 */ if (i < 0) { /* C1001 */ if (i < -10) { /* C1002 */ j = 2; } else if (i < -5) { /* C1002 */ j = 3; } } else { j = 1; } return j; /* W0460 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0093} ゼロã§é™¤ç®—ã•れるæã‚ŒãŒã‚りã¾ã™ã€‚ @item @ref{W0096} ゼロã«ãªã‚‹å®šæ•°å¼ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0097} ゼロã®å€¤ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0115} 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã¾ã™ã€‚ @item @ref{W0116} 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã‚‹æã‚ŒãŒã‚りã¾ã™ã€‚ @item @ref{W0421} 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0422} 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0423} 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0424} 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0459} 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @item @ref{W0460} 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W0461} 値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @item @ref{W0462} 値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0568} 符å·ä»˜ã定数å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0569} 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0570} 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W0607} 値ãŒè² ã«ãªã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0608} 値ãŒè² ã«ãªã‚‹ã“ã¨ãŒã‚りã†ã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0705} é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W0707} é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™å®šæ•°ã§ã™ã€‚ @item @ref{W0720} æµ®å‹•å°æ•°ç‚¹åž‹ã®å€¤ãŒå¤‰æ›å…ˆã®åž‹ã®ç¯„囲ã«å…¥ã‚Šãりã¾ã›ã‚“。 @item @ref{W0745} é…åˆ—ã®æ·»å­—ãŒã€é ˜åŸŸå¤–を指ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W1049} ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W1050} ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2.0 @node C1003 @section C1003 @cindex C1003 @subsection メッセージ本文 ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚ @subsection 内容 @ref{W0459,W0459}ã€@ref{W0460,W0460}ã€@ref{W0461,W0461}ã€@ref{W0462,W0462} メッセージを検出ã—ãŸçжæ³ã¨ã—ã¦ã€ã©ã®ä½ç½®ã§è©²å½“変数を定義ã—ãŸã‹ã‚’示ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int foo(int i) { int j; /* C1003 */ if (i < 0) { /* C1001 */ if (i < -10) { /* C1002 */ j = 2; } else if (i < -5) { /* C1002 */ j = 3; } } else { j = 1; } return j; /* W0460 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0459} 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @item @ref{W0460} 変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W0461} 値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚ @item @ref{W0462} 値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2.0 @node C1004 @section C1004 @cindex C1004 @subsection メッセージ本文 ã“ã“ã§è©²å½“変数㫠NULL ã®å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @subsection 内容 @ref{W0421,W0421}ã€@ref{W0422,W0422}ã€@ref{W0423,W0423}ã€@ref{W0424,W0424} メッセージを検出ã—ãŸçжæ³ã¨ã—ã¦ã€ã©ã®ä½ç½®ã§è©²å½“変数㫠NULL を割り当ã¦ãŸã‹ã‚’示㗠ã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int *bar(void); extern int *baz(void); void foo(int i) { int *p = NULL; /* C1004 */ if (i < 0) { /* C1002 */ p = bar(); if (!p) { return; } } else { p = baz(); /* C1005 */ } *p += 2; /* W0422 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0421} 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0422} 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0423} 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0424} 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2.0 @node C1005 @section C1005 @cindex C1005 @subsection メッセージ本文 ã“ã“ã§è©²å½“変数㫠NULL ã®å¯èƒ½æ€§ãŒã‚る値を割り当ã¦ã¾ã—ãŸã€‚ @subsection 内容 @ref{W0421,W0421}ã€@ref{W0422,W0422}ã€@ref{W0423,W0423}ã€@ref{W0424,W0424} メッセージを検出ã—ãŸçжæ³ã¨ã—ã¦ã€ã©ã®ä½ç½®ã§è©²å½“変数㫠NULL ã¨ãªã‚Šå¾—る値を割り当 ã¦ãŸã‹ã‚’示ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int *bar(void); extern int *baz(void); void foo(int i) { int *p = NULL; /* C1004 */ if (i < 0) { /* C1002 */ p = bar(); if (!p) { return; } } else { p = baz(); /* C1005 */ } *p += 2; /* W0422 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0421} 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0422} 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ @item @ref{W0423} 値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚ @item @ref{W0424} 値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚ @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2.0 @node C1006 @section C1006 @cindex C1006 @subsection メッセージ本文 ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚ @subsection 内容 @ref{W0093,W0093}ã€@ref{W0096,W0096}ã€@ref{W0097,W0097}ã€@ref{W0115,W0115}〠@ref{W0116,W0116}ã€@ref{W0568,W0568}ã€@ref{W0569,W0569}ã€@ref{W0570,W0570}〠@ref{W0607,W0607}ã€@ref{W0608,W0608}ã€@ref{W0705,W0705}ã€@ref{W0707,W0707}〠@ref{W0720,W0720}ã€@ref{W0745,W0745}ã€@ref{W1049,W1049}ã€@ref{W1050,W1050} メッセージを検出ã—ãŸçжæ³ã¨ã—ã¦ã€ã©ã®ä½ç½®ã§è©²å½“変数ã«å•題ã®å€¤ã‚’割り当ã¦ãŸã‹ã‚’示 ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int foo(int i) { int j = 0; /* C1006 */ if (i < 0) { /* C1002 */ j = -i; } else if (i > 0) { /* C1002 */ j = i; } return 5 / j; /* W0093 */ } @end verbatim @subsection 関連メッセージ @itemize @item @ref{W0093} ゼロã§é™¤ç®—ã•れるæã‚ŒãŒã‚りã¾ã™ã€‚ @item @ref{W0096} ゼロã«ãªã‚‹å®šæ•°å¼ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0097} ゼロã®å€¤ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W0115} 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã¾ã™ã€‚ @item @ref{W0116} 符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã‚‹æã‚ŒãŒã‚りã¾ã™ã€‚ @item @ref{W0568} 符å·ä»˜ã定数å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0569} 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚ @item @ref{W0570} 符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W0607} 値ãŒè² ã«ãªã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0608} 値ãŒè² ã«ãªã‚‹ã“ã¨ãŒã‚りã†ã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚ @item @ref{W0705} é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W0707} é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™å®šæ•°ã§ã™ã€‚ @item @ref{W0720} æµ®å‹•å°æ•°ç‚¹åž‹ã®å€¤ãŒå¤‰æ›å…ˆã®åž‹ã®ç¯„囲ã«å…¥ã‚Šãりã¾ã›ã‚“。 @item @ref{W0745} é…åˆ—ã®æ·»å­—ãŒã€é ˜åŸŸå¤–を指ã—ã¦ã„ã¾ã™ã€‚ @item @ref{W1049} ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ @item @ref{W1050} ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。 @end itemize @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2.0 @node Metrics @chapter メトリクス一覧 @menu * FL_STMT::ãƒ•ã‚¡ã‚¤ãƒ«å†…ã®æ–‡ã®æ•° * FL_FUNC::ファイル内ã®é–¢æ•°å®šç¾©ã®æ•° * FN_STMT::é–¢æ•°å†…ã®æ–‡ã®æ•° * FN_UNRC::関数内ã®åˆ¶å¾¡ãŒåˆ°é”ã—ãªã„æ–‡ã®æ•° * FN_LINE::関数内ã®ä¿å®ˆã‚³ãƒ¼ãƒ‰è¡Œæ•° * FN_PARA::関数ã®ä»®å¼•æ•°ã®æ•° * FN_UNUV::é–¢æ•°å†…ã®æœªä½¿ç”¨ãŠã‚ˆã³å†ä½¿ç”¨ã•れãªã„å¤‰æ•°ã®æ•° * FN_CSUB::関数内ã®å­é–¢æ•°ã‚³ãƒ¼ãƒ«ã®æ•° * FN_CALL::ä»–ã®é–¢æ•°ã‹ã‚‰è¢«å‘¼ã³å‡ºã—箇所数 * FN_GOTO::関数内㮠@code{goto} æ–‡ã®æ•° * FN_RETN::é–¢æ•°å†…ã®æˆ»ã‚Šç‚¹ã®æ•° * FN_UELS::関数内ã®å®Œçµã—ã¦ã„ãªã„ @code{if} æ–‡ã®æ•° * FN_NEST::関数内ã®ãƒã‚¹ãƒ†ã‚£ãƒ³ã‚°ã®æœ€æ·±æ®µæ•° * FN_PATH::é–¢æ•°å†…ã®æŽ¨å®šé™çš„パス数 * FN_CYCM::関数ã®çµŒè·¯è¤‡é›‘度 @end menu @node FL_STMT @section FL_STMT @cindex FL_STMT @subsection メトリックå ãƒ•ã‚¡ã‚¤ãƒ«å†…ã®æ–‡ã®æ•° @subsection 内容 ファイル内ã«è¨€èªžã®æ§‹æ–‡è¦å‰‡ã¨ã—ã¦ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆ(æ–‡)ã¨èªè­˜ã•れるもã®ã®æ•°ã‚’示ã—ã¾ ã™ã€‚ @subsection サンプルコード @verbatim int foo(int a) { int i = 0; /* A declaration is not a statement */ if (a > 0) { /* An if-else-statement makes FL_STMT += 1 */ i = a + 1; /* An expression-statement makes FL_STMT += 1 */ } else { ; /* An empty expression-statement makes FL_STMT += 1 */ } return i; /* A jump-statement makes FL_STMT += 1 */ } /* Now, FL_STMT == 4 */ void bar(int a) { struct { /* A declaration is not a statement */ int i; } s; /* A for-statement which has 2 expression-statements (`s.i=0;' and `s.i 0) { /* An if-else-statement makes foo's FN_STMT += 1 */ i = a + 1; /* An expression-statement makes foo's FN_STMT += 1 */ } else { ; /* An empty expression-statement makes foo's FN_STMT += 1 */ } return i; /* A jump-statement makes foo's FN_STMT += 1 */ /* foo's FN_STMT == 4 */ } void bar(int a) { struct { /* A declaration is not a statement */ int i; } s; /* A for-statement which has 2 expression-statements (`s.i=0;' and * `s.i int foo(int i) { unsigned int ui; if (i < 0) { switch (i) { case -3: ui = 0; break; /* Control never reaches to this "case 3:" clause because "i" is less than 0 at this point */ case 3: /* This label is part of an unreachable labeled-statement, but it makes foo's FN_UNRC += 1 */ ui = 1; /* An unreachable labeled expression-statement makes FN_UNRC += 1 */ break; /* An unreachable jump-statement makes FN_UNRC += 1 */ default: ui = 0; } /* "ui" is equal to 0 at this point */ /* * The usual-arithmetic-conversion makes "i < ui" into "(unsigned int) i < ui". * Then, the value of "i" which is less than 0 will be converted into the new value which is greater than 0 * because of the wrap-around. * So, "(value which is greater than 0) < 0" makes false at all times. */ if (i < ui) { exit(0); /* An unreachable expression-statement makes FN_UNRC += 1 */ } } else { /* "i" is greater than or equal to 0 at this point */ abort(); /* The abort() standard function terminates this execution path */ } /* "i" is less than 0 at this point */ if (i == 3) { /* "(value which is less than 0) == 3" makes false at all times */ return -1; /* An unreachable jump-statement makes FN_UNRC += 1 */ } return 0; /* foo's FN_UNRC == 5 */ } @end verbatim @example MET,FN_UNRC,foo,int foo(int),test.c,3,5,5 @end example @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node FN_LINE @section FN_LINE @cindex FN_LINE @subsection メトリックå 関数内ã®ä¿å®ˆã‚³ãƒ¼ãƒ‰è¡Œæ•° @subsection 内容 関数定義ã®é–‹å§‹è¡Œã‹ã‚‰é–¢æ•°å®šç¾©ã®çµ‚了行ã¾ã§ã®ç‰©ç†è¡Œæ•°ã‚’示ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int foo(void) /* foo's function definition starts here */ { return 0; } /* foo's function definition ends here */ /* foo's FN_LINE == 3 */ int bar /* bar's function definition starts here */ (void) { return 0; } /* bar's function definition ends here */ /* bar's FN_LINE == 5 */ int baz /* baz's old style function definition starts here */ (a) int a; { return 0; } /* baz's old style function definition ends here */ /* baz's FN_LINE == 6 */ @end verbatim @example MET,FN_LINE,foo,int foo(void),test.c,1,5,3 MET,FN_LINE,bar,int bar(void),test.c,8,1,5 MET,FN_LINE,baz,int baz(int),test.c,17,1,6 @end example @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node FN_PARA @section FN_PARA @cindex FN_PARA @subsection メトリックå 関数ã®ä»®å¼•æ•°ã®æ•° @subsection 内容 関数定義ã®å¼•数リスト内ã«å®£è¨€ã•れãŸä»®å¼•æ•°ã®æ•°ã‚’示ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int foo(int a, long b, char *p) { return 0; } /* foo's FN_PARA == 3 */ int bar(a, b, p) /* An old style function definition */ long b; /* A type-specifier of "a" is omitted */ char *p; { return 0; } /* bar's FN_PARA == 3 */ @end verbatim @example MET,FN_PARA,foo,"int foo(int,long,char *)",test.c,1,5,3 MET,FN_PARA,bar,"int bar(int,long,char *)",test.c,6,5,3 @end example @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node FN_UNUV @section FN_UNUV @cindex FN_UNUV @subsection メトリックå é–¢æ•°å†…ã®æœªä½¿ç”¨ãŠã‚ˆã³å†ä½¿ç”¨ã•れãªã„å¤‰æ•°ã®æ•° @subsection 内容 使用ã•れãªã„ã«ã‚‚é–¢ã‚らãšå®£è¨€ã•れã¦ã„る変数ã€ãŠã‚ˆã³ã€å€¤ã‚’割り当ã¦ãŸå¾Œã«ä½¿ç”¨ã•れ ãªã„å¤‰æ•°ã®æ•°ã‚’示ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void foo(int i, int j) /* A useless declaration of "j" makes FN_UNUV += 1 */ { int a; int b; int c = 0; /* A useless declaration of "c" makes FN_UNUV += 1 */ if (i < 0) { a = -i; } else { a = i; } b = a * 2; /* A useless assignment to "b" makes FN_UNUV += 1 */ printf("%d\n", a); /* foo's FN_UNUV == 3 */ } @end verbatim @example MET,FN_UNUV,foo,"void foo(int,int)",test.c,1,6,3 @end example @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node FN_CSUB @section FN_CSUB @cindex FN_CSUB @subsection メトリックå 関数内ã®å­é–¢æ•°ã‚³ãƒ¼ãƒ«ã®æ•° @subsection 内容 関数内ã«ã¦ä»–ã®é–¢æ•°ã‚’呼ã³å‡ºã™ç®‡æ‰€æ•°ã‚’示ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim extern int foo(int); static int bar(int); int baz(int i) { int j = foo(i); /* A function-call-expression makes baz's FN_CSUB += 1 */ return foo(bar(j)); /* 2 function-call-expressions makes baz's FN_CSUB += 2 */ /* baz's FN_CSUB == 3 */ } @end verbatim @example MET,FN_CSUB,baz,int baz(int),test.c,5,5,3 @end example @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node FN_CALL @section FN_CALL @cindex FN_CALL @subsection メトリックå ä»–ã®é–¢æ•°ã‹ã‚‰è¢«å‘¼ã³å‡ºã—箇所数 @subsection 内容 該当ã™ã‚‹é–¢æ•°ãŒãƒ—ロジェクト中ã®ä»–ã®é–¢æ•°ã‹ã‚‰å‘¼ã³å‡ºã•れる箇所数を示ã—ã¾ã™ã€‚ @subsection サンプルコード @file{test1.c} @verbatim int foo(int i) { return i + 1; } int bar(int i) { return foo(i) + 1; /* A function-call-expression makes foo's FN_CALL += 1 */ } @end verbatim @file{test2.c} @verbatim extern int bar(int); static void baz(void) { int i = bar(0); /* A function-call-expression makes bar's FN_CALL += 1 and foo's FN_CALL += 1 */ } @end verbatim @file{project-name.met.csv} @example MET,FN_CALL,foo,int foo(int),test1.c,1,5,2 MET,FN_CALL,bar,int bar(int),test1.c,3,5,1 MET,FN_CALL,baz,void baz(void),test2.c,3,13,0 @end example @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node FN_GOTO @section FN_GOTO @cindex FN_GOTO @subsection メトリックå 関数内㮠@code{goto} æ–‡ã®æ•° @subsection 内容 関数内ã«è¨˜ã•れ㟠@code{goto} æ–‡ã®æ•°ã‚’示ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim int foo(int i) { switch (i) { case 0: goto ZERO; /* A goto-statement makes foo's FN_GOTO += 1 */ case 1: goto ONE; /* A goto-statement makes foo's FN_GOTO += 1 */ default: return 0; } ZERO: return 1; ONE: return 2; /* foo's FN_GOTO == 2 */ } @end verbatim @example MET,FN_GOTO,foo,int foo(int),test.c,1,5,2 @end example @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node FN_RETN @section FN_RETN @cindex FN_RETN @subsection メトリックå é–¢æ•°å†…ã®æˆ»ã‚Šç‚¹ã®æ•° @subsection 内容 実行ã•れる @code{return} æ–‡ã®æ•°ã€ãŠã‚ˆã³ã€é–¢æ•°æœ«å°¾ã«ã‚る暗黙㮠@code{return} æ–‡ ã®æ•°ã‚’示ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void foo(int i) { if (i < 0) { return; /* A return-statement makes foo's FN_RETN += 1 */ } if (i >= 10) { return; /* A return-statement makes foo's FN_RETN += 1 */ } else { for (; i < 10; i++) { printf("%d\n", i); } } /* An implicit return from the function whose return type is void makes foo's FN_RETN * += 1 */ /* foo's FN_RETN == 3 */ } int bar(int i) { if (i < 0) { return -1; /* A return-statement makes bar's FN_RETN += 1 */ } if (i >= 10) { return -1; /* A return-statement makes bar's FN_RETN += 1 */ } else { for (; i < 10; i++) { printf("%d\n", i); } } return 0; /* A return-statement makes bar's FN_RETN += 1 */ /* bar's FN_RETN == 3 */ } @end verbatim @example MET,FN_RETN,foo,void foo(int),test.c,1,6,3 MET,FN_RETN,bar,int bar(int),test.c,20,5,3 @end example @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node FN_UELS @section FN_UELS @cindex FN_UELS @subsection メトリックå 関数内ã®å®Œçµã—ã¦ã„ãªã„ @code{if-else} æ–‡ã®æ•° @subsection 内容 関数内㮠@code{if-else} æ–‡ã§ã€æ˜Žç¤ºçš„㪠@code{else} 節をæŒãŸãªã„ã‚‚ã®ã®æ•°ã‚’示ã—ã¾ ã™ã€‚ @subsection サンプルコード @verbatim int foo(int i) { int j; if (i < 0) { return -1; } else { j = i + 1; } if (j % 2) { return -1; } /* A standalone if-statement does nothing to the FN_UELS metric */ if (i == 2) { return 0; } else if (i == 4) { return 1; } /* An implicit else clause makes foo's FN_UELS += 1 */ return 5; /* foo's FN_UELS == 1 */ } @end verbatim @example MET,FN_UELS,foo,int foo(int),test.c,1,5,1 @end example @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node FN_NEST @section FN_NEST @cindex FN_NEST @subsection メトリックå 関数内ã®ãƒã‚¹ãƒ†ã‚£ãƒ³ã‚°ã®æœ€æ·±æ®µæ•° @subsection 内容 関数内ã§åˆ¶å¾¡æ§‹é€ ã®ãƒã‚¹ãƒˆãŒä¸€ç•ªæ·±ã„部分ã®ãƒã‚¹ãƒˆæ®µæ•°ã‚’示ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim void foo(int i) { /* Nesting level == 0 */ if (i < 0) { /* Nesting level == 1 */ switch (i) { /* Nesting level == 2 */ case -1: return; case -2: puts("A\n"); break; } /* Nesting level == 1 */ } else { /* Nesting level == 1 */ int j; int k; for (j = 0; j < i; j++) { /* Nesting level == 2 */ for (k = 0; k < 10; k++) { /* Nesting level == 3 */ if (j == k) { /* Nesting level == 4 */ puts("B\n"); } } } } /* foo's FN_NEST == 4 */ } @end verbatim @example MET,FN_NEST,foo,void foo(int),test.c,1,6,4 @end example @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node FN_PATH @section FN_PATH @cindex FN_PATH @subsection メトリックå é–¢æ•°å†…ã®æŽ¨å®šé™çš„パス数 @subsection 内容 関数ã®åˆ¶å¾¡ãƒ•ロー内ã§è€ƒãˆã‚‰ã‚Œã‚‹ã™ã¹ã¦ã®å®Ÿè¡ŒçµŒè·¯ã®æ•°ã‚’示ã—ã¾ã™ã€‚ @subsection サンプルコード @verbatim static int foo(int i) { /* A */ if (i == 0) { /* B */ i = 0; } else { /* C */ i = 1; } /* D */ return i; /* Possible execute paths A->B->D and A->C->D makes foo's FN_PATH = 2 */ } static int bar(int i) { /* A */ if (i == 0) { /* B */ i = 0; } /* C */ if (i == 1) { /* D */ i = 1; } /* E */ if (i == 2) { /* F */ i = 2; } /* G */ return i; /* Possible execute paths A->B->C->D->E->F->G, A->B->C->D->E->G, A->B->C->E->F->G, A->B->C->E->G, A->C->D->E->F->G, A->C->D->E->G, A->C->E->F->G, A->C->E->G makes bar's FN_PATH = 8 */ } static int baz(int i) { /* A */ switch (i) { case 0: /* B */ if (rand()) { /* C */ i = 0; } else { /* D */ i = 0; } /* E */ i = 0; break; default: /* F */ if (rand()) { /* G */ i = 1; } else { /* H */ i = 1; } /* I */ i = 1; break; } /* J */ return i; /* Possible execute paths A->B->C->E->J, A->B->D->E->J, A->F->G->I->J, A->F->H->I->J makes baz's FN_PATH = 4 */ } static int qux(int i) { /* A */ while (i < 5) { /* B */ if (i == 0) { /* C */ return 0; } /* D */ if (i == 1) { /* E */ return 1; } } /* F */ if (i == 2) { /* G */ return 2; } /* H */ return 3; /* Possible execute paths A->B->C, A->B->D->E, A->B->D->F->G, A->B->D->F->H, A->F->G, A->F->H makes qux's FN_PATH = 6 */ } @end verbatim @example MET,FN_PATH,foo,int foo(int),test.c,1,12,2 MET,FN_PATH,bar,int bar(int),test.c,18,12,8 MET,FN_PATH,baz,int baz(int),test.c,42,12,4 MET,FN_PATH,qux,int qux(int),test.c,80,12,6 @end example @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node FN_CYCM @section FN_CYCM @cindex FN_CYCM @subsection メトリックå 関数ã®çµŒè·¯è¤‡é›‘度 @subsection 内容 McCabe(マッケーブ)ã®æå”±ã—ãŸãƒ¡ãƒˆãƒªãƒƒã‚¯ã§ã€ãƒ—ログラムを構æˆã™ã‚‹ç·šä¸Šã«ã‚る独立㗠ãŸãƒ‘ã‚¹ã®æ•°ã‚’示ã—ã¾ã™ã€‚ 計算å¼ã€Œ@verb{.制御フローグラフã®ã‚¨ãƒƒã‚¸æ•° - ノード数 + 2.}ã€ã§ç®—出ã—ã€é–¢æ•°ä¸­ã®åˆ† å²ã®æ•°ã« 1 ã‚’è¶³ã—ãŸã‚‚ã®ã«ç­‰ã—ããªã‚Šã¾ã™ã€‚ @subsection サンプルコード @verbatim static int foo(int i) { if (i == 0) { /* Complexity += 1 */ i = 0; } else { /* An else branch does not grow the complexity */ i = 1; } return i; /* foo's FN_CYCM == 2 */ } static int bar(int i) { if (i == 0) { /* Complexity += 1 */ i = 0; } if (i == 1) { /* Complexity += 1 */ i = 1; } if (i == 2) { /* Complexity += 1 */ i = 2; } return i; /* bar's FN_CYCM == 4 */ } static int baz(int i) { switch (i) { case 0: /* Complexity += 1 */ if (rand()) { /* Complexity += 1 */ i = 0; } else { /* An else branch does not grow the complexity */ i = 0; } i = 0; break; default: /* A default clause does not grow the complexity */ if (rand()) { /* Complexity += 1 */ i = 1; } else { /* An else branch does not grow the complexity */ i = 1; } i = 1; break; } return i; /* baz's FN_CYCM == 4 */ } static int qux(int i) { while (i < 5) { /* An iteration does not grow the complexity */ if (i == 0) { /* Complexity += 1 */ return 0; } if (i == 1) { /* Complexity += 1 */ return 1; } } if (i == 2) { /* Complexity += 1 */ return 2; } return 3; /* qux's FN_CYCM == 4 */ } @end verbatim @example MET,FN_CYCM,foo,int foo(int),test.c,1,12,2 MET,FN_CYCM,bar,int bar(int),test.c,13,12,4 MET,FN_CYCM,baz,int baz(int),test.c,28,12,4 MET,FN_CYCM,qux,int qux(int),test.c,54,12,4 @end example @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node CodeStructures @chapter コード情報一覧 @menu * VER::ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ¬ã‚³ãƒ¼ãƒ‰ * DCL(T)::型宣言レコード * DCL(V)::外部変数宣言レコード * DCL(F)::関数宣言レコード * DEF(V)::変数定義レコード * DEF(F)::関数定義レコード * DEF(M)::マクロ定義レコード * DEF(L)::ラベル定義レコード * INI::åˆæœŸåŒ–レコード * ASN::代入å¼ãƒ¬ã‚³ãƒ¼ãƒ‰ * DEP(I)::インクルードレコード * DEP(C)::呼ã³å‡ºã—レコード * DEP(X)::外部å‚照レコード * LIT::リテラルレコード * PRE::プリプロセスレコード @end menu @node VER @section VER @cindex VER @subsection コード情報å ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ¬ã‚³ãƒ¼ãƒ‰ @subsection 内容 è§£æžã«ä½¿ç”¨ã—㟠AdLint ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚„ã€å®Ÿè¡Œæ—¥æ™‚を記録ã—ã¾ã™ã€‚ @subsection サンプルコード @ref{Output_Metrics_Ver_Sample, ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ¬ã‚³ãƒ¼ãƒ‰ã®å‡ºåЛ例}ã‚’å‚照。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node DCL(T) @section DCL(T) @cindex DCL(T) @subsection コード情報å 型宣言レコード @subsection 内容 @code{typedef}ã€@code{struct}ã€@code{union}ã€@code{enum} ã«ã‚ˆã‚‹åž‹å®£è¨€ã«ã¤ã„ã¦ã€ 宣言ä½ç½®ã€åž‹ã®ç¨®åˆ¥ã€åž‹åãªã©ã‚’出力ã—ã¾ã™ã€‚ @subsection サンプルコード @ref{Output_Metrics_Dcl_Sample, 宣言レコードã®å‡ºåЛ例}ã‚’å‚照。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node DCL(V) @section DCL(V) @cindex DCL(V) @subsection コード情報å 外部変数宣言レコード @subsection 内容 外部リンケージをæŒã¤ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã®å®£è¨€ã«ã¤ã„ã¦ã€å®£è¨€ä½ç½®ã€å¤‰æ•°åã€å¤‰æ•°åž‹ã‚’出 力ã—ã¾ã™ã€‚ @subsection サンプルコード @ref{Output_Metrics_Dcl_Sample, 宣言レコードã®å‡ºåЛ例}ã‚’å‚照。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node DCL(F) @section DCL(F) @cindex DCL(F) @subsection コード情報å 関数宣言レコード @subsection 内容 外部リンケージをæŒã¤é–¢æ•°å®£è¨€ã«ã¤ã„ã¦ã€å®£è¨€ä½ç½®ã€é–¢æ•°åã€é–¢æ•°ã‚·ã‚°ãƒ‹ãƒãƒ£æƒ…報を出 力ã—ã¾ã™ã€‚ @subsection サンプルコード @ref{Output_Metrics_Dcl_Sample, 宣言レコードã®å‡ºåЛ例}ã‚’å‚照。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node DEF(V) @section DEF(V) @cindex DEF(V) @subsection コード情報å 変数定義レコード @subsection 内容 関数ã®ä»®å¼•æ•°ã‚’å«ã‚€å…¨ã¦ã®å¤‰æ•°å®šç¾©ã«ã¤ã„ã¦ã€å®šç¾©ä½ç½®ã€å¤‰æ•°åã€å¤‰æ•°åž‹ãªã©ã‚’出力㗠ã¾ã™ã€‚ @subsection サンプルコード @ref{Output_Metrics_Def_Sample, 定義レコードã®å‡ºåЛ例}ã‚’å‚照。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node DEF(F) @section DEF(F) @cindex DEF(F) @subsection コード情報å 関数定義レコード @subsection 内容 å…¨ã¦ã®é–¢æ•°å®šç¾©ã«ã¤ã„ã¦ã€å®šç¾©ä½ç½®ã€é–¢æ•°åã€é–¢æ•°ã‚·ã‚°ãƒ‹ãƒãƒ£ãªã©ã‚’出力ã—ã¾ã™ã€‚ @subsection サンプルコード @ref{Output_Metrics_Def_Sample, 定義レコードã®å‡ºåЛ例}ã‚’å‚照。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node DEF(M) @section DEF(M) @cindex DEF(M) @subsection コード情報å マクロ定義レコード @subsection 内容 ã™ã¹ã¦ã®ãƒžã‚¯ãƒ­å®šç¾©ã«ã¤ã„ã¦ã€å®šç¾©ä½ç½®ã€ãƒžã‚¯ãƒ­åã€ãƒžã‚¯ãƒ­ã®ç¨®åˆ¥ã‚’出力ã—ã¾ã™ã€‚ @subsection サンプルコード @ref{Output_Metrics_Def_Sample, 定義レコードã®å‡ºåЛ例}ã‚’å‚照。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node DEF(L) @section DEF(L) @cindex DEF(L) @subsection コード情報å ラベル定義レコード @subsection 内容 関数内ã®å…¨ã¦ã®ãƒ©ãƒ™ãƒ«ã«ã¤ã„ã¦ã€å®šç¾©ä½ç½®ã€ãƒ©ãƒ™ãƒ«åを出力ã—ã¾ã™ã€‚ @subsection サンプルコード @ref{Output_Metrics_Def_Sample, 定義レコードã®å‡ºåЛ例}ã‚’å‚照。 @cindex INI @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node INI @section INI @subsection コード情報å åˆæœŸåŒ–レコード @subsection 内容 変数定義時ã®åˆæœŸåŒ–ã«ã¤ã„ã¦ã€åˆæœŸåŒ–ä½ç½®ã€åˆæœŸåŒ–ã™ã‚‹å¤‰æ•°åã€åˆæœŸå€¤ã‚’出力ã—ã¾ã™ã€‚ @subsection サンプルコード @ref{Output_Metrics_Ini_Sample, åˆæœŸåŒ–レコードã®å‡ºåЛ例}ã‚’å‚照。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node ASN @section ASN @cindex ASN @subsection コード情報å 代入å¼ãƒ¬ã‚³ãƒ¼ãƒ‰ @subsection 内容 変数ã¸ã®ä»£å…¥å¼ã«ã¤ã„ã¦ã€ä»£å…¥å¼ã®ä½ç½®ã€ä»£å…¥ã™ã‚‹å¤‰æ•°åã€ä»£å…¥å€¤ã‚’出力ã—ã¾ã™ã€‚ @subsection サンプルコード @ref{Output_Metrics_Asn_Sample, 代入å¼ãƒ¬ã‚³ãƒ¼ãƒ‰ã®å‡ºåЛ例}ã‚’å‚照。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node DEP(I) @section DEP(I) @cindex DEP(I) @subsection コード情報å インクルードレコード @subsection 内容 @code{#include} ディレクティブã§ä»–ã®ãƒ•ァイルをインクルードã—ãŸå ´åˆã«ã€ @code{#include} ディレクティブã®ä½ç½®ã€ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã™ã‚‹ãƒ•ァイルã®ãƒ‘スåを出力㗠ã¾ã™ã€‚ @subsection サンプルコード @ref{Output_Metrics_Dep_Sample, ä¾å­˜ãƒ¬ã‚³ãƒ¼ãƒ‰ã®å‡ºåЛ例}ã‚’å‚照。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node DEP(C) @section DEP(C) @cindex DEP(C) @subsection コード情報å 呼ã³å‡ºã—レコード @subsection 内容 関数ã‹ã‚‰ä»–ã®é–¢æ•°ã‚’呼ã³å‡ºã—ãŸå ´åˆã€å‘¼ã³å‡ºã—ä½ç½®ã€å‘¼ã³å‡ºã—å…ƒã®é–¢æ•°åã€å‘¼ã³å‡ºã—å…ˆ ã®é–¢æ•°åãªã©ã‚’出力ã—ã¾ã™ã€‚ @subsection サンプルコード @ref{Output_Metrics_Dep_Sample, ä¾å­˜ãƒ¬ã‚³ãƒ¼ãƒ‰ã®å‡ºåЛ例}ã‚’å‚照。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node DEP(X) @section DEP(X) @cindex DEP(X) @subsection コード情報å 外部å‚照レコード @subsection 内容 関数ã‹ã‚‰ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’アクセスã€é–¢æ•°ã‹ã‚‰ä»–ã®é–¢æ•°ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å‚ç…§ã—ãŸå ´åˆã«ã€ アクセスä½ç½®ã€ã‚¢ã‚¯ã‚»ã‚¹å…ƒã®é–¢æ•°åã€ã‚¢ã‚¯ã‚»ã‚¹å…ˆã®ã‚ªãƒ–ジェクトåãªã©ã‚’出力ã—ã¾ã™ã€‚ @subsection サンプルコード @ref{Output_Metrics_Dep_Sample, ä¾å­˜ãƒ¬ã‚³ãƒ¼ãƒ‰ã®å‡ºåЛ例}ã‚’å‚照。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node LIT @section LIT @cindex LIT @subsection コード情報å リテラルレコード @subsection 内容 å®šæ•°ã€æ–‡å­—列リテラルを使用ã—ãŸå ´åˆã€ä½¿ç”¨ã—ãŸä½ç½®ã€å®šæ•°ã‚„文字列リテラルã®å†…容㪠ã©ã‚’出力ã—ã¾ã™ã€‚ @subsection サンプルコード @ref{Output_Metrics_Lit_Sample, リテラルレコードã®å‡ºåЛ例}ã‚’å‚照。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node PRE @section PRE @cindex PRE @subsection コード情報å プリプロセスレコード @subsection 内容 プリプロセッサディレクティブã«ã¤ã„ã¦ã€ä½¿ç”¨ä½ç½®ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–åã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ ãƒ–ã«æŒ‡å®šã—ãŸå¼•数を出力ã—ã¾ã™ã€‚ @subsection サンプルコード @ref{Output_Metrics_Pre_Sample, プリプロセスレコードã®å‡ºåЛ例}ã‚’å‚照。 @subsection 対応ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.0 @node Appendix @appendix 付録 @anchor{Screen Shot} @section スクリーンショット @subsection Adqua ã¨ã®é€£æº AdLint ã®é™çš„è§£æžçµæžœã‚’ Adqua ã§å‡¦ç†ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰å“質を定é‡çš„㫠評価ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ Adqua ã¯@uref{http://www.ogis-ri.co.jp/, æ ªå¼ä¼šç¤¾ã‚ªãƒ¼ã‚¸ã‚¹ç·ç ”}ã‹ã‚‰å…¥æ‰‹å¯èƒ½ã§ã™ 。詳ã—ã㯠@uref{http://www.ogis-ri.co.jp/product/b-08-000001A6.html, Adqua 製 哿ƒ…å ±}ã‚’ã”覧ãã ã•ã„。 @image{adlint_on_adqua,,,,png} @subsection テキストエディタ Vim ã¨ã®é€£æº AdLint ã¯ã€æ¨™æº–çš„ãªã‚³ãƒ³ãƒ‘イラã¨åŒæ§˜ã®å½¢å¼ã§è­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’出力ã™ã‚‹ã®ã§ã€ãƒ†ã‚­ã‚¹ トエディタã¨å®¹æ˜“ã«é€£æºã—ã¦é–‹ç™ºä¸­ã«ã‚³ãƒ¼ãƒ‰ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @image{adlint_on_vim_ja,,,,png} @subsection çµ±åˆé–‹ç™ºç’°å¢ƒ Eclipse ã¨ã®é€£æº AdLint ã¯ã€æ¨™æº–çš„ãªã‚³ãƒ³ãƒ‘イラã¨åŒæ§˜ã®å½¢å¼ã§è­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’出力ã™ã‚‹ã®ã§ã€çµ±åˆé–‹ 発環境ã¨å®¹æ˜“ã«é€£æºã—ã¦é–‹ç™ºä¸­ã«ã‚³ãƒ¼ãƒ‰ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ @image{adlint_on_eclipse_ja,,,,png} @anchor{Traits Sample} @section 特性ファイルã®ã‚µãƒ³ãƒ—ル @verbatiminclude samples/adlint_traits.yml @anchor{GNUmakefile Sample} @section è§£æžæ‰‹é † @file{GNUmakefile} ã®ã‚µãƒ³ãƒ—ル @verbatiminclude samples/GNUmakefile @node Index @unnumbered 索引 @printindex cp @bye @c vim:sw=2:sts=2:et:tw=79:fo+=mM: adlint-3.2.14/share/doc/adlint_on_eclipse_en.png0000644000004100000410000034667312340630463021642 0ustar www-datawww-data‰PNG  IHDR׎úsBIT|dˆtEXtSoftwaregnome-screenshotï¿> IDATxœìgxU€ßÙ’Þ !!H tB/‚`Q° "*Š¥X>EÅ‚½K±‹¨ØPEštB!ôdÛÌ÷c³›Ýd7Ù$›ä¾Ïs“™[Î-3sÏœ[@ @ @ @ @ @ @ Á…€TÃùšþ @  é Ôô_ã tôèQ¹AÅ@ Û‰÷ìð)€\é¿àH  ..®á%@ [8vì€f¥OL•þË8³ä4†œ@ @ pÞ˜•>£Í©ü¿HN-ÈbD¨@ @ \`xaVøÔ€Šõ\¬CDZEqpI @ MoÌÊ_eP.?vn ”…%P \À(ŠB||áÛo¿åСCtêÔ‰&NdذaVŸþ9/¼ø";¶oG£Ñ¸æ|’yö,IIIh5Z%$8|¦9¢SçΤ§§óË/¿Ð³G–²‚ýûöÐ>9ÙeY K]¯\±B”aäèÑ£ôèÙ³ÊyÒŽA’œïâtòäI ñôô¤UBBïwá(/¡!!Œ=š3f Õj«È슌ÎÚàã?Κ5k¸úê«éÝ»7ƒ/½ô?ÝVAÝ©«ÞÓØáœà…½hÂ~n sK ‚cKàåW^Ž Uù¼Aå'(?båÊ•Nà ‚¦Ã¹syŒ3†mÛ¶ãá¡¥k×nH’ÄöíÛÙºm+C‡™2&“‰ÙsæpÏ=(Ó•1溚ÃXxòÉé”––ðÎ;Õ[f\õç*Í"ÂY±âë±+Ϥ¼¼<ÒÓÓhÛ6±Ú0ƒ­V[AË9pðí’Ûž×ç§m]ÇÅÇŠ2l‚ìÚ½///:uêd=ß®][œ+5{÷î )) •ZªÓ}âNló2`Àòòòؼy3ïðÑ1ÑÜÿ}Ud®IFgmÐh4²zõj^|ñZ´ˆjŸgw·[@Ðt©«ÞÓØáàUþߢËŠråЩ%Ð$;~‰(&…•¿ÿî4ÅË.»œê ‚¦ÃäÉSضm;­Z·âË/¿$66€ÜÜ\Îåž³ÞÇK—ý@VVwŽïr gΜ¡¸¸¸Æg‚«þ\eþüùÌxn#GŽdÁû ¬Çƒ "²y$?/ÿ­VËÛï¼ÍСCùý·ß;v¬5|BBk4 GÒŽðñÇ3ã¹ ¹láááü¼ügüqîžp7Ÿ~ò)Ÿ|ò iiiqãM7òÄO Ñ8_wK¯×óÒ‹/±øëÅh5ZžyöÒÒŽ”ÔÎZ_/þš?úƒâççÇ­coå‰'ž@’$k~.»ü2"šE°téRbbbøð£ùò‹/ùòË/ñôôdöœÙ 4ÈšvMòÚÖõÜyïŠ2¬C:â§bþüùìÛ·EQèÛ·/_~õ¥SÿÕ±kW*€Ã8,ùv–Þž½{hÛ®-&YqzŸôë×€€V¯^MóæÍyëí·èׯ[¶lá…ç_`×®] """wû8¦L™Rc™;ËK=ø|Ñç\{íµlܰ‘Ç`’•*2oܰ‘éÓ§sôèQÊÊÊgìmcyôÑG¶Áï—|ÏÈkFZÏwéÒ•ÁƒóåW_V[Ÿ–ò¨Ün FCÚŽ@ ¸°¨«ÞÓØáà‰½hÀ¬Z”@Iå,¤"+Uœ+(Šì4¼p ×tÜî]»Y±bïÎ{—–1-­×‚ƒ‚IHH@‘d“ÌœÙs¸ýöÛ9qü„Ka2Ïfrâø N?AII ¥¥¥ÖãŒ3Ö0®ú«‹Û“j¶$''ÛÿóÏ?¨UjbccÉÍÍå·ßA‘|}}III 11‘ &ðÈ#à¡õ°†ýsõŸœ:yŠÁƒÓ­[7žyú¦M›FQQ7ÝtF£‘ysç1kæ¬je{ø¡‡Y°`¾>¾ 2„'Ÿx£ÑHdd$(²Â+/¿Â”)SÐëôLš4 ___fϚ͢ÏÙåçÏÕræÌ4 `ø°álÙ²…   233­ùSd¥Fymë:À?@”aÊБ›5s&L`ÿþý\uÕU >¼^ïÉÝ»w°{÷n†nu¹9¹5¦·o¯yÈlr;û:µÔ±åúöíÛiÛ¶-ƒæØ±cL¼"²IF¯Ó3öÖ±ìÝ»—{©S§Ò®];LF“Keî,/]»vE6ÉìIÝÃÁèØ±£C™×­[Gll,“&Mâ¶Ûn#33“7ßx“ÍÿnvÚ½½¼0`111L˜0±cÇÖXŸÎÚm]ÚŽp wa¹ºê=ΉÜZÌÆ> æy€v T³Y¼³…aL&SµÂY‰…e‚¦Í_ý@tt4:tpzÏþöÛo9r„/¿ü’ï¾ûÎ¥0'NäŸþ±;׳|ÞO×®]Y¾|y­üÙòã?òþûï[_{í5Ú·o_ÅßÞrëArr2²,[§L™ÂÃ?Ì÷ßÏäÉ“‘$ Y–éÙ³'­ZµbëÖ­Œ9’©S§Ø…7n/½ô’5þ÷ß___~úé'"""HHHàùçŸgõêÕÖð•Ùµkß}÷ÞÞÞüøã4oÞœ   ,X@»víe™0{öl«%"<<F믾ÊÚµk¹å–[¬2M˜0§Ÿ~šGy„ŋӹsg¾þúk¾øâ {ì1T*•55Ék[×¶ùeèzVæØ±c¼þúëh4~øá’““óÐÄÊ÷«m;5Õl=ËÊÊ"++ €àà`IKK«6=Kž“’’Öñ¾òy•Ï>û,cÇŽ%;;›_ý•³gÏ’‘‘V«%//àà`èÝ»7S§NE’$öíÛWc™;ËËìÙ³™={¶õ|—.]¸þúëÊüÀ Õj1 èõz¶oßÎÎ;9wîC† qØÁô‡&55•®]»rëØ±NóÑ®|xÞo¿ýÆÜyóغe‹Õª˜”„I–éÕ«ï¾û.›6m"11???Ž9ÂþýûùuÅ –-[@rûöȊ±cÇ(**ÂÓӓظ8L6Ò¶åy®IÞ;ï¸Ã®®EÖ¾ >Ì”)Sðóóãš‘#1ɲõÃÈÎ;3f ±qq¤îÞÍÒeËP;Ì]õXæÐ™L&F^{­õ|·®]yæÙg«Mooy}%•—‘³:V©TÜqÇDGGó믿¢Ñhx|Ú4L²Ìä)S0´KNÆ ×SZZŠF£¡Mb"*•ªÚ2¯\Ÿ–¼$&&"+ŠÃ­*ËlQð)(,dáÂ…Öë²¢8mƒçÎ###•JEë6m\ªÏŸþÙ\>•Ú­¥œjÓvÁ…I]õžÆWœ. ƒ,Wu¸¢¡ÊÎà 'œpMÆøùñÝ·ß2bÄ|}}Ù¼y3é§OsÅWpÙe—±sÇÖ¯_Ïý÷Ýçr‡i™ 5Ëäª?Ü~K¬m[»ãäädeŠ 8}ú´ÙORÈ2ÞžžÜwï½øúøðóÏ?³yóf»°íÛµ³K£oïÞ¼òÊ+´hÑ‚–.%óìYî™0E‹¡U«Ê6⪫S¾Å'LRRµšÖ Ë ¼ä^xþyÂÂÂøàƒ˜ÿî»>|˜›ÇŒq(ÓÞr«CRb"jI"ëìYrrrШÕ$µiS£¼{÷ì©R×¢ kW†Zµš=åJM»¶m‘ÊÛòÀK.áù3ˆeãÆü¼|9í““QKRڶŤ×ëÙ±}»ÕYÞ»Õ¥wÀFiwTÇ–ëcnº‰fááüöÛo´nÝš>ü®;ƒ,Ê®]»˜5s& , >>ž>ü訨ËÜY^’æ·²Ì￟-Z°jåJ¾ùúkëè„våõXSlƒ——Kõé¬ÝÖ¥í'œp ««ÞÓØáÈí Žv”Õ=zTïHˆõë×Ó·__P¤ò ’b>4ŸP@)÷×·¯ËB‚¦Ç}÷Ýg]F_ðßFÔµÌí`ÕªU¼øâ‹q‚‹‰ºê=®2’$?(JÊ]±ÍïR ¬šÕAȺõÕ•WáAÓÇ`0Ю]2Ç÷òQ× –UZµj#Ú‚@ Pw½§±ÃÙ¢vq®SK e…,@ ÔŽÓ§O;Ý zÍš5´hÑ¢qºeظ”––Z5ù÷ß >ß"  h4—,B 7c4­KÄW&!!Æé A9¢ @ ¨=®*µÞ"B Õ£V«iÓ¦ÓëâùZ3¢ @ h8œJ/X@ @ øÏáT Ì=w®1å@ A=ˆˆˆpÉŸC%ÐËË‹ØØX´šºle+@ ‚ÆÄ`4¹ì×éfñZ1é^ @ .j£¿9U@ @ðߣZuQ¬¾&@ MIr´ûŸc„%P @ ."„%P @ ."ÌØ-¥;;vì¬ò»)ðÜs3xáÅ­ÇMM>W¸en ´ïБýû÷Ÿo1ªEÔ­û©O™V~^\Ȉ¶%Ü ¸d Í""íÜŽ;™öøcÄÄD»CÆ:ÉpëØ±.‡·•µs—®në$ ¸d ­ZsÎfÏť˖qùWÔ;nw•¯;ó[6ldèÐaDGÇŸÀСÃX·~}ƒ§ÛXضÁV­ÛpÇãÉÎήS\î¨[w·cKÞZµæ¶ÛÆ‘‘‘á–¸ë¬Y³só-vçzõîãðÜÒeË÷Ý/ç›— ä»ï¾³;·tÙ2úöëwž$@p!â–á 3g¾Ã¨ë®³{xxйs'»8”^ZY•Jå4=” Ùn¸áY·ÊªÑh˜={Ï<ótyâöi×{™ëƒ{óëˆââbÆÞv=4•o¾ù•JÅ–-[Ðj4nM×h4¢ÑÔ¼4®¢4L~ç̞ͨQ×qâÄ î¹÷^ž›1ƒ9³g×ZF÷Ô­{ëÕ’·ôôtî½ï~ž}nïÍ×-q×–Þ½{3{ÎŒF#jµš³gÏb0ؽ{·Ý¹£GÒ»W/E©W™V~^œo”ʲÔò™ÒÐ÷»@ ‚¦[†ƒj5Z<==­N’$Rº÷`ÇΪ–ˆô3g{Û8Z·I¤CÇNÌœ9Ë"T‘A«ÕZ¯íÚ½›A—&1)‰±co#?¿À.¬EÖǧM#33‹qãn'¥{¾ùæÛzËuß½÷òÙÂ…dff:¼þò˯ХkWââè?àþüs sæÎå®»ï¶ó;}úÓ<õÔt;™vìÜÉÀA—Zó÷ÐÃðâ‹/Õ˜†³üº»ŽŽ?Naa!÷L˜€¿¿?¾¾¾ 8=zXýT—¦3ù:tìĬٳ¹òÊ¡\:x§NbìmãhÕº ‰IILš<ÙNžÍ›·ÐÀ%ÄÆÅsϽ÷a0ê•? *• FCBB#GŽdß¾}NeÜ¿?#®¹†ø„V¤tïÁW‹[ã±­ÛêÊÅY>¢[òÖ²eK†FÚ‘#Dµˆ¶kÛÓŸ~†W^}ÕzÜ¡c'æÌËÕ#®¡g¯Þn)ï®]»`0Hݳ€›6Ñ¿_?Z·jew...ŽÈÈHÀ¾Lk’©¦ç…³ºûjñbÆÞ6Îê¯wŸ¾Ü}÷¹»‘šº§^ywWïß;ñöÛïpÍÈ‘ôï?€'MB§Ó5¸|@ Î?Õ*‹Iu*¾,W>O¥ß&“‰±cÇ’””ÈÞ=©ü¶jß|û-?ýô“KiÕVEQÐëõÜqÇŒsû÷ícâÄûY²d‰‹|¯¾ò ÍÂÃYøÙ§lÙü/7Üp}½åjݺÇ cæ¬YåçA±)ÛŽ:òçêÕ¤9̤IrϽ÷RRRµ#GòûïPXXˆ¢(F~øñG®»îZ;™-ùwÛmØ¿ŸÉ“'³lÙ2»ü9KÃQ~¢Žâââ cÒäɬYóçγ»^SšÎ䷔Îí;øé§ùkÍŸFn¾åVâãIݽ‹ÔÝ»wÛ8»:Y¾|9?þ°Œ-›ÿ%55•ï¾û¾^õ\¹ ±zõŸÄÇ'8”Q¯×3ö¶q <˜Ã‡òáï3}úÓlú÷_—ï—êòÙíØ’·ôôt~ýuÝRR*®Ùù­°JY®§¦¦²léÖ¯û‡'NÔ»¼5 ݺucÆ (ŠÂ† éÕ«={õ´;×»w¯*÷xM2Õô¼¨®îúôîͦM›0™Lœ9“^¯gË–-(ŠÂ±cÇ(..¦]»¶n«‹ WñL©é^ª\»víbÉ÷ßó×_k(.*æÍ·Þª÷½ œp 'œpÂWÜb |üñi´KnO»äöŒy­S;vìàĉ“<1mZ­–ÈÈÆßy'?-_îVÚ%·çíwÞ`Û¶mèt:î™0I’èÓ§ƒ ¬wzµá‘Gfñâ¯IOO¯ríê«®"((I’¸ñ† aß¾}DGGÓ©cG~ùõWþùgÞÞÞ¤¤¤Ø…ߺu+Š"3~üôèÑÁƒ»”†#¢Ž¼½½YþÓøùúñø´i$·ïÀ 7ÞÈÉ“']J³&ùïºkŒÔ=©uΛ-O>ù;u¦m»dt:OOʉŒÛ(..fò¤I¨T*ºtéÂèQ£Xºt™]|Õ•‹+ùt'>8‰ÈæQtí–‚‡‡Ï=ûŒËaÇZ­F­VsÉ%ÜRÞ}ûôaã†lÚdV{õêew®oŸ>µ–©¦çEuu‹¯¯/{öìaãÆ\:h‘‘>|ج¨öî…JUÿGnågÝ£ÿûŸõZmïß;ZJ¥büø;ùá‡ë-Ÿ@ ‚¦Oͨ\àÉ'ž`øðaæ«™ï”~æ :ŽK²ž3 ´ONv« ~~~deem·yb˘–õN¯6ÄÆÆ2êºëxëí·Ð€Ýµ…ŸÎgŸ}FnN.j†³gÏR\\À¨Q×±lé2n¼á–,]j7çÑBvv6‘v碚7w9Ê4TÅÅÅñƯ™™É”)S™68#ÀßßúÛËË‹s¹çªñí½{÷âãO>!//œœ\â còä)äåå±ÿz÷î]k™jz^ÔTw}ûôaÝúõ;zŒ>}ûÈú زe+}ªQJkCågÝÊ•+ùàÀÚß¿áááv¿³²²Ü"£@ ‚¦[† °Î½± gkšT…fáá„„„°ö↑ìh_[fM2Xâ #;;Û.þììl¢¢¢ìÎYe•¤:™T¡”›:u .HLtŒ5½ðÒK/³ü§iݺ5ýúõGVdEáꫯæÙçf”Áû…å¶CºÊã ålF†Ýùô3éÄÅÆ¹”Fåü6dYç¶ÛÆòð#ÖØ.öïß_½üØ·³ˆˆN§§[q„]ý*î[(Ãßߟ°°0kÎÒ #ýÌL&“U™8uúááa.ß/[¶n­>ŸnnÇ”ÇÓ¥Kzh*/¼ø"ƒ B«Õ¢Óé¬éàãããøÞ·•wJJ ……|¾h=ztGQüüüˆˆˆàóE‹ˆˆˆ &&Æ©ÎdªéyQSÝõéÓ›U«~ãÄÉ“Lž<‰ÿ–,Y–­[çn©ÊϺÀ  kž\¹mó~âä Úµkkþ}â$áááîk3@ š, ¶O #RRRâ7ߤ¬¬ €´´4v:X@¦¶ŒFt:ÕYzèÖ-Y–ùãÕœÌÊíÂ)5¥Q9¿ QG'Nœ`öœ9;vƒÁÈÑcÇøì³…tîÔ©Æ4k’¿2ݺv%<<œ—_y¥¼Ù²ukeoºuKÁÛÛ›yヒ,ËæyYK–ríÈ‘vþª+—šòÙPíàÖ[náÌ™ ~ÿýÚ·Oæïµk8}ú4«VýÖ iVÆËË‹Î:³`ÁûôêÕËz¾WÏž,Xð>}ª±VGMÏ‹šê®O¹%°¬¬”æÍ›Ó«WOVÿù'çΣC‡õȱkÔöþ?ÿ= (((döìÙ\3bDƒË(àüㆅa«µ«òÄDËyËoI’øbÑ"8@çÎ]h“˜Äý ''·ž“ zèaââ¬nè°á(Š‚F£æ£?ä•W_eÄ5#yê©é 2¤ÊÂ0Yxàžš>¤¤¶,ZôE½å²Mg’Íê{Š¢Ðµk† Æ A—rýõ7°jÕ*’’­ 7(ŠÂu×^Ëßk×Z„©,³F£æ£>äÓÏ>#©m;fÍœÅÕW_J­r)Êùmˆ:òóócÿþýŒ=𸄆 N@@3g¾ƒ¢(Õ¦Y“ü¶ug‰ëó…Ÿq`ÿÚwèH‡Žù|áçëZQ»åÿë]×N⩜¦F£fágŸ²rå*Ú$&qçø»xö™gèÑ£‡Ë÷KMùt{;¶‘ßÛÛ›;n¿9sç2cÆ æÏ+‡cúÓϘçÏUZ¦!Ê[Qz÷éMvv6=ËËMQzöêIvv6½l…©,Gu2Õô¼¨©îâããñõõ¡WÏ^Ö¶KÝ­ÛÖ¸»aÍSõ÷’£r¸jøp† ¿Š”î݉iÃCMuKÝ'œp 'œpïjƒäàœöÌ™3z­F,~r÷„ ôíÓ׺XŒà¢GÏ^|òñGb9\¼tîÒ•¯/¦mÛ¤ó-Š@ 7àéé‰Þ`¤yóæ£R ¤ÜÛü.Êu8¨ aغmçΙ¶øgÝ:Ö¬ù‹Áƒ/=ÏR êBnn.9994¯´¸@ @à.ܲ0Œàü²wï^î¼sb8¨@ @ \DTk @ ÎÑjµøžo1rs²]ö+”@@ ÀE)}…ù †ó$‘@P{„(@ ¸€EJŸàBG(@ A5ØZÿ„(ø/ ”@@ À Âú'ø/"”@AØ·7•Þ}Ÿwî|‹"@Ð ü×@EQ0èõôdE>ßâ4**• V‹§§çù¥IP'%0$4 €o¾üœË®æV‚º"Ú¥{å(¸˜í¿i#êGИüÀÒÒNŸ:Eêî]dg»¾’ä…ŽJ¥"$$„Ž;“ض²l:ß"wêl ¬Í¤Ac!Ú¥{å(¸˜í¿i#êGÐÐüWçÿôN<ÉÖÍÿÒ¾C':wêŠt‘ì.I%Å%lÞ¼ ¿bcãÑéÊηXç1T @ à¿gý³Å`бgÏn:tꌯ¯•ê"Ñ€ ºvïÎÆ ëhÓ&Q(ç[@ @аȲBnN.޽ѨÕhÕTjõù«Q ô ';é"R~!”@@ ÁEÏÙ hA–e$@’TH*ÕE§ ©Uæ2%P °²k÷n‡ç;uìØÈ’ Ïúôüuj;ŽD+G ÑB÷„. HèMçÄó-ž@ 4*ƒh‹¢(V'¸8i’JàÖoû‘rúO§T§#77×z¬++#$$¤Š¿ÜÜ\<½¼¬Ç!!!x×ayYÛô¥eI§®ñWGQQ¡Ãó~~þnMÇ7½\£ŸÄ^O6‚$UÑëõì?p€ØØX»kÇg×îݦ 4 ’$!˲ý×*IB­R!IR£ÈRW Ê |±ù¿È$-§„2ƒ‰fþôhÌ-ÝcH‰ jt™®šx?¿ûQ£§ëˆŒ¢Lfm]Hê¡ýd—æ@‡6m™’2ŽH¿f .Ãû;¿aýÁ¿èÝk?Û^Fæq²!ŒCÙ™{l'£{bhL¿—ÖMé[Y}h9;NÁÛ†äk"%"…‰=èÑ®Qeq;7ïfÛæsdŸÕáI·Átîñßþ ¤^y-ŸþJB|ž^Û4' óƒç[¬:s:ý4’$Õ<ªÖaÏË©SšÁÁ¡u ×Øé šµí7+Š‚‚½xã ¿ƒJƒ"©Aí*PkAå¢ñDR{€J‹"i@¥æ»»§ÿ(h8šœ¸õÛ~\vÏ&~¿Wƒ+‚¹99DÇÄŸ—GlË–ý………‘››K`¹ózêäIZDÕþ¥››K˘JJKñõñq˜Ž¢(œ8y’Í›×:þêP€  `»s™gÏ `¾ùýýÜšž#º]þ†Ók‡VLâগ]”e™ý†Oy?~ÜÎOB||£Èb08|$ðfáx{y¡ÓëÉÏ/°*‚Z­?|¼¼ñðÐ6Ieð—=L]² -£:5çæîÑh$Çϳb_&WÌ[ǘ”hÞº®#^𯂢+3Ú_5ñ>~~÷½FKß½ÉÖC;qYQ±U<àTIi9éLXü$Ú´å•6˜ r±vïŸ ˆ"ÅçZÆ ç‹Ò)œ<šE|háž|½éº…'ÓÌ+¸æÝÀܵ Ù”½~)»™ØÕ^)½v'·¦ŒdPü%"‹;عy7«–gÐ!%‘Èhó¹UË4Š"øÙÒŠwçí×5Ž2¯^y-:Ÿh˜1€M;‚8¸ÿsºwn”äÝŽE¬ësVÂÃ#j&+ëlÒ²¤×¬Y¤ËþM&99YuNOÐt¨k¿YQ°Såæ½3²j^Z ­_O¾Z~j|=Õøh%¼´×ÍX',ˆ @hX89ÙYÝM£)7½þ'*IB¥’Fü}}iÞÌŸˆÐú%›ªÒÕý üyk0˜Øøeozß²±ÁdRÀ|…EE;ïðX®N šo6Y–9~âPÕ"h±ž>sÆ­AY–«Ü°>¾¾ô:=ùr>åË!7²¢²5 YJQ’Pðð % 8‡ý^¡mŸ'LŽÊdg›¿ž†……QTT„ÑhD£ÑM€ã~åÒh4„7 '+3 __üü|‰ŒhF~~> áàOAA!yù„…ãçëÛ¤ÁÅ[O1é»]L”Àã—%¢UÛ+ySµæ×½gyàÛdéøêö¨U /ÿ?¯Ç¨/䟿×Óÿ’¾èÊ-pɽɉSǸ¡sgÊHãÙ”ÌØšDpÖ0¼ö¡Á´ æ×ƒÇxâ¯7L|ë„úhÈ*ÈÃÇÈmÉóYÈD6nÛIK_-ný‚'û5¼'-ï [261 &’Ÿi Œ΢ҩœ²QJ¿Øú-ƒ#Iº0†©nÛ|µÖ‡}»NYχ†Pb eü²GIËJ'!<ŠÛzÞÈ¥Q=Ýšö‹ïþÌ€Þ¬Çó¾ø“n½Ô­iTÆ¢†\:–kžÎå‡éÞ¤ÄfñÛcÍ› ¶  ŸŸ_Ý")áÖ ò@ÅÀÐÐPJKKÑétx{{“žžN@RRƒË`‹$Ix{yYÀâ’RT*5Z­µZŸ¯/Š,£×éÈÊÉÅCë§§G£ÊèŒ=g yhénÜš'.7wÔödP¨3Ò=&ˆ¼RÝ[ñõ=¸zÁ>Úpœ{úÅ5ˆ<—M¼ÊÀˆƒ¾ mÛLÿ{3/Ï•×îŸÖ é:#£(Óll“”Ñ×c.€Uôʘ—ª”É·;w’‘’Ù CC§§Ñ\ëÁ‰‚RJ ÅhðæÎä÷ö|†ÕN‚ÆÁôcnOÛó6K‡ÊN)—ü®Rå+ñUê*žêß´•ÀÔƒ $û샤©x¦Æ'4#®}$Oì~”é—^ ˜­3~ž WM­³"xð“«+~7Ÿ@PH$»f”lÔ>,_ñWY§tª£²¸lº7¦’"ä’BÒŽfÓ¸ƒŠëOe°® \þÑ·uëVÈŠB‹-s(•þƒùý,»±S}üÄI§×b[šG@)B š®Ž­s>jâý9ýi#'.@)9ÆÐ;¿ —ûÍ•‡ƒ>Ðj!ŸÜa½¾÷ûÇHýºÃ°½ÜEùÄiÜ¿ÿþŸ|öB¥RѹS'&L¸‹Ý»••ÅÍ·ÞÆï«V¸äÿb¢1ÁFS¯ÝTa 4ñð%24€ˆ0<;´ âšÍ,~» ·Üó _¿ÿ(på;L&ËC×ò6¹¨Öõ¹©ÈŠE«Ñ"xúÔ)·ZEFΞÉÀ$ËF«KLlÓà_tŒ² “¬p×(›Z‘@Reï<ÉúBÊ\1½Ae±Åòb.--E’$ŒF#%%% zÒOŸ"ªEtq?z”–qqV«œ,Ëœ<~œ¸„„Z•«,Ëèôz«èååIQQ1*•„¿¿?Š¢ ×  ¸´Œ’²Ò*ÃBÝ%Kmyjù^Z‡ùòØ6Í)aü[9”UŒŸ§†„02 ʸ¼m¯]Óž›»Góþú£ ¦þþîg€Ù 8ýïͬzávŽe¤rϼÍhÛaúß›YsI_RF\‰——'ë¾ý±Aä°0këB¢C9WzJ×,Šà¹ý½­çúG7cÖÖ… b Ì/5 ËÌè)Ñ—XÏKxÃHÒN?†Ÿ%RãtO§&\ëU£Rz,ãh£ÈSWV?Õëß3?ÏMø‚ÀЊ|I"y?û-F´iÏÎS§AR@‘Ѧ=ó×~Ê¥7Õ^ \ýT7¿´Íz¼ë§_¸ý–[œúÿìË/kFMØ*€?L÷ÁTRˆ©¤ˆÒ#[¸£g&·§ÚpääæTQ-k‹åÃëá#i´n•ÀÁCGú‹ŠŠ$#ã,­[%ÔÇhgE²ÇõÈ+­ª3š•@I2·£IƒJ‚ ó.Áò­ÙÜm–ˆoîÇñ5S­m,fà;æ8t:fΚ͓ÓgøðaÖ¤.2„!ƒ[ÓZ»ö®ºjeee.ù·——GIII÷¥«þšÿÙ9F¹ê j ÔȨ$·ÌØ é 7cg×ϯâ·CûÜ=á>üà}îžpwÜ~{dRPm?½¾úN†YITê<„ÂT®lÉ&¥|Žž,Ë•¯Òi?H¤°¨ÿ€{å´Ó²e -[Æ•™‰¢ÈdeeW±š¿@*téjžÁâÄI÷+&5&YaÜ5)Õú3ÉŠµ­44ÁAÁ>|˜fÍš¡R© âLúiü|}‘eŠ"[Ws­N 6+f[7oB–e:têB``ƒ ½èJ˜Á|´Z-*•Daa¾~>s&ã,QQÍ1 ”””8|a¹SWùûp6[›‡ô¾¿þ(éeüto‚¼ÍÏ^qÁl<–Kÿ³O­¹Ž u&B|+âr×ý}ÕÄûøùÝ÷xyPîšõ/?<÷ ~^ZµoÞ•ÀÃlæ•K{°æã%ãqçó&3=ßú»PWuµÞgS°6æ ^ž¿ƒæ¡PXVUat‡<—wèÇ¿G6ᥖP«Í¯€_w¯äßæâíëITTsòŠJ˜Ø¿Æ¸Ü!+Ji« ƒK#0ÜY_µA‡ ¼Ì#Y¼"¡_”'ÐŽo¿8‰,+D„…p.O!*N(HH((HŠÄ¹ãµ¾WNÏ Ð¯?Ñè<.½Á=¯û5 %¦ï(²‚Á`D_VÆÂ·pËø¡f  Î_ý¸Â™Œ3hµZ´Z-¨Tªz-Ÿ¯`î0IK£UB&“LvvŽÝœ@“I¦¨¸˜ŒŒ³´JH¨×àL[9•òQM¶ñ)6#ëÿ «ƒ|1SuîªçÎòñSaté}ƒËñYVŦ—•+jÌâÃ9-Ðú ŠÄà{þp×Êù—YãØ³w/ÅÅÅ RU³¤k4ÙºmÏ?ÿœKþ+qr¾JHý5-*+{ ¥üYh4%P_nf–ÊÿHvV6 I’QK&Tj@B…šôÌ*Å3dÈ`†Àô§ž²ž«-æ/棿Ÿ?¹çòúõ÷ó·ú­û‡AÅ:O@±L /0ët%ŽÃ8XÐÅõô*ü²l6ý‡……Uö…¢”Ï_ë—¿ê0šÔ˜\Œ×`jK`óæ‘dçd“™™‰$I¡Q«ÉÎÉ&,,Ô:Gôܹ\dE!&Æñê±`¶ÀµIl‹—·7~~þõVºT*5þþþ”ét#©$ŒF&“\cý¸[–š8_†$AtyøÛŠ}™t "*°b[•ƒ™EôŠ ÁÇÃ\·[Oæá©Q`?ÌÙ]÷·eåÏËÆßBiiJ›ÁèM%•Á¯{¢{TgdŒLëËc 7±¾|Á˜Ê¸Kžœ2”V?¬ì·Ý¿ñÄp&§Ì¡!ÎòÜÛs,ÿžÜŽF+ã¥ñ`eê*^üå%L™æádoooþ7è^æµ2½Òe:ƒ‘gïàVy.ïQ³Rz®¨ˆA.lYáÎ÷C­ÐeÇjú÷ôb@ï¶æc?†7ñÑ?ßQ¾EŠiyY– ³ßŽ!?¿Àj ”ë¡pšÓ«Pîâ9|8­âX?x+•Â\Ì4u+ TôUR¹u®ü·meŽz)›ï_êGëA®Å+Ë&ŒFsѲY¼Î æŸÏ_¤âk\#ï|že¯¶Ž˜›ñÉr~Ýv€sÌó Ê4Ö~FNN¾¾>HNû›7o¡M›Öxh5.ù|Ú“lÛnž«h±ÎûÝ÷´k×–Ù3ß®•?A¦êʲF*·sYÚ˜å &T’Ð`RyQPìx6íK£>/ëDl<==ñôò¬ök³Åo}‡ƒÚ*‚²¢8U@ýýüëõbP“I./c…ìœìJ°™•^1'²!¾œL*dYa݆Ü÷Ô\ž|p 7ºŒ¯–üÎËsóÇϑm¾þzO–üËØkÜ»j^e4 ]:w&;;‡€sðôäø‰cøùúâéå…¬(xùùy´hJåØR„$IuWº$©ü¥€·7Š¢ I*2ΞÅh4Š·—'jµFÞà|xg½e©Zµy…×B/-9EzšÛ(€ÇrKX±ç,]nž/˜]¬çÓM'¸º}$ž¶‰p×ý ðûÇ_ÒsÔ•H²B~q6Zµ=¢:óÝ–oèŸÔ¬Çd‚”WâîëÐ"èy<½·s%pÉ–%<÷óËà a^áè|ÎálÉŸúÊæĽýnçÓM‹ùb×ÈˆŠŒEÒ(ä—¡’´¼0äÊŠJ¸sDÛ㫯<7w¸‚gö¢‘J*¥Ks;‘±w7Y+ÿ@dd¦hyêB@YžõX!ßzÉÎO à€tû°ƒÛ][ïôÚŸ~•õ¯=å4L{`Ý[ÐµN*†€ž\?¨ž÷a00èõtzôz²I®V´p>ê§: sñòöE«ÑÒ¢EsNœ8e‰¡VSRRŒVS·a´’$!!qøˆÙ(ËU-²lo ¬ÏjÏ–é-–ÅßZ·ŠçÀ¡Ã–‹˜d“õ·]˜‹” A(3˜?Þ¨U€Rnûì™jýº‚íê –6QjPÓÿ¶éÄ–¿¾?šÿ:j ¸¸“IáÅ…?óë¶3̺Ûjš’ÒRüýýœ*¤õ•¥6t+ßü}ýÑ\†¶‹ OB_m9ÅÇâÓË÷¢—eŽç”²æPOÿ¼ðÜp瀻³s¨õôäµ+zqë™ÿ@+L˜è—Ô‡E~Ëže‰Yÿ{–þ—ôå²ñ·óûÇŸU‰£¾ò êØ“C§öãhy§%[–ðÁú…´Žoðċ̃::oÿõ•gxËKhÐ’%ûWðïñÝ‹Õø¨¸ºÝ0&ôº™ÏþÂÊÿ bÑÊÃètzJJô—”¡Óì,î'!(‘‰ÝÇðîÇJéKCâ½þ£ù_jª5Ì:0Á‰X_yê‚®Ho§”ý4o#y¤Ú0yyy¬ýè#7¥7›Ô¼¢òOo9^éÏz…$jÔõH¾ýYüÚšuºC™£^Io4o¬A´Ð”?°WÍÓCLDE5ãô© <<=Q©ThtLkÂb LHˆ·.¾QÙ˜›{;?u¥bẊ8lW<¯iõsAӤĠ­b»öÎçíüX}÷‰!®Gl»(Ly“Ñʇƒ–'UfðD#l2b²é+wMîÀßowÃ$+˜ŒkûKJJÄ×LJÕ®áÊ+.·ORQ$‰uë7ðÚ+/¡(ŠKþ+ö±öõõARI„‡‡Ûù\ö'¨ Ñ”À2%ÐZ• F¤3ËP¢oÆD0ź†ÝCLÁ2ÚÜ0ΜÉ0ïÕcCQQ§ÓÓiÞ<²yæ&B“oÆ 7ºôžij8ReÙ„"› $''Ÿ„øVuŽßòÑ7íè1âãØ»w%%%ddœ%!>Îíï^Û5dk \¬â Å PlÐ0ò¶éÄy›?|÷uÔ’ýhPË4«"}-,T¬j‰È:ô´|Ê–¾|a˜Rƒ £Í7c¥ï e¥¥Ö¶äááÁÄûïã7ßúö5¯z½yËV6oÞÂØ±·`Ðë‰m‰¢(5úìöÓ,]öšÚ®«þ.vq8¨X^'–þ«$™PK¥¨Ò¿C‰¾£ŠJQYÃ4æ!™ö­ùlfÅ$L®Ìί£ßµÁßÏ??§µ±šÓOO?cU@‹Š 8}:¨òU¼êc 4ºør¶} 4ÌpP5¦Je]Óñù$¼Y3víÚŸŸfËœNF£VST\¸_ ððÐLVN®u ˆÒ2s;Ôj5£ Œ‡‡ûVû«žjoŒlϸE[¹ó‹mÌ¿±3?ÝÛ‡Üb=¾^<Ë7Û³%ezÞ'÷eogÍÇæ¥ñ·•o ñø‚++&%+×°ãõ‡\ŽH¿fôiÓ“ÔS;‰ 5/2´dË^þã-<ÏšùžœÌɤO›ž ²G -Oý/· KÁSÝ£tx™OÁW÷ÛùqÕè‚«ì¸cìº ½–÷^É}Ó¦ZÏ[Žw¬XFÇ& Z,s?}ô=#îºÊœ¯ø™‡W½ÀÚ¦°èù\7—7f IDAT+µZ?Ψ¬šQ¸óùG˜ûÈ«„µ»žŒÔ¯÷ÌÇuŠÿ|PŸƒ·¯ŸCP§ÓSXXL\\|ÍÕ€¢@||Š]:wrìI‚ø¸¸z/Ñb;'ÐòiP¶Y ƺ¦A¥0’P¢·7 X¬sXFþbÝq†’Z,þdªH Ç`Rñæ=öVúûÆ~O‹ 5¶†d¥à,©é§™òáv~ý.ÎÙÏ9rþ|ñÕb^~õ5T’D‡í¹ýöq¬[·ž>}z»ìßñÂ0®XÍ]õwqÓxJ A…„yÕ!$³“PPÉù¨²d”¨QÈJ’¢E%U˜¦ û•¿Ìw˜—W…uB*¿3ÊÊtvþêÛ¨ì,‚6_çJJÍ/ò’ó˵ú(™™™¶Ó›ù˜Ø¿Ò¨d’UȲēŽaäÝÏñäƒcZm¯ŸOÔj5±±qdfž%** Y–1MÕ¢æêˆ$Iøùúâ¡õ ¤¬”œÜsÖ•Á`ÄßßРà*ûžo†·dîõyxénú¼ý÷ö‹gpb8Q*‰BÙÈñÜþ:”Í5#U ¬¼åƒÚ f]mþÒØßÉb0 Å+剿Þdáù ä}.–Œ³gÍ#læ*å#E!>.¶žJ™Rå—mßÁ‘%°ÚEM‚2£¹›nQõ&ùwå׿¥ÆÚté-CA+ÚÀÝŸuèsÉgOa’õêl`ÈóæíÞV¾:“¬P¨ÓTé§4AƒV‰kÑ_rý¨ë\ö_Ùߨ[oqx¾2®ú»Øi4%PëéÍšwïa·–)ƒèØ"_oPù“iLfÿº/Ùst=ùŶ_fX<»öoþ¡VU4˜ìœ\ZÆD‘—_`ﯞmÊÖ"h;U6é9q2Ýšf}÷% &7'ooì|VHPñ»´¤„ÐÜIV#Ë #†fÄpó—&YVhņ_Þ·>oÃ!F7Â|À𠥏¨ˆÃ‡£( Õ¨ oF@€{·Ï¨Œ$Ixzzàá¡%ÀÏÏîšJ¥jRÊŸ-cR¢é¬¿3ë¯#<û‹}Ç3)Ÿî-ƒhîç$††GëéÛèÊŸ-¯ |”Œ”Lfm]ÈšCÿBÙIó/Ô¦'o]ñLƒ[-Ì¿g mï´·þ­~k*~7Ïgó«×k tÆ A](ËËcР.Ös–ã²¼ê‡@6w|´¥ÿë΢Y_Õè÷º7¶4jzõQ$Ÿ®˜@˻¬ÓóPå‚PKK+^S«Õ†ŸŸk=gÙCU¥öp‹hÆü^‹ 2"©¯Š·p}æb· @‡dóœ{E–í~Û†4mtFoM¶_<êÞ»~s⻆“Š/5z-,Ó`0)´¤}ôPm>oY¸°LãrcêÖ¥ËÿÙ»ïø¦Êý㟤M-mii -¥¥È(«ÈP6È”-¢"(‚\·à@q^·(·^A‘Ÿ"\ÊÞK)Cö’){ZJKKWš4ÉïÒt&9i’¦…ï[ó"9ëùžsžœžožçœC›[[Kå«"*- ñ¯J|λþðô†=_£Ees]xx(IIÉ?ð^H,ºí¶Z­6NJJ*=»ã凅’t©h¹‰‰Éx¨=HLL.(ó’ce>ë/55Uñ¿Ós¹š«ÇS­""Ї÷v_íýÔþú_ùϬLuüà ZúÊþèY©bUìœr=_Ÿg¾°]l(;§ÜCl`ÁwÐÝ-­;Üɾm«Ê$|ÚôtZw¸“ªr5š3’»ªXž‡?ÒJü ‰-xÃC®½lÕi|}ËþM ,ý¸$ç2™ 99Ùîy‘˜˜èØnpÕ­+(ÀGÍtÉr [ K=i¢\zƒšÉX™Bù£TF,x$Ž´ÐU •–VE…-r7rùÁA.Iêìuï=£Ü‚¨d‘A¾Dùº; ³Ò]CEA"¸zRw‡a‘aüÓV¯ù«*  ¥E¸àæaU©¼ê¦:&€.e*¼ƒ­mãÿ·íÅIRW-ÝÔI B!„7 µZ}½²é¦ì•©öð°úx­›‰$B!„â†SØH+  V« &//onÆ›å „Ô®-ÏÎD’@!„Bqƒ‘. eyj¼hÙ2žm[·Ò¬Y>>>Õò9Ÿááé‰!ßÀÁû¹£Wot:»Cr» %¿ý<ÇÙqá0©—Î!ÛQṲ̈þWm²„’–ÏÛÛ›ÆMâð¯Y“m[þ"55õ¦iS«Õ„„ÔæŽ^½iØð²³³Ý’Û•wFÍ¥K—t^i$–9|º’‘~ÕÝ¡!„B’*áííSð¼á›ìÚ8£ÑˆN§C——g{âjL§Ï§nݺÃ\ çú+»Øû\@+™ž¨¸f-$B!D• ×ÿ)——§%/Oëî0„›I(„B!ª-iýÂ~’ !„Bˆj£x«_!I…°$B!D•§*üßötE“+š®Ø?–§³9mÙéÊŸVeñ£Ját%?–M¹ÓÚž®`…-Qf°…¥Z`}Z+koe:Ë£mì%Ó•DAmR0]Ñd¶§+˜Ìòt’ô áI…Bˆ*ÏTø¿íéŠ&B!ÊusÝH!„B!nr7LK`rÒ%ü½ÏÝa(Ò2¾uµ‰µ*jßšð:u힯:ÕQD¾/B!„¸™UôÜךjÿœÀâ'ö÷íæhl+þ [WìЛÁºÕ+åÛ¯x騥Qõ£]ŸpŽóçβuóFógù¾!„âfdϹ¯Òç*NO<áhü‰mxK™a…'÷÷Ž|Ð 9î÷_þg~/'¸ö[·z¥ÍíVXG$ù«Þ$!B!ÄÍNɹ¯S“ÀS'OÐî¶N\ûíÚ±­D"XxrÏý¸1*ç™÷ëO€œÜÚËÚ—AÀSñ„P¾/B!„¸™ØJ•&võùLK½âPÐR»Äç-ÌëR˜ ʉ­2½ûõ77‘ßf’Þ¸¢êG5jt‰dP¾/B!„¸X:÷µWµ¾;¨Édºá^ÃGŒâÀßûX·z%ÉI—ܽ‰…¨²¢êGÓ±K7ù¾!„BØ©zÜý¥”ïcø}#Átc>iø}#˜ÿÛ/€´rØRø‹Hñí$­€7iB!Äͦ¼s_{UÛ–@ÓMðºû¾‘ø{Ÿ´paCñVAù¾!„BXW¡–ÀÒ×è¹Âo?Ï¡w¿þÇ›Jµ®9´Üéú<²Ø©qU¶a÷ÞÏÂߤ…Ck¢êGC—nÒ"(„BaC…»ƒºë&1fåtíýÈÒŸ¯šÀÚ™Céó¯E••K »g çͪމmHíPEÓ¥^I©”å(±ü‹nVÇ|v£Õñ¢ê’DP!„®TÏ}ËS¡$°øÏÝ¥t ˜oRc2‚éúC/T€—_Ñõ`åÌ»¹ó‘•¢SÝuÏUÑD°t«li*UyO"qÝr”èóÔúr‡_5å_t“D°“DP!„®TÏ}K«Ph­›f¥)µÑôùj &+7C§ËgèÍðò  a,ýæ?þ»;"ÅÛÇÇü>O«U<®´»†ßÇ¢ù¿7扭++zqù&F _:/¿ĶP”ÆÄÄ0oÞ<ÚµkçŠ0+ìÅ_ÄÓÓ“)S¦¸;” )^J­+NA!„BTu•uî[žj|c˜’ÿé I`ߎÔ£#·OŽoQ¿÷—4iܨÌ<Öþ»µM¼}|ðöñ!4,ŒûFÜÇå”Ëv-£ð?(zœ…·y¸·yxyëTÞC‡ß[ån~¡R©¬¾”²õø gÉ7¨1š(÷å傯/„˜ØæÌÿä«Ëy÷Ýw‰ŽVv÷Ñzõê±k×.g„S(ÜçÅëJ¥²«.ÈÍb„Bá ÕíÜ·<ÕòPö’@­ÑƒþØ~ >­VOÛf‘$×Û<Í-=&ÛUÆÌ™31bgΜáÁä•W^eæÌ™%¦ÉÏÏÇÓSùf,~b[zç*Ý×Cî¾—% Z5ÝÝÂáª~Ê®¤7ª1ÊW© ¤ÕxóçGûY]ÎC=ä´˜ì­G7 kß%¤EP!„ÎTÏ}ËSm[1™J¼tz5#ôh߈¾â9àV¶½Ò–>4¿fjXf>k/µJ…§‡·4lȽ÷ÜÃÁƒÁd"::š¦N¥sçÎÜvÛm6—“›“S¦[ñZ•JEnNŽ]± v´pTÞ¨ÂæWâ•4ÞúaíÇGûñßa0‚Ázƒõ_rbbbÌ­{uêÔá?ÿù;w¦aÆÜÿýèõzžzê)’’’2d111Ìž=Û<χ~Hûöí‰ààÁƒtéÒbbbøá‡l®Ïž={hÕªµjÕbРA¤§§—áÂL`` uêÔaòä¢CêԩôiÓhÒ¤ þþþ¼ð œ?žîÝ»S£F z÷îMff¦yz{â;{ö,ƒ& €Zµj1fÌ›ë%¿ÂÏ¥¿/ö$„Ò"(„BQRµMKw“Ô<È7šHØyœôŒL^kÁc3_ƒ´¯áì'\\û ÝGÜKÂíHx£- ¯·%ávV;qš®—“™•Éšµk¸å–[ÌÝ;wíÞÍúõ²k×NEÝ8sr²ËmV©TäädW¨›éàaÃåĶô5ƒÉüš±t +÷\â‹Gnå‹Gn¥Ã3ßa0t1¶Ç¾}ûظq#ÇŽãôéÓüïÿ`Ú´iÔ©S‡%K–pæÌ™-ˆ;wîdË–-ƒÁÀ€hÔ¨ÉÉÉ\¾|™'žxBñ¶,²7,$‰ B!D‘êÛÿ¬Ôy ÎàÁZßB-OçÁm FCÄõK·šŒ¸¿Ä|ËŸkGÏÊ¿VëùçŸçÕW_%==Ö­[óþ{ï™Ë}òÉ'ÑxjÊÅÑu±Çໆ³tÑ|@ºº)‘²c½c‚0ù‰ÐÛÆ’’¡3»µY6~ڃфÎFK`iãÇÇÃÀ޽{³oß>›óL˜0¦ mÛ¶¬¬,^}õUÔj5íÛ·çà—_~¡sçÎåοmÛ6´Z-Ï=÷*•Šîݻӷo_óø;wrúôi&OžŒ‡‡<ýôÓÌ›7{î¹€I“&DPP]»v¥E‹4iÒ€ádzsçN»ãÛ¾};IIIL:ÕÜ͵cÇŽölN§“®¡B!„ªmXº5@—¯Æ`4±ãï“´n\½ÁyYmF@m£êú¿˜Û@õË^¾ýöÛ »ë.üüüðóó+Qní»Z$üüý˾°Å#;+Kñ²J4ôn–-.x†œØZ—{bõG¼É¹¹ïÂmcÉ7Ë7}Úê4:t FL:£ÑÈîÝ»ùé§Ÿ¸ÿþû­Îc4Y±bgΜaÙ²eæñ;v$88˜·Þz‹ÜÜ\Ž;V¡ÇUØŠoæÌ™¬Zµ €Ûo¿ððp^}õU´Z-z½ž­[·Ú]fñÇB8ó@)× !„Â*ãÜךj›–~ŽÆË¯~i~ÝÚûUòóM}rÓ!÷ú¿ÙW!;rÓ þ;J~¾åçr˜Ê)§xk„Ò=O$óÚ5óðÌk×J¡œæ:`ÇömË9y⸢ e^˰·µq5`ðPV,] HW7³k' jÞ’ô ×xó£ü_£ÛªKÖ¶ŒÅº^ÿׄÉfxæÌóû¤¤¤ãþýï—øwdíªåÒÊ!„ Ò*(„BˆQõ½1ŒtuHŸ;°vÕ ü½@Np…(GéVAù¾!„¢ºsi謮Ÿå‘î ÎÑ»_óûu«WÊ ®&ƒ€$„B!„¨Ö\–:«Û§¨<–B!DIÖB!„Bˆª®w®TŸ=s†]»wq%%Åê|jµšàÚµmGtLL…ÊvÖ9¨$7 #‡Ò¡SW2Ò¯º;”*ÁžðÛõi¼z$xB!„¶³gN³yófz÷éKƒØ†xxx`21™L˜0‘¯Ï/xo2’•™IRr›7oƤ‚˜è·Å-ÝAÅ Ïžðñ;‚Ý®B!„¨&þücñññ4nÒµZ!?Ÿüü|ôz=z­6—ÜÜrrrP©T„‡…Ó &šõëÖº5ni 7ÞÞ.-3õJ !µC-ÞII¥R‘zÅúC7•»ƒ wºóƒÇÑêò˜=þCê×®ëæˆn.gO¥]lsFuèîPÜBéúÿ¼y9»NâÓ‡^rI¶–*ùïΟι”‹øûú±ä¥ÿ*Zî³³¦Ð©q<#:9çÎy w¬cÍþ­Lä §,O8ÆÙûWˆÊЯ_?Þ{ï=1™ŒÔªÄï¿ÿÆæÍ›ÝZ ’–Òºg›ÓìûÓñ¸ï›æÜñâVLú4T¨ÌÃÊé‰C—g6/­V‹y˜N§ÃÓÓO—–z%•JU&tVÒXÙ~ߺš?nã›Gß*1|íþ-èòõ lÓÝîe<‚o×þÆÑ‹§ñòÔСQ+þ=ü g…ÌÑ‹§y|Æ;$¼=ËiË,´êµoÑåëéûþ£N_¶¨\Y¿œµüذz¨U®ëdkùs6.á–ð(>ó Ï›ëÔÄÑýçêú娪ŸÎ6tèPŒFc‰îŸAAA 0“•.¡®º ¨%7בV¡sæÙœæûß’w_»—¿ï›ætŸ0SÞEŒ@ ó)LƒT@ñ”hÁ›èõÆq»ËQJ§Ó¡R©ÈË+h­P©Th4Ôj5¹Z-yyy <<<ðööÆ·X²è ¥Ag&€ -•Éh42oûëu¯yØœKèÙâvóçKWSX³ cºU´Ì“Iç™øãÚ¾'Ï MŽ.—{79=v!nfÇÓ¡q¼Û–ùZ}[u"ȯ¦ËbBˆªÊÏ´E’@ Œ¾Çæ4J’Åò´~â ÞlÄݯk6òã§we'îz½ÞüÙÓÓFC^^999øúúšÇåää¸,,|ïLÒXy6Ù…Éd¢Góöæa]›¶eÚê_Ñêu˜0±åè>é5\ñ2gmXD|tžî7Ò<¬eýÆæ÷Z½Ž/WÌ1—ݵi[žø>^Ý™'ΞJLhg.'rôâ"ƒÃ˜<òYB‚ILKæ/‹úè÷x{,íoiÉG¾`>yÁ·øûøáåéÉò=É7x²Ï†¶ïi³|GY‹ ¾¿ß¯_ÈŠ½ÉÔfÓ:º)“†Œ#,0˜“IçylÆÛ,~é+ü}j—Ë]S'ðå¸×ˆ‹Œµ:¿’õWÂÚü¶ÊO8´“Ÿ6/ãLJ">oº6mÄþàëUt :’xŠoÖÌåHâ)|½|èß©D}ÉÒæðú/_°óäAbB#o?€<½ŽÏ–ÏfÓ?»ÑéõÄ„EòÒq4ªms½•Ô/GêÒúkmý7ÞÉ[¿} @›Øfeºk:²þJ–?qöTöœ: À¡ó'ølùljø+î œ‘Ê“3ßãDÒYZÖoÌëÃ#¤f`{ûfädòÁÂïØsú0 ÂêÝļÜó©I<ôßWùåÙ¨Tðã ÁhàîŸã…Ácé×ÖflÖ¶Ÿ’ýg­þ+™ßZýÞzlÿ]õ >/2r³x Ë@þïÏÄ„Eòù˜Wðôð°ùýpÆñÕ‘ý«äøeíø`ëøRº;õÚý[˜½q sÆO±¹•Æ'„»8= lòFB¹Ã¾×ÃÙE¹\¸ /‰ëõÆq¼×ˆa/}Xb˜;˜L&<==Q«Õ¨T*<==ñöö&;;s !€Z­F«Õ:= ç'…¤%°òü¾u5wßÖuQ7☰Hè:ˆ7ç~… xç¾ñ4«§hy&“‰Ý§ñXï{-NóíÚ¹8œÏz•JÅû ¾eÚš_™8hŒyšõ‡vðÕïÂk¿|Áì KxaðX"ƒÃIx{–¢îJëmçîÛúðûÄOÉÖæ’”‘ª¸|GYŠ`æŸóÙ~b?“G>KM?æl\Â[¿ÍôGÞ a(ƒBØzl}Zu`Û±¿©å@Óˆ6çW²þÊסüùm•Ÿ—˃]Ñ$¢9yZ>[>›ékæš·oRú&þ8•Ám{ðÒÐqhõ:ÖíßZ¢ìå{6òÂౌëy7SÍT¼ýíüƒýçŽñù˜W¨åÀáÄS¯c.MIýr¤þ(­¿ÖÖ¿{³ö$¼=Ë|Í^iެ¿’å&…OÎ|þ­»0¤ÝŠ—q^c† IDAT]hÅž¼1ü ê‡FðÙ²ùÏâÿcêõ$ÃÖöýdÙdis˜ùø»\HKæ½ùߘOQ!uhß·›“€=§c0èØHY«©µí§dÿY«ÿJæ·U¿¯d^eú#oòÕªŸX¼óO¦?ú&ÏÏšÂá 'iÝXÑñÁÇWk¬í_[ñÙ:>Ø:¾Øbëû¡ôø*„;¸¤%p÷'%[ÑÚ¾P±3wS«\»ü^oga©D°¸}ß4ÇDÛ{ÿri~~~‰¯/jµÚüÒh4 òóó1 æé5Kãq6i ¬ÏŸàôåDóçB_¯þ…,m#» $ßϪ}›Xp;ú?`s™YÚrò´„„”;Þd2±fÿž8†Æ1Œé>”—þÀsB}½u¹G³Û¨@·¸¶,ݵÞîõ æ¡îCðõò¡v@-Åå;ÊRüúü|l_ËG£_$.2€gŒfà”'¹x5…ˆZ¡t‹k˦#»ÍIàæöÐ-®*•JÑüÖÖßåͯ¤ümº•XΰÛz1+a‘ùóÒÝ Ô¯]—§úÝoÖ°OT‰yº4½ÕÜj3àÖn¬Ü»QñöKÍÌ 28ÜüË~·Û­?JUVý±´þJ¸rý¥k\[:7mÀ£½îá©ÿ{Ÿk9YÔôõ³º}µº<6ÿ³‡GO":4‚èкǵã\j’yÙ}ZubÅÞæ$ðÏC;èÞ¬½âëÝ~¶ê¿5¶ê7@ÝZ¡Ä†×#.2–´¬ ¢BêÉåkiŠÎ8¾ZciÿúzùØŒÏÖñÁ‘í Ö÷¯=ÇWQýýçÃÉšoÝê•vMïÌn£.IS z ¢R•¼¶í`~ù-,-<¯¸" ‡¹ö–( A‹1¤¦³û÷Î.M½4¼½½ÉÈÈ ++½^F£ÁßßrrrÐëõæ \íù¸*–ÀÊñÛÖUô¿µ‹¹Ûa¡QRË?À|c˜?ÌÕ¬kN)3#'‹lm. Â"ÍÃbÃê‘“§%=ûÁþÔ¾ÞuÀGã…V¯³»¬¦×ÿˆW¤|GYŠ?1-­^Ç„ï?(3OZVµBé׎çüyzj•ší'ö3eÔDÅó*oýíQÞüJÊ?zñ4ÓÖÌåhâ)ózve„‚»J¶ˆºÅjÙu‹­‡¿¯]Û¯g‹ÛyîÇ)<>ãZÇ4¡SãÖÄÇ8~wh¨¼úciý•påú+õæÜ¯Ø|t/Å3yä³%ÆG‡F˜ß×Àd2qñj uL&«Û7=;£ÑHL±ù„Õ+‘ölq;ÓVÿʹ+—¨[+”MGvóþýÏ(ŽÏÑíg«þ[c«~xyjÌÿ¾×xz’§×)>>8ãøj¥ý[X–µølÙ¾`}ÿÚs|Õ[dÝ:´lÆË ;n¨¸sû6·\ XÈ%I`b¦e“À¡>*wú“ÓvE øºÅqéË+–ñ—ÇZ7Ð;^=Êú›°ï›æ.½KhFFW¯¦SÓ¿&>Þ]=¯^M0ß5Ô`0——G` sNL*‹´ºÞ¥«)l9º—Ùׯ“(®–±aQŒ†Ãlñ÷©¯—)×ÒŠOUªEÅ„ý?dž ¹ƒ­øMúÊâ 5šFÆRÓן]'âáቷƋõ)ž¿£ëom~KåF^ûå z¶¸÷FL À× ‡wòÕªŸKLWzû”Vú®”öm¿Ì}îc¶ßÏÎx~öT^ú}ã;Y-³*±µþÖT…õ¦ÿƒ<Ò« ‡‘¯Âkm•´¢Nâ¡.Ú>ÅßÔò  ]Ãæüq`M#àëåC«b× ÚŠÏ‘í§´þÛb©~o=¶ÏÊ\EuÄÖñÁÇW{ß¿öÆWHÉö-¼{{¡Ò¿+Ù¿JޝB¸ƒK’À󙺲·¸¤ê&{–d¯œÌéœòÇ]Ð:¯K†0å]¤ÇÄ‚® Ÿº.ÌÊÊF­R“m¦V©¹v-___sK``` K®t%i t½ùÛ×Ò±qk«¿l6¬eqœ%*•Š6±ÍøëèÞroBXÃ?_N_N¤axÁòO]¾€¯—A~ÊM(:I6šLvuÁSZ¾§Ú£à¼Nþ…<28oϧËõîR¥©T*ºÆµaÓ?{ðôð kÓ¶æuT2¿+Ù*?åÚUR3ÓÙy¾~œ»r©Ä4±áõØu²bÇE¥ëX£&ýâ;Ó/¾3~>5Ørl¯]I¥úåîú«”£ëï([]ϦÕ‰s)Q«TÔ­Š¿O «Û××˵ZMRúkœ¤v“,®O«Nü¸a¯¦Ð³Åíe¶±­ølm?KûOIý·6¿£ßog­Ÿ–ö¯ÆÛf|ÖŽJ¶¯·Fƒ.¿èÆy©Yée–ciÿºûø*„-.y(Лӗñæ´eÿN_æŠ"*…pK Ë/gØ÷Msº?ñÝžøŽîå¼L9'̯îO|g5at„^¯';;»ÌË`0 ñô$$8˜ÐÚµ«]ÒèjÙÚ\VìÝȽú¹dùc»eï™#L_ó+'“ÏsðÜq>Zò=PàônÙ‘7,âØ¥³¿t–ÙÓ«eÙ5kƒQ«Tl<¼ ­^G~±k`­QZ¾Z­&6¬+önâJf:™¹ÙV–ªœÆÓ“»Ú÷â‹ÿclj\ÎHc牼7ÿ›Óu‹kÇ–£{ùëè^º7kg÷ü®b«üZþøyû²ûú EΧ&±xçŸ%–1¸mÎ]¹Ä´Õ¿r1í2g.'òýúN)`Ùî l<²›”ki¿t–¿Ï¥^p»ÖÓRýrwýUÂëïj›þÙÍ–£û¸šÌwÌ£cãÖÔôõ³¹}}½|èÒäVæm[ƒÑh$9#•?n/³ü.MÛpåZ:ëm§W±ÇÝ(¡dûYÚJ꿵ùý~;ëøàhý´´•Ägíø dû6ªÍÖc£Ëד‘“Éê}%Ÿmmÿºûø*„-No ´vÐâw­ªw -þ x>7׬õ‡øí-Ë×ÞûZÑMc~ÿàUú½ãš;ˆ¦roøb4V¯ëÿÊ#-®µlOÁ…÷­¢Ûž¸Õæ“Ñ/1cÝo,Üñ^ž:{ÞØ“}FðùŠ9<7ëCL¦‚¶âP"°FMþÕs8Ÿ.›ÅµÜl»na®´üç>Ää…3X¸c]¹·Ê¯¨Ç{ߋƋ–ü@jV:aÁt-uëúVõ£V«1 ´.u=’’ù]ÉZù^ž^»û1¾Zùßý1ðÀÚ »­7 wþaž¿NPm>ó߬™ËØi¯ã­ñ¢o+å­T¶ÖßÓÃï×/àBj>oº4mÃ]ÙµŽÖê—»ëïèÿ¾Âù+E×ÀÞÆÿ÷‰ŸìðúÛZ¾3 ¸µ+s6.áDò9⣛ðâà¢^G¶¶ïÄAcù`á †ò!5ƒèØ8ž³¥Zƒ|4^tiÚ†CN˜o0£”’ígiÿ)©ÿÖæÇ¿ßÎ8>8R?ÁúþµŸµãƒ’í;¼C_öž9ÂðOž#&4’®qíH8¼Ã<ÞÖþu÷ñUT¾—ÆÛœ&·®òGç(QÞOšK—.é¼4Eùá©“'hw[ÒR»KÃ'àêo“¨ußGœœþ0MÞH ÿÊi›ÝDƒCj³kÇ6b\Ü»nõJ—^Hùýo }Mü­O÷ÙôyzX¼R«ßjdNíI>H‡N]ÉH¿ª¸¬k™™\L¼„Ÿ¿ŸyXvV6‘u ¨Yõû²—®ëV¯ä¾Q£øpÞ1»ÁàëI`Zê›ÓÜ, F£¾x‰ÇzßK¯–ÜŽB¸ÄÄÙSiu ãî¸ÛÝ¡!ª€â9ѲŠ+|c˜AC‡I W}Ë?ŽèÎ}bN ÏAûyN¹ùNŸOݺu‡¹@ÎõWv±÷¹€¶Ò_ë¾¢›Ã´ö¨ìY1g+ÜÄu®l,P³&DBJJ*z—WµIm‘–@×IÍÌ``›î%/„7Š,mûÎüÃßgŽ–hBˆê®R_]n ãÊÖ={UFX( fÍ"é+M® t°À¢g¿ !Äfâì©$¦&ót¿‘rK!Ä E_…UVòw£“–@!„1ã±·Ý‚â&¡;÷I¥–'‹7³žš\fšª¾}­Å§dýY¾-î>þ!*¦R/„;HK {ÍÙ¸„ž-n7¾t5…5û·0¦ûP7FUýthO‡Æñî£Âª{üî&Ûϵªúöuu|U}ý…ÎWéÏ ®׬…]Š¿ÑIK {umÚ–i«E«×aÂÄ–£ûx¤×pÅó—îθvÿfo\œñSÈÓëølùl6ý³^OLX$/ G£ºÑŠæO8´“Ÿ6/ãLJ">oº6mÄþàëåã”õW²üÉ ¾ÅßÇ/OO–ïÙH¾ÑÀ“}F0´}O6ÞÉ[¿} @›Øf%ºk%¦%óÀ—/›?÷x{,íoiÉG=t6K›Ãë¿|ÁΓ‰ `òÈg fë±}üwÕ/øh¼ÈÈÍâ.ù¿?Éçc^ÁÓãÑÈ÷ë²bïF2µÙ´Žnʤ!ã VT¾µø I<Å7kær$ñ¾^>ôïÄÓýF*ÞÆÖæ×êu|¹bŽìÂd2ѵi[žø>^Þ@Aýˆ àÌåDŽ^U·ïƒN"-îÉ]q6%‘³)Ùe Âê9mù‹vþÁþsÇø|Ì+üòìGŒî6“Éd{Æë²óry°ë 挟Âc_å|j2Ó×ÌuZ|J—¿þÐvü¼kðûÄOùßø)4¬S€îÍÚ“ðö,ë}o™y"ƒÃIx{ß>ö oÏ"áíY%@€å{6Ò¯u¦?ú&&`ö†%æqW2¯òúÝR‡Å;ÿdú£o’t5…ÃN0óÏùl=¾É#Ÿå‡''ìÈ[¿­¸|kñ$¥_aâSiÑ€žzŸOǼ„§ÚCéæµ9ÿ·kçràüq>{èe¾û*ÿ\<Í´5¿–XÆúC;˜8h,‹^úŠ@¿óöiX'Šð ¶ÛgžvÛ±¿©å@Óˆ6·OÉ2Êß¿¶ê¯­íçÈú)a«~Øóý™•°ˆ­ÇöñÉè—ðõS´ýý~Ô®„Æo¡5k•gkû*a2™Ø~|?/ÿô)c§½FRúšÕkXáåÙŸµõsÆò-Õ%ß%õSáÕ¾%pÝê•îA¸Qï~ýmN#-îõõê_ÈÒæ0²Ë@ò ù¬Ú·‰õ·3¡ÿNY~jf‘Ááæ–nmíš`›n%>»­³9%6{–ÌC݇àëåCíûNæ¬éÒôVºÅl—·vcåÞæquk…^¸ÈXÒ²2ˆ ©Cth$—¯¥¡ÏÏgÁöµ|4úEâ"cxvÀhNy’‹WSœòð쥻¨_».Oõ»ß<¬aŸ(§Ìo2™X³ ÏCãˆÆtÊÇK๡V©èÑì6ê…„Ð-®-Kw­7/«[\[6ÙMŸVØüϺŵC¥RÙµ},í_Gê¯3ÖÏkõ”×ï¹[V±jßf¾|ø5jù(Ú~Ž~¿>ùœù}û†-ìžß’ì¼\VîÝÄÂoÈg`›îL2ŽÚ5ƒœV†®Z¿B­?Jë§Â=ª}xûÿ ˆGoÓHK {ê¾æ8¼<5æ ßk<=ÉÓëHLKF«×1áûÊ,3-+Ã)Ià©ä ´ˆºÅê4Ö¶¯µù3r²ÈÖæÒ ,Ò<,6¬9yZÒ³¯ìPâ¤ÝGãUbûtkÇó?þ‡<½µJÍöû™2j"€]ÛÇÒþu¤þ:cýl±V?@Yý>™tžÃNÒ0<ŠšæáJ¶Ÿ£ßoWZó÷_üwÕÏŒì<€G{݃Z}cv®ªhýQZ?…îQí“@{»…ˆ›´ºWá¯þ±aQŒ†ÔPQò×âÒ_ù¦‘ ˜ûÜÇl;¾Ÿ'ðü쩼2ôúÆw²9¿Ñhäµ_¾ g‹ÛyoÄ|ýØpx'_­úYq|ÏôGzÝ€o±k]ìY~á ¶+”¾ëŸ©ôó{ÊU4Í¢I_äWÓÉQQÙh°´}•ÎooùÅ·OÓÈXjúú³ëäA<<<ñÖxÑ¢~£Ó+Ù>–ö¯­úë ÖÖ¯âLŠë·ÆÓ“/ƾ¿ç~ÉO›–›[D YÛ~•±}*êŽæ·“‘“ÅÒÝ l9¶AmºÓ¯usWW%lߪ×Ô!„»ÝI »#U´V ë(ïâWœ·Fƒ._oþœš•^fšÀ5éß™~ññó©Á–c{Í'‰ÖæO¹v•ÔÌtFv`>q;wåR™å{ª=P©TæÖÒ,uÝTº|G&yF“É©]¬"ƒÃñÖxqðüqº4mã’òcÃë±ëä!«ÓXëkmþÀþøùørúr" à êß©Ëðõò!ÈOÙ*•Š®qmØôÏ<=<èÚ´­y•n[¬Õ_ëó9¾~ŽPZ¿ë×®Kãˆ^ü0¯ÿò›ÞJÃð(ÅÛ¯¢ÛÇÕ‚üj2¶Ç]<Øu0ïdáŽuÌøãwºÇµct·!D‡FØ\†’ã[Ugéûïîú)„°®Ú÷]0™Le^gï(w¸³_ï>ØÜüªŒòäUö¥„½-¢jiT'š­ÇþF—¯'#'“Õû6—¿l÷6ÙMʵ4Ž_:ËßgR/¸Ž¢ùkùàçíËîSIÄùÔ$ïü³L jµšØ°z¬Ø»‰+™édæf+Š]éòŒZ¥bãá]hõ:ò §,WãéÉ]í{ñÅŠÿ±ãÄ.g¤±óÄÞ›ÿÓÊܶç®\bÚê_¹˜v™3—ù~ý§Ì¯R©èݲ#?nXıKg9~é,³7,¦WËÛíJV»ÅµcËѽüut/Ý›µ3Wº}¬±U­qÖúU”½õû¶[ZÒ«e¦,š‰ÁhP´ýÙ>•ÅÓÃ^-;ðßý›iÿz§†½gŽ(š×Öñ­:°ôýwwýBXWí[å$¿~ú÷Müšè¦í]Vîä‡Z2ñëE¬ÜSð«çÆéOòù¯\Vž¨8i ¬Þ†wèËÞ3GþÉsÄ„FÒ5® ‡w˜Ç{zxðýú\HMÂGãM—¦mx°ë Eó{yjxíîÇøjåO|÷Ç<Âk3ì¶Þ,ÜùG™8žø“Î`áŽuŠoÕnÏò-ýßW8%Éü¹ð6ì¿OüÔ|íU`šü«çp>]6‹k¹ÙeáˆÇ{ߋƋ–ü@jV:aÁt+y-¶µòmÅ_'¨6ŸŽy‰oÖÌeì´×ñÖxÑ·•òV[ó?ÙgŸ¯˜Ãs³>Äd‚.MÛØõø €Võ£V«1 ´.u=š’íc­úkkû9cý*ª"õûé~#;íuþ·icºµ¹ýlmG)ù~Ù£QÝh^ú/ÅÓÛ:¾9;¾Òœ±|kßwÖO!„uåý£¹té’ÎKS”ž:y‚v·u -õJåEVLpHmvíØFl‹ÿ×­^i¾+äÇË.–™þññ3艨ߴ]™ñö¸¿fÉ[ÿšYp:mÖ)Vî¹ÄÜ À³3÷2¬[ç2ó¿4¼)?%œ%15ס8œm@»ºL°z·ó»¦ÙãÝ[’—Ï_‡¯°ùPŠÝó¿8¨ »Mñ:Qøù¾Q£HK½bç5­–™–z…à¹nP!„âfT<'Z¶x!-[Å£ñòÂÃCù#Žvn߯ ¡Ãì.»ðô·Ÿç”{—|>Ÿºuërœë¯ìbïsí дì `ÑÂù,ûfgì*w%¯þ¿ÒêîJ¼FøÿBñÆÇ¾;зcŽüß“å.cíÞd®fé•÷ʽqD†øV8^»^•QŽÀôå'Øt0¥ÂóÛ"-B!ª¬wîpì³BTÀ –X=X´p>Ë¿ÄÙ#;_cunÕõ×Jšum„þòäž™Nêþ¹°ñM|½òˆ:Wþ³ Ë[Þîidåê•]°Œò—c2™P©,³ûZºëY`U¸¦O® BqSzçxk}Qbgïg!„¨ jM µD 0¼kØpú?öê7±Ý54KçI~Xg^@øk jÜ&ÎIàâÙó¼˜È³3÷2¤sÇ2Ë{å¾füïÏ3\¸’Ã#[°éÐešÕ¤¦¯†óWr˜»á,£‰aêáïëɘ^1äM¬Ý“Äîi¼1²›§Ð":§šOüCZ> ëEDˆ/ÙÚ|ÖíMb×qëÉKdˆ/÷u‹&ÐOÃÙäl2sõdk æíè§aX§(Ôñ#?ßÄ_‡SøóïdÞÙ‚uû’èÒ,”? ÛÿIeó¡ËÜß=šz¡58›œÍì?N“§7Ø_é„îζuiÓ(˜^\ÍÒ±t{"Ç3Ë]°ý¼"i BQå&tP”ØÙóY!pC'P¾öê˼7ù%™²—Õé¯4¸á¿@cuºOŸ¾ ¾^D¯w—0ïÃÑü¸ô¸Å ã¬ìËôeÓ==¸1­Öb×±Tüuž¸úü¸ö®ä”˜¿^m_¾^z £Ñ„Z­blŸXvMeúòcÔ«]ƒÇú7"%CË™äòïXè¡VñP¯l:”Âæƒ—iPÇŸÝÙ¿¥˜[îËÑ ×˜½î~>ž<> —3´8]p»êfõùjÉQ|½=yfhê‡Õà·gÉÈÑóH¿†thZ›„ýÉxT ¾ÒIà…+9l8Lnž6·óÀ1¼÷ËAŒFS™õ¸¯ƒå[Ç’ç !„¨rJ'rö~B¸4 Ü”x„gö°ëüaΤ%\‡vQÍèÓ†®‘qN)ÃV‡À„„>øð? |ü?xzù(zÄiFŽè2¬Otñ'>}ú>½þqÒÿíµcáë¯Ã)®'<Ç.fì["¦ÂéŠÞ|(…|cÁÐè0?¼<Õüñw&œKÉaÏÉ4ZÇÖâ´…$+*ÌO5›^ÆœLÊâØ…LsYQµý¨UÓ‹•».a4™ÈÈÑó×áZűÿt:& a29:9:§“²HºšËåŒ<öŸÎ *´FÁ²*_éuÞ¦è9I»N¤ÑûÖ:ԩ勇‡ªÌz€í$PZ…B!„(â²$ðëÝK8—~‰žÚód§áÄ×áLZ;ÏfÙ?ÙŸtœ§Ûq¸]¾åçQ%$$0tØpzû€ð†·Z¶¸L­t×û7*ÜHµ(U1*Õ÷˜L×Ǩ@e‚€v­J,Ëd‚|ƒñzÙ&2sõæ8òtùøh¼Šâ2™ŠM[TRz¶Î<Ì×KMz¶Ž<}Ñ4W2´D…úY\?_/5iYyäŸrM‹ÁhB—oÀÏ×Oµšî.ºõ¹‡‡Š‹©¹æ¸Ó²òÌË×å¸Z,&­>µª`xEâÓç—\çÎÍBéÜ,O Æ‚®ªjuùë¡„´Þ<þ»êg¼5^<ÚëžJ/ûçÍËÙuê¢GG¸ÒÂëX³+Óyîù\ÿ¬„E\ËÍâ™þVxUeûZRÕã+TÑúaÉÄÙSiÛœQ]:eyÎVÕã»óƒÇÑê ~P=þCê×®ëæˆÊw*ùïΟι”‹øûú±ä¥ÿ:uùîúþ(­ÏYõÏUÛ§ºÔ?Kªú÷»ªsIøÕ®Å„Õ äå>£ñPÝ{¦Aíº4¨]—á­ïàÿ¶.æ«]‹™Ðn¨CeYêjNžLd£6Šo"¥÷}Áã fMÊdø{uóþæñ³î±8oͶó˱ôMP (¥,þ¹¼žv-GOŸ7u)_Ëߋ̽Åu¼–£ÇßGSb¼¿'éY:L&ײudkõLþõ€Å–Ò2qÓT{Eâ+Ý]vÐm‘|¶ðÉéZÞÙ0•»JHK`Õ°vÿtùz¶én÷¼Íx›º ÄCíÁÌ?ç3ë©Ée¦¹’™Îʽ›øé™©Î×n±aõP«ªï½¶‰ÿèÅÓ<>ãÞžUîø»oïÃÈ/^ddç~¶YUß¾ÖâSR«2[û×ݪz|Ö¬zí[tùzú¾ÿ¨»C±jÎÆ%ÜÅçc^Aãiß©£’ú_Õ¿?î>þ¸ªüêPÿªó÷»ªszúóÂAÎf\䡎0ª ,?²‰—|É_?É‹K¾dù‘MUê8€³ùóÂA‹ó IDAT‡Ê³tÇȡÆÓkìd"®'€ö¼²uÐg>‹¾ÿŽfÄ«÷¡ÍÒ£ÍÎG›­G«3àa ÁÃÂÜ ‹ÍïµzC9±X¿fññÙÚ|‚kzY½{æé¤LtùFzÅ×LÔ«]ƒvBØ}"ÕâúœNÊD¥‚fQ˜L&jù{Ñ":Èœ¸JÊ$[›Oÿö‘xz¨0™L„zU»F¹1=Zâú0ŠÖÃÞø(˜ÓüÙËS>ßHêµ!qùZ-ë7&ȯ&~Þ¾N_~Uÿþ¸;>w—/nLNo L8½›nâ1©Œ¬8²%6ѽѭ<Ýé^6ßÂÈÇH߸ÛèÖ(ž„Ó»éY¯E…Ë+¯UHãåCϱïÑèV»[rt¯¥Ó›xô¥>d_Õt÷0AN^>‹·~ϨnãÌóü¼ñ{z·¹³Üò “œëYW‰i “)€µ{.ro—hFöhÀ¢-çøëðå2óäL|³ü(÷woÀm#ÉÎËgÁ–sœ¸xÍâúäL|·ê£zÄÒ·m]r´žM§(…iËŽrO×h&¹• .§kY¶ý‚…¸‹’¾‚u(L Mˆ¯dBx&)“¿O_åµ-HËÒq)-‡Ki¹ænµ¥×òmíNi t³®MÛ2mõ¯hõ:L˜Ørtôîôr6ý³›¡íz–^º»ÈÚý[˜½q sÆO1 àÌåDŽ^kn±ÊÓëølùl6ý³^OLX$/ G£ºÑl8¼“·~û€6±ÍÊt×¹–›Í ¾e÷éÃ4 ">º)ûÏ3wdzU¾Ñhäûõ Y±w#™ÚlZG7eÒq„ŒÏÈÉ䃅߱çôa„Õ#>º‰]ÛÍVüÖâKLKæ/_6OÛãí±´¿¥%=øB‰åthϼmkx¨»}—ØŠÏ^R“Y´óbB#ÔÖv«´­úãìøJK8´“Ÿ6/ãLJ">oº6mÄþà{ý&g¶ê#õCéþÍÒæðú/_°óäAbB#쪿¶âww|ÖœL:Ïc3ÞfñK_áïS€ì¼\îš:/ǽF\d¬Íýg‹­úçHüZ½Ž/WÌaÑ]˜L&º6mËóÂÇËÛ\þžS‡8tþŸ-ŸM@ §uuå÷çžOžcÒqÜÞ¨äe:{Oáíß§±ø¥¯ëõCI|GOñÍš¹I<…¯—}ã;ñt¿‘æñÖ–o‹­òmý}r”­úe«|GâsÆ÷ÛÑãçÎéIྠÿð¯.ýÉ'Ÿ„ã»éÚ(ž½Ë»362øönt”„ã»é׆ø¨[˜ù×R‡Ê+/Çðä§DÜÒ¦ÜqJäé=hýjþõtg²Òuû\&YÚ|FuÇÏ¿ ÀQÝÆ‘£Õ—)óÙûÌï_ùaO‰q+w&–ø¼óX*;¥–Vz(¸{æÇóÙµNg“³ùpî‹ã¯féøneùw7-Ãÿ­>Qâ󦃗Ùtðr…âËÒæóÌ86LfýßI˜€¹ÎXœ¾ôz¼wC›eÈ5îÉ]ñæÜ¯0ïÜ7žaõìZFíšAøh¼Q«Õ„Ö,{3 œ<-§“/Ð$"¦B1®?´ƒ¯~ð ^ûå foX ƒÇ°hçì?wŒÏǼB-¿'ž*ñCN÷fíIx{–ùšÒ>_>›ŒÜl¾{ü].g¤òÎïÓ¨¡¸ü™Îgû‰ýLù,5}ü˜³q oýþµ9‰üdÙdis˜ùø»\HKæ½ùߨµ}mÅo-¾ÈàpÞž¥¨»NÓÈœII$K›c>avV|¶˜L&vœ8À‚ëØ}êÅ3àÖnZVEâ³U­ÉÎËåÁ®ƒhÑ€œ<-Ÿ-ŸÍô5s™8hŒykõÇ‘ú¡tÿ.ß³‘e\Ï»™²h¦]õ×VüU!>KÖ‰"<(„­ÇöѧU'¶û›Zþ4h(ÛŽp$~€o×ÎåÀùã|öÐ˨T*Þ_ð-ÓÖüjޝ0éxræ{ôoÝ…!íì>¡µúïÊïO\½†»t¶LxìÒâ"˜?[«¶âKJ¿Âħ2¸m^:­^Ǻý[KLcmù¶Ø*ßÖß'GÙª_¶Êw$>g|¿=~Þ蜞ž¿šL½à0L˜ØsþÏtÉû3F°tûFžô-?lYŽ õ‚Ã85ÙÆ­+¯2EÜR±ÀB„³~é¦}±µÜñª<½9ñ+þoë†Ýú廼VN’ëlÒè^_¯þ…,m#» $ßϪ}›Xp;ú?`{æë>ùœù}û†e{$g\Áh2QÛÎìB=šÝF½pºÅµe鮢[±§ffnþå²[@[ÅËÕêòØpx~‘˜ÐbB#èѼ=§.—üÈRùúü|l_ËG£_$.2€gŒfà”'¹x5… 5ÙüÏ>=‰èТC#è׎s©IÚ–XÛ>J…Ö¬…Éd"9=ÿ:Ê“@Gdçå²rï&îøƒ|C>ÛtgÒqÔ®T)å²U­ئd²:ì¶^ÌJXTb˜¥ý““§­”úÑ¥é­t‹+ø^ ¸µ+÷nl×߈Z¡Vã¯*ñYÓ-®-›Žì6'›ÿÙC·¸v¨T*@Ùþ«(Gã7™L¬Ù¿…玡ñõÐÆtÊÇK๡¾¾Žr¤þ;2\d,ÿ$ž`ÅÞM˜LF¶éαKg‰«Wô²¥ú¡ÄÒÝ Ô¯]—§úÝoÖ°OT‰iY¾-Žü}²EIý²U¾+ã+dmû:rü¼8= ŒªÎ…´bkGÐ&ª1ÏïbðíÝXº½ %pãùÝ´‰jŒ5Ò’ˆªîPy®Jºz ±8nõ߆]AFu‡Vgp[XËß‹ï)ÿàøñ¼ƒ\ͲýPõ•´º×¨Î©å`¾1Ì‹ƒæj–åîËQxw3o²ëDK+žøh¼Ðꋾ/=[ÜÎs?NáñïÐ:¦ ·&>¦iy‹)ãRz £˜°Hó°èЈ2I ¥òÓ’ÑêuLøþƒ2ËNËÊ@«ËÃh4S¬e±AX=§Ÿä[Û>Jî›\}žÓâ²eÍßñßU?3²óíujuÕ½±Œ%G/žfÚš¹M‚Ƶ£¸£QÛ‚kãŸà™Aß²ùü6ßË–]ñă¿ÏŸ u¤c•ÁIW¾ÁÀöGhÑÑíñ¤eæñÚ»ÝRvU'-îUË?€Ø°( FC‰aÎRÓ×€lmn™®†*Jþš]ÞWTUêoS±ûä6lÀÜç>fÛñýìÀ¢I_•{Ûӗ/àQ,¹ñpA¢c+>%²ór¨iGWPGÝÑüv2r²Xº;-Çö1¨MwúµîB€¯Ÿâe(©?®b4yí—/èÙâvÞ1_?6ÞÉW«~.£…ýS8ØÕõ£ô] •ÖßBΨ_Ö8Ÿ5M#c©éëÏ®“ñððÄ[ãE‹úåûÏ%õÏ‘øodM"p9#•KWSðP«ñT{œžJbÚeš^oÙÛõÖÒõ·4G—oMeü}²V¿l•_ñYÚ¾Ž?oNO»Æ´aõñÍÜ׺7â:ãëïáû-Kiǰ–=è׃ÉÈÆãûèר‹Cå¹#çêÿï?-Ž“Þ U´V ëDÙž¨‚ê֪ƋĴdƒJ¶â{k4èòõæÏ©Yév/?°FMúÅw¦_|gü|j°åØ^EÄê…â¡öàôåDj5(H|Ϧ\R\ndp8Þ/ž?N—¦mÊŒ¯TµZMRúkü‘¾x5Eñò¥ð°Ñd²Ø…ì|j^ž"‚Ã*-® ¿šŒíqv̆Ã;Y¸c3þøîqíÝmÑ¥®Í,3êOE¥\»Jjf:#;0'®ç®(¯?ΪJöoylÕ_gqg|*•Š®qmØôÏ<=<èÚ´­9¥ûÏSíJ¥"¯œkõÏÑøkøãçãËéˉ4 /8>Ÿº|_/‚üœûC;Ôðö¡~hó·¯åÖ˜84žü¾m5‘µÂ¨iÇAÖĆ×c×ÉŠ]«ì,ýûTÈRýSZ¿l•ïh|ý~;zü¼8ý'Á>õ[P—·.GeR30® y†„§§óÉgוIÍ[—P—>õ[:Tž½×õRBZo|jþŸ½;‹ªê8þa™AE!47pMSË'Ñ,-Í,5[üÙ&YÙþdOæcO–iVÚc.e™æ–»©ˆæ†¨¹ïŠˆ › ìËÌïdtfî0Ã"~߯—/™¹÷žó=÷žsïœ{îÒºqsŽ'œ+3­y£¦ì>ý7E…dæÜ`ã!Ó^S°&v;Ñ'bI¹žÎ™Ä8þŽ;…Ÿ[#EËÚ«íoÕ‘¹[–ŸšDìùcì8±_qÞ*[[ëÔ‡ë~bßÙ#$g¦söŸþþj{z´ìÀ²=›Ðh4\ÍLcëѽ&•Ï<]ܰ¶²"úø~ò (*..3ϱø³´ò DeS%¯§5ÈÖÆ†>mº2ëù™ýüG¨lU¼xBѲæÖs¸:9ãhç@ìÍBħ%±*¦â“w²TýP²}Ëc¬þZJMÇ×3¸#»Nä¯S oÕQ÷½ÒígmmM€§ëî õF7r³uÓ Õ?sã·²²¢o›n,ؾ’Ó‰qœIŒcáöUôiÓÅb÷Ö´`ßÖˆ¦c`kBZ±ö@4Á~ÆTh`h/.¥&2{ã¯\IOæbró¶-·XúƘs|*UQýSR¿Œåo‰ø*Û¾ÍÝÞ ªäh<¾ÓcÌÜ¿ŠW–N£wóNtjÜ ·F\LO"&þ8[ÏÄàçÒˆñ3;¯9‘ÝÏ$ê¬ô´T£óÈHཡo›®¬ŒÙÊ3aõ¾Òõa^<Á/"ñ÷ð%,¸#QÇ÷)N×ÖÆ†yÛ–s9- {•=‚Bx&l€nú³³Þ%>õÖ=V¥±^:a:ÎnDö–É+æ0æ» ðlLÿž?{g6Û÷IìUj>_ý#iYx:»|ëæú F3eņ|IÃú èÖ¢q&œí4¿.õêó|ï!L_3Ÿë¹Ùå¾"bljXVâÉ‚–ˆïvͽ›òΠçÏo¬þX:¾Û©mU¼?ø%f®ÿ™¹[–áåâÎãû²"f‹â4Ì­ lûVÄXýµ„šŽ¯m“X[[S\\LûÛîw2eû½1’É+æ°bߟz¯0VÿÌÜCÃøjÝ""ç†V =‚Bô^oPÕª²ý@I'pÛ±}´ö»++°¶²"Ø×øSÅ•Æ×¨;ÓGMä»MK=ûìTjnk¹Kåoìø¤TEõÏXý2–¿%â«lû¶Äþ³®+ïT*11±@­ºÕ?<î,;wUôƒûvÛ޳ãÂAb/çbzþnõkEX³„û¶RœŽ[CwöïÛC@`ÉÍ·n\Oß~覉{Wi¼½N”~útÉSi?[vÚ¤Ž ±:•ž–*õ®*(*äéo3uÄîkÔ¤¦Ã©Ðÿ¶.çRj"Ÿ }¥¦C©6’/óÖ¢ÿòóëÓ°¯äÃ{„BˆÚâö>ÑšU+hÓ¶*µÅiÄìÝÀA›œwéoÐß/Òûí[ª °ooï!@.só_ömçyUú¨´pßV|Øc+žšÌÁ—ÿÇŠ§&óa&u…0—©#âUñÊ?žæÈ¥òßwYSN\>ÇþsÇÈ+Èçbr›þþKï’±Zá“«ôóÑø³¼üðSwoÐÜõ!„BÔ2wßó²…0‘Üxïx°ugïܧ¦ÃГSÇôµ ˆ˜ú2o,üBÃé}—šë–O„·Ýê¸Xú3%÷ÍôiÓµš da(¿BQÛTÿúBT3¹'PԤЀÖ,~}ZM‡Q¾Ò Üê¸XòóÝî^/¿Bˆ:KFE'#BTàÎŽŠ¥?ßíîõò !„¨³¤(ê<¹'P!„Bˆ[¤(ê< J,Þ¹– Ë^¶ù)cé5i4½&.÷E³Æ¦3~þT–ìZ_©˜…éVìû“q?|jòrÕQ³ÌmUmÂÂi,Þ¹Öè|•­_JÓ¯ªü…y,µýjŠ¿înÒ užŒÖ›ïbíí&/§Ñj™½ñWþçL}™Y£Ñh,_€§Û”ù~Ãûß³éù.glº0ß©+tïǪ)Õ%jCüuU]iæÔ¯ºUªéöWÓùR]ÇWQ;ɃaD'#5kQôj½§a&^KaÓá]Œ ¤hùe{6²áï|:ì5¬­¬ùø·Y4¬ß€áÝû[4ή-ÚѵE;‹¦)ê©¢*ÕtýªéüEͨ®ã«¨¤(êålRmš´àƒÇ_¢aýh4æm[ÁºƒÑÜÈ˦}Ó Þ~t ž.ÊOXœH8Ïw›–p"á<j{n÷¯ô@^a_¯[ÄöûÑjµ„…òFÄHìÕv@ÉåJþ>\LNàÔ•‹øºy2yøx<œÝ8—ÏKs&±jâLœìëŸËcÓ^ãë1ïì (þÉË¿ÇÉÞµ­-kDS¤)fÜCÃèØš_¿£›¯ôlz§ûÚðù3o*Z?™97˜²b..§™§íš¶4iÛ«†ÖOBúU£ñ[ÿÆD‹áçk¸˜’€½Êް ^{dj{EËŠ ¯_%íË%õÇåëК§{D%W$,Œ^Í¢W§-Ÿ1JËŸ•—Ã¿Ì æÜQü=|ôÖ¯’ý¡ök,}cŒåŸ_XÀ—k²ãd,……ø{ú2ñÑ14÷nª(ýë¹ÙLYþ=±ŽèÕ˜vMƒ8|é4ß¾ð‘nžŠÚÿ N½nCõCIû3gÿ4¨SoƒeW’?Þ~Æê¿±ökŒ9Ç×Ræ¿ Õo%å7Ô¾Õ_K_-Å!ñU£óäzϲhžr9¨¨ód$°fù{ú2"lq) Ä¥\axšyú)Z6¯ ŸøÔ$Zûê¾kåHBúUròóŒ.ìÈéĸ2ߟN¼H°o3Â[u"jÒ|^êû¤²Uu¢y¦GóÆý´Zþ³êºi?lýÝg1yøx~77'>^úâ´“2R™°`-}šñãËÿfú¨‰ØZÛ覿y GâÏðåÈw˜1ú=N^¹ÀìM¿ê¥±íØ>& Íʉ3qqtfáöÕ6jŒWƒ†ì>}H7ïžÓãêäLO3“âßvl/ŽvõX:a:?½:•ÀFMðuó"jÒ|¾éc¢&Í'jÒ|½PÆÒÿbͲòrøaì¿>ˆ?b£¯;PV?*Z?JâW²þ ÉÎÏå™°,zu*3F¿G|ÚU¾Ý´Ä¤2V?^¿JÚ—!Jê%Êgˆ9íKiù׈¦_û|ûâ?Ñ‚Þú5V¿Œµ_céc,ÿ•1[8|é4_z—_Æγ=E«Õ*Nÿ«µ ÉÌÍfîØ1æÁÁ¬© ý•×þÁøö1T?,±ÿ0Ÿ!JòÃÛOIý7Ô~ 1÷øZʜ㗱úmnû7VÍ=¾ZšºÉ›þ« Ò užÜX³¾Ùø ÄF1¼GC»õcáÌ\ÿ³¢e3s²p©WŸû†.™‰K='2rn]>Ø7€3‰Xwp‡îžÄÓ‰qßvà«iaÁ¡t ¡qÃF¼Øç bÎåzN…EE,ß»™ÈþÏì€_C/Æ÷–“ ç¹r-EQÚÄFÑÄÝ›—û=…¯›^ûÐP´ZíÍKs£…?ͽ›2*|Ùæ¶e¯Vñkè…ÊÆ–žÁ¡œºrA7­gp(;NÄê>ïÍHÎL#ñZ 6ÖÖØZÛp5#„ôä*=¨[‚õÍ‘€•oϤcýJ§eu[Z–X^Ë­Qª ßê;8±ÿÜQlll±S©¹¿Is½ù•į¶UU:¾ŠÒ¿|ë[½Üþ·¥Z?UI£Ñðþ/3è}>öÎŽl?ÃÌ ‹MJÇXü­ßœü<³Û—¡úc‰òYqGÙÊÙ4•m_J÷/ÖVúuÎÔúa¬ýš›¾!A¾ÍXù_öœ9LÌÙ#¼±pïz‡Û=`±<Àpû¯hûXªþWõþÉ˜Š¶ŸÒòUvÿcîñÕSŽ_Õo%å7Ö¾•Ô_s¯–Tpé‹jÍO:¢Î“‘ÀÚ!°Qc“—±WÛÑØ½ÇÎÓé¾’Ç—¿|_7/íŒ._ÏΞ&>ü¾w3üƒQÙØ²tÏF|]=©ïà¨8[k¬¬¬È¯à «±éÆÄ¥Üz¿Ù¥”+X[Yáíê½Ê;•š£ñgèR©´¼üØîX¹Ó\ê9áhïÀ…ä½J¶ÏùäË8¨íiਬ£neeEXp;NÀÖÆ†° PÝ_7/³ã‡[?’4Z­Þ cé7jàŽµµ5I©¸Ô+9È×Äe>ÅoîúO¹~´ ïÞç›õÙ’ïÊ3¶~-Ѿ Õ¥å3ÔþìT* Š uŸÓ²2—ÏKí_ 1Ô~«‹K½úôk×~íºãh_]§*êz7ðÀÆÚ† É ¸6+©Ï·ïëŒ1¶}”ÖÊî?,¥¢ü©êömîñµ”9Ç/Cõ[Iù µïRÕßêÚþJYú¡/JÈ=¢Î“{ïnBz±|ïŸü}ñ$G.fÙžM  W¼|°okDÓ1°5!­X{ š`?ÓF­­­ ðôcÝÁ¤ÞÈàFn¶IÓÙq2–]§q9í*s·,£[‹öÔwpDekËcú0cÝOì;{„äÌtbÎáÓß¿SœöÀÐ^\JMdöÆ_¹’žÌÅäæm[”üïÛ¦ ¶¯ätbgãX¸}}Út1éÇJÏàŽì:u¿N$¼Õ­{î,?€§‹ÖVVDßO^aEÅÅŠÒwPÛÓ£e–íÙ„F£ájf[î5)oK¨(~s׿«“3ŽvÄž/ùŸ–Ī˜­‹[Éö³Dûª¨þ(-Ÿ¡ö×¼QSvŸþ›‚¢B2sn°ñÐN“ÊgŒ%Êoˆ¡ö[ÖÄn'úD,)×Ó9“Çßq§ðsk¤hY{µá­:2wË2âS“ˆ=Œ'ö+ÎÛØöQZ?*»ÿ°”Šò7¦ªÛ7˜|óŽ_†ê·’òjß`¸þV×ö¯Íªd$pä¨ÑŠç]¸`~U„ „ŽŒÞÝžìÖ´|ðë×hÑòHû0†uû‡âåƒ}Øvl­ýîÃʪä2•`ß[mxvֻħ޺G¬ô1ÞK'L×»÷àˆ‘L^1‡ûþ,÷QêÆ¦Ò¿C‹¢Wsöê%Ú5mÉ[ŸÓMÛ÷IìUj>_ý#iYx:»ª8íF Ü™>j"ßmZÂèÙ`§RópÛ[gñÇ=4Œ¯Ö-"rþghµÐ#(DïñóJ´mÒkkkŠ‹‹u·TüPr&÷ùÞC˜¾f>×s³õ±n,ý F3eņ|IÃú èÖ¢q&R&R4 IDATœMWZ?*¿9ë_m«âýÁ/1sýÏÌݲ /wïÜ—1[—Ïcë×XûR¢¢úcJù*jCº>ÌÁ‹'òE$þ¾„w$êø>Åå3ÆÜò«_ÆÚ¯¹Œåokcüm˹œ–„½ÊŽA!<6@qú‘ýŸeòŠ9ŒùîC<Ó?¤'GãÏ*^ÞÐöQZ?ÌÙX‚¡ü ©ŽömîñÌ;~ªßJÊo¬}«¿Õ±ýk³òN5ª Ôª[ýÃóçÎÒ±sWÒÓR%:rÔh~þyÑùFŒ ¨èÖÐýûöXróèŸ×Ó·ß#ºiâÞUZ'o¯¥Ÿ‡>ý¬nÓî la4O©wB!„iþ·u9—Rùdè+5Šf¹½O´fÕ Ú´m‡J­ÆÆÆÆÀRúböîaÀ ÇMλô7èo‹éýö-UPX„··÷ ȹù/û¶¿s<¹TÔy2(„BT¿—ϱÿÜ1ò ò¹˜œÀ¦¿ÿÒ»äWQsªìÁ0EEFzGGG4pÁÍ­!îxx¸ãÖЮ]ûWUÖBè‘§ƒ !„Õ/§ ékp5# çzŽ îÜ—Þ÷w©é°„Ta'°°°˜~X”Üü®Õ‚ÕÍ×ZY•L¢:ÈH BQýBZ³øõi5†¢UÖ ,(,âåqOV8ئmߪÊZ=2(„B!Ä-U× Ì/æË¯–`UÁK+ òe$PT B!„â–*ëæåñî»ÏT8ØÔ?¬ª²BŒÞÎ_½Ì¿~ÿ–K)WprpdõD˼xuÂÂit hÍÓ=",’ž¨Z+öýɦûùö…j:!„¢Öª²N`~~Ÿük>V¥ƒ¥/¤ÐBA~aUe-„ ¬6ÞEAQ!!¦½ˆV©EÑ«¹Ï«1_z•­i»¶SW.0vÎ'DMš_%± !„BÔ&UÚ œ2å… G]]åÁ¢zÈH`ÍZ½Zïip‰×RØtx£ÂY4Ÿäëé<Üö8Ö·hºB!„uMv yóÍï*˜ª%?¿¨ª²BŒÖ¬° Pfoü•¼Â´hÙuê/ô¢xù¼Â¾^·ˆí'ö£Õj 刑ث퀒Ë5œ?À±ø³|¹v!Îõœ]š~•_¿£ûÜkÒh:Ý׆ϟyS÷}V^ü2ƒ˜sGñ÷ðaòðñx8—ÔFüm+Xw0šyÙ´oÄÛŽÁÓÅx]zâ‹HÞ~t ]š·Õûþà…LZ:›Ug0yù÷8Ù;¢¶µeíhŠ4ÅŒ{hƒ:õ&êX ?ï\ÃÅ”ìUv„…ðÚ##pPÛðê¼É4n؈sI—HÊL£¥O3>xü%Åecé‹OÉö»ýrÛ͇w±0z5‹^ª›îïáÃÅäN]¹ˆ¯›§ÞúÏ̹Á”s9pá8Í<ýh×´¥¢r !„÷²*{Y|~~1ùùEü+–N ¨6¦Ž Ëò÷ôeDØâRˆK¹Âð4óôS¼ü÷›—p$þ _Ž|‡£ßãä• ÌÞô«núô‘‰š4Ÿ`¿@& EÔ¤ùŠïôuó"jÒ|¾éc¢&Í'jÒ|½ ÀÚÑôk߃o_ü'Z`áöÕºi?lýÝg1yøx~77'>^ú¢üƒý9WæûÓ‰ öm¦÷ݶc{q´«ÇÒ ÓùéÕ©6j@v~.Ï„ `Ñ«S™1ú=âÓ®òí¦%zËîKm¿^­:ã×Ð •-=ƒCuë?'?'ð|ï!4õð¡{˄˭B!„1Ur9èÂó™?!~ûë}9~£G`þü…U‘µeÈ=5ëéî¸:9ë óÖÀ縖u]Ѳ™9YdçåÒÌÓW÷]€§9ùydd_ÇÍÉ¥ªÂÖãíê¡ûÛÉ޼’“X éWÉ+,àµySÊ,“ž•‰ÏmË•'Ø7€Õû·”Œ`iµD„„s:ñ"ÿh×]oÞ ß€rÓ8uå³7-áTÂy]\¥—J–òuóÔýíãêA±¦˜¤ŒT݈ì?—Ìd穃tkÞŽÉÃÇ›”~EñYjû¹×o ûÛ^¥ÖÅ‘”‘ŠF£ÁßÃG7½™§—Ò’¥+„BÜ«ªìžÀÑ£G–éè•vKÿ¾ý³UEFk–«“3ž)Öë}w·°¶Ò¿hB{ÇûOW¾=³R¤iéÓŒäÌ4¯¥`cm­µ W3ÒHHO.Ó©RÛªÊ,¯Ñhxÿ—ô¾¿ Ÿ{ gG¶aæ†Åzók4zËÜ>÷ú#ÏðBŸ'p¸y¯ž)éWŸVºÇFS&.Ýmº˜ÔY3ÆÓÅ k++¢ï'¯°€¢âbEË©lmy¬Sf¬û‰}gœ™NÌÙ#|ú{EOF.+Ø7€µ¢éØš€V¬=M°_ù—~ÞÉÕÉG;bÏ >-‰U1[ËÌ·ãD,<@|jó¶.çí©gg_f¾Ê¦_%Û¯y£¦ì>ý7E…dæÜ`㡊ÓwPÛÓ£e–íÙ„F£ájf[î-wÞw~þ‚·}®8m!„¢:©›¼YῪP¥#BÔ2xw÷Ð0¾Z·ˆÈùŸ¡ÕB ^é7Ü¢y¸Ô«Ïó½‡0}Í|®çf—yE„!cû>‰½JÍç«$-+Og7‚CçìÀ¶cûhíwVV`meE°o ñ)¹óýÁ/1sýÏÌݲ /wïÜ—1[ôæÚ‹Ñ«¹|™öMƒxsàh‹¦oˆ±í7¤ëüx‚!_DâïáKXpG¢ŽïSœþ„£™²bC¾ˆ¤aýtkÑŽ8F+…Bˆ{Qy§ÒU‰‰‰jÕ­þáùsg騹+éi©ÕÙmܺ³ßKž†÷çÆõôí÷ˆnš¸w•ÖÉÛëDéç¡O? ÀgËN›Ô4V§ÒÓR¥Þ‰»Æ«ó&Ó«U'žèúpM‡"„BÔ ·÷‰Ö¬ZA›¶íP©ÕØØØ(N#fï z(¹ÔЈ_Á¥/t—ƒ–þýmñ"½ß¾ºy ‹ðööä97ÿeßöw.'#¢Î“‘@!„BQ›\ú¢Zó“N ¨óäž@!„BQ[Yú¡/JȃaDgêH uɬ1È¥ B!„Ð#@QçÉH B!„·H'PÔy2(„B!Ä-Šî ¼ýûöÔÈBï|2¨¦’‘@Q•&,œFÇ€Ö<Ý#¢¦C¹«-Þ¹–ýç1}äÄ‹aֆŨ©Ô¼Øç‰‹ÁTÿ˜2–¼‚|¾úMܽk8"q;Ù?˜o~ÔJ®çfñú#ÏT{Þ‹w®e×éCÌóAµç­D]iÿç¯^æ_¿Ë¥”+898²z¢²ûãêJùkŠÉ#Õùh|y ¿° ¬6ÞÅÚÛM^îZÖu>Y:›ˆ©ãxèß/ðÒœIl?SVìÔ• ôš4ºZó¼×xúÑ9°MåŸz#ƒõwðd×~e¦•Ö¹'0zvíú1¸áýïÙôáÜš£FÕtû¬éü ÑhµÌÞø+ÿó ¦¾Ì¬ ‹Ñh4zóÔdýVßà.±ñï¿H¹.Çç;Õ•ö¿(z5÷y5fù[_óËøÏ/WWÊ_SwKG¡z:g¥yÈ( 0—ŒÖ¬EÑ«IH¿ªûœx-…ÛW)^þ㥳HϾΔá‘Ìyiƒ:ö&åúµªUÔ ®-ÚñT÷²ï;ª.kb£hïDÇú5ƒ–¶lÏF6ü½“O‡½Æ”á‘l9²‡%»7ÔtX:Jâsvp$¤Y+ÖÜYCQŠª–|=6MZÐÀ±>Žv5Î=äWDÜÞìØ¹k•Tª4é sÉ{kVXP(³7þJ^aZ´ì:uˆú Q´lv~.‡ãN3ç¥I´ðñ ™§ŸÞ¯ Ÿ1ß~ȰaP§Þ¬Þ¿Ÿw¬aÞËÿÆÑÎWçM¦qÃFœKºDRf-}šñÁã/éuv&/ÿ'{GÔ¶¶¬=M‘¦˜q cP§ÞFãÏ/,à˵ Ùq2–‚ÂBü=}™øèš{7U4}ûñ>þíBZ•¹ÔØö°pþ>\LNàÔ•‹øºyê­¥vœŒePÇÞ&-u,†Ÿw®ábJö*;‚Bxí‘8¨í.{.)ž—æLbÕÄ™8Ù×JêücÓ^ãë1ïì`VúPörÄ͇w±0z5‹^ ˜_?¯çf3eù÷Ä^8N WcÚ5 âð¥Ó|ûÂGºyÌ©_†Ê¯¤}*)Ÿ¡ø ±ÄþÁØö5·~ÿÅàÎ}iïÀ“Ýú±&v;û÷W´¼©.§]eeÌü=|n±øº6oDz=›þ¨âXvŸ>Ĭ ¿`¯R“™›Åˆüoërü=}ùjÔ»ØÚؘܾfoü•ýçòÕè÷pvp4{ÿhŒ9íÿ‰/"yûÑ1tiÞVïûƒN0iélVMœi0ýø´$FÎz_ÆN£%¿‹Š5Å þo$oMÏàP³Ë7aá4œ?À±ø³|¹v!Îõœt—ƒš»ÿ3Ÿ¹û¿»Éï ,픕vÒªŠtþ„¥ÈH`Íò÷ôeDØþ¹d&Zà“¡¯–éÈUDm£ÂN¥&öÂq]'ðNßo^‘ø3|9ò¬¬¬ø÷òéW& evì¾n^DMšÏ©+;ç¢&Í/w¾µ¢ysàhÆôÌÔ•?°pûjÞ8€¶þÎÞ³‡™<|<õíY½š—~£÷#ÙCËÛ«íx÷±yoñ—t¾¯ ÖÖÖ|¿ù7>öšÞÙÔ'ðý‹ãÕ !Ÿ­˜Ëô5óù×°×ôòÙvl/ƒ;?ÄÒ ÓÉÎË%)3MQü+c¶pøÒi¾õ.®ŽÎO8V«Õ¥klzx«NDMš¯»'ðNJ¶ï¶cû˜ùÜx5hÈû¿ÌÐ[ÿJääçqáêeZVPÇÜë7À^e‡µµ5õ]õ¦eççòLØZú4#'?/×.äÛMKÕ¿ÀFñjÐݧñPÛØsúo\œ òifvúJ˜[?¿Z»ÌÜlæŽýÉ™i|²t6M<|ÊÌWÙúe¨üJÚ§ÒòUŸ!–Ø?(Ù¾•­ßyùħ&ÑÚ/P÷]+¿@æü¹”œü<êÙ•ü6T¿•Ðjµì;{„åûþ$öü1º6oGÿ=-@o3.¦$•—£;a¢Dêk|ûÂ?™¹ágVÅlåÛÿÉó§rüò9Ú6maRûšµ’ݧñõsïãìà˜¿4ÆœöìÈéĸ2ÀÓ‰ ö5¾iܰ-}üÙzt¯î$ÒóÇ)ÖÓ­y;‹”¯ô¤ß¸>å‘ö=x´ãƒ+¿’øÌÝÿÝí*ý²x餉»…ŒÖ¬o6þBV^Ã{DPT\ĆC;Øvt/¯=2Âè²*[[^d3ÖýÄû·Ñ¡Y+zµêH§ûJîÓjµl:¼‹7"Fé:‰£Âñß?~$2b$ÖVVUY4Aè @ÿ=Y0€Â¢"–ïÝÌçϾE°oãû?KÄÔq\¹–‚«‡Át•,ß¶i „†óŸUÿCecËÃíºÐJ/[wÆÇÍ€¡<¸¹ÿ"· Oïlª§³›î,»ƒÚwgWEù§ÝÈÄ×ÍKwfµ§s¨^ÞÆ¦¢tûöjÕ¿†^%é‡òÇþmŠó¸š™ŠF«Å½‚ÀS†Gêþîx¿Þ´ˆý»wîÃü¨•ŠóîÊŽ±ºNàΓèÜ«›e37}CÌ­Ÿyùl?¾Ÿÿ>ûþ>ø{øÐ«u'Î''”™·²õËœò›R¾òâ³”Šö lûV¶~gædàR¯>ÿö Z­†ç|€ŒœºN–¡úmHv~.ëî`ž-ÎÛŽÁ½~‹ÆàQß­VËÕŒ4œ)ïz»zàåG°oéY™4n؈¦¾$ß¼¿PiýZ²kíäëçÞÇÕÉPV¿ÌÙÿ™_y‚}8™p€uw Õjˆ çtbÁ7;ÞÆÒ¨í¬;­ën=¶ðVPÙ–tÌ-Ÿ1æîÿ Ågîþ¯.¨t'Pˆ»…ŒÖ¬§»GàêäÌæÃ»((*ä­Ïq-ëºâå#BÂé¾³G9tñ$ý6‹ˆ=yí‘dæd‘—K3O_Ýüž~ääç‘‘}7'—ª(RÞ·,œìÈ+,J.Ë+,àµySÊ,“ž•iô £tùç{aÌ·RT\̧O½^f^ß›@WŠ5Å$e¤êÈÝ<ššïû»¹`*cç|B{ÿ–<Т=ín^ÚnˆÒí{ûN{•Z·þ•*}ºœJmÒrPòPÙ›–p*á¼._S.E îÈ þC~aÖVÖì={˜©OO°Xú†˜[?3R(ÖãÛöiêáSn'°²õËœò›R¾òâ³”Šö lûš[¿*Ùnúû/fmXÌðîýy±ÏX[Wþ­cÆâ+m›¹…ù&¥«¶Uéþ/ý[ekKþÍu¨dýŸKŠçøåsz5¦aý[qZbÿhŒ9õ?Ø7€Õ7OüZíÍNàEþÑ®»¢ô{ßß…ÙåRj"Þ®ì8Ë¿o;Ƙ[>cÌÝÿŠÏÜý_] @QçÉH`Í*=kàÙ˜bM±ÞwJ¹Ô«ÏCm»ñPÛnôêÀ¿Ì`̃ƒ-keY[éÿøÑ¢9ÌÊ·gšõÀc˧\O'=+­®f¤ÒôŽËñŠo{Ú^é“÷î¼b§ô’©ùù6cIäÙsæ01gðÆÂi¼;èn÷€¢é–`uLjïëߘúNdçåšt©™F£áý_fÐûþ.|:ì5œÙ~<†™+N#È7€úNì?w[ìTjîoÒÜbé[qǺ)gÕ˜[?•¨Lý²Dù ¥¯4>sU´PZ¾ÊÖo—z%õ:3çãû—¼^áÐÅ“zÓÌñ`ë.dædñGl»Nb@H8ýÚ÷Ð]*iÉø²ós¨oBû4L«xý«lm™1ú]>\ò5?ïX[æ¾Dsö†˜[ÿ[ú4#93Äk)ØX[ckmÃÕŒ4Ò“ ò P”¾«£3[³åÈ‚|›á ¶§mÓ–)_U—_i|Õ±ÿ«­äeñ¢Î“‘ÀÚ!°Qã ïë3…·«'­–Ü‚<\ê9áhïÀ…ÛFÎ'_ÆAmOGýŽffÎ ÒndT*ÏÒqîu€’{†ìTjŽÆŸ©T¾J–×h4LY1—¡2¤ËCL^1G×Ù.u!ùò­¿S°¶¶ÖÝèo‰ø]êÕ§_»î|8äÿÚ‹]§š4½ât•o_sx»ºc¯Rë=ÅV‰”ë×H»‘Áðîýu?|/¥&𔆕•aÁ!ì8y€'c Õ]æª4}[k¬¬¬t£·³S©((*Ô}N˺ÕÌ­ŸÞ <°±¶ÑÛ>q)ÊËo,¥å¯¨}š[>¥*»°Dý1Ä^mGc÷F¿yI ÀñËçðuó²È8Ögt¯ÇXù#{>Êöã1 ùb<ÿþý;âR®X4¾ø´$Ô¶*Ýeí– tý7q÷¦…?o |ŽEÑ«9w5°ÜþÑÜø*jÿõììiâáÃï{7ÓÁ?˜f­Xºg#¾®žÔwpTœþCm`ë±½l=ºÞ÷w)s›EeËWÕå7_uíj3éŠ:OÞxw‹œ?•͇ws19¿/žä˵ iâ+VVVômÓÛWr:1Ž3‰q,ܾŠ>mʨ>Yö-/|ÿÏJÅàé↵•ÑÇ÷“WX@Qq±ñ…(9ƒüX§>ÌX÷ûÎ!93˜³Gøô÷ï,¶ü/­ãznÏ÷̨^ƒ((*dQôzéì8Ë_'ŸšÄ¼­Ëy E{½ûmÌÉMìv¢OÄ’r=3‰qüw ?·FЧbÊö5‡µ ­7çxÂ9“–surÆÑÎØ›´‰OKbUÌV“óïÜ‘]§òשƒ„·êhrúÖÖÖxú±îàRodp#7[7­y£¦ì>ý7E…dæÜ`ã¡[Ù7·~Ú«íoÕ‘¹[–ŸšDìùcì8±_q¹å¯´üµOs˧Te÷–ª?† éÅò½ò÷Å“¹tše{6)zj§)lmlèÓ¦+³žÿÙÏ„ÊVÅÁ‹',ß±ø³´ò Dec¹ ØL]ÿïkCŸ6]™ºòŠ5ÅÙ?Z">Cí?Ø7€µ¢éØš€V¬=M°_€Ié÷ !õzÛŽí¥Ïý]ô¦™S¾ê(¿¡øªkÿP›É堢Γ‘À»[KŸf,ܾŠ+×R°S©hÛ´%Ÿ¾õ ƒq ã«u‹ˆœÿZmÉë•~Ãˤ““Ÿ[é{©\êÕçùÞC˜¾f>×s³Ë<Þ±}ŸÄ^¥æóÕ?’–•§³aÁÊož7´ü¹«ñ,Œ^Í—£ÞÑ]ÎöÞc/ðÚ¼)tkÑŽ–7Ÿ09 ´ ¢Ws!ù2í›™ôäLcñÛÚØ0oÛr.§%a¯²£GPÏ„ P<ýÙY¤û\ú˜ý¥¦ãáì¦xûš«o›®¬ŒÙÊ3a/£¶Uñþà—˜¹þgænY†—‹;wîËŠ˜-&åݶI ¬­­)..Ö=*ßÔô߈ÉäsX±ïO½Wm éú0/ž`È‘ø{øÜ‘¨ãûtË™[?#û?Ëäsó݇x6¦HOŽÆŸU¼¼¡ü•–ßPû4·|JTvÿ`©úcÈ“Ýú‘v#ƒ~ý-Ziưnÿ°XúwjîÝ”w=oñøvœˆeàOŽ4WeÖÿ+ý†3zöü´c £Â™½´T|µÿ`ß¶ÛGk¿û°²k++‚}MJß^¥¦GPÇ.Ÿ-s59嫎ò‹¯:öµYy§RU‰‰‰jUííþ¹q=}û•¼T¸:^\/j¯ô´T@¿N”~úô³ºyL»'°…Ñ<¥ÞÝ]ò ˆ˜:Ž÷‰ÞwœÉ¬ë^7™^­:ñDׇk:”Z­ ¨§g¼ÍÔ¸¯Q“šç®õ¿­Ë¹”šÈ'C_©éPDq!ù2o-ú/?¿> ûJ<¼I˜oÂÂiÜßø¾Zu/~M+ýý °fÕ Ú´m‡J­ÆÆÆFq1{÷0`Ðã&ç]úô·Å‹ô~û–*(,ÂÛÛ{ äÜü—}Ûß¹@ž\*ê< Ç/Ÿ£Qwzµî\Ó¡ˆZJm«â•<Í‘K÷îý!•qâò9öŸ;F^A>“Øô÷_z—´ a®£ñgyù᧤X²òrØyò_<Å?Ú‡Õt8ÂÂjïpŸ"OšóÓkÿ©é0D-÷ œ$0YNAÓ×.àjFÎõܹï=7Ú.ªÖÀÐ^5Â=kÂÂi$¤]å•~Ãï‰W&Ük¤(ê< ÷²Yc>¨éDКůO«é0„U`ÎK“j:Q…ärPQçÉÓA…B!„¸E:¢Î“‘@!„B!n‘N ¨ód$P!„Bˆ[¤(ê< ¬6ÞÅÚÛηt÷Fþoî'Õ‘B!ĽI:¢Î“‘Àšµ(z5 éWuŸ¯¥°`ûªrçÕh4,Û»‰'»ö«®ð„B!î9òtPQçÉH`Í eöÆ_É+,@‹–]§ñBŸ!åλýÄ~´Z-½Zwªæ(…B!î2(ê< ¬Yþž¾Œ@\Jq)WÞ#‚fž~åλt÷Fw~k›jŽR!„âÞ!#¢Î“‘ÀšõÍÆ_ÈÊËaxŠŠ‹ØphÛŽîåµGFèÍw4þ,’˜öÌ›5©B!ĽA:¢Î3u$ð½'Ük:ä:åéî¸:9³ùð. Š ykàs\˺^f¾ßvoà‘=p²¯WQ !„BÜ;ärPQçÉH`Írur À³1Í5Õû®TâS  IDATµv:Èò@!„Bˆ*'@QçÉ=µC`£Æ´ðñ/wÚï{7Ó­E{|\=ª7(!„Bˆ{tE'#µ[v^.ëFËk!„B!ª‰tE'#µÛšQ4q÷¦mÓ5ŠB!Ä=A:¢Î“‘ÀÚ«XSÌò½Ê( B!D5’N ¨ód$°öJ»‘IDH¸¼^!„¢É+"D'#µ—§‹#íé0„B!î)Ò už¼'P!„BÔV‰¯'×{–Eó”N ¨ód$P!„BÔfê&oV8­àÒÏOî u^Ù‘¾¸5t×ý/÷ZÆù?pà‡-d§\¯éP„B!„Ò uÞÀ¤ØÄý¯/qÿëKRìŠ2AQ9ûfm`õ‹ßsíÜÕr§ïýz=ÿõ~‰O¬‡1Éj(Yy&çÉûï¿_î´©S§Ò·o_“Ó¬.†â›4i¯¿þºYé'''Ó«W/êիǸqãÌJK!„u›\*ê¼;;xyfáÿÄÇ\üý}\î ¬bÅ…Ål~ç'´-¡cûbk§ÂFmÚîçÊ•+üøãœ={¶ÜémÚ´ÁÆÆÆáV Cñ½þúë0qâDüüü*•þO?ýDbb"ñññ4lØÐœP…BQͪâ’OC¤(ê¼Òž[Cw’bW Ñù¹h4»‚÷žxœÏ––‘@3<µòí §å]Ë¢(¯¯¶Mðí‹•JîܹôêÕ r§GDDQ©´«ƒ¡øÜÜÜèÝ»7?þø#}ôQ¥ÒOJJâþûï— Bq’{…°°ÛïõËÞ?ƒ€'?æÃ—GðáË#xòc²b¾.3ŸPnCä|&Y Õý»¼çŒÞô¯ü_ás¯’ŽßÕÃqºùL½tÅŠôïß¿Ì÷Ë–-ÃÊÊ +++‹\zæÌ"##™;w®¢ùûöíËÔ©SuŸúé'‚‚‚LŽ/""‚ß~û­Òqk4¬¬¬*½¼B!îÒ u^é½€—%;;£QÙZc§¶Ährrr¸´x¨îÞ@aš&aÁt~¥®Í<ËÞnT8ž{€zîõéüJ?:¿ÒϤËAoܸÁ‘#G -3í‰'ž@«ÕòÙgŸU®€V«eýúõôïߟ֭[G×®]+^eâëÔ©ÇŽ###£Rùbk+w!„Â8ùÅ ê¼ÒŽ]ê•‹„<ZÔ6ØØXƒVCÛG{ph嚀ÜX ­†t¡Õ.üúØç\»\fúƒŸ %+)ƒƒ?nÃÙ×þ³ž79¸¸84 ¾¾¾–YçúõëüøãÌš5‹‚‚^xá~øá|||,š¾¾¾hµZâââhРIË&%%±eˆ VEÑ !„¢*U÷=2(ê<·†î\Z<(¸q’‰¯õæÍ—{AÖ)°q¡H«áÒ⡼÷D‹šW”#;;‹¦»páB"##ª‘ @½zõ€[eU*22ooo&L˜`ñ¸„BQ÷H'PÜ’.%dØHO÷0¦ÎÜÊ7?ì÷0¸–Lǧž!ùRùO5ÏÍ­d4733Ó¢é6Œ?þ˜E‹ѦM¾üòKÒÓM»/ôÎûð´Zm¥b)-›«««IË}õÕW$$$ ÑhøòË/+•·B!j–ºÉ›þ« Ò ÷ X;€­X«)(Ðp#·¬Õ`cVöhÐÔt¢Íš5£^½z¾¢²<<<˜4iqqq|ôÑG,[¶ FŒÁ‰'¥áàà@^Þ­‡Ü$&&V*–Ó§OcooO`` ÉËúøøÐ·o_Ž=Z©¼…Bqo‘N ¸'k¹¼ÿ4x´{+þ9c*ï~>ì­À³5—cOQ¬©Üν¬0·€ ‘óÙ9Ÿ«G.°ç«µlˆœÏñß÷Z,[[[xàöîµ\š·S©T >œ¿þú‹Ý»wcggǶmÛ-Û¡CÖ®]K^^©©©,X° R1ìÞ½›®]»¢V«+µ¼Z­¦¨¨¨RË !„âÞ"†uÞgËNóÞ³ëßm¹tdK…ó=ðáaÒÓRqk(†Qª8¿=3Öé}wtÉ.4EÅ´ÒÅby=ýôÓÌž=›÷ß_ïû   N:¥û\zyf|||¥^¼Þ¡CæÍ›§xþñãdzmÛ6|||hݺ5ƒféÒ¥&Ç·|ùrÆŽkr¼¥¬­­+})ªB!j–¼,^ û [IGðÃÃçKOK•§ƒšÈ¾#“´ÆßmçÔ¨¢ù >|8~ø!‡¢}ûöºïOž—žÍít_>æM½8vœŒePÇÞÆÙµy;–íÙÄÈðG— ¿°€/×.dÇÉX ñ÷ôeâ£chîÝTQ|QÇbøyç.¦$`¯²#,(„׃Ú(¹ÉßÇ‹É œºr_7O&‡sI[Ë̹Á”s9pá8Í<ýh×´¥^|ÆÒ˜¼ü{œìQÛÚ²ö@4EšbÆ=4ŒAzMߘ §qàüqŽÅŸå˵ q®çÄꉳtÓ;´æé@Éó…Ñ«YôêTEå8‘pžï6-áDÂyÔö<Üî^é7\Ñú7T¿ò øzÝ"]Û 刑ثíÇW%ñj?¥*Ú~ž.nÌÚð ö*5™¹YŒèÁÿ¶.ÇßÓ—¯F½‹­Ñò+Ÿ¡úe‰òj_–X¿Yy9|ðË bÎÅßÃG¯|ÆÖ9ñ+¿’ý£’úQQûÃí¯¶·€WçM¦qÃFœKºDRf-}šñÁã/éNö™[?Ápý0Æ”ãgyÇ_Q»ÉH ¨ód$ðÞ±t÷Fw~kÝwþž¾Œ@\Jq)WÞ#‚fž~ŠÓüaëïì>sˆÉÃÇóã¸É¸9¹ðñÒ’ öj;Þ}ìEæü¹”Äk)\ÍLãûÍ¿ñΠçu£Eá­:5i>/õ}²LÚ¾n^DMšÏ÷/} @Ô¤ùDMš_¦˜“ŸÇ…«—iéã_aœA¾Í¸˜’@V^Žâ²¬ŒÙÂáK§ùjÔ»ü2þsžíù(Z­Vq|Ùù¹<6€E¯NeÆè÷ˆO»Ê·›–èå±íØ>& Íʉ3qqtfáöÕºi_¬Y@V^?Œý£ÂñGl”Þ²JÒ/Éc/ŽvõX:a:?½:•ÀFM¥oÌô‘‰š4Ÿ`¿@& EÔ¤ùº R†ÊŸ”‘Ê„ÓhéÓŒ_þ7ÓGMÄöfýU²þ Õ/€ï7/áHü¾ù3F¿ÇÉ+˜½éWÅñ¢$>CíG?†ò·_êk|0x,6bUÌV¾}ñŸ$]KáøåsŠÊo¬|†ê—%Êg¨}Ybý¬=M¿ö=øöÅ¢½ò[?æÄg¬üJöÆÖŸ¡öa‰õW“í§ÔΓ˜ôä+¬xk.ŽL_3_7ÍÜú †ë‡1¦?Ë;þŠÚM:¢Î“‘À{ÃÑø³\HN`@h¸Þ÷ßlü…?b£Þ#‚¡Ýú±áÐf®ÿYQš…EE,ß»™ÈþÏì€_C/Æ÷–“ ç¹r-€¶M[0 4œÿ¬úÿ]ý#·ëNH@+‹–íjf*­÷ú®ÎãQß­VËÕŒ4“ÒN»‘‰¯›ͽ›âîìJÏàPZèlÞ)"¤'á­:Ѩ;^~<Þ¹‡.žÔ›§W«Îø5ôBecKÏàPN]¹”tnwž<Àó½‡ÐÔÇî-;ÜÑäô<Ýþ(j{Ü]¹¿ñ}ŠÒ¯•àØ(š¸{ór¿§ðuó"Ы1cj‘|µZ-›ïbTøc´ðñ§¹wSF…âÏ#»ÑÜöCßP|æPÒ~J•·ý¼]=ðò#Ø7€ ß7lDS_’M¸ÿÕPù”֯ʖÏÜö¥D ô %Ы1ý;ô4iû™Ÿ¹ûG%ËWeû0¦ºÚσ­;ããæ‰µ Cx„¿N"· 0¯~–2§~(=~Vtüµ›\*꼋‚¢BÞøײ®+J3!ý*y…¼6oJ™iéY™ø¸zð|ï!ŒùöCŠŠ‹ùô©×Í/Ìò ò°S©+œ§tZna¾Ii÷¾¿ ‘ ¦2vÎ'´÷oÉ-ÚÓÎ?Hñò§®\`ö¦%œJ8O^a@™KÜë7Ðým¯RëæKÊHE£ÑàïᣛÞÌÓKiI&¥äPæ;%éW‡ŠÊ%O-íðXZfNÙy¹4óôÕ}àéGN~Ù×qsr1Ÿ9”¶(û¨mUºÿKÿVÙÚ’oBŒ†Ê§´~•GIùÌm_Jxß¶ìLÚ~æÄgîþQÉòUÙ>Œ©®öãëæ©ûÛÇÕƒbM1I©4óô3«~–2§~(=~Vtüµ›tE'#u_âµv:È›÷aÝÎÕÉ€ÏÆkŠõ¾SjåÛ3Ë} K©”ëé¤ge¢ÕÂÕŒTšÞÖé°„úNdçåVxÍÎÏ-™×ăpo3–Dþ—=gsöo,œÆ»ƒ^àáv]V£Ñðþ/3è}>öÎŽl?ÃÌ ‹õæ³²²Òû¬E{óû’Ï6Ö·.J¹ýo¥éí΂~¾†Ó·+î([9WÒUTþЦW7cñ™ËXûò·ŸaÊc¬¨|¦Ô/C •Ïœö¥”µ•~6eûY">s÷Æ–7Ô>”´¿ªfnû)Öhtknþ­ÕZ®~šS?”? Eí&—ƒŠ:Oî ¬û~ß»™n-Úë,Ü)°Qc“/ÃòuóÂN¥æhü™ çÑh4LY1—¡2¤ËCL^1Gw°Tªô ­©àŒ·«;ö*µÞSÚ„ÚV…Ïmg••r©WŸ~íºóáÿc`h/v>¨(¾”ë×H»‘ÁðîýqvpàRj¢â|5pÇÚÚš¤ŒTÝw·_&XÕé[‚JEAQ¡îsZV†IËxùqäRÅõ Œ×ЏÔsÂÑÞ É ºïÎ'_ÆAmOGÓN„T&>%í§&)­_æ–ÏXû2¦²Û_©ÊÆgîþQÉòÆÚ‡’öWÛÛÏ…äË·þNIÀÚÚšF ÜÍ®Ÿ–dèø©äø+j'éŠ:OFë¶ì¼\ÖŒ®’ÇR«lmy¬Sf¬û‰}gœ™NÌÙ#|úûwºy~ùk×s³x¾÷`FõDAQ!‹¢ÿ0)O7¬­¬ˆ>¾Ÿ¼ÂŠŠõ;‘6Ö6´nÜœã ç*LãXüYZù¢²1í5±Û‰>KÊõtÎ$ÆñwÜ)üÜ)ŠÏÕÉG;bÏJ:¢«b¶*ÎÛAmO–X¶g†«™il=ºW7½ªÓ·„æš²ûôß’™sƒ‡L{MÇÀÐ^\JMdöÆ_¹’žÌÅäæm[®7±úQ+++ú¶éÆ‚í+9Ç™Ä8n_EŸ6]°¶àècEñ)i?5Iiý2§|JÚ—1•ÝþJ˜Ÿ¹ûG%ËkJÚ_mo?;NÄò×Éħ&1oërhÑžzvöf×ÏêP•Ç_QõärPQçÉ=uÛš%hÛ´E•¤?¶ï“Ø«Ô|¾úGÒ²2ðtv#,8€sWãY½š/G½£»œí½Ç^àµySèÖ¢-}šñì¬w‰O½uZéc¼—N˜®»·Ã¥^}žï=„ékæs=7»ÜWDômÓ••1[y&l`¹qî8ËÀŽš\>[æm[Îå´$ìUvô á™°zóTŸÚVÅûƒ_bæúŸ™»e^.î<Þ¹/+b¶(΀ÑLY1‡!_DÒ°~ºµhGÜͳÝU¾% éú0/ž`È‘ø{øÜ‘¨ãû/ߨ;ÓGMä»MK=ûìTjn«)ž¡úa¬~{h_­[DäüÏÐj¡GPˆîñú–b(>CíÇ”´¯Š(­_æ”OIû2FÉþ¡"ÆÖ¹ñ™»4¶þŒµ%í¯¶·Ÿ¡½X½š É—iß4ˆ7–Ä`‰úYÕªúø+ªVy§2T‰‰‰jUííþ¹q=}û•¼ÔÓ­¡ü`¿—¥§•\æu{(ý<ôégølÙi“:‚ÆêTzZªÔ»Z¢XSüÿìÝy\”õúÿñ× Û*Š€š»Y®å™)e©-ænYN¶œÒ°]«£}«£¿6µ¬ŽYjÚñ´˜V§R+M­\RË-sKTPVYf~ƒ(0300pó~><à^>Ÿûºï¹¹g®¹î…1³žä¾˜áôïåépªTn~cf=ÁôÛ¥í_·Ï/rèÄ_ô*ÿ™ð2–rn#""5ÇÃó^"úÒž ‹ºÞÓ¡¸¬.½ÿ–¦èó'ÀW_,£s—®øøúâååü#26oÚÈà[†¸¼ì¢Ï Ÿ,^Tâ³o‘ܼ|ÂÃÇÙ@Ö_?™çü äètP1<]h\©é§tù5uâá´¾Þ>}:111•ê#66–É“'»ÜnêÔ©L˜0¡RËq–’@1¼ó¼œ_gÓâ¶Òâ¶’óÛlÝTèܹ3”þÀÛ-[¶`rðpàcÇŽ1þ|&NœXb¼Õjå±Ç#88˜FKÁyó0a .äÈ‘#•[ '( Ã;÷ùI[—aµg³ál6V+$m]ƤaíU ¬ã ÄOÞfü|½ qYYYÄ/a¿6Pj—gžy†¯¿þš/¾ø‚;wÒ´iS†@`` ,àé§ŸæÐ¡CÄÇÇóÔSO1oÞ<4hÀ°aðÙlL›6킾۶m‹ÍfcóæÍØl6l6+V¬(1_zz:;wî¤{÷î%Ægff²wï^¢¢¢ì㢢¢8pàééé%æíÙ³'¿ÿþ;§N*u=¯¿þzú÷ïïâÖ¹’@1¼¢Ä.åØaºÜܰáïëE€Ÿ7جt¹¹iǨXËœ={–7ß|“Ù³gÓ«W/ÚµkÇìÙ³ùå—_8xð }ûöeܸqÜsÏ=Œ7Ž;ï¼ÓíÉT\\V«•ÈÈÈãSRR aøðá :”»Ï&''—˜722›ÍF\\œ[c9Ÿ!†Ü8„øÅ#€ð ‚ô=<9¾_áÄŒ½p1ù6+ñ‹G0iLÙ§ãIÍsàÀ²²²èÛ·ïÓ’’’hݺ5/¾ø"]ºt!//eË–¹=ŽÌÌLüýýËœ§iÓ¦åöP¢¯ómÛ¶­‚щˆˆˆ”¤J Ô Iñ¸|äí– !}™þæjÞzïGé 'OÐcÔœˆ?àé0¥‚Nœ8a?U³è§wïÞöéGŽ!))‰”””*©´V›OŸ>]b|QÕ/%%…7ß|“7ß|³Duð\Em5jäöøDDDDÎ¥$Pê+˜ýÁÛ̾äæZIÏγ/xYÀdÁŠÕÓAŠ‹Ú¶m‹¿¿??ÿüs™ópçwrÿý÷3aÂÆŽK~~¾KËñòò ÷PšV­ZÀ%¿H äâ‹/fÓ¦Möq›6m¢mÛ¶ök‹ìÛ·‹ÅB›6mJ]FJJ ‰‰‰.Å-"""R%R'Ø8²e„^ ÿœ5§_ùXLÖ‘#[÷R`µy:Lq‘ŸŸ=ôãÇgÅŠ$$$°råJÆŒcŸçå—_&--^x)S¦““Ë/¾èÒrš7oŽÙlæ³Ï>#++‹¼¼¼Ó½½½éÝ»w‰d¯È¸qãxóÍ7Y»v-?ýô3gÎdܸqÌ·a⢢ðõõ-5†Q£FqÙe—¹·ˆˆˆHitM Þ´%û˜ôÌvÖ¿Ø…ø«Êœ¯÷³;HKM!¸qH™óHÍ3}út7n‰‰‰4oÞœ!C†°cÇ^xáV¯^Åb`Á‚ôíÛ—ÁƒÓ£G:tèÀÞ½{íý=>!!fÍš…§n¾øâ‹<ðÀ¤¥¥1`À€ î:fÌÞ~ûm&Ož\büĉ9vì·Þz+6›»ï¾›Ç{ì‚õXºt)÷ß™ëyæÌ{<""""•¡$P ïþkƒ Ágw”;_ZjÊ_“PX›xyyñüóÏóüóÏ_0­K—.dee•×£G²³³íÃ{öìqj9“&MbÒ¤IeN=z4Ï>û,Û¶m£[·nöñf³™×^{í‚ÄŸk×®]$$$0jÔ¨R§ggg³mÛ6-ZäT¬""""åÑé bxs~H³'‚i©)eþ.šOjŸÌM]<>l±X˜1c?ÿü³Ëí[eŽáµ×^+¾CèyÓ­;® eË–öçž?]DDDÄJÅðî¿6Øžà9ó[j—ÌM]¼b‡=1òäðˆ#¸»Çœ µ¿¹õ´r§ÿ¶È‚Ùl¾`ºˆˆˆˆ«”Šá¹’ªX»%D€=1ªKÃ""""¡$P O•@ã:?ªkÃ""""¡$P O•@‘bJÅðT ¬Z'N$ €k®¹†¤¤$O‡#""""( ÃS%°j͘1ƒ#GŽ’’¢GˆˆˆˆÔJÅðT ¬zÁÁÁtíÚ•ÄÄDO‡"""""( ÃS%°z˜Íf¬V«§Ã”Šá©X=¼¼¼ÈËËót""""‒@1è±8DDDDê:](†W—+M»µ$ê‘ýå öy4–?üÄÄDhܸ±Gc©ËT ë˕À‹útà†™wÓnàež…¤¤$:uê¤PDDDÄÃT Ã3z%0;-ƒåæ³ï«­äæÓâêK¸aÖß¹8©ö§ãSøê¹^»[•à¶M¹î•;hwãen鿈ÕjÅd2¹¼~""""â^ªŠá½øÑ­¯°ã??Ù«-í^ÆÁU»Xtý‹äeç:Õþ«æ²ùotEïÇo"°IÉ»¸­ÿ"yyyx{ë{'OÓ'21<#W=DÜÐö†nܱ|2+&~ÀÆ™_³ÿë_¹tX”Ã>ÒþLÂËÇ‹ÞßLX§æäçä¹­(<tÕªUŒ9²"«)""""n¤$P ÏÕJà¤a!žÙiÇwÆp`Å6¦šF”˜vòàq§ú¸ø¦¬í¼Ýù1št¾ˆ‹oéIŸ§ou[ÿ±±±Ìš5‹Ž;òè£:ÕFDDDDªŽ’@1<#W‹DtoMë˜Î%Çõl[ILL 3fÌàÙgŸuªˆˆˆˆT %bxF®†^Ú “ÙDÿÁd.LöNÅ%ãWßß>Ÿo= ™Ég.èãlz6F]E§QW‘—u–×›=À¡Õ»\êß‘ˆˆbbbصkWÖRDDDDÜII ž‘+‘=Ûм÷Å$¬ßË;]§i×–¤K#îÇ=<ðÛËø× +yg~MæñÓx[|¸æŸÃð®ÇÇC^Á·ž…¦ÝZ’~ì$9§²ˆèÑÔ¥þáëëK~~¾û7‚ˆˆˆH-æŸø°Ãy²Ãg»u™JÅðŒ\ ó¿§øöñEìûj+»>ú™€Ð\:,Šzá íó\Ô§½¿‰_ç®b˜„p=ZÇtaû¢uX¹“ÙDóÞíôö½.õï ³ÙŒÍfsÏJ‹ˆˆˆˆïE•9-7þ5·/OI ž‘+þÁõ¸eÞƒç»þ•±\ÿÊØ Æ÷<„¾“‡TºGÂÃÃùâ‹/HKK#8¸ömg£ÐsÅðŒþœÀÚâöÛo'<<œfÍšñàƒ•O*EDDD¤bT Ã3z%°¶ cÍš5žCDDD¤Æ©ŠS>Ë£$P Ïè׊ˆˆˆHíå8C§ƒŠá©(""""RLI ž® )¦$P O•ÀºañO_óè—kmÿRºG¾Ì⟾öt†uÿî'zêÝDO½›ø”DO‡c8Îî¿5ýøRÓã×) ÃS%°z}ºa%Ì}þ‚ñßíXÏ׿®­PŸ÷½;•µ»7óÓž_¹ûígJ§uX3zµé\áöŽ”×m·÷Ø!¢§Þ]g—_—­˜<‡oŸ[©>ªòõ³Úl¼½ò#nú1xú?˜½b1V«Õ­Ë¨lüîXÿš~|©L|îØ>ξ”õþ#"R(†§J`õ±Z­,Ùô-ãØÇ-Z÷%GÓŽÛ‡O&óÁÚ/ܾì¨ö]uÕnï·ºú‘ -Ù¸’Ûâ…‘ãù×èXVíÜÈÇVx:,·«éÇOÅçÊûGiï?"R6ÝT Ow­>kÿØ‚Íf#ºcOû¸¾ºóöÊÈÉËņõ{·qoÿ¡î[æîÍLùä-.o})¯ßù¤Ûúv¦ÿ³y¹Ìøz!?îÙJn^-Ã"yòæ{hÞ©þÏdgò¯¥sØzh7mš4§k‹ìˆßÇ;÷>gŸç¥¥s¨g Ä×Û›¯]G¾µ€¯É-=ûaµZ™÷Ã2¾ùmé9™tkÑ'n¾‡° Â/4Öü¾™ÿüô‡“bññ£o‡ËãíøûZ8švœÛßxʾœ¢oë{¶íÌ+w<à°Gñ•Ç™ådädñÌg±ùÏ]´ à¥ÑÚÀñúAáéx-C#8|â({&28¬D{Gròryã›Eö}»o‡îLt'_¿J¯?8Þ¾Ù¹9ü¿/ÞgþíD4 £O‡ËXµk‹'¼l_¿­;2¦Ï  °b²pÝ—,zxºSÛ§2œyýœÙ~åùßÖ5ÜÖ+†n-;0üÊ|µu-£¯èTûÊîÿåqÇþ[ÕÇ—‡ç½DóÆMù3)ž¤Ó©\ÑŠg†ÜGÃÀú€ã×ÇQ|åýUvû‚k諒ÿˆHÙT ÃS%°ú|ºa%·õº/³—}\˰Hnï;˜¸ä£Ä%ctŸA´ kæR¿!õbññÃÏÇ—ÐúJL»æÒž¬™º€ûb†W¨½#Žúÿ|ó*vÄïcæ]OóßG^aìÕ7c³Ùœîæ× 9ÉÜûÿ{®½¯¶®)u¾~ßD _Ÿ>ú:><6M/à½ÕŸ±aÿ6^ýó|‰àzALùô-{»Ì³ÙÜÑw0‹žÎ¬»'‘zœw¾ý€Èà&¬™º€9÷M`ÍÔ¬™º Ä4Gý;Н<Î,àë_×1 [Þ÷OlÀµ_:µ~űý£ƒïæó'ß$(°A‰öŽÌùîcv&ìgÆO1ëîIì9vˆ·¿ýÈ-뎷ïœï>%>%‘·ï}ŽGÞÁ—[Ö8;8·}*Ê™×ÏÙíWšœÜ³$¤$ѱYû¸K›µáhÚq²Îæ8ÕGe÷ÿÊ®?”¿ÿVõñà§=¿2uøC,{|Aþ¼þÕû4G¯3Çײþ¿*»}Áµ÷ÒÞD¤lªŠá©X=v%àЉ£¼|Þü[+ÿKFN£û "¿ ŸÛ~ä‡]›ãíN÷ý¯Ñ±ö¿{¶éärl•m_žÔôÓD7±3uƒîN·ÍÉ=ËÚÝ[xuìã´  ehÑ{rðÄÑ æ kÌ×Ü €¿¯…ÈËÏgé¦ïxeìã\Ù€GŽeÐô9v2™ˆF¡ ºüêý éÕŸk>w*>gú//>wéÓá2®¾¤p»¼ìj–ÿ¶Î>Í™õ‹¾´Í7àêKºó¿-?8µ\›ÍÆ·;Ö3qÐ]´h À]×Ü«ÿ›Oì ;1›Löy+²þ޶oxþ߹GßE›&ÍÿZÿ¾¬ýc‹SñƒsÛ§ª¸²ýJs:+€ €úLùä-l6+»v§²Ò ðs\Íôäú)oÿu¤2Ç—"×vìEDp#zßȃsÿìÜ,>~•z}ŠTôÿËξ”õþ#R[ø'>ìpw?KPI ž*Õã“ +¸ñ²>Ô³”?æªA4ª×€ïv¬'7?Çoú'3Îx(J÷ë×é b?˜Îýï>O·–Ó»}7ºþuêš#‰§’)°Ð2,Ò>®EhD©I`‡¿’„sM;NN^.ãçýë‚ii§‰hÊÞc‡xûÛÙ{ô 9y¹NŸ éLÿåÅç.áç,§žÅß¾€SëR¿¡ýo‹o‰öå9•AfN6­Îy}Z‡5#ël§2Ï\/È>¾"ëïhûúYÈÈÉ¢Eh„}|‹ÐøÃùeTæõ¯,W¶Ÿ#®Ì{.O®‘òö_G*s|)ùWÑ(”kI§Rhä–×§¢ÿ_Îpöý£¬÷‘ÚÄ÷¢²¿ÄÈÍíËS(†§J`ÕK<™Ìú½¿±ð¯ëÎÕ¨^Z‡5§ÀZPbœtˆlÅDZ¯²qÿ6ØÉÄ…/óô-÷r}×Þn]ޝ·O™Ó>âMû5>ç²Z­Lþï,úuº‚Fާ kwoæÍ‹]ZvYý;_e™M%¯\°Qx:œ³ëg:¯¢QÔÞ*³þemßS™éÛš8oÝÎY5w½þžP€ÓYé<2ð¶ÞSbZyjÊú—µÿ:ÃÇ—‚sî¦ZtgUÏ(-WUþ9óþQÞûˆ”M׊á©Xõ>ÛôW¶ïV¢2t¾6M›ÛO92š €ú èzÏ}€›ºG³~ßoNµ oŠ—Ù‹CçTþâ’V[dpü||Ù•°¿ÔéÉgN’š~ŠÑW ¤ @©Ï‚+új=ï“¡£þÝ¥¬å;âìúUTP@=-þ%^Ÿƒ'Žàïk¡a`å¿Èp´}‹–—|Ì>îÜ¿ü||ÈÍϳ§fœ²ÿíìöñ6{a2™8[Á NY¯_e·ŸÅ׿!MÙ}ô }Üî#Ü„@?‡í+»ÿ;«²í©èñ¥È¡GŠÿN>ŠÙl¦iÃ*ß¿‹¸cû”÷þáÌûˆ\HI žžXµ2s²ùæ·uuö¶Ü_m]˺?¶’|&ý‰qlÛK³à¦NµµøúqÍ¥=˜»j )Il=ø;?ºp½—·7·öìϬo>ä—;9q:ÍvòÂgÿ ¿1ôógëÁßHHMâ‹Í«/è',(³ÉĺÝ[ÈÉË%¿ À©þÝ¥¬å;âìúU”Éd"¦ó•|°ösö%Ʊ?1Ž…k¿ ç+œ¾^ª<޶¯Éd¢§(>üñ<~„í‡÷°|Û%úh×´öm'7?ÓYé¬Üö“}š³ÛÇl6Ó:¬ßüö#)é§HÏÎti=Êzýܱý_ÍÒMß³ýðvÆïcÉÆoÜý§ÚVvÿwVeÛ—§2Ç—"?þ±•Ÿ÷üJBJóV/¥wûnøYª|ÿ.R•Û§®¿ÿˆ±äÆ¿VæOUÐé bxªV­¯~]ÃE!átiÑÞ#Ë;ûiR’ìÃE·!ÿôÑ×Ýrí£þ½½¼˜÷ÃRޤ&aññ£O‡Ë¹£ï`§û8–—–½Ë=ÿ~–ÖaÍxùÕìJ8àtûûc†cññå•/瓚qаÁôýë&¾Þ>L¾í>Þ\þæ®ZB“ †ôŠaÙæU%ú ¨Ïßû åõ¯p&;³Ä-ÜËëß]Ê[~yœ]¿Êxðº‘Ìüf± ¦a³AŸ—óЀÑnëßÑö}ຑLÿâ=˜û<ÁaÜÔ=šU»6Ù§ºžßÿÁÐ×biIßKz°f÷/€kÛgâ ;yiÙ»,ûå{—µRÞëWÙí7üʤ¦Ÿâ™ÞÀ†»õeä•78ÕÖûe×ß‘ª>¾ îÍë¾äЉ#tkÑÇnºÛ>ÍÑëãŽãke·oy<ýþ#â.î¾é‹3JûªÇ'111××§ææ‡ß¯\Ǹ‡–7Öõ[uYZj PrŸ(1f¬}×® ,ÿÍ$-5EûÝ_ ¬Œ™õ$÷Å §ç(O‡cï¯^J|J"ÏxÈÓ¡H ´z×&Þ[ý™ý9"åyxÞKD_Ú“aQ×{:·ÓûxRÑçO€‰o|Ëm7 àLVVV«õ¯ß6rró±ZmŒ®ïÇÆë™1Áõÿ͢ϠŸ,^Tâ³o‘ܼ|ÂÃÇÙ@Ö_?™çü äètP1-ÞLÖžúþúî­4WvfôÕÍ<†ˆˆH O#bxçŸê™óëlZ›ÀáÏž‡îCT ”*—_`egÜò ª÷âÈ` ½/iL³Æ,¾^Ìþú éÙùöé&ôëJ—– ÀdbçáÓ¬Ú‘Œ­‚aöj׈K/ªÏ‚Uñ.µK>}[E*""".Q(†wîóÿ’¶.ÃjÎf`µBÒÖe4í>„û¯Ew­Á–¬?æé*ålž•¯6'9žÑÍ|}Ìœ8u–øä,úu ½`zÏvèܲŸmHÄf³qÛ•dä°q¯ëUq“ z´kÈš)Žg>ÏÄL$fºÜNDDD\§$P ïÜ _æ–Y´ñ<û÷Ûxñý¥øx t¢J`=~k[^ýü“†µ'3§€7¾ú€ lEP€kv¥påÅÁœÍ³òÅ/‰I)LÄxsÃåM¸(4³ Nfä±zG2&&1]CéÙ®‘}y WÇs4-Ç>ܸ/·ô §q}_v>MÓF"‚-¼½ü§3ó.ßß׋뺅Ò6¼^fñ)Y|¿-™Ôô\. õçÆîM¨gñfý×£Æõ}¹o@Kûðù•¸ªvèx‡ŽgÞÈRêôn­‚ØràñÉYü²ÿ$ÝZU( ìY&öÉp¾M³ú ‰ àð‰,þ»îH©óøya2AfŽ®©,%bxEׯ/Aff6$®ÃÇÛŒÙl‚Äudee¿x“Æ|´%ûT ¬"­›²ÿXZ4àÚÎ!,ú!€.oB›¦ìŒ;CzV>‘-„4ðµ' )Ù˜Í&Ú4 ¤a)×¹"œÐ ?’NæÐ&<þ¥_3XÖò‡öŽ yˆ?‡Žg‘›o¥]D £ú6cÎÊC…ýGEàçÅñSgéÙ¶_×®LMÏeÚ’}Z¼™0¸µKm»·mÈõÝÂJ¶zG2›öt©¿óùx›i\ß—c©ÅIõÑÔ¢;…àëm&7ßêR=Û7bëŸ'±ºpZçž#éL[’Ε‚iPæ|£¯n†Ùdbî·‡]ŠIDDD.¤$P ¯èÏ”c‡¹üÖ¾kÃß× //3جt¹¹Û>ÿ‘‹@•À*´|ëqNfæÒ¡Y}BøÙÇ7 ôÁjµ±iïI’ÏœÀÛËdŸ¾÷h{f0¬wÄI`X¡A~¤¦ç²`u<õý½ùÇ¥'Z¥-¿iC?š‡øs0)“: WÛ†×ãl^~^$žÌaÁªxBøqïõ-ܺ]ʳ;!Ý^±<Ÿ;ª‰¾^då0$*“ÉÄ¿§Nóór) lÖØŸÐ¾|òãéJÇ%"""UKI Þ¤aí‰_<(¯ HßÓãûNÌØ “o³¿xùÄ£±Ù©¬©é¹„4ðujù¡A…É`ë¦LÖ¾Äü }ÈÉ-œ/îDa"–|æ,™9ùZªçЙ}¶€³¹¥'b®TÛœQÙÓ,{µoÄŽÃgÈÉs­zè¬÷¿‹«’~EDDÜ¡¾Å›› ›ÕJ lV36›kÉñ5á6hJ¥NHŠ?@¯Û ¤/Ó§4+·0ñ ðõâÛm'¸(´ð”Ìì\瓆>´ dÎÊÕŠGDD¤6Zú¿•žÁeJ¥Ž°‚Ù¼ýÀìKn®•tòÀì ^0Y°R5 £+°Úðõ1c6™hàú!Å×ÛÌî„tv'¤ããeâáA­iQεaç:•™@³Æ…7=©gñ&¸¾óÏL9Sxó°fWŠ=Á ð!7ߊù¯‚eØ_Ã@‹wµU¡êOÍË·’šžKDc ^ƒládFg]¨èõhÛ‰™ö×£*øûyáe2‘‘S}7Õq¤‹L:w銯/^^^N·Û¼icF嘒@© lÙ²f=;ƒÉÄ?gM/žhéÈ‘_vP`­ ÅùÚ'ùL.ÍCüܳI…¤¡½#ÈÍ·qâTõ,ÞX| ¯ÁƒÂk£;Þ¨§èÔÍžíqIN> )Ùì;–AZF.¡A~ÜÝœ?/Ì&ç냉's8’šM³Æþüýºœ8u–zþÞ4ñgÞwñ$¤d“}¶€ÖM¹¾[Mú9îÔ²Ï}¶r§iúz›iTÏÇž‡4ð%ÀÏ‹”3¹Xml?tš+/&>9 « zµkÈ/ûO9Ý¿Ÿ™®­‚øä¯k*«Ê­W„ÚÀÏ~×Y©8%bxi©)\ùÌvÖ¿Ø…ø«Êœ¯÷³;þº;hû2ç‘ ý°3™[¯ˆ ]D=6îM+÷¥9|<‹N-кI6IÍf寅§&z›M%pIóú˜Í&öÍ`Ù†DnîÕ”ˆ` ûeW`£iC?§<¾äçcôëJÛð@.mîGÖÙ|öÉ #'ŸüË6%2°{º´ bÛÁSZ¼Ï9M´ækÚÈÂí×4³ê[øwÑ#4~Ù’zo†öŽÄì8|šMûœÙg <;‡ëù{±íÐibP¥ËûGÄPNeå±çHz©ÓEDDÄ5JÅð +ÁNÿ×Lh>Œ7–Ø?˜W÷ðÅ)WSÐùWZ&^E}o27ua^Êç‹çüáqM†xźœŽæ›­IÇÃg²òéžqmµ,Ïï÷ØlNוvŸÄÄÄ\_Ÿš{¦è÷+—3àF‚‡x8ñ¤´Ô ä>Q4ûÉÍË'<<|( dýõ“yÎßÙ@Ž’@©ÕœIÏ=Õәߎö©s“@©[Š>BíMu:¨ž+  ® £S(†§kEDDDDŠ) ÃS%PDDDD¤˜’@1ãéPDDDD¤JÅðT ¬¿Ì^Á—ãæpòÏã¥NßôÆr^ ¿çÍ#™jAnFŽËˈeòäÉ¥N›>}:111.÷Y¦NÊ„ *Õlj'ˆŽŽ& €|ÐM‘‰ˆˆH]äíéDªš*žWWÀwO}ˆÍj£ûý1xûùàåëÚáçØ±cÌŸ?Ÿ”:½sçÎxyy¹#\—lܸ‘_|‘õë×sòäIhÖ¬Y‰y&L˜@ëÖ­yòÉ'/˜æ¬?üÄÄDhܸ±;B‘:J•@1³gÏ&77—{ï½—÷Þ{ˆˆ·. 22›ÍF\\ 6t©mRR«V­bäÈ‘nKDDDêUÅðT ¬ý233ð÷÷wk¿ .$66–Ûn»ƒòÜsÏUI¯‹³bcc àÑGu{\"""R÷( ÃS%°ö .|]NŸ>íÖ~GŽÉ”)SX´h;wfÆŒ¤¥UÍE±7jÔÈ¥v3gÎäèÑ£X­Vf̘Q¡‰ˆˆH£$P O•ÀÚ¯U«V”ùxˆŠ eêÔ©ÄÅÅñÜsϱdÉ"""¸ýöÛùã?ܺ¬}ûöa±XhÓ¦Ëm#""ˆ‰‰a×®]nIDDDê&%bxªV¼ì\VÄ.`EìŽïŒ`ã̯Y»€ÝŸmrÛr¼½½éÝ»7›6¹¯Ïsùøø0zôh~þùg6lØ€ŸŸ?üðƒSm322ضmûöí`÷îÝlÛ¶ÜÜÜómذ¨¨(|}}+£¯¯/ùùùj+"""r.ÝF ÏÕJà¤a!ž¹Ö(8›ÇÆYß”·ëãõXó ¸tèn[Ö˜1cxûí·™Ë¶mÛèÖ­›}üž={*ÕoeEGG;LÎvíÚEBB£FªðrÂÃÃùâ‹/HKK³_#)"""R:T O׃ÅbaÆŒüüóÏžÅeëׯçµ×^³ß!´"n¿ývÂÃÃiÖ¬>ø £‘ºF•@1%ÑÓáΣ _fñO_;œ¯¦ï_5=>q’@1¼ó¼œ_gÓâ¶Òâ¶’óÛlU Àßߟ»îº‹ÀÀÀj]îÓO?M›6mðññ¡I“&<ú補={¶Âý͘1ƒ^½z¹Ü®sçÎögzÒ§VòÀÜç/ÿÝŽõ|ýëÚ õyß»SY»{3?íù•»ß~¦ÔyZ‡5£W›ÎnïHyý×f+&ÏáÛgçVª½Ç=õn÷t«ÍÆÛ+?â¦ÿ÷ƒ§ÿƒÙ+cµZݺŒÊÆïŽõ¯éûWeâsÇöqöøQÖñGD.¤»ƒŠá%xÁCHÚº « 8› €Õ I[—1iئ-Ù§J`-Ä‚ ª}¹Mš4áÕW_¥yóæ8p€ &àííÍË/»þ­yAA³fÍbÚ´i.·4hƒ r¹;Y­V–lú–ûú·[´îKúuºÂ>œx2™ow¬ç®knqë²£Úw%ª}W·öYýKé–l\ÉŠí?ñÂÈñ˜Mf¦|2›Æõ2úªžÍ­júþ婸\9~”vü‘²) Ã+>4„Ì-³h3âÿxöï·ðâûK9ðñè>¤Ä|R{ìÙ³‡K.¹Ä>œ@³fͪmù'N´ÿÝ£G¶lÙ† *Ô×gŸ}†Õjeøpç?Ä,Y²Ä>ÿþýùþûïKïĉØl6š4iR¡Øœ±ö-Øl6¢;ö´ëÛ¡;o¯üˆœ¼\lØX¿w÷öê¾eîÞÌ”OÞàòÖ—òúOº­ogú?›—ËŒ¯òãž­äæåÑ2,’'o¾‡vá-œêßjµ2ï‡e|óÛ:Òs2éÖ¢OÜ|aA…_Heçæðÿ¾xŸ û¶Ñ(Œ>.cÕ®M,žPø%ã _¦G뎌éSøÀw;Ö³pÝ—,zx:k~ßÌ~úŠÃÉG±øøÑ·Ã匿ñvü}-•Þ6GÓŽsûOÙ‡‹ª==Ûvæ•; '/—7¾Ydß7úvèÎÄAwbñõsjÿÛº†ÛzÅЭe†_9€¯¶®u: ,oý‰¿<ζÏÈÉâ™ÿÎbóŸ»hÁK£!´Aáë[Õû×Ãó^¢yã¦ü™OÒéT.ŽhÅ3Cî£a`}Àñëã(¾G¾LËП8ÊÞc‡‰ ³¯_e·/¸vü(íø#"eÓé bxEׯ/Aff6$®ÃÇÛŒŸ¯$®#++‹øÅ#ì×JíÒ¡Cl6‰‰®_Ï4{ölL&S©?¯¾úªK}Ùl6öíÛÇÊ•+¹úê«]Ž O?~<ÞÞÎ?7lØ0l6›Ãêáõ×_Oÿþý+—³>ݰ’Ûz]‡—ÙË>®eX$·÷L\òQâ’1ºÏ Z…¹–¤‡ÔoˆÅÇ?_Bë7*1íšK{²fêî‹);q.¯½#Žúÿ|ó*vÄïcæ]OóßG^aìÕ7c³Ùœîÿ½ÕŸ±aÿ6^ýó|‰àzALùô-ûô9ß}J|J"oßû ¼ƒ/·¬q)þ̳ÙÜÑw0‹žÎ¬»'‘zœw¾ýØ¥>ÊÜ„5S0ç¾)¬™º€5S”ø€?ç»Ù™°Ÿw>Ŭ»'±çØ!Þþö#§úÏÉ=KBJ›µ±»´Yަ'ëlŽS}”·þÎÄ_Ùõøú×u èÖ‡wÆý°pí—öiU½ü´çW¦ˆeÏ"È?׿Z`Ÿæèõqæÿë‡ßáÑÁwóù“oØÀ¾~•ݾàÚñ£´ãˆ”M•@1¼¢Ä.åØa.¿µ/äÚð÷õÂËË 6+]nîöÏä"P%°Ž5j}úô)uZdd¤Óý¼ýöÛŒ?«ÕÊ=÷Üà /¼àr,ëׯg×®],_¾Üå¶5Á®„:q”—Ïû€÷ÖÊÿ’‘“Åè>ƒÈ/ÈgŶùa×&Æßx»Ó}ÿkt¬ýïžm:¹[eÛ—'5ý4‘ÁMì•™«twºm^~>K7}Ç+cç’ÈÖ<2p,ƒ¦?ȱ“É„7 áûxtð]´iÒ€—õeí[œ^Æ ËK~!1¤W¬ùÜéö•a³ÙøvÇz&º‹ö-¸ëš[xõó‰t'f“©Üö§³2 ¨Ï”OÞÂf³ò·k‡p*+?ÇÕLO®‘>.ãêK ÷‹—]ÍòßÖ9ݶ2ûW‘k;ö""8 €½oäÁ¹ÿGvn¿J½>E¢/íE³Æ…g\}Iwþ·å—c,‹³Ç²Ž?"R6%bxÁCˆ_<(¯ HßÓãûNÌØ “o³¿x“Æ|âÑX¥z5nܘ† –:ÍËËùo“GÅUW]Å®]»xúé§yã7ˆuÜð¯¿þ:ûÛßÊŒ§²¶mÛV%ýùdà n¼¬õ,%ƹjê5à»ëÉÍÏãñ›þÆÉŒ3UKuê×é b?˜Îýï>O·–Ó»}7ºþuê¢#GÓŽ““—Ëøyÿº`ZZÆiý,dädÑ"4Â>¾Ehüá||{âío?fïуääåØOE¬j§³2ÈÌɦUXñ*­Ãš‘u6‡S™g®ät_®Ì{.O®‘ðF¡ö¿ëYüíq8£2ûW‘È¿@€ˆF¡X H:•B£À ·¼>!õ‹Y_—ÖÏgeD¤lJ¥NHŠ?@¯Û ¤/Ó§ž`÷‘?‰ nB Ÿ¿ÃöήYñ;«²í©èþUäЉâg§J>ŠÙl¦iÃü}ý*õú8ËÛ§¼ã‡3Ç‘šÎ?ña‡ód‡Ïvë2•JPP`ãÈ–}4ëÙL&þ9ëœo -9òË ¬nüjTj…BB*~ èñãÇ™2e 7ÝtM›6eß¾}<ûì³Ü|óÍN÷qúôiæÍ›Ç×_;~ teŒ5Š]»v‘””äÖ~3s²ùæ·uLó¨[û­-¾Úº–õ¸$²§2ÓÙ·—>_˜Ð•ÆÇÛ›[{ögÖ7âëíCËÐHâ’²bûÏ<7ôL&ý;Eñáÿ£eh$éÙ,ßö#ç$@íš¶`þíŒé3ˆìÜVnûÉ>­Q½úù³õàï\×¥7 ©I|±y5œ÷AÜl6Ó:¬ßüö#·× ÂÏÛ‡úþÎ?o3,(³ÉĺÝ[ˆjßo³Þ^…‰eLç+ù`íç\Ž X¸ö úw¾Âéd`ðåÑ,þékºµ¸³ÙÌ’ß2üJ瞇éìú—e×ß*³ùñ­ü¼çW. ‰`Þê¥ônßÍ~=ee_gTåö©ëÇ1ߋʾ¦57þ5·/OI Þ´%û˜ôÌvÖ¿Ø…ø«Êœ¯÷³;HKM!¸±n #Îñ÷÷'99™{ï½—ääd‚ƒƒ2d¯¼òŠÓ}Ì;—:зoß ÅСCöîÝk.:5ëüGeœ9s¦JñÕ¯k¸($œ.-Ú»½ogŒý4 )ʼnmÑmè?}ôu·\ûå¨o//æý°”#©IX|üèÓárîè;ØéþïŽÅÇ—W¾œOjÆ)ÂÓ÷’â›X÷%‡N¡[‹Q4ûÚçÍË'<<|( dýõ“yÎßÙ@Žž(†7ç‡4î¿6˜iKö‘–šRæï¢ù¤vIMM%sSæÎKóæÍ !sS—óÔÔáÄÄDî½÷^nn=Í©ù+:lÝq-[¶´?TÞ]ý§¦ŸfÐåוu_•Ưá’Ãs¯XQ£âÑp;Ñôx¹Ók밳ǑÚ"7þµ2ª‹Obb¢-5%¹Æþ|üŸ…ö¿¥n+mŸ(>wž}º×éßÎ,SjŽŒm€-ccgÛÊ•+m;ÛÇë·~ñ÷èYOÔˆ8ô»vüþtCÝ=.ŠT•s?s~ðþ»¶_7o²íÜþ›m÷®Nÿ|ðþ»ö>²vŽ´åŸþ¥ÌŸ¬#/È}Îÿì[ô“˜˜hnn®z—-0 >à£$Pj5g’@W@gö)íw5ÇùoôÖ°†5¬a ‹T5#$º&Pj5W® ¼ÿÚ`§~ëš@)‹® ¬¹™žˆ›¸’êš@©nÕyíèR¸’VUåsÅĉ™3g={öäã?¦iÓ¦žIDDD¤Öp÷ƒà¡»ƒŠá©Xµf̘Á‘#GHIIaÑ¢EžGDDDDP(†çj%P\L×®]ILLôt(""""‒@1Û­ËT(†§J ˆˆˆˆÔd¾=Væ´Üø×ܾ<*†§kEDDDDŠ) ÃS%PDDDD¤˜NÃÓ5""""R“UÅ)ŸåQ(†§J ˆˆˆˆÔTî¾é‹3t:¨ž® )¦$P O•@‘bJÅðT )¦$P O•@‘bJÅðT )¦$P O•ÀêqðûüúÞ*2“Ïx:)‡’@1Nœ8Att4<øàƒnŠLDD¤vR(†§J çäðÝS’–A÷ûcˆzd ^¾®=¦ôرcÌŸ?Ÿ‰'–:½sçÎ 0ÀẕÕjå±Ç#88˜FKAAÛÚ¿øâ‹˜L¦ ~~úé'CL˜0a .äÈ‘#~>üðCIHHàwÞ©p?"""F ‡Å‹á¹Z œ4,ÄÓ!×J£>¢Ìi9'3ÈÏÉ£I— ~g\…úŸ;w.ÑÑÑ„††–:}РA 4¨B}W¥™3gòÁ°téR¼¼¼6l<ùä“nkß²eK–-[V¢]»ví 3=88˜~ýú1þ|ž{î9*"))‰N:Ѹqã µ1%bxªV­± Ø8ëûð½^¢YTñø™-âT\2ÇwÄ1Õ4€Éé ñ­gqz9Ë–-+õ4¾%K–0|øpú÷ïÏ÷ß_¡õ(²ÿ~Þzë-:vìȸqKXÏõî»ï2~üx¢££˜8q"sçÎåÉ'Ÿ$33“.]ºðøãÛ×íßÿþ7Ó¦McçÎ4hРÜöEüüüèÖ­[™1ÔöéP˜äÏœ9³ÂI ÕjÅd2U¨­ˆˆˆÑètP1<]Xµ.ê{ ½@£Va¥Nïz×5\ö·k©O¯‡Ðë¡.šžžÎÎ;éÞ½ûÓ† †ÍfcÚ´i[Àf³±|ùrHÇŽ‰‹‹#**ŠÙ³g—zª¢ÉdâÕW_uØoff&{÷î%**Ê>.**ŠžžN`` ,àé§ŸæÐ¡CÄÇÇóÔSO1oÞ<4hà°}]Ò³gO~ÿýwN:U¡öyyyx{ë{OP%PêU«Ö¥C¯àÒ¡WðÑ­¯pòЉ ¦_ûü2’NñÛühÌÀÙwyqqqX­V"##ݲݙ3g˜?>³gÏ&77—{ï½—÷Þ{ˆˆÂÃÃéÓ§O©m‰%%%€†ŽÕjåùçŸ 99™úõëÓ·o_ÆÇ=÷܃¯¯/wÞy'ýû÷wº=ÀÞ½{KT¹:vìÈ®]»ìõ}:no›ÍF\\ 6ÄIII¬ZµŠÿÏÞ}‡GUm þÍLz$$¤Ñ % -@BèÒ•Ž°Qm`Á+å^ïgA”¢ˆ€P”*%„PE‘šPCKŸr¾?’ i3™I&™$¬÷yæÉÌ)û¬³Ïžd¯ìS† bÕzB!DE%I ¨ðäšÀò/99WWW›–ûÕW_1eÊ^yåÞyç4M®ùÞÞÞ&޼ËÆßßßä¼·Þz‹fÍš¡Õjó]gÉúy¯©Ë[Oå}>€››p¿-XjÊ”)üë_ÿ¢qãÆ¼ð V­+„BærÂ.'\±wV“$PTx2XþU­šy\îܹcõ(9C† áÆü÷¿ÿeãÆŒ7ŽÑ£G··dÉ&NœXàºï½÷/½ô’Ùò}|2ÿ¡pãÆ -ZÀ¯¿þškÀ¥K—¸råŠq¤+$$Īõí}Í^i\xçμ¼¼Ì.—×G}Ä+¯¼B×®]Y¸p!¯½öšUë !„…™6ãUE¹ÿ22¢ Ó겦rÌWøÏ–Ú5f¹&PTxrM`ùW·n]ÜÜÜøë¯¿lZnµjÕxã78þ<¯¿þ:k×®%00#FpòäI†JLLL¯Ñ£GZ¾»»;5bÿþýÆiû÷ï§~ýúT®\½^ϨQ£xúé§™4i#GŽD§ÓY¼þƒâÏ?ÿÄÅÅ…   «× ¤k×®ùN1B!lÅ`0 ×ëÑëtèt:´Z-ÚŒ ÒÒRIMM!%%…”äd’“’HJ²ÿuý2(*< ,9ÚÔ ¶ÏX ÀÕ¸ ìûh•ü=©Õ>„ÐÇ"m²¢££Ù¿¿ñz9[rttdذa 6Œ˜˜-ZÄ/¿üÂsÏ=—kÄ­(ÆǼyóèØ±#†>ú(׳,X@bb"o¾ù&jµšõë×óÖ[oñÆoX´þƒbïÞ½DEEáääT¤õœœŒÉµBñ “$PTxrM`Éѧks=àØª=tz›%Çgéҥ̜93×ôàà`NŸ>müœ}ƒ‘‹/R£F «·Ó¢E >ÿüóâ›ÃÔ©S‰§ÿþ(ŠÂ˜1cxñÅ8zô(o¾ù&;vìÀÅ%óqË–-£}ûöôîÝ›ˆˆ³ë?H¾ÿþ{ž~úé"¯¯V«Qņ !„åWAMrLHHÈpr,»ùá¶­›éÚ½'U½¥Ãþ K¼™y÷Äœm"ûóàá#xwíŸV%‚…µ©Ä›7¤ÝÙAZZAAAlÚ´©ÐëÇDÅrìØ1~øaþúë/ã b¬µpáBþóŸÿ°wï^ã5ŸB!DQd÷?>ùÏ¿™6ãUôz=ƒÖ­£]»vT©RE1žžNbb"»ví¢g  _½œ§ŸÉÿüãÂd÷AW¯\ž«ï›-C«# à1 HÉz%çxŸ ¤É5¢Â“k+.\ÈîÝ»íŠ(e{öìáƒ>(r0bĨQ£Ï>ký]!„Â[·n¥wŸ>ܺu €[·n3hÐ`vìøÅΑåVv‡û„°¹&°âB¢,)[)©%@F…B!DiR«Õ >¬Ìf+›Q aC2ø`˜7o]»vµwB!„xÀ¤¤¤Xµ¼N§-¡H,'I ¨ðd$ðÁдiSºwïnï0¬6}út‚‚‚pttÄÏÏ^xôôt{‡%„B 89:ðÇÞ=V­süØ1ìý8>¹&PTx2ø`èÕ«½zõ²wVóóóãý÷ß§fÍšüõ×_Lš4 ,X`ïЄBQˆ‡ºtc×®]øR»N]4fNÿT…«×®òϹótîÚ­£ÌO’@QáY;8c <¾""‚ƒ²wïÞ|Ë]»v EQðóó+ö6…BaµëÔ`÷î]lܰÞì `Ôj5U½½iÛ¾uj×)MP0Í1!!!ÃÞC”ælÛº™®Ý{Ú; Q†ämÛ¶nfðð‘$Þ¼a¯°„B!„°™ªÞ™ƒ«W./0ÊÐêx HR²^É9Þ§irMúÇm IDAT B!„B<@$ B!„BˆHÙ=çÓ çÏcûömhµÖÝnõTFP Ed™.µ“íºý²âr«–wtt¤K—®Æs°í¥¼¶;!„Bˆ]°ÓßV-_VúŸ¶Rî“Àóçþa×®]´jIdTNNέ7ÿÝ·y´ýn'ÿýÆ­4mÖÜnÛ/K.'\aÚŒW-Z655…}{ö°k×.v»¨¶¼¶;!„B'¶.-wýO[*÷Ià¡C‡èöp4lˆ¢(èõz‹×U ÷Òt%]Á<\2«ÝÑɩԷ]V)ŠbönJÙœœœéЩ3ÕÙ½ûw»} Ëc»B!„÷ûâå­ÿiKå> ¼yó&uêÖE¯×£(ŠUëê½ÁºulAŸ§F£)õm—U–~ ³Õ¬]››~(ÁˆÌ+íN!„BÜï‹—·þ§-•û$Ð`0 ÑhÐëò¬(ŠÂјCøâ˜¾Á`Õ·ÅÛ,ëEÉU/ëׯgëÖ­,^¼uÝtÐhìr첕Çv'„B!î÷Åóö?â/sýꚆµD¥Êÿ$={÷?m©Ü'Pp§ZQŽÆÆpïG`Ðç?`z‹Gd¾_ó-jö½¥ô2”OÞcØ®];æÍŸÏ³Ï=lj ½•F»Bˆ²À–…ÂÞ²ûâyûrU½½ùëÌiŽÆÆÐ¤ióÁŠ¢b$y†rE!îèn%Þ¤K·îèuŸ²§ VtÆs.kê½EñJOÞcX¥J6¬_O§ÎyîùçY¼hQ™KK«Ý !DY`«¿BaoÙ}ñ¼}9ÆV‘mسë7ŽÅÅÚ¸i…M+Fˆ‚¢Ü?€—/^äÒ…ó4 E¯×›¶M×êI˰ü9—5õÞ.Že+™) òCOÏ*<òHO/^BÛèh†f§è VZíN!Ê[ý B{Ëî‹ÔÿÔh4Tóõ㟿ÿÂÇÇ_?{„Xâ*D¨ÓêHOO7~ö®VZuêrùÒEQ« ¾Kföo‡‘@+o$ò È{ nݺÍ?nbøðá Ð?ß|{+­v'„eŒ !*Šì¾xAýO­VËÕ„xêÕ'°F-’“îÙ#ÄW!’À‚îìS·^æ¹>DÓæ- ¼§Þ`Ý]s.kê½µåˆLyáíÛ·4h0ÑmÚðÁû qK«Ý !DY`«¿Baoz§ƒêtZbcSÍÏŸ&M›sïî{…Xâ*HXðÝkשËùÎ’‘‘³sþ‡y[s—ÆÎÝû—5õÞâxËX2Sä=†»ví¢iÓ¦,X0({ ”N»Bˆ²À–…ÂÞîß4wŸ,ñæM¼½}hÒ,Œ;wnÛ+¼RQî“@µZÍÝ»wј¸iHí:uqrv&£€S íu—F¹;h~yoÑÛ³Gzöè‘9¯€†Á`°ëbÊc»B!„9îš§ÿéííC@`uîܾUàzöîÚR¹O½½½¹~í¾¾¾&—IKM-pº½îÒ(wÍÏÚ‡u^»v ooïŒÈ¼òØî„B!„黃‚éþØ¿ÿiKå> `×®]Ô©S‹¦M›¡ÑX¾K PÕ#ÿéz%Mºÿùe&F…'z½Ž¸¸£œ;w¶íÛ•Bd+íN!„BÜï‹—·þ§-•û$°v:lß¾cÇŽ[µî¾}{J "ËؿϮÛ/KþóŸ¥/ëèèÈC]»R§v’ ¨å¹Ý !„B<è‚Ê_ÿÓ–Ê}™ò'Ÿkï0DUÕÛ§ÄÊmQ"e !„BQR*Æ•B!„B!,RnG·mÝlïD·zår{‡ „B!D™£*`šcBBB†“c¹Í…B!„â“¡Õð ¤d½’s¼OÒätP!„B!„x€H(„B!„ sÎçÕ+ ÄűwNÓæaR¯B!„BØIÓæaøùØ´ÌrŸæLþz?6ÜÎÑT,?~·ÒX·%ÑøDñeß ©k÷žvޤb’úB!„½mÛº™¸Ø#6í—ëÃd'€=  5Coçˆ*W'ñýæußßKBXölÛºY•$õ+„B{Û¶us¡ýpKo Sn“Àì°{ÿ¡¤¦KòWÒ\ï'„[ød°¬‘D¥dIý !„ÂÞ K+t˜vë;””t½Ãyà¸9g¶ÿmøVÁ2F•’%õ+„B{3—Zš–ÝLÏEÁ (öã“”¦ KŸ!lß¸Êæç( !„B!JN¹ ܶu3{ &YNµ;÷¬ÓDÙ´ZÁ2BF«J–Ô¯B!ìÍTäÁ 4È( ½ÝKÍ<·s¯Áü²i5€$‚B!„B”aå6 4( Ï‘îÙ8ÒÒÀÅpO\𗬞àâ‚‹‹'àBhƒêö ½Bº¬¥ã#ƒÙù“$‚B!„B”eå7 4ä¹0-°1Ëh^Å™«ééù–÷svfÛî4`ß¾+ׯZZá>n'gÐ¾Ç ~ß²°}"8qÑ.bnW³xùž×Y4±McB!„eŸ·e}Æ›7®Û¥Ü’ŠÏRå7 Tô†ûŸÓp1¾O?}’¤-?’²onQÑTêÑš…™I£ ˆŠògß¾+4¨'‰ -ÝJÖÒ¶û@vo] Ø6Œ¹åMã”_,_^éh³mW“ÞøFZ¥B­Ö qP¡Q;àà Fã ÁÁÁGMæOšç†w±wØB!„(çÒÒÓÉÈÈÀ`0 V«qrrÂÅٹĶwóÆu¼}ª¡˜¸‰¤J¥*r‚eªÌœe—f9EQ~“@CîkÓÒ2*@Ò–Mx^¼D­fáܽx‰Û[6ahÖP©@…ÊXé¥q]a§ˆ|ºb=õ…8¿{Û&|øïå4nÖ¢Äc)LÓ:UŒïãÎݱx^N·’´´é6½ÿ³q"hСÑh˜þÎË….:oæ{`(ßñõóG¯×w4–ÀÀ@›”Ù*¢­Ãš ×éÑëõ\I¸†WUO´:Z½ƒÎ€^o@g0`0øçâ›l·,kÑ’e_|NXX˜½CB!(ié餥¥áârÐ&##ÃøÏç’róÆuT*U¾d«8  -•d’W˜ò›æ{<„KÖtHÙ·›ÀD \Ç …ø3§P^ž €*À¤e•SG»Gñ÷Ÿ§p¯äAdÛŽ¼þöBªz[~:b®xÍlK ”Ç]dQT*±ÿÜ y]Ï\Ó ‹õVr‘]cÿ¶ï%‚Šƒ€F•ÈLêÉßU©²Þ(€  ªB’À½ûöññ¿>æÀÁƒÜ»wêÕéÑ£sçÌÁÁ¡Ü~5Ì:pð4wn&¡R«P«U¨58Ä_G­Q£Ñ¨Ñh4™/µ5ß@8SÛví9u*ó;âááA‡øðƒ÷ñññ)¥½1­IÓf|½ü«\ ߌéÓ¨Q³¦£B!L¨T*Ò³.ÙR©T8::¢V«IMK#==½^F£ÁÙÙ×ÉbqåMm‘Ú*y“‘À"Д\7†É 4(ÂjÓ§S ŽÆ4»ÏƒÂÁ3‰¹þë (J®P¥RqðLb¡åd¿n%eвó£ÄÅáê•„bsÅ Å1ëù•ó^êÅ¿f 䳞dÍÿMæÇ3ÐêA§WÈÐ+8::˜ ¼wïÓ¦MÇ`00tèPbbíšÕìݳ›ÿý¼'''Ξ=ˈÇGR§n=«óp÷ìØqÿšD_?¼}ª±té¿  0°:OKFFFÖ150kÖlBBãëçOPýôêÝ›ëׯ[T~^çΟgä¨ÑÔ­D`õôð('Ož´ºw>ÃÞÃgØ}ä :ƒžÝYï3_ßï=r¦Ð²Tj5Ô«WþúsòÄ ‚CBùè£èÒµ:vàäÉ“<Ò«5kÕ&¬EKV®üÆXNpH(ï¿ÿ½z÷&ªM4Ï>÷¼ñ¿…ñññ >‚:uëʇ.̵nÎm½üò+\»vá#'¬EKV­ZdžzäÈ‘BË›3g. 5¢n½ ÂÃ#8tèÕu,„BˆûEÁÁÁ'''œ/.óRŸôôtãK­V“–=ºcC7o\¯0 œ-”ÛáŽÌ‘³œS\8ò¿½U«QkÔ8?Ááâì„Ã5‰ÇpÐh8|ð/cãʽ~ÛP@o€Ô”dvïÜNÍÚõŒë?Ãÿ}»Æô -Sƣߠ‘üçëMœ:Ëó£ûQ£v}š·Œà—Ÿ7ñùêm¨T*^xz(Ÿ,ZÀs/¼€¢dnK«30yÜPڴﻋ¾äέDžÕ—šuðP÷¾üºí'>_½»wn1æ±.9Àëï.Á×/€Éc±zÅçŒ;‰¸˜ü¼ißþ´¯ª>\»J¥*tŸöŸN4yþôþÓ‰•‘Sâ½ Â:àÈÎÌQ¥¢Žªô:˜þþ&2Ò2ÿƒ”t/‰Ô”ÒÓÒY÷åôÌdÑQ`9»÷ìáîÝ»Ìyc6š碷lÙ€¤¤$úöëOBBíÚµÃÏ×—ï×­cØðálÙü-ZÜ¿~ó?Ÿ| ùjùr~øa=;vdÔÈ‘üò˯,Yº”ÐО?ŽÛ·ï°k÷n’’“quuµ¸|€äädúôéK||<ôÇ××—O?ýŒþeßÞ=xyyYT‡:ž¶-?ÿöÇI:´1¹üν1•›œœÌöí;¨tTñp̶lþ ´Z-ÃGŒ`äã#ùqãFbccé?àQ‚‚‚ˆŒl @ìÑ£lX¿•JŘ'ždÁ{ïóúk¯b06l8]ºtaÙ²/HLL¤_ÿÔ¯_Ÿ¾}ûäÛ–J¥bó–-ùNÍf®¼€Öýð{öìÁÇÛ›øøx»ž¯/„BTîî¥áêêŠZ­6¾Ñëõèt:ôz½qyGGG;Fû`(¿I`žkÓÒ ¬[ê»k ëò0Ý38ú4T((ìÛ÷'­Z7೵lj «iþº6ÞŸû Ï{{wïÐ(´Ͻ4;kD>>µÆ8s€Ô”dFŽŸ*ÁMÂèÞg?ÿ¸–¦-Zƒßœ€»GeÆ<óïÏ}…g¦¾–càøÑÃÄ_:ÏÓS^E­ÑPµšËö-ëéôpP`Ä“q÷¨Œ»GeÂ"¢¨× „šu2{Ñùá>œˆ‹Á (8¹¸––Ê™Ó'‹ˆÂÇ/ÀXoÅ­÷¢HLÊ Y‡þýí ˆ‰ !GÇÌ„möÄždG’ÝEW²Þë Y#ú‚O½qýnnn&¯_ûióf¨Y³&ë¾ÿµZJ¥bíwßñåW_åJÒÞ{oÝ~˜ mK—þ›cqÇHMÍ<ÁÃÃzõ‚hÔ¨!³gÏB¥R±zÍ‹ËÏŽ'>>žæÏ›ÀßÿͶmÛù~Ý:žzòI‹ª0=CËöÝÇŒu¥Ûw3³¼Þä<€iÓ¦3kÖlîܹC³f͘=k¶qÞøqc¿Ä:Drr2S¦LF­VÓ¢E  ÈwßoLŸzò cB>nìSL™2•×_{•˜˜Î_¸À«¯ÎD£ÑàïïÏØ§žbÃÆ Æ$0ç¶ c®¼)S¦š’ÂÉ'ˆŠŠ²Ù y„Bˆ™“£#ÎÎÎܹs‡¤¤d´Z-ŽŽŽTªäN¥J•HIIA«Õb0dŽ4v­œ(¾rœæ¾.-ûUæ®i7Nóç#høÄ \|jPUÙ£€æ—ŒŸü*º÷ÅÍÍW7àþ6+{V5¾¿qãÕüPP§ùÔàôñXãg¿@ã{oßnÞ¸–+ƒAáJÂe22ÒÖ;Ú8]«ÕR¿Qc㲞ÞÕŒï\ðòö5~vpr&##½A¡^ÃÆŒŸ4“E fqéüY¢ÚweêkóðªZøM;Ú…úøå˾Fp׉…–Q›÷2hÒ¾?q¿14hqpÈL´•¢UV:“ã¦0¨È ,8 ô©–Y©©©Ü¸yoï|Ë$$džº„Zu3šFrÍËœ9’V©R%Ò32OcìÚµ+Ý~˜Ÿÿ÷?öïÿ€Úµk±êÛo­*2O_„ÌS*f-—íü¹óîgAÒÒ3èÒ¶‰ñó¶ÝÇr}ÎkÛnó§B¾öêLúöí‹»»;nnn¹æyç¨×ë×®hÜW€5kkü\­šoŽ÷Õ¸–uÚl||ééD·½ÿÌG­6ƒÆïÇí]À14Å\yM7fæ«3™5û Ξ=K×®]˜?o^™¸ÙBQžÝ¹s‡[·nãQÉçÌ~û­[™7 ̾k¨^¯'==*Uª˜,GØFùMs\O÷o £QA¯åÏ/FÐzð3üñÅZ¼r0sØC•ySH³èÑn•<ðôò1n/›(9¶ïåUkWãÑéôÆNî•øKxzW3^_x-!žz 2q5!žªYóŒû£(xyûâééÍò {ò‚–]NÎíf_¯gêsï#é=p$wo'òîk“øòß0iÆ;f÷¹C“jù®Ì.;û§J¥â·cE;§úæÝtBÛö#n÷zÀºDP¥Ï¼•ð7ÿý:kl7óN¯¨2O©5>DƒLŒ¶ŽÆÃÃ{÷î1wî\~ø¡q*66–ÐÐP2ã:{öoãólþüóOã¼lÙ‰i^ÎÎά\¹‚[·nqúôŸ,^²„Í›7óÍ7ßlqù9§5lØyïæ>†~~~…Ö]¶ôŒ ÖoÛŸUO î®î™ŸÍ,oŽGåÊT«Vøs«ùV#>!Þ¸¯—/]Εø]¼xÆ3¿#.^Ä7«\___ªz{³ooþï…)æ–+¬¼Ñ£F1zÔ(™8q|ø!ï¾cþ{#„Bó’’’Q«Ô$''§©UjîÞ½‡«««q$°J•*6½)LY&ˆ(‚¼‹Ï~D„Z¥"æƒ6´nWâ7Ѻ]MþXAø´Ì 5*ÒÒ(ôº6EÉ|¡©åôÊýyš†ãìâÆŠÏ1쉉œ9ÇÏ›Ö2oÉ7Æe¾Y¶„а֨P±üÿ>¢S÷þÆy ™Û iGO>[<Ÿác§àììÂ¥ó“œtFÃòmWáþu‹d•¡d}>ÿ÷iRSShÚg×J8»¸eÝ¡Ôâ*F¥RñËÑëÆ÷9“Ck¯ ÌéÆÝ ‚£û·g`y"Xݯ*›Ž]îŸú™ý>;ÿ#ÇÀ` ß‚ŠÁÃÃyï¾Ã„‰“X±b%;wþFÆ ˆOàÔ©S\8ŽGzöÄÏÏ .Ò·o?üüýX¿~†Q#GZﯿþÊÂ…Ñ:²5•*Uââ… xzyZ]þ#={âïïÏŸþÉ×_¯ q“Æ\½z•_~ù•ÞÏ¢x2Òtôëiü¼yç‘\Ÿóú߯‡-.Ûœˆðp\]ÝøxÑ"&MœH\\kÖ®åÛoîßfñâ%´iÓ•JÅÂ… éß¿?­ZEàååɼùó™:e ...üý÷ßÜ»wÏä3ÿ¼¼<9þBóÍ•çêêJJJ Í›7§R¥J¸¹¹•ʳD…BˆŠN«Õ’š’šoº«›+ŽxW­j‡¨ìÇÞ7©)¿I |×Bf’€GƒK_Ìœ®€³ŸîÈœOvÒ¾MÁoϤd%Yw Êýyjoü5 ßz‰åÿý*^<û⇵6.Ý©ÏïÎÍëWhÓ©?ýâý²³®oTT*Þ]ú-‹çÍä±ÎQ5jñ䄯esn7놧÷?cSHJNâƒ9S¹•JMóˆhžÏ¹M3²ÿ+±=öšqùí±×rý·¢¸×Þ¸›Aè¾Äí³<üfF‡\Ÿ‡½û—/Çg Õó-cÊСC©Y³&/ZÄÁƒ‡øí·ß©^=§Ÿ³³3lXÿ³fÍf÷ž=:|˜°°0¦M{Åxó˜Âøûû“¡ÕòÙgŸ“””„——'#G>θ±cquuµªüJ•*ñãÆ Ì~cÛwì`ý† øúúIݺu-Šàö{<>qA®i+ÖþlñúEåèèÈÊ+xñ¥—øàƒñòòâ͹s‰ŠºŸ€öéÓ‡nwçêÕ«ôìу—_~ µZÍêU«˜>c&!¡1 ñêÌ™&·7iÒ$¦MŸÎ”©S™3ç\‰µ¹ò<=«0eêT.\¸ˆZ­&::šw³âB!DÑ J×ïË?[í£ 1HÇ„„„ 'Dz›nÛº™ú‘}¸yïþ©jŸòÓçM¡ygþù¢ׯ޿®ªš_uŸØÄ¶ÝÇéÚ¶±qúœOviúΈ¢äy{8ñ×þ4mfQ"˜™ø]ÌÌ~UÆó@ɼùÏý]½FM‹ŠfÛÖÍtíÞÓÞaX%8$”ußGHHÙÿ>–ÇúB!ìíî½{Ä_NÀ½’»qZrR2Õ¨ìáaÇÈÊ'Sý‘ ­Ž€€€Ç€T %땜ã}*Vv3½Bä½&`Þô²ÞåéüŸþȼ£âg_ÿhœ\ƒ!¸£…¹~'z­zw ó¸–>¨‰B!DyVÙêÃõë7Ñfdàèä$  •Û$PŸõl½l£ÆŽ)R92m×ïfP;¢7q-K…B!DùSÙÃC’¾2¢Ü&rþpÅ’x/ƒš-{w8ó!ð’>XN|¸”£,ÜŒéÓ¨Q³¦]c°e;iÒ´Y…Oj…B!DÅTî¯ xíõ×¹sç'OçìÙ³ôë?€àà`ÚDE«\N‡ƒƒC¡Ó¬-ÃLŸ1ÖýPàü~XÏÜ7ßbé’Å4oÞœ‹—.áY¥J‘·g-K÷oÈ!¥y%ÕNl­¸mF!„BsÊýH V«å»ï¾gÚ+¯àááAóæÍ4p ß~û­Éuâãã>|uêÖ#8$”?\hœÊG}D—®Ýèб“Éi'Ožä‘^½¨Y«6a-Z²rå7f˘3g. 5¢n½ ÂÃ#8tèEû×§OoztïNe‰Ýü ˜3ç :v숧§'M›4¡¦‰·•+¿aøðÆÏ­ZóÄ“O?7mÖœ¸cÇxó­·iÒ´5jÖ¢Mt[vìø¥Ð:ú×ÇÓó‘G`ì¸qhµZã:9O-lÙ#GŽÐ®}êÕgذáLž2…¹sß4Î/J]¥˜:Æ/¿ü ×®]cøˆÇ kÑ’U«V×ùãÀÚD·¥zšùöËÚvWÔ6#„B!„9å> ¼xñ")))4iÒÄ8­IÓ&œ:uºÀå Æ '88˜?OŸâ×_v°jõj6lØh\æp̶lþ‰Ý»~/pšV«eøˆtíÒ•óçþá‹Ï?cÆÌ™ìßÿGË8p€u?üÀž={øçìßlܸÀÀÀbï{bb"þù'çϧq“¦ÕoÀ”©SIOO/pùè¶ÑìÝ·ƒÁÀ•+WÐjµ8p€sçÏ“œœLãÐPš7ç÷ßvrñÂy¦LžÄScÇ’ša§x: IDATšj¶ŽŽÅãÇùãýœ?5kÖšŒÝÔ²Z­–‘£F3fô(ÎþýS§Nåûï××+j]ZÛNÌã÷Þ[€¯¯/+W|Í‘˜Ã¹F97nü‘M?n$öH qqÇŒûem»+©6#„B!D¹O“’“Q©T¸¸¸§¹»»“””Tàò111œ¿pW_‰““þþþŒ}ê)6lÜ`\fü¸±8::¢R© œvðÐ!’““™2e2jµš-Z0hà@¾ûþû—wus#5%…“'N Õj $  Øû~ûöm~ýõW~ÿm'{÷ì&æp óæÍ/pù:µkS©R%Ž;Æž½{y¨sgüýý9sæ {vï¡MTjuf“èÓ§7^^^¨T*† ‚wÕªœ8qÂl;FƒF£¡cÇÄ‹3»©e<ˆÁ``ìØ±´nÝŠ®]»×+j]ZÛN,9Æ™2yU«VÅÇLJ޽z÷ËÚvWRmF!„BˆrŸVrwGQÒÒҌӒ““©T©RËÇÇ'‘žNtÛvDFµ!2ª ÿþÏ¿IOÏ0.ãíío½œÓ®_»N`@ 1a¨Q³ׯ_+pù&3óՙ̚ýõ4䩱c¹qãFÑv8wwwž{îYªV­Š¯¯/ãÆcÛöm&×iÍ®]»Ù»g/Ñm£i×¶-»÷ìa÷ž=D·6.·ìË/騱Mš6#¬EK.]¾Lrrrû—­reã{WW2rÔ©¥ËÞ¸~ÿ\Ëæ+j]ZÛN,9ÆÉY/nnnÆý²¶Ý•T›B!„¢Ü'5kÖÄÕÕ5×­ù?App£—÷õõ¥ª·7ûöîaÿ¾½ìß·—DZü«/-Þf5ßjÄ'Äc0ŒÓ._ºLµj¾&×=j¿ìØNÌáC¤¥¦ñÁ‡Z¼=Süüüðö®šk4@QL¯Ý6šÝ»w³wß>ÚFGÝ6š=»÷°gÏnÚFg&§NâÍ7ßâÓOÿcqG9s˜š5k¢˜+ØF|ªùpåÊ•\Óâããs}.J]ZÛN ;Æyë¼0Eiw%Ñf„B!„(÷I ££#=ö(ï½÷>)))œ8q’µk×2tèЗoÕ*//OæÍŸoúûï¿­ºÝDx8®®n|¼hƒØØXÖ¬]Ë£¸üéÓ§‰‰‰Á`0P©R%ÜÜÜ02ª_|‰gžyÖä¶t:éééôzô=éééèt:ãüáÆ³ôßÿáîݻܼ™ÈgŸ}ÆÃݺ™,¯mt4¿ïÚEZj*´‰ŠbûŽ$&Þ¢iÓ¦@æ£\\\¨U«yºéÙ³g-®ŸâhJ¥â³Ï>2¯ܾ}‡q~QëÒÚvRØ1öòòäüù –ï—•íÎÜ~ !„BQå> xû­·pus¥Qp âõ×_3yÛµZÍêU«8uê4!¡©]§.ãÆ?ÍÍ›‰oÏÑÑ‘•+V°eËVjשËÈQ£ysî\¢¢" \>))‰I“'S·^‚CHIMåå—3ŸùwùòeZµner[ó, °z ¾X¶ŒåË¿&°z Þyç]ãü3gP¯^]š‡µ UëÖ´lÙ’iÓ§™,/((www¢ÚdÖ‡‡µk×&2²5€ððpzõêEÛ¶íè×[¶n%88Øâú)GGG¾úrŸ}þõ‚êóᇠéׯ/jMfS-N]ZÓN ;Æ“&MbÚôéÔ­ÄWË—º_Ö¶;sû)„B!DqtN›cBBB†“cÙ}NÙ¶­›ñhô0‘u4vަèôz=mÛµgçÎ_qvr²w8eÖè1OЮm[Ækr©K!„BQÑí?§àÞéŸéÚ½g¾ùZ©@JÖ+9ÇûT ­BŒ–W†}{÷HÒ’ÇÁƒILÌ!ûý÷ßÙ±cG®;„DêR!„BË”Ýá>ñÀ:~â#‰V«¥ª—}´ºuëÚ;,!„B!*IE™3zÔ(Feï0„B!„¨Ê}¸mëf{‡ „B!„%.û¾(ÅUî“ÀÁÃGÚ;!„B!„0)ñæ\ŸÏŸ;ÇÁC¹qýºÙõÔj5U½½‰ v:ÆÃW¹O22Òí‚B!„Bêü¹صk]»=LÝzAh4ƒEQPPÐiu™ïI÷îqåêvíÚ…¢¨i“*Dˆ"ÑB!„B”};¶o£UëH6 F¯×£×é0  Å@zzºñ³J¥ÂÏ׺ujó˶ÿÚåI›ÄP!’@E’@!„B!D9¡ÕÑ:*:k´Ï²<¦q“&Ä;f³*Fhï„B!ÄãÐýDE·G«Í°w(VE¯c'''ôz˯ïspp´éö+F(#B!„¢”I´ä=Hul0øæ›o0 ‰oK’ÀÊŠ_Ó²eK»¬/„B!JFYîƒVe¹ŽmÙO7 L˜8‘åË—óÛï¿óÁûïÙ BÓÔ%ZziQ”|¯ˆˆV¸»W¢R%üýèÔ©K—.E¯Ó¸|I½^íUjÕ¬iѲ 4äð¡CE^_^ò’—¼ä%/yÉK^¥ð2ÓE¹ßuw¯„ŸŸ?ƒ "!>Þþq—§—uüí7ß”Z<Åî§›a0x~ÂöìÙäIÙ»w//¾øƒ¡„’§ >øßO>aðàAÜ»w½ûö1}ú öìÙËò¯¾,ñ˜t: 6ÌlŒye¶“ûËZ»¾B!„(æúgÙýÐK—/óĘ'˜1s&_|þy)F—_vÿ´<1WÇyûÍ%KÉôÓ'L˜ÀÑ£GùeÇ<=«0áù 8W^™Æ{ æ«lS*ÄH`öur¾TjOOOzöèÁÚ5«Y¿~=BQ.]ºÌÀAƒ ¬N½ ú,Xðžqý×^ŸEí:u ¬^ƒ&M›qàÀEáü… 4ÿ€@ª×¨ÉøñOשTŸ÷ßÿ€:Õ&óŽ?¡¡9tø°qþ¼yóéöpwZ†G0nÜxRSSQ…)S§rõêUBhhcV¬\™oýãÇÓµÛÃøúùÚ˜åË—çÚö‡.¤K×n4iÚŒÑcÆ‘‘Q`ÝÈK^ò’—¼ä%/yÉ«è/s}ÐìùÙýÐÚµjѧOþ:óŠR´þ§¹>`O/®\¹büüÊ+Ó˜3w®ñsAýSsýYsñ•µ:V(xž¹ú2·ï³ßxƒ†‚ñõõ#<¢ÿÛ¶ E±M?ÝœîÝ»óãÆxyyàååÉš5«yè¡Î6Í™r*_ÿ 0!gCÉ1ò4¢úõëžÝ{kÞœAƒѵkW¾^þ7o&Ò»Oê7¨O`@ß}÷þØ—ããQ¡B§ÓñØcéÒå!¾\¶  111¹¶qèð!þ÷¿ŸqppÈ<ð™—9{„Ÿ6ýˆJ¥bä¨QÌ›7ŸÙ³gñáðÓO?ñÍÊ•´hѸ_Ùëgdd0hðFÅ–Í?qäÈz÷éKPPQQQ=z”-› k·‡ùöÛU<þøˆ¨q!„BQpröC/ÇdzñÇiÕªz½Þêþ§%}À¼‰yF¬röOÍõg ƒÉøú÷ëWÒÕYpMZPÇ9iµZ“õÕªU+³}ù°°0&Mœˆ§§'ß~»ŠÑ£ÇpæÏÓ6é§›Ó¯_?ãs³yzzòÈ# ”Ð)¡b$Ð>>>ܾ}›Ã‡sîüyfÍz'''ü?n,ëX«›©©©?q­VKõÀ@8xð W¯^å͹squuÁÑё֭[ç*ÿé§ŸÆÑÑ•JUàöÇ‹F£A­V3~üx¾ûþ{‹â>pà ÉÉɼøÂ ¨ÕjZ¶lÉÁƒY»ö;ã2ãÇC£Ñ ÑhèÜ©GãâŠ^QB!„¢ÈÆšÊU< ÅÙÙ‰·Þz³HýOKú€…ÉÙ?5ן5_ya®¾ ëË÷ëÛ///T*Æ ÅÛÛ›ãÇk›eU… ÌÈÈÿüEQÐéôùæ]¿~Êœ¿pôôtZµŽ4ÎÓfdиIc5lÈÌÓyõÕ×8{ö,]»taÞ¼w¹tù2Õ«WÇ`0˜Üf•ÊUòÌSÐjµÆS3=½¼Œó½<½¸víšñ³¢`\6ïúñ ñ ÓéŒs‰5–íêêf\×ÑɑԩÆ)„B!ŠÏT?KQþ½t)>FLL C‡ cÇ/¿ššjuÿ³°> äî?ôôz}Žþeîþ©¹þ¬¹þ±½ú”æê¸ ¾¾¹ú*¬/ÿå—_òùËHLLÄÁAÕ+W¹}ûNV_»xýô²¦B$V¬rÿ<álgÏžåä©SDEF’‘‘··7{vïÊ7j§( #GŽdäÈ‘$޺ŤI“øàÃ… ПøË—Ñéth4š‚cɳÍìáøìiÎ_ 4$$óý…óT«Víþ¹ã*U¾ó ³×¯æãC||{(¬ŽóÎ7×g6·ï§NŸæÍ·Þæ§M?Ò A"£Ú`P (ŠRì~zYSa“@0èõhµZ’’’9pà³fϦwï^4oÞƒÁ€§§'óç/`òäI¸¸¸ð÷ßsï^®n®¤¤¤Ð¼Y3ÜÝÝqsuÃ`ÐÓ²E ªU«Æ›o½ÅôiÓP«ÕÄÆÆ‘3˜<_ºÜwZ²t QQ‘¨T*~ô/úõëkœçééÉùóhÞ¼y¾õ[¶l‰›«+‹-f„牋;ÆÚï¾c劯s$~æÏB!„¶cªŸ•÷ž#F çý÷ß'ñÖ-ëûŸ…ô7nÌÎ;1|8—._fëÖ­Œ=:O²r?sýÙððp“ñ……5Ï¿£¥À\k3´¤¥¥§eŸŠiª¾Ìí{Ò½{¸¸¸P³fMEaçΜ={ÖXwÅî§ç1ÿÝ·mYMV«°I À„‰“˜0q•*U¢~ýú<1f4O<ñ„1›ÿfåJ^}íUš4m†Á` ¨^=¦OŸŽ§¾ /¼ø/^D­VÓ¦MÞ~áT*+V|Íôé3 ÅÁACî=ÏKÞxrþ—¢w¯^ôèÙ“«W¯Ñ½ûüøÂ Æy'<ÏŒ™3yáÅ™=k–ñ¦. ,_þ/¿2.ÄÓÓ“9o̦uëÖ÷?%÷H`AÿB!„¶a®Ÿ•sÀÕÕ•1OŒañâÅV÷? ë¾õæ\&MšÌ²/–X=Î;çëæì#šëÏšë—¹‘@`ò”)Lž2ÅøyÈàÁ|üñ¿LÖ`rß[´hÁ#={Ò¾CGªW¯NHp052Ö]qûé9Uð§i³æ8:9™<»° öï³xÙÂt÷Ç„„„ 'Dz›nÛºFÐ3Ü«Wì‘eš6kΚի¶w(B!„¢ˆþ:sš¨èöܸ~ÍÞ¡TX­Žï\¿®ÈI`µæ}¸wúgºvï™o™ ­Ž€€€Ç€T %땜ã}*Vv3=+”§Ñ®‚F …B!Dù#}º’'u\2¸GD!„B!ăLFKQì‘ üÄ+„B!ò«Ô€kW¯Ø;Œ Mê¸dI(„B!„I…B!„âRî“ÀÕ+—Û;!„B!„0© ;yÚS¹O»õìmï„B!ÄfΜ9Ìž=ÛÞaTh©ŽƒÞÞ!äRî“@///{‡ „B!0}ô‘½C¨ð*R'Þ¼aïr‘GD!„Ba%•Jeï*<©ã’SîG…B!„(mrcÂ’WQëxûyw¶Ÿÿ«kº3´¹mb$P!„B+©Tª ›¤”¹ŽíÓÅ  Wƒ½ŠA!]«GQô†ÜÓ`ß¾=6Û¾$¥ìÊ¡u¤Y€sØóø‡°sDB!„ÂZ59)K*zßKÓ¡7( †¬Ÿ i: %ßôªÎ6ݶ\XÊÒ/¦ö£³¨ýè,Òb[µnݺu‰ˆˆà“O>)òöçÎË;ï¼cѲ‘‘‘ÄÆÆy[åÝðáà åÙgŸ-•í§¾­9®¶\×ÖJ»Í………qêÔ©ߎ-ëØV1W„ï÷¹sçèÒ¥ ÁÁÁ|ñÅö§H k¶>N¥ÕæKZqꥬ¶ý²—-T”v—Wa׫•ÕcZ–þîÆš:.«õ]VIXŠ®Z‡AÒS!=ƒ!sš56nÜÈÓO?oúÀ !##êòzè!¾ûî»ç½üòËÔ¨QârÂÃÃÍ~ñ-ZÄã?žkZÛ¶m œ¶~ýz’’’xöÙg©_¿>ááá,_žû™ææët:ªW¯žï•ó6ß~ú)?ü0µk×fÚ´iùb^¹r%S§N5»ßæê¯¢èСýõS¦L©ðûZXz¼¬ù~ÛBa¿#ŠâÓO?¥C‡œ:uŠ'žx¦e—Å9N%Qç¥Y¾-ci·}K匫(u›÷ïQy8>å]a£T¶ìG=¨¬ ,‰ï¶V«eÚ´i´jÕŠÚµkÓ±cG6nÜhÓmØ‹œZŠ’þ‹ Ásyí©Gxë³ïùkÕl(æ)¡/^äðáÃòóÏ?Ó»·mž8pà@›”Å’%KÐëõh4®]»†N§ãرc¹¦;wލ¨( óÙ0wïÞ%&&†þù‡ÁƒÓ°aC"## ïààÀÙ³gÛOMM¥U«V<òÈ#Æi¼üòËlذÁfû)„-ét:Jæ×´-¿ß%Á’}¿rå =ôP‰”]V”õãdNY­ç²Z§e5®²ÌÞm¬°ëÕlyLí½¯öbÍ5%ñJOOÇÝݯ¾ú ???¶lÙ„ hÔ¨ 6´ùöJ“Œ–’ +“œœ ¿áè ÆÙI ¿‘’’Â…•ƒ‹UöÚµkiß¾=ƒ bõêÕ¹æÅÅÅÑ¥KBBB5jwïÞµ¸ÜœÃêaaa,Y²„~ýúͳÏ>‹N§`ÆŒ\¿~1cÆÉÚµkØ´i?üðƒq}­VËñãÇØ¿?ÑÑÑåšV»vmüüüÐétüðüøâ‹xxxЬY3 Àš5k àììl|mÛ¶jÕªH€^½zÑ­[7*W®lU}›c®ž.]ºÄèÑ£iÔ¨!!!Lž<¹Àrjժŵk׌ŸgÏžÍüùóŸ ;® Œ=šàà`ÂÂÂøøã-^×R…ÅøöÛoÓ´iS‚ƒƒ‰ŽŽ&&&¦ÐØ,ÝSe›šnÎÁƒéÔ©AAAùŽ—¹æÍ›Gxx8õë×§S§Nüúë¯ÆyÅ9>aaa,Z´ˆGy„nݺY³¥r~¿-­·ÂÚ÷©S§èß¿? 4 22’U«V¦GT~Þ}7UW“'Oæ—_~áwÞ!22’³gÏZ]¯…-_Ôï²-¿–þÎË\µÍ[R~Aõlî»RØ>YÒ6M•o*ÆœujªÍZ[ßPøïÄÂÊËŽËÒï‹9––a®ç¸d×®]´oßžàà`&OžLzzºqž¥í.{ÛÖ~—¿üòKÚ·oOƒ ˜3gñññ<öØc1dÈ’’’ŒË›jK–,aüøñ¹b),9)n?ª }5×fM)îß$[Ô_A,éY3hÍïKKÛ\¥J•˜5k!!!T­Z•áÇS¯^=Ž=jq\e•$¥äFü9šõm(¸:ipsvÅ@³¾íHŒ?W¬²×¬YCŸ>}èÓ§;wîäúõë@f¢ôÔSO1tèPNœ8Á³Ï>˺uÖ~šÓñãÇùþûïùý÷ß¹pá‚ñ´“wß}—jÕª±lÙ2öïßoüOÌo¿ýÆöíÛptt¤E‹ìß¿€}ûöIëÖ­sM˼xñ")))„††·ß¸qcNŸ>mÑü¼V¯^Í AƒŠ¼ïÖ0UOz½ž‘#GR·n]bcc‰‹‹cÔ¨QV—_Øq5 Œ5ŠFÇÖ­[Y»v-›6m*R›˜6m~~~ :”ˆˆ‹b}šO>ù„Y³fqàÀ“¿# ’sßÍÕÕ¿þõ/:vìÈÌ™3Ù¿?uêÔ±ª^-9Eù.Ûúûgiýçe®Î‹Úæ--?oû5õ])lŸ,m›¦Ê/¬Ý™k³ÖÖ·¥,)Ïšï‹)–”QØß¤¢7S¶lÙ¦M›8pà.\`áÂ…€uí.›µßå­[·²iÓ&¶mÛÆêÕ«yæ™gX°`G%##ƒ¯¾ú 0ß&úõëÇöíÛ ^¯·úvÖö£òî«%m6/[üM²EýåeiŸ¨8Ï 4UßEisÙ®]»Æ… hܸq‘ã*+$ ,™#}zÐT{§xeâC¼ø\'H: š*èC‘GÿøãèÞ½;õêÕ£AƒÆÑ·C‡‘žžÎرcQ©T´iÓ†Ž;y?žxâ 4 †:GðL™?>‹-2~nÓ¦ ûöí2Gý²“ÀœÓÚ´i@rr2*• ãúîîî$''[4?§Ë—/³oß¾RKMÕSLL ×®]ãµ×^ÃÅÅÂÃí.¿°ãËÅ‹™6mŽŽŽøùù1fÌ~üñÇ"µ‰^½záááATTµk×¶(FWWWRSS9uê:Ž€€üýýÍÆ–“¹åL•mjza&L˜€——>>>ôìÙÓx¼ ‹µW¯^xzz¢R©8p U«VåÔ©SÅ:>Ùž|òILþñ3sQŽ—µõfª}:tˆääd&L˜€Z­&,,ŒY*ç¾[Ú^Àúzµdù¢|—mýý³´þ­QÔ6o©¼í×Ôw¥°}²´mV¾)–´Y[ÔwN¶.¯8 û›TÔãfʳÏ>KåÊ•ñðð`Ò¤IÆK1ŠÒî¬ý.go»víÚDFFÒ¶m[‚‚‚pwwç‘Gáĉ€ù6Q£F š6mÊ–-[ؽ{·Õw®,ÊñϹ¯Eù=k‹¿I¶¨¿¼,íç껨¿ë´Z-Ï=÷C‡%$$¤Èq•ÞÉÅvpåÂ_´ñ8\û|Ú3oö<\y~úL¸uŒˆ¡spÅWÔ*BÙkÖ¬¡cÇŽxxxзo_V¯^͸qã¸qã5jÔÈÕ‘¬U«([É”½ ­Z?**ŠeË–qûömnÞ¼IݺuñññaÊ”)ܾ}›Ó§OO×twwGQÒÒÒŒ‰^rr2îîîÍÏiÍš5DFF–ÚLÕÓÕ«W©^½z±Ïé/ì¸ÆÇÇ“žžNçÎÓ´Z-¡¡¡6o¦„††òÊ+¯ðæ›oòÏ?ÿйsgÞzë-³±ådn9Se›šîããc6ÖªU«ß»¹¹qûöíBcøúë¯ùòË/ILLÄÁÁ+W®œœÌ;wŠ|| ŠÉš˜‹ÂÚz3Õ¾oܸA@@jõýÿ-Ö¨QÃêSfríÅÒe­-»(ßå’þþ÷÷0½Í¥|0ý]ÉfjŸ,m›…•oŠ%mÖõ“­Ë+ŽÂþ&õ¸™’s7 ÀxÖRQÚµßåjÕªß;;;ãëë›+öì›êÖ&²š²nÝ::vìhU’R”ãŸs_‹ò{¶8}†l¶ª¿œ,íç9¦ê»(mN§Ó1~üx¼½½™;wn‘â)k$ ,P»‚ƒ3¨ÈÈ0p-¨@ã* ¬.5--7¢×ë 2/`½{÷.'NœÀÇLJ7näZçÆÚd¯r²d¸><<œ»wï²bÅ Zµjd~AýüüX±b~~~Æ_L5kÖÄÕÕ•S§N÷íäÉ“4jÔÈ¢ù9­^½ºÐ»|–âãã7Â1ÇÑÑ1×^ïÞ½‹››@¡ÇÕ××—ªU«²sçÎ|Çeÿþý6kæbxüñÇyüñǹuëS§Nåã?¦OŸ>&cËÉÜ>˜*{îܹ&§…¹NŸ>Í;ï¼Ã† ¨_¿>íÚµãÿÙ;ï𪊴ÿîÍMOHH%´,5Z Š UˆtQDDTtÑeùTDw‘]EX) «ôª)Êz¤%tRH)rÓnùþ9Þ›Üv’›†ó{žó$wfÎ;ï¼ÓÏÌ™£×ë«”?µ…=ìæççGjj*:N¤¤¤Hƒ‡Ê¤UŽ­äÚµ*ù`©.×Tý³¹é’k[ÂXª+¶`­lZ“oIGkeV.ÖÚD9Ø£m°&ÃR9®j¾™"--Md§¦¦Jv®j›hÏ6ÕZ™xüñÇ™?>©©©üðÃvý†-ºW¦ÌÖdŸ$G?[ÇDÕñ@¹iÖh4L›6 ½^ÏÒ¥K­Žáê b;h  ÕêI>yüCÁEÁ¼OòÖ?€‹:|*­N~!ß³gJ¥’ƒCLL ‡"22’7ŽN§“ÞËHJJbß¾}äh4ŠŠŠ¤«2‡Lx{{“””däfx0ÝP\¿ IDAT ”>…éÒ¥ Ë—/7: ¥G,_¾\z@¥R1zôh/^ŒZ­&>>ž-[¶H[:­ù—Q6芎Ž6›n­V‹N§«tÚm¥k×®øûûóá‡Jq:uÊdØÐÐPŽ9”6 ?þø£äg-_ÃÃÃñööæŸÿü'………\¿~¸¸8›Ë„-XÒñòåËœ={N‡‡‡nnnèt:‹ºb)œ9ÙæÜ+‹%òóóqqq¡Y³f@éû¯7nÜî«lþ˜býúõüôÓO•N‡5ìe·ððp\]]ùâ‹/Ðétüúë¯lݺ•Q£F¦Û[dÚj+¹v•ÞKu¹¦êŸ-ȵ¹\›Ø"ßR]±†-eÓš|K:Z+³r±Ô&ÊÅ”ÞrÛkùc©W%ß̱lÙ2rssÉÍÍåóÏ?gĈ@Õê¢=î//ËR™ðõõ¥W¯^Ìœ9“æÍ›ÛõAž-õ©2eÖÞ}RUô3,Ã¶Ž‰ªãa©œ4kµZ^{í5îݻǒ%KÐjµÒØÑÞlÙø-Û6Çž›‰Ù½…ý?Tþ[“À ê8Ïíçè¿?áèÊÅ®Äsû‰š#¿²mܸ‘§žzŠ&Mš ]Ï?ÿ¼ôÒïŠ+X¸p!£Fbîܹ 8°‚œ×_–-[J×o¼![—éÓ§3wî\ÚµkǺuëãƒa$[DE‘‘‘A=$·ÈÈH222Œ&ï¿ÿ>®®®téÒ…§Ÿ~š9sæM­ù—Ù(::ÚäÓØ?þ˜–-[²víZÖ¯_OË–-Y´h‘ì´ÛŠR©dÍš5$$$ЩS':uêTáÛ‡e|ðÁ|ùå— 6ŒyóæÑ¿ÉO¥RYÌW¥Rɺuë¸|ù2aaa„„„0}útiK-eÂ,队ŸÏ¬Y³hß¾=:u¢  €™3gZÔ­¼­Ì…3'Ûœ{e±¤C×®]6l>ú(ãÇçÇ”V¡«’?¦Ø½{7ǯt:¬a/»©T*V¯^MLL !!!¼øâ‹Ì›7Oªë¦Úkȱ•\»Ê _þ^su¹¦êŸ-ȵ¹\›Ø"ßR]±†-eÓš|K:Z+³r±Ô&ÊÅ”ÞrÛkùc©W%ßÌ1tèP¢££‰ˆˆ qãÆR^V¥.Úã~Cl)£GæÈ‘#Œ3Æ®«T¶Ô§Ê”Y{÷I–°¦Ÿa¶uLT+rÒ|ûömvìØÁÑ£Gi×®4Vþ÷¿ÿmw½ÆŽŸÀèqOñ؈q ‰ËÀaUû„œ5LM¯SSS‹ëîNÑ}{À3dÃÂkY›š£ì Ë”)S˜:ujm«óÐ3eÊ.]ºD¿~ýªur( þQ•÷Õ¶ñ0Ù8+ó·m¹3?‹a숡ä¨KÐêôètºõkÐéôÜ}<9vì(F–Nâsb4tX…xŠK4 õƒ+ßàÿ °îÎô0·uPP=¬Zµª¶U@PGyX&'u™ß“·lü¶‚Û£C+·=ÝÄ$P <´¤¦¦2zôh“~Û¶m³é;‚@ ˜¢®¬R=Ì}]]±qM0vü“+Õ…˜ ‚‡–   bcck[ @ <„Ô•ÉÉÃÜ×Õ?ŒˆI @ @ “ßÓ*Umñ{²±Ø*@ Ôq~/““Úä÷dc±T&_ÅÈûî”@ @PUþ4´9_îM¬m5j&w­mŒ¨÷“ÀßÑ@ AaÙžD1­f„«z? Ô‰’!@ ¨a¦ fé·j[‡aãê£ÞOëÛ^áéÂ~‹‚-@Pÿøüû›õnZß6®>‚I`mk`;¯&íÔVŠÎ.À9l:Ó‡áóïÅDP  >ñZôX²ûfm«ñP#l\}ÔûI`}ÛZxúsþðÄ{ÜÜ<ÂÇØœ†éÂ)(ÖröF§¯çT*þ>í}ÐëõüŸm5ìóš²ûÔ]ÒïU*®úÎèz;sën{ÎÜ­¶xÊ牭v·NN>˽wê fl½Cfn±lÙµAm—ckö²U¿ºlwÃ4Ø+½@P×ùt× ‹c¸ºÚÞUeŒPÓȱq]µw]¥ÞOëËñŒÇ[vj+:=PT€Ni§¶òçè1|ºë†Mr¾û9•¼BM÷'¢‚ðkàÄ×?&¢ÕY²‰=¿ÙmR¿&œ¼zŸø”¼ !ÿ—MŽºÄ&¿8¨9»NÜ᎙Š×½µ7M|]Ø›&¹=÷hSî«5Üþ—ÍåÛù8©” ììGË@7 Kt¿’͹[¹RXkþ¾žN ììK€—3y…Z~‰ÏâÊí|ÉÿÑN¾´ tÇÝÙ‚b-ñ)yür)[jl¶Æ¦ÑµE5t1kƒòö³fÓ牭v·ÎX¦<¬ß«×ëëMÝ –õµd/9õ¬®Ú½|¬êYGÓ!røËˆ–|²óºY{Ž£ìKUÆ5‹5RŸ"ÇÞ•¡›Šgû5%%«ÐhìêãáÈ€Î~4òv¦D«'!%òêüBÕC0 ¬m l'ÿä§´zòæ¾8€¿­ÜÂÕïÞƒð16§C¯¯˜æn*:“W ¡E ›ÑDÇÔý”“¡Ç´/&UœZÔÍŒ€äÌB"Z{I:¸»8 T*ðoàdäæíîHrf!z=ô õÁÙQÉò˜D¼Ýy¢W#2sJHÉ*,û+• FõäRr¦èíÌØÈ@²rKÈÈ)]¡ˆOÎçäÕû•èðñpdD÷@2rŠÒ]–‹ãYl³§ÙûË剭v·ÎT>WVsaêKÝÓ#?O쮃{É©guÕîåÓ`IÏÚÊ¥BQç;d@P¿X¼ãºÅ¶Ìžã({¶aU#Ô4Öllاȵ·\úwð•V uÚ5€»÷‹Øz, c£‘WÂÙ•ÛµWSÔûI`}èÔ_Ù’ÄõO’Ÿ_©‡qT)Q*zµZMâú'ùËÄ ük‡•'”>»)ŸævM=H¼[@jví›z`°ªàåÌc]ýñtU‘’UˆºHKA±ÖH†^_Q&ÀÔÁÍÙyâwîñ§¡ÁœºvŸVÜpwq -»ˆÎÜE§Ó3°³îÎŒìˆV¯çh|6“ri䎃RA|J©Ù…( ü8qç^A IÊ(ÀËÍÑÈí^~ ¹”J!M<Øtô6…%ZÒîi¹”œGûf$eXõ÷÷tÂÃEűËÙh´zR2 ¸‘^@û¦º @rf”Ö¬<(ÖèP•·yû”·Ÿ9;”ÇZž”Ù½¹Ÿ+:³óÄéÞG;ú‚~:—i”?ÖdzºªØÙ¦¾.h´zÎܸOìå{6—‘ò4ósáñˆÜ]¸š¦fßÙ»htz"Z{T^çN¾ ‡ŸÎgVÓ§½¡Í ó£[+/›ËJ«Fî îâ'ývtP‘[¤X̳? æôõû´ rGå `õOÉÓ-r˜5ªo¿fÖ¿ªã({µaU#üih0ÿKȦ[K/<\Uüz3‡Ó×ï3¬[¼¹]ÈŽãw(Ö”~Ô\Ž~Öú<[l ¿õñ¶ÚÛZšMѺ‘;z=\¿£¦©¯«Ñ©¡»Šƒç3(ÖèÈÊ+æVz^îª:?G©÷“Àú°” qû&ÝF÷…b=®N88(A¯£óÈ>œÝv„æØ–SÛ¬B›zð¿„lR³ ‰ ñÆÕI‰ºH‹R©`d@N_»Ï©k÷hêçʸžAœ¾~ßH†Ù-zãøü½œøöç&ömJû&îœOÌe_Ü]Z5rc[lš4öwÅQ¥äRr.­žÔìBšø¸–]HS_’3 Ès×»e¢×ëià¢ÂÑAAúý")þôûEtlîi“¿´-Mgh/=~ œŒÒÚ'Ô‡ÎÍàì¤äè¥l®¥•_Eým{›Ù§P`Q¦B£{4âFºšÇÓpur`|ïÆdå–p5-ߦ2RžÖÜXw8€1‘AD†xóóÅ,.&匓JAQ‰¥BA»Æl>–jR^Ú½BN\ͦ°XGh3O¢ÃùjïMJ´Æa­Ù¢œrå¸bÒ[µÓåÛÆO“2 èßÁÐãî¬B©TÐØÇ½^—»#N*%wïIO [¹ñíÏ)(ðTŸ&RÝ1ÌoÐ3¦g#n¦«Ùy" y;éjQŽ ¼œøîAѽ‘”OJ¥‚Ñ‘øõVßþœB —3ã{7&;·=ÒØƒo$QP¤ÅÓU…^_:5ånXËt5W> Ó+§¬\MÍãjji8©”<Ó¯)s½Õ< ôvfý‘t:½Åt—í0[ùç¶«V¶¾WmUoì;léûZ=hÓ]œ˜ôHS‚:³÷L:¹…ZÆõ ¢ó<9qåž,ý ¬öy²ml£½åô÷ŽJú„ú°å©„4q§lÜPƵ45í›z–]ˆ‡‹Šæþ.ì‹Ë¨ósem+PUʶÕÕkÖ¨V$®ЂƒäÆó¯ `Ö+ý!/¼Ðèu$®’Y£ZY”e*½}\ðtUq55Ÿ¬Ü2sKh×ijtÐæíŒJ©àäÕ{èõt·€›éjc9 m 0Ÿáv3×ï£Ó•¾Ëxë®ÿÎ&Ö]1gï²ûäéwRF¡ô´§‰¯+É™…$g»%e ×ƒÊ¡´h–hôÒýÅ%:UJ›üïÞ/&¿HC6 ÒF´E ;N*…‘ޱ ÷XýS2»O¦ÞÚ‹FÞ.ma©œ•K·);^¶äI™ŒûùîÜ+’ž>5ósE£Ñq;«Ð(œ5™^.x¹«8r1VOn†³×ïÓ¦±»meÄD¹8~õ…Å: ‹u»œM»ÆèõW %%³€¶~ÿ!Àu±–´ì"“².§äSP¤C¯‡ ‰¹kñõt®Κ-,É)_Ž óÓ0¯,Ù©¼>÷òJ(ÖèðoàL_nÞQ“W ¥¡‡#M}\HÎ,@§3°×å{¨‹´äj¹r;ßdÝiäí‚»³ŠCç³(ÑèÑjõ¤<Øm‹SùtæÆouöÌõûR>y;ã¨R{9R³‹¸””GHŠ5:T üž®ŽLkdŸ'bÂ$N®[Cs¬§§¸Xc¦}®§å““_ºíì­B›yrôRN îå—…ÏÊ-F«ÓKnzžÖd¼zô?ðÓëõ䪓UX¬ÅÑUñ›=RXsÜHË#¬Ec”èquR’–U@vnu @‰?O'®§æQT¬!¿ t’§ÕjÑm›xpúZ6!Ý9w+§B87'G‹2]8(LÐLòwP*¸s¯È&}*¤Y¯'+§HòÏÌ)ÂÍÙAú}öú}ºµòæÄå,Bšxðëͳ²ºµò¦[+oÜœÐéõxº¨Éð–laIŽ¡=Š ÊˆF§C«ÓYµ“)}n¥« òv¢¡§7îä£.ÒäíLcgnÜQ” =÷ò‹ êŽGWU…|ôrs侺„‚¢’ qÙ"Çdø¼ßÂßË+–òÉÉ¡tWXd˜ïE4òq!ù®šƒç2x$ÔO'®¥æ³÷ô³îùEÚ m…¥òaVNYèÛÁW'6ý’‚V§·šgåmf)Ýõ¡/u‹¿}o±í¨ê8Êm˜µ~Þ–v4Û /)Ö踟oœz«}KyýœU ‹}^²ll£½åô÷~ œhÕÈ17Ñhõh4ÆãB¥RÁøÞÍøõÆ}b/gáæìÀبÆtoíÅÏ+¾cÈ–{-úW7õ~X×—ZKÑÒTΠt¢¸XG.% tP¸ £t/µµôè – U Ú7óD©€¿Œl€ƒƒG¼œÈ+Ôàîì`$ÓÍÙ¡âÉIz3'õéKõ1µ®â_cS$e¨qqTÖÒ‹¤»èõz ‹µä”ÖÒ‹Ü Ùy¥³²ìübJ´:ü8qûÁ‚/§[ìôVýR³ Yµÿ·o0>ýH33ÔfuÔëK·'m•Õ[° ûY³ƒMyb ãbbƒºàéê@HO¾Ùw³B8k2ó JPiYö}ÅwN›û»ÙVFÊáá¢"M_jwOWò µRøøä À¯m‚ÜÙ6ݤ,/gíäÇ7ûo‘ùà°žW†·”ÒUs¶°*ÇÀžZ¥ò7ùÎ*%Å%:«v2Å­t5m›xàíîÈ/3((ÖÒ)¸M|]9q%»\92_wÊôËU—ÐÀMèÍ>1´(Ç^n*îd—æS7•”Oy…<]ãjàæH~AiÇyúZ6§¯eãêäÀÈÈ z·÷eï™;fÝË·–ʇaX[Ë @›ÆtkéÍÊo¢Ñ–¶—¶ä™¡^ÖÒ-rxwB{þúí%óì0ŽªjV•1‚) ŒÊýþmyüCÁEÁ¼OòÖ?€‹:|*Aú¬ƒ5Y†Déòºžeß_gùž,ßsƒe»¯“xWM§?x‘”¡F¡€VAîèõz¼ÜT´iìa”ž8å Dº 'Bå+¾¹ßÅZ¼Ýôm×Ôƒïè•<ؾÙ¶!‰wÕ’{âÝ‚ nZmi%êÛÁ•ƒ/':7 îÆ}›üõz=A ]psvÀÅIIÏ5tæÔÕÒÁ¹£ƒ‚®­¼ñpqÀI¥ Mcº´ð"!9§œÍ;FÙlžø›²ƒáekž”ýŸ_¨áVz>#z‘W,Mr ÃY“™”¡¦ HK¿Ž~8<˜ùx8Ò¨¡³Mú˜JsÏv>8©8©ônïËŤßìV¢Ñq))—1=“’UȽüb“r”hKW«ôz=-Ýðñt2¯9[X“c˜–;÷ ià†^¯§«Š¶=(ëÌ,ÙÉ”>·Òó pCå à~~ ‰éù´j䎛³©Y6×2ý’3ÕäjÐÙ_ª‡M|]l–c2ŸBJOÐuR)ècOIjJ´:¢B|=:Ó1¸çsðót"¨¡  §¨D[ú²¿³î¦Ú KåÃ0¬­eÅÇÑ‘=‚Ø|4E¸Ø’gåmd)Ýz½ž°–^´län֦◸Äex}ðß‹ý«:Ž’Û†™ºª2F0¥C…1‘ÁØTNk­Ï«¬m±·œþþì{|¾óš4Î>~9‹¤ŒVþXú :'¿ôõˆÖÞ(¥'݇6oÀÝœ"“ºÖ%ÄJ`5óÁ/2ï8Žþ­3‰çö› ×kî¯|ðß‹Vå¤Îðâìõ{ÜË7þ(óñËY oľ3wØp$™Ç{Ñ'Ô—‚"-WnçV(Œ#"ƒ$ýŽ»qíÇn?ˆÐô ϰ!øåb…òx ~|°bPúž’s7ïK²o¥çÓÔÏÄô|éÞ[éùtoÓ[n{O§1²GcfnCQ‰ŽýqéÜJÏ·Ù¿mz´õÁA© ñ®šÕûo¡~ðE^Oû¦ž ꀣJAVn1{O§‘l|ȆazmÉSv0D«ÕÛ”'†v?wó>££š°ïìŠzèA«ÕY”©×úƒ·x,¼¯n‹ÈÌ-æ§_Ó­ÞkŽ„ä^ÜOW )¹:g¼‚wý][z³#ö¶Y9Éjâ“søÓ°–ÜÏ/!ý~wïaô„±¦la“œöÜs*Q=Þº!÷Õ%\KË“:/Kv2¥OFNʼné¥/ ‹µdç•_¤©pb§¥ºS¦ŸN§ç¿Ĭ1mÑéô$¤ä’tWm»œr\JÊá…ÁÀÓÅ8Ÿ´Z=ßJ"º{};øQP¬%æL‰éù4ñueD ¼ÝÑ7Óó9t.†N&ÝËÛ¬—𶔕öͺ-%Z'.gq,!Ë^ª Ìðt¿fz»p-5ÇSk[z…—›#¯ŽhÍ?·$PT¢³~ƒÀî¼1¶-kÜ"ÝÌIµuQV@ð{àÏC¤ÿwmßZéí þ]F›à¡Ã*„).Ñ4(Ô®|ƒÿ €Âº;Ó³‘º>Ë.ã½uVžbØÀÇ[ì ‰ÀVÖL¬mê-‘!>\¸uŸÂbmm«ò»¦®nA1D”@P_ù`RGæýç|m«ñP#l\}ˆI @ °N*%³Çµ#G]ÂÚŸn‰úYËèõu·eE ÔwÞ]{®N´] Ü™:´¥I¿{¯“£¶|g]¦®ØøaDLÝ(*Ñò·o«¾ê-¨:m´pšZ@”@PßùÛäÎÌ]ókm«Áýüb>Þ_ÛjT uÅÆ#õ~¨s@@ A 3gõ¯bZÍWõ~(V@ 5͇Sºðöª¸ÚVã¡Fظú¨÷“ÀÏu®m@ ¿3<'"ª›‡ÉÆY™æ?_ÔûÅ @ 5BaêKk{"l\}ˆI @ @ ñJRõ#l\}ˆI @ @ ±JUýWõþÀúFÚ©­] €sØt…©e@ r«TÕ°qõ!Vk˜ÂÓŸ}šÆÃã?nuyâ‰'ì" gÏž,]º­V‹ƒƒéééh4Ο?oävóæMzöì ÀüùóÉÉÉáÌ™3ܸqƒ'Ÿ|’¶mÛiÕ_£Ñ0yòdÆÇæÍ›9{ö,'N¤M›6´kוJÅõë×%ý èÞ½;Ç·[š+‹­v·gþÔW4 *•hÆ@Pó( ‹“{öÓ¿×þΚ ©ÎqÑ¢E‹$ùåW'ƒ‚‚˜={6;v쨶ø«±XC$®’üüH=Œ£J‰³“¤F­V“¸þÉ*ÉÞ´i}ûöeüøñlذÁÈïܹs 8öíÛ3yòdrrrl–k¸¬ÆÒ¥K5j½zõbÚ´ih4Þ~ûmî޽˔)SˆŒŒdÓ¦MìÞ½›mÛ¶I÷—””páÂbccéÕ«­Zµ2r &00FömÛ˜5kžžžtîÜ™1cưqãF«þ/^$55•3f R©ˆˆˆ ÿþ|÷ÝwRúœ¥kß¾}øûûKÌÊ`Îå±–'ev_ºt)/¿ü²‘ß¼yóx÷ÝwÂÙ"355•çž{ŽvíÚÆgŸ}f³>¦øùçŸéÛ·/íÚµcÆŒ°lÙ2^zé%£°ï¾û.óæÍ« cïÞ½„……IWÛ¶m¥–ô cÉ’% >œÁƒ¥«¾£G"Tû÷ IDAT¦M›6DFFå³@ ÕµÉIUÇQöêïª2F cõêÕôíÛ—6mÚ0þ|n߾͸qãhÕªO=õyyyRx9ú%''óÜsÏBûöí™1cF…0rVmµ·µ4›ÂÑÑQ3:99ùEGG3xð`4h`³®u1 ¬!2nߤóÈ>€W'ÜœU ×Ñyd²n߬’ì72bÄFŒÁ¡C‡¸{÷.P:QzñÅ™0a/^dÚ´ilÝ*oû©!.\`Ë–-9r„ÄÄDiä‡~ˆ¿¿?«V­"66VzRrøðaöïß”Vž®]» À±cLjŒŒ¤GFne«€III¨ÕjBCC¥ø;tè@BB‚MþeFù§5—.]2™¶ 60~üøJÛÆ’ ‘“'£FbÿþýRãªÕjÙ¹s'cƯ[“©Óé˜ …é~wwwòóómò % €%K– Õj9{ö,0zZUFJJ ÇŽ«ò$ÐääIÓ¦MéÔ©{öìà—_~ÁÕÕ•nݺɒGRRo¾ù&ŽŽŽ2eÊvíÚUé22mÚ44h€§§'þóŸ¥-DFFJï_yüCÁEÁ¼OòÖ?€‹:|*­N~!ß³gJ¥’ƒCLL ‡"22’7ŽN§“ö.'%%±oß¾ r4 EEEÒU™‚íííMRR’‘›áÁ0Pú¦K—.,_¾Üè–=z°|ùré}@(­`£GfñâŨÕjâããÙ²e‹´eÓš?ÀÙ³gÉÈÈ ;;›eË–qîÜ9ž}öY#Ë&AÑÑѲÓl« ±5OÊðõõ¥W¯^Ìœ9“æÍ›Ó¦MÙ2ÃÃÃñööæŸÿü'………\¿~¸¸8Ùú”±lÙ2rssÉÍÍåóÏ?gĈ’Ÿ‹‹ ÑÑÑLŸ>°°0š4ibRƵkט9s&_~ù%5²I_S„‡‡ãêêÊ_|N§ã×_eëÖ­Œ5 (ýÔÇO?ýd5M@ È¡ª“&C¬ÀzgîžÊŽä"§?îÚµ+þþþ|øá‡ÒØóÔ©SdÚÓÆ†zÚšfµZÍ®]»ÈÈÈ 77—M›6#Ô¿£µZ-:®ÒcéšFLk€¨wâH<·Ÿ£ÿþ„£+W¸Ïí'jŽüʶqãFžzê)š4iB@@€t=ÿüóÒK¿+V¬`áÂ…Œ5йsç2pàÀ r^ýuZ¶l)]o¼ñ†l]¦OŸÎܹsi×®ëÖ­Œ†‘lEFF=zôÜ"##ÉÈÈ0š¼ÿþû¸ººÒ¥Kž~úiæÌ™c4y´æ¿wï^úôéCxx8‡bãÆ4lذ‚ £££qss“f[í`ˆJ¥²)O =z4GŽ©p Œ­2•J%ëÖ­ãòåË„……ÂôéÓÉÊʪ”>Pz¨Ktt44nܸÂJêøñ㉷x\ó®]»ÈËËã•W^!<<œððp¦L™bQ_sé_½z5111„„„ðâ‹/2oÞ<©ŒíÞ½›ãÇ[M“@ r°ç*•µñXïïÌÝSÙ1‚\äôÇJ¥’5kÖ@§NèÔ©S…ï=Cõ¬ÊI³^¯ç믿¦W¯^tìØ‘/¾ø‚Å‹Y?þøcZ¶lÉÚµkY¿~=-[¶dÑ¢Ev×ÛÞ˜š^;¦¦¦;9ÖÝ¢ûöþ€gȆ…Ö²65GÙ–)S¦0uêÔÚVç¡gÊ”)\ºt‰~ýúÕ‹Ê\—¸}û6}ûöåìÙ³F{ò@ xX¨ÊûjÛx˜lœ•ùÛ¶Ü]Û·Ò©sœ,n‡-ωØcøw @nB ƒ†«¦¸DCPPÐ8 P?¸ò þ/ ëîLOPSËä‚êcÕªUµ­B½eÅŠ<þøãb(‚‡–‡erR—6®>Ä$P Ø µZM×®]iܸ±ôÝ @ FêÊ*UjjªÉÓömÛft¢w}£®ØøaDLÝpss#!!¡¶Õ Ú©+““   bcck[j¡®ØøaD #@ Ȥ:N®#l\}ˆI @ @ ±JUýWõ~;hvvvm« @ øáããS©O)lGظú+@ LÄä¤ú6®>Ä$P @ ‰Om«ðÐ#l\}Ôûí õ† ýÛY@ êb•ªú6®>ÄJ` Ò°aCÒNmåÖÊAÜZ9ˆ´S[+L @ u±JUýWbXÞþœà±ó;Â3ŸËº·[·n 8Õ«WW:þüã,^¼Ø¦°C† áüùó•Ž«¾óòË/Ó«W/Þxãj‹£|~Ô'›'&&2fÌzöìÉúõëk[JQ{÷ë×+W®ÔX|u9íFMP•<°'õ%?­ÙËÖtȵ{mÛ§¶ã¯Œö(Ûu¥~ü°¶JUWÊ`yêZ›n 96®«ö®«ˆI` Q¶ ¨ÓEPT€N‡ìÕÀõë×óÜsÏUpþùç‰ŠŠ¢¸¸X–^£GfçÎ&ý^}õU7nl“œX¬x_ý5úÓŸŒÜ†nÒí‡~ ??Ÿ7Þxƒˆˆ À† LÊNII!""‚?þñ’[II óçÏgРA„……1bÄöîÝk³?ÀòåË+èWKö« rl.kùSþóŸÿűcǘ8q¢]e×Õeïº_] ªe¯:Ê®½°gY›TW¹4”[—Ó_ÝØÓ¾5mÇÑ£Gɽ{÷$·~ø§žzJúݽ{wNŸ>mtߪU«˜:uª‘s}¥½ûÑšÄÚ*ÕÃÒFÔ&rV««-[»v-O<ñaaaÌŸ?ßÈO£ÑбcÇ ×G}dw=ìx'°É?ù)­žü€¹/Žào+·põ»÷ |L•䦤¤GPPdÈ!öP—‘#GÚE@DD+W®D«Õâàà@FF†K—.¹%&&À¢E‹ÈÍÍåàÁƒÜºu‹_|‘V­Zn${Á‚„††¹ãææÆ_|¿¿?àÍ7ߤuëÖ´jÕʪmaÎæ•ªæª«-ñ¥§§Ó·oßj‘]SسŒ×ÅøÕKMågu×™êJ‡(ï¥Ôw;¨T*V®\ɬY³j[•:‡µU*{æ}]ê;k9ïVW]kÔ¨¯¾ú*{öì©à§R©Œ‚0hÐ  T-ºØ±X4lØÄõO’Ÿ_©‡qT)qvr€ÔèÕj×?Y¥wwìØATT#GŽdÛ¶mF~/^d̘1DEEñÊ+¯››k³\Ãeõ~ýú±råJ&MšÄ°aÃxã7Ðh4üõ¯%33“W_}•!C†°cÇ~üñG¾ÿþ{:vìHII ñññœ:uŠ=zТE #·fÍšáïïF£áûï¿gúôéxxxСC¢££Ù¾}»‘Žû÷ïG¡PðÈ#¹»»»3{ölÚ¶mKÆ 7nÁÁÁ\¸pÁ&ÿÊbÉN`=?ÊÛü믿f„ Œ7€;wî0}útzöìI¿~ýX¾|¹tïíÛ·™>}:‘‘‘DEE1gÎÀ|þ˜ÒÝÖøæÌ™Ã‘#GX¼x1C† áÖ­[u“›kv4—VkrËchïýë_ôíÛ—ž={2lØ0Î;gö¾cÇŽMÏž=™3gŽÑ ¼¥øm­SçÏŸ7*+óæÍ³¸}§_¿~|ûí·DGGÓ½{w-ZDZZS¦L!<<œ©S§’ŸŸ/…ÿôÓO0`Œ9’_~ùEò³VNmµ±¹²wåÊž}öYºwïÎ!Cغu«¬ûΞ=ËÈ‘# ¯`;9e _¿~|ùå—Lž<™#FTÈOKºVµ”[g Ùºu+Ó§O—~>œ™3gJ¿(µ­Öìe˜KuËšœò”É5—~[êÜÊ•+Ò°páB>üðCÀr96¤K—.dddH¿?úè#>ûì3é·Ü2#§®Ú×–zmÎÆ¶¶åPù6Ê“'OfÆ Fö”bm•ªªm„©vÀÖöÓª´érË»ý¬µ7 o%PN+§ <˜þýûãééiÒßÉÉIº:„ŸŸ_…‹ºˆ˜Ö·oÒyd@«“nÎ*Ðëè<²Y·oVIöŽ;:t(=öG%33(}j4cÆ ÆŽËÑ£GyþùçÙ½{w¥ã‰gõêÕìÚµ‹äädiûƻヒ¯¯/Ÿþ9111Ò“˜£Grøðaéܹ³ô´ääÉ“„‡‡Ó­[7#·²UÀ””  ‘âo×®W¯^•~°xñbÞzë-«ºgddœœL»ví*å/svªL~\¸pÿüç?lÛ¶ NÇ+¯¼BëÖ­9rä›6mbÇŽüøãhµZ¦M›FóæÍ9|ø0GŽ‘¶ë˜ËŸªÄ·`Áz÷îÍÌ™3‰‰‰¡Y³ffÃÊ•mÍŽ–Òj‹\SÄÅűg϶oßαcÇXµjfÃ8p€o¿ý–}ûö‘œœÌ²eË*¿µ²2~üxþ÷¿ÿñòË/KÛ¤-Q¦×–-[ؾ};³fÍâý÷ßçÈ‘#óÝwßIaCCCÙºu+'Nœ`êÔ©Ìš5‹ÂÂB«åTNM•=F믾Jß¾}‰å_ÿú .äÌ™36Ý_Æ?þÈš5kˆ‰‰!>>^²]eÊÀ¥K—øæ›oؾ};jµZÊO9º‚¼6Ò= ëLy"""8uê:Ž»wïRRRB\\III¨ÕjÚ¶mkÕ^†Xª[rä”ÇTúm­sÆ ãðáÃÒ S«Õ²gÏ¢££óåX•)3rêZ¶Öks6–Ó–Û«hÙ²%ä믿6æ÷ŠÜ“+厣À¸Û&õ±‡-eÂÖò.G?[Ú›ÊØØsö®ìXÁ¶oß^oVÿÅ$°š)[-8xAn<ÿ÷Úf½ÒòÀÁ ^WéÕÀÓ§OsçÎ @pp0-[¶”Vßâââ(..fÒ¤I( ºwïNïÞ½+–‰'âàà€ƒƒ½zõ"!!Ábø÷Þ{… J¿»wïÎÉ“'ÒU¿nݺѭ[7#·²I Z­F¡Pàìì,Ýïææ†Z­–~/[¶ŒáÇӴiS‹z”””0{ölÆŽk4(²Õ_.æìT™ü˜8q"*• …BÁ… HIIáÏþ3ŽŽŽøûûóôÓO³wï^Î;GFF³fÍÂÙÙ•JE—.]*¥»-ñ•Ç–°re›³£¥´ÊÑÙ ¹rå †ÀÀ@̆þùçñôôÄÃ×_~YÚ""7~si<{ö,:Nz×2,,Œ>}úXLÀ /¼€§§'Íš5#<<œÈÈHþð‡?àææÆ AƒŒêìàÁƒñòòB¡P0räH6lÈ•+W¬–ÓÊÚ¸Œ¸¸8Ôj5S§NE©TÒ±cG¢££¥vËV¦NŠ··7¾¾¾Fi«Œ~&LÀÁÁ¥RÉÓO?-å§\]å´‘rëLyš5k†»»;ñññœû,YYY ¬M˜,Q€³³³ìo†‡‡óßÿþ—û÷ï“••Epp0¾¾¾¼óÎ;Ü¿Ÿ«W¯JËçnnnèõzŠŠŠ¤‰ Z­ÆÍÍ €k×®qàÀ¶lÙb1NFÃ믿NÆ M®Zó¯ æìT™ü0|0––Fqq±Qã¢Ñh áîÝ»Uù}[ã+-aåÊ6gGKi•£³!!!!¼öÚk|üñÇܺu‹>}ú0gÎ|}}M†7\± ”¶IÉß\³³³+¬ŠYL`¤¯““~~~Òo£-a7näÛo¿%;;•JEzz:ùùùäææZ,§•µqYYYMP7n,{+¶ayruuåþýû•ÖÏÐn¾¾¾R~ÊÕUN)·Î˜¢ìÁÚ­[·ˆˆˆÀÓÓ““'OröìYºwïnÖœ½ ±¥±EŽ-È©seƒÈ‘#G²{÷n†.ù™+Çr¨j™±V×ʰµ^ÛÃÆöj£ÊhÖ¬ÑÑÑ,[¶Œž={ù)•Jt:‘›N§3ª7+rW©*3Ž2,•i?­=l)¶–w9úÙ:n©ÊJ 9{Wµ3ÇöíÛ ¯7À‰I` ¥+¨œAéDq±Ž\J@é. pA‡Îº˜r±wï^´Z-ýúõJDÉÍÍ%!!Ÿ •'33“FÙ%U†˜zR]ž°°0rssÙ´i]»vJ+¨¿¿?›6mÂßß_j˜š4i‚‹‹ W®\¡cÇŽ\¾|™Ö­[¥«†iii <(ÝZRRÂ!Cˆ‰‰J+ôìÙ³Ñëõ,Z´#}¬ùÛ›ªæ‡ŸŸÞÞÞìܹ³‚½ãââHKK“Ù)-ù#'¾ª„­LxC̦µ*rÇÏøñã¹wïsçÎå믿6û` ==]ê,îܹ#uˆU‰ß† rçÎ#·ÔÔTš7¯Ì£¢Š\½z•Å‹³nÝ:Z´h m¯³VN妱|îܹc4HLMM5TXºß•Ƀ””iÀíÛ·%]äêj‰òºØ£¬DDDpðàARRRxùå—iР»ví"..ާŸ~Z¶é“4–ÊqyT*•ÑÄ,77WWWÀ~õÖö¨×¶êWmÔÿøGFŒA“&MŒÜ}}}¹}û¶‘[JJJ¥êI}ÃT{YYlÉÊ´IönÓí¥Ÿ­í=m\FuÕùíÛ·[=U¾.ñð?¦©hµz’O^ÿPpQ0ïÓ…¼õࢀ€$ŸJ@«ÓË–»ÿ~”J%;vì`óæÍlÞ¼™;wÎöíÛéÒ¥ :Ž#GŽ¥ò¡C‡*ÈÑh4K—¥ýÍáååU¡0<JŸÂtèÐ5kÖ½0Û­[7Ö¬Y#m…Ò{øðá,[¶Œ‚‚®\¹Â®]»¤§6£FbÏž=Rº'MšD×®]ùïÿ ”î5ë­·¸ÿ> .D§ÓQ\\ŒV«µÉ¿:°5?,ÝïååÅÒ¥K)**àÖ­[œ?žN:áëëË'Ÿ|"åaÙûA`:ª_UÂV&¼!–ÒZY¹×®]ãüùóèt:ÜÝÝquu­ðdÛo¾ù†¼¼<òòòX±bC‡­rº C¡PHå9..Îì•A­Vãìì, æþ÷¿ÿqëÖ-) –Ê©Ü4–/{]ºtÁÅÅ…ÿûßèt:.\¸ÀîÝ»6l˜M÷[£2y°jÕ*rssÉËËcùòåFù)GWK˜²CUËJ÷îÝ9~ü8………Ò­[7~þùgîÝ»Gûöíeëh­© åÓ/§ÎùøøÐ£GÞyçš6mJË–-Ëå¸áÓO?eÒ¤I,X° Â)šPúBrÙûyݺuã½÷Þ“Î_|‘¿ÿýïôìÙ“M›6ÆÔѽ{w233éÖ­›äNff¦Ñ$àÍ7ßÄÅÅ…Gy„—^z‰™3gJ“Gggg£4»¹¹áèè(mYHKKcÏž=?~œž={Ji[·nMþÕJ¥²)?Ì¡T*ùꫯ¸víýúõ#22’ÿû¿ÿãÞ½{(•J¾øâ ®^½JŸ>}èÛ·¯ÑwMåOUâ«JØÊ„/¯¹´VV®Z­æÝwß%**о}ûRXXhñiÞ£>Ê„ 8p 5bÚ´iUN—!*•ŠÏ>ûŒo¿ý–¨¨(¾úê+†j·Õ™N:1hÐ FÅ /¼ÀÁƒ¥UvkåTnË—=•JÅÒ¥Kùé§ŸˆŒŒdƌ̞=Û¨M°t¿5*“ƒ ’ò³iÓ¦R~ÊÕÕåÓa²Œ›››Ô.zxxЬY3ºvíZ©²b­© åÓ/·Î >\:ñ² Kå¸S8pÀšlåóÏ?¯m¿c~ýõWš7oŽ··7±±±üüóϾ—&ê¢^?\TÇûjc„«1 ‚:HBB¯½öÅÅÅx{{3þ|» #jQ¯.êÊääÎ;fwˆ­]»Öâwoë:uÅÆ#b(u²“Õ‹œÃ™‚ª"êõÃE]Y¥ êÙ¢ IDAT ”NFب+6~Ã@ 2““êGظú“@@ @&Õqr¥Àaãê£Þoµvê¦@ @`oôzùßxÈãa²qVfFm«`„X @ d¢P˜úÒšÀžWb(@ ÈäaZ¥ª«Wb(@ ÈD¬RU?ÂÆÕG½'°¾‘vj+Eg—à6FácjY#@ \Ä*Uõ#l\}ˆ•À¦ðôçGðØyžù\Ö½-Z´ ""‚¯¾úªÒñðÁ,X°À¦°‘‘‘ÄÅÅU:®úÎĉ eÚ´i•º?,,Œøøx;kU½Ø3ÏoÞ¼ÉÀi×®ß|óM÷X³Yeô³Wšì!§¾Ö©êÒÛÞrë¢}åÔƒº¨¿@ 0µUªºZ§åŒk96®«ö®«ˆI` ’vj+:=PTEèt¥nrعs'üã+¸?ñÄ´oßžââbYò ÀæÍ›MúÍž=›¦M›Ú$'<<ÜbÅ[²d “&M2rëÝ»·I·íÛ·——Ç´iÓhݺ5ááá¬]»¶‚ÜM›6Ñ·o_‚ƒƒéÕ«gÏž•üV¬XÁ!CæÍ7߬p¯5ùëׯgæÌ™&ÓSTTD“&MÌ^ælZŸ°–§ÖX±b<òñññ<ÿüóv‘/§LÚ›ÚŒ»&1•/Õ•ö߃M­Õ@P±¶JeÏqÔï9+Õݧ$%%Ѻukžyæ#wkãÍºŠØZƒäŸü”VO~ÀÜÇð·•[¸úÝ{PÅ-¡IIIœ>}šÆÃã?nuyâ‰'ì" gÏž,]º­V‹ƒƒéééh4Ο?oävóæMzöì ÀüùóÉÉÉáÌ™3ܸqƒ'Ÿ|’¶mÛ ”Nˆ,XÀ§Ÿ~JçÎINNÆËËKŠ3((ˆÙ³g³cÇ“:Y“o ggg®_¿.ýç³Ï>£wïÞ8::ò׿þµÒö²„F£A¥ªûU7--ØU¦=Ëd}ŠÛ^T¶ìTWÚ›Z£:ê@ ¨( ‹“{¶qõ¥ï·7ÖllHu÷)sçÎ¥S§NÜ­7ë*b%°†H\ÿ$ùùzG•g'H=ŒZ­&qý“U’]¶6~üx6lØ`äwîÜ9Hûöí™ûì3³q………±dɆÎàÁƒ­Þÿ÷¿ÿN:Ñ®];zõêÅ™3ghÞ¼9éééR¸÷Þ{>ú¨B|æò´<ñññŒ=š6mÚÉwß}ÀŒ3øé§ŸX°`‘‘‘Ffkò-Ṵ̀LšK£%Ìé gTWÞxã £í2†q'''óÜsÏBûöí™1c†náÂ…„‡‡Óºukú÷ïÏÁƒ­êeM·°°0>ùäÆŒC¿~ý˜1cEEE’¿¥²`ªì˜ÓÑ\¾¦ÝšžæÚ ST&?m±ïwß}ÇsÏ='ýîÝ»7/¿ü²ô;""BjwÌÉ[¶l/½ô’‘Üwß}—yóæÙ¬¯©z`kù0'_N»!ªk““ªŽ£Lµß–Ú`sX ZëCV¯^Mß¾}iÓ¦ óçÏçöíÛŒ7ŽV­ZñÔSO‘——'…—£Ÿ¥¾´ 9+¶ÚÛZšM±gÏ ¬àgi¼Y—“À"ãöM:ìèqurÀÍYzGö!ëöÍ*ÉÞ¸q##FŒ`Ĉ:tˆ»wï¥_|‘ &pñâE¦M›ÆÖ­ò¶Ÿrá¶lÙ‘#GHLL”¶<~øá‡øûû³jÕ*bcc¥'1‡fÿþý@é©k׮įÆpìØ1"##éÑ£‡‘[Ù*`RRjµšÐÐP)þ:@vv6W®\!11‘nݺÊìٳƖ°&ß^|ÿý÷lݺ•ØØX.\¸ ÙL§Ó1yòdBBB8wî{÷îeÓ¦MìÞ½Û¬¬¸¸8vìØÁ,ÞêÔ)vìØÁÁÿoïÎ㢪ú?€ÙÜØY¬ÅaÀRÒR´R%-÷5Û3—ÇJ­'·´\2Z.i(îdŠ+&.$¢²X¹‘ „h(ë03¿?€ë Ì.;Ÿ÷ëu_ ÷ΜùÞsîܹß9÷ž‹ôôtìܹNNNzÅ­®M•••aܸqxî¹ç‘‘ï¿ÿsçÎÅÙ³gñÍ7ß OŸ>˜5kNŸ> ËWWgŠ YGMñV~VÆŒƒ´´4LŸ>]8-¹*©TŠW_}îîî¸pá.^¼ˆ×^{MXîíí£Gâ?þÀ´iÓðæ›o¢¨¨ÈàØ*]¼x;vìÀñãÇQPP€eË–Ðm[RÜv4Ũ­Ýu‰SÝ~B}ÚS—ú ÄéÓ§!“ÉpçÎH$$%%nܸ‚‚xyyi,oøðá8~ü¸p°TVV†½{÷bĈ:Ç«ês KüêÊ7d¿ADµGß‘+õ=Ž”÷ߺ샫Òv,¨Ë~%&&û÷ïÇ‘#G°}ûv¼ùæ›X´hRRRPZZŠM›6 ï¥k|Ú¾K ­cEêê[ß}iaa!¾üòKÌ›7ÏàX"&u ¼§O ·¤ãã·ŸÃSú3ãÖ(“Ë î €G‰fll,’““±dÉÖE[ù5eÚ´ihÛ¶-ììì*ÔÙ… ™™‰3fÀÔÔíڵøqãðË/¿¨-k„ 011‘‘‘Æ×[XX ¨¨ééé(++ƒ““kt½€òí«  Ó¦MƒH$‚† &l†RWgŠ YGMñž;w2™L¸fËÏÏ!!!*Ë9þmߥ•ô­cEêê[Ÿ}é•+WƒÃ‡ƒ&3fΆ\.4Édå!G™¤¬b¾La¹kÖ¬®±÷gX'd€È0iˆÌPZ*ÃH‘`l™C™Þ¥#::R©>>>ÊG­ÌÏÏGjj*ììì››«ôšÜÜ\µ·C—îz___äççcË–-ð÷÷Pþm×®¶lÙ‚víÚ ;&XXX ==]X·´´4tîÜàààƒOÐV~m«Œÿĉ­ƒ¶×3cÆŒÁ½{÷ðÞ{ïáÛo¿Å¼yó`jjª4‚l~~>,--U¾‡¶¸ììì ™L&ìðoݺ¥ôe¡ÉãÞVÝ:¯­­-nßVþu-++ nnnÕÊqttDVV–0 ‘¢ŒŒ |ùå—Ø·ožxâ @ïÞ½µ~éR—™™™Â)Œÿý·°LßmI[ŒšÊxÜ6×D—öÔ§~qøðadffbúôéhݺ5víÚ…¤¤$¡ÇW[yÄÌ™3‘žžŽ#GŽ`Μ9zÅ[•>ñ«*ÿ¥—^z¬ýÕ¬š¼‡.ŸiCöÁÚŽ÷xÄÐø4}—*ªûê³Î§OŸFVV–ÐIQXXˆÒÒR—3=™L™LyÅ_™L¹\†’’•ËjO­R©Ÿ»ØwÌ0÷›¯ðÉâ/s#À¡+þNÊ€T¦ÿF~ðàAˆD"ÄÆÆâСC8tèNœ8€€DEEÁ××2™L¸(33GŽ©VNYYJJJ„IÓ@ê´iÓ™™™Jó†Ê…éÑ£Ö®]«4g¯^½°víZáz@011ÁСC±lÙ2"==»víBXX˜ðœððp¬]»<@^^6lØ tÁnåzI¥RÈd2¥uÓ¥üÚäëë‹6mÚ`É’%(..\½zUçá¡5½þÊ•+HNN†L&ƒµµ5,--…G—.]pòäIå;fM¿l©jÓª1XXX`õêÕÉdHIIÁîÝ»1dÈÖA[ùšhZGCâõó󃑑6lØ ü”uvôìÙöööøßÿþ'lS•×›ÀÜÜ...ÊOW¾víšÖõÑ¥.׬Yƒüü|ØÄÄDã±àãèŸâ>JÓw©¢Úè ÔgÍÍÍ•Ž±­¬¬`ff¦Ô»©íx³¡R•^›fgg—š™6Ü3EÄ@ËÎ/B}ÛÕs4u§ò–qãÆaÒ¤IõN“7nÜ8¤¥¥¡OŸ>âÃL5kòäɋŘ0aB}‡DFFÂÓÓ³¾Civ²²²ðÌ3Ï 99Yéú"¢Ç¹^tÓ”ê8ïî£Ór¿_ófÌœ-ôîÙ½½{÷FëÖ­…ÓAóòò‡Ð…ÓAúi3|–ßòèAÆ!ôZí}J%eprr @aÅT ð¸@qÃÍô¨UÝäT{*O ¤æá÷߇»»;Ú¶m‹S§N!66V§A†¨i[·n^|ñE&€DTMSIN²æRÇ111øjáBìÛ»mڴƽ{÷ö ¼½½:p`­¼'“@""©©©?~ ”Ëj¦"êJÞÝÜúˆˆˆˆˆê‘«›› ÖžJDDDDDÔŒ0 $"""""jFýé pãúu=z‰~C§¦—vª¥ˆˆˆˆˆH“~®õ‘^neßÖëù¦¦¦èׯ½žö©N£Oo\¿†¸¸8ø÷ @@` ÌÌt»ßÆÂÿ}ÿ¼4 –£#"""¢ªvEÇÀ»{úƒH/·²ocÆÌÙ:=·¨¨‰ññˆ‹‹ƒÜpsu«ÝàôÔè“À¤¤$<ÿÂ@<ùÔSËåJu(F.“ãA±æaY‰ˆˆˆ¨æ´4/?ü453«çHˆô'—Ë5ŽæYÉ̬žígçö8uê$“Àšv÷î]¸¹»C*•B.—ëõZ©\©L¿×‘á¤ÇkÆÆÆõ ‘þtM+¹¸ºâî¾=µ‘a}(“É`ll ©Š-Êår¤œOB;'g8:9W_.“éÕˆDDDDôxä<ö¢FL.—+mÃ{÷îELL V®\ ‘¨ú˜›&ÆÆ 2ßhôI  :™“ËåH¹pòÿE_?ȤÕ+_*{‰¨Q؉ÿ„Ôø˜ˆ¨1òЋ±ªyGïÞ½ñÕÂ…xkʬR“6DM# ¬Ò-+—Ëq1%÷òî¢ßó -S}ª¨\&‡ŒI 5Šû+u‰ˆ:9÷YÔˆUÍ;Z·n}{÷¢oH¦LŠ•+V4ŠD°i$C.Ô·23ñ÷ÍèìÕR©Tml‰DŠâR CDƒâþJÝc"¢†ÎÜ´á ©S5ï€6mZcРP¬\¹ ÁAAˆˆUOÑé®I$e’2”””ÿÛÚÛ££›;ný 'ggˆDª/<.Ïäùk5ì $¢¦@ßüˆ’ªyÜ»w¿ü²6lhµå Q“HUÒãîQ~#øäß“àÝ£§Ê¨¤2ŽJD‡âþJÝc"¢†Žû,j̪æ÷ïßGXØ+‹±tÉbhÁTÕD’@Õ£|ºº¹ãƵ«(--E‹Õo"ÏÑA‰¨±0DØ_©{LDÔptPj̪æqqqðööÆ¢E 4ŽhI H$B~~>ŒÕ\€éêæ³-Pª¢[–£ƒÕ-ŽJYÕ[D„ˆÐË—©He2Yƒ(¦Ñ'¶¶¶ø''jŸS\T¤r>G%"""ª[”3}oŸ““[[ÛZŒÈ0> ôõõC\\ÜÜ:ÂÛ»;Œu_%9›–ÕO%"""¢ÚÁ³òN$íI TZ†‹SpýúM?Ó»"ÓO£O]ÝÜGÁ¥K—õzmbb|-DDDDDDÚœ=Xß!émÍšÕ:?×ÔÔÏõï7W·Ú È@> <}] À]û×ûµ>55Aö=ôÍ9p纴æƒyL ï*E""""""ª5¶'ðAÆ¡úˆˆˆˆˆ¨Ñi”I`ÿ¡õQ£ÄÓA‰ˆˆˆˆˆš&DDDDDDÍ“@"""""¢fÄ $ÐÆÖ6¶v8s ¦ã!"""jÔxœDD Á=ywsk2"""¢&ƒÇIDÔñtP"""""¢f„I Q3Â$ˆˆˆˆˆ¨aXÇœÛû{¬Z½Úà2æÎýóæÍ×é¹>=ŸFrr²ÁïÕØ{žx“&O®Õ÷©Ú&ºÖ»¦çéÓÎú¾ÖÓ« ÒÒÒ *»>Ô÷v¬­¾t¯!×»â:ÔÔúQÃÔ`“À¤¨àú¡ÖÄ<€©S¦T›ÿòËCàÑé ””–êU^pïg°=*Jå²™ŸÌ@ÊéæÝ]ãÝòåËñJx¸ÒíC WShǦ°DDD¤›™&E£ÿë§›t"XÕÍ›™8—”[[[ NO`Ô¨ü›ÿ¯ÎåV=Åë›o¿Eè Aðõõäɓ!‘H”÷¨åää bôøô|Û¶mDGÿ‚»vzöôD"Á¥K— ‰èÝ;O>ñ„Òúl|þù<<Õ¹3Ü=:Á××IIIçW=ÅSÝö¡HŸmåÀðôê"L]Ýð€4·™§W,_¾ýú?gûôÕºÞDDD¤]'Oy sŸtíŸ^ð é%,;ñƒNÜv@^xÇ—?>ñƒ_]‡Yç¶mÛ†¡C‡`èÐ!8vü8þùçå‰Ò«¯EĨüõç˜öö4ìØ±Óà÷¹tñ~‰ŽÆ™3§qãÆM¡×lñâEpppÀÖ-?!ùüï¯8Å366‡˜™™Á××ññ €ø„ˆÅ PžTÞ ˜™™‰ÂÂBtëÖMxÿnÞÝžž¡Ór¹\022RZ‡Ë—S•þŸ¿à tî쉮]»aÌè xáƒëG]=(Ò§Mþ3l>‚‡¤R)öìÙ‹ÇëU¦L&èQðôôÄ•ŒtÄ?†mÛ·cß¾hƒ·‘ýû÷ãð¡¤\HÆÍ›7°hñÀ+aa8zô(þý·<‘,++Ãî]»1RE]€O8ùÛ dÞ¼wߙމ“&¡¨¨HïºÐµM4ÕSUAÁAHHL„L&ÃíÛ·!‘Hpöì9Àõ7PPP€®]ºÏŽþû‰Æ…äó¸xñ’Êg©TŠð‘£àÑÉéiÈHOÃøqc•ž£K9Š.¤¤`ßÞ½ˆ?‡‚‚¡$ "FFÿ~ýqãú5üøÃzÌœ5 §OŸÁÙ³g±{ÏÄÇÇãÚÕ¿½ÎÎÎjç«¢nûP¤Ï¶Šô´T¤§¥âì™Ópvvƨ ²Ý ¥IDAT¨Q#uj³ßÏ'ãà_q*î¤Æõ&"""ÝÔy˜så*2N$âò‰ÓH>vÉÇ}q÷™p‘_Fä׃!x Û– ƶ¥ƒÑg¹º³N%&žFVVˆN:¡sç§„ƒøsII(..Æ›o¾###!$$Äà÷š4iŒallŒ>}žÅÅK5>éÒ%X³æ;áÿàà Ä'$Tı8â@±Ò¼à  ÀÂÁÜÜ\x½•••h[Þ¥K´k×Ë–/‡T*Åùóç•’ˆJï½ûNœˆÅÚï¿Çêï¾z6j‹>mâââ‚=ºcÿþý€“'OÂÒÂ~~Ê?lh+óüùó¸qó&fÏž3338::bÒĉؽÏàmdÚÛÓкuk´jÕ ï¿÷>öT\ÇÙ®];ˆÅØ»oàè±c°±µE=T–óÒK/¢mÛ¶022Bxx8lmlššZíyÚêB×r4ÑTOU¹¹ºÂÚÚ—.]B|Bž ££#þøãÄŸŠ‡80"Ñ£]ä»ïL‡ ìììðâàÁ*?;II¿#''Ÿ}ú)ÌÍÍajj ¥çèRŽ¢‰ÆÃØØ"‘“'MÚé\R ðî»ï@$¡gÏž1;wí‚…¥%Š ‘–š ‰Dggg899©¯ŠºíC‘¾Û PþãÎ[S¦"  Æ§S›½>yLMMadd¤q½‰ˆˆH7&uý†óû$ ôkÈæ9ð>€®€S.`ïÒ®^GqQ†|pYe9MIä¶H„„„ U«V€¡C†"22o½õ&þÉù...J½a®® ~¯V­Z -Ì-p/ïž^¯‹±~ýzÜ»w¹¹wááá{{{L™:÷îÝCZZ:Äâò$ÐÚÊ r¹ÅÅÅB¢WPPkkk–›™™aëÖ-˜1cÖ®ý?<ùä“6l¨Ò©€`mm kkk ò2âðÓO[àëëkXé@ß6>|8vîÚ…ððpìØ¹ÃG ¯ömefee£´¤AÁ½…yI)ºvífð6¢Øäì서ŠÞg9r$6ü¸¯½ú*¢¢¢þJ˜Úr6l܈øwóò`bb‚Û·o£  @ås5Õ…>娣©žT  B\Ü©òëXƒƒÐºukœŠÇÙ³ç¤ô\[…ëå,--qÿþýjåݹsÚ·‡‰‰ú]«.å(²·wPxl/´Ó?9ÿÀÙÉY)QíàÒ.\@·®]1kö,Ìýô3\½zýû÷ï¾R;ßÎήÚûjÚ>é³­ÀâÅK““ƒõë×ЭÍëLÓz‘nê¼'P*A @ @V1IeÊa ùà2~øny³H‹‹‹±gÏ^üvò¤p­ÌÊU«péòe\º|ööÈÍÍUzMî?¹jJ{麭ÀÁ˜lظ7üˆffôo3mëMDDDÚÕyX&3TÈ䀴b*“UÿÕ|Ä'éuZ½Øÿë¯066FBü)üv"¿ˆEbBù©hÛ¶mƒŸ¯/d29 |јC‡ª•S&)CII‰0ilB¶mÛàÆ›Jó†sssøøø`õêï  ó±zõw¨ @ùÁúðáÿÁâÅKPXXˆÔÔ4ìØ±#GŽÔi9P~z_nn.òòò°båJ\¸‚±c_P~{‰ 7âöíÛxðà<ˆÈÈH 4Hïu×VŠtm“Jv¶¶èÝ;ÓÞž׎ñÔSOé]¦¿¿Ú¶mƒ¯.Dqq1௿þBrr²ÞñTZ¹ròóóñàÁ,_¾C‡–™››ã¥—^Äëo¼§Ÿ~:tPYÆÃ‡annŽŽËÿØØX\½zUïºÐ§œnݺáĉßÿý7bbt«'U‚ƒ‚p2.ÅEEpvv†80GC^Þ=x{{«]u|}}aooùóŸÃ³gÏê]Ž¢•+WáßÿE~~>–-[&´“Ÿ¯/,,,ñíŠÉd¸pá¢vìÀ† CFFΟ?™LkkkXZZB&“«¯î}ÕmŠtÝVþüóO¼ýöt¬_¿NéT}ÛLÓzÀæÍ?áèÑcºU.Q3UçI`©Ô¸¼'P”UL’2㺣ÁˆŒŒDDÄ(tèÐÂ4iÒ$DE퀑‘6mÜ€/|ÐAƒðÉ'Ÿà…矯VÎÛӧù}az÷½÷õŽeúôé˜ñÉ'p÷è„M›7P¦RpPrss Ì"77W¦Ò ÀÂÒ=½0", ÿýïˆu^þëðóï…nÞÝqüx,öíÝ›òÑ?E"ö틆8(O<ù>û|ÌŸè½îÚêA‘©©©Nm¢hÄðá8qâ„ÊSAu)S$aû¶mHOÏ€W—®pusÇä×ßÀÝ»yŃBCñü ÐÍ»;Ú·o>R¾ŸâÈ‘#‘šš†ðW^Q[†¯¯/ŒààÞ2tÆÄÀÓÓSïºÐ§œ/¿X€•«Vá¹~ý1sÖl<§pý£¦zR¥S§N°²²B ¸|›kÙ²%\]]Ð ÆÆúï—D""þéééxò©Îèìé… 7é]Ž¢—^z Ï¿0ÞÝ{Àµ£«ÐN¦¦¦Øºe Œ«›;^}m,æÏ›‡ÀÀ<|øÓßyîÐÙÓ …EEøè£ÕÎWEÛö¡H—meïÞ}xøð!&O~ݼ»£›wwŒ=Fï6Ó´Þ°/zO'ª|-•SuÞ›ivvv©™©úkZllíw7Gb ÿ€P½Þ0ñØ ôö¹Ò¼¸ÝŸ"ð¹·õ*§±êæÝ˜4q"Þxãõú§É=z .§¦"¤o_,[¦ú´7RíÖ­[èˆô´T´lÙRû ¨ÆyzuÁî];áååUß¡hÄm…HÙã'=ŽRIœœœ†(PX1(<.P\çÔ–™@*¯>¯¹¸t1¥¾ChV¶lù©¾Ch´¾ÿ~-† ƒzÒŠÛ QãRçÙ—DZ= ”H›OHÔЫKW´oß‘?ó&ܤ·""¢Æ©Î³¯‚’È)­>ˆKKKܸ~­¾Ã éiúÝ'±®q[!""jœê< ”ÊEHˆ\^enOCDDDDDÔ,Õy8lؘº~K""""""ªÀ.8"""""¢f„I Q3Â$ˆˆˆˆˆ¨aHDDDDDÔŒ0 $"""""jF˜5#Ý"bûÖÍ5Q“Àã$"jèŒTÌ3ÍÎÎ.53­ó[‘J%eprr @aÅT ð¸@1O%"""""jF˜5#L‰ˆˆˆˆˆšµþ•JÊê2""""""z|e“€¬b’WL*†1Ѐ9 …¿•Í+–›ÖnìDDDDDD¤ €ÅSQÅT¬ð·D]O å٢夀1%òŠùDDDDDDÔ0”¡< ,PŠG½‚•=‚r@õé •Ý„²ŠW¼X1”ªy-ÕʼR”'‚Ч† §„ªKä*{¥PV&‡DDDDDDÔ0Tæo•Seo`en'të T•JÀ‘E‰ˆˆˆˆˆ’Ê®r2¨'P1T¼FP&DDDDDD IåH •y›â_½z+C9T5²(ÕÊÜM1Tü«±'På{IáQÏ âDDDDDDD ƒ¼Ê$CõÜNm"g¤ã_""""""j8äÚþþ?Ù v&x;&±IEND®B`‚adlint-3.2.14/share/demo/0000755000004100000410000000000012340630463015133 5ustar www-datawww-dataadlint-3.2.14/share/demo/line_comment/0000755000004100000410000000000012340630463017604 5ustar www-datawww-dataadlint-3.2.14/share/demo/line_comment/line_comment.c0000644000004100000410000000025212340630463022420 0ustar www-datawww-data// line comment /* // block comment */ extern int foo(int, /* hoge */ long); // line comment int main(void) { return foo(0, 1L); // line comment } // end of main adlint-3.2.14/share/demo/no_eof_nl/0000755000004100000410000000000012340630463017071 5ustar www-datawww-dataadlint-3.2.14/share/demo/no_eof_nl/no_eof_nl.c0000644000004100000410000000004112340630463021166 0ustar www-datawww-dataint main(void) { return 0; } adlint-3.2.14/share/demo/kandr_fundef/0000755000004100000410000000000012340630463017561 5ustar www-datawww-dataadlint-3.2.14/share/demo/kandr_fundef/kandr_fundef.c0000644000004100000410000000013712340630463022354 0ustar www-datawww-dataextern int foo(x, y) short x; { return x + y; } int main(void) { return foo(0); } adlint-3.2.14/share/demo/overflow/0000755000004100000410000000000012340630463016776 5ustar www-datawww-dataadlint-3.2.14/share/demo/overflow/overflow.c0000644000004100000410000000542212340630463021010 0ustar www-datawww-dataextern int rand(void); static void foo(void) { const int i = rand(); if (i > 127) { const signed char c = (signed char) i; } /* __adlint__inspect(i); // 2 -> 1 */ if (i < -128) { const signed char c = (signed char) i; } /* __adlint__inspect(i); // 4 -> 1 */ if (i > 100) { const signed char c = (signed char) i; } /* __adlint__inspect(i); // 5 -> 1 */ if (i < -100) { const signed char c = (signed char) i; } /* __adlint__inspect(i); // 5 -> 1 */ if (i > -129 && i < 128) { const signed char c = (signed char) i; } } extern void *alloc(void); static void bar(void) { const signed char sc1 = (signed char) 127.5; const signed char sc2 = (signed char) 128.5; const signed char sc3 = (signed char) -128.5; const signed char sc4 = (signed char) -129.5; const unsigned char uc1 = (unsigned char) 255.5; const unsigned char uc2 = (unsigned char) 256.5; const unsigned char uc3 = (unsigned char) 0.5; const unsigned char uc4 = (unsigned char) -1.5; const int si1 = (int) 1.5e9; const int si2 = (int) 1.5e10; const int si3 = (int) -1.5e9; const int si4 = (int) -1.5e10; int *data_ptr = (int *) alloc(); int (*func_ptr)(void) = (int (*)(void)) alloc(); const unsigned char uc5 = (unsigned char) data_ptr; const unsigned char uc6 = (unsigned char) func_ptr; const unsigned short us1 = (unsigned short) data_ptr; const unsigned short us2 = (unsigned short) func_ptr; const unsigned int ui1 = (unsigned int) data_ptr; const unsigned int ui2 = (unsigned int) func_ptr; const unsigned long ul1 = (unsigned long) data_ptr; const unsigned long ul2 = (unsigned long) func_ptr; const unsigned char uc7 = 255; const unsigned char uc8 = 256; const unsigned int ui3 = 4294967295; const unsigned int ui4 = 4294967296; const unsigned char a[] = { 255, 256 }; const signed char sc5 = 127; const signed char sc6 = 128; const int si5 = 2147483647; const int si6 = 2147483648; } extern long baz(void); extern unsigned long qux(void); int main(void) { const long l = baz(); const unsigned long ul = qux(); long r; r = 0x1FFFFFFFL << 1; r = 0x1FFFFFFFL << 2; r = 0x1FFFFFFFL << 3; r = 0x1FFFFFFFL << 4; if (l >= 0x1FFFFFFFL) { r = l << 1; r = l << 2; r = l << 3; r = l << 4; } if (l < 500) { r = l << 1; r = l << 2; } if ((l > 0) && (l < 500)) { r = l << 1; r = l << 2; } r = l << 1; if (ul < 500) { r = ul << 1; r = ul << 2; } if (ul <= 0x1FFFFFFFUL) { r = ul << 1; r = ul << 2; r = ul << 3; r = ul << 4; } return 0; } adlint-3.2.14/share/demo/uninit_vars/0000755000004100000410000000000012340630463017474 5ustar www-datawww-dataadlint-3.2.14/share/demo/uninit_vars/uninit_vars.c0000644000004100000410000000056612340630463022210 0ustar www-datawww-dataextern int rand(void); int foo(void) { int i; const int r = rand(); if (r == 0) { i = 1; } else if (r == 1) { i = 2; } return 3 / i; /* i is not set when rand() returns !(0 or 1) */ } int bar(int n) { int i; int c; for (c = 0; c < n; c++) { i = c; } return 3 / i; /* i is not set when n < 1 */ } adlint-3.2.14/share/demo/funptr_cast/0000755000004100000410000000000012340630463017463 5ustar www-datawww-dataadlint-3.2.14/share/demo/funptr_cast/funptr_cast.c0000644000004100000410000000115112340630463022155 0ustar www-datawww-data#pragma once #pragma twice #pragma omp parallel typedef int (*compatible_funptr)(); typedef int (*incompatible_funptr1)(int); typedef void (*incompatible_funptr2)(); typedef long (*incompatible_funptr3)(char *); int main(void) { compatible_funptr p1 = (compatible_funptr) &main; const int i = 0; incompatible_funptr1 p2 = (incompatible_funptr1) &main; incompatible_funptr2 p3 = (incompatible_funptr2) &main; incompatible_funptr3 p4 = (incompatible_funptr3) main; void (*p5)(int) = (void (*)(int)) &main; void (*p6)() = (void (*)()) i; const int j = (int) &main; return 0; } adlint-3.2.14/share/demo/must_be_null/0000755000004100000410000000000012340630463017623 5ustar www-datawww-dataadlint-3.2.14/share/demo/must_be_null/must_be_null.c0000644000004100000410000000020712340630463022456 0ustar www-datawww-dataint main(void) { int *p = may_return_null(); if (p) { *p = 1; } else { *p = 2; } return 0; } adlint-3.2.14/share/demo/logical_expr/0000755000004100000410000000000012340630463017603 5ustar www-datawww-dataadlint-3.2.14/share/demo/logical_expr/logical_expr.c0000644000004100000410000000356512340630463022430 0ustar www-datawww-dataint foo(const int i1, const int i2, const int i3, const int i4) { int r; r = (i1 + i2) < (i3 == i4); r = i1 - i2 > (i3 != i4); r = (i1 * i2) <= (i3 < i4); r = i1 / i2 >= (i3 > i4); r = (i1 % i2) < (i3 <= i4); r = i1 & i2 > (i3 >= i4); r = (i1 | i2) <= !i3; r = i1 ^ i2 >= !(i3 + i4); r = (i1 << i2) > (!i3 < (i4 + i1)); r = (i3 == i4) < (i1 + i2); r = (i3 != i4) > i1 - i2; r = (i3 < i4) <= (i1 * i2); r = (i3 > i4) >= i1 / i2; r = (i3 <= i4) < (i1 % i2); r = (i3 >= i4) > i1 & i2; r = !i3 <= (i1 | i2); r = !(i3 + i4) >= i1 ^ i2; r = (!i3 < (i4 + i1)) > (i1 << i2); r = (!i3 < (i4 + i1)) < (i3 == i4); r = !(i3 + i4) > (i3 != i4); r = !i3 <= (i3 < i4); r = (i3 >= i4) >= (i3 > i4); r = (i3 <= i4) < (i3 <= i4); r = (i3 > i4) > (i3 >= i4); r = (i3 < i4) <= !i3; r = (i3 != i4) >= !(i3 + i4); r = (i3 == i4) > (!i3 < (i4 + i1)); return r; } int bar(const int i1, const int i2, const int i3, const int i4) { int r; r = (i1 + i2) & (i3 == i4); r = i1 - i2 | (i3 != i4); r = (i1 * i2) & (i3 < i4); r = i1 / i2 | (i3 > i4); r = (i1 % i2) & (i3 <= i4); r = i1 & i2 | (i3 >= i4); r = (i1 | i2) & !i3; r = i1 ^ i2 | !(i3 + i4); r = (i1 << i2) & (!i3 < (i4 + i1)); r = (i3 == i4) | (i1 + i2); r = (i3 != i4) & i1 - i2; r = (i3 < i4) | (i1 * i2); r = (i3 > i4) & i1 / i2; r = (i3 <= i4) | (i1 % i2); r = (i3 >= i4) & i1 & i2; r = !i3 | (i1 | i2); r = !(i3 + i4) & i1 ^ i2; r = (!i3 < (i4 + i1)) | (i1 << i2); r = (!i3 < (i4 + i1)) & (i3 == i4); r = !(i3 + i4) | (i3 != i4); r = !i3 & (i3 < i4); r = (i3 >= i4) | (i3 > i4); r = (i3 <= i4) & (i3 <= i4); r = (i3 > i4) | (i3 >= i4); r = (i3 < i4) & !i3; r = (i3 != i4) | !(i3 + i4); r = (i3 == i4) & (!i3 < (i4 + i1)); return r; } adlint-3.2.14/share/demo/octal_const/0000755000004100000410000000000012340630463017443 5ustar www-datawww-dataadlint-3.2.14/share/demo/octal_const/octal_const.c0000644000004100000410000000043512340630463022121 0ustar www-datawww-data#define ZERO_1 0 #define ZERO_2 (0) #define OCTAL_1 0160 #define OCTAL_2 (0160) int i1 = 0; int i2 = (0); int i3 = ZERO_1; int i4 = ZERO_2; int i5 = 0160; int i6 = (0160); int i7 = OCTAL_1; int i8 = OCTAL_2; char c1 = 'a'; char c2 = '\012'; char *p1 = "foo"; char *p2 = "fo\012o"; adlint-3.2.14/share/demo/bad_return/0000755000004100000410000000000012340630463017260 5ustar www-datawww-dataadlint-3.2.14/share/demo/bad_return/bad_return.c0000644000004100000410000000175312340630463021557 0ustar www-datawww-dataint ansi_int_func_1(const int i) { if (i == 0) { return; } else { return i * 2; } } int kandr_int_func_1(i) const int i; { if (i == 0) { return; } else { return i * 2; } } static void ansi_void_func(const int i) { if (i == 0) { return; } else { return i * 2; } } static void kandr_void_func(i) const int i; { if (i == 0) { return; } else { return i * 2; } } ansi_int_func_2(const i) { if (i == 0) { return; } else { return i * 2; } } kandr_int_func2(i) const i; { if (i == 0) { return; } else { return i * 2; } } const void ansi_qualified_void_func_1(const int i) { if (i == 0) { return; } else { return i * 2; } } volatile void kandr_qualified_void_func_1(i) const int i; { if (i == 0) { return; } else { return i * 2; } } adlint-3.2.14/share/demo/union_type/0000755000004100000410000000000012340630463017324 5ustar www-datawww-dataadlint-3.2.14/share/demo/union_type/union_type.c0000644000004100000410000000063412340630463021664 0ustar www-datawww-datastruct event { int type; union { void *p; int i; } body; }; union foo { int i; unsigned short s; }; union bar { unsigned int a; float b; }; struct baz { union { unsigned long a; double b; } u; unsigned long a; }; int main(void) { struct event e1; const struct event e2 = {0, 0}; union foo u1; e1.body.i = 0; return e2.body.i; } adlint-3.2.14/share/demo/multi_typedef/0000755000004100000410000000000012340630463020005 5ustar www-datawww-dataadlint-3.2.14/share/demo/multi_typedef/multi_typedef_1.h0000644000004100000410000000004712340630463023251 0ustar www-datawww-datatypedef struct { int x, y, z; } Point; adlint-3.2.14/share/demo/multi_typedef/multi_typedef.c0000644000004100000410000000023412340630463023022 0ustar www-datawww-data#include "multi_typedef_1.h" typedef struct { int x, y; } Point; #include "multi_typedef_2.h" int main(void) { Point p = { 1, 2 }; return p.x; } adlint-3.2.14/share/demo/multi_typedef/multi_typedef_2.h0000644000004100000410000000004712340630463023252 0ustar www-datawww-datatypedef struct { int r, g, b; } Point; adlint-3.2.14/share/demo/invalid_call/0000755000004100000410000000000012340630463017554 5ustar www-datawww-dataadlint-3.2.14/share/demo/invalid_call/invalid_call.c0000644000004100000410000000074112340630463022343 0ustar www-datawww-dataint baz(i, a) const int i; const char a[]; { return i; } int main(void) { const short s = 0; const int i = 0; const char a[3]; foo(s); foo(i); foo(s, i); bar(s); bar(i); bar(s, i); baz(s, a); baz(i, a); baz(s, a, i); qux(); return 0; } extern int foo(int); static int bar(const int i) { char str[] = "hello\n"; printf(str); printf("hello world\n"); return i; } static int qux(void) { } adlint-3.2.14/share/demo/integer_promotion/0000755000004100000410000000000012340630463020676 5ustar www-datawww-dataadlint-3.2.14/share/demo/integer_promotion/integer_promotion.c0000644000004100000410000000046512340630463024612 0ustar www-datawww-data/* ADLINT:TUNIT:[-W0118,-W0414,-W0425,-W0947,-W0948] */ #define EOF (-1) extern int getchar(void); extern int printf(const char *, ...); int main(void) { unsigned char c; /* ADLINT::[-W0100] */ while ((c = getchar()) != EOF) { if ((int) c != '\n') printf("%d\n", (int) c); } return 0; } adlint-3.2.14/share/demo/bad_brace/0000755000004100000410000000000012340630463017015 5ustar www-datawww-dataadlint-3.2.14/share/demo/bad_brace/bad_brace.c0000644000004100000410000000031312340630463021040 0ustar www-datawww-dataint main(int argc, char *argv[]) { if (argc < 2) { return 1; } if (argc > 2) { return 2; } if (argc == 2) { return 3; } return 0; } adlint-3.2.14/share/demo/va_funcall/0000755000004100000410000000000012340630463017245 5ustar www-datawww-dataadlint-3.2.14/share/demo/va_funcall/va_funcall.c0000644000004100000410000000062212340630463021523 0ustar www-datawww-datatypedef int FILE; extern FILE *stdout; extern int printf(const char *format, ...); extern int fprintf(FILE* stream, const char *format, ...); extern void foo(int i, long l, double d, ...); int main(void) { printf("%d\n", 10); fprintf(stdout, "%d\n", 10); printf(); fprintf(stdout); foo(); foo(1); foo(1, 2); foo(1, 2, 3.0); foo(1, 2, 3.0, 4); return 0; } adlint-3.2.14/share/demo/useless_header/0000755000004100000410000000000012340630463020126 5ustar www-datawww-dataadlint-3.2.14/share/demo/useless_header/useless_header_3.h0000644000004100000410000000016512340630463023516 0ustar www-datawww-data#if !defined(USELESS_HEADER_3_H) #define USELESS_HEADER_3_H typedef struct { int x; int y; } Point; #endif adlint-3.2.14/share/demo/useless_header/useless_header.c0000644000004100000410000000037212340630463023267 0ustar www-datawww-data#include "useless_header_1.h" #include "useless_header_3.h" #include "useless_header_4.h" /* contents never referred in this file */ int main(void) { const Color color = { 0xFFU, 0x55U, 0xAAU }; return (int) (color.r | color.g | color.b); } adlint-3.2.14/share/demo/useless_header/useless_header_1.h0000644000004100000410000000026512340630463023515 0ustar www-datawww-data#if !defined(USELESS_HEADER_1_H) #define USELESS_HEADER_1_H struct ColorTag { unsigned int r; unsigned int g; unsigned int b; }; #include "useless_header_2.h" #endif adlint-3.2.14/share/demo/useless_header/useless_header_2.h0000644000004100000410000000014412340630463023512 0ustar www-datawww-data#if !defined(USELESS_HEADER_2_H) #define USELESS_HEADER_2_H typedef struct ColorTag Color; #endif adlint-3.2.14/share/demo/useless_header/useless_header_4.h0000644000004100000410000000015712340630463023520 0ustar www-datawww-data#include "useless_header_3.h" /* already included by useless_header.c */ extern const Point *get_point(void); adlint-3.2.14/share/demo/inline_asm/0000755000004100000410000000000012340630463017251 5ustar www-datawww-dataadlint-3.2.14/share/demo/inline_asm/inline_asm.c0000644000004100000410000000155612340630463021542 0ustar www-datawww-datavoid foo(int arg1, int *arg2, int arg3) { asm("movl %ecx, %eax"); __asm__("movl %ecx, (%eax)"); asm { xorl eax, eax } __asm__ volatile ( "int $0x80" : "=a" (r) "+b" (arg1), "+c" (arg2), "+d" (arg3) : "a" (128) : "memory", "cc"); } #define ASM1 asm("movl %ecx, %eax"); #define ASM2 __asm__("movl %ecx, (%eax)"); #define ASM3 asm { xorl eax, eax } #define ASM4(arg1, arg2, arg3) \ __asm__ volatile ( \ "int $0x80" \ : "=a" (r) \ "+b" (arg1), \ "+c" (arg2), \ "+d" (arg3) \ : "a" (128) \ : "memory", "cc"); void bar(int arg1, int *arg2, int arg3) { ASM1; ASM2; ASM3; ASM4(arg1, arg2, arg3); } adlint-3.2.14/share/demo/bad_conv/0000755000004100000410000000000012340630463016706 5ustar www-datawww-dataadlint-3.2.14/share/demo/bad_conv/bad_conv.c0000644000004100000410000000250612340630463020630 0ustar www-datawww-dataextern int printf(const char *, ...); extern int scanf(const char *, ...); int main(void) { int i = 0; int ii = 1; printf(); printf("%509d\n", i); printf("%510d\n", i); printf("%3d %5t\n", i, ii); printf("%3ld %xd\n", i); printf("%3to %fo\n", i, ii, 0); printf("%3tu %fu\n"); printf("%3tx %fx\n", i, ii); printf("%3tX %fX\n", i, ii); printf("%3lf %Lf\n", i, ii); printf("%3le %Le\n", i, ii); printf("%3lE %LE\n", i, ii); printf("%3lg %Lg\n", i, ii); printf("%3lG %LG\n", i, ii); printf("%lc %Lc\n", i, ii); printf("%%lc % %Z\n", i, ii); printf("%ls %Ls\n", i, ii); printf("%ln %Ln\n", i, ii); printf("%p %lp\n", i, ii); printf("%#x %#\n", i, ii); scanf("%3d %5t\n", &i, &ii); scanf("%3ld %xd\n", &i, &ii); scanf("%3to %fo\n", i, &ii); scanf("%3tu %fu\n", &i, ii); scanf("%3tx %fx\n", &i, &ii); scanf("%3tf %lf\n", &i, &ii); scanf("%3lls %fs\n", &i, &ii); scanf("%3p %lp\n", &i, &ii); scanf("%%lc % %Z\n", &i, &ii); scanf("%l[a-z] %ll[a-z]\n", &i, &ii); scanf("%3llc %fc\n", &i, &ii); scanf("%3llz %c\n", &i, &ii); scanf("%[z-a]\n", &i); scanf("%[abcd]\n", &i); scanf("%[abca]\n", &i); return 0; } static void foo(void) { char buf[256]; printf("%s", buf); scanf("%s", buf); } adlint-3.2.14/share/demo/call_by_value/0000755000004100000410000000000012340630463017734 5ustar www-datawww-dataadlint-3.2.14/share/demo/call_by_value/call_by_value.c0000644000004100000410000000055112340630463022702 0ustar www-datawww-datastruct Point { int x; int y; }; typedef struct { int r; int g; int b; } Color; extern void foo(struct Point); extern void bar(int, struct Point); extern void baz(int, Color, int); int main(void) { struct Point point = { 1, 2 }; Color color = { 0, 1, 2 }; foo(point); bar(0, point); baz(0, color, 1); return 0; } adlint-3.2.14/share/demo/ambig_operator/0000755000004100000410000000000012340630463020125 5ustar www-datawww-dataadlint-3.2.14/share/demo/ambig_operator/ambig_operator.c0000644000004100000410000001321512340630463023265 0ustar www-datawww-dataextern int foo(int); void bar1(void) { const int i = 1; const int j = 2; const int k = 3; const int * const p = &i; int r; r = i + j % k; r = i % j % k; r = i % j * k; r = i * j % k; r = foo(i + j % k); r = foo(i + j % foo(i + j % k)); r = i << j >> k; r = i < j > k; r = i == j != k; r = i + j * k; r = i / j - k; r = i ? j : k; r = -i ? j : k; r = i ? -j : k; r = i > j ? j : k; r = i + j ? j : k; r = i ? j + k : k; r = i ? j : j + k; r = i + j >> k; r = i < j + k; r = i & j != k; i && -j; r = i && ~j; r = !i || j; r = *p || j; r = i && (unsigned int) j; r = i && j && k; r = i || j || k; r = i || j && i; r = i > j && k; r = i && j != k; r = i ? j : k ? i : j; r = i ? j ? k : j : i; r = i <= j <= k; r = i == j == k; r = i << j << k; } void bar2(void) { const int i = 1; const int j = 2; const int k = 3; const int * const p = &i; int r; r = i + (j % k); r = (i % j) % k; r = (i % j) * k; r = (i * j) % k; r = foo(i + (j % k)); r = foo(i + (j % foo(i + (j % k)))); r = (i << j) >> k; r = (i < j) > k; r = (i == j) != k; r = i + (j * k); r = (i / j) - k; r = (i > j) ? j : k; r = (i + j) ? j : k; r = i ? (j + k) : k; r = i ? j : (j + k); r = (i + j) >> k; r = i < (j + k); r = i & (j != k); r = i && (~j); r = (!i) || j; r = (*p) || j; r = i && ((unsigned int) j); r = (i || j) && i; r = (i > j) && k; r = i && (j != k); r = i ? j : (k ? i : j); r = i ? (j ? k : j) : i; r = (i <= j) <= k; r = (i == j) == k; r = (i << j) << k; } void baz1(void) { const int i = 1; const int j = 2; const int k = 3; const int * const p = &i; { const int r = i + j % k; } { const int r = i % j % k; } { const int r = i % j * k; } { const int r = i * j % k; } { const int r = foo(i + j % k); } { const int r = foo(i + j % foo(i + j % k)); } { const int r = i << j >> k; } { const int r = i < j > k; } { const int r = i == j != k; } { const int r = i + j * k; } { const int r = i / j - k; } { const int r = i ? j : k; } { const int r = -i ? j : k; } { const int r = i ? -j : k; } { const int r = i > j ? j : k; } { const int r = i + j ? j : k; } { const int r = i ? j + k : k; } { const int r = i ? j : j + k; } { const int r = i + j >> k; } { const int r = i < j + k; } { const int r = i & j != k; } { const int r = i && ~j; } { const int r = !i || j; } { const int r = *p || j; } { const int r = i && (unsigned int) j; } { const int r = i && j && k; } { const int r = i || j || k; } { const int r = i || j && i; } { const int r = i > j && k; } { const int r = i && j != k; } { const int r = i ? j : k ? i : j; } { const int r = i ? j ? k : j : i; } { const int r = i <= j <= k; } { const int r = i == j == k; } { const int r = i << j << k; } } void baz2(void) { const int i = 1; const int j = 2; const int k = 3; const int * const p = &i; { const int r = i + (j % k); } { const int r = (i % j) % k; } { const int r = (i % j) * k; } { const int r = (i * j) % k; } { const int r = foo(i + (j % k)); } { const int r = foo(i + (j % foo(i + (j % k)))); } { const int r = (i << j) >> k; } { const int r = (i < j) > k; } { const int r = (i == j) != k; } { const int r = i + (j * k); } { const int r = (i / j) - k; } { const int r = (i > j) ? j : k; } { const int r = (i + j) ? j : k; } { const int r = i ? (j + k) : k; } { const int r = i ? j : (j + k); } { const int r = (i + j) >> k; } { const int r = i < (j + k); } { const int r = i & (j != k); } { const int r = i && (~j); } { const int r = (!i) || j; } { const int r = (*p) || j; } { const int r = i && ((unsigned int) j); } { const int r = (i || j) && i; } { const int r = (i > j) && k; } { const int r = i && (j != k); } { const int r = i ? j : (k ? i : j); } { const int r = i ? (j ? k : j) : i; } { const int r = (i <= j) <= k; } { const int r = (i == j) == k; } { const int r = (i << j) << k; } } void qux1(void) { const int i = 1; const int j = 2; const int a[5] = {0}; const struct { int m; } s = {0}, * const p = &s; int r; r = a[i] && j; r = foo(i) || j; r = p->m && i; r = s.m || i; } void qux2(void) { const int i = 1; const int j = 2; const int a[5] = {0}; const struct { int m; } s = {0}, * const p = &s; int r; r = (a[i]) && j; r = (foo(i)) || j; r = (p->m) && i; r = (s.m) || i; } void quux1(void) { const int i = 1; const int j = 2; const int a[5] = {0}; const struct { int m; } s = {0}, * const p = &s; { const int r = a[i] && j; } { const int r = foo(i) || j; } { const int r = p->m && i; } { const int r = s.m || i; } } void quux2(void) { const int i = 1; const int j = 2; const int a[5] = {0}; const struct { int m; } s = {0}, * const p = &s; { const int r = (a[i]) && j; } { const int r = (foo(i)) || j; } { const int r = (p->m) && i; } { const int r = (s.m) || i; } } void foobar1(void) { const int i = 1; const int j = 2; const int k = 3; int r; r = i * j / k; r = i / j * k; r = i + j - k; r = i - j + k; } void foobar2(void) { const int i = 1; const int j = 2; const int k = 3; int r; r = (i * j) / k; r = (i / j) * k; r = (i + j) - k; r = (i - j) + k; } adlint-3.2.14/share/demo/unmatch_paren_macro/0000755000004100000410000000000012340630463021140 5ustar www-datawww-dataadlint-3.2.14/share/demo/unmatch_paren_macro/unmatch_paren_macro.c0000644000004100000410000000037312340630463025314 0ustar www-datawww-data#define OM_1 ((x) + (x) #define OM_2 { int x; foo(&x); bar(x); #define OM_3 (buf[x]1]) #define FM_1(x) ((x) + (x) #define FM_2(x) { int x; foo(&x); bar(x); #define FM_3(x) (buf[x]1]) #define VALID_OM ((x) + (x)) #define VALID_FM(x) ((x) + (x)) adlint-3.2.14/share/demo/must_be_null_arith/0000755000004100000410000000000012340630463021012 5ustar www-datawww-dataadlint-3.2.14/share/demo/must_be_null_arith/must_be_null_arith.c0000644000004100000410000000023212340630463025032 0ustar www-datawww-dataint main(void) { int *p = may_return_null(); if (p) { *p = 1; } else { p = p + 1; *p = 0; } return 0; } adlint-3.2.14/share/demo/tricky_incdec/0000755000004100000410000000000012340630463017745 5ustar www-datawww-dataadlint-3.2.14/share/demo/tricky_incdec/tricky_incdec.c0000644000004100000410000000015712340630463022726 0ustar www-datawww-dataextern int foo(int); void bar(int n, int *p) { int r; ++n; (*p)--; r = ++n; foo(r++); } adlint-3.2.14/share/demo/direct_recur/0000755000004100000410000000000012340630463017605 5ustar www-datawww-dataadlint-3.2.14/share/demo/direct_recur/direct_recur.c0000644000004100000410000000027012340630463022422 0ustar www-datawww-datastatic int fact(const int n) { return (n == 1) ? 1 : (n * fact(n - 1)); } extern int printf(); int main(void) { const int i = fact(5); printf("%d", i); return 0; } adlint-3.2.14/share/demo/bad_comment/0000755000004100000410000000000012340630463017403 5ustar www-datawww-dataadlint-3.2.14/share/demo/bad_comment/bad_comment.c0000644000004100000410000000010012340630463022006 0ustar www-datawww-data/* outer comment /* inner comment */ // C++ style line comment adlint-3.2.14/share/demo/multi_def/0000755000004100000410000000000012340630463017103 5ustar www-datawww-dataadlint-3.2.14/share/demo/multi_def/multi_def_2.c0000644000004100000410000000033712340630463021443 0ustar www-datawww-data#include "multi_def_2.h" int g1; struct Point g2; int foo(void) { return 0; } struct Point *bar(int i) { static struct Point p; p.x = i; p.y = i + 1; return &p; } int baz(void) { return foo(); } adlint-3.2.14/share/demo/multi_def/multi_def_3.c0000644000004100000410000000010412340630463021434 0ustar www-datawww-data#include "multi_def_1.h" int main(void) { return bar(g1)->y; } adlint-3.2.14/share/demo/multi_def/multi_def_2.h0000644000004100000410000000020112340630463021436 0ustar www-datawww-dataextern int g1; extern struct Point { int x, y; } g2; extern int foo(void); extern struct Point *bar(int); extern int baz(void); adlint-3.2.14/share/demo/multi_def/multi_def_1.c0000644000004100000410000000047312340630463021443 0ustar www-datawww-data#include "multi_def_1.h" int g1; struct Point g2; int foo(void) { return 0; } struct Point *bar(int i) { static struct Point p; p.x = i; p.y = i + 1; return &p; } int baz(void) { return foo(); } int g1 = 0; int foo(void) { return 1; } int foo = 1; int g1(void) { return 0; } adlint-3.2.14/share/demo/multi_def/multi_def_1.h0000644000004100000410000000020112340630463021435 0ustar www-datawww-dataextern int g1; extern struct Point { int x, y; } g2; extern int foo(void); extern struct Point *bar(int); extern int baz(void); adlint-3.2.14/share/demo/bad_enum/0000755000004100000410000000000012340630463016705 5ustar www-datawww-dataadlint-3.2.14/share/demo/bad_enum/bad_enum.c0000644000004100000410000000234712340630463020631 0ustar www-datawww-dataenum Foo { FOO_A, FOO_B, FOO_C }; enum Bar { BAR_A = 1, BAR_B, BAR_C }; enum Baz { BAZ_A = 2, BAZ_B = 4, BAZ_C = 8 }; extern void func1(enum Foo f); int func3(int i) { const enum Foo foo = FOO_A; foo1(i); foo = i; foo = FOO_A + i; switch (i) { case FOO_A: return foo; case FOO_B: return FOO_B; case FOO_C: return i; default: return (int) BAR_A; } } enum Foo func2(const enum Foo param, const int i) { enum Foo foo = BAR_A; enum Bar bar = BAZ_A; enum Baz baz = FOO_A; foo = FOO_A; bar = BAR_A; baz = BAZ_A; func3(foo); func3(BAR_A); func3((int) BAZ_C); switch (param) { case FOO_A: foo = BAR_A; func1(BAR_A); func1(1); func1(baz); foo = 1; foo = bar; return BAR_B; case BAR_B: case 5: foo = BAZ_C; func1(BAZ_C); func1(0x2); baz = BAZ_C; func1(baz); foo = 0x2; foo = baz; return BAZ_C; case 6: return FOO_A + 10; case 7: return FOO_A + i; case 8: return bar; case 9: baz = BAZ_C; return baz; case 10: return i; } return FOO_C; } adlint-3.2.14/share/demo/cross_ref/0000755000004100000410000000000012340630463017120 5ustar www-datawww-dataadlint-3.2.14/share/demo/cross_ref/cross_ref.c0000644000004100000410000000032312340630463021247 0ustar www-datawww-dataextern int g; void foo(void) { int * const p = &g; *p = 0; } typedef struct { int i; } type; type buf[3]; type *p = &buf[1]; void bar(void) { type t = *p; (*p).i = 1; p->i += p->i; } adlint-3.2.14/share/demo/bad_macro/0000755000004100000410000000000012340630463017042 5ustar www-datawww-dataadlint-3.2.14/share/demo/bad_macro/bad_macro.c0000644000004100000410000000421412340630463021116 0ustar www-datawww-data#define FUNC1(x, y) x + y #define FUNC2(x) (x * x) #define FUNC3(x, y) x##y #define FUNC4(x) #x #define MANY_PARAMS1(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,bb,cc,dd,ee) 1 #define MANY_PARAMS2(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,bb,cc,dd,ee,ff) 1 int main(void) { const int i = FUNC1(1, 2); const int j = FUNC2(2); const int k = FUNC3(1, 2); const char * const str = FUNC4(foo); const int l = MANY_PARAMS1(1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1); return MANY_PARAMS2(1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1); } static int foo(void) { #define FOO (1) const int i = FOO; #undef FOO return i; } #define MACRO1 { 0, 1, i } #define MACRO2(x) { 0, x, x + 1 } #define MACRO3(a, n) { \ int j; \ for (j = 0; j < n; j++) { \ a[j] = j; \ } \ } #define MACRO4(foo) \ do { \ foo(0); \ } while (0) #define MACRO5 static const #define MACRO6 if (hoge) perror("hoge"); #define MACRO7 { \ for (int i = 0; i < 10; i++) { \ puts("hello world\n"); \ } \ } static void bar(int i) { int a1[] = MACRO1; int a2[] = MACRO2(3); MACRO3; if (i == 0) MACRO4(bar); { MACRO5 int hoge; MACRO6 } MACRO7; } #define ADD + #define SUB - #define MUL * #define DIV / #define MOD % #define WHILE while #define DO do #define FOR for #define IF if #define ELSE else #define SWITCH switch #define CASE case #define DEFAULT default #define GOTO goto #define RETURN return #define BREAK break #define CONTINUE continue #undef assert #define defined !defined #undef defined #undef __STDC__ #define __FILE__ "foo.c" adlint-3.2.14/share/demo/may_be_null_arith/0000755000004100000410000000000012340630463020610 5ustar www-datawww-dataadlint-3.2.14/share/demo/may_be_null_arith/may_be_null_arith.c0000644000004100000410000000022612340630463024431 0ustar www-datawww-dataint main(void) { int c; int *p = NULL; if (rand() == 1) { p = &c; } *p = 0; p = p + 1; *p = 2; return 0; } adlint-3.2.14/share/demo/useless_exp_funs/0000755000004100000410000000000012340630463020525 5ustar www-datawww-dataadlint-3.2.14/share/demo/useless_exp_funs/useless_exp_funs_2.c0000644000004100000410000000010612340630463024501 0ustar www-datawww-data#include "useless_exp_funs_1.h" int main(void) { return foo(); } adlint-3.2.14/share/demo/useless_exp_funs/useless_exp_funs_1.c0000644000004100000410000000017212340630463024503 0ustar www-datawww-dataint bar(int i) { return i + 1; } int baz(int i) { return i * 2; } int foo(void) { return bar(1) + baz(2); } adlint-3.2.14/share/demo/useless_exp_funs/useless_exp_funs_1.h0000644000004100000410000000002612340630463024506 0ustar www-datawww-dataextern int foo(void); adlint-3.2.14/share/demo/bad_init/0000755000004100000410000000000012340630463016704 5ustar www-datawww-dataadlint-3.2.14/share/demo/bad_init/bad_init.c0000644000004100000410000000157012340630463020624 0ustar www-datawww-datastruct Foo { int i; int j; }; union Bar { int i; long j; }; static void foo(void) { const struct Foo foo1 = { 1, 2 }; const struct Foo foo2 = 1; const union Bar bar1 = { 1 }; const union Bar bar2 = 1; } struct Baz { int i; int a[3]; }; struct Qux { int i; union Bar u; }; static void bar(void) { const struct Foo foo1[2] = { { 1, 2 }, { 3, 4 } }; const struct Foo foo2[2] = { 1, 2, 3, 4 }; const union Bar bar1 = { 1 }; const union Bar bar2 = bar1; const union Bar bar3 = foo1[0]; const struct Baz baz1 = { 1, { 2, 3 } }; const struct Baz baz2 = { 1, 2, 3 }; const struct Baz baz3 = baz1; const struct Baz baz4 = foo1[0]; const struct Qux qux1 = { 1, { 2 } }; const struct Qux qux2 = { 1, 2 }; const int a1[2][2] = { { 1, 2 }, { 3, 4 } }; const int a2[2][2] = { 1, 2, 3, 4 }; } adlint-3.2.14/share/demo/multi_break/0000755000004100000410000000000012340630463017431 5ustar www-datawww-dataadlint-3.2.14/share/demo/multi_break/multi_break.c0000644000004100000410000000100412340630463022066 0ustar www-datawww-dataint main(void) { for (int i = 0; i < 10; i++) { if (i == 1) { break; } switch (i) { case 5: break; default: break; } if (i == 6) { break; } } while (1) { if (rand() == 1) { break; } do { if (rand() == 2) { break; } } while (1); if (rand() == 3) { break; } } return 0; } adlint-3.2.14/share/demo/shift_expr/0000755000004100000410000000000012340630463017306 5ustar www-datawww-dataadlint-3.2.14/share/demo/shift_expr/shift_expr.c0000644000004100000410000000026612340630463021631 0ustar www-datawww-dataint main(void) { const int i = -1; int j; const unsigned int ui = 1; j = i >> 3; j = (int) (ui >> 3); j = i << 3; j = (int) (ui << 3); return 0; } adlint-3.2.14/share/demo/dos_source/0000755000004100000410000000000012340630463017300 5ustar www-datawww-dataadlint-3.2.14/share/demo/dos_source/dos_source.c0000644000004100000410000000014512340630463021611 0ustar www-datawww-dataextern int puts(const char *); int main(void) { puts("hello world.\n"); return 0; } adlint-3.2.14/share/demo/no_void_arg/0000755000004100000410000000000012340630463017421 5ustar www-datawww-dataadlint-3.2.14/share/demo/no_void_arg/no_void_arg.c0000644000004100000410000000015012340630463022047 0ustar www-datawww-dataint foo() { return 0; } int (*bar())() { return 0; } int baz(int (*p)()) { return p(0); } adlint-3.2.14/share/demo/id_hiding/0000755000004100000410000000000012340630463017051 5ustar www-datawww-dataadlint-3.2.14/share/demo/id_hiding/id_hiding.c0000644000004100000410000000032112340630463021127 0ustar www-datawww-dataextern int i; static int foo(const int i) { return i; } static int bar(void) { const int i = foo(0); return i; } static int baz(void) { typedef int foo; const foo f = 0; return f; } adlint-3.2.14/share/demo/bad_bitfields/0000755000004100000410000000000012340630463017706 5ustar www-datawww-dataadlint-3.2.14/share/demo/bad_bitfields/bad_bitfields.c0000644000004100000410000000300012340630463022616 0ustar www-datawww-datastruct foo { signed int b1:1; signed int :1; int b2:1; int :1; }; struct bar { int a:5; unsigned int b:4; signed int c:3; int d:4; struct baz { int a:5; unsigned int b:4; signed int c:3; int d:4; } baz; }; enum color { R = 0, G, B }; struct hoge { signed int a:3; unsigned int b:4; unsigned char c:6; unsigned short d:5; enum color e:2; }; #define NBITS 3 enum { FOUR = 4 }; struct hage { unsigned int a:1; unsigned int b:2; unsigned int c:NBITS; unsigned int d:FOUR; struct hage *p; }; void foo() { struct foo f; f.b1 = 0; f.b1 = -1; f.b1 = 1; } void bar() { const struct foo f; const int i = sizeof(f.b1); } void baz() { const int i = { 0 }; const int a1[] = { { 0, 0, 0 } }; const int a2[][3] = { { 0, 0, 0 } }; const struct bar b1 = { 0, 0, 0, 0, { 0, 0, 0, 0 } }; const struct bar b2 = { { 0, 0, 0, 0, { 0, 0, 0, 0 } } }; const struct bar b3[] = { { 0, 0, 0, 0, { 0, 0, 0, 0 } } }; const int a3[4] = { 0 }; const int a4[4] = { 1, 2, 3, 4 }; const int a5[4] = { 1, 2, 3 }; const int aa1[3][3] = { { 0 }, { 1, 2, 3 }, { 4, 5, 6 } }; const int aa2[3][3] = { { 1 }, { 1, 2, 3 }, { 4, 5, 6 } }; const int aa3[3][3] = { { 0, 1 }, { 1, 2, 3 }, { 4, 5, 6 } }; const int aa4[3][3] = { { 0 + 1, 2 }, { 1, 2, 3 }, { 4, 5, 6 } }; const int aa5[3][3] = { { 1, 2, 3 } }; const int aa6[3][3] = { { { 0 } }, { 1, 2, 3 }, { 4, 5, 6 } }; } adlint-3.2.14/share/demo/static_vars/0000755000004100000410000000000012340630463017455 5ustar www-datawww-dataadlint-3.2.14/share/demo/static_vars/static_vars.c0000644000004100000410000000072112340630463022143 0ustar www-datawww-datastatic int i = 0; static int ii = 0; static int iii = 0; void foo(void) { i = 1; } int bar(void) { return i; } static void baz(void) { ii = 1; } static int qux(void) { static int ii = 0; return ii; } static int a[]; static int a[3]; static struct Foo s1; static struct Foo s2[]; static struct Foo s3[3]; static union Bar u1; static union Bar u2[]; static union Bar u3[3]; static enum Baz e1; static enum Baz e2[]; static enum Baz e3[3]; adlint-3.2.14/share/demo/intro_demo/0000755000004100000410000000000012340630463017272 5ustar www-datawww-dataadlint-3.2.14/share/demo/intro_demo/intro_demo.h0000644000004100000410000000032212340630463021577 0ustar www-datawww-data#if !defined(INTRO_DEMO_H) #define INTRO_DEMO_H #define NULL (0) extern int rand(void); extern void exit(int); extern void abort(void); extern void *malloc(int); extern int printf(const char *, ...); #endif adlint-3.2.14/share/demo/intro_demo/useless_header.h0000644000004100000410000000007112340630463022434 0ustar www-datawww-dataextern struct { int i; int j; int k; } hoge; adlint-3.2.14/share/demo/intro_demo/intro_demo.c0000644000004100000410000000371512340630463021603 0ustar www-datawww-data#include "intro_demo.h" #include "useless_header.h" static int foo(void) { int i = rand(); if (i < 0) { unsigned * const p = (unsigned *) malloc(sizeof(unsigned)); unsigned int ui; if (p != NULL) { *p = 0U; } /* No malloc() error handling in the else branch */ ui = *p; /* Dereferencing a NULL pointer when malloc() failed */ switch (i) { case -5: i = -1; ui = 0U; break; /* Control never reaches to this "case 10:" clause because "i" is less than 0 at this point */ case 10: ui = 100U; break; default: ui = 0U; break; } /* Control never reaches to this if-body-statement because * usual-arithmetic-conversion makes "i < ui" into * "(unsigned int) i < ui" and then the value of "i" which is less than * 0 will be converted into a new value which is greater than 0 because * of the wrap-around. * So, the expression ("a value greater than 0" < 0) makes always false */ if (i < ui) { /* exit() standard function terminates this execution path */ exit(0); } } else { /* "i" is greater than or equal to 0 at this point */ unsigned j = 10 / i; if (i < 1) { j = 3 / i; /* "i" is equal to 0 at this point */ } if (i <= 0x0FFFFFFF) { i <<= 3; } else { i = i << 1; /* "i" is greater than or equal to 0x10000000 */ } /* abort() standard function terminates this execution path */ abort(); } /* Control never reaches to this if-body-statement because "i" is less than 0 and not equal to -5 at this point */ if (i == -5) { abort(); } return i; } static inline int bar(void) { return 0; } int main(void) { return foo(); } adlint-3.2.14/share/demo/reserved_ident/0000755000004100000410000000000012340630463020135 5ustar www-datawww-dataadlint-3.2.14/share/demo/reserved_ident/reserved_ident.c0000644000004100000410000000330412340630463023303 0ustar www-datawww-datavoid __fundecl(void); extern void _FUNDECL(void); static void _fundecl(void); extern int __vardecl; extern int _VARDECL; static int _vardecl; int __vardef = 0; extern int _VARDEF = 0; static int _vardef = 0; int __ansi_fundef(const int __param, const int _PARAM, const int _param) { return __param + _PARAM + _param; } int _ANSI_FUNDEF(const int __param, const int _PARAM, const int _param) { return __param + _PARAM + _param; } static _ansi_fundef(const int __param, const int _PARAM, const int _param) { return __param + _PARAM + _param; } int __kandr_fundef(__param, _PARAM, _param) const int __param; const int _PARAM; const int _param; { return __param + _PARAM + _param; } int _KANDR_FUNDEF(__param, _PARAM, _param) const int __param; const int _PARAM; const int _param; { return __param + _PARAM + _param; } static int _kandr_fundef(__param, _PARAM, _param) const int __param; const int _PARAM; const int _param; { return __param + _PARAM + _param; } typedef int __typedef; typedef int _TYPEDEF; typedef int _typedef; struct __struct_tag { int i; }; struct _STRUCT_TAG { int i; }; struct _struct_tag { int i; }; union __union_tag { int i; }; union _UNION_TAG { int i; }; union _union_tag { int i; }; enum __enum_tag { __enum, _ENUM, _enum }; enum _ENUM_TAG { __enum, _ENUM, _enum }; enum _enum_tag { __enum, _ENUM, _enum }; typedef struct __struct_tag_ { int i; } __struct_tag_t; typedef struct _STRUCT_TAG_ { int i; } _STRUCT_TAG_t; typedef struct _struct_tag_ { int i; } _struct_tag_t; typedef struct { int i; } __unnamed_t; typedef struct { int i; } _UNNAMED_T; typedef struct { int i; } _unnamed_t; adlint-3.2.14/share/demo/implicit_conv/0000755000004100000410000000000012340630463017772 5ustar www-datawww-dataadlint-3.2.14/share/demo/implicit_conv/implicit_conv.c0000644000004100000410000000207612340630463023002 0ustar www-datawww-datavoid foo(const unsigned int ui1, const unsigned int ui2, const unsigned char uc1, const unsigned char uc2) { unsigned long ul; ul = ~ui1; ul = ui1 * ui2; ul = ui1 / ui2; ul = ui1 % ui2; ul = ui1 + ui2; ul = ui1 - ui2; ul = ui1 & uib; ul = ui1 | uib; ul = ui1 ^ ui2; ul = ui1 << 1; ul = ui1 >> 1; ul = ~uc1; ul = uc1 * uc2; ul = uc1 / uc2; ul = uc1 % uc2; ul = uc1 + uc2; ul = uc1 - uc2; ul = uc1 & ucb; ul = uc1 | ucb; ul = uc1 ^ uc2; ul = uc1 << 1; ul = uc1 >> 1; ul = (unsigned long) (~uc1); ul = (unsigned long) ~uc1; ul = (unsigned long) (uc1 * uc2); ul = (unsigned long) (uc1 / uc2); ul = (unsigned long) (uc1 % uc2); ul = (unsigned long) (uc1 + uc2); ul = (unsigned long) (uc1 - uc2); ul = (unsigned long) (uc1 & uc2); ul = (unsigned long) (uc1 | uc2); ul = (unsigned long) (uc1 ^ uc2); ul = (unsigned long) (uc1 << 1); ul = (unsigned long) (uc1 >> 1); } void bar(void) { unsigned char uc = -1; uc = -2; } adlint-3.2.14/share/demo/mmapped_io/0000755000004100000410000000000012340630463017245 5ustar www-datawww-dataadlint-3.2.14/share/demo/mmapped_io/mmapped_io.c0000644000004100000410000000073512340630463021530 0ustar www-datawww-dataextern volatile unsigned char *vptr; extern unsigned char *ptr; int main(void) { unsigned short us; unsigned long ul; unsigned char *puc; vptr = (volatile unsigned char *) 0x1111U; ptr = (unsigned char *) 0x1111U; us = (unsigned short) vptr; ul = (unsigned long) vptr; us = (unsigned short) ptr; ul = (unsigned long) ptr; puc = (unsigned char *) 0x1111U; us = (unsigned short) puc; ul = (unsigned long) puc; return 0; } adlint-3.2.14/share/demo/must_be_false/0000755000004100000410000000000012340630463017743 5ustar www-datawww-dataadlint-3.2.14/share/demo/must_be_false/must_be_false.c0000644000004100000410000000143412340630463022721 0ustar www-datawww-dataint main(void) { const int i = rand(); const unsigned short us = (unsigned short) rand(); if (i < 0) { if (i > us) { return 0; } } else { for (int j = -1; j > i; j++) { puts("hoge\n"); } while (i == -5) { return 1; } do { puts("hoge\n"); } while (i == -10); } #define A (1) #define B (1) if (A - B) { puts("hoge\n"); } if (A - B) { puts("hoge\n"); } else { puts("hoge\n"); } while (A - B) { puts("hoge\n"); } { int k; for (k = 0; A - B; k++) { puts("hoge\n"); } } for (int k = 0; A - B; k++) { puts("hoge\n"); } return 0; } adlint-3.2.14/share/demo/press_release/0000755000004100000410000000000012340630463017767 5ustar www-datawww-dataadlint-3.2.14/share/demo/press_release/press_release.c0000644000004100000410000000110212340630463022761 0ustar www-datawww-data#include #include static int CalledRecursively(void); static int Function(void) { return CalledRecursively(); } static void OutputByParam(int **param) { int result = Function() + rand(); *param = &result; } static int CalledRecursively(void) { int *result; OutputByParam(&result); return *result; } int main(int argc, char *argv[]) { int i; int *ptr = NULL; if (argc < 2) { return *ptr; } if (rand() == 1) { ptr = &i; *ptr = CalledRecursively(); } *ptr = 2; return 0; } adlint-3.2.14/share/demo/long_sym/0000755000004100000410000000000012340630463016762 5ustar www-datawww-dataadlint-3.2.14/share/demo/long_sym/long_sym.c0000644000004100000410000000501312340630463020754 0ustar www-datawww-dataextern int verylonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglongsymbol1_decl; extern int verylonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglongsymbol2_decl; extern int verylonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglongsymbol1_def = 0; extern int verylonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglongsymbol2_def = 0; adlint-3.2.14/share/demo/typedef_each_src/0000755000004100000410000000000012340630463020422 5ustar www-datawww-dataadlint-3.2.14/share/demo/typedef_each_src/typedef_each_src.c0000644000004100000410000000015212340630463024053 0ustar www-datawww-datatypedef int integer; integer ei1 = 0; static integer si = 0; void foo(void) { extern integer ei2; } adlint-3.2.14/share/demo/null_stmt/0000755000004100000410000000000012340630463017154 5ustar www-datawww-dataadlint-3.2.14/share/demo/null_stmt/null_stmt.c0000644000004100000410000000030512340630463021337 0ustar www-datawww-datastatic int foo(const int n) { int i; int j = 0; for (i = 0; i < n; i++); { j += n; } return j; } static int bar(const int n) { int i = n; return i++;; } adlint-3.2.14/share/demo/bad_indent/0000755000004100000410000000000012340630463017222 5ustar www-datawww-dataadlint-3.2.14/share/demo/bad_indent/bad_indent.c0000644000004100000410000000143312340630463021456 0ustar www-datawww-datatypedef enum { R = 1, G, B } color_t; color_t c; int main(int argc, char *argv[]) { if (argc < 2) exit(1); for (int i = 0; i < argc; ++i) puts(argv[i]); while (1) puts("hello world\n"); if (c == 3) for (int i = 0; i < argc; ++i) puts(argv[i]); if (argc < 3) exit(1); else do puts("hoge\n"); while (rand()); if (argc < 4) exit(1); else if (rand()) { puts("hogehoge\n"); } else if (rand()) puts("hogehogehoge\n"); switch (c) { case R: puts("kldfaj;\n"); puts("kldfaj;\n"); break; case G: case B: puts("kldfaj;\n"); puts("kldfaj;\n"); default: puts("kldfaj;\n"); } return 0; } adlint-3.2.14/share/demo/wrap_around/0000755000004100000410000000000012340630463017454 5ustar www-datawww-dataadlint-3.2.14/share/demo/wrap_around/wrap_around.c0000644000004100000410000000411712340630463022144 0ustar www-datawww-datastatic void foo(const int i, const unsigned int ui) { { int r; if (i > 2000000000) { r = i * 5; r = i + i; } } { unsigned int r; if (ui > 3000000000U) { r = ui * 5U; r = ui + ui; } else { r = ui - 4000000000U; } } } static void bar(const int i, const unsigned int ui) { { int r; if (i > 1000) { r = i * 5; r = i + i; } } { unsigned int r; if (ui > 1000U) { r = ui * 5U; r = ui + ui; } else { r = ui - 1000U; } } } static void baz(const signed char c, const unsigned char uc) { { signed char r; if (c > 125) { r = c * 5; r = c + c; } } { unsigned char r; if (uc > 128U) { r = uc * 5U; r = uc + uc; } else { r = uc - 128U; } } } static void qux(const unsigned int ui) { { const unsigned int ui1 = 3U - 1U; const unsigned int ui2 = 3U - 3U; const unsigned int ui3 = 3U - 5U; unsigned int ui4; ui4 = 3U - 1U; ui4 = 3U - 3U; ui4 = 3U - 5U; ui4 = ui - 1U; } { const unsigned int ui1 = 4294967294U + 1U; const unsigned int ui2 = 4294967295U + 1U; unsigned int ui3; ui3 = 4294967294U + 1U; ui3 = 4294967295U + 1U; ui3 = ui + 1U; } { const unsigned int ui1 = 2000000000U * 2U; const unsigned int ui2 = 3000000000U * 2U; unsigned int ui3; ui3 = 2000000000U * 2U; ui3 = 3000000000U * 2U; ui3 = ui * 2U; } } static void quux(const int i) { unsigned int ui; if (i < 10) { ui1 = (unsigned int) (i - 5); ui1 = (unsigned int) (i - 9); ui1 = (unsigned int) (i - 10); } if (i >= 0 && i < 10) { ui1 = (unsigned int) (i - 5); ui1 = (unsigned int) (i - 9); ui1 = (unsigned int) (i - 10); } } adlint-3.2.14/share/demo/malloc_or_die/0000755000004100000410000000000012340630463017723 5ustar www-datawww-dataadlint-3.2.14/share/demo/malloc_or_die/malloc_or_die.c0000644000004100000410000000112412340630463022655 0ustar www-datawww-dataextern void *malloc(int); int main(void) { char *p; p = (char *) malloc(10); if (p == NULL) { return 2; } *p = (char) 1; p = (char *) malloc(10); if (p == NULL) { return 2; } else { *p = (char) 1; } p = (char *) malloc(10); if (p == NULL) { return 2; } else if (p == NULL) { *p = (char) 0; } else { *p = (char) 1; } *p = (char) 3; p = (char *) malloc(10); switch (p) { case NULL: return 4; default: *p = (char) 5; } return *p; } adlint-3.2.14/share/demo/must_be_true/0000755000004100000410000000000012340630463017630 5ustar www-datawww-dataadlint-3.2.14/share/demo/must_be_true/must_be_true.c0000644000004100000410000000053012340630463022467 0ustar www-datawww-dataint main(void) { const int i = rand(); const unsigned short us = (unsigned short) rand(); if (i < 0) { if (i < us) { return 0; } } else { for (int j = 0; j < i; j++) { puts("hoge\n"); } while (i != -5) { return 1; } } return 0; } adlint-3.2.14/share/demo/incomplete_type/0000755000004100000410000000000012340630463020333 5ustar www-datawww-dataadlint-3.2.14/share/demo/incomplete_type/incomplete_type.c0000644000004100000410000000155612340630463023706 0ustar www-datawww-dataextern struct Foo ga1[3]; extern union Bar ga2[3]; extern void ga3[3]; extern int ga4[3][]; extern int ga5[][3]; extern int ga6[3](); extern int ga7[3](int); extern int (*ga8[3])(long); static struct Foo a1[3]; static union Bar a2[3]; static void a3[3]; static int a4[3][]; static int a5[][3]; static int a6[3](); static int a7[3](int); static int (*a8[3])(long); extern enum Baz baz1; void foo(const union Bar *p1, const union Bar * const p2) { *p1 = *p2; p1[0] = p2[0]; p1->i = p2->i; p1 = p2; } void bar(const struct Foo *p1, const struct Foo * const p2) { *p1 = *p2; p1[0] = p2[0]; p1->i = p2->i; p1 = p2; } void baz(void) { int a9[]; const int a10[]; struct Foo f1; const struct Foo f2; union Bar b1; const union Bar b2; void v1; const void v2; int i1; const int i2; const enum Baz baz2; } adlint-3.2.14/share/demo/useless_exp_vars/0000755000004100000410000000000012340630463020525 5ustar www-datawww-dataadlint-3.2.14/share/demo/useless_exp_vars/useless_export_2.c0000644000004100000410000000013412340630463024174 0ustar www-datawww-data#include "useless_export_1.h" int main(void) { puts(get_error_mesg()); return 0; } adlint-3.2.14/share/demo/useless_exp_vars/useless_export_1.h0000644000004100000410000000004212340630463024176 0ustar www-datawww-dataextern void get_error_mesg(void); adlint-3.2.14/share/demo/useless_exp_vars/useless_export_1.c0000644000004100000410000000020712340630463024174 0ustar www-datawww-dataint error_code; char *mesg_tbl[] = {"error-1", "error-2", "error-3"}; void get_error_mesg(void) { return mesg_tbl[error_code]; } adlint-3.2.14/share/demo/array_range/0000755000004100000410000000000012340630463017425 5ustar www-datawww-dataadlint-3.2.14/share/demo/array_range/array_range.c0000644000004100000410000000162112340630463022063 0ustar www-datawww-datastatic int foo(const int i) { int array[10] = { 0 }; int j; j = array[5]; j = array[10]; if (i < 5) { j = array[i]; } if (i > 5) { j = array[i]; } if (i < 0) { j = array[i]; } if (i > 9) { j = array[i]; } j = array[i]; for (j = 0; j < 10; j++) { array[j] = 0; array[j + 1] = 0; if (j == 10) { break; } if (j < 0) { break; } } for (j = 9; j >= 0; j--) { array[j] = 0; array[j - 1] = 0; if (j < 0) { break; } if (j > 9) { break; } } for (j = 0; j != 10; j++) { array[j] = 0; array[j + 1] = 0; /* ADLINT::[-W0723] */ if (j == 10) { break; } if (j < 0) { break; } } return j; } adlint-3.2.14/share/demo/undefined_macro/0000755000004100000410000000000012340630463020255 5ustar www-datawww-dataadlint-3.2.14/share/demo/undefined_macro/undefined_macro.c0000644000004100000410000000021212340630463023536 0ustar www-datawww-data#define FOO (3) #if FOO == 3 int i; #endif #if BAR == 1 int ii; #endif #if !defined(BAR) int iii; #endif #ifndef BAR int iiii; #endif adlint-3.2.14/share/demo/incomplete_ifelse/0000755000004100000410000000000012340630463020621 5ustar www-datawww-dataadlint-3.2.14/share/demo/incomplete_ifelse/incomplete_ifelse.c0000644000004100000410000000053612340630463024457 0ustar www-datawww-dataint foo(const int i) { int j; if (i == 0) { j = 0; } if (i == 1) { j = 1; } else if (i == 2) { j = 2; } if (i > 2) { if (i == 5) { j = 5; } else if (i == 6) { j = 6; } } else if (i < 0) { j = -1; } return j; } adlint-3.2.14/share/demo/local_decl/0000755000004100000410000000000012340630463017214 5ustar www-datawww-dataadlint-3.2.14/share/demo/local_decl/local_decl.c0000644000004100000410000000020712340630463021440 0ustar www-datawww-dataint main(void) { extern int i; extern int foo(int); extern int bar(); static int baz(void); return bar(foo(i)); } adlint-3.2.14/share/demo/bitwise_expr/0000755000004100000410000000000012340630463017637 5ustar www-datawww-dataadlint-3.2.14/share/demo/bitwise_expr/bitwise_expr.c0000644000004100000410000000056412340630463022514 0ustar www-datawww-datastatic void foo(const int i1, const int i2, const unsigned char uc1, const unsigned char uc2) { int i; i = (int) (uc1 & uc2); i = (int) (uc1 | uc2); i = (int) (uc1 ^ uc2); i = (int) ~uc1; i = (int) (uc1 << 1); i = (int) (uc1 >> 1); i = i1 & i2; i = i1 | i2; i = i1 ^ i2; i = ~i1; i = i1 << i2; i = i1 >> i2; } adlint-3.2.14/share/demo/retn_lvar_addr/0000755000004100000410000000000012340630463020121 5ustar www-datawww-dataadlint-3.2.14/share/demo/retn_lvar_addr/retn_lvar_addr.c0000644000004100000410000000073212340630463023255 0ustar www-datawww-dataint *foo(int i) { int n = i; return &n; } int *bar(int i) { static int n; return &n; } void baz(int **pp) { int i = 0; *pp = &i; } void qux(void) { int *p; { int i; p = &i; } } int *gpi; char *gpc; void hoge(long ** p) { int i = 0; static const char s[] = "aaa"; static const long l = 1; gpi = &i; gpc = s; gpc = &s[0]; *p = &l; } void hogehoge(int i) { static int *p; p = &i; } adlint-3.2.14/share/demo/Makefile0000644000004100000410000000361712340630463016602 0ustar www-datawww-dataDIRS = \ ambig_operator \ arg_points_unset \ array_range \ bad_bitfields \ bad_brace \ bad_comment \ bad_const \ bad_conv \ bad_enum \ bad_indent \ bad_init \ bad_label \ bad_line \ bad_macro \ bad_return \ bitwise_expr \ call_by_value \ cross_ref \ dangling_else \ dead_code \ deep_nest \ dense_switch \ direct_recur \ div_by_zero \ dos_source \ funptr_cast \ goto_stmt \ id_hiding \ ill_defined \ implicit_conv \ implicit_int \ incomplete_ifelse \ incomplete_type \ indirect_recur \ inline_asm \ integer_promotion \ intro_demo \ invalid_call \ kandr_fundef \ line_comment \ local_decl \ logical_expr \ logical_trick \ long_sym \ loop_var \ malloc_or_die \ may_be_null \ may_be_null_arith \ may_be_unset \ mmapped_io \ multi_break \ multi_decl \ multi_def \ multi_typedef \ must_be_false \ must_be_null \ must_be_null_arith \ must_be_true \ no_eof_nl \ no_void_arg \ null_stmt \ octal_const \ output_by_param \ overflow \ press_release \ redundant_select \ register_vars \ reserved_ident \ retn_lvar_addr \ sequence_point \ shift_expr \ should_be_typedef \ static_paths \ static_vars \ tag_hiding \ typedef_each_src \ tricky_incdec \ undefined_macro \ uninit_vars \ union_type \ unmatch_decl \ unmatch_paren_macro \ unnamed_member \ unreachable \ useless_exp_funs \ useless_exp_vars \ useless_expr \ useless_funs \ useless_header \ useless_vars \ va_funcall \ various_fundef \ wchar_wstring \ wrap_around .PHONY: adlintize adlintize: @for i in $(DIRS); do (\ cd $$i; \ if [ ! -d adlint ]; then \ adlintize -o adlint; \ fi \ ) done .PHONY: all all : adlintize @for i in $(DIRS); do (\ cd $$i/adlint; \ make all 2>/dev/null; \ ) done .PHONY: verbose-all verbose-all : adlintize @for i in $(DIRS); do (\ cd $$i/adlint; \ make verbose-all; \ ) done .PHONY: clean clean : @-for i in $(DIRS); do ( cd $$i/adlint && make clean; ) done @for i in $(DIRS); do ( rm -rf $$i/adlint; ) done adlint-3.2.14/share/demo/div_by_zero/0000755000004100000410000000000012340630463017446 5ustar www-datawww-dataadlint-3.2.14/share/demo/div_by_zero/div_by_zero.c0000644000004100000410000000107112340630463022124 0ustar www-datawww-dataextern int rand(void); int foo(void) { const int i = rand(); return 3 / i; /* div by 0 when rand() returns 0 */ } int bar(const int n) { int c; int i = 1; for (c = 0; c < n; ++c) { i = c; } i = 3 / i; /* div by zero when 1 is passed as parameter n */ for (c = 0; c < n; ++c) { if (c % 2 == 0) { i = 0; } } i = 3 / i; /* div by zero when 1 is passed as parameter n */ if (i == 0) { return 0; } else { return 3 / i; /* i must not be 0 in this path */ } } adlint-3.2.14/share/demo/register_vars/0000755000004100000410000000000012340630463020012 5ustar www-datawww-dataadlint-3.2.14/share/demo/register_vars/register_vars.c0000644000004100000410000000021112340630463023027 0ustar www-datawww-dataextern int puts(const char *); void foo(void) { register char a[3]; char *p = a; p = &a[0]; p = &a[1]; puts(a); } adlint-3.2.14/share/demo/unreachable/0000755000004100000410000000000012340630463017404 5ustar www-datawww-dataadlint-3.2.14/share/demo/unreachable/unreachable.c0000644000004100000410000000065112340630463022023 0ustar www-datawww-dataint main(void) { int i = rand(); if (i == 0) { if (i > 0) { i = 1; } } if (i < 0) { if (i > 3) { i = 2; } } switch (i) { case 0: if (i < 0) { i = 3; } break; case 1: if (5 < i) { i = 4; } break; } for (int ii = 0; ii < i; ii++) { } return 0; } adlint-3.2.14/share/demo/static_paths/0000755000004100000410000000000012340630463017621 5ustar www-datawww-dataadlint-3.2.14/share/demo/static_paths/static_paths.c0000644000004100000410000000565512340630463022466 0ustar www-datawww-datastatic int foo(int i) { if (i == 0) { /* (1) [1,1] [1,1] [1,0] */ i = 0; } /* (1) [1,1] [1] [1,1] */ else { /* (2) [1,1] [1,1] [1,1] */ i = 1; } /* (2) [1] [2] [1] */ return i; } static int bar(int i) { if (i == 0) { /* (1) [1,1] [1,1] [1,0] */ i = 0; } /* (1) [1,1] [1] [1,1] */ else { /* (2) [1,1] [1,1] [1,1] */ goto end; } /* (2) [1] [2] [1] */ end: return i; } static int hoge(int i) { if (i == 0) { /* (1) [1,1] [1,1] [1,0] */ i = 0; } /* (2) [1] [2] [1] */ if (i == 1) { /* (2) [1,2] [2,2] [1,0] */ i = 1; } /* (4) [1] [4] [1] */ if (i == 2) { /* (4) [1,4] [4,4] [1,0] */ i = 2; } /* (8) [1] [8] [1] */ return i; } static int baz(int i) { switch (i) { case 0: /* (1) [1,1] [1,1] [1,0] */ if (rand()) { /* (1) [1,1,1] [1,1,1] [1,0,0] */ i = 0; } /* (1) [1,1,1] [1,1] [1,0,1] */ else { /* (2) [1,1,1] [1,1,1] [1,0,1] */ i = 0; } /* (2) [1,1] [1,2] [1,0] */ i = 0; break; /* (2) [1,1] [1] [1,2] */ default: /* (3) [1,1] [1,1] [1,2] */ if (rand()) { /* (3) [1,1,1] [1,1,1] [1,2,0] */ i = 1; } /* (3) [1,1,1] [1,1] [1,2,1] */ else { /* (4) [1,1,1] [1,1,1] [1,2,1] */ i = 1; } /* (4) [1,1] [1,2] [1,2] */ i = 1; break; } /* (4) [1] [4] [1] */ return i; } static int baz2(int i) { switch (i) { case 0: /* (1) [1,1] [1,1] [1,0] */ if (rand()) { /* (1) [1,1,1] [1,1,1] [1,0,0] */ goto hoge; } /* (1) [1,1,1] [1,1] [1,0,1] */ else { /* (2) [1,1,1] [1,1,1] [1,0,1] */ break; } /* (2) [1,1] [1,2] [1,0] */ hoge: i = 0; break; /* (2) [1,1] [1] [1,2] */ default: /* (3) [1,1] [1,1] [1,2] */ if (rand()) { /* (3) [1,1,1] [1,1,1] [1,2,0] */ break; } /* (3) [1,1,1] [1,1] [1,2,1] */ else { /* (4) [1,1,1] [1,1,1] [1,2,1] */ goto hogehoge; } /* (4) [1,1] [1,2] [1,2] */ hogehoge: i = 1; break; } /* (4) [1] [4] [1] */ return i; } static int qux(const int i) { while (i < 5) { /* (1) [1,1] [1,1] [1,0] */ if (i == 0) { /* (1) [1,1,1] [1,1,1] [1,0,0] */ return 0; } /* (2) [1,1] [1,1] [1,0] */ if (i == 1) { /* (2) [1,1,1] [1,1,1] [1,0,0] */ return 1; } /* (3) [1,1] [1,1] [1,0] */ } /* (4) [1] [2] [1] */ if (i == 2) { /* (4) [1,2] [2,2] [1,0] */ return 2; } /* (6) [1] [2] [1] */ return 3; } adlint-3.2.14/share/demo/wchar_wstring/0000755000004100000410000000000012340630463020014 5ustar www-datawww-dataadlint-3.2.14/share/demo/wchar_wstring/wchar_wstring.c0000644000004100000410000000026212340630463023041 0ustar www-datawww-datatypedef unsigned int wchar_t; /* コメント */ #define MESG L"日本語" /* 注釈 */ const wchar_t *mesg = MESG; /* 説明 */ const wchar_t ch = L'ã‚'; /* コメント */ adlint-3.2.14/share/demo/may_be_null/0000755000004100000410000000000012340630463017421 5ustar www-datawww-dataadlint-3.2.14/share/demo/may_be_null/may_be_null.c0000644000004100000410000000153212340630463022054 0ustar www-datawww-data#define NULL (0) extern int *may_return_null(void); extern int rand(void); int main(void) { int i; int *p = NULL; i = *(int *)(NULL); *p = 1; /* p is obviously NULL */ p = may_return_null(); *p = 2; /* p is NULL when may_return_null() returns NULL */ if (rand() == 1) { p = &i; *p = 3; /* p points to i in this path */ } *p = 4; /* p is NULL when rand() returns != 1 */ switch (rand()) { case 0: p = &i; break; case 1: p = NULL; break; default: return 0; } *p = 5; /* p is NULL when rand() returns 1 */ for (i = 0; i < rand(); ++i) { p = &i; } *p = 6; /* p is NULL when rand() returns 0 */ while (rand() < 1) { p = &i; } *p = 7; /* p is NULL when rand() returns >= 1 */ return *p; } adlint-3.2.14/share/demo/dead_code/0000755000004100000410000000000012340630463017022 5ustar www-datawww-dataadlint-3.2.14/share/demo/dead_code/dead_code.c0000644000004100000410000000612212340630463021056 0ustar www-datawww-dataextern void exit(int); extern int rand(void); static int foo(const int i, int); static int bar(const int i, int j); static int baz(const int, int); static int baz(const int j, int i); static int foo(const int i, int) { if (i == 0) { return 0; } else if (i == 1) { exit(1); } else { return 2; } return rand(); } static int bar(const int i, int j) { if (i < 0) { unsigned short j = foo(1); if (j < i) { abort(); } if (i == 0) { abort(); } exit(1); } else { if (i == -2) { abort(); } } /* i >= 0 */ if (i < 2) { j = 3 / i; /* i == 0..1 */ } if (i < 1) { j = 3 / i; /* i == 0 */ return j; } return 3 / i; /* i == 1 */ } static int baz(const int i, int j) { if (i < 0) { unsigned short j = foo(1, 2, 3); if (j < i) { abort(); } if (i == 0) { abort(); } exit(1); } else { if (i == -2) { abort(); } } /* i >= 0 */ if (i < -3) { abort(); } if (i != 0) { i = 1; } else { return 0; } /* i == 1 */ if (i < 2) { j = 3 / i; } if (i < 1) { j = 3 / i; return j; } return 3 / i; } static int qux(void) { int i = foo(0); int j; if (i < 0) { unsigned short j = foo(1); if (j < i) { abort(); } if (i == 0) { abort(); } exit(1); } else { if (i == -2) { abort(); } } /* i >= 0 */ if (i == 0) { i = 1; } else if (i == 1) { i = 2; } /* i >= 1 */ if (i < 2) { j = 3 / i; } if (i < 1) { j = 3 / i; return j; } return 3 / i; } static int foobar(void) { int i; if (1) { i = foo(0); } if (0) { return i; } if (1) { i = foo(0); } else { __adlint__eval("puts 'NOTREACHED'"); return 0; } if (0) { __adlint__eval("puts 'NOTREACHED'"); return 0; } else { i = foo(0); } do { i = 0; } while(0); switch (i) { case 0: for (;;) { i = 0; } break; default: i = 1; } return 3 / i; } int (*p)(const int j, int i) = &foo; int main(void) { int i = foo(0); int j; int (*p)(const int x, int y) = bar; p = baz; if (i < 0) { return 0; } if (i != 0) { i = 1; } else { return 0; } /* i == 1 */ if (i < 2) { j = 3 / i; } if (i < 1) { return 3 / i; } i = foo(0); switch (i) { case 0: return 1; case 1: return 2; case 2: case 3: return 3; default: return 4; break; } if (i == 4) { return 5; } else { return 6; } return 0; } adlint-3.2.14/share/demo/dense_switch/0000755000004100000410000000000012340630463017612 5ustar www-datawww-dataadlint-3.2.14/share/demo/dense_switch/dense_switch.c0000644000004100000410000000201212340630463022430 0ustar www-datawww-dataint main(void) { const int i = rand(); int j; switch (i) { case 0: j = 3 / i; case 1: j = 3 / i; if (i == 0) case 3: j = 3 / i; if (i == 0 || i == 1) { case 2: j = 3 / i; } else { __adlint__inspect(i); j = 3 / i; } switch (i) { default: j = 3 / i; break; case 0: j = 3 / i; case 1: j = 3 / i; } break; default: j = 3 / i; } switch (i) { case 0: if (i < j) { break; } while (i > j) { break; } j += i; break; default: switch (i) { default: j = 3 / i; break; case 1: if (i < j) { break; } if (i < j + 1) { break; } j += i; break; } } return j; } adlint-3.2.14/share/demo/bad_const/0000755000004100000410000000000012340630463017067 5ustar www-datawww-dataadlint-3.2.14/share/demo/bad_const/bad_const.c0000644000004100000410000000060312340630463021166 0ustar www-datawww-data#define MESG "hello world\n" #define CHAR 'C' #define SIZE (10) extern void foo(void) { const unsigned int ui = 0x80000000; const long l = 2147483648; const int i = 50; const char * const str = "hoge"; const char ch = 'A'; const int a1[3]; const int a2[3 + 1]; const int a3[SIZE]; const int a4[SIZE + 1]; puts(MESG); printf("%c\n", CHAR); } adlint-3.2.14/share/demo/should_be_typedef/0000755000004100000410000000000012340630463020617 5ustar www-datawww-dataadlint-3.2.14/share/demo/should_be_typedef/should_be_typedef.c0000644000004100000410000000134012340630463024445 0ustar www-datawww-data#define OM_1 int #define OM_2 unsigned int #define OM_3 int * #define OM_4 const int * #define OM_5 int ** #define OM_6 volatile int * const #define OM_7 void #define OM_8 static const #define OM_9 static volatile #define OM_10 static const volatile #define OM_11 extern const #define OM_12 volatile extern #define OM_13 const volatile #define FM_1(x) int #define FM_2(x) unsigned int #define FM_3(x) int * #define FM_4(x) const int * #define FM_5(x) int ** #define FM_6(x) volatile int * const #define FM_7(x) void #define FM_8(x) static const #define FM_9(x) static volatile #define FM_10(x) static const volatile #define FM_11(x) extern const #define FM_12(x) volatile extern #define FM_13(x) const volatile adlint-3.2.14/share/demo/tag_hiding/0000755000004100000410000000000012340630463017230 5ustar www-datawww-dataadlint-3.2.14/share/demo/tag_hiding/tag_hiding.c0000644000004100000410000000035512340630463021474 0ustar www-datawww-datastruct struct_tag { int i; int j; }; union union_tag { int i; int j; }; enum enum_tag { ONE = 1, TWO, THREE }; static void foo(void) { struct struct_tag {}; union union_tag {}; enum enum_tag { A, B, C }; } adlint-3.2.14/share/demo/sequence_point/0000755000004100000410000000000012340630463020154 5ustar www-datawww-dataadlint-3.2.14/share/demo/sequence_point/sequence_point.c0000644000004100000410000000077412340630463023351 0ustar www-datawww-dataextern int bar(int *p); extern int baz(const int *p); void foo(int a, int b, int *c) { { a = b * a++; a = bar(&a) * a++; b = bar(&a) * (a++ + --a); } { b = bar(&a) * a++; b = bar(&a) + baz(&a); b = baz(&a) - baz(&a); } { b = (a + 1) + a++; b = c[a] + c[++a]; foo(a, a++, c); foo(a++, a, c); a = a + b; c[a] = a++ + b; } { b = bar(&a) * a; b = baz(&a) * a; } } adlint-3.2.14/share/demo/goto_stmt/0000755000004100000410000000000012340630463017152 5ustar www-datawww-dataadlint-3.2.14/share/demo/goto_stmt/goto_stmt.c0000644000004100000410000000030712340630463021335 0ustar www-datawww-dataint main(void) { int i = rand(); if (i == 1) { goto Label1; } if (i < 0) { int j = 3 / i; Label1: Label2: return j; } goto Label2; return 0; } adlint-3.2.14/share/demo/bad_label/0000755000004100000410000000000012340630463017020 5ustar www-datawww-dataadlint-3.2.14/share/demo/bad_label/bad_label.c0000644000004100000410000000036412340630463021054 0ustar www-datawww-dataint foo(const int i) { if (i == 0) { label: return 0; } if (i < 0) { goto label; } label: return 1; } int bar(const int i) { if (i == 0) { goto label; } i = 0; label: return i; } adlint-3.2.14/share/demo/useless_expr/0000755000004100000410000000000012340630463017654 5ustar www-datawww-dataadlint-3.2.14/share/demo/useless_expr/useless_expr.c0000644000004100000410000000026212340630463022541 0ustar www-datawww-dataint main(void) { int *p = (int *) malloc(sizeof(int)); if (p) { *p = 0; } else { return 1; } *p; *p++; (*p)++; return 0; } adlint-3.2.14/share/demo/bad_line/0000755000004100000410000000000012340630463016670 5ustar www-datawww-dataadlint-3.2.14/share/demo/bad_line/bad_line.c0000644000004100000410000000044312340630463020572 0ustar www-datawww-data#line #line 35000 "bad_line.c" #line 35 * 100 #line 35 * 100 "bad_line.c" #line 35 L"ã‚ã„ã†.c" #line __LINE__ __FILE__ #define THIS_FILE __FILE__ #define LINE 35 #line LINE THIS_FILE #undef LINE #define LINE 35000 #line LINE THIS_FILE #line __FILE__ 35 #line LINE1000 #pragma adlint-3.2.14/share/demo/output_by_param/0000755000004100000410000000000012340630463020345 5ustar www-datawww-dataadlint-3.2.14/share/demo/output_by_param/output_by_param.c0000644000004100000410000000030212340630463023716 0ustar www-datawww-datavoid foo(int *p, char *buf) { if (p && buf) { *p = 0; buf[0] = 0; } } int bar(void) { int i = 0; char buf[100] = { 0 }; foo(&i, buf); return buf[i]; } adlint-3.2.14/share/demo/loop_var/0000755000004100000410000000000012340630463016754 5ustar www-datawww-dataadlint-3.2.14/share/demo/loop_var/loop_var.c0000644000004100000410000000223412340630463020742 0ustar www-datawww-dataint foo(void) { int i; int ii; for (i = 0; i < 10; i++) ; for (ii = 0; i < 10; i++) ; for (i = 0, ii = 0; ii < 10; ii++) ; return i; } void bar(void) { int i; int j; int k = 0; for (i = 0; i < 10; k = k + 1) { i++; } for (i = 0; i < 10; i++) { i++; } for (j = 0; j < 10; j++) { if (j == 5) { j++; } if (j == 15) { j++; } if (j == -15) { j++; } } for (j = 0; ; j++) { if (j < 0) { j++; } if (j == 3) { j++; } if (j == 5) { LABEL: break; } } } void baz(void) { int i; int j = 0; for (i = 0; i < 5; ) { ++i; } for (i = 0; i < 5; j++) { i++; } for (i = 0; i < 5; ++j) { i++; } for (i = 0; i < 5; j--) { i++; } for (i = 0; i < 5; --j) { i++; } for (i = 0; i < 5; j = i + j) { ++i; } for (i = 0; i < 5; j += 2) { i++; } for (i = 0; i < 5; j -= 2) { ++i; } } adlint-3.2.14/share/demo/useless_vars/0000755000004100000410000000000012340630463017651 5ustar www-datawww-dataadlint-3.2.14/share/demo/useless_vars/useless_vars.c0000644000004100000410000000025312340630463022533 0ustar www-datawww-dataint foo(int i) { return 0; } int main(void) { int i = foo(0); int ii; int iii = 0; if (i == 0) { ii = foo(ii); } return foo(iii); } adlint-3.2.14/share/demo/logical_trick/0000755000004100000410000000000012340630463017741 5ustar www-datawww-dataadlint-3.2.14/share/demo/logical_trick/logical_trick.c0000644000004100000410000000074012340630463022714 0ustar www-datawww-dataextern int foo(void); static inline void bar(const int x, int y) { if ((x == 0) && (y == 0)) { } if ((x > 0) && (y++ < 0)) { } if ((x < 0) && foo()) { } { int i; i = !(x || y); i = !(x | b); i = !(x && b); i = !(x & b); } { int i; i = ~((x > y) && (x > 5)); i = !((x > b) && (x > 5)); } } static int baz(const int x, const int y) { (x && y) || 0; return 0; } adlint-3.2.14/share/demo/indirect_recur/0000755000004100000410000000000012340630463020134 5ustar www-datawww-dataadlint-3.2.14/share/demo/indirect_recur/indirect_recur_3.c0000644000004100000410000000015412340630463023523 0ustar www-datawww-data#include "indirect_recur_1.h" int func_3(const int i) { return func_1(i + 1); /* ADLINT::[-W0723] */ } adlint-3.2.14/share/demo/indirect_recur/indirect_recur_1.h0000644000004100000410000000016112340630463023524 0ustar www-datawww-data#if !defined(INDIRECT_RECUR_1_H) #define INDIRECT_RECUR_1_H extern int g; extern int func_1(const int); #endif adlint-3.2.14/share/demo/indirect_recur/indirect_recur_3.h0000644000004100000410000000014312340630463023526 0ustar www-datawww-data#if !defined(INDIRECT_RECUR_3_H) #define INDIRECT_RECUR_3_H extern int func_3(const int); #endif adlint-3.2.14/share/demo/indirect_recur/indirect_recur_1.c0000644000004100000410000000030212340630463023514 0ustar www-datawww-data#include "indirect_recur_1.h" #include "indirect_recur_2.h" int g; static int foo(void) { return g; } int func_1(const int i) { return func_2(g + i + foo()); /* ADLINT::[-W0723] */ } adlint-3.2.14/share/demo/indirect_recur/indirect_recur_2.h0000644000004100000410000000014312340630463023525 0ustar www-datawww-data#if !defined(INDIRECT_RECUR_2_H) #define INDIRECT_RECUR_2_H extern int func_2(const int); #endif adlint-3.2.14/share/demo/indirect_recur/indirect_recur_2.c0000644000004100000410000000035512340630463023525 0ustar www-datawww-data#include "indirect_recur_3.h" static int foo(const int i) { extern int func_1(const int); return func_3(i + 1) + func_1(i + 1); /* ADLINT::[-W0723] */ } int func_2(const int i) { return foo(i + 1); /* ADLINT::[-W0723] */ } adlint-3.2.14/share/demo/indirect_recur/indirect_recur_4.c0000644000004100000410000000104312340630463023522 0ustar www-datawww-data#include "indirect_recur_1.h" extern void exit(int); extern void (*signal(int, void (*)(int)))(int); #define SIGINT (1) static void handler(int signo) { exit(1); } /* * main(indirect_recur_4.c) * -> *func_1(indirect_recur_1.c) <-------+-------+ * -> foo(indirect_recur_1.c) | | * -> *func_2(indirect_recur_2.c) | | * -> *foo(indirect_recur_2.c)--+ | * -> *func_3(indirect_recur_3.c)--+ */ int main(void) { signal(SIGINT, handler); return func_1(g); } adlint-3.2.14/share/demo/unmatch_decl/0000755000004100000410000000000012340630463017561 5ustar www-datawww-dataadlint-3.2.14/share/demo/unmatch_decl/unmatch_decl_2.h0000644000004100000410000000024012340630463022575 0ustar www-datawww-dataextern long g1; extern struct Color { int r, g, b; } g2; extern long foo(int); extern struct Color *bar(void); extern void baz(int); extern float hoge(void); adlint-3.2.14/share/demo/unmatch_decl/unmatch_decl_1.c0000644000004100000410000000023412340630463022572 0ustar www-datawww-data#include "unmatch_decl_1.h" int g1; struct Point g2; struct Point *bar(int i) { static struct Point p; p.x = i; p.y = i * 2; return &p; } adlint-3.2.14/share/demo/unmatch_decl/unmatch_decl_3.c0000644000004100000410000000014712340630463022577 0ustar www-datawww-data#include "unmatch_decl_1.h" #include "unmatch_decl_2.h" int main(void) { return foo() + hoge(); } adlint-3.2.14/share/demo/unmatch_decl/unmatch_decl_1.h0000644000004100000410000000023112340630463022574 0ustar www-datawww-dataextern int g1; extern struct Point { int x, y; } g2; extern int foo(void); extern struct Point *bar(int); extern int baz(void); extern int hoge(void); adlint-3.2.14/share/demo/unmatch_decl/unmatch_decl_2.c0000644000004100000410000000017612340630463022600 0ustar www-datawww-data#include "unmatch_decl_2.h" long g1; struct Color g2; struct Color *bar(void) { static struct Color c; return &c; } adlint-3.2.14/share/demo/may_be_unset/0000755000004100000410000000000012340630463017605 5ustar www-datawww-dataadlint-3.2.14/share/demo/may_be_unset/may_be_unset.c0000644000004100000410000000066612340630463022433 0ustar www-datawww-datastatic int j; int func(int *p) { int i; int k; if (p != NULL && *p < 0) { i = *p; } if (NULL != p && *p > 5) { i = *p; } if (p == NULL && *p == 0) { i = 0; } if (p && *p == rand()) { i = *p; } { struct Foo { int val; } *p = may_return_null(); if (p && p->val == 0) { p->val = 1; } } k = j; return i * k; } adlint-3.2.14/share/demo/multi_decl/0000755000004100000410000000000012340630463017254 5ustar www-datawww-dataadlint-3.2.14/share/demo/multi_decl/multi_decl_3.c0000644000004100000410000000037212340630463021765 0ustar www-datawww-data#include "multi_decl_1.h" #include "multi_decl_2.h" extern int Hoge; struct Hoge { int i; int HogeHoge; }; typedef struct HogeHoge { int Hoge; int HogeHoge; } HogeHoge; static int Hoge; int main(void) { Hoge: return baz(); } adlint-3.2.14/share/demo/multi_decl/multi_decl_2.c0000644000004100000410000000032412340630463021761 0ustar www-datawww-data#include "multi_decl_2.h" extern int g1; extern struct Point { int x, y; } g2; extern int foo(void); extern struct Point *bar(int); extern int baz(void); static int baz(void) { return foo() + bar(0)->x; } adlint-3.2.14/share/demo/multi_decl/multi_decl_2.h0000644000004100000410000000020112340630463021760 0ustar www-datawww-dataextern int g1; extern struct Point { int x, y; } g2; extern int foo(void); extern struct Point *bar(int); extern int baz(void); adlint-3.2.14/share/demo/multi_decl/multi_decl_1.c0000644000004100000410000000112612340630463021761 0ustar www-datawww-data#include "multi_decl_1.h" int g1; struct Point g2; double g3; int foo(void) { extern int g3; extern int func1(void); typedef long g3; return 0; } enum E1 { A, B, C }; struct Point *bar(int i) { extern long g3; extern int func1(int); enum E2 { A, B, C }; typedef int A; { extern short g3; extern int g3; extern void func1(int); extern int func1(int); } { extern char g3; extern short g3; extern void func1(int, ...); extern void func1(int); } static struct Point p; p.x = i; p.y = i * 2; return &p; } typedef int A; adlint-3.2.14/share/demo/multi_decl/multi_decl_1.h0000644000004100000410000000020112340630463021757 0ustar www-datawww-dataextern int g1; extern struct Point { int x, y; } g2; extern int foo(void); extern struct Point *bar(int); extern int baz(void); adlint-3.2.14/share/demo/redundant_select/0000755000004100000410000000000012340630463020456 5ustar www-datawww-dataadlint-3.2.14/share/demo/redundant_select/redundant_select.c0000644000004100000410000000056212340630463024150 0ustar www-datawww-dataint foo(const int i) { if (i > 5) { switch (i) { case 0: return 1; case 5: return 2; default: return 3; } } switch (i) { case 0: return 4; default: switch (i) { case 10: return 5; default: return 6; } } } adlint-3.2.14/share/demo/unnamed_member/0000755000004100000410000000000012340630463020111 5ustar www-datawww-dataadlint-3.2.14/share/demo/unnamed_member/unnamed_member.c0000644000004100000410000000024412340630463023233 0ustar www-datawww-datastruct foo { unsigned int b0:1; unsigned int :1; unsigned int :1; unsigned int b3:1; }; struct bar { int; int :1; long; double; }; adlint-3.2.14/share/demo/various_fundef/0000755000004100000410000000000012340630463020152 5ustar www-datawww-dataadlint-3.2.14/share/demo/various_fundef/various_fundef.c0000644000004100000410000000172412340630463023341 0ustar www-datawww-datastatic int foo(const int i) { return i * 2; } static int bar(i) const int i; { return i * 2; } static int baz (const int i) { return i * 2; } inline static struct hoge { int i; } * qux ( const int i ) { return (struct hoge *) i; } extern const int ansi_qualified_func_1(const int); const int ansi_qualified_func_1(const int i) { return i * 2; } extern const int kandr_qualified_func_1(); const int kandr_qualified_func_1(i) const int i; { return i * 2; } static volatile ansi_qualified_func_2(const int); static volatile ansi_qualified_func_2(const int i) { return i * 2; } static volatile kandr_qualified_func_2(); static volatile kandr_qualified_func_2(i) const int i; { return i * 2; } const int *ansi_func(const int); const int *ansi_func(const int i) { static int j; j = i; return &j; } const int *kandr_func(); const int *kandr_func(i) const int i; { static int j; j = i; return &j; } adlint-3.2.14/share/demo/deep_nest/0000755000004100000410000000000012340630463017101 5ustar www-datawww-dataadlint-3.2.14/share/demo/deep_nest/deep_nest.c0000644000004100000410000000130312340630463021210 0ustar www-datawww-dataint main(void) { if (1) { if (1) { if (1) { if (1) { if (1) { if (1) { if (1) { if (1) { if (1) { if (1) { /*10*/ if (1) { if (1) { if (1) { if (1) { if (1) { /*15*/ }}}}}}}}}}}}}}} if (1) { if (1) { if (1) { if (1) { if (1) { if (1) { if (1) { if (1) { if (1) { if (1) { /*10*/ if (1) { if (1) { if (1) { if (1) { if (1) { /*15*/ if (1) { }}}}}}}}}}}}}}}} if (1) if (1) if (1) if (1) if (1) if (1) if (1) if (1) if (1) if (1) /*10*/ if (1) if (1) if (1) if (1) if (1)/*15*/ if (1) ; return 0; } adlint-3.2.14/share/demo/dangling_else/0000755000004100000410000000000012340630463017726 5ustar www-datawww-dataadlint-3.2.14/share/demo/dangling_else/dangling_else.c0000644000004100000410000000043012340630463022662 0ustar www-datawww-datastatic void foo(const int i, const int j) { if (i < 0) if (j > 0) { return 0; } else { return 1; } if (i > 0) if (j < 0) { return 2; } else { return 3; } return 4; } adlint-3.2.14/share/demo/ill_defined/0000755000004100000410000000000012340630463017371 5ustar www-datawww-dataadlint-3.2.14/share/demo/ill_defined/ill_defined.c0000644000004100000410000000016112340630463021771 0ustar www-datawww-data#define FOO 1 #if defined(FOO) int i; #endif #if defined FOO int ii; #endif #if defined "FOO" int iii; #endif adlint-3.2.14/share/demo/implicit_int/0000755000004100000410000000000012340630463017617 5ustar www-datawww-dataadlint-3.2.14/share/demo/implicit_int/implicit_int.c0000644000004100000410000000020512340630463022444 0ustar www-datawww-dataextern const g_int; extern foo(void); static bar(const *p) { return *p; } extern baz(void) { const i = 0; return i; } adlint-3.2.14/share/demo/useless_funs/0000755000004100000410000000000012340630463017651 5ustar www-datawww-dataadlint-3.2.14/share/demo/useless_funs/useless_funs_1.c0000644000004100000410000000070112340630463022751 0ustar www-datawww-data#include "useless_funs_1.h" int foo(void) { return 0; } int bar(const int i) /* no caller of bar() in this project */ { if (i < 100) { return i + 1; } else { return 0; } } int baz(const int i) /* no caller of baz() in this project */ { if (i < 100) { return i + 2; } else { return 1; } } static int qux(void) /* no caller of qux() in this translation unit */ { return 2; } adlint-3.2.14/share/demo/useless_funs/useless_funs_1.h0000644000004100000410000000021512340630463022756 0ustar www-datawww-data#if !defined(USELESS_FUNS_1_H) #define USELESS_FUNS_1_H extern int foo(void); extern int bar(const int); extern int baz(const int); #endif adlint-3.2.14/share/demo/useless_funs/useless_funs_2.c0000644000004100000410000000010212340630463022745 0ustar www-datawww-data#include "useless_funs_1.h" int main(void) { return foo(); } adlint-3.2.14/share/demo/arg_points_unset/0000755000004100000410000000000012340630463020516 5ustar www-datawww-dataadlint-3.2.14/share/demo/arg_points_unset/arg_points_unset.c0000644000004100000410000000065312340630463024251 0ustar www-datawww-dataextern int printf(const char *, ...); extern int rand(void); static void foo(const int *p) { } static void bar(char *str, const long *p) { printf(str, *p); } static void baz(void) { int i; for (int j = 0; j < rand(); ++j) { i = 0; } foo(&i); } int main(void) { int i; long l; foo(&i); bar("%l", &l); if (rand() == 0) { i = 1; } foo(&i); return i; } adlint-3.2.14/share/HEADER0000644000004100000410000000361412340630463015066 0ustar www-datawww-data#-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ -- ___ ____ __ ___ _________ / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer / /| | / / / / / / / |/ / / / AdLint - Advanced Lint / __ |/ /_/ / /___/ / /| / / / /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. This file is part of AdLint. 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 . ++ adlint-3.2.14/share/logo/0000755000004100000410000000000012340630463015147 5ustar www-datawww-dataadlint-3.2.14/share/logo/adlint-110.png0000644000004100000410000002763412340630463017443 0ustar www-datawww-data‰PNG  IHDRnnÆ[&ûtEXtSoftwareAdobe ImageReadyqÉe</>IDATxÚì}|Õµþ·Z­úJ«^-ɲdY²åÞ ¦p0I^I äñ /üIH‚Cy! SB轺›6îE¶q‘eÉê½÷UYiwÞ9wfV³«ÝÕÊ–„ÉŸûóõVÍÎÜïžs¾sî¹gt’$áÛ6¢–Fý>ê—R£ÞNýsê¿§^>^'¡û7ΗºQPîþÔ©ë©÷P Þ© vuó!õ·¨Gñ «M‚ÞG§~VKýê_| œûÆ@„SO§>‹ú4åyõhêÁ `:Û¯€ØF½†zõ<êG•ÇjêÝ.þ.–ú~Ü^ÜŠ?m*FEs7æ§…ã7—§#5‚Nk&õÖoléŠz:Ÿzõ8uæbëSÀdéÙG}õ½Šdþ˜ú³›O4áªgrÑÛCÂëëX¬HN Eîý‹âÇǸú?ÆCµœÍm1õÔWP_J=ÀÛ?°Ú`°ÁªLLþ4оzOƪu¢Òù·A½„úGÔ§ÚèX¿ÝT$ƒ¨ ÁÕx+·wŸ—Âï$—M8Ûš‰ú*ê·R?ÇÝ—¬6:hͪÛûPÞÒƒÒ–^´Ò{]ô^&Xý6¸~zíùy ^‡8£I¦RqBͱ´˜‚ `dä^~ÒÙgEIiQ?'ðéoN6ØÍ¥ôÿpYÔEý"ÅV i }8L³û`ešûl @h°?k+<_£G€AI–Ž”GÑÆž°öЗÍ·oÄñ º »ÐÑÙsW/C X–N=)‘A¿ÏçXy }tãξî6úŠ rþ0¿¶yõÝèè—è±¾~¤D‡crXü|õö9Nò¡Ãñ‹Gå3R–«KÂH² €ÊŸ²6í%ÕÚÖeAQm;^<Ò†—5!-Ì€é±X”ù©&„œ=óüë<&÷S¿‹ºŸöƒn’†cµ]X›×„Ö~&'š0!2ÆGBOn¡Af*nµÚÄàóÀKÁ‚"]’šVoI ¨öGõ=åóð`?,œ+z/IgU³Šñø¶£˜„«gÅB7¼`YþûÔï ¯}³ÅlÁ{‡ëQÐbArl(2Sc‘Hö‡ †¥ß&G¿†M C ’c 4€© y2Bü;¤FmÊw’"‚²8 çÏš€’Ú<} ¤®áã‘à°öøDq-þm€[Hý!…%Ú[3¶éD3ò{€KfÇ‘Ò  úú­87—ïiAÓ€;Xið»®@ ÙÑO@2ÍIDJœ…U­0÷ÁYô4¯r¨ï þGêS\Œo4pL<~§¥ôìCn8Þˆ÷5afZ4.œ™$HË€$> €Ü9bÁÝN@uIX£ßÊÒ) ‘,ÉÍsWͤrܾ« 7îT¥Î‘œppàqêW)Ñ”Òo"pÌ_Pœg{Ë-oÇ3»ª1!×/I#Ão@IWÕêRÕ —I/ûaôF©¬ºö4¶÷ †Èßò÷%;€S Q{?Òh>b°ûé˜Z‰ÒJ©ä,y.¤uX ýõxgo¦„áÆ9ñÎ~è^EË<÷Mn.õ©Ïô¿$¼º¿_–uâ²9)dGIÚЫU‰Š4ªÍà+SûŠ&3NV·cçÉ’Íie•EÀØÿP'x9‚ü0‰läÜŒhd$„!h½ž™ã€Í¥šÔjw*×>\!H¿Û> Ã÷_>ŠmùMxdU¦EáC}Š{|´TçX†¼®¥þ&»ú;É®;…ìÔ(œ;%F 3Dg[cŽÀb)*ièÂÛ‹±³ }µÑJ™ãkGO§9ˆ’(ü ²O+¤ #É„òÝØv©¿cÓ0KþM›ælZRCª°«§~7] ‘d{Ì«[â GY–®><µ1»ŽÖÊ€1¤Rc£‘‚sÈ)ž™hD|˜¿ˆZ°Ë¯3cwI+¾ªì@ù°Ø„ý!¯›Ü +>ßWŽ’ºNüðâ,$E…ˆÉ3HB$—ç¢>zauhÀ—çà_»‹ñ‡wO ¶µ_›…ˆ ûæØëfêWR/>[$î·Š!¶·_¯+Du·„»ÎO—ý±›ãLwR“~4áxðíÃ(©l—¾×Š„˜ <|E®žGà<˜éÀ;‹[ñÛ EØv¬^^ .Ó¤ !ûs÷Õ31).L0XUÚÜ©I›GÒäèíÇSn$n.IÜåK'Óñ„Š÷¡ß;œ_‹-›avF$6Þ3±!q†…°:öe§ÚÏæ¾~ ½:î¹h² èýÐœç ¿fõØÜiÁýohÕ"òΣv?–ûÀܾd° ©qÃó2"ð¯»çá•Ûg#2ÄŸ(ÂV Ä®î~üõÃ#Búüý|ÜŽ‘º ®|H½±„ÏÈJÀ%—MÇ¡Š,[½¹ÎÁë îâ²ãܨ?¬¾`µuï‡ ÁÎI%{2`·î.VoéÉsŸŸB91GžÑA¤2ß¾m&V_•‰øPÿ‘Û:Æ÷&âS0+)r4Zfž]]½xõ³|´“ôèõ:—ç4„]£´ª•¥´®{ÆïÂlÖtâš5q¸Ê<^WüÐ9‚4^À]çì£ÜñV|pû²‰¤^\J—–”p "•øþþ |–[!6„ìÒFðæÄŸñ ΞŠ-÷ÌÄèàAðHÒ*«Ûð ç£óq“¼—>gÿOýÛR¯Y鱸ôЍh4ã¢?ïCIssýñŽ×Ëžv½7#܂۴:iÉéª]]M¼®‹˜LC®ÁKj)¹Q“®|CWP©ÌqïìªÄ¶ÂíáX@î à~I}’úâY¢þ1¦`Ü´` üÀ&6„Mº¤ÉŽÑ÷`ÿñ[6ú!€O3³l’k?Ì[Á“\˜‚!‹¶\U· X1qR,&P祒Ÿ¼sÂÙEàU–À3Ž7P|O}QINäÛŠpë²TxŒI..^êÒ+³Üã×| ¯ 90N «íñÒ‡sç„»´÷BÚuÈÈŒ‡.À€‚ÒVüek™öìÌÞq&Àý\ ŠÊÎÆ® ¤nž•lÁd¸$žn5EŽ“WC9Û6˜^7É‚U3›8šè'˜¥;U/y¡&¡qº]©Ig0ûiübbMHHŽZçù•hu$*¿Ñ’Á‘IýõEu[/^Û_‹û/Ë´¯${2ƦÄko>˜k¾TGßÀ¸רiAoŸ¼Ã3&œ\SˆÿPT3½"(.Vóádì¶O³˜•“ }°jêºð»¾3¶kO8N W_<úi âLA˜¦ølž®ÉÓíü¥iLâÃÊÖžqîD]—ìèäÑLŠ6"ˆÔ•M» *¹g^;á’ë¿Ó¾Ç¾]¹TáQ¡B¿@D¥¦½Ï9àá?àøó{íþõî¡Z¬š 2­ÜŸ´ä1ùT;ÓúÉ(OŠ «ÔŸ6p_ðoÙI’¢ŒÂÞjɃ4‚(ŠäŽMzpεjÛ‡ÔdJZ¬œ"A }ðUöð³!o„ñ8N\«¾xû`-©”¬È‰4®£fæÎH³ÿ—‚Éiؖ׈â¦î1­ÙÜyM²;@ÒæK¶-;5Rœ‹' Éꀻ%!­šÔ~™’#a$îÀ¨<ñy±uþpçH€ûŽú„uÿ_·•‹Õc^®³Ó€‹FwǬóý|}pË’4ô÷X‰øT9p¹íhjé‘i% Ø¢©‰H¤ÉãDœÔ76NÞ)w7Yûøùù"aB´@¥¢º¯¨ÖŽSc¼Žª¥ê‹]%­8TÚ†šÚN¼³¯J¤Í¹U“žìž‹äŽž,ž¬Ìhü“ô»uŒwÉ>O¿¡î½2°|Ö‡Ìg ž³ =K›k6iÆB B›"Cä½ ¤2_ÙW£ýï\é p š}}å£# "žÈêeÝ‘4uö‰H»$¹ó Yp>qžíw\6’èÿYwjÌ@ûà«z|œ[K6ÕGÄ W,˜ˆRÿZ5é|¾6Œ e}5)9©Ií¯ò^ S¤¡™|"Pµ$åfo€»ÖY½Õ¢ƒØ:ûúž ‘F7›”<ªýŒ³¿r&„ãî•S±ú“lÉouÐØç|h}¡7‰$Ö™páœdÁpÇø¼õãd€¥©Içï2£õ#{/“ør½xo…¦qJ{†'à8Ìr™ú¢°ÁŒý¤&õ¤gLŒ¾º« U­Ý"Ÿß™MJ^°IWŸsÌò¢œ|ïâ)øî? ¨Ñ<ªÀÝðÒœ(£ (Ù0=+×,ËÆ&9†¢ÜEM¼ÕàîÔ¤3˜6c±‰rúý{〃ºd—`ž'à’”p‹hë uK—þ¤&ïº0éœÊÝÖƒV úLÔ¤ólä¼Ä›—¦ášÅiXñì!ä–·1`œæÎ LëöT‰I·t^*~pq¶¼èk•ÜjwªÏ|èg’GŸÖ¾j@çj4Ã/È_Þ÷‘À81ílOÀ¥j—¸DOËäÈ`LŽ7ⲉ"¤þ:IoõeVè–{¡&g5ïH½z~2¾{nn{ç$ÞÊ­9í-ñå-½XùÌA<¿áB#ƒpÃEY¸qy¦˜ÍV«är¹´ÙÒȲ¼ì¬Ù›térЗ}‰]ú“Êäsì!9TÙáÌ=Ügg“-äóª”óç§EŠ“XJì/11 ÝD©ßÜ[.âZ5é9z"ydœª‹ÀYÃs&Fâ¾U3°¾ØŒëHu(kóZ_q²Òê-ÅÈ~h+>%±lé$<ð½X–“H,v@N#p±—†YªN§8“á¢*ê˜Ø4_Òéõ2pÊœ$Ž àĺ[GY¨>©#öØÖ= "Ó“MÂ&‰Bÿ€ÔÙ£ÅÖcuÈ_˜‚Ô¨à!go–E6ÌN AZTL¾ö}áµí}8PÞŽ]Å­È­ìD[?pÉâI˜JÎuùi|îìzØ<&É£V¼R—®\‡ä!Éó–gÖáÆð4U4 ©Ë-w8^á ¸`­PGtÔJ³?‚ÔL2ô™UÌ‚I‘H%©+-iš/аúúÂfH’ûçÎÞyŠu²d X­"º21ÆHÎÿjZ{ð~‘=ÇÛ ³É{Ãy#I+M0›ÎG¤R\¶,Alìà´vžbÀHB¥Óˆš¸Ø ©˜6OιÃꊄ`S}¿ß¡ª±·/`Ð$ÍtWƱ§«îy÷iàLAe“ÑVçÈ­®nÃÖ£µØ7' Ò#ÅzÃ&ÝER\-§¨ËÑ>S²“„”qº;_”Xi  ó7Ò#;ÔV›’&¨“Ó$\íðŠMz!m¼Ï‚–ܨÉÁcHb/¼ŽÓé:*É$•5÷`Jl°=Šâ 8^w³;hb» ç+¨¿UíˆÂ‚)±ØGù{ª0Ÿ¤P×Qi˜‘+¶å«ç}Þ>â½æ®>Ôv ¤¾Í½èìé'Ðúa&àú,\úÉF®‰^°Ü ‚|ÅúZtXÒLˆB ŸAµûäš(Ò0àpNºÓÛâÊé–Ó‰ÜEþåÚ†NÔÖµcËþ2Ä„aINæfÅ!¤³—|GÉæYMê” DÞ¸<§.8l—vc*t\¨ÀÏ×þf©ãF‘`WÀÅÚ)5ÍHvÄ–'ß!SGe@7.HÁ ’ˆâª6ì+nÆ¢Œ(òŬ^9¯jÞI 9÷Ç+ÛðùÑü‹úg~±›Á„~ùÒ“¢ƒ‘‚¤ðÄ„ø‰üHÞ‘ê§$pÁµ:Q¡õäÿTµö’îD k ›G_mh1ã£Ïóqàd-æg'`FFŒØ'×§°â‘PzÏ’$ ME÷ ´‘xû0QÔtM›CÌÒeq*Ó`j@,ãƒÑÀº£ì™ñ¡˜›…í+ñÌg§0}‚IäpÀ& ËÚØ4Èoì8…÷–a€Ó ÄËK.Ѧ¬˜ëfÅaizÂG– ÖÚÝ/ò?9¸¼ñXZÔ -MĪºT¹ÚŸWƒ+–f •la¯B¾<©Ï‘­ÍwÐæFMªß—SeíÑÒmq´&.~;D}bVÊ2% ¢¯ÚÜè öVÎLÄÞS()oŶ“ ¸bV¢(KèŽM²”1ØIêðÿ*@ym‡ O/Îj&°îYžŠEi&m鉷pb¡«fÄŠÎÒÈ þå‹2ì9Ù,ï+¶ãÅO¾Â¼© X±8]¨EË€ÍÁ)×ÁËÈÉؤ;IÖ±½ðÕ ‰c”Ç×ד©,cuÅþ;Ï™kÄ¥3±vW >Ø_‰eDR˜¸HÝâå æïì.ÃËÛŠÐÇYM\ Žs^v~rn ®7ꫬZy£$ï#qi‡/ËqœƒÎzúiö*G[g/9íé ´ï IqoÏ<«I5U]™ÎöÔ×¢«©SÙ/hsnôRÙ§ºhj Æû܃Ͳ¤UÀsŸà¹uyv»b$Uüô-9Øú‹cš¶q°;—%cÏ-Æý+3ä<½±üÂz¼±é(ÛºÅdu¥þ†e•Âg.c”$Q>4V6bHùÕ8´å0ªŽWÀ:`ƒ»T®€;­Š™½ˆ ÄŠé â”>9X%Rôÿ‡ý@À‡Þý öUÈåqI.ÏŽÆ¡ÿ9?Y6.Uqm‚¿«Webë½ 1).˜Ù˜PM]xé£C¨jT7÷lIÇ“ô9˜&½Š=¯JÛÚŠfúòò÷ »½Û¾•Zœ‡fUÞ©Ò¢ÍpöÁ¤¾Ä’ giЇ«^Ë1̈,!¿ŽÏôµíÅ(o2 •Ãjóez½•÷y3˜tR]5knš*ë×ݲbƒ±åžùX09’‹~‰ææNQ%¨Ÿ$€Óç¼Ú; yöë˜xèéúÛIÚq·GcUó “fÓ¡Ö'Ó¨I?Ç"à}®€kЪ’ ƒœ›Á‘åQ9qiNÞSÎü_HÚc×eã·—§ãljt­[~6çM%É3+j³¡ƒÀË—]p×/ !á¿åHH·¹¹;Ob×–#¨+k”U¢^8罨Áš Ne…{\W­ŽK8±ñæÅMoŒv#èo®œ•$NhGAÖ¬Æ[Ä ÅØ®œŒ_]8gc £ZóÝi˜˜`”7ù“$ÕãDq½Ø#>9ÖÓ ë%{âh9¶`UdϬl¿ zu…kΪNúˆ ÚåFWÀ•²/A¡™Žr^ç%ma©››ˆÈ`4·tãwïUëØ?[ž‹?~g2Îæ–IjóƒÏA ¿^)öæƒíûJÐBêMïÆ^¸ª0ÁăKOÕ㋇‘w ½=Ù}V òxÔ¿šï(wQ[—;àì2;‰II¯Hë¼DŽ«âiæÞ´ Eø%ru;+2“ÃðÞ­3ñMh³’Œø%'aïÈ.™;z°ûP™°uîÕ¥¤xÇz®*/mÄg›ãÀ®“èíî“cµ¨Ó OÞu‰£ÇÉ1ÁÚO«\9à|G¦zuMnZ¼H©më²´å•#Ê*“÷øD¹@_ºøGÈgò¦×ÙÒ$à>ÍoÂS-B­UT·Ê“×oÅaú^uu kQQR¯úA2-Ô®4{Ó‰Óè…дc®€ãuòS*p9¼å–N†‹}:çzj Ô¦c50s¥9åþ|goRc¶û›éøNÁ>Mr‘äRXô_ëR‡E¤…æ«H˜`„NÙ¯Þ€¦€èð@碇ÝENö«O¸ø™.Ð€Š¦n%{yø` /€r½ä…²¿ÆeáIÕþïeø¦µó'G`êD“œÅíNÃÑĬ"i\·þ0Šòkä¥Â?ÁJ¡¹©ÅˆœbU%ÛœAÂcLùçÌ¡£îPØi_ã1ú‹;ctwö¢¨¾Ó¾„â9¤äƒüÚÒëq±¦@ø“÷É¡Zì-kûFǾì}\ÐÆÓvYäö–.t‘Í[‚}yõÚÏ0Üý <7uœi¾,H5i?9Á6ÎÝ‘ YHùIù`35¶bwaÓ°†Ufü6l=Yo_š¸mÙ$d&„¢ßlÁÏÞËw»Êp¶6Ls©* ¸×u:’¬€`ú BvÚW(98G•¶ñ·ÜÇ{ì;ë.c‡”t ´™Ôe¯[J,¤Nº¨¡Å\PZF¼™q¡¸<'†äµ`{Që7 8vÌç$‡ºŽsþ‰ø+êìÌæ¥4=õåbàIFíò<­ð¨©Î7Ämí½¨lî6Ì)9RÙÇÚè‡'ÅÅãpA† |hý©!Ëg{ìÚ‹ÕQiªŠ%8gB¨Ù+nÚOÀq{Ó~Ò !˜Ëšhý—'8n}8:ûšÖnyÆÀYñ¡"!‡ZÊù(Á~Øq´¯í¯þFÆyœ¿úð$žfb0N1UU£Ñ˜Ý0;^[î7Àm…¦J÷\ržŒ/OÔ¡¬±KW –U;û„ȇ‡ 5JÞéÉï§Ñós³âÄgkvVº\d=[¯ü¯ÞR‚…Ú'HCˆZ[:Ýø€æ#'DýpݬXí§¯ªÁOÀukÙåwrb½5wôbk~½¨V>ô7ub ®ì «•äˆ`„‰J*³µáâì8Ë<@Ž-—µ?Ûk†Ôcñc{ðÀ;yȯ&&MÌ:žSúü|GQº#&ª´ÙNN÷Ä(;1á=gÚÇz˜C­WŸ\˜‰¹“Â×ÜuªQë;r8ˆW¹3·”È`™È(ËÑ®H>b¤xýßÈ–³´Ý¥mXôø\õt.•´Â‡Ü 8Ò1¡ˆ p©eF½©üüÆëgÅiùûqh†;“ *‹aŒî½ U¾™+ùh›Ö"Ài¥™}`ÑœD;dFÛpé´xDD£©ÞŒWÏ[·¿¼7¿tç>¹Oµ/¦Glt¦Ä†!Ô½b»}Æ7Õé–+µ"::·.v¨lïp§ãáN…³0ÿ¦¾àL©Dv’ä¼·¿mä—iK¿óor>¥šhâ³±ÔEñb+3L:ѧÈè]RÇ÷úùíÆ",}bÞÜQ!l®)"Y«y^üÕ–ˆÒµÓHÛíçLWfäV¤%‹ÞÇí@±[„ó™í´¶ö`9ÙA_ç›÷ž©N¤Ÿ›Ì0®*»€ÔeHD ªÉ†<¼±h܉Çï7cÖvâá÷óÅÝ ‘AÈI GV\Œþ¥Ü•4„1YSƒ×ô:òÝ~¸Ð¡˜ø Špu ›íçËS%ozo9J™aúÖx7œtú]6.²ìK³DûÃÃuh2÷9`|~oçÖbùSûñ›wO µË‚ SÒãB1#Á“¢!Ü4¦$X•6ÒX«fÆb’#)Y;„zyX¾ýЍהBRrç¹)BœYêÞÝ_A’¨—A’8Ê0h÷,VÉ-xœ–·dRbCP_Û…ßo.SÐVtàÜÿÝ‹›ÖÄž“MЇøaR|æ§DÒ5‹°Ú<§¼º*©1ªÒF¿o$^ðĪ)ZÏãïÔOž.px|]}q;Ͱð@ùßE®Áb™j¦3Û55S©këÜÏ~-™-nˆþÌÖ2«éõ19NǼìï¹XLlqÇñF¡†&&„a)Mš " rq¡á÷šÚ”{ÝföâðÀ F1€›$h—pXXV»t÷Fpø§Ôø%—àýÕ“ÅÕp>å _œBu[ þ|Kf³£ÏØŸó´jζf^JRi ûIm½°»rÔÆ¢ ÁŒÿþ¨ ÛMkÅ 'Ʊdbrè÷É6[m’Wn™ØwÂ7u²oñmiN.âÈo»ß1‡m[ë™WFý>õ'¯f§„ €ZZ»ñæž2' EóÝ£hD*š»•Zûnò4è;œwyGSüõX³µÜù¦A#n¼7ï¯tœù«wãOk `&Ÿ’·AŸC’½ˆ@‹ –ëGˆhÐùóÎ%iTœä¸¾G¦çOWOûÚ•v òmÝp¦Àqã›÷ìU_<}}¶œ‰K}׉:¼¶»‘D:bøþ5|OÓ³R°Íý9–c÷ýæeŸß¬?ýrPß^YÜ…{^?ŠŽÎ>„Ec)¹çOŽEB˜\öÉz:ƒ¯T³F“kQvnœãzÿSxHN>—’«ÅŠÕP.7oO¨!»¶îP%”5#9Rž5­¤*‹ºqíÙ‡$€‰avòΚñµM]Â]ð÷õüSbÙ:®&ıº5;+† <—ÍìÓÌyt7Þø²\³SI²®ÈIÀE¤#‚üÄ ÄhE8XQðŽ\&8§½¤£ÞÙÙ$ê¿0+ ­ÊÔš+žoñêÜÎàºjð„Õ¾e^V_—-Û;m%Ö~U…vÞrå3¼Ô-&‰Iû\ªÔ±ŸõêÞjÌ[½ ÷¿uM$q¤^A€]™“(ìÑ\ßSÏ´±«ïÌ–røœœÓ¹nLBÞ»m–¶Ú§ÐÜljØ@ËÃ?|&×ÇAFÞ$r¿XœfBͤƒ|«u½ŽÀ²ôô‹ÌÞéI&û]­ÊW+0ã ôCK…$ÕŒ#õÝâÂ~üæq<ûy©H¬ 1a9¹ËÒcG$„§½!»½| \ïuUÒÂUÙyvm´†ŽûŠ´6‡Ç¹qö2w›4¸·[bÕØïT’Ÿì¾)Ä~6™ƒÙÉ”1ìózbÒí¤ÿªèfqâW>wlO!_ºâ{.ÉêKÊ*_.#.–UœM®ÔLvòÙ§ÐÍ{È™ÍÑg~äN!*Ž)òþuNp8k&%æhŸË¿¥~Ïêás«$ƒÏáºüº6yǬüåòö\ôzHè‹ýQüés&h ••k¨Xœ\.ëD®ÓÚŸÎ%Õ©¾ËëZ\²÷ðˆÔø(i–»©¿¨Ú…·ÿs&VÎO·*),ï²|w¹OIµ FŒÑó 1[}u˜Jvï6®_I.“¡ÞÛ˜EêU*mîBŸÅj1ÎTæÀ°7àå4ÌÚ×?DÒØÎ¿uûL-híÔ/)h£ œêß ð8‰ôÎĵ¼Ø£,ó©lèÄ+{JÔâ§î‰ Íèé &L'{wÓ‚T¬š™$¤ŒA·Žqž Û᪶nq›i{ä€&ILH€`«n5”N–Ú>RóÖ~«ãÒàÛÐ|p笚«åWqtî´&˜4º3——xÁïzubÞõvÖ|V*×ø—ƒ~øîÒI"Ån‚³ª´)÷Übgx È¢H˜M£êT•8šª’»’qW;Ð ‚ƵÁ˜YèØ¥|gGëÐýòþvIÜÎÌÁYãÛX¿uû,q§H¥qÁé¨qÚŒw”'¬U9¡§UµóìSñ—[rd[Åù÷4kßÞSŠcÕmK@®¦Øë\0Q]|™šv­Ñ4^ÁàegÉÁv‡¸,—LÅüŒHl»w¡4–´¥gÚX§U›ö€ôÝç¥àý»æ"•S©irò÷s+Ä݈ _ïþo&C<ÖÅ$IÅ qÔĸ>²Þgd˜¤VÜva*6ÿl®v™†ÃXÃÅúÚÙÓ®'©ß¤¸ ¸ff,6ß=çÓɺ©±ÙŒç¶¡¨±KP~_ݸƒÆ¿ÙG’r¼¶t>vÿSa ,i&åÖd:†þ¨>Z8ÙãG¯Í 7çˆÊFJãUì«!gk¹–e—©ø#lyÿÁ;Ô¹žÓûÔç«_ztK ~·¾½œ$DÆø.›–(Êôö‘:µXíUµe£hãþ¬¢µ…D˜å×¶­©‘!bÿ;Û3›0UVrSúDú¡äNʈ„,œ…—ÿcºÖGcóñõÇGU½p!ý õ©k·–ð^ ü=ä;íÞ§‘÷ä§%x—ëêÓ Ã0;9\¸L»ûè=.:0JÀ©×Éß«íìt¿¾³×î®Øm©Å´h#IŠ\Ï’Ó Û‰)v‘â²C¢Ûƹ•½r9\íõq¤„£4¼záa5žõ;'ì솼Íì„òÚŠ³¨fääçÔ¿ùfjã ÿäX³òš yq¾ §ëö)áŽ(4C€°p ˆq °&ŵˆU>c¿ÃèmDrfvòûüÈeBö(±Ä~œÅm´C^ß¶ñ Ž;ß÷mû¸oÛpíÿÿ ç+¶LÍIEND®B`‚adlint-3.2.14/share/logo/adlint.svg0000644000004100000410000127067712340630463017167 0ustar www-datawww-data adlint-3.2.14/share/logo/adlint-524.png0000644000004100000410000011555512340630463017454 0ustar www-datawww-data‰PNG  IHDR  ™†ôtEXtSoftwareAdobe ImageReadyqÉe<›IDATxÚì} tUÇ™f „´ï€$$ö]Œm¼"ìØŽÄ@;ëi§3Ý9ÓÓ‹MÏÒkÎôL7fz'ÝàNº³˱“Ø€À†˜UBì«H,ûŽysÿ«wå§Ç[ªêþU·î½ÿwÎ;‰wŸîZõÕ÷ý c@ @ @ @ @ @ @ ¡@@0‘H¤ÞzƒW±õjLð‘6ëuÞ322.Ð#a „p ó­×œ(A(ØüB”@¬³^Íh£3J B€H‚õZj½:"¸èˆ~o=e@ üKš¬×ÚˆÀßi¢³N ‚¿]D!qh¤«@ ‚¹D¡8j˜€%tE@0SUh˜…VR@0‡,Ì·^ç#fâ<Å6D@i•B¸&0Œ â¥íqë…ÖÛrìêóÖõ\AWŒ@„@Ö$TÏúŠùbsõëb~ÿºàŠýùbôßÑ—ýû òY Ò@ Â@ ø˜ 8¯XÐÀCvŠ ÖőߒŠhl@«¯Å\RŽDóH£ÌaÉKÿk‰Nf;XT¥°&µƒ¯/\˦_ÝÁœßTfš@„@Ð?q4F_Ó£$¡‰Î êä¯u& ¨uàóë e¥ÐíE Â@ ¨S r0‡}b)ô£-úE¢M'‰€ŒëíµœÃ¹&«8" ‚ŸBSt9=Jˆø‡D´¨òé¡C@îPkFÑmC Â@ ˆMÅQr0'úN±þGlgÇŒÕ4vVÄ…ë·XsûiöúŽÖyî:këº4àÿ›Æ•²ÆšB6ÇzŸßP©âQÖÀAæÇRÂ7K]rðÒªClÅÝÜÛça/έc/Ì­·þ‰u>ÀΙA·0p°ŸO !xqXXi”‹Vîc/¯í”ÞˆÃò¯NÃTfPš%!ì¡>FE˜Og„`a4Gˆæø´Ch*e½½(ýå×o±¹Ë6ßa;Èbáìj¶üÙi_õ’u¬Kèòˆ0ÂF@=˜%õtFê‡NhäÄ$•)l²€L@]™K—›@„’0?†$Ó!(@§,UE0IƒEhŽ ôcB€B1D«[¯× ëˉ_Hd õ².Z¹WY@àds{ÛgŠbzDÁR€$Xÿ<ÏúRÛ(.`4ZžÊ„ÅóßÝi+.@d›@„’°Üz* D¾¤NêÀ…ë±e.2/Åûˆ0|Jê!"=šóNvÁ—u^ºðòÚ£DD¡ N\D¢Qx‘1‚Ÿñê¦n­T·± ‚ÉD¡,‡(I€w ¾":Õë<ø›„à!“NÁ ’à”e~!ˆ€Äγ׵ÿ]•Ù" ‚N¢Po½-fT/px5q·u]¦“O Â@ð5QpÔ„&:r«Ug‚Œ ‰Q¢•¬[9ú4ÖÜñ{èžè (î3±ÿGðê^ùˆNÁw$Á±@Q¨§3’΄ïG­÷Xr«E¯&ø»‰H©/Ëeõ¥¹HÄôšB»Ãbcô@ a Q¢ðbTQ Û!F!p1:Ç^TæØ¯þ‰¹"Ÿ Íøh—Ç}ƾ&öuawü.G{¯°k7ÿ¹jý|ìÌ•þŸ%øÌ$èì'ªG2‚DÂQ1ꢃ !D¡>ª&, óy€ ˆÁÑs×ûIB:•&þ¼œLVQ`MöE9,Ï"ð»H’?ÙóøL$ÅgœŸ'Ö'üNÀí¸­à3g.Ý`g/ß°ÿg÷Å„âŒõû³Öÿ§:O€æöÓ Õ @$« Z#ˆ‚¯TƒuQ‚ÐÖ})eTü”Úâ((`•…}Ä ¾"o€BÀ5ùË\#¡ëÉÿYP3à›L¨.Ž!ŸH‡ã6‘ø˜è¾`Šã1ªE"u"^™+ˆÃô( 5‚@ Â@ ¢`$RÐO’Ø £*ómu ²(—M±Vì@ *£ Á„ ‚2É«Þ&’@]àý¾2ëØá5~„C(êú?¤Åñ3WY—E(ìŸ/ßHrþ/EÏù'Å€4‘˜c¿ôÇM" " Z ¬r×EËû&²¦ÖG BMàßÒwDÍ6ˆÏ÷Õ–çÛ¯é£ÊûÿïzT}è{]e»/$%Néå—£=ÀÎÞ‰@DD´„Ê¢œ>‚`‘ `1¸šì%¦aÕDDî8Òï£È÷æfg²ñÕÅlœõŠÄ‘ˆƒ'.Ú–F—õïë /ÁÊXq¶»¿;$ˆ‚k@ ƒ×ÛOÛïññ@ à5­¶Ä& ±‡Ê'nM*@Dâ3"v† áˆqQñÔÝuö>tÙâ;Ø}Ñ~ç%óªl1¿¡’n‰(ÀziˆÔ:hÞÑÓOâ„i1˜%•’!xvDDñ}&wNkÊóí×܆ûÿ@ŠˆöŽ3‰¯¿E À¾p,Œ~ò0½’ÔA’(¦ŽX Ð5Ò÷âU„ÙãÊm‚0{l¹MTMÜ“pP숈¢cuD“E `]q8tâ"ëN’‘÷¼­ÜkO‚ê0Ï"”ÆI Â@ ¤' £ª‚¯‰B2’ਲ਼ÇVØdA›ôOv„²ãIöÙ±#Šì‚&wvœµxO|Ïôea,Yu¨ßºxîÞj"" BQhb}­¥ëƒFª,’äàÑ©ÃÙ¨Š|O&/ô•}ˆí®mâ>TZÃæ4TÛ/ˆuhï<Ëw[äÁzOûàXDDÖÐD¡Éû1 ËÖMIFWæó­ÉŽpµOXVEIõ9Ù™ìž Uöë+ÖÏ 8ìì8Ãvq’‡šê)æ@„*¢àÄ),öÛ¾Cv ±Å“’ð)P*Ó+ dGà­ì# ‰ˆj2µ¾Ì~¶ì?ÍvvZä!‰mäâàišÏÍ®¶Õj¦E Â@*YXÈ|§Y `98)r(µ|„iÃíØ„T“„ “—.U#(v„Ô±Gä÷ûî UöëÚ‡·lÒ°~g7;‘$`Ò)µ(wŸ­8€eAåª DA! õÌgö¨ @–µt°FÛJ§¦“ž=™ð4Ù, v„W}3r²2Ù,‹8ÀëÜåì½önÛ²8Ÿ â$ø‚{^Že±pvµ‡ˆé »¯‘4ß'“N™¸#&ƱG¸ HòcOü [÷Ÿb»;Ϧ½‡AmHÖÚ[ù3ÿwŸ–æèÖëy‹44ÓÈI„>²ÐÄ|”ý°Â" ñ± #KØüY5ì¾q±Ç%´*•™¼D'QÂÀ[Ÿ@¸•u:rÄuìî¿+C’´Ûn=ájã-DZü]P¶8ÍÞoïf×?¼eÞs/Oú9{”8tÒ(J„UˆÂ|Ó÷l‡evúÑþþ ùÙ™¶š0V­­,Dâ&‘‰]aàžì#|êBªÉ_†¤D$ã“I“_ ¹¤èDÛ÷iáù›[÷[ÄbÎ^ apÔ†—,Òð2¨DÁ% ó£dÁè FH‰|iÕ¡;l‡I²‰'ŽHÊÕnºÉ‹wâ ;BºÀ½²—:ö±Ë]ç#'/ÚvŶ§ƒB´EÕ†6]‰0HUÐ ðuÚ ÀvXg;$èÉŽH¥H„ÖŽ¼7díˆtÇ U%7ìêfÛöŸf7<²+ ƒP–ÐHK„@ª‚¢ŠBl Øýã+lE²¸VúØÜêÙò+{‰cǶ#ä®ó'ŸÅáÛoìa µ!D ´JRŒ! OΞ}p”mA¤<>‘s!uþÄ¿—¯€âë.qÂT¬Iõ±‹™€¡ÑzµZã© D¤*¨' _žŸ þu“Ø'MÅš˜_‹5iº7ýXl?ó¬÷”IA„`¾ª5^ô#QW$Šy´ÒøÿkQ(Œ*Ö$p¡U‘ÓŽXµ2)ˆ0 $ ð¾Æ ¬«Œ(ü†E*ÓXn`£Ê2‡ÀŽÐ=«VÈŽ,^–ZãÒÖÛ@U"‰0 ! K˜Õ¥G:DGQ0ÙŽPnO`‘”ýލ=ÿdG`6YcX-t:ˆ0¼# ÅQU¡É¤ý‚‚K@ í¯ƒé#KØo<4Š5Ô#O6Á°#d&@ììÿMƒÕ†µÖõxÙ" ‹hä&Â@ÐOš¢dÁ¨ÀÆ>¢ðIeÆaE9ì¿~v²EŠï˜•72iµëÑLáW;Bµ @v„'x1:nQ@$‚F²°„fA4·÷°E+÷öwŽÌÏÉdÿéSãl Bfâ0ÉŽ@YécOf2õOǘÍ­UEv„±p"©‘‚b¢`œq Ïw瀀F°~mV­MÔN6zìk>`ïLÐìFv„ɰÇ1²(ˆ0Ô‘`æk™!„ÓjɪCý¿ƒ8…ÿöÙIi‹.éXñ™lGD4Ma¶#Œ8vÇxn‹sò_ŒŽk (‹‚,@]…¥¦ìO¼ýq `?<0¾"é@Iv„·ûDv„†ëà aÔ7×±ÅOe/έ3e—š¬W‡5ÆÍ¥²Òþõ’0—(G‰ÂBö'‘ýð\œý ÕRb"ñkïˆx…Á„ÞɎݯ½#àÞpß7ÃÝuNuö’pÐXSÈ–?;Íz/0iȃ¸†4òa ˆ“…zÖ¯ÐhÂþÄg?4֕ت˜Ê|®•™ûN‰wN ¼„‹´p®vE:%^½y‹uô\a½o°žK7Xï¥ëö»M¾¬ßÃÿóbrMñÿžd½ÍÎduùwNx[Y'# ²w_Mjeÿ¹T6œ¸È¾óæ#Æ™çÖÛŠƒA6Å ‹4w•ýøÝ=ìâ•~R(’CèÉ‚Áýu@¨ Êr\­øÒNœ ã$ níP~f‘Pˆqx¼±†=0©*©eAv„ÿ àÆ‡·ØúÖclËîî´Û,œ]mE 6P0$†Ð’°–{IÕUøÝÇÆõg@ˆ ú~¶# »áû;ìwB@m˜wo++ÈI9 “!~&g¿=ËÞ|ï€M R2) nCÓ¸RH5¯"Â*²°yœ Õ,Äv•ü‹Ï7°1Uù¨ÅƒÜ¬øîpqíbüþ" ©@&TßqþÈŽWL# ŽÚð“w÷°c§.¦Ý~ÉScíº ƒ2(ˆ0„†,,avš„Zò}E˜>!è§ð{Ÿ×Ø(JüfG슅D¸1ct9ûÊCcXYL€$ÙÁ ‘è¾½ßvŒ½Ï U"_ûú V_šK¤A!Yð4m2Q`ãïÅ6ÞÖ .`;âôŶõ°:¤1 x`Ò0öe‹8äfg¢Õ»“aa¸#%æ 2¬\½‡ÝLcQI変0YÀÆŠMÝlÑOöõ[c«òÙŸ|nò€ÒÎ2ê‚ aðÂŽøÙ¶.öï:•é 8òs÷Ô±O5Ö¤]qcª ɯ³ìÓ üóƇ±×Vïå²( ´ôÒg&i Â@@" ž×XUaÅŸDC? ÄcQ "Å Ç3ø™`G¤" Gz®°eoïµß ¸¨-ÏgÏ?6Á~—U0ƒŸìÓC„Å÷Àøä‡ mÇØ†Öci¿Ó‹‚H†@H›ô¤ÆdA,x¥µß‚QøÂ=‰û@$ bCT0¯ñï:mU  4€â›•)|ÃfG˜FnßqqàØYöö{ýbQP­ D§ xdR%güåÆñ ÿò›÷ô“…ttºßã'®s)ô &üþŠ-D4áݶ.ö~ºƒ?sÅÝuVu¥ùhÄå>E4?3®ž7Áã7²Œ}ùÉi¬²4/å÷‚Õ¹à•ív@µ‡Xµ~ Dˆ,ð 1Í]¶¹?^a\Uûñï<`Ç-è|Ü ¦n\hüãï·’¡@þû¶±76Õr•Mö‘ð\³ç²¤ÈC:@YyP5!‹HC0‘I§ dR¨Ø¯Á}ÃC!y5À›A‚¿½ú {×  ðv¡:žó^”;ÄúwAÚíÀJ:zöºýoPŠàºÆÚJ&ãÍì@÷öŸšÒ߃0è" 2JEÄ çAÕqdge²ùN²c6¶¥Žkhn?Í:—]· =ñÜïŠH#{B (†! dT…؉å÷ÿI¼BšvÅ:²#âÆÊŽ€~ÿ㵞ª PˆÁë‚¿T ” db‡uHÄVè4 P¯á·-Ò‘<™ ª³#’Ýo:³#tœ¼À¾óf»'×åO¢uìc¿ã8"i¶Ù}¨‡­Ý|Äq Ó@„ÈB¢‰$Ö‚€xP_3੾ ƒ©hvÄa‹$€¡;]È„yÖ`èe¹\ ¯·÷Øï&ª ÀfO–ð:‡-;ÂÁ‹0ü³Ç„!rÇqDÒB‹Ý¦çÜUö£ŸïLKЇâŹuDˆ0¼& ñ%ž‡ç°ÿù…6¶² îaOnGø%;"þÿÁ~Xºj¯V’ðܽÕlþôJ¯SÈÔ‡æ=lYK'ëŒZ&àÑé5ì ŽI½²— §·}–aaˆÄ—ùŽp´?_¸r“ýlÍÖk‘‡´ÄqvµmQi Â@dÁ#²Å˜€,8€àÆ¿ýêÌõüiGÄ/È4Ý™ßPÅ^°VH&’„Tª ™ô÷MÆž{t‚ÔD$; kGÄ;( ?[³—uqy%Ïôªë%‘" á% ñŘšPÁþôs“ï *ƒ×vÄ+k²×·v)=¿0¸=g­ŠÞ[íë{b[à>1Au€x†?˜?åÄ••ƶ#xÉémÁ¿‰AàY„: ^·vD¢cÿÅûÙžC§Óþ}‹<i Â.²(â©éŸdB$üÔÛéHaUAe&èÆg@_üÑrS·'ï%qÒð¢Erc2(üÒl ÃŽ0‚0 Ø·‰õ[ްÖ='ÒîC®}á¯2(ˆ4aYˆÏ„øÚã­×¨npì•d!ÈD!qˆí+¢5iXCL³#dï –{¬ÎÏ{õ°w6à" fPip*Ü$#ÈŸ>=9%YPB–tmw ªÈÄ(Àj^a °Y:þ|[b$/Ðuæ [Ú¼ƒ]¿yKùý$S;$¢ì9ð¾(CDâH"ÿ?yl%{ìñãY_eH ¯^<Öøò"McDt¨ Ëu“`õÍuw…'cÚRË žXÅšT“ ØdV8îÕñҜЅǟi+*@¼8þXÒ ›œÊXþïˆø¨6tÄå6‰ÔIQÒ•>¸‚¶¡2­Xjå iF# š,h½ÉÕXXñ[÷p‘…T+ÌÞ"¤è` Dáo³! ë¡õï÷27Ü@ð¨+@ž€Dé& ?yÿ°˜ ‰Txù}ºøBDbLˆp<†_{bi€˜,âöˉ4aPE–š@þî«3íôI/V6ºí¨ÜˆI`B„´.Zñ O@¢t« ì;ž»z¿ð½¡‚œ*U(Œ¤¸vD<*Jó¸Iq{Hi €I€(hõ¼ r_2² ZRU=àòlsúâ ö‡ßoE;Ÿ0„èqû]_¨ ºc€4¬ÝÑ¥…œÊ4›’yvü¦6ð~HT¡Ò°àqãIÃZ" D0É‚Öîg$¢,`­hL±# Ìóm'Z¹ççÖÛ!© |€Ø8_:- °&Ú;ΈMöª&IWã…"®š,`Úñ)7Ÿ4GIC==ýDÜ`Ku“…Øê¼dAhâÖ4ÐÊÚÿoõA”FRޱô™‰t3 ÂQd ÐŽ.|wÍ~;®!Õ½¡‚ȺR(‘wô…Æóý(i˜ñ­º[dix-š2O  EÖFo$ÏÈÂßÇ‘… ÛXNº$Y.ÎaÔ¢Ð×ß³HÃ5 e‰ìϪK;"þ÷ei˜ÇI #¬OeÕJœ1Ÿ@„Aˆ,IXnY[U 1øÓŽ8ÒsÙV\?õÖª¸õðª’\ é—@ y€Â°rÃa”•=Æ=Žý<„ÍŽˆG¹HC4Ž@„Z 3ñ( h·¦Vf›¿~k¯ë¸ }þ{&Ýň€NƒºHæ}§îˆgŠa†B¡×ŽˆÿѤ ;-¡§žº µ0“[² :xšjGüÛ†×q P_ÈB0HXç.ßP7Ù“!5Ùc)e¥CÙÓO5™4,¦ DÒ‘HÔv“@…TdAW€•×v…ï½ßánI`MdP_ÈB0HƒÏ û`ÜãØÏƒ‰ uÚñÿ1 ¢¤A3–Rº%†dda>Ó˜áer«,ÁŽøë·ö¸:—”!X¤á`÷Ûž`dG oíˆøi˜ûÀ8Î1ó’î”K'Ý’2'ˆ0 À"µºÄWp|ãéÉh6D²ÁÓD;¢yëqWVÄ,@ê$A?iБr ×\ö›ˆxt9Ö¹œìQЏßÔ×–r“ê48‰ DôgD$" f‘…‡'T ¬‚üeG@€£+‚½œ{Õ¤¬‰ŸÆdMè«‚ûY?Ubˆ¸$[2 Å„1•¬é~cIeNaød±Ä49BÐ΂oo¿ƒ,|fúpåj€‰v¤PÊfEôe¢˜/ç”Õ!7ï?͸ˆú<¸R($È{Ä'…N;"þüi˜6i„©¤Zb‡0DSgæë"  ,tž½Þÿ; ðRslj ˆ[R6Ä;;OºZÝR©gïµ.–U}üÈÛ[ŽâLöØFsÍvD<îŸ5Ê&¼¤²Ì4‚‚ ÃJ¢AŽ‹u’Ú‰%  .à­‚üeG¸)Э˜©(“9€jšªV:qµwœÕ46à~Ö¯í¯U+Ϲ˜sÿ86¼ªˆk!ËL3i}dèC´Éˆ6O ú½Ç’nLE‚nG´³ÿcç%'§*»3Á,@Ã*Õ%¤_KP2Ýóqy¿¢¤tú$2‚qìÊ&üøxÓDVV’ÇMšÛ{t:»ç†pá5¦)È|6ÎŒ·ÈÂ?üÆL­Šivi’ô‡Ð!ä×Fe<r‚xéÉ^ÓÄñkNEçùNN8øS:³²2ÙcM“ìw^ÒåšÐd-:—†õ9aˆ^h->He±d¡ '“}cÞ$»æêd/`å•áF]è °£ GS1%‹[?OË€;>(Ï™ÉT"âò¼ LÆ  ?›}汩\Ÿ…@r;FìÜu]§ëŨ­M„!Àd.°–HWÈb«8@YHÛ¦{â6`°p^¶—{:çÖkëšHp1ŠÎ­SzbU†tÏٚɎˆýwiI{˜3ÝHÂWZu–^µ·‰0,À…Õ·_ò¬0“‰vDé{ãqúâ ö«ƒ½â+×2õ+Wâ(ªØšØ¼ï´ø„Gvú FÐ$*LF1nt%›2‘/Ýbż²]×i eAzݬh¼²#¾'»@V„¿Ö„ÊÀTȘà©Ë rÒ •ÁñÙˆ‚cÝfö¬Q¬®–O¹j9xNg†Æ°Å3ž0èŒ[ˆ' 3ëJØ‹W¨DP‰*ãÊÍ[lãqu²"ÈŠð@eH¶@ f¶Á‚bGHl„­lÂÿ=tß8Û¢àÄŽ½¼ö¨®Ó ñ MD‚AàBj‰[V›>9¼8‡ýÕPVí&(<ø•ED«:‚¬½ôóiöõ) ^†*@Ãõ$÷“)v„_Ì íˆD× 2& ž7sÒÙAmЄ×ÂRŸ!°„!zµxLÀfã3"€,ÄfDè¶#"’¦ bóšD°#ÈÚTÍÑ¿€‚N*Õ¡øàG]“&Ùê=Ù6 0€ÒÀ ‚Ô”néô$"Âàchi*,Øì€ÉîññBÝ'å*óìˆDƒ);Šv¤uá…¹õ4ëú*ƒU·$! dG¨}ž1Šˆ‹ÔËÀ ö0(¿š2'懡ßD ƒuá2 }" ïXl,bƒ1WíFdThT(ÐÑÿ…A•ÊÐ}æ ë>{Åõ„‡óìðÛ&q õv„šqîžY£Ø0ÎòÑ`Çg­©äÈAOµ aˆ^0-‘«}y¿Ÿ9B%ÇDAŽ&Ø2&Æ€+šJIê© nUUÏÙ¢ÇQs¾¬=òðDîx†æöÓì¥U‡tœÒÀ§ZQaÐbEÄ9BÜÂÿúRƒ’•=x#ˆÇíʬ°$H]·ÊÐXS¨ä»wÅ5¤";<˜`G¤ÚW @x±Ä" š‚ £‰0ø@]©Iõ߉/û øÆ¼ÉlxQŽ’U»‰vÏ6% 5‘º<¼ ¨.T~„—섇óìøÔŽ@Y¸ /„·Á–hlÉýý k*½8¨­°C¢V„ò–Õu»è'ûüâæL¨pýàÍŽ­½°pv5© ÄÂ{«•UÜÕyÖŘ!0ÍŽˆà‡N;" Ój¹ë38å£5!YAR”[mÛu·0¬€-zb¼ÆŽþ°# X“hvÄsÖÄB(i˜­æÚ:¶Ùxj3ÜŽˆGÓþΖ`#/Z¹OÇi ¤5 ˊ€ôÉø¸…o<=I`?qWJ ¤mD»RBe@ªê\¨²% T4Ùîž_ E{L)AŸ—ͨÏðòÚN»A Κð=aÐeEÀ ·ð›sFÛ ƃc’±oÐÊZhBiª§Y5À€"\ª‚ezKw(v„ËÔµ5¥ö‹j©)ž!P½&‚ 0(·"àÆŠÏå…˜ˆ]Ð9 ë²#0šM‰* ó§WÒ¬p¨²œŸ¸àê9#;Bì8¤H…êšÖÞ7{œ­6ðÀ.ꤧ>CS :ùš0XŠ35©þ;pcÅÆ-ØVļÉÊ&a7Û¨'-|Ÿ‰_€•'•>T‘ÂÃ1 Ùîž_·*¥*;‚gˆc¸OÀš€4KMõSÐÉ·„!Ú+By$êK òw,äd¢MÆa·#(Ø1PeKœ8{EÙ³t;"‚šê3À\kÂÏ Ãb¦ØŠ€Ê%q ô³Ó‡H¡$;âNékøBvDˆT†ük +Ï_¾ò]dG¸#G¤ÅÈ®Åÿ¤ZæqZMý&æGq" ¨ MLqÛj'…2вR(UNÂn¶QOZø bG@vÙáÁ¼†*%ß{îòM9Õ ¼“7¦HÙq¿’5XÈšè<{ýŽ‚аÔïm°ýª0(—wÀŠˆM¡´%y“´¬Æxp‚fGÀ6"å )•2\h¬)PRÄ)Uà#öj×í„g cš‹ªÊB6qÂpîSpR-ëU/t‰0Ü©.À WšÛ žäêÆ¬ˆ™u%MÂþ±#"sˆ0„*Hâ9K#ÕÏ/|ÃŽR(•‘T)ÓD­‰ïj±&|é+•s”Ö\HdE@€£]ÍQñ$ìfÊ®Þ{àHaTÄó—ojš¼üiG`œ ‘€Iž±L… Ѭ ©–¾-í7…¬¥XàiÅâ›Y2ƒDíˆÃ§)~`K`ãÄ™+JžÕÏŒ‰jƒ.;‚iÈ@k¢F  ´ÂÖ`M4ù5Ò7„!Zbs¡Ê¿‘ÈŠ€ŒˆD¥L°#T ‘…pB…ªtýC\)YWƒ6#Ôìì Ëdcå½³Çr÷šh²&|é'…Ay c|SPþ ša¢¡ÒZÝfçqþø²#¬2à×c8Ÿ¤Õ5Úä%`Gø‰dÈt‰4ÝŽˆÝÈÂÔiµÜçC“5QÏ|é  £¢c¢¬ˆßš3ÚN¥T1±ÑŽÅtE½æC…ºt..ŽÁí³ãæþ7ºx“Ä~§&fÚ±ÛL˜0œUVqo§ÉšxÁo~Q”ª Ð+"¾@4•rzEhcñiV4ºˆˆ®Rqn&#„Ua(0vßTÙ&¨ ^Ù2Û`ر˜9Sln†Ú Š­ åAü¡# ÑžâJYX"ùéž—üæ4`@1ÑŽˆ”…&K"¼¨+S¿b²aºÚÀû!;=ÈR‚èç±ñµ ø]C¯‰…~jm4aˆ…¼ òo¬ØÔ}G-ñD5TLÆnÈ„ßíB¸¡Â’8|òÚ³£|6€ øÙŽM›:µ– €„ xh ¾é3aºÂ ´_ÈM‹~rg £LùgÕ+e“½Gv© !' effȨªÚ2"¾>g´g«ö Ù•…9Œ@ð#ÊòQ'û g·· 92ÍŽˆUÆ.tþ4@.6µ1•i ƒRu¡¯ÔçÀ4ʯÜ;2a¿UÍP”+ÛUEÔ’”‰5‚ûlú”T ¬ì P5’m?nÂp!•êeqvȲ`¤Ê` aP­.@¿Z‰Wœ4Jí éеªAvÁ“½À 9¢¹’éçÅÏvDDb?‡ ÉV@©V¬2&V]` (ª ˆ*™4Õ6D^!7+ñy#;Bö¼øÉŽpÆL•kP®ýºˆö³Â ôÄ$J…‰UTË‹ªˆ‰vD^6ß ­¡¡ Áp`æ´—äHçPÙD'hvD,Æ ª Éæ– « žÕUEÕŒISx>Ø`kU™Ïµ]|ð)à¥9Ê&<;BSá9ôÔŠí 2Œ•Ps2Je0AaðT]нj×5 xaG8 [‚ ÃËòŸþfSdG¤!h>°#b?G*ƒÁ„!škꩺà;"‚õ`j")•„A1+'ìëï( &Ú~#˜Çî;"âBeH4Ï Ã˜Œ ¯¥¹¦‰ú˜ófFH++/(9’øC µ%4#´"QÑ&S쿌0Û±ÂÄÁ •¡)Zv ¼„!ª.¼ êû›Û{î(.vìœmxã(ð1¼À¾ö£G!=;j툠µ¿v;ΙdG8ÈÌÊdc&§2¼`Â=â¥Â ¦”•¿LT‰+^]ð«!õ`j$)£)𑯽£.øÁŽ01[‚ïØ#jΗB¡ÖŽˆýÅA[BƒÊ0?š Z ,Ø1ÛãÍŒVV4<ß§»CfâÏ$ÿ=ò>®£8†Ðs56"AÁ&í£ÕÅv„ŒñÀŽp¶Kb¤`'K *ƒçƒ¼¹9m?F[JÄô #eªØ…0Ù+Žt˜V›^<"K"¼À,x3zx1Ò³£8;Â`Æ ÚŽ0©5/©›8¥VøïkP`]sèN¯0¡A ÐlG$+#÷ixM©p!'Å,=K±Ô­0(+qùj²Y¿ Z PµzÒ"1 XéÒ+‰0„ `G`Õߘ2Šì÷‹8µcŠŸí})–(s"š0DQ“Šï†À¹—š$J¥$;B/i™=®<ívP•“@ê‚0a¨/';BéóKvDÿâG"øæ$…AÝžô—Щ0(,}:áª*;*WV4<ßç7;ÂÁÓw¥÷ÿ^·®!ÀŠ_€ÌˆtdG¸#G&{® Åû€ÀG€[È~dÏMŠÁóuß3: ÃBU_œ(Àä®ú’´©”dGˆ‡øV•…9iS,›wÂÀj kMD0È;ÙxcŠœå©èï 4ɪ©¯>'Šƒµ« ƒôܘê‚AâLTìÝkÐì¬cOüLœb‚ÌÕÖC ’‘!¶ç~µ#dÆSøHm}…pð#ÌM Ç6í•u) óT}ñ«›;&" fLÂá±#>! ÃX^v¦ðu$ ¯#)IJ_¬ c2 U+k„SáW;B®*eß§j%‚rZ(Âe@J¼8¥Rò²#„¯£«cŸ7+u,ÙÁ¦ñà´j%何µdZB»„ýdG8¿•AŠ 9iµ%t( ÊP¢Öˆ_Ð=±’‘Ÿ»«&Í„ò[A*C`Eœ`GÕ+û Û© ‚¸Á4e xeG8(,γ_© Öb®1H„AJ6Á|ÓqõÊŠF1áØÁ’k"ç-<Öµ}ì®:5“ÙîÔ—×AWÃ+7v„ƒ •a…Ú±M›Ê ”0Dk/(a?É‚Û:ϳ7wœôl–š¸5­`¼°#|åþQé¯)u° ’õx‘QfM¨Bš8"®Ÿ ìñÂ+Æà[;£ ˉ8Å ª¶ôJÕ ƒ²Ú é‚ä^YwDÛÄJv !U:•AqÁ`]SG]ÐmGèªVè_µÁñ‰>™U‚m¯í9KÊP¯Ë–PM´;Æâä…)UÌ…o›ðÚ±Ûüæ#ãRfLÀu¥–×ÁìˆКL]À¸ÇuÙ~h@¥«,sêIY“!±ãÎOÃ$ƒbUKC*e„!ÊxêU|7oU¬Êàæ¦!;ïØ,¤«þ˜,˜•à?ÀµÄèñ¥¦ ˆÙ|jCzr„1q3ÙªªK„k2(V´Ø*e¼§ 2¼²®CËĪ|uâs;"ö8 c¢2ES*Å5Ø áÛBÝ…Ñ#ŠÐ&ôÕ³JϾzeG`œcìqNtúl‰Ož‡$(ÖQ*Z%aP²ó é´u]âþü6c—oÜR6€È¬hTNÆ*WAXT†ßœ;.é6°"%•!d!Y`²¾Ø4^ÙJƒ¼“!¾0ì©q›ëÞH­DUJØð<(l¶7Oõ=¤„0¨´#DóY,ü Iš%Ùb æ±ß;¶œMMÑcTʘð70‚›U—´ª£‘v„É$ v„WM² ðQÆ–PØlÏ· ƒ2;B¦Œ£2˜°»‹žœ”4Tʘð7Yp«.Œ(ËOYwÁH;ÂäfS)ì™m*%l Vd¹*·%T%;ÝÖuYj²ðíz²#’:Y~9EmȘ€kNð`0|¡²ÝçŽWz«.3ì ÕAõ# v„ƒ²Ê"‰çCiÛë9¾" ÑbMõ*vÖMƒ"°% Rì¦Q«„ÕŽˆ@¦²&­ÜK3°Õ·™`E€Â€9Ùcܯ~'|jCúñ÷üG° M„WÕQ¯«ëã;…AÙ»eeéT²#¼Q@þxþ´¤Öä.¿¬¶Û ½ì2`5!GPïq])ÚêÕÿØFT¥Œù·l'˜ËÙJ‹8© JâdíˆX¼µãä•Aõj‚ì>Yøý''¥\±R¤?àVÊÍÊdÏ=1Yù=î•a¢ &;‚!Úý*ÈR©óÞìÃàGTÂme­„Ý¼Š”¿ºô”MšdGÈïdM$‹gyûùïî¤ÙØp€ä¶gÄçNHš9 “!OŽülG`YÂy*­(”º m e镨 ƒ±v„ƒuû{Ùö£ç¹nÓZH…ÊÁùK÷×'g kÂl€ä6«åñYuvëj5ÏÙ²çÅ+;Bˆ€pœcU=Bró²¥Z^+´%£±„Æ%švD,¾#QýQǤF;"~›?š?ªLìr7eM˜ P€Ü:BŸˆdq "V@Ä€FH˜GõBÅd;"‚½Ÿ ï Y•A¡-ÑZ…áUärš 0$R0Õ€TÌ=âÑàÀG*ôÛ±€x†ßûtòú Ïo'•6  ,¸±" ÈñéûÇh›„±‹±‘!8Ùk²#äŽÜŽý¨LÕG€ßl 4ÂÌ,V±“*XX*•ÁD;‹ô!Ý ˆƒúŠ|öç_œ‘4@YpŠg0@–¸°"€,üǧì`GuÏ›Z;‚)RÕ“‡`ÛèU)Ó( 2UÚÆ+ ÊzG`Ú±*Ã[Ñö×&LšdG Ø_KÒo2ªé=àÙ\ðJ«ôö@¾4w|J²à;""¸5E] ;Bìü¤ûŠÒJ£l ¨úˆN0 ƒ ¤Y@²éWî«çWÖÁy@˜;Ùüû6wÊ0ö»ŸNœn «Z…ßi«" ²q @@YpŠ3i‹ ;BèXeÊ2‡ÍŽˆUd°Îef‘N•…0¨L§iÔ©yŸ›YÔÿŽÔdpTW  †â±Ó+¯8ik‚‚ ½A_ê%©ms³’µÏN=ÙîU’0Ú*dë1¨‹c@OBÀRšT-¬bD‚©f)³ÉÂçfÖ ª ˜“&–|iIѵM*Ò0wÙf" š§ÐçC–,ü6'Y0ÑŽÀXµûEmÚ& v„̱çäeÛ)–âóÜG®ë—$›—£‹yヒtJÑ“èäðn†˜ÊðÏë;*ïí©ÁÔ0;"þ³ÉH7£ÆnŸÌ ÐÍRõC†%_ê&)&ÄP8˜\SÌ^"Òà YMg3¢ØVDR'ÉŽÐG¤ÐΗB,;"âRa€x EýrŒS”¨ ¢é”‰J i6¿ÊðÃÍ}*ƒ»›UÜŽ0a¥oº¨Óð¿yŸýžˆ4(dë¡Ø²dáá†ê”d!Lv„ÉVED±ô1ØŽ`Hv W2ŽA¡ÊЈÇ€A<_eM‰Ô„G&RþY Ò‹•>ڪǒâvP^úb#kš2,!i ”K@€£Œ Á_™;Í»Œ'+n3³#‚aGpnëËTW¥”ØÏ‰¾…é•hÀ “vFöä%kXøÚœ1*Ãqvòâ m™œ yò÷ؤ;ö¡Ö¤ô;OLd ›ÆÞ9ÑY+âE+÷ÑŒ/ §Î‚L€#7þ§§ØÝª”¯vM¶#˜ægU†H¡/Åv„W)¯2׬¸\ΖhñA=c- ‘ÜÔÙcË“þß½cÊÙÔ~ET†0Û&tÑýúÏ̬aÿûÙY¬"NMzym§­6Pï 1€çM¦„ÿü…™¬š£ SÐ툈Ægsœ ;"ÉõŒð)ù’ XðŠb°Ð\€Aîn4üÒ“8i¼ä@šžV›šˆÄ2¬Úq2¡Ê€1i*_+ú^Ý– A««Ège‘†§fÔÜÁÚg|kÅ5ðõö6ã/7 e âkŸžbÛIãÈŽðX]p¿¶aȤN—û$ø¨Pe0FaPCºù«td0µ¦HHeø¿¿<àî&RdGhW($%ÇF@Ážø¯OOEÌVÌÔ"5ÀÂYðÊvárÏÓF•±?ûõ{ØÔú2ôëLv„:"…ö<«V(´‘:¼ã(1¬Lt´9¤ç„aºŠƒÃŠ_UÖïïe­Bí¯õØ&4›2ÍŽH´O³Æ”³¿ý³ïP xoÆ·6Rêe¡½D|lG8µ%LcpK”<Šœ´iœÊÁ”ê"6w2V²ê²“¦jå@N 0@&E°#’© Ï5e‹¿Ð8 ý¤v°(@m Ø†¾”I8¢ħï®cÿå 3muÁ„Ú!Éî ²#ðÆ!UŠ#ÆÂ½*¥Ëc•Í”uOÑ‚eq/M¬É¦Þz«Ç>*‘ú 0)@d^|é^~•†í*ƒvìW;Bæ8”++q?C¡§ÿõì,öÛOL`S,‰N”aM¿R>jñ:á”I ßxööĬ:;nAåu¢a´Ú sŽ ´#L¨J™_4Tú:ˆXòº÷ƒ¼Þ;N–»šV+Vj2Ìį2üK •gµt;ÂO5æLfÛŸ¿¯¾Ÿ81…ôË0{‚ç Ž^"…ÑÆŽ(f¿;o:ûŸžb[º¯;ÙêŸ/ìÝû”ìaÚ6aTŠâ‚ITÄ/Äâ‹‚*ÃÛíîÛ_+_ÙK æÙ|$"}~ nÃçg׳ÿûµÙöûÐ(q²àL¢A% ÜA&ÑŒ‡(üî¼ëßEr+}MD“ì…jƒ¦•~ìçÿ‹+̪ǀ‘Õ˜éb[%E¼Ôi„T°&~¸é(§Êp„=Ù0\ݨɎÐx腲 ÏX„áÉ5lUk{Ûz]»Ù×J½Å" 5…ì…¹ulá½Õ¾' pLËÖ®©pÏ„*vïÄa6I\ue)W(¤V®þ¤ ~µ#TŒCXM²@e¸Ð+n/€òñUŹ™Ø—ù-^OAV])×ùî3ÕìͶnvõfú 7h *C"Ò&;e…f‚BIL¶>ÃV~ÐÉz/ݰI«])ò'ûØÂÙÕ6y¨/Íõ I€Á1 ÷ZDaNCu¿í KñR=™)»ŸV®~Š_ÀžìUÙrU)”( ;¢ÿyš-}=à¹mWŠ}™]>J†h3‹bì£Q¿O6>k‘Q•!Ìv„m¼#J¾ˆÃÓ‡Ù¯½]غ=§ØzëËj/Pž»·šÍŸ^i,y€¢K¯[DA´œsèrëUf+ ·.´²X©ûG­ ˜‘êx‚bGˆ¨˜Ç«0Ȭy„Áõ"?Ó«?œ0D‡ŽÈŽÀP òù‡F)[íšB*tÉ€&¶ñLª)fª‹Ù³eÛŸa?oëbG{¯ØŒ^‹VîµÉÃü†J6Çz <ÔÜ€¸Pä^ßÑc¿‹\ª)Ï·B•Mx‚•NdG˜¥.hÊ@QmGD$¾ó8Š]V|\Œ©=# M*nÜ ÃÔZw¨ ¹|ýa®Ïÿhó1ö…»kY~N¦ÒÕ®›I3Lv„Ô> „ :<4y{Ðz¹tÃ&{»/Øïyè¢ÄaºE$k ”) À©†Õ ("YŽ’0®º()IÐUÒWÕÊØÕs@vÚ³$eG0ÜóÏ»ãØvDüÏ9yÙìÆÕ›RϺšç'Ò˜‘‘Ѧ›0Ô©8¿Õ­Â[â­¶nÖs)}ïhýã-ÇSª ºÚ0Ûª‚,mT^˜Ãž˜Qc¿@‘ÛbŸEàýX`ɸØ ŹClQ}wP_–{©ˆíŸ1;¢ÏBŸrpK¸°’£"Œ«.¶I¸áÅê&D\Þºì©{à ’â9eÆ9¯ºD¥æÃ„a¨a€±D‹P´†z72oÀ#…¼lœÒ/Þ3’ýÝ»¤TW«“ÙºV‰ç%Ý€ÊÃ]cÊíì#dW;s…í³È( FÀ˹—e:>ÊÈAYA«©°Hˆ"›($;Ÿú*‰ê™ÌX¹úGQ@Ÿì1Hò8Q´ß¢ûZRQ$•)á,"Ws·1–°)êBÿLª²‰¯Êð/ïa¿÷Ø8Mj€â‰[×Ä¡{ÐCZ%òLN´&gxÍ®va»}ýäá¦ý~ÖzÁï÷[¿—ü €ZëÔ‚Úò¼>’`ý|;žG 𤵭ô °#ü£5à?KžÙ;®#`2sÈ`ék*#ÄJ!ÃU9„Lñ‡+¢D]ñlFUä£þí…fõÖ®Ïþxóqö…{jÙ°¢OTwÄŸvÆä½3éüM ¬:õÊþv"ýPYaŽMxƈæ{ƒì÷“¤g„¡%4ºBa Áõœqì“›L Eq ®‚ÿd%„a‡æø…XÜ=ºÌnNµ»û"×ç—¯ï`ü¹Iò«²#=°©xRXÆ4EÇÑ,ã“?ÙcœcìûS— ʳMvž‹Z ö”) ÝäµÂ0­½û‚@Éh(ätêâ ÔËÍdl"1jH·Š(Ûü{„&MFØŠî 7'èvDÄ¥Ò¢¢,sâýÖoGØ„ÁEñ&Ñ,(þg)"MdC‘ŠƒàaÀV€Â/^üí/újÖeGøµ5ÆÈ.VùÎñ‹ m´<;c2ŠøÀŽˆ ‘:WÏ&’:†QÀIQ_ é· aPÔ¥’O~^ª ¢2¼w —µ½àš¡›@*L²#¼€Uû›ªÎÆ1zaÅhW(”­\ý©(¡˜» |I@“NÂP RapT†&ö×Ëßëpý¹8‚fG»¦‰{o‚fG0îq²#4¨)dGÝ ÃQ5¶„´K`DУˆW£’0 .CË^¾Üù¶£çYÛ± ¬qd1Ù,Ü%¨E&ÈŒˆ¤ù`²ãp²'Ð&{;]¡PL@Ô=›þ¡n&@4…B[ÛsµãEº˜¨Ì!ò5ƒL+)öPªI©\'àÓ¨´$Ö÷ƒÊÀK@eXöë3ÈŽPrìÞۼǯ}x«ïýæÇýµìÿ;sÅ.ð¤Pƒah´ˆ™S¬©º< ÍÊdÕeùýÕƒfGD]vDÄNaŠÁÓñQy“, „6¯x¨ôµ‚*¯ =gêúCX'EµÂø‚ ÊYO$l­vb%;ŸR 0éC#* Ј€SÙÑ+tYûàà@’¢P@$r³ú ?™€÷ÒD5tMX!°#0ï[#³vóáVa) xÂÀ{Rt[e(ȶIÃ7ãúüŠ÷:3&áðØR“M’Ï8äÊ=A€{I Üà`”H´wœH$F³Q1vD+Iѵ’ì÷Ça YŠd‰5îÅÿÎMjeßüxy@/Ò©ÏÈÈè ´Â ÚŽˆÅSÓG°U;Npµ¿†š ?o?É>‚4!z­ç ÈÀžh?‡ O\°_À¾â0Ö"ð>¢<_l×4#šiG¨Ê÷UL†4ÙB„ã:xfGH¬[ Ҷ^p.WN<íR9º²@ۃͭ€4𪠯¾×1€0¡ðØö „­‡Ïô‘ëÕëSõ×­s²³ã¬ýŠ%c,1µ¾,aKl·×Ù/E§ÈŽàU("ÒA5ÑÁVŽ"š®3( ÐýRµLO6ˆ© @žãh­ìÁ¾cÀ%;" I€WLѼá°M¦Ž*³ &Ø YñÒU À‚à';BêþJq¡¥T%©}ˆ.@‹óØÕ W¥®ÙE5 dJ4«& è5™E‚:tZŽÊðù»G²Wß?ÂõùŸl9ΞÁj­xì ‹á¨ðN*‚;œ»|ƒ­oï¶_ >i˜2ª¼Üb[öŸ¶_@¦X¤aj}¹ýÎ{M´#¸úŒXÉRÙ˜P;BY¨a©6×™^ïµH—Ê<;§\ÿ%•á×àV~-Ê€ù`ËT7S§˜A&@=pH) úÉÃV‹8À 2-@qxpZuê¬ Œ–ì´ÓEv„Ú±+¿(]ì•K‘TÔæZ­Âà¦Ã¼Pú©ØÄJ‹ãV –áw'³+;ƒdG¬Ûsеì>eÛïqÞzFÞÛÙm¿F”åÛÄaÖ„*”ï&;‘<áj‘&Úñ63K~©0KB©ÂP¬b¯yÙS^¶·bÈsŽbÿçí½\Ÿ[â™{jÙ°¢m¥‰½$ ºˆH$FMXµ½Ë& WÉr0'Î^a?jÙÏÞØx˜Ýe‘†§~¢:˜Øäj­^ª 2j€Év™ôÚŽ€~Kõ¥¹¾" JÀËž¼T³F•±ÉÕElO÷E®ÏƒÊð‡ŸäÍÊ  v¨?þU'© >Ãõo±÷wvÛ/ˆqx`Z 5¼ÈÝ@‹ x¹üdGȜʈÀŠ[f²×eG ‡Ä~rôh†³è„A "„A‰%Áô˜—=Äó“õùY#ÙŸwïäúì/ÚOÚªDl*¨ÕÌt‘’x£–=§l¢@± þÇîγökôˆb6s|»k|•Ô½a‚Á$ìHÙ‚c°Œ÷‹¼¢¡®®™Šž2ÕEÚ[+²$øA¼¶$ 0LÁßôïß=¨dbuuókzÈÜ\`5üøƒNö;ÿüû‡_ì#²09qý¤e?û«ïofÛœv5™yeG˜@æU+Ù‚DGñ=°Ãž™~`¼¶$@…=¯óÙô²Ç.°é#q¸Vì Ÿð–õ J|B}Yî91þçth‰ëæÚ"ÐÝÕt@$‡ÕÛŽ²Gïªc3ÆUáÞP+W™IÀ¯äAf_M¶#˜vDÄ·f•;ÂPǶÂ0gB%[·¿‡ëóËð7œí¯1Ø0úÀ¡Éޏzó#›$ø(ç±Ã8$ .úîüÉŠ¶€Lé(tN‹x ±¿÷#qxdfmW$p}cGHÜFû«œì1ìlUÃŽÀ¸îŠÚ\+% õØ\d¥dŠÂЧ2Œä& ;Ž·U††*ƒnÓT;Ò"ø«ãm¨çÞXSÈê,Bdþ]œëHÛ©1ï¼Ç’ È@‚èj3áßmÝ—ìà)Ó‰ÃÊuûm›‡ØàHU“0¶Dï†83Æl5E19îBÂNÑ  †_U„ÁS@!$S@hýð„J¶^@eøë_Ÿ¡|¥/ÓûÝK;bó¡3lEËAÖc Q2¤`„êBôö²zŽ¡À~Ío¨°R¢$ÞMµ7:N^`ßyó›T_Æ>3{4+vŠ@ydGx|g"©àéÒég;]¡ˆþ¦°¢™Œ ­2¬P~¹ó${|ÚpÏÕåƒ ÇNuô\aË-¢°û¸9é‘@`•Þ½TT«@ àå¨@ÖEɃiboçYûõÈ]uìþ©#XÖLÜg&LvÂù";Âý6a! èY —ò`Zm±q'T†gfd+·òµ¿þ×÷:Ríì  ˆMøÑÆöæö.&Î!61˜7½Ò~7!ÇÙ+4EIÒââõöÓ¬yGª*sÂX³í¨mS<9{4›TW†ȫʎ("‡MÈŽƒ)DÞÓ: G ÷SÓáɆáìí'¸AûëX•A¨Â¡"Û@§±v÷)¶|íAO$Ì·¼†ª2=!±±üÙ¾8ˆW7u³f‹@xÿpáò öýwöØq æŒgEù9Â÷8Ùx“=!;ÂdLWIqš•Éžœ6Mep§xs&ÚˆOø»ŸïõÌ~ ’à}qÙÒg&ö“‡t{ªâÐvð4{uU»ã€H‡`GN ’N€Ør·ûcŲ#n^»iâ#*, b>@U‘?ÃC*Ù$ö×<*ƒ›AG¥ Ä7~ØÊÞØ¦¶“C:^šÃÞ[Íþ»ÅQU]²¤!Þ¢ ;aeïB¡‡"ß«­/NŠío}ô1;¼õ0k}»ÕÄK/,ø‚0ø "*r:}ñš  ËŽ€ðê¥YýÖ…@GqÐã¶ÄÞÝÃÖ·“ž4oGDD΋š²Ø&Ú2×Ù9?@Žïí²‰BïÑ^”ëÄ[Y%ˆ0 cÒˆB!•áWtÁÂõÛ?ØØÉþR±áÄ(Àª”<81 ©+XuÝö£6q¸Îqß’!¶‘”…ლ²vDEv¼ÛÎŽï鲈Þ8iBed" « ô²öcÐxW`Š€ QøÁÆeç Ò#¢@1 Á `9éˆoØô,ûîªvvñÊ ¡‡'Ìv„ۀ舂}ÂÚoì}½Ð{‰m{»•ÚzØÔ˜" Fª à Ù]õü+§‹e0ÉŽ@¼ÂŸý°ÕΆP²â,˵'H¤¬‡ð,']ñ §Ï]eßinµße&²#ÜOö …ˆÁ$®™Èu¾zá*k_¿›í´^A% DãÙûFq¶ýØyn•á“çEq¤ç [¤(^!6Nê(„N|Cë=`·W ˆkøÞªvÖ~ð´’IÒG|!õ~ÄŽH´OvÄ«7Ù­‡ØöÕíìbï¥P<§D¡¼ ›=4ž¿AºŒ /ìˆ5»OÙÊ‚Šx ­|?Å)úU´þÑý6‘TMÞxïÀ¤!Äv„Ì8â…±›}…¸„£{ºØöwÛÙi¤€F" ¡XPÞÙyÒ;Ȳ·÷¢“P–>3ɶ È~ $Ij†-»»]M€A±#DŠ)#\ …wvÄ)‹ lZÕÊ:÷G h$Â@°U†'¦çþ¸Û™m:l¢Ðj½Ç;Ù·n÷© »' E›·að fÖØA<¸bÝ`¯m=îúÁçÙ›,8õ ¨„@«*‹b—EV¥! 2½ Ld &ØLQGLÆAlNíeÞÞÎŽ`f>AEáÖÇÿh†›±Õ{¥–ƒVÒÀŸf *Õ8¿ ÛŽ€LL²þ2Y]€Z›œ*jd¤aCÛ1m¥‰½à ¦Ø|Å#üßÇñ…ç{/±íëv³=[á4:q }œø 2ü=åaЈ‡ÆW© ßh-:@YXH ¬/øËdAtî7°¾T••ÞÐzÌ"=B«t“¡º%´ìˆë9hÛ¸ŸmmÙm“4¢$Á& ‘À>o¾ Wn'ïUHeØzÄ hô;|¥0„U¾ž/ 2@!§d*ƒèC d«‚# ʯ@0‘4¨È ¸iM ?x{'»xå¦Ù ‚‹qB—!S–Yv?»;{Ù†wÚ١ݘÑ8…[·C÷|Q ƒ…ADeø«¸~°¡ë$YeÚY ˜¸/U‘†æÕ{ìÆUÜ«]ƒCPìˆD_q®÷Ûh…[Ù1 (pâÜ( ®²$ =¿…ˆ0ø@eøÕÁ3lçqÑö×ÉŸü ,ô ÆÜHi[âçïL>y™Ül yâ6ÑŽ¸f‘ƒÍ-»í×¥ W‘N\¤OM€—Ûë;Hž1˜0æŠÏÊCŸ¾x=*Ã̺RîÏÿ[’êéî_(…Õu’ÈHc‡Žek71OAÀÜ$J•í›±uom·Õ´“ò±C™ùТ’0\ÄÞÛéœK:߯øÊlþþ íÇ.Ø*ƒèmû¯í´" " xؾç„M˜Ë ÐD‚`²! qw[÷f«¯€›(ø2óÁ…aŸ|Êó³í¬ ·*C2Vÿí5…­ " " |k¢7&s"‚0zA"Û,E³©.‹ Q8¸û¸­0 ‚J¢!gI¨ìÔªŠ0P*˜7³FHex—³~Vú$‘‘†Ä€ È_¼À~G$ Rx¶QiG$Úælï%¶æ­ílÇæCxDvT */’,a(UB:UôÞ‡c•l²ÊðøþÆTÿ£2$»¯Á‚uÈ04`w…¡esÙ. žm ˆñƒ–Ý샵»ñ2œ8…#Á Háæ.J ƒ’˜Àؼ5Bí¯S© P#È‘È!ˆ˜ßP‰Nö:Í=˵ˆ5Ž<øÀŽ€Ì‡¶Í‡Øú_¶³³=—ðÔŸ´›ö£%ÑÉJ04k0{lÊ0)•! ,¸ r„›“È!¨€âNKž‹úïl8È.]¹é~’Ô¬.¨K…äW(’}4ØÝÅV¿µÇ h¼µ¼`pƒŒ±$¤n #_ð€×–ÿ>È[BDeø· w^ˆ[pÛ#®Çk¿5“È!ÐXlÌ.—ÇðΆÆLÒ‚ž ɱÑá'Ùê7[ÙþÝÇqþvø¬‡$šP=/ÜD¶„œÊðúÖãl‡‹D¼²Ú]Ü•{&„ KŸ™„Z=¯ëÔEֺ焱êBz "<Ùc+'»Ï±wÞÜÆvµv 4:DÁã«à¢hÓtü*ZC‹WçºçR0k1Äb ’@^ßúIÄÿxm§ë¸…¥ŸŸHd€Š†9±~Ë‘©–É&gÔ“ìˆ3=—؆µ»Ùæ÷÷Ù1 ¨mLðˆQUwÈld€ÂîâMñxzš¥£2üû†N×q °Ú¢®“„°’L¼»á€‘ÇŠM0ì ­›Yda—E.â¬i²N†›ûtˆ‡ JÚT<°|+êB1€=0¶\HeXºjoÊ H€—ûâÜ:F „ ªaÆ( m1Ö„j/ðØD;솭¶ýp¬£'7š KBò«6è1 ôòÐEœÌ £¼±Tþ•þϸ, QKÁÂ<¿¡ íû6í8ÖŸ5á×tJ)EƒTìÛ}œýòív`#Á3h‰aèTÁî qÿØ 6a˜úV¦vFÄ×gPF`ê3`å»CÖÄ3øØvÄÑŽöË7·±}»K9ÛÈðÇ $Ð4®TÅÞhQÐ U{t¯2ÈÈ‚¢’£‚ïÄRбpäØYv8Mƒ*ˆ@„c¯ÜØÐøÞšÝlÛ¦C¸6QÈ WæÌed_aÀhÑì€Â Re€Â5Š˜+à[Àx„YÔé½-B½&´‰êŽ2vÄU‹|ðþ>¶~Í.Ö‹Ðý2|H$cŒÓÒ±ˆƒÄ®“·Å›ÂÇ Re€p1r¥;!(€g«>Ã¥+7ØŽ½'ŒQdUòvÃÖM‡ØÏߨÆNtÃ% ƒùó¦rApŠð3$¤åz™³ž)Á«2„IapT†Æ‘%èä »–>4,ïÂpùÊM#ŽK¥DaÏ®ãlÕÛY'fæƒC2|l?dø?CB–0 ð…Ma|ùÜtG;°‹â„´ƒ4–5–dM¿ ÈŽè<ÒÃÞýù›0|„eÁ( 5¤ý!°0”ò†Ë¡¸Êò³í¬ @Útë#éiMì;|šIPÒDˆØ½=—Ø;Qزé³@Dq¦U§0´øZaà­“6KÂÁçÝÇ2€ŠCV LkbÃVoÓ,¥ìˆ$?_8•µ¬Þm½vÙÿF% ~SH9ÓÊSc’ÀwÇ0ðÖ[j%¦ÊÕ[ ÄWw/έGù®îSí—‘ÒA2‚ óaˇlU-ó!ƒ}B2(MRfnãeZcÐ ƒHÚHšP%ÂþS—¤·+‚R( 9€5å#·ï=a2_HÐøá-¶k×q›( 4¶¦ ÁƒƒOR)Ed >¤oàcXšPÅâW‡zÙYÉ(kÊŠ ܯò “+L©É bGtXá7¶³Ý;AMÈEÁE‰º2ôõN­„!ŠtÂÀøF[âgmÝÒÛÂ@GVàÐÉU‘Ÿl â)DÏéKìÍŸmc›?8„L2û”…°À)RѶÃÕå“ÜÎ3["l–ÄF곡f,}fb Ï! ==—ØêÕ»ÙšÕ»p3@Q¢¶0 ƒï-‰(ŽbEÕb@WËÖvÒHO -j‚ ”ÌŽ°K9pˆ­~wë9Ð% a± ƒ"EËÕ„`ŒÂÀ_‹!<„Á­ºxyíQváz8ÓQ |•!x­à?üðkßyœýìõm¬ãR@£C†d3MRô\(œÅv%Ã…ÁÓL‰°Ä1ü¬µÛõw\¸þ©  ÍráìêÀϾý'Ùë?ÛÎvZ„ D’… ù{ -n¿`Ü9°3%:ñF> & *¨ gêÏ/Yuˆuž»N/€?7ns숮®s¬ùõmlÛ¶[a@Ä'd W@£"u0ßþr=g»¹²ž5¡êè >aÀPbñ’E‚{€TìW•átÏ%öîêÝlÝú}xƒ¢D”BܹqÓt =†a‡ëÃñòÇcz5) €ÖcçÑÔ+>è&•@@ Mõ¾Ûçuë÷²wßÝÅNc4QȲˆBV&UhD& P—HA:¼ëE¾ÂÐâ•ÂtÂðîîSJ¾—To¬ò[ÆÄñ®s8_d‘ƒ ˆQ¢0ˆˆ‚ ÂÐXŸ!‘‘‘ázÎ6Ê’ ÀGÆŽ»æª t:•¡åà9zˆ ø9–AnƱ& ‹( ÎÂ2(N‹X©^<랯ÉŸ ow”0¼»ç”Òï'•@À[àÔã—î5s¡œ9˜efgÛïµê`Ža›0%*C˜m‰k~ÌZžWú7@a •@ •k‚<ˆeæf±ÁC2)LA#aPð¸Î°û¨x™U-‰Ö£ç,Ò žâí¯ïSN* Pz«“¥iDaHÎ>û˜‚VÂdÁÄ€G3Î`«7oNexG2Øñ³ #Øg¬—ˆÊÐÜÞC4à0°©ƒ¬œ,–e…ATxÉʼndÒ1 ‚i/¸­ðˆB0¢.ïdWÜŒ=H*;;wUx»¡YƒmuT†G&ñ7šZ´r/=Ô^˜[¢0$kËšÍS@#ÂÌ*§ðˆ¡0Ø Vì£ãeXA |Üp°Wj»G& ëÿ÷gªYn_PRçÙëlŦnz° —€BN~n}••Ér-¢9„ñƒQ*ÑB™´3xã>8tƶ&‚€÷% 㫨 Lƽ-Å2áU†X!//› É¢€FSdÝ(h:…¶¨÷µÂà¿cûÑóRÁŽ`EÄ+ XBDe€n–Á øÑ/Ë!whËÎÂ2¨ð>ÌŠ_@ À JR+yã6€0´“Ks¼olſ˕P¨ý5àüh:id‘ƒ¼¡Ùl(Å)¨>ÑÒ›*¨¿€º w}×D 8yVõ1Û%j/@ãøªÄÁ11ÿÏjM à`ÞôJ£÷¯0?‡ˆ‚ÂÌø,…ð:öQò2-ˆað³-!kG<š&#B$Íl Rwð“-A00˜¿€IZ°2,q P¬I÷©Hùÿ³G—“Ê@ h„l ‚b@ì‚dü‚Š{»ôÁ w –8;¢±¶ÄΈH‡§¦ñ« KV¢öׂK˜nKÌT¦Ç/`* Jvn>çö„Iþ“—¤ìˆÆ‘%\Ÿ›=ºŒ«â/Bi–‚Ë1‹" ’P¿€*0Èäa\«÷œöݽ%ÓhÊ©ìȋϨ ÐþšTA`Kø¹ˆÁÂdAAÿˆ) l}“‹8í;uI\]¨-ú<( ¤2:U²%ˆ,ˆa¾2…Ö?B aˆî\§—lÝO¶Ä™+7Ù±³â½#xíˆX<%¨2PûkA ¼h‚/ƒütªÀŽhVrˆÈß§@eàgë~²% ~A2„††šbR è“—‡Ð‰ … NÙˆßpj’CDþ>ô8©šQõ\ºáÂpQ Ypð̬‘ü¬ïà9R @ ЂWZíTeBˆ`§SÊ.Š•ʆSaæ ŒkvûCeQDãbQ–—ÅîÍ,I*À(|¶hå>6ê›ëXsûi:!aÃ`£Ò)Û¢˜Í& ÑDg6" lõîSÆß[¿pæòMáí& s'[=)Ë Cs{ B¢äˆÂËTü,¼Œ_ëJAì«ÊSÁwzÖî–Ä®.³ûKȨ µ¥C¹+7&Ci^kšÀO¾­ÜK+6u³ßÚ`=# "ÄpcG¨)ôÕ¬êPùag‰™nKÈdGŒ†“Ûýä´áBí¯aP$ŸÔ·ßÚÈžÿîNû!„ƒJ§ìÌÈÈèô aˆî,zþ§[³ç”Ñ5d† H„!7+SHe X!:Ÿ»Îæ.Ûl¿Úº.Ñ !DgQ£ìˆf¥‡ªè{Ñ=Q&¶ÆàX/@ÓøJ!•ºYaÄ)<ÿ½vœeâVȦÙ¯ª<\U„Ás[âV3¥tÙø…¡œ<ŸÊ0XXe öׄ0'  šwÀ<;¢Måá*! Q[¢402Sƒ½V|zêp;’oà¤öׄpbw€(P@#!5a¡RaxnK¼i ÊÐ{E<I³[‚TBЖèÅëì€F" „Ô³§¼ºàG;B5aX®0Ú›Ÿ1®ò£ŒÂ0a˜šîw÷Œ*#•@°ÐÖu¹? +óahV&2xÜÀùkëG;B)aP•-±pvµ ÊÐea¸&8è v]!>=•_ey–Ú_‚¸Ÿ! ê)`4IYšÇF– eEÔS"¸,ß;Âv„j…€.‘Û—ZkàQ PÆVRûkB¸ " qð  6¢(—­(°ÕBÉ‚üÔ©¨wÄ«:[5a@g=¢½%`’^cHËcç® o£*~a Ê0œû³0¸’Ê@ð3 Ç hÄ" •9lœEŠsZ|C‡q uÁÝ¢—Zìå„!jK´`ï MõBŸ7%øQ¦„ © „ z£@@#”<Ç h‚0®¢UägÛÄصä®ucM¡ŠVÖ¯ê:t9è#a k PÎHdH¨Œ_p£2P‚_÷*3.xe;Z@c^V&›PYȪ‹‡¦$ ˜õS†`Qê‚=$‰0 Ûõ¥¹Â>Ð7y_­ðÌeñŒ Õ1 ±*ôšbRÐd‹àæÌÆ”ç³Ñeù,‹2  v„hÐ>VÙ;B;aˆ¶¼Fg@ó$T†Ý]=& b ¬Nt®P̨Zµ‘Ê@0иhå>Ô€F µÅCí8…<Á€FJ­$uÁ! Źè1-¯j=|Mçuì/\xoµPMTÑ¢MºÔ¥yÙvÖ© ¿ÂÉ|x©fØ Ã sÙøÊBV24Kê;ˆ0ºP`GÀb¼Yçák¹“322à :±¿WTÞRÑ»»½SdÝxb ,( HF x »”óbÜRÎÈ8¥ªˆ +È¡€F‚«`GÈìkWнGÍQ?p ]:yanð6&Ä2˜ª0ô© YìáñüvDœ^Á h„RÎXE¹Ylòð"V“& ‘@ê÷\%˜ÙçÕœjaXý…ü(ÊÚv{¤2È”„ö  2@p`†Õ иà•VԀƂì!vŠ$v@c.eJ’ä¬sÁŽP{¡%°„!ɉ0Wœ¹y¡2\ûðcám& /ðä¹² ¢2P,A  2 N¡¹'U:+s«+Ícã* X~6Z"$š)]Tvœ^©"Øq™'§AóßïÉÐP)TùÑK•ÁO ¢2@õ<A%QPQÊl‡)ËYY^6dBŠ›Å8;bEà ƒªàG™ ¢[eégáe=z•Ú_”ŒŒ›ºíæP˜ÐóašE ¤3z–”' `™+¨ì¸Bw°£W ƒ•¡/¿U,ÅTÈšÐSûH¤Ä2Pûk‚W€Ø„ßڈЙ #JXu4xgIùiò¹ÙJ*;¾êÙ©ðbÁ€ý…à‰–‹üý»èaà ¼[‚T‚[´u]¶ƒáÕÖu å; s†°IU}Ù™T  .HòJ°Êâ×^hó"ØÑ3 ~D' ‹Ÿ+¼ TlÙ{šŠ¸»¾ŒT‚8¥œÁ~ÀÊ|ÈÎl3N´ÈA˜0HBQìÂ2OO‡G]R‘é/øÑæcFÞ§&5­y|2¿Ê>3µ¿&ˆÀ hœñ—Ñ3­~Lyk¬)a¥C) ‘ µº•.Ô¤(•ò‚µà^áå)äÍu°%•ìï•)ä*à $ ^mJ¥2Œ© ö×|Ø¿‰W¡ˆBMÉP6£¦”UæQ ¸€‹Ìˆ­¹((©”&( JTˆH•)¿ùV[·TC˜ðÄ”aü“€µJ$• `9@)ghÄÊ|¨ÌÏa Õ%vªd&4¬Pñ¥¤2¨AÉÐ,vw=`)© áCs{Эϱ‡æ°{ëÊX] 4B§.´aøDeèTAdU†^CÓ,M‚H,( 0‚' qÁ+ÛÑ‹s³Øìú26¡²eög@ãGߦ›Ã7ê‚þEj¼jÒ)2å T"¹È^ÀU;N°žK7éJ¡2<4¶‚ûó°Ò$иà•VԀƋ(̬)a5Å,gÈ`_Ÿ" ¤.È>Z^j2’0˜¦2@šå?¬Æµ&D+7î?uÉègë±ÉÃ…Ú_CB°‹Vî³ãšÛqJ¬9˜<¬Í°ˆ‚hC9!`êÂK¦&“4>£T†=ÝÙ–Ž³hûQW–¨ç ÈÂCãÄÚ_‚'óáe¤Þ!—¡UΆææ<]û2$|Á¤.øŠ0˜¦2^}¯Ãzà©d2<8¶BHe€¨y‚¿a—r^ŒWÊ0²d({pt0RM𑺠PÁ–>3)ê‚i ƒq*Cïåì'™RexP –á%{’!æG@lÂŒom´K9c4B¯‡‡G—³ •lÈà`f>\ûˆîwã1ȸžFª Æ•*ƒL ÀªölÏ ÷µÊ%á?wÍøgí±IÃì HPûkÿRÎm]8q5¥š[[ÊfTs+T~Åm*ÂX² °gÄKÆž.÷É(•ð«º' â„Á/v^€-A*ƒù€k¥œ!N+óÈd>Ü=²”›dú7nQ†„§ˆDÒ­R]Í)aRŒ$ ªTÙN–ÛšØBÖD2̪+%•!@D»”óÁƒØ¤ªBÖ4¶"t-§)¥Ò`²àB]€¸8°#¤.˜ª0(;in‚S€0tž¹êêïO^(ôùý'/ûæÙQ `ŽÚ_›hœñ­ ¨c+ Øœ1¬¾th(Ï)Cá²´¢@G£Õc CTexû{k ìYüã* wÕ•²ÑÔþÚ—Ë20kŠsÙ#c+Ù¸ò|ßVht J©ôJY`J­Pªç7TªØóçM?µ&?É 2 w²f([æè™«ì_7tHÿí‘‚ic¦or£2€ÜM*ƒ·hëºÜЈEÊò²Ø}õe¬qDðÓáæ-" Þ1†Td¹*Ò¤H]0ªg„N–¤âÆ{zÛEÖÄÐìÌ@?¦£­Õ$© æˆ4‚ý€Ð8Ô"@î«+ce! hL‡D õÜi¥ZÑÙüSgøþ-щý¥Ý*[Ì ðOk²k7Å#ý'ŠÆ0øLaQ¨ýµ>83þr#j@ccu1{t|…x…á#Š_Ð/.¨³"ijöƒº`e…º h$²`4cH7q¸úö¥ŸŸ¨*Ðñy?žm¿E,)I³ì«ÜUåê;þæû¸Š‘RþT€,<8F¬ý5væÃâu¨¥œëKóØg& cS†R@£$.ß$ …'ð¨ .øÌ ÐéX|“FékÂõ{”@ÊV€tVñ³Ýi?m®‡f‰1V?fJ8x`L¹ÊÝ, ©á4b–r®.ʵˆÂpvOm R|@Ô[nƒâ“@ÙF„!1i€àGtv²“›Ø€£g¯²ïmL_ŸA´€ÓS—}û\˨ Ôþ: ¡:w-x¥5 ºGÎ[ÁUÆò( Ñ5 ÙÔ(CÂs²àÒŠ€JŠW€e~J£ô=aˆB‰ÿ7‰ÛhØŸï<ÉÞ;:â?è=%âñèÄ*jífIb¨E+÷Ùq Íí§Q¾3/+“Ý;²”=–Ó*q•Ôõdƒ/¸±" æ‚ÛÅc2Îo‘…%~>ý¾$ ª n­ Àw7v²cg¯¢) Zé×ôÊXÒÀ °%He˜ùð2‰Ê<ˆM^Äžž2œ–ˆ§!¤Å/¨$ Öë¶zuÁm¼î….Îy…)€Ê-»ó•–CI½LQ•afm © €€Fh…Е?g…©Ã [“ÙåщPFxê-¸# P—GQs©~ t aˆ@kM@<,•ÁÏq ý*Ã~•&Ê0¶¿†Ø„ßÚˆÐ8¦,ÍŸ:‚ÝUSl+ Uê‘e¸ÍiE¸ŒùЬ_:Eap*@®PñÝÖĶÎsìß~Õ™„0 }—ß[eYÂF•SûëDrÁŒðjë¹ÖU9ì±ñUvÛé¼€·V7—n¡Ž,¨µ"fEž÷[EÇ@†(E*0¬ À/vAd¯k…büZAVe€Š…AW NJ9CœVæC~V&kSa‘…J‹4P@£¡‘ˆ–¬ëeE´D3ûßÕÖ„Û‚N€o¯;tG$Ñz Ÿñý 7ª,T¦¦”3Ø w×–°ÓF°Úâ\FÐy=?¤“€N˜– Gãu¢T67apG€Á)aqÖྐྵçŽÎ–¢*CÛ±ó¸éDU† µ¿¶+4~¯B#…ÆÅ왆j6©ª€¼ ¤. ã6G#sG[/ù¹æB` CÏ3Ö„ÝkᆂŒ‰eïì91£®Dè;‚bK€Ê0Y R?(*(å XÌØò|;E²qD4z(ÔDÅš¼ ®ù{íë3TõŠhñcs©Ð•ÖÄü†JöâÜz×ß¶3ëÄ316:ˆëõÔÔB­ŸU†¶®ËýX™à rØ<‹(sã1\\ƒjeð ­Ë–3õÞç#402íˆëÓ‘F]¶p›iU¢BãOô«ÐÈ ðew Ùw/Ý×PÑÃáâïŒÞŽ%…uY1,„Ì……hC©v#a!ïƒ ñ¡Á°&Uâ¡·µÚô NI³äA»Y¦ªco}&ÀK9s@£^™ \¡qŸ ḣɲD×'fõlW­¢Ê’Bç,ŽW09fǶ,°×(^$9’@C7T ’ÅÑ»fBÃÐĽÛÓV†­uiµ¿æ€F½26V­¥gj¡Çw6ˆ˜(?tÝW—=_³z•³Nƒ‚É¡*,XkuAކ• ¡‹ Ìœ`hèzb‹iÇó»‹78Ø] <³7S ßkßHßmo¦õeE¸9òH“óyÑ·¢#[Rí“b‚¦ÃËàÂL¤Xzq'R»& #Ë—e`0³°Ó›ò8"kâaRµ2d ߨÙ@?Ú/m\·wCž‰­ ƒ:»"TëCƒ$IEü2,ä ÔàÂL,dDÒ²2¨A†Aç › NqMmeคý\Êy¯›vm¨Ä§2"+¢`Íjªqˆ•J G(–)7°``a&V72" ™BGÇðb&4ô8$kâÀÖ:CRTïo¬¤çÙLû7! 1Ÿ5:íî½USê Xˆ„°`þg› †¾œ }d`º¥ÙÐðÚû—áš`hÐK÷¬[K?~t3}ó¾ ¦¸; ëj.¦[Sú·®^[袊ûˆ! sÓKÃ$XèDF€Ah0”:Í‚†…_ž¹fûkÒÚT•µ•Aá_º‡¾//•È|È{‰¸…ñC 4Õ•Ûܺ Ÿ’/@‘pn&&À‚hFX0è Ýdpñ³ áâ—z?É[+C¥ OìÚ @ª!ïÍP¡°zm!»ìk¹’d€ úübí`X`Ë‚wAjB§œ¡A’$îU|ÜHh`éU¾8‘þóÜ ÚZWF6~`²•¡O†ŸÁ»©E³ó ý`K5=º¹VDxK¨ô )⸅»³~Ý·Ëõjmè …)È];o`X@­X †d`3- ?ÿãÛÇ3غ>¥ß{H…ü›Í H+Ž[2¨mu]y±-Ó(¦¾`>ÀÂÀ€Áhh8âh¸; _žõØúZ´T—Š%‘¶Õ•Ó _ÙB_Ý^OE.4BKåEèÒè”!Ûæ@G;–€ŽD$çn2a",tã.0RTÿ—þðé-ÇY"žyÈMßik1 +n¼<6mH#»"6ذÕy(°‰Dr¶€ë 1 BƒÓpÐHhàÆ*]qZ6ë¥ß÷ߤÍëËhK]¹-¯ÃÁöúrúbdZÀÁã;„e%!PJ kã34gÉˈ®YMvùöñmâó)ÊUAí:ÉMú öádz£ `è‘—6#?‡[4s×E£TR¸†þéë÷Quiáƒ6öY«þ_ûŽ}MZñ÷¥%ïi_—”¿_¥¼¡Ô?»QŽÏÒž¦ªeŸ'Ñò3q/Ù{)ï_òãÓ~º½¸ïiOZ¾É>/ºÝÅcbŽQ=>Isã/9O1‰sþ—»´ôxb¿7õÜÑâþJÊZ}-²ðy´ìø"1ŸOšýw®#I®óUîÌø ¹—J ]bÏçâ1¨ûËÙÔžNéÁ\Q"αú=a„o> Ö¹„I‰¡T±CY.‰Ì­ †—fÝå’ƒÿíƒ+¶½<à0,@ÐJº=å3 ØÑh#WD ¢¹Y?`08øÆª2È'?<1G¿²y$%Ó˜ ƒÎì*Š©ÐeÅææüð‡rºmÍtþŸ÷ €#Äþ=#¡áãkãò2† 9Nwf|Âa”Ê‹ äûÒúYþ@ˆfeX‡#9݆Ë8F °`4v£•+T^aÈöuv†½ó¸ ƒ`ÁOWÇŒƒîDÙTi"hó¾`΃9û+:ñ1<Þ°`40•Gý~Æ@ÿpÅ2¹”X0¶KkSÕZ¿¥ œýX0@&Bßpç_ÚoH­.êôú‡Wq1!ÛÃÂeƒa¡¾¼XdF@+‹·Õò÷ë`À`Ghè6ü&”oÀãOïÔ}»—G§éTß.&XH Šâª++ÆÉ^qrÍ„0¡ ‹ë,ÃY0Ø̨Éz±³…Þ~þ݃!ß¿4JŸ£ã+d?X¸rÇXXàÂLÍUèvº’ÔàF 2©°Ð³`°38˜ ÷ÔE£Žkô:þ ÙG£lY08^‹3­Y…¸…dR³ºLH›, éÓ|9é]ižƒý±Aåu}b– †VcE • ™Y2½Øé6+ X08 Äá”oT¾aõ[~ýçA\DȲbP¸>1gøçp㺵…8á ÇŸÜxüéf|œˆ,œ Ýf@‹oX¾qõŠkàXŽi€ +)‘¨ÿ–—F¦}†Vµ P|±;ÔÄàFúpæ N‡†Nå o¨ÔrÒzÕkxçÂ]¹3ƒ‹YB¾P˜úozir>høg± ¢±AމtpO½p‡š¯ÀÐX0ä 4ôš | êש^C÷GWib.€‹åTÜ¡ôü š ßaasm9Š3%§uskjâTX`Ë‚gÀOÐ (™ .ðÄâ™ë5èá¢ààÇ×?BQ'(wšœ§‹7½Âa´DFĺRr–‰]lUà´n“ÄÕÛ•:7€!ï Á£XzÍø<½\7½óô³Ó°4@¦Šá/·&éʘ9n1†…­µåȈˆ#“],To´Ês §À8I’ä–WmÊÒÊ~å­6åg¶001w˜µOÞù½òîe:ÑãÉj;<>ºe=}mgCôX—÷ÂñkÏÅ’÷´¯KÊ߯RÞ‹P¼¿ÙN Ÿ'ÅüÞÂë±ûì½”÷/ùñi?HÝ^Ü÷´Ç'-ß¿dŸÝîâ1H1ǨŸ¤¹ñ—œ§˜¿‹Ä9ÿËŽ]Zz<s]"ê¹£Åý•”µúZdáóhÙññ{3þ}*ÂϤô^†…-ëËi-ÃB‚ã‹={|š_ŠÐâ1³•nØÀ6ÛF‹]&ZXH›08Ê«§p[u?O]¥#oö p6j¬,¡'[›èÞÚ2€Aw`¸î£Ë&ÛÞS]*²"V%9¾|¶L²kÓD«2! Ž…¶¼(/ÏYâY½vŽzîf½­/µTÓ“{š„åÀ`È‚áõßœ¤‰ys]_-ŠÄy0DÅu]Lª­ Š!á‚ N…—X°­Nô 7E¶Ö†…Çv6Ð#›× ÷ƒøëíISãÁ)ç1ßÙª`R/ˆã'EÝn08 ^T`¡Ê Çã¹;/\zXØMñ­=M´©¦À`HaI€ƒÙbX¨)-Òœ;ýaJòñY?…ÂËØͬ2µ}÷+2(táé`p(¸åÕëdb ¢©wì»—©K^ôÐ}*é[»E9]€!0pã(΂0Ûª ……%ß%€!,/wç‚6µ¼37´3QjOˆSxœ X¨ròqêim`±‹â«Ûë¨Xß`0ðkl¢ï¿=•“4]Άà6ÕÕ2,¬Šý.e Æf|4ã h°ƒrdUèS`Á6’ŒS‡…Xp|AyžepuH^ŸõL’/”ÝÌèÆÄœ¼»bö¸¡¢„\kV'¥W«¯Vß?½g RН¥²ØÏãïµ»³Ô7ì5-]2¶ÕUPEqAÂó‘É9òÎDo‹QyñË÷¾+«ðöóÐKß+C½©¥yºåån„…Ái°À p8­ Ç~û9º8¢ËöØ=ñ·Ûëéë`aÈS Ãðä<]›ÉYÛt†…2,‹Åžô- ìj`P`+‰ÜZqÄËOl1ÛªÀ:&ƒÂ <] €Šë6{ë3òŒÏëÛê¨]C~ûòî̈u®´¶ÐE›ªKÅ:¢½¶§|Nú‚4í Úî~ÎA]……9ES&á‚°¡à’H ]8D;êKéð¾faf=ãÉ>ã‰ÍПݞ¢óC^1Ók¨,KÂb3½\"NáÖ$}1:3«‚ ÷ÕWP¡kͲcIÕ%ÁûÏY7¼s¢Sf d/‹»_}j;uÿp75T™>ï—o ƒa¡C^õàL,Wßд°6è)2Õâм‡XæaúâδpAäZµeE ¤ÔDŒT- ~árÒÄœ?§À“­rÔ¨ .ƒca³ ®‘Ù\]±ohjáÿ&EÑwº ³›B‡NÚdp0Øø¡Ê 0ä·Ä÷´©j-5i,X©C(„;3>[C‹Ý\©1Gc ² ޶,tè5ãì°€„D3r6òÍ|@^¶Ö‘»ºÄ6çŠèdGT‹Ì¶R¤Vì¦Ø·©†ö¹k–¤c¬ c³~º6>K·§}–ønŠöÔÕe´¾¬HìïJÀÀî…iP|'çíß•Çh4¹Y”VlQxU N†…ÃMŸÌJÝ2$p¤Lfßl:<*ßäv²>p6o÷™a]·Ë°ÐÖ\E»kÅ`°0pƒ¨ëÞyQÅÐ**r­¡íuåTRèZØßxÀÀ19œáÀûnwK‚V9Ì~óB!&CÀ» ÎS ¤ØŠpì­Ï—¸2×Bàv²9ºé3>~=ãT18´6U‰Ê|†ÜÃl $êk\——9‹=h¹ÓäæÚòh¼‚æ8ÕcæÌNä,»-¦2Ù8þ¹´R¢€!o€¡‹¢ý!2’že•Uñ¬ºçèÞ\¤?e G~ѯk|ƒª†ŠbÚë®ð`0†§|2$ÌÒ­)Ÿ%¿wÍëÖŠêÚkå…éîl@¸¦dXG$Ç]ld‹B­’°*òκq #?õ6ÇkÅÑ͇n²ÝyÍÆ5³’Ø]Áа·¥†*5î ƒ¾ÀÀ>ýÁ‰9º95/2¬(¶&쨯 òâQ™tšã|Q@``pª¸J#[!Mîý°l~ À‚OC¾ÃaÊ0v!]XØX[F%E.—giãiˆqùÖ –»)ö4VÒž«€!``—§CŒÍXÀѵ†êʋȌHp2 hA- 9žD°Uá¤Kò8v¡-Ý¿ãìN-L¦ºŠbzpK-}eg5ɰŒHòB”Gfþùµqê¿6Fç.%/¿lW÷„™àÀ=M•´»±J7?|³…ÇnðgÆlˆã4Øõ wÇä83Ü\ðç/·&ÅÂbhh®*¡òº±*óÁ-¼mnÔ4å Ñø\€¦åÿóëP~HOà2Î*ûŽš €Á±¹<žÙ¶~aÆ8¨¢0±çÊTX3Ó\ õ5åç MÕtýÚè²m ¦9ã>ôÚ9ÝÌû\¬êüK˜:à±+„>ÿ (i–ÕaÈ;'–34®D‰h›Ü\Éë¥ÁV‚±™¨Å€ ©¯Aù+ ºT!û0¤¨iC‚‡Ô–ú²…v¿—&Côàú‚¸¿7<¡Q_d©EA"*@ÈëʪҸÛa Cª/øw“e ìj®¢ÇÛ›é~w ùÂDWïLSÏ…á„Ťøp[ë\¤w²uãe%µÔL«ÃR€˜ËYåÿ*4 {çqGAK¬ G;Ü,ØDq €!W*-Žº#Ø7}kN¢sc!Ú]íZ’)qS†…woø—YTXÐZÔ÷Ëå™l¶ẫDúþþMôô¾òË 0‰Bʆê2úöíÔÜPIÿõ~üšË‘ëzªÕAuxãì°.BÓ@Rű [ë(X´*k¯bQèÅÕ‚ 9’ÖbÀœÓõ™0•¬¢°üâlH¢‘ùˆr¤˜x)HkqÈNü0M4ìþÜ2,H °Q>››íÚRO“¾þøjœíÅ ß )`ÚXìdpàc63PÊoqLÂS2(X¸IœG±( J#`È90¶ÕrôÿAùA<’R'%åÍEë‚´$^A……‡7áÉ2§>‘+¢¬ÈE?úêVñâs¥EP4¯íÞÑHŸŒÐøÄì²mœ–·mµ†X<«kkÞAÇŸÞx€ þ®Uˆ¸‹º´ À…n\1À8¨C ]™!÷ú²åÁŒZ0ˆgU Åx…HKÔw.á`•Š.$0ÑyÛzZ[èé›±ûYˆ¨åaËæ:ÿdy»\˜ÿ“YRx8(’B”Ô× HoH`·ƒ…Ò! €ÁM¦ûåoÖ~áúµ00Hñÿ$ZšARLà#ÑÈp| A¶3šúŠâ%ŸѬ—¼&ÿ§*Aàe.Äç^…µœµ%¥¡üßóOí©·$ ƒÁ7WÚ3Œx¨ÿ¹x‹ž| y±”o<«‚”àgŠð8;ë£)ïlÜý8ezV\ëÇ2 Ãâb6°uà‚b1ðhà‚Œ. Hh­³Z½€`°0ðƒ:^†+£3tñ†—îk®Zöà»N 1 òréÓ¡¤ZÖÀÀÂÀVþ9,-Zô– §5® Èlq $ÃßßV‹Ë(@ ˆS‹Òí=Ń ?°ãÍv_ûß:þìCËcHÓDˆ–<.ËŒÿñNÌÒ Ïhü}hÍ~@;3p‡¾»Ï­q‡,í µ0ÜO.+IMyœT\€ÈjV^ÛÀÕ°Œ¹)Ú  L¾ñÒ*Íé{]ï.ïñput†Nþá3záë;—Å<µZPP3#Î|ðyÂÏçït,"ñÄûÚÃK[+£ÁK, ´ðÚ¼?D×®ÝIkÛKf×BgÍç4° ºTiÝ<ˆI€Œ„JÛv‹ÖHHE½„: €!§7`ZÀÀ-h¹pQ<+Ã{ŸÞÚx|GJ‹n(L‚!êyï/4— ”pºƒÿ~"‹È¿÷ п|§V»Ö,X¤%i–}xf ajgºny×+/¯ð)dC‰Öô›¨j¥6vA vT£/p@»øûÙÚTaw@PÕ­€‚WÊ…VádÖâšÅí—ãYT=¸¹–þþk;¨ `(ÖRj15-­ƒšÎ”Ü©òúíIzÿ£¸-­UeÒ¥òØ[ŸÇ»`ݳ¾Œ^xb••“OÞ. í Ktפßÿq€®ÝO =G÷¦}Úä¯K9ïn…¸ch•®&#@FÞY 4WˆŸmèbˆ'¾iß—èõ¬ \dÀîßµÿô£¤yþk‹\ôXk3u´6Éàà’Aж³Ž,¶´ȯ ÏÒ¹¿Ó¥+£I?ïøÓ;Ìûi:òC³ýÕ’fìÙTKõ5¥ÄݔǦ}ôÅà8ù“bXÈ ð²3Ö”*Ÿ{†…ÊÕÁ«ï€2øçI px”ËÚ-Õap ß#o >0XºˆRîå´ ~€lúÉé”Òý¶6Vѽ•"󠾺T@¬?D—äóäŒoÅ¿çjr¯?³;ãc\É"’Ž8šüíçÛÓÿÂÉZá:tȫ瀰þ¨®±P2ŒNcnërñ³MR3[¸l3Ü€ÁâÀÀ3Ûk™ÎL;O~lh€laAÕ¡×ÎgÝÙ‘m¶.d0pŸ’ÂC)^KXrù’I¢€ºVƒh-ØÚH‰låþ€Û0Ø^ÏtfËÿ‘_ô2“Ô ÔÙî¡×Îeì»Ï¯dÒøFcuÐ=ÖÁÓÎ ÅéàðÆ+XXjl«EózžA"kB7EÓ"aM€ ùdePö#oög=ƒWŃ-·Î$fa%% ‚L$vC¼þÃݙ‚G7ey}ªh`xèÀ7v…ž ´A é¨RóðOЊb`~#!ƒ3 ¡‹2ˆeЊgïlmÈf¶ÇV†#bžžìõˆ¢JÉijAÞ—,g…Gô àRàŽáÁq. Èqê¥h¦\€ÁaÀÀ³Øóz<„Nö ¦lqPKÓíl1uÆÆ–ÞW.¢Ä?G­.aBÖ©^Ÿ $xp: ƒs¡¡C^õè:ÅÈj€›j*Vgìü`nkªpBa™Dj—Í>“®à$@€ÁThè¢,]ÐB¡¦\Ã6ž¢4+yBPŠâX„Ó€ÀhÈ8kê•ÑN‹\K·”5e"o $ &0@ ñ =6›ò,Çmý`ól§UTùÚjáÁo;´Âw¹W^ÞAÃ'À9Ž(³Ÿ\ﯥa!Î5vÓ¢õ¡ƒò°Ö´ º{aE€ C¦Ðð:YÛ”½¶˜cÈáöY%ö¡‘—€Ð‹X0èñ 9.¯^´ØnyX8eýÍY€£‰Á?»q7ØZ}Ê@€ ƒ¡ƒŠµÁ ³Î>e6ïI²¿Êþùó(ÐÒ›'ß·*@tàΰ¬¼Z8 hM¸ À`êƒgï¹rQð€w2Ù¼’&zTgÐñ(V…n|'„‚—V@„%à OX À`‰‡„³÷XuSíoå}>¬€C6ñ ìþx XºxhU` ¡z`½ X À`ù?„nˆ”($x˜ñþÐ<Ô’ Î}ÊàŒ¨q}A¢R·*Bq©xß;R,^€œö àÙ»^¹ý<`¢iM~„ºTj@B 'È£,*^@òqà×ÎàWìÕTõ¿öbЄ|·´ÖˆXËDkœïY‡»£Îüc¿Ëƒq,„ÂG`€ÒðÕ܃ ,È"pëNð6fûAAAAAAAAAAAAAAAAAAAAAAAAAÓÿ 0¾ó$þƒÉv8IEND®B`‚adlint-3.2.14/share/sample/0000755000004100000410000000000012340630463015470 5ustar www-datawww-dataadlint-3.2.14/share/sample/zsh-4.3.15/0000755000004100000410000000000012340630463017022 5ustar www-datawww-dataadlint-3.2.14/share/sample/zsh-4.3.15/adlint/0000755000004100000410000000000012340630463020275 5ustar www-datawww-dataadlint-3.2.14/share/sample/zsh-4.3.15/adlint/core/0000755000004100000410000000000012340630463021225 5ustar www-datawww-dataadlint-3.2.14/share/sample/zsh-4.3.15/adlint/core/GNUmakefile0000644000004100000410000001025512340630463023302 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to analyze whole project with compiler like messages # % make all # - to analyze whole project with progress report # % make verbose-all # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = zsh-4.3.15 SOURCES = \ zsh-4.3.15/Src/builtin.c \ zsh-4.3.15/Src/compat.c \ zsh-4.3.15/Src/cond.c \ zsh-4.3.15/Src/exec.c \ zsh-4.3.15/Src/glob.c \ zsh-4.3.15/Src/hashtable.c \ zsh-4.3.15/Src/hashnameddir.c \ zsh-4.3.15/Src/hist.c \ zsh-4.3.15/Src/init.c \ zsh-4.3.15/Src/input.c \ zsh-4.3.15/Src/jobs.c \ zsh-4.3.15/Src/lex.c \ zsh-4.3.15/Src/linklist.c \ zsh-4.3.15/Src/loop.c \ zsh-4.3.15/Src/math.c \ zsh-4.3.15/Src/mem.c \ zsh-4.3.15/Src/module.c \ zsh-4.3.15/Src/options.c \ zsh-4.3.15/Src/params.c \ zsh-4.3.15/Src/parse.c \ zsh-4.3.15/Src/pattern.c \ zsh-4.3.15/Src/prompt.c \ zsh-4.3.15/Src/signals.c \ zsh-4.3.15/Src/signames.c \ zsh-4.3.15/Src/sort.c \ zsh-4.3.15/Src/string.c \ zsh-4.3.15/Src/subst.c \ zsh-4.3.15/Src/text.c \ zsh-4.3.15/Src/utils.c \ zsh-4.3.15/Src/watch.c \ zsh-4.3.15/Src/main.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/zsh-4.3.15/adlint/core/adlint_cinit.h0000644000004100000410000001756412340630463024054 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/zsh-4.3.15/adlint/core/adlint_pinit.h0000644000004100000410000000176312340630463024063 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define HAVE_CONFIG_H adlint-3.2.14/share/sample/zsh-4.3.15/adlint/core/adlint_traits.yml0000644000004100000410000002027012340630463024612 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "zsh-4.3.15" # Project root directory. project_root: "../../zsh-4.3.15" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../zsh-4.3.15" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../zsh-4.3.15/Src" - "../../zsh-4.3.15/Src/Zle" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/zsh-4.3.15/adlint/GNUmakefile0000644000004100000410000001352212340630463022352 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to analyze whole project with compiler like messages # % make all # - to analyze whole project with progress report # % make verbose-all # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . SMA_MET_FILES = \ builtins/zsh-4.3.15/Src/Builtins/rlimits.c.met.csv \ builtins/zsh-4.3.15/Src/Builtins/sched.c.met.csv \ core/zsh-4.3.15/Src/builtin.c.met.csv \ core/zsh-4.3.15/Src/compat.c.met.csv \ core/zsh-4.3.15/Src/cond.c.met.csv \ core/zsh-4.3.15/Src/exec.c.met.csv \ core/zsh-4.3.15/Src/glob.c.met.csv \ core/zsh-4.3.15/Src/hashnameddir.c.met.csv \ core/zsh-4.3.15/Src/hashtable.c.met.csv \ core/zsh-4.3.15/Src/hist.c.met.csv \ core/zsh-4.3.15/Src/init.c.met.csv \ core/zsh-4.3.15/Src/input.c.met.csv \ core/zsh-4.3.15/Src/jobs.c.met.csv \ core/zsh-4.3.15/Src/lex.c.met.csv \ core/zsh-4.3.15/Src/linklist.c.met.csv \ core/zsh-4.3.15/Src/loop.c.met.csv \ core/zsh-4.3.15/Src/main.c.met.csv \ core/zsh-4.3.15/Src/math.c.met.csv \ core/zsh-4.3.15/Src/mem.c.met.csv \ core/zsh-4.3.15/Src/module.c.met.csv \ core/zsh-4.3.15/Src/options.c.met.csv \ core/zsh-4.3.15/Src/params.c.met.csv \ core/zsh-4.3.15/Src/parse.c.met.csv \ core/zsh-4.3.15/Src/pattern.c.met.csv \ core/zsh-4.3.15/Src/prompt.c.met.csv \ core/zsh-4.3.15/Src/signals.c.met.csv \ core/zsh-4.3.15/Src/signames.c.met.csv \ core/zsh-4.3.15/Src/sort.c.met.csv \ core/zsh-4.3.15/Src/string.c.met.csv \ core/zsh-4.3.15/Src/subst.c.met.csv \ core/zsh-4.3.15/Src/text.c.met.csv \ core/zsh-4.3.15/Src/utils.c.met.csv \ core/zsh-4.3.15/Src/watch.c.met.csv \ modules/zsh-4.3.15/Src/Modules/attr.c.met.csv \ modules/zsh-4.3.15/Src/Modules/cap.c.met.csv \ modules/zsh-4.3.15/Src/Modules/clone.c.met.csv \ modules/zsh-4.3.15/Src/Modules/curses.c.met.csv \ modules/zsh-4.3.15/Src/Modules/datetime.c.met.csv \ modules/zsh-4.3.15/Src/Modules/db_gdbm.c.met.csv \ modules/zsh-4.3.15/Src/Modules/example.c.met.csv \ modules/zsh-4.3.15/Src/Modules/files.c.met.csv \ modules/zsh-4.3.15/Src/Modules/langinfo.c.met.csv \ modules/zsh-4.3.15/Src/Modules/mapfile.c.met.csv \ modules/zsh-4.3.15/Src/Modules/mathfunc.c.met.csv \ modules/zsh-4.3.15/Src/Modules/newuser.c.met.csv \ modules/zsh-4.3.15/Src/Modules/parameter.c.met.csv \ modules/zsh-4.3.15/Src/Modules/regex.c.met.csv \ modules/zsh-4.3.15/Src/Modules/socket.c.met.csv \ modules/zsh-4.3.15/Src/Modules/stat.c.met.csv \ modules/zsh-4.3.15/Src/Modules/system.c.met.csv \ modules/zsh-4.3.15/Src/Modules/tcp.c.met.csv \ modules/zsh-4.3.15/Src/Modules/termcap.c.met.csv \ modules/zsh-4.3.15/Src/Modules/terminfo.c.met.csv \ modules/zsh-4.3.15/Src/Modules/zftp.c.met.csv \ modules/zsh-4.3.15/Src/Modules/zprof.c.met.csv \ modules/zsh-4.3.15/Src/Modules/zpty.c.met.csv \ modules/zsh-4.3.15/Src/Modules/zselect.c.met.csv \ modules/zsh-4.3.15/Src/Modules/zutil.c.met.csv \ zle/zsh-4.3.15/Src/Zle/compcore.c.met.csv \ zle/zsh-4.3.15/Src/Zle/compctl.c.met.csv \ zle/zsh-4.3.15/Src/Zle/complete.c.met.csv \ zle/zsh-4.3.15/Src/Zle/complist.c.met.csv \ zle/zsh-4.3.15/Src/Zle/compmatch.c.met.csv \ zle/zsh-4.3.15/Src/Zle/compresult.c.met.csv \ zle/zsh-4.3.15/Src/Zle/computil.c.met.csv \ zle/zsh-4.3.15/Src/Zle/deltochar.c.met.csv \ zle/zsh-4.3.15/Src/Zle/zle_bindings.c.met.csv \ zle/zsh-4.3.15/Src/Zle/zle_hist.c.met.csv \ zle/zsh-4.3.15/Src/Zle/zle_keymap.c.met.csv \ zle/zsh-4.3.15/Src/Zle/zle_main.c.met.csv \ zle/zsh-4.3.15/Src/Zle/zle_misc.c.met.csv \ zle/zsh-4.3.15/Src/Zle/zle_move.c.met.csv \ zle/zsh-4.3.15/Src/Zle/zle_params.c.met.csv \ zle/zsh-4.3.15/Src/Zle/zle_refresh.c.met.csv \ zle/zsh-4.3.15/Src/Zle/zle_thingy.c.met.csv \ zle/zsh-4.3.15/Src/Zle/zle_tricky.c.met.csv \ zle/zsh-4.3.15/Src/Zle/zle_utils.c.met.csv \ zle/zsh-4.3.15/Src/Zle/zle_vi.c.met.csv \ zle/zsh-4.3.15/Src/Zle/zle_word.c.met.csv \ zle/zsh-4.3.15/Src/Zle/zleparameter.c.met.csv %.c.met.csv : @$(MAKE) -C `echo $@ | sed 's/\/.*$$//'` `echo $@ | sed 's/^[^/]\+\///'` CMA_MSG_FILE = zsh-4.3.15.msg.csv CMA_MET_FILE = zsh-4.3.15.met.csv CMA_LOG_FILE = zsh-4.3.15.log .PHONY: all all : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $(SMA_MET_FILES) .PHONY: verbose-all verbose-all : @for f in $(SMA_MET_FILES); do \ dir=`echo $$f | sed 's/\/.*$$//'`; \ if [ "$$last_dir" != "$$dir" ]; then $(MAKE) -C $$dir verbose-sma-only; fi; \ last_dir=$$dir; \ done $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $(SMA_MET_FILES) .PHONY: clean clean : @for f in $(SMA_MET_FILES); do \ dir=`echo $$f | sed 's/\/.*$$//'`; \ if [ "$$last_dir" != "$$dir" ]; then $(MAKE) -C $$dir clean; fi; \ last_dir=$$dir; \ done @$(RM) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) adlint-3.2.14/share/sample/zsh-4.3.15/adlint/zle/0000755000004100000410000000000012340630463021067 5ustar www-datawww-dataadlint-3.2.14/share/sample/zsh-4.3.15/adlint/zle/GNUmakefile0000644000004100000410000001013212340630463023136 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to analyze whole project with compiler like messages # % make all # - to analyze whole project with progress report # % make verbose-all # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = zsh-4.3.15 SOURCES = \ zsh-4.3.15/Src/Zle/compctl.c \ zsh-4.3.15/Src/Zle/complete.c \ zsh-4.3.15/Src/Zle/compcore.c \ zsh-4.3.15/Src/Zle/compmatch.c \ zsh-4.3.15/Src/Zle/compresult.c \ zsh-4.3.15/Src/Zle/complist.c \ zsh-4.3.15/Src/Zle/computil.c \ zsh-4.3.15/Src/Zle/deltochar.c \ zsh-4.3.15/Src/Zle/zle_bindings.c \ zsh-4.3.15/Src/Zle/zle_hist.c \ zsh-4.3.15/Src/Zle/zle_keymap.c \ zsh-4.3.15/Src/Zle/zle_main.c \ zsh-4.3.15/Src/Zle/zle_misc.c \ zsh-4.3.15/Src/Zle/zle_move.c \ zsh-4.3.15/Src/Zle/zle_params.c \ zsh-4.3.15/Src/Zle/zle_refresh.c \ zsh-4.3.15/Src/Zle/zle_thingy.c \ zsh-4.3.15/Src/Zle/zle_tricky.c \ zsh-4.3.15/Src/Zle/zle_utils.c \ zsh-4.3.15/Src/Zle/zle_vi.c \ zsh-4.3.15/Src/Zle/zle_word.c \ zsh-4.3.15/Src/Zle/zleparameter.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/zsh-4.3.15/adlint/zle/adlint_cinit.h0000644000004100000410000001756412340630463023716 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/zsh-4.3.15/adlint/zle/adlint_pinit.h0000644000004100000410000000200212340630463023710 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define HAVE_CONFIG_H #define MODULE adlint-3.2.14/share/sample/zsh-4.3.15/adlint/zle/adlint_traits.yml0000644000004100000410000002027012340630463024454 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "zsh-4.3.15" # Project root directory. project_root: "../../zsh-4.3.15" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../zsh-4.3.15" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../zsh-4.3.15/Src/Zle" - "../../zsh-4.3.15/Src" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/zsh-4.3.15/adlint/modules/0000755000004100000410000000000012340630463021745 5ustar www-datawww-dataadlint-3.2.14/share/sample/zsh-4.3.15/adlint/modules/GNUmakefile0000644000004100000410000001033312340630463024017 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to analyze whole project with compiler like messages # % make all # - to analyze whole project with progress report # % make verbose-all # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = zsh-4.3.15 SOURCES = \ zsh-4.3.15/Src/Modules/attr.c \ zsh-4.3.15/Src/Modules/cap.c \ zsh-4.3.15/Src/Modules/clone.c \ zsh-4.3.15/Src/Modules/curses.c \ zsh-4.3.15/Src/Modules/datetime.c \ zsh-4.3.15/Src/Modules/db_gdbm.c \ zsh-4.3.15/Src/Modules/example.c \ zsh-4.3.15/Src/Modules/files.c \ zsh-4.3.15/Src/Modules/langinfo.c \ zsh-4.3.15/Src/Modules/mapfile.c \ zsh-4.3.15/Src/Modules/mathfunc.c \ zsh-4.3.15/Src/Modules/newuser.c \ zsh-4.3.15/Src/Modules/parameter.c \ zsh-4.3.15/Src/Modules/regex.c \ zsh-4.3.15/Src/Modules/socket.c \ zsh-4.3.15/Src/Modules/stat.c \ zsh-4.3.15/Src/Modules/system.c \ zsh-4.3.15/Src/Modules/tcp.c \ zsh-4.3.15/Src/Modules/termcap.c \ zsh-4.3.15/Src/Modules/terminfo.c \ zsh-4.3.15/Src/Modules/zftp.c \ zsh-4.3.15/Src/Modules/zprof.c \ zsh-4.3.15/Src/Modules/zpty.c \ zsh-4.3.15/Src/Modules/zselect.c \ zsh-4.3.15/Src/Modules/zutil.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/zsh-4.3.15/adlint/modules/adlint_cinit.h0000644000004100000410000001756412340630463024574 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/zsh-4.3.15/adlint/modules/adlint_pinit.h0000644000004100000410000000200212340630463024566 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define HAVE_CONFIG_H #define MODULE adlint-3.2.14/share/sample/zsh-4.3.15/adlint/modules/adlint_traits.yml0000644000004100000410000002033512340630463025334 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "zsh-4.3.15" # Project root directory. project_root: "../../zsh-4.3.15" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../zsh-4.3.15" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../zsh-4.3.15/Src/Modules" - "../../zsh-4.3.15/Src" - "../../zsh-4.3.15/Src/Zle" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/zsh-4.3.15/adlint/builtins/0000755000004100000410000000000012340630463022126 5ustar www-datawww-dataadlint-3.2.14/share/sample/zsh-4.3.15/adlint/builtins/GNUmakefile0000644000004100000410000000735312340630463024210 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = zsh-4.3.15 SOURCES = \ zsh-4.3.15/Src/Builtins/rlimits.c \ zsh-4.3.15/Src/Builtins/sched.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/zsh-4.3.15/adlint/builtins/adlint_cinit.h0000644000004100000410000001756412340630463024755 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/zsh-4.3.15/adlint/builtins/adlint_pinit.h0000644000004100000410000000200212340630463024747 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define HAVE_CONFIG_H #define MODULE adlint-3.2.14/share/sample/zsh-4.3.15/adlint/builtins/adlint_traits.yml0000644000004100000410000002033512340630463025515 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "zsh-4.3.15" # Project root directory. project_root: "../../zsh-4.3.15" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../zsh-4.3.15" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../zsh-4.3.15/Src/Modules" - "../../zsh-4.3.15/Src" - "../../zsh-4.3.15/Src/Zle" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/zsh-4.3.15/adlint/adlint_traits.yml0000644000004100000410000001732512340630463023671 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "zsh-4.3.15" # Project root directory. project_root: "../zsh-4.3.15" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../zsh-4.3.15" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/README0000644000004100000410000000035212340630463016350 0ustar www-datawww-dataHere are samples showing how to make up analysis project of the large "real-world" software (that I love to use). To actually run analyses, you need to... 1) download the target software 2) run "./configure && make" on Fedora 14 adlint-3.2.14/share/sample/ctags-5.8/0000755000004100000410000000000012340630463017101 5ustar www-datawww-dataadlint-3.2.14/share/sample/ctags-5.8/adlint/0000755000004100000410000000000012340630463020354 5ustar www-datawww-dataadlint-3.2.14/share/sample/ctags-5.8/adlint/GNUmakefile0000644000004100000410000001136012340630463022427 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ctags-5.8 SOURCES = \ ctags-5.8/args.c \ ctags-5.8/ant.c \ ctags-5.8/asm.c \ ctags-5.8/asp.c \ ctags-5.8/awk.c \ ctags-5.8/basic.c \ ctags-5.8/beta.c \ ctags-5.8/c.c \ ctags-5.8/cobol.c \ ctags-5.8/dosbatch.c \ ctags-5.8/eiffel.c \ ctags-5.8/entry.c \ ctags-5.8/erlang.c \ ctags-5.8/flex.c \ ctags-5.8/fortran.c \ ctags-5.8/get.c \ ctags-5.8/html.c \ ctags-5.8/jscript.c \ ctags-5.8/keyword.c \ ctags-5.8/lisp.c \ ctags-5.8/lregex.c \ ctags-5.8/lua.c \ ctags-5.8/main.c \ ctags-5.8/make.c \ ctags-5.8/matlab.c \ ctags-5.8/ocaml.c \ ctags-5.8/options.c \ ctags-5.8/parse.c \ ctags-5.8/pascal.c \ ctags-5.8/perl.c \ ctags-5.8/php.c \ ctags-5.8/python.c \ ctags-5.8/read.c \ ctags-5.8/rexx.c \ ctags-5.8/routines.c \ ctags-5.8/ruby.c \ ctags-5.8/scheme.c \ ctags-5.8/sh.c \ ctags-5.8/slang.c \ ctags-5.8/sml.c \ ctags-5.8/sort.c \ ctags-5.8/sql.c \ ctags-5.8/strlist.c \ ctags-5.8/tcl.c \ ctags-5.8/tex.c \ ctags-5.8/verilog.c \ ctags-5.8/vhdl.c \ ctags-5.8/vim.c \ ctags-5.8/yacc.c \ ctags-5.8/vstring.c \ ctags-5.8/readtags.c VPATH = .. VPATH_COMPONENTS = 1 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ctags-5.8/adlint/adlint_cinit.h0000644000004100000410000001773512340630463023203 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_start(a, b) (0) #define __builtin_va_end(a) (0) #define __builtin_va_arg(ar, t) (0) #define __builtin_va_copy(d, s) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ctags-5.8/adlint/adlint_pinit.h0000644000004100000410000000176312340630463023212 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define HAVE_CONFIG_H adlint-3.2.14/share/sample/ctags-5.8/adlint/adlint_traits.yml0000644000004100000410000002021012340630463023733 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ctags-5.8" # Project root directory. project_root: "../ctags-5.8" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../ctags-5.8" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../ctags-5.8" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/screen-4.0.3/0000755000004100000410000000000012340630463017407 5ustar www-datawww-dataadlint-3.2.14/share/sample/screen-4.0.3/adlint/0000755000004100000410000000000012340630463020662 5ustar www-datawww-dataadlint-3.2.14/share/sample/screen-4.0.3/adlint/GNUmakefile0000644000004100000410000001072512340630463022741 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = screen-4.0.3 SOURCES = \ screen-4.0.3/screen.c \ screen-4.0.3/ansi.c \ screen-4.0.3/fileio.c \ screen-4.0.3/mark.c \ screen-4.0.3/misc.c \ screen-4.0.3/resize.c \ screen-4.0.3/socket.c \ screen-4.0.3/search.c \ screen-4.0.3/tty.c \ screen-4.0.3/term.c \ screen-4.0.3/window.c \ screen-4.0.3/utmp.c \ screen-4.0.3/loadav.c \ screen-4.0.3/putenv.c \ screen-4.0.3/help.c \ screen-4.0.3/termcap.c \ screen-4.0.3/input.c \ screen-4.0.3/attacher.c \ screen-4.0.3/pty.c \ screen-4.0.3/process.c \ screen-4.0.3/display.c \ screen-4.0.3/comm.c \ screen-4.0.3/kmapdef.c \ screen-4.0.3/acls.c \ screen-4.0.3/braille.c \ screen-4.0.3/braille_tsi.c \ screen-4.0.3/logfile.c \ screen-4.0.3/layer.c \ screen-4.0.3/sched.c \ screen-4.0.3/teln.c \ screen-4.0.3/nethack.c \ screen-4.0.3/encoding.c VPATH = .. VPATH_COMPONENTS = 1 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/screen-4.0.3/adlint/adlint_cinit.h0000644000004100000410000001756412340630463023511 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/screen-4.0.3/adlint/adlint_pinit.h0000644000004100000410000000173412340630463023516 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ adlint-3.2.14/share/sample/screen-4.0.3/adlint/adlint_traits.yml0000644000004100000410000002022212340630463024244 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "screen-4.0.3" # Project root directory. project_root: "../screen-4.0.3" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../screen-4.0.3" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../screen-4.0.3" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "GNU" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 2 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/flex-2.5.35/0000755000004100000410000000000012340630463017156 5ustar www-datawww-dataadlint-3.2.14/share/sample/flex-2.5.35/adlint/0000755000004100000410000000000012340630463020431 5ustar www-datawww-dataadlint-3.2.14/share/sample/flex-2.5.35/adlint/GNUmakefile0000644000004100000410000001027012340630463022503 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = flex-2.5.35 SOURCES = \ flex-2.5.35/libmain.c \ flex-2.5.35/libyywrap.c \ flex-2.5.35/dfa.c \ flex-2.5.35/ecs.c \ flex-2.5.35/scanflags.c \ flex-2.5.35/gen.c \ flex-2.5.35/main.c \ flex-2.5.35/misc.c \ flex-2.5.35/nfa.c \ flex-2.5.35/parse.c \ flex-2.5.35/scan.c \ flex-2.5.35/skel.c \ flex-2.5.35/sym.c \ flex-2.5.35/tblcmp.c \ flex-2.5.35/yylex.c \ flex-2.5.35/options.c \ flex-2.5.35/scanopt.c \ flex-2.5.35/buf.c \ flex-2.5.35/tables.c \ flex-2.5.35/tables_shared.c \ flex-2.5.35/filter.c \ flex-2.5.35/regex.c VPATH = .. VPATH_COMPONENTS = 1 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/flex-2.5.35/adlint/adlint_cinit.h0000644000004100000410000001773512340630463023260 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_start(a, b) (0) #define __builtin_va_end(a) (0) #define __builtin_va_arg(ar, t) (0) #define __builtin_va_copy(d, s) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/flex-2.5.35/adlint/adlint_pinit.h0000644000004100000410000000203712340630463023262 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define HAVE_CONFIG_H #define LOCALEDIR "/usr/local/share/locale" adlint-3.2.14/share/sample/flex-2.5.35/adlint/adlint_traits.yml0000644000004100000410000002022012340630463024011 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "flex-2.5.35" # Project root directory. project_root: "../flex-2.5.35" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../flex-2.5.35" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../flex-2.5.35" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/vim-7.3/0000755000004100000410000000000012340630463016570 5ustar www-datawww-dataadlint-3.2.14/share/sample/vim-7.3/adlint/0000755000004100000410000000000012340630463020043 5ustar www-datawww-dataadlint-3.2.14/share/sample/vim-7.3/adlint/xxd/0000755000004100000410000000000012340630463020646 5ustar www-datawww-dataadlint-3.2.14/share/sample/vim-7.3/adlint/xxd/GNUmakefile0000644000004100000410000000726612340630463022733 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = vim-7.3 SOURCES = \ vim73/src/xxd/xxd.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/vim-7.3/adlint/xxd/adlint_cinit.h0000644000004100000410000001756412340630463023475 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/vim-7.3/adlint/xxd/adlint_pinit.h0000644000004100000410000000200412340630463023471 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define _FORTIFY_SOURCE 1 #define UNIX adlint-3.2.14/share/sample/vim-7.3/adlint/xxd/adlint_traits.yml0000644000004100000410000002015512340630463024235 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "xxd-7.3" # Project root directory. project_root: "../../vim73" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../vim73" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/vim-7.3/adlint/vim/0000755000004100000410000000000012340630463020636 5ustar www-datawww-dataadlint-3.2.14/share/sample/vim-7.3/adlint/vim/GNUmakefile0000644000004100000410000001163312340630463022714 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = vim-7.3 SOURCES = \ vim73/src/buffer.c \ vim73/src/blowfish.c \ vim73/src/charset.c \ vim73/src/diff.c \ vim73/src/digraph.c \ vim73/src/edit.c \ vim73/src/eval.c \ vim73/src/ex_cmds.c \ vim73/src/ex_cmds2.c \ vim73/src/ex_docmd.c \ vim73/src/ex_eval.c \ vim73/src/ex_getln.c \ vim73/src/fileio.c \ vim73/src/fold.c \ vim73/src/getchar.c \ vim73/src/hardcopy.c \ vim73/src/hashtab.c \ vim73/src/if_cscope.c \ vim73/src/if_xcmdsrv.c \ vim73/src/main.c \ vim73/src/mark.c \ vim73/src/memfile.c \ vim73/src/memline.c \ vim73/src/menu.c \ vim73/src/message.c \ vim73/src/misc1.c \ vim73/src/misc2.c \ vim73/src/move.c \ vim73/src/mbyte.c \ vim73/src/normal.c \ vim73/src/ops.c \ vim73/src/option.c \ vim73/src/os_unix.c \ vim73/src/auto/pathdef.c \ vim73/src/popupmnu.c \ vim73/src/quickfix.c \ vim73/src/regexp.c \ vim73/src/screen.c \ vim73/src/search.c \ vim73/src/sha256.c \ vim73/src/spell.c \ vim73/src/syntax.c \ vim73/src/tag.c \ vim73/src/term.c \ vim73/src/ui.c \ vim73/src/undo.c \ vim73/src/window.c \ vim73/src/gui.c \ vim73/src/gui_gtk.c \ vim73/src/gui_gtk_x11.c \ vim73/src/pty.c \ vim73/src/gui_gtk_f.c \ vim73/src/gui_beval.c \ vim73/src/netbeans.c \ vim73/src/version.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/vim-7.3/adlint/vim/adlint_cinit.h0000644000004100000410000001756412340630463023465 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/vim-7.3/adlint/vim/adlint_pinit.h0000644000004100000410000000204212340630463023463 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define HAVE_CONFIG_H #define FEAT_GUI_GTK #define _FORTIFY_SOURCE 1 adlint-3.2.14/share/sample/vim-7.3/adlint/vim/adlint_traits.yml0000644000004100000410000002076712340630463024236 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "vim-7.3" # Project root directory. project_root: "../../vim73" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../vim73" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../vim73/src" - "../../vim73/src/proto" - "/usr/include/gtk-2.0" - "/usr/lib/gtk-2.0/include" - "/usr/include/atk-1.0" - "/usr/include/cairo" - "/usr/include/gdk-pixbuf-2.0" - "/usr/include/pango-1.0" - "/usr/include/glib-2.0" - "/usr/lib/glib-2.0/include" - "/usr/include/pixman-1" - "/usr/include/freetype2" - "/usr/include/libpng12" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/0000755000004100000410000000000012340630463017434 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/0000755000004100000410000000000012340630463020707 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/enc/0000755000004100000410000000000012340630463021454 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/enc/GNUmakefile0000644000004100000410000001136412340630463023533 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/enc/encdb.c \ ruby-1.9.3-p0/enc/big5.c \ ruby-1.9.3-p0/enc/cp949.c \ ruby-1.9.3-p0/enc/emacs_mule.c \ ruby-1.9.3-p0/enc/euc_jp.c \ ruby-1.9.3-p0/enc/euc_kr.c \ ruby-1.9.3-p0/enc/euc_tw.c \ ruby-1.9.3-p0/enc/gb2312.c \ ruby-1.9.3-p0/enc/gb18030.c \ ruby-1.9.3-p0/enc/gbk.c \ ruby-1.9.3-p0/enc/iso_8859_1.c \ ruby-1.9.3-p0/enc/iso_8859_2.c \ ruby-1.9.3-p0/enc/iso_8859_3.c \ ruby-1.9.3-p0/enc/iso_8859_4.c \ ruby-1.9.3-p0/enc/iso_8859_5.c \ ruby-1.9.3-p0/enc/iso_8859_6.c \ ruby-1.9.3-p0/enc/iso_8859_7.c \ ruby-1.9.3-p0/enc/iso_8859_8.c \ ruby-1.9.3-p0/enc/iso_8859_9.c \ ruby-1.9.3-p0/enc/iso_8859_10.c \ ruby-1.9.3-p0/enc/iso_8859_11.c \ ruby-1.9.3-p0/enc/iso_8859_13.c \ ruby-1.9.3-p0/enc/iso_8859_14.c \ ruby-1.9.3-p0/enc/iso_8859_15.c \ ruby-1.9.3-p0/enc/iso_8859_16.c \ ruby-1.9.3-p0/enc/koi8_r.c \ ruby-1.9.3-p0/enc/koi8_u.c \ ruby-1.9.3-p0/enc/shift_jis.c \ ruby-1.9.3-p0/enc/utf_16be.c \ ruby-1.9.3-p0/enc/utf_16le.c \ ruby-1.9.3-p0/enc/utf_32be.c \ ruby-1.9.3-p0/enc/utf_32le.c \ ruby-1.9.3-p0/enc/windows_1251.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_cinit.h0000644000004100000410000001756412340630463024303 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_pinit.h0000644000004100000410000000204412340630463024303 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define _FILE_OFFSET_BITS 64 #define ONIG_ENC_REGISTER rb_enc_register adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_traits.yml0000644000004100000410000002036712340630463025050 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/0000755000004100000410000000000012340630463022613 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/GNUmakefile0000644000004100000410000000731012340630463024666 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/fcntl/fcntl.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_cinit.h0000644000004100000410000001756412340630463025442 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_pinit.h0000644000004100000410000000203512340630463025442 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_traits.yml0000644000004100000410000002043512340630463026203 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/fcntl" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-psych/0000755000004100000410000000000012340630463022633 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-psych/GNUmakefile0000644000004100000410000000754112340630463024714 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/psych/psych.c \ ruby-1.9.3-p0/ext/psych/yaml_tree.c \ ruby-1.9.3-p0/ext/psych/parser.c \ ruby-1.9.3-p0/ext/psych/emitter.c \ ruby-1.9.3-p0/ext/psych/to_ruby.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_cinit.h0000644000004100000410000001756412340630463025462 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_pinit.h0000644000004100000410000000203512340630463025462 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_traits.yml0000644000004100000410000002043512340630463026223 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/psych" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/0000755000004100000410000000000012340630463023717 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/GNUmakefile0000644000004100000410000000732112340630463025774 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/io/nonblock/nonblock.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_cinit.h0000644000004100000410000001756412340630463026546 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_pinit.h0000644000004100000410000000203512340630463026546 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_traits.yml0000644000004100000410000002044312340630463027306 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/io/nonblock" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/0000755000004100000410000000000012340630463023025 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/GNUmakefile0000644000004100000410000000731212340630463025102 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/syslog/syslog.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_cinit.h0000644000004100000410000001756412340630463025654 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_pinit.h0000644000004100000410000000203512340630463025654 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_traits.yml0000644000004100000410000002043612340630463026416 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/syslog" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/core/0000755000004100000410000000000012340630463021637 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/core/GNUmakefile0000644000004100000410000001322712340630463023716 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/main.c \ ruby-1.9.3-p0/dmydln.c \ ruby-1.9.3-p0/dmyencoding.c \ ruby-1.9.3-p0/version.c \ ruby-1.9.3-p0/dmyversion.c \ ruby-1.9.3-p0/miniprelude.c \ ruby-1.9.3-p0/array.c \ ruby-1.9.3-p0/bignum.c \ ruby-1.9.3-p0/class.c \ ruby-1.9.3-p0/compar.c \ ruby-1.9.3-p0/complex.c \ ruby-1.9.3-p0/dir.c \ ruby-1.9.3-p0/dln_find.c \ ruby-1.9.3-p0/enum.c \ ruby-1.9.3-p0/enumerator.c \ ruby-1.9.3-p0/error.c \ ruby-1.9.3-p0/eval.c \ ruby-1.9.3-p0/load.c \ ruby-1.9.3-p0/proc.c \ ruby-1.9.3-p0/file.c \ ruby-1.9.3-p0/gc.c \ ruby-1.9.3-p0/hash.c \ ruby-1.9.3-p0/inits.c \ ruby-1.9.3-p0/io.c \ ruby-1.9.3-p0/marshal.c \ ruby-1.9.3-p0/math.c \ ruby-1.9.3-p0/node.c \ ruby-1.9.3-p0/numeric.c \ ruby-1.9.3-p0/object.c \ ruby-1.9.3-p0/pack.c \ ruby-1.9.3-p0/parse.c \ ruby-1.9.3-p0/process.c \ ruby-1.9.3-p0/random.c \ ruby-1.9.3-p0/range.c \ ruby-1.9.3-p0/rational.c \ ruby-1.9.3-p0/re.c \ ruby-1.9.3-p0/regcomp.c \ ruby-1.9.3-p0/regenc.c \ ruby-1.9.3-p0/regerror.c \ ruby-1.9.3-p0/regexec.c \ ruby-1.9.3-p0/regparse.c \ ruby-1.9.3-p0/regsyntax.c \ ruby-1.9.3-p0/ruby.c \ ruby-1.9.3-p0/safe.c \ ruby-1.9.3-p0/signal.c \ ruby-1.9.3-p0/sprintf.c \ ruby-1.9.3-p0/st.c \ ruby-1.9.3-p0/strftime.c \ ruby-1.9.3-p0/string.c \ ruby-1.9.3-p0/struct.c \ ruby-1.9.3-p0/time.c \ ruby-1.9.3-p0/transcode.c \ ruby-1.9.3-p0/util.c \ ruby-1.9.3-p0/variable.c \ ruby-1.9.3-p0/compile.c \ ruby-1.9.3-p0/debug.c \ ruby-1.9.3-p0/iseq.c \ ruby-1.9.3-p0/vm.c \ ruby-1.9.3-p0/vm_dump.c \ ruby-1.9.3-p0/thread.c \ ruby-1.9.3-p0/cont.c \ ruby-1.9.3-p0/enc/ascii.c \ ruby-1.9.3-p0/enc/us_ascii.c \ ruby-1.9.3-p0/enc/unicode.c \ ruby-1.9.3-p0/enc/utf_8.c \ ruby-1.9.3-p0/newline.c \ ruby-1.9.3-p0/missing/strlcpy.c \ ruby-1.9.3-p0/missing/strlcat.c \ ruby-1.9.3-p0/missing/setproctitle.c \ ruby-1.9.3-p0/addr2line.c \ ruby-1.9.3-p0/dmyext.c \ ruby-1.9.3-p0/dln.c \ ruby-1.9.3-p0/encoding.c \ ruby-1.9.3-p0/prelude.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/core/adlint_cinit.h0000644000004100000410000001756412340630463024466 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/core/adlint_pinit.h0000644000004100000410000000215412340630463024470 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #include #include #define RUBY_EXPORT #define ONIG_ENC_REGISTER rb_enc_register #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/core/adlint_traits.yml0000644000004100000410000002037012340630463025225 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0/" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/0000755000004100000410000000000012340630463022445 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/GNUmakefile0000644000004100000410000000730612340630463024525 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/zlib/zlib.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_cinit.h0000644000004100000410000001756412340630463025274 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_pinit.h0000644000004100000410000000203512340630463025274 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_traits.yml0000644000004100000410000002043412340630463026034 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/zlib" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/0000755000004100000410000000000012340630463023554 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/GNUmakefile0000644000004100000410000000731712340630463025636 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/io/console/console.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_cinit.h0000644000004100000410000001756412340630463026403 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_pinit.h0000644000004100000410000000203512340630463026403 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_traits.yml0000644000004100000410000002044212340630463027142 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/io/console" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/GNUmakefile0000644000004100000410000003604212340630463022766 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to analyze whole project with compiler like messages # % make all # - to analyze whole project with progress report # % make verbose-all # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . SMA_MET_FILES = \ core/ruby-1.9.3-p0/main.c.met.csv \ core/ruby-1.9.3-p0/dmydln.c.met.csv \ core/ruby-1.9.3-p0/dmyencoding.c.met.csv \ core/ruby-1.9.3-p0/version.c.met.csv \ core/ruby-1.9.3-p0/dmyversion.c.met.csv \ core/ruby-1.9.3-p0/miniprelude.c.met.csv \ core/ruby-1.9.3-p0/array.c.met.csv \ core/ruby-1.9.3-p0/bignum.c.met.csv \ core/ruby-1.9.3-p0/class.c.met.csv \ core/ruby-1.9.3-p0/compar.c.met.csv \ core/ruby-1.9.3-p0/complex.c.met.csv \ core/ruby-1.9.3-p0/dir.c.met.csv \ core/ruby-1.9.3-p0/dln_find.c.met.csv \ core/ruby-1.9.3-p0/enum.c.met.csv \ core/ruby-1.9.3-p0/enumerator.c.met.csv \ core/ruby-1.9.3-p0/error.c.met.csv \ core/ruby-1.9.3-p0/eval.c.met.csv \ core/ruby-1.9.3-p0/load.c.met.csv \ core/ruby-1.9.3-p0/proc.c.met.csv \ core/ruby-1.9.3-p0/file.c.met.csv \ core/ruby-1.9.3-p0/gc.c.met.csv \ core/ruby-1.9.3-p0/hash.c.met.csv \ core/ruby-1.9.3-p0/inits.c.met.csv \ core/ruby-1.9.3-p0/io.c.met.csv \ core/ruby-1.9.3-p0/marshal.c.met.csv \ core/ruby-1.9.3-p0/math.c.met.csv \ core/ruby-1.9.3-p0/node.c.met.csv \ core/ruby-1.9.3-p0/numeric.c.met.csv \ core/ruby-1.9.3-p0/object.c.met.csv \ core/ruby-1.9.3-p0/pack.c.met.csv \ core/ruby-1.9.3-p0/parse.c.met.csv \ core/ruby-1.9.3-p0/process.c.met.csv \ core/ruby-1.9.3-p0/random.c.met.csv \ core/ruby-1.9.3-p0/range.c.met.csv \ core/ruby-1.9.3-p0/rational.c.met.csv \ core/ruby-1.9.3-p0/re.c.met.csv \ core/ruby-1.9.3-p0/regcomp.c.met.csv \ core/ruby-1.9.3-p0/regenc.c.met.csv \ core/ruby-1.9.3-p0/regerror.c.met.csv \ core/ruby-1.9.3-p0/regexec.c.met.csv \ core/ruby-1.9.3-p0/regparse.c.met.csv \ core/ruby-1.9.3-p0/regsyntax.c.met.csv \ core/ruby-1.9.3-p0/ruby.c.met.csv \ core/ruby-1.9.3-p0/safe.c.met.csv \ core/ruby-1.9.3-p0/signal.c.met.csv \ core/ruby-1.9.3-p0/sprintf.c.met.csv \ core/ruby-1.9.3-p0/st.c.met.csv \ core/ruby-1.9.3-p0/strftime.c.met.csv \ core/ruby-1.9.3-p0/string.c.met.csv \ core/ruby-1.9.3-p0/struct.c.met.csv \ core/ruby-1.9.3-p0/time.c.met.csv \ core/ruby-1.9.3-p0/transcode.c.met.csv \ core/ruby-1.9.3-p0/util.c.met.csv \ core/ruby-1.9.3-p0/variable.c.met.csv \ core/ruby-1.9.3-p0/compile.c.met.csv \ core/ruby-1.9.3-p0/debug.c.met.csv \ core/ruby-1.9.3-p0/iseq.c.met.csv \ core/ruby-1.9.3-p0/vm.c.met.csv \ core/ruby-1.9.3-p0/vm_dump.c.met.csv \ core/ruby-1.9.3-p0/thread.c.met.csv \ core/ruby-1.9.3-p0/cont.c.met.csv \ core/ruby-1.9.3-p0/enc/ascii.c.met.csv \ core/ruby-1.9.3-p0/enc/us_ascii.c.met.csv \ core/ruby-1.9.3-p0/enc/unicode.c.met.csv \ core/ruby-1.9.3-p0/enc/utf_8.c.met.csv \ core/ruby-1.9.3-p0/newline.c.met.csv \ core/ruby-1.9.3-p0/missing/strlcpy.c.met.csv \ core/ruby-1.9.3-p0/missing/strlcat.c.met.csv \ core/ruby-1.9.3-p0/missing/setproctitle.c.met.csv \ core/ruby-1.9.3-p0/addr2line.c.met.csv \ core/ruby-1.9.3-p0/dmyext.c.met.csv \ core/ruby-1.9.3-p0/dln.c.met.csv \ core/ruby-1.9.3-p0/encoding.c.met.csv \ core/ruby-1.9.3-p0/prelude.c.met.csv \ enc/ruby-1.9.3-p0/enc/encdb.c.met.csv \ enc/ruby-1.9.3-p0/enc/big5.c.met.csv \ enc/ruby-1.9.3-p0/enc/cp949.c.met.csv \ enc/ruby-1.9.3-p0/enc/emacs_mule.c.met.csv \ enc/ruby-1.9.3-p0/enc/euc_jp.c.met.csv \ enc/ruby-1.9.3-p0/enc/euc_kr.c.met.csv \ enc/ruby-1.9.3-p0/enc/euc_tw.c.met.csv \ enc/ruby-1.9.3-p0/enc/gb2312.c.met.csv \ enc/ruby-1.9.3-p0/enc/gb18030.c.met.csv \ enc/ruby-1.9.3-p0/enc/gbk.c.met.csv \ enc/ruby-1.9.3-p0/enc/iso_8859_1.c.met.csv \ enc/ruby-1.9.3-p0/enc/iso_8859_2.c.met.csv \ enc/ruby-1.9.3-p0/enc/iso_8859_3.c.met.csv \ enc/ruby-1.9.3-p0/enc/iso_8859_4.c.met.csv \ enc/ruby-1.9.3-p0/enc/iso_8859_5.c.met.csv \ enc/ruby-1.9.3-p0/enc/iso_8859_6.c.met.csv \ enc/ruby-1.9.3-p0/enc/iso_8859_7.c.met.csv \ enc/ruby-1.9.3-p0/enc/iso_8859_8.c.met.csv \ enc/ruby-1.9.3-p0/enc/iso_8859_9.c.met.csv \ enc/ruby-1.9.3-p0/enc/iso_8859_10.c.met.csv \ enc/ruby-1.9.3-p0/enc/iso_8859_11.c.met.csv \ enc/ruby-1.9.3-p0/enc/iso_8859_13.c.met.csv \ enc/ruby-1.9.3-p0/enc/iso_8859_14.c.met.csv \ enc/ruby-1.9.3-p0/enc/iso_8859_15.c.met.csv \ enc/ruby-1.9.3-p0/enc/iso_8859_16.c.met.csv \ enc/ruby-1.9.3-p0/enc/koi8_r.c.met.csv \ enc/ruby-1.9.3-p0/enc/koi8_u.c.met.csv \ enc/ruby-1.9.3-p0/enc/shift_jis.c.met.csv \ enc/ruby-1.9.3-p0/enc/utf_16be.c.met.csv \ enc/ruby-1.9.3-p0/enc/utf_16le.c.met.csv \ enc/ruby-1.9.3-p0/enc/utf_32be.c.met.csv \ enc/ruby-1.9.3-p0/enc/utf_32le.c.met.csv \ enc/ruby-1.9.3-p0/enc/windows_1251.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/transdb.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/big5.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/chinese.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/emoji.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/emoji_iso2022_kddi.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/emoji_sjis_docomo.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/emoji_sjis_kddi.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/emoji_sjis_softbank.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/escape.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/gb18030.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/gbk.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/iso2022.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/japanese.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/japanese_euc.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/japanese_sjis.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/korean.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/single_byte.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/utf8_mac.c.met.csv \ enc-trans/ruby-1.9.3-p0/enc/trans/utf_16_32.c.met.csv \ ext-bigdecimal/ruby-1.9.3-p0/ext/bigdecimal/bigdecimal.c.met.csv \ ext-continuation/ruby-1.9.3-p0/ext/continuation/continuation.c.met.csv \ ext-coverage/ruby-1.9.3-p0/ext/coverage/coverage.c.met.csv \ ext-curses/ruby-1.9.3-p0/ext/curses/curses.c.met.csv \ ext-date/ruby-1.9.3-p0/ext/date/date_strptime.c.met.csv \ ext-date/ruby-1.9.3-p0/ext/date/date_strftime.c.met.csv \ ext-date/ruby-1.9.3-p0/ext/date/date_core.c.met.csv \ ext-date/ruby-1.9.3-p0/ext/date/date_parse.c.met.csv \ ext-dbm/ruby-1.9.3-p0/ext/dbm/dbm.c.met.csv \ ext-digest/ruby-1.9.3-p0/ext/digest/digest.c.met.csv \ ext-digest-bubblebabble/ruby-1.9.3-p0/ext/digest/bubblebabble/bubblebabble.c.met.csv \ ext-digest-md5/ruby-1.9.3-p0/ext/digest/md5/md5init.c.met.csv \ ext-digest-md5/ruby-1.9.3-p0/ext/digest/md5/md5ossl.c.met.csv \ ext-digest-rmd160/ruby-1.9.3-p0/ext/digest/rmd160/rmd160init.c.met.csv \ ext-digest-rmd160/ruby-1.9.3-p0/ext/digest/rmd160/rmd160ossl.c.met.csv \ ext-digest-sha1/ruby-1.9.3-p0/ext/digest/sha1/sha1init.c.met.csv \ ext-digest-sha1/ruby-1.9.3-p0/ext/digest/sha1/sha1ossl.c.met.csv \ ext-digest-sha2/ruby-1.9.3-p0/ext/digest/sha2/sha2init.c.met.csv \ ext-digest-sha2/ruby-1.9.3-p0/ext/digest/sha2/sha2ossl.c.met.csv \ ext-dl/ruby-1.9.3-p0/ext/dl/dl.c.met.csv \ ext-dl/ruby-1.9.3-p0/ext/dl/cptr.c.met.csv \ ext-dl/ruby-1.9.3-p0/ext/dl/cfunc.c.met.csv \ ext-dl/ruby-1.9.3-p0/ext/dl/handle.c.met.csv \ ext-dl-callback/ruby-1.9.3-p0/ext/dl/callback/callback.c.met.csv \ ext-dl-callback/ruby-1.9.3-p0/ext/dl/callback/callback-0.c.met.csv \ ext-dl-callback/ruby-1.9.3-p0/ext/dl/callback/callback-1.c.met.csv \ ext-dl-callback/ruby-1.9.3-p0/ext/dl/callback/callback-2.c.met.csv \ ext-dl-callback/ruby-1.9.3-p0/ext/dl/callback/callback-3.c.met.csv \ ext-dl-callback/ruby-1.9.3-p0/ext/dl/callback/callback-4.c.met.csv \ ext-dl-callback/ruby-1.9.3-p0/ext/dl/callback/callback-5.c.met.csv \ ext-dl-callback/ruby-1.9.3-p0/ext/dl/callback/callback-6.c.met.csv \ ext-dl-callback/ruby-1.9.3-p0/ext/dl/callback/callback-7.c.met.csv \ ext-dl-callback/ruby-1.9.3-p0/ext/dl/callback/callback-8.c.met.csv \ ext-etc/ruby-1.9.3-p0/ext/etc/etc.c.met.csv \ ext-fcntl/ruby-1.9.3-p0/ext/fcntl/fcntl.c.met.csv \ ext-fiber/ruby-1.9.3-p0/ext/fiber/fiber.c.met.csv \ ext-fiddle/ruby-1.9.3-p0/ext/fiddle/closure.c.met.csv \ ext-fiddle/ruby-1.9.3-p0/ext/fiddle/function.c.met.csv \ ext-fiddle/ruby-1.9.3-p0/ext/fiddle/conversions.c.met.csv \ ext-fiddle/ruby-1.9.3-p0/ext/fiddle/fiddle.c.met.csv \ ext-gdbm/ruby-1.9.3-p0/ext/gdbm/gdbm.c.met.csv \ ext-iconv/ruby-1.9.3-p0/ext/iconv/iconv.c.met.csv \ ext-io-console/ruby-1.9.3-p0/ext/io/console/console.c.met.csv \ ext-io-nonblock/ruby-1.9.3-p0/ext/io/nonblock/nonblock.c.met.csv \ ext-io-wait/ruby-1.9.3-p0/ext/io/wait/wait.c.met.csv \ ext-json-generator/ruby-1.9.3-p0/ext/json/generator/generator.c.met.csv \ ext-json-parser/ruby-1.9.3-p0/ext/json/parser/parser.c.met.csv \ ext-mathn-complex/ruby-1.9.3-p0/ext/mathn/complex/complex.c.met.csv \ ext-mathn-rational/ruby-1.9.3-p0/ext/mathn/rational/rational.c.met.csv \ ext-nkf/ruby-1.9.3-p0/ext/nkf/nkf.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_rand.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_ocsp.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_pkey_dh.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_x509revoked.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/openssl_missing.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_pkcs12.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_pkey_ec.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_x509name.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_ns_spki.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_ssl_session.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_pkey_rsa.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_pkcs7.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_ssl.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_hmac.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_bio.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_pkcs5.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_x509req.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_x509store.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_x509cert.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_cipher.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_digest.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_config.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_bn.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_x509attr.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_x509.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_x509crl.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_x509ext.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_asn1.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_engine.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_pkey_dsa.c.met.csv \ ext-openssl/ruby-1.9.3-p0/ext/openssl/ossl_pkey.c.met.csv \ ext-pathname/ruby-1.9.3-p0/ext/pathname/pathname.c.met.csv \ ext-psych/ruby-1.9.3-p0/ext/psych/psych.c.met.csv \ ext-psych/ruby-1.9.3-p0/ext/psych/yaml_tree.c.met.csv \ ext-psych/ruby-1.9.3-p0/ext/psych/parser.c.met.csv \ ext-psych/ruby-1.9.3-p0/ext/psych/emitter.c.met.csv \ ext-psych/ruby-1.9.3-p0/ext/psych/to_ruby.c.met.csv \ ext-pty/ruby-1.9.3-p0/ext/pty/pty.c.met.csv \ ext-racc-cparse/ruby-1.9.3-p0/ext/racc/cparse/cparse.c.met.csv \ ext-readline/ruby-1.9.3-p0/ext/readline/readline.c.met.csv \ ext-ripper/ruby-1.9.3-p0/ext/ripper/ripper.c.met.csv \ ext-sdbm/ruby-1.9.3-p0/ext/sdbm/init.c.met.csv \ ext-sdbm/ruby-1.9.3-p0/ext/sdbm/_sdbm.c.met.csv \ ext-socket/ruby-1.9.3-p0/ext/socket/init.c.met.csv \ ext-socket/ruby-1.9.3-p0/ext/socket/constants.c.met.csv \ ext-socket/ruby-1.9.3-p0/ext/socket/basicsocket.c.met.csv \ ext-socket/ruby-1.9.3-p0/ext/socket/socket.c.met.csv \ ext-socket/ruby-1.9.3-p0/ext/socket/ipsocket.c.met.csv \ ext-socket/ruby-1.9.3-p0/ext/socket/tcpsocket.c.met.csv \ ext-socket/ruby-1.9.3-p0/ext/socket/tcpserver.c.met.csv \ ext-socket/ruby-1.9.3-p0/ext/socket/sockssocket.c.met.csv \ ext-socket/ruby-1.9.3-p0/ext/socket/udpsocket.c.met.csv \ ext-socket/ruby-1.9.3-p0/ext/socket/unixsocket.c.met.csv \ ext-socket/ruby-1.9.3-p0/ext/socket/unixserver.c.met.csv \ ext-socket/ruby-1.9.3-p0/ext/socket/option.c.met.csv \ ext-socket/ruby-1.9.3-p0/ext/socket/ancdata.c.met.csv \ ext-socket/ruby-1.9.3-p0/ext/socket/raddrinfo.c.met.csv \ ext-stringio/ruby-1.9.3-p0/ext/stringio/stringio.c.met.csv \ ext-strscan/ruby-1.9.3-p0/ext/strscan/strscan.c.met.csv \ ext-syck/ruby-1.9.3-p0/ext/syck/gram.c.met.csv \ ext-syck/ruby-1.9.3-p0/ext/syck/handler.c.met.csv \ ext-syck/ruby-1.9.3-p0/ext/syck/implicit.c.met.csv \ ext-syck/ruby-1.9.3-p0/ext/syck/node.c.met.csv \ ext-syck/ruby-1.9.3-p0/ext/syck/token.c.met.csv \ ext-syck/ruby-1.9.3-p0/ext/syck/yaml2byte.c.met.csv \ ext-syck/ruby-1.9.3-p0/ext/syck/emitter.c.met.csv \ ext-syck/ruby-1.9.3-p0/ext/syck/bytecode.c.met.csv \ ext-syck/ruby-1.9.3-p0/ext/syck/syck.c.met.csv \ ext-syck/ruby-1.9.3-p0/ext/syck/rubyext.c.met.csv \ ext-syslog/ruby-1.9.3-p0/ext/syslog/syslog.c.met.csv \ ext-zlib/ruby-1.9.3-p0/ext/zlib/zlib.c.met.csv %.c.met.csv : @$(MAKE) -C `echo $@ | sed 's/\/.*$$//'` `echo $@ | sed 's/^[^/]\+\///'` CMA_MSG_FILE = ruby-1.9.3-p0.msg.csv CMA_MET_FILE = ruby-1.9.3-p0.met.csv CMA_LOG_FILE = ruby-1.9.3-p0.log .PHONY: all all : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $(SMA_MET_FILES) .PHONY: verbose-all verbose-all : @for f in $(SMA_MET_FILES); do \ dir=`echo $$f | sed 's/\/.*$$//'`; \ if [ "$$last_dir" != "$$dir" ]; then $(MAKE) -C $$dir verbose-sma-only; fi; \ last_dir=$$dir; \ done $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $(SMA_MET_FILES) .PHONY: clean clean : @for f in $(SMA_MET_FILES); do \ dir=`echo $$f | sed 's/\/.*$$//'`; \ if [ "$$last_dir" != "$$dir" ]; then $(MAKE) -C $$dir clean; fi; \ last_dir=$$dir; \ done @$(RM) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-syck/0000755000004100000410000000000012340630463022456 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-syck/GNUmakefile0000644000004100000410000001001712340630463024527 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/syck/gram.c \ ruby-1.9.3-p0/ext/syck/handler.c \ ruby-1.9.3-p0/ext/syck/implicit.c \ ruby-1.9.3-p0/ext/syck/node.c \ ruby-1.9.3-p0/ext/syck/token.c \ ruby-1.9.3-p0/ext/syck/yaml2byte.c \ ruby-1.9.3-p0/ext/syck/emitter.c \ ruby-1.9.3-p0/ext/syck/bytecode.c \ ruby-1.9.3-p0/ext/syck/syck.c \ ruby-1.9.3-p0/ext/syck/rubyext.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_cinit.h0000644000004100000410000001756412340630463025305 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_pinit.h0000644000004100000410000000203512340630463025305 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_traits.yml0000644000004100000410000002043412340630463026045 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/syck" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/0000755000004100000410000000000012340630463023170 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/GNUmakefile0000644000004100000410000001204612340630463025245 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/openssl/ossl_rand.c \ ruby-1.9.3-p0/ext/openssl/ossl_ocsp.c \ ruby-1.9.3-p0/ext/openssl/ossl_pkey_dh.c \ ruby-1.9.3-p0/ext/openssl/ossl_x509revoked.c \ ruby-1.9.3-p0/ext/openssl/openssl_missing.c \ ruby-1.9.3-p0/ext/openssl/ossl_pkcs12.c \ ruby-1.9.3-p0/ext/openssl/ossl.c \ ruby-1.9.3-p0/ext/openssl/ossl_pkey_ec.c \ ruby-1.9.3-p0/ext/openssl/ossl_x509name.c \ ruby-1.9.3-p0/ext/openssl/ossl_ns_spki.c \ ruby-1.9.3-p0/ext/openssl/ossl_ssl_session.c \ ruby-1.9.3-p0/ext/openssl/ossl_pkey_rsa.c \ ruby-1.9.3-p0/ext/openssl/ossl_pkcs7.c \ ruby-1.9.3-p0/ext/openssl/ossl_ssl.c \ ruby-1.9.3-p0/ext/openssl/ossl_hmac.c \ ruby-1.9.3-p0/ext/openssl/ossl_bio.c \ ruby-1.9.3-p0/ext/openssl/ossl_pkcs5.c \ ruby-1.9.3-p0/ext/openssl/ossl_x509req.c \ ruby-1.9.3-p0/ext/openssl/ossl_x509store.c \ ruby-1.9.3-p0/ext/openssl/ossl_x509cert.c \ ruby-1.9.3-p0/ext/openssl/ossl_cipher.c \ ruby-1.9.3-p0/ext/openssl/ossl_digest.c \ ruby-1.9.3-p0/ext/openssl/ossl_config.c \ ruby-1.9.3-p0/ext/openssl/ossl_bn.c \ ruby-1.9.3-p0/ext/openssl/ossl_x509attr.c \ ruby-1.9.3-p0/ext/openssl/ossl_x509.c \ ruby-1.9.3-p0/ext/openssl/ossl_x509crl.c \ ruby-1.9.3-p0/ext/openssl/ossl_x509ext.c \ ruby-1.9.3-p0/ext/openssl/ossl_asn1.c \ ruby-1.9.3-p0/ext/openssl/ossl_engine.c \ ruby-1.9.3-p0/ext/openssl/ossl_pkey_dsa.c \ ruby-1.9.3-p0/ext/openssl/ossl_pkey.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_cinit.h0000644000004100000410000001756412340630463026017 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_pinit.h0000644000004100000410000000203512340630463026017 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_traits.yml0000644000004100000410000002043712340630463026562 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/openssl" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/0000755000004100000410000000000012340630463022734 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/GNUmakefile0000644000004100000410000000750412340630463025014 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/fiddle/closure.c \ ruby-1.9.3-p0/ext/fiddle/function.c \ ruby-1.9.3-p0/ext/fiddle/conversions.c \ ruby-1.9.3-p0/ext/fiddle/fiddle.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_cinit.h0000644000004100000410000001756412340630463025563 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_pinit.h0000644000004100000410000000203512340630463025563 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_traits.yml0000644000004100000410000002050412340630463026321 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/fiddle" - "/usr/lib/libffi-3.0.9/include" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-socket/0000755000004100000410000000000012340630463022775 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-socket/GNUmakefile0000644000004100000410000001033212340630463025046 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/socket/init.c \ ruby-1.9.3-p0/ext/socket/constants.c \ ruby-1.9.3-p0/ext/socket/basicsocket.c \ ruby-1.9.3-p0/ext/socket/socket.c \ ruby-1.9.3-p0/ext/socket/ipsocket.c \ ruby-1.9.3-p0/ext/socket/tcpsocket.c \ ruby-1.9.3-p0/ext/socket/tcpserver.c \ ruby-1.9.3-p0/ext/socket/sockssocket.c \ ruby-1.9.3-p0/ext/socket/udpsocket.c \ ruby-1.9.3-p0/ext/socket/unixsocket.c \ ruby-1.9.3-p0/ext/socket/unixserver.c \ ruby-1.9.3-p0/ext/socket/option.c \ ruby-1.9.3-p0/ext/socket/ancdata.c \ ruby-1.9.3-p0/ext/socket/raddrinfo.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_cinit.h0000644000004100000410000001756412340630463025624 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_pinit.h0000644000004100000410000000203512340630463025624 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_traits.yml0000644000004100000410000002043612340630463026366 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/socket" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-etc/0000755000004100000410000000000012340630463022260 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-etc/GNUmakefile0000644000004100000410000000730412340630463024336 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/etc/etc.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_cinit.h0000644000004100000410000001756412340630463025107 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_pinit.h0000644000004100000410000000203512340630463025107 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_traits.yml0000644000004100000410000002043312340630463025646 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/etc" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/0000755000004100000410000000000012340630463022432 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/GNUmakefile0000644000004100000410000000735112340630463024512 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/sdbm/init.c \ ruby-1.9.3-p0/ext/sdbm/_sdbm.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_cinit.h0000644000004100000410000001756412340630463025261 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_pinit.h0000644000004100000410000000203512340630463025261 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_traits.yml0000644000004100000410000002043412340630463026021 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/sdbm" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/enc-trans/0000755000004100000410000000000012340630463022601 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/enc-trans/GNUmakefile0000644000004100000410000001064712340630463024663 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/enc/trans/transdb.c \ ruby-1.9.3-p0/enc/trans/big5.c \ ruby-1.9.3-p0/enc/trans/chinese.c \ ruby-1.9.3-p0/enc/trans/emoji.c \ ruby-1.9.3-p0/enc/trans/emoji_iso2022_kddi.c \ ruby-1.9.3-p0/enc/trans/emoji_sjis_docomo.c \ ruby-1.9.3-p0/enc/trans/emoji_sjis_kddi.c \ ruby-1.9.3-p0/enc/trans/emoji_sjis_softbank.c \ ruby-1.9.3-p0/enc/trans/escape.c \ ruby-1.9.3-p0/enc/trans/gb18030.c \ ruby-1.9.3-p0/enc/trans/gbk.c \ ruby-1.9.3-p0/enc/trans/iso2022.c \ ruby-1.9.3-p0/enc/trans/japanese.c \ ruby-1.9.3-p0/enc/trans/japanese_euc.c \ ruby-1.9.3-p0/enc/trans/japanese_sjis.c \ ruby-1.9.3-p0/enc/trans/korean.c \ ruby-1.9.3-p0/enc/trans/single_byte.c \ ruby-1.9.3-p0/enc/trans/utf8_mac.c \ ruby-1.9.3-p0/enc/trans/utf_16_32.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_cinit.h0000644000004100000410000001756412340630463025430 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_pinit.h0000644000004100000410000000204412340630463025430 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define _FILE_OFFSET_BITS 64 #define ONIG_ENC_REGISTER rb_enc_register adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_traits.yml0000644000004100000410000002036712340630463026175 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/0000755000004100000410000000000012340630463022416 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/GNUmakefile0000644000004100000410000000730612340630463024476 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/gdbm/gdbm.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_cinit.h0000644000004100000410000001756412340630463025245 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_pinit.h0000644000004100000410000000203512340630463025245 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_traits.yml0000644000004100000410000002043412340630463026005 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/gdbm" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/0000755000004100000410000000000012340630463022263 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/GNUmakefile0000644000004100000410000000730412340630463024341 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/nkf/nkf.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_cinit.h0000644000004100000410000001756412340630463025112 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_pinit.h0000644000004100000410000000203512340630463025112 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_traits.yml0000644000004100000410000002043312340630463025651 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/nkf" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/0000755000004100000410000000000012340630463022574 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/GNUmakefile0000644000004100000410000000731012340630463024647 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/fiber/fiber.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_cinit.h0000644000004100000410000001756412340630463025423 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_pinit.h0000644000004100000410000000203512340630463025423 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_traits.yml0000644000004100000410000002043512340630463026164 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/fiber" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/0000755000004100000410000000000012340630463024261 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/GNUmakefile0000644000004100000410000000732212340630463026337 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/mathn/complex/complex.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_cinit.h0000644000004100000410000001756412340630463027110 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_pinit.h0000644000004100000410000000203512340630463027110 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_traits.yml0000644000004100000410000002044512340630463027652 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/mathn/complex" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/0000755000004100000410000000000012340630463023636 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/GNUmakefile0000644000004100000410000001017012340630463025707 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/dl/callback/callback.c \ ruby-1.9.3-p0/ext/dl/callback/callback-0.c \ ruby-1.9.3-p0/ext/dl/callback/callback-1.c \ ruby-1.9.3-p0/ext/dl/callback/callback-2.c \ ruby-1.9.3-p0/ext/dl/callback/callback-3.c \ ruby-1.9.3-p0/ext/dl/callback/callback-4.c \ ruby-1.9.3-p0/ext/dl/callback/callback-5.c \ ruby-1.9.3-p0/ext/dl/callback/callback-6.c \ ruby-1.9.3-p0/ext/dl/callback/callback-7.c \ ruby-1.9.3-p0/ext/dl/callback/callback-8.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_cinit.h0000644000004100000410000001756412340630463026465 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_pinit.h0000644000004100000410000000203512340630463026465 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_traits.yml0000644000004100000410000002050612340630463027225 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/dl/callback" - "../../ruby-1.9.3-p0/ext/dl" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/0000755000004100000410000000000012340630463023750 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/GNUmakefile0000644000004100000410000000731712340630463026032 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/json/parser/parser.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_cinit.h0000644000004100000410000001756412340630463026577 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_pinit.h0000644000004100000410000000203512340630463026577 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_traits.yml0000644000004100000410000002044312340630463027337 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/json/parser" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/0000755000004100000410000000000012340630463023006 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/GNUmakefile0000644000004100000410000000731212340630463025063 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/ripper/ripper.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_cinit.h0000644000004100000410000001756412340630463025635 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_pinit.h0000644000004100000410000000203512340630463025635 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_traits.yml0000644000004100000410000002043612340630463026377 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/ripper" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/0000755000004100000410000000000012340630463023670 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/GNUmakefile0000644000004100000410000000731712340630463025752 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/racc/cparse/cparse.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_cinit.h0000644000004100000410000001756412340630463026517 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_pinit.h0000644000004100000410000000203512340630463026517 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_traits.yml0000644000004100000410000002044312340630463027257 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/racc/cparse" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-curses/0000755000004100000410000000000012340630463023011 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-curses/GNUmakefile0000644000004100000410000000731212340630463025066 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/curses/curses.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_cinit.h0000644000004100000410000001756412340630463025640 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_pinit.h0000644000004100000410000000203512340630463025640 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_traits.yml0000644000004100000410000002043612340630463026402 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/curses" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/0000755000004100000410000000000012340630463023300 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/GNUmakefile0000644000004100000410000000731612340630463025361 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/coverage/coverage.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_cinit.h0000644000004100000410000001756412340630463026127 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_pinit.h0000644000004100000410000000203512340630463026127 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_traits.yml0000644000004100000410000002044012340630463026664 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/coverage" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/0000755000004100000410000000000012340630463024442 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/GNUmakefile0000644000004100000410000000732512340630463026523 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/json/generator/generator.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_cinit.h0000644000004100000410000001756412340630463027271 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_pinit.h0000644000004100000410000000203512340630463027271 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_traits.yml0000644000004100000410000002044612340630463030034 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/json/generator" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-date/0000755000004100000410000000000012340630463022422 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-date/GNUmakefile0000644000004100000410000000751112340630463024500 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/date/date_strptime.c \ ruby-1.9.3-p0/ext/date/date_strftime.c \ ruby-1.9.3-p0/ext/date/date_core.c \ ruby-1.9.3-p0/ext/date/date_parse.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_cinit.h0000644000004100000410000001756412340630463025251 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_pinit.h0000644000004100000410000000203512340630463025251 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_traits.yml0000644000004100000410000002043412340630463026011 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/date" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-readline/0000755000004100000410000000000012340630463023270 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-readline/GNUmakefile0000644000004100000410000000731612340630463025351 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/readline/readline.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_cinit.h0000644000004100000410000001756412340630463026117 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_pinit.h0000644000004100000410000000203512340630463026117 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_traits.yml0000644000004100000410000002044012340630463026654 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/readline" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/0000755000004100000410000000000012340630463023056 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/GNUmakefile0000644000004100000410000000731112340630463025132 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/io/wait/wait.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_cinit.h0000644000004100000410000001756412340630463025705 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_pinit.h0000644000004100000410000000203512340630463025705 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_traits.yml0000644000004100000410000002043712340630463026450 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/io/wait" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/0000755000004100000410000000000012340630463023162 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/GNUmakefile0000644000004100000410000000731412340630463025241 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/strscan/strscan.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_cinit.h0000644000004100000410000001756412340630463026011 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_pinit.h0000644000004100000410000000203512340630463026011 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_traits.yml0000644000004100000410000002043712340630463026554 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/strscan" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/0000755000004100000410000000000012340630463023616 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/GNUmakefile0000644000004100000410000000737612340630463025705 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/digest/sha1/sha1init.c \ ruby-1.9.3-p0/ext/digest/sha1/sha1ossl.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_cinit.h0000644000004100000410000001756412340630463026445 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_pinit.h0000644000004100000410000000203512340630463026445 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_traits.yml0000644000004100000410000002051212340630463027202 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/digest/sha1" - "../../ruby-1.9.3-p0/ext/digest" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/0000755000004100000410000000000012340630463023773 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/GNUmakefile0000644000004100000410000000740612340630463026054 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/digest/rmd160/rmd160init.c \ ruby-1.9.3-p0/ext/digest/rmd160/rmd160ossl.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_cinit.h0000644000004100000410000001756412340630463026622 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_pinit.h0000644000004100000410000000203512340630463026622 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_traits.yml0000644000004100000410000002051412340630463027361 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/digest/rmd160" - "../../ruby-1.9.3-p0/ext/digest" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-pty/0000755000004100000410000000000012340630463022321 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-pty/GNUmakefile0000644000004100000410000000730412340630463024377 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/pty/pty.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_cinit.h0000644000004100000410000001756412340630463025150 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_pinit.h0000644000004100000410000000203512340630463025150 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_traits.yml0000644000004100000410000002043312340630463025707 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/pty" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-dl/0000755000004100000410000000000012340630463022104 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-dl/GNUmakefile0000644000004100000410000000744512340630463024170 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/dl/dl.c \ ruby-1.9.3-p0/ext/dl/cptr.c \ ruby-1.9.3-p0/ext/dl/cfunc.c \ ruby-1.9.3-p0/ext/dl/handle.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_cinit.h0000644000004100000410000001756412340630463024733 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_pinit.h0000644000004100000410000000203512340630463024733 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_traits.yml0000644000004100000410000002043212340630463025471 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/dl" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/0000755000004100000410000000000012340630463023302 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/GNUmakefile0000644000004100000410000000731612340630463025363 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/pathname/pathname.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_cinit.h0000644000004100000410000001756412340630463026131 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_pinit.h0000644000004100000410000000203512340630463026131 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_traits.yml0000644000004100000410000002044012340630463026666 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/pathname" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/0000755000004100000410000000000012340630463025345 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/GNUmakefile0000644000004100000410000000733512340630463027427 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/digest/bubblebabble/bubblebabble.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_cinit.h0000644000004100000410000001756412340630463030174 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_pinit.h0000644000004100000410000000203512340630463030174 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_traits.yml0000644000004100000410000002052212340630463030732 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/digest/bubblebabble" - "../../ruby-1.9.3-p0/ext/digest" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/0000755000004100000410000000000012340630463024423 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/GNUmakefile0000644000004100000410000000732412340630463026503 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/mathn/rational/rational.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_cinit.h0000644000004100000410000001756412340630463027252 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_pinit.h0000644000004100000410000000203512340630463027252 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_traits.yml0000644000004100000410000002044612340630463030015 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/mathn/rational" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/0000755000004100000410000000000012340630463023343 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/GNUmakefile0000644000004100000410000000731612340630463025424 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/stringio/stringio.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_cinit.h0000644000004100000410000001756412340630463026172 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_pinit.h0000644000004100000410000000203512340630463026172 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_traits.yml0000644000004100000410000002044012340630463026727 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/stringio" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/0000755000004100000410000000000012340630463023565 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/GNUmakefile0000644000004100000410000000732212340630463025643 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/bigdecimal/bigdecimal.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_cinit.h0000644000004100000410000001756412340630463026414 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_pinit.h0000644000004100000410000000203512340630463026414 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_traits.yml0000644000004100000410000002044212340630463027153 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/bigdecimal" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest/0000755000004100000410000000000012340630463022764 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest/GNUmakefile0000644000004100000410000000731212340630463025041 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/digest/digest.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_cinit.h0000644000004100000410000001756412340630463025613 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_pinit.h0000644000004100000410000000203512340630463025613 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_traits.yml0000644000004100000410000002043612340630463026355 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/digest" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/0000755000004100000410000000000012340630463022623 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/GNUmakefile0000644000004100000410000000731012340630463024676 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/iconv/iconv.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_cinit.h0000644000004100000410000001756412340630463025452 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_pinit.h0000644000004100000410000000203512340630463025452 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_traits.yml0000644000004100000410000002043512340630463026213 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/iconv" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/0000755000004100000410000000000012340630463024217 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/GNUmakefile0000644000004100000410000000732612340630463026301 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/continuation/continuation.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_cinit.h0000644000004100000410000001756412340630463027046 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_pinit.h0000644000004100000410000000203512340630463027046 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_traits.yml0000644000004100000410000002044412340630463027607 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/continuation" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/0000755000004100000410000000000012340630463023447 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/GNUmakefile0000644000004100000410000000737212340630463025532 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/digest/md5/md5init.c \ ruby-1.9.3-p0/ext/digest/md5/md5ossl.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_cinit.h0000644000004100000410000001756412340630463026276 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_pinit.h0000644000004100000410000000203512340630463026276 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_traits.yml0000644000004100000410000002051112340630463027032 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/digest/md5" - "../../ruby-1.9.3-p0/ext/digest" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/adlint_traits.yml0000644000004100000410000001733612340630463024305 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/0000755000004100000410000000000012340630463022247 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/GNUmakefile0000644000004100000410000000730412340630463024325 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/dbm/dbm.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_cinit.h0000644000004100000410000001756412340630463025076 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_pinit.h0000644000004100000410000000203512340630463025076 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_traits.yml0000644000004100000410000002043312340630463025635 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/dbm" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/0000755000004100000410000000000012340630463023617 5ustar www-datawww-dataadlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/GNUmakefile0000644000004100000410000000737612340630463025706 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = ruby-1.9.3-p0 SOURCES = \ ruby-1.9.3-p0/ext/digest/sha2/sha2init.c \ ruby-1.9.3-p0/ext/digest/sha2/sha2ossl.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_cinit.h0000644000004100000410000001756412340630463026446 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_pinit.h0000644000004100000410000000203512340630463026446 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define RUBY_EXTCONF_H "extconf.h" #define _FILE_OFFSET_BITS 64 adlint-3.2.14/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_traits.yml0000644000004100000410000002051212340630463027203 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "ruby-1.9.3-p0" # Project root directory. project_root: "../../ruby-1.9.3-p0" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../ruby-1.9.3-p0" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../ruby-1.9.3-p0" - "../../ruby-1.9.3-p0/.ext/include/i686-linux" - "../../ruby-1.9.3-p0/include" - "../../ruby-1.9.3-p0/ext/digest/sha2" - "../../ruby-1.9.3-p0/ext/digest" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/bison-2.5/0000755000004100000410000000000012340630463017104 5ustar www-datawww-dataadlint-3.2.14/share/sample/bison-2.5/adlint/0000755000004100000410000000000012340630463020357 5ustar www-datawww-dataadlint-3.2.14/share/sample/bison-2.5/adlint/GNUmakefile0000644000004100000410000001501312340630463022431 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to analyze whole project with compiler like messages # % make all # - to analyze whole project with progress report # % make verbose-all # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . SMA_MET_FILES = \ lib/bison-2.5/lib/abitset.c.met.csv \ lib/bison-2.5/lib/argmatch.c.met.csv \ lib/bison-2.5/lib/asnprintf.c.met.csv \ lib/bison-2.5/lib/basename-lgpl.c.met.csv \ lib/bison-2.5/lib/basename.c.met.csv \ lib/bison-2.5/lib/bitset.c.met.csv \ lib/bison-2.5/lib/bitset_stats.c.met.csv \ lib/bison-2.5/lib/bitsetv-print.c.met.csv \ lib/bison-2.5/lib/bitsetv.c.met.csv \ lib/bison-2.5/lib/c-ctype.c.met.csv \ lib/bison-2.5/lib/c-strcasecmp.c.met.csv \ lib/bison-2.5/lib/c-strncasecmp.c.met.csv \ lib/bison-2.5/lib/cloexec.c.met.csv \ lib/bison-2.5/lib/close-hook.c.met.csv \ lib/bison-2.5/lib/dirname-lgpl.c.met.csv \ lib/bison-2.5/lib/dirname.c.met.csv \ lib/bison-2.5/lib/dup-safer-flag.c.met.csv \ lib/bison-2.5/lib/dup-safer.c.met.csv \ lib/bison-2.5/lib/ebitset.c.met.csv \ lib/bison-2.5/lib/exitfail.c.met.csv \ lib/bison-2.5/lib/fatal-signal.c.met.csv \ lib/bison-2.5/lib/fcntl.c.met.csv \ lib/bison-2.5/lib/fd-safer-flag.c.met.csv \ lib/bison-2.5/lib/fd-safer.c.met.csv \ lib/bison-2.5/lib/fopen-safer.c.met.csv \ lib/bison-2.5/lib/fprintf.c.met.csv \ lib/bison-2.5/lib/fseterr.c.met.csv \ lib/bison-2.5/lib/get-errno.c.met.csv \ lib/bison-2.5/lib/hash.c.met.csv \ lib/bison-2.5/lib/ioctl.c.met.csv \ lib/bison-2.5/lib/isnand.c.met.csv \ lib/bison-2.5/lib/isnanf.c.met.csv \ lib/bison-2.5/lib/isnanl.c.met.csv \ lib/bison-2.5/lib/lbitset.c.met.csv \ lib/bison-2.5/lib/localcharset.c.met.csv \ lib/bison-2.5/lib/main.c.met.csv \ lib/bison-2.5/lib/mbchar.c.met.csv \ lib/bison-2.5/lib/mbschr.c.met.csv \ lib/bison-2.5/lib/mbsrchr.c.met.csv \ lib/bison-2.5/lib/mbswidth.c.met.csv \ lib/bison-2.5/lib/nonblocking.c.met.csv \ lib/bison-2.5/lib/pipe-safer.c.met.csv \ lib/bison-2.5/lib/pipe2-safer.c.met.csv \ lib/bison-2.5/lib/pipe2.c.met.csv \ lib/bison-2.5/lib/printf-args.c.met.csv \ lib/bison-2.5/lib/printf-frexp.c.met.csv \ lib/bison-2.5/lib/printf-frexpl.c.met.csv \ lib/bison-2.5/lib/printf-parse.c.met.csv \ lib/bison-2.5/lib/printf.c.met.csv \ lib/bison-2.5/lib/quote.c.met.csv \ lib/bison-2.5/lib/quotearg.c.met.csv \ lib/bison-2.5/lib/snprintf.c.met.csv \ lib/bison-2.5/lib/spawn-pipe.c.met.csv \ lib/bison-2.5/lib/sprintf.c.met.csv \ lib/bison-2.5/lib/stripslash.c.met.csv \ lib/bison-2.5/lib/strnlen1.c.met.csv \ lib/bison-2.5/lib/timevar.c.met.csv \ lib/bison-2.5/lib/uniwidth/width.c.met.csv \ lib/bison-2.5/lib/vasnprintf.c.met.csv \ lib/bison-2.5/lib/vbitset.c.met.csv \ lib/bison-2.5/lib/vfprintf.c.met.csv \ lib/bison-2.5/lib/vsnprintf.c.met.csv \ lib/bison-2.5/lib/vsprintf.c.met.csv \ lib/bison-2.5/lib/wait-process.c.met.csv \ lib/bison-2.5/lib/xalloc-die.c.met.csv \ lib/bison-2.5/lib/xmalloc.c.met.csv \ lib/bison-2.5/lib/xstrndup.c.met.csv \ lib/bison-2.5/lib/yyerror.c.met.csv \ src/bison-2.5/src/AnnotationList.c.met.csv \ src/bison-2.5/src/InadequacyList.c.met.csv \ src/bison-2.5/src/LR0.c.met.csv \ src/bison-2.5/src/Sbitset.c.met.csv \ src/bison-2.5/src/assoc.c.met.csv \ src/bison-2.5/src/closure.c.met.csv \ src/bison-2.5/src/complain.c.met.csv \ src/bison-2.5/src/conflicts.c.met.csv \ src/bison-2.5/src/derives.c.met.csv \ src/bison-2.5/src/files.c.met.csv \ src/bison-2.5/src/getargs.c.met.csv \ src/bison-2.5/src/gram.c.met.csv \ src/bison-2.5/src/graphviz.c.met.csv \ src/bison-2.5/src/ielr.c.met.csv \ src/bison-2.5/src/lalr.c.met.csv \ src/bison-2.5/src/location.c.met.csv \ src/bison-2.5/src/main.c.met.csv \ src/bison-2.5/src/muscle-tab.c.met.csv \ src/bison-2.5/src/named-ref.c.met.csv \ src/bison-2.5/src/nullable.c.met.csv \ src/bison-2.5/src/output.c.met.csv \ src/bison-2.5/src/parse-gram.c.met.csv \ src/bison-2.5/src/print-xml.c.met.csv \ src/bison-2.5/src/print.c.met.csv \ src/bison-2.5/src/print_graph.c.met.csv \ src/bison-2.5/src/reader.c.met.csv \ src/bison-2.5/src/reduce.c.met.csv \ src/bison-2.5/src/relation.c.met.csv \ src/bison-2.5/src/scan-code-c.c.met.csv \ src/bison-2.5/src/scan-gram-c.c.met.csv \ src/bison-2.5/src/scan-skel-c.c.met.csv \ src/bison-2.5/src/state.c.met.csv \ src/bison-2.5/src/symlist.c.met.csv \ src/bison-2.5/src/symtab.c.met.csv \ src/bison-2.5/src/tables.c.met.csv \ src/bison-2.5/src/uniqstr.c.met.csv %.c.met.csv : @$(MAKE) -C `echo $@ | sed 's/\/.*$$//'` `echo $@ | sed 's/^[^/]\+\///'` CMA_MSG_FILE = bison-2.5.msg.csv CMA_MET_FILE = bison-2.5.met.csv CMA_LOG_FILE = bison-2.5.log .PHONY: all all : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $(SMA_MET_FILES) .PHONY: verbose-all verbose-all : @for f in $(SMA_MET_FILES); do \ dir=`echo $$f | sed 's/\/.*$$//'`; \ if [ "$$last_dir" != "$$dir" ]; then $(MAKE) -C $$dir verbose-sma-only; fi; \ last_dir=$$dir; \ done $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $(SMA_MET_FILES) .PHONY: verbose-cma-only verbose-cma-only : $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $(SMA_MET_FILES) .PHONY: clean clean : @for f in $(SMA_MET_FILES); do \ dir=`echo $$f | sed 's/\/.*$$//'`; \ if [ "$$last_dir" != "$$dir" ]; then $(MAKE) -C $$dir clean; fi; \ last_dir=$$dir; \ done @$(RM) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) adlint-3.2.14/share/sample/bison-2.5/adlint/src/0000755000004100000410000000000012340630463021146 5ustar www-datawww-dataadlint-3.2.14/share/sample/bison-2.5/adlint/src/GNUmakefile0000644000004100000410000001124212340630463023220 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = bison-2.5 SOURCES = \ bison-2.5/src/AnnotationList.c \ bison-2.5/src/InadequacyList.c \ bison-2.5/src/LR0.c \ bison-2.5/src/Sbitset.c \ bison-2.5/src/assoc.c \ bison-2.5/src/closure.c \ bison-2.5/src/complain.c \ bison-2.5/src/conflicts.c \ bison-2.5/src/derives.c \ bison-2.5/src/files.c \ bison-2.5/src/getargs.c \ bison-2.5/src/gram.c \ bison-2.5/src/lalr.c \ bison-2.5/src/ielr.c \ bison-2.5/src/location.c \ bison-2.5/src/main.c \ bison-2.5/src/muscle-tab.c \ bison-2.5/src/named-ref.c \ bison-2.5/src/nullable.c \ bison-2.5/src/output.c \ bison-2.5/src/parse-gram.c \ bison-2.5/src/print.c \ bison-2.5/src/print_graph.c \ bison-2.5/src/print-xml.c \ bison-2.5/src/reader.c \ bison-2.5/src/reduce.c \ bison-2.5/src/relation.c \ bison-2.5/src/scan-code-c.c \ bison-2.5/src/scan-gram-c.c \ bison-2.5/src/scan-skel-c.c \ bison-2.5/src/state.c \ bison-2.5/src/symlist.c \ bison-2.5/src/symtab.c \ bison-2.5/src/tables.c \ bison-2.5/src/uniqstr.c \ bison-2.5/src/graphviz.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/bison-2.5/adlint/src/adlint_cinit.h0000644000004100000410000001755312340630463023773 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/bison-2.5/adlint/src/adlint_pinit.h0000644000004100000410000000173412340630463024002 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ adlint-3.2.14/share/sample/bison-2.5/adlint/src/adlint_traits.yml0000644000004100000410000002025312340630463024534 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "bison-2.5" # Project root directory. project_root: "../../bison-2.5" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../bison-2.5" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../bison-2.5" - "../../bison-2.5/lib" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "GNU" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 2 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/bison-2.5/adlint/lib/0000755000004100000410000000000012340630463021125 5ustar www-datawww-dataadlint-3.2.14/share/sample/bison-2.5/adlint/lib/GNUmakefile0000644000004100000410000001320412340630463023177 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = bison-2.5 SOURCES = \ bison-2.5/lib/main.c \ bison-2.5/lib/yyerror.c \ bison-2.5/lib/c-ctype.c \ bison-2.5/lib/c-strcasecmp.c \ bison-2.5/lib/c-strncasecmp.c \ bison-2.5/lib/close-hook.c \ bison-2.5/lib/exitfail.c \ bison-2.5/lib/fatal-signal.c \ bison-2.5/lib/fd-safer-flag.c \ bison-2.5/lib/dup-safer-flag.c \ bison-2.5/lib/fseterr.c \ bison-2.5/lib/localcharset.c \ bison-2.5/lib/mbchar.c \ bison-2.5/lib/mbschr.c \ bison-2.5/lib/mbsrchr.c \ bison-2.5/lib/mbswidth.c \ bison-2.5/lib/nonblocking.c \ bison-2.5/lib/pipe2.c \ bison-2.5/lib/pipe2-safer.c \ bison-2.5/lib/printf-frexp.c \ bison-2.5/lib/printf-frexpl.c \ bison-2.5/lib/spawn-pipe.c \ bison-2.5/lib/strnlen1.c \ bison-2.5/lib/uniwidth/width.c \ bison-2.5/lib/wait-process.c \ bison-2.5/lib/xalloc-die.c \ bison-2.5/lib/xstrndup.c \ bison-2.5/lib/get-errno.c \ bison-2.5/lib/abitset.c \ bison-2.5/lib/bitset.c \ bison-2.5/lib/bitset_stats.c \ bison-2.5/lib/bitsetv.c \ bison-2.5/lib/ebitset.c \ bison-2.5/lib/lbitset.c \ bison-2.5/lib/vbitset.c \ bison-2.5/lib/bitsetv-print.c \ bison-2.5/lib/timevar.c \ bison-2.5/lib/argmatch.c \ bison-2.5/lib/asnprintf.c \ bison-2.5/lib/basename.c \ bison-2.5/lib/basename-lgpl.c \ bison-2.5/lib/cloexec.c \ bison-2.5/lib/dirname.c \ bison-2.5/lib/dirname-lgpl.c \ bison-2.5/lib/dup-safer.c \ bison-2.5/lib/fcntl.c \ bison-2.5/lib/fd-safer.c \ bison-2.5/lib/fopen-safer.c \ bison-2.5/lib/fprintf.c \ bison-2.5/lib/hash.c \ bison-2.5/lib/ioctl.c \ bison-2.5/lib/isnand.c \ bison-2.5/lib/isnanf.c \ bison-2.5/lib/isnanl.c \ bison-2.5/lib/pipe-safer.c \ bison-2.5/lib/printf.c \ bison-2.5/lib/printf-args.c \ bison-2.5/lib/printf-parse.c \ bison-2.5/lib/quote.c \ bison-2.5/lib/quotearg.c \ bison-2.5/lib/snprintf.c \ bison-2.5/lib/sprintf.c \ bison-2.5/lib/stripslash.c \ bison-2.5/lib/vasnprintf.c \ bison-2.5/lib/vfprintf.c \ bison-2.5/lib/vsnprintf.c \ bison-2.5/lib/vsprintf.c \ bison-2.5/lib/xmalloc.c VPATH = ../.. VPATH_COMPONENTS = 2 RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t adlint_traits.yml -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t adlint_traits.yml -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/share/sample/bison-2.5/adlint/lib/adlint_cinit.h0000644000004100000410000001755312340630463023752 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/share/sample/bison-2.5/adlint/lib/adlint_pinit.h0000644000004100000410000000173412340630463023761 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * This file is part of AdLint. * * 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 . */ adlint-3.2.14/share/sample/bison-2.5/adlint/lib/adlint_traits.yml0000644000004100000410000002022512340630463024512 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "bison-2.5" # Project root directory. project_root: "../../bison-2.5" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../../bison-2.5" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "adlint_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: - "../../bison-2.5/lib" # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "GNU" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 2 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "adlint_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/share/sample/bison-2.5/adlint/adlint_traits.yml0000644000004100000410000001732412340630463023752 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "bison-2.5" # Project root directory. project_root: "../bison-2.5" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "../bison-2.5" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "GNU" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 2 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/README0000644000004100000410000000471012340630463013767 0ustar www-datawww-data-- ___ ____ __ ___ _________ / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer / /| | / / / / / / / |/ / / / AdLint - Advanced Lint / __ |/ /_/ / /___/ / /| / / / /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. This file is part of AdLint. 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 . ++ == \AdLint - Advanced Lint \AdLint is a source code static analyzer. It can point out unreliable or nonportable code fragments, and can measure various quality metrics of the source code. It (currently) can analyze source code compliant with ANSI C89 / ISO C90 and partly ISO C99. For more details, visit our project homepage at <{http\://adlint.sourceforge.net/}[http://adlint.sourceforge.net/]>. == How to Install :include:INSTALL == License Copyright (C) 2010-2014, {OGIS-RI}[http://www.ogis-ri.co.jp/] 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/}[http://www.gnu.org/licenses/]>. == Further Reading * {User's Guide (in Japanese)}[http://adlint.sourceforge.net/pmwiki/upload.d/Main/users_guide_ja.html] * {User's Guide (in English)}[http://adlint.sourceforge.net/pmwiki/upload.d/Main/users_guide_en.html] * {Developer's Guide (in Japanese)}[http://adlint.sourceforge.net/pmwiki/upload.d/Main/developers_guide_ja.html] == TODO :include:TODO == Authors :include:AUTHORS adlint-3.2.14/NEWS0000644000004100000410000006307112340630463013613 0ustar www-datawww-data-- ___ ____ __ ___ _________ / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer / /| | / / / / / / / |/ / / / AdLint - Advanced Lint / __ |/ /_/ / /___/ / /| / / / /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. This file is part of AdLint. 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 . ++ === \AdLint 3.2.14 is released (2014-05-10) ==== Changes since the 3.2.12 release * Support function-like macro replacement with variable arguments. See the file {ChangeLog}[https://github.com/yanoh/adlint/blob/master/ChangeLog] for more details. === \AdLint 3.2.12 is released (2014-04-12) ==== Changes since the 3.2.10 release * Fix the type and object model in order to correctly manage unnamed struct or union members * Add examination package initializer * Revise behavior of the CMA code structure collection so that an optional examination package can output its own special met-records === \AdLint 3.2.10 is released (2014-02-17) ==== Changes since the 3.2.8 release * Add new templates for MSVC100 (Visual C++ 2010) as a C compiler on 32bit Windows === \AdLint 3.2.8 is released (2014-02-07) ==== Changes since the 3.2.6 release * Fix preprocessor in order not to abend when a function-like macro generates a hexadecimal integer-constant from standalone prefix and number by the concatenation operator === \AdLint 3.2.6 is released (2014-01-09) ==== Changes since the 3.2.0 release * Add patch of identifier to typedef-name translation mode in order not to abend when multiple typedefed types of struct/union/enum is redeclared in a single typedef declaration again * Fix typo in C0001 message text * Fix pattern matchig algorithm of the token substitution feature so that the pattern \`{ __adlint__any }' can match with both \`{}' and \`{ ... }' * Fix group skip logic of the preprocessor in order to treat string-literals and character-constants in the skipping group correctly * Revise the parser generation rule in order to accept extra semicolons in the global scope === \AdLint 3.2.0 is released (2013-08-28) ==== Changes since the 3.0.10 release * Support experimental context-tracing feature so that the warning message can be complemented with the context messages === \AdLint 3.0.10 is released (2013-06-28) ==== Changes since the 3.0.8 release * Fix incomplete identifier to typedef name translation when the declaring enumerator name is conflicting with the prior typedef name * Add missing comment handling in the initial state of the preprocessing lexer * Fix evaluation of the global constant variable definition in order not to ignore value of the initializer * Revise pointer dereferencing behavior to successfully dereference a pointer only when the value of pointer variable is definite * Improve heuristics of array subscript evaluation with indefinite subscript * Fix controlling-expression deduction of iteration-statements in order to adopt the ordinary expression when no control breaking condition is found in the iteration body * Remove unnecessary controlling expression evaluation at entering a do-statement * Fix value-domain thinning condition to thin domains discarded by a break-statement in the iteration * Fix bypassing inner-variable's value mutation in order to correctly propagate mutation to the outer-variable === \AdLint 3.0.8 is released (2013-05-31) ==== Changes since the 3.0.4 release * Fix abend problem of preprocessor when a block comment is not terminated in the translation-unit * Fix block comment handling in order not to dive into nested part when a single slash character appears before the comment terminator * Fix infinite-loop problem of preprocessor when the #include directive appears with undefined macro * Fix bad expression-constancy check in order to treat an expression derives an address-constant as a constant-expression * Fix bad variable defining behavor in order to correctly evaluate sizeof-expression that refers defining variable in the initializer * Revise specification of W0642 code check in order to warn about all the illegal address derivation from the object declared as \`register' * Fix abend problem in parsing unnamed bit-field declaration * Fix W0786 code check in order not to warn when a typedefed type which is same as signed or unsigned int is specified as a base of the bit-field * Fix incomplete object cross-reference extraction in order to record object references within global scope in case of global function table initialization * Fix incomplete object cross-reference graph and function call graph in order to correctly warn about useless objects * Fix bad \`##' operator evaluation in order to comply with the ISO C99 standard === \AdLint 3.0.4 is released (2013-04-12) ==== Changes since the 3.0.2 release * Fix abend problem of adlint_chk command === \AdLint 3.0.2 is released (2013-04-12) ==== Changes since the 3.0.0 release * Add missing transparency between a pointer to array and an array variable in expression evaluation * Add missing transparency between a pointer function and a function in expression evaluation * Clarify W0100 message text === \AdLint 3.0.0 is released (2013-03-27) ==== Changes since the 2.6.14 release * Support pathname based code-exam selection * Support message-class based code-check selection * Support annotation based message suppression * Add new field indicates whether the function is declared implicitly or explicitly to DCL(F) record of the metrics file * Improve library interface to support concurrent analysis * Fix W0003 code check not to misunderstand that the switch-statement has no default clause when the switch-statement contains consecutive case and default labels * Fix W1061 code check in order to warn when an enum type of the argument expression is not consistent to one of the corresponding parameter * Fix W1062 code check in order to warn when an enum type of the rhs operand is not consistent to one of the lhs operand * Fix W1063 code check in order to warn when the function returns value of non-constant inconsistent enum-typed expression * Fix W0023 code check in order to warn only when the pointer operand appears in an arithmetic expressions * Fix W1073 code check in order no to warn when a function-call-expression is specified as the controlling expression of switch-statement * Fix bad fall-through logic of switch-statement * Fix missing literal_prefix of LIT record for the octal-constant * Fix bad value domain management in order to correctly thin a value domain of the terminating execution path * Support Ruby 2.0.0-p0 === \AdLint 2.6.14 is released (2012-12-17) ==== Changes since the 2.6.12 release * Revise specification of code checks about implicit conversion from or to \`char' type to clarify warning's intention * Improve the library interface to easily integrate \AdLint with other products * Support lint and \AdLint specific predefined macros; \`__LINT__', \`lint', \`__lint', \`__lint__', \`__ADLINT__', \`adlint', \`__adlint' and \`__adlint__' * Revise code checks' output specification of W0051, W0052, W0491, W0492, W0703, W0704, W0770, W0771, W0787, W0788, W0789, W0790 and W1037 to add context messages telling where is the problematic pair identifiers === \AdLint 2.6.12 is released (2012-11-29) ==== Changes since the 2.6.10 release * Fix abend problem of huge integer-constant evaluation * Correct to run on Ruby 2.0.0dev (r37962) without warnings === \AdLint 2.6.10 is released (2012-11-08) ==== Changes since the 2.6.2 release * Fix code checks so that duplicative messages of the same ID at the same location can be unique till the function step-in analysis is supported * Fix W1069 detection to output a warning message at correct location when an incomplete if-else statements chain appears in a complete if-else-statement * Fix W0708 detection not to warn when an address of the controlling variable is passes to a function in the controlling part of for-statement * Fix W0534, W0585, W0611 and w0708 detections to correctly deduct the controlling variable * Add missing notification of the controlling expression value reference * Fix W0460 detection to output outermost variable name when the referencing variable is an array element or a member of struct or union === \AdLint 2.6.2 is released (2012-10-31) ==== Changes since the 2.6.0 release * Fix compound-assignment-expression evaluation not to propagate initialization status of the rhs operand * Fix bad traits file parser in order to parse compound pathname strings correctly on mswin * Clarify W0082 message text by adding underlying type name of the operand * Clarify W0578 and W0579 message texts by adding source and destination type names of the conversion * Clarify W0650 message text by adding lhs type name of the shift-expression * Clarify W0719 message text by adding lhs underlying type name of the shift-expression * Clarify W1051 and W1052 message texts by adding type name of the arithmetic expression * Fix the interpreter to place sequence-point at the end of the return-statement evaluation === \AdLint 2.6.0 is released (2012-10-22) ==== Changes since the 2.4.10 release * Fix W0609 and w0610 detections not to over-warn about explicit controlling expressions of for-statements by adding workarounds for the interpreter * Fix W0088 detection not to warn about controlling expression of for-statement * Fix W0723 detection in order to correctly warn about signed \`-' expression * Fix bad parameter type convertibility check and bad type convertibility check of pointer to arbitrary types to void-pointer * Revise string representation of typedefed type so that message and metric show typedefed type name itself * Clarify W9003 message text by adding destination type name of the implicit conversion === \AdLint 2.4.10 is released (2012-10-15) ==== Changes since the 2.4.6 release * Add value version rollback feature so that the value version management is correctly given up at the end of the branch whose controlling expression is too complex * Fix value version management in order to completely rollback all changes to values of all global variables * Revise evaluation of sizeof-expression and alignof-expression not to evaluate operand expression actually * Fix W0488, W0489, W0490, W0495, W0496, W0497, W0498, W0499, W0500, W0501 and W0502 detections to warn when a problematic expression is grouped entirely === \AdLint 2.4.6 is released (2012-10-09) ==== Changes since the 2.4.0 release * Fix bad controlling statement evaluation in order to manage value domain of the controlling variable correctly * Fix bad argument type specification of \`%s', \`%p' and \`%n' conversion-specifiers of *printf standard functions in order to detect W0635 correctly === \AdLint 2.4.0 is released (2012-09-21) ==== Changes since the 2.2.0 release * Fix W0425 detection not to warn when a selection-statement or a iteration-statement is written in a line * Fix evaluation of sizeof expression to return \`size_t' value or \`unsigned long' value if size_t is not declared * Fix evaluation of function-definition in order to refer symbols of return type and parameter types * Revise format of the traits file in preparation for supporting warning suppression of 3rd-party headers imported in the target project tree * Support compound pathname as an entry in the directory pathname list item of the traits file * Fix abend problem when no examination package name is specified in the traits file * Fix W0100 detection not to over-warn about variables updated in an iteration-statement * Fix bad preprocess behavior when an empty argument is given to a function-like macro call which applies \`##' operator to the empty perameter * Fix #include directive evaluation in order to correctly read header file with an absolute path when any include_path items are not specified === \AdLint 2.2.0 is released (2012-09-12) ==== Changes since the 2.0.10 release * Fix W0431 and W0432 detections not to warn about displaced beginning of the line tokens following upon a function-like macro call * Fix W0787 detection not to warn about a definition of the local variable with type which is different from one of previously defined variable in the other scope * Clarify W0025 and W0026 message texts === \AdLint 2.0.10 is released (2012-09-06) ==== Changes since the 2.0.6 release * Revise value domain management in order not to over-thin value domains of the controlling variables in complexly compounded controlling expression * Support environment variable substitution in the traits file === \AdLint 2.0.6 is released (2012-08-30) ==== Changes since the 2.0.2 release * Fix huge memory consumption problem when a multi-dimensional variable length array is defined without fully narrowed length * Revise variable cross-reference extraction in order to output only about the outmost-variable when its element or member is accessed === \AdLint 2.0.2 is released (2012-08-28) ==== Changes since the 2.0.0 release * Fix bad group skipping problem of the preprocessor when a conditional inclusion directive is commented out in the skipping group * Add templates for gcc 4.6.3-1ubuntu5 on Ubuntu 12.04 LTS (64bit) === \AdLint 2.0.0 is released (2012-08-22) ==== Changes since the 1.18.6 release * In preparation for using optional source code examination packages, refine internal module structure and revise format of the traits file * Revise format of the traits file and the message definition file in preparation for supporting selective code check feature * Revise format of the traits file in preparation for supporting warning suppression of unconcerned headers such as system headers * Add many more functional specifications of builtin code checks === \AdLint 1.18.6 is released (2012-08-14) ==== Changes since the 1.18.2 release * Fix abend problem when a variable of typedefed incomplete array type is defined with an initializer === \AdLint 1.18.2 is released (2012-08-03) ==== Changes since the 1.18.0 release * Fix gem installation problem on mswin === \AdLint 1.18.0 is released (2012-08-01) ==== Changes since the 1.16.0 release * Add W0641 detection * Add W0644 detection * Add W0649 detection * Add W0650 detection * Add W0707 detection * Add W0719 detection * Add W0780 detection * Add W0783 detection * Add W0792 detection * Add W0793 detection * Add W0794 detection * Add W0830 detection * Add W0833 detection * Add W0834 detection * Add W1026 detection * Add W1039 detection * Add W1047 detection * Add W1071 detection * Fix W0459 detection to output outermost variable name when the uninitialized variable is an array element or a member of struct or union * Fix W0705 and W0745 detections to warn about not only array-subscript-expressions but also indirection-expressions only when the subscript is constant * Revise expression evaluation not to give up when a operand is typed as \`void' * Revise arithmetic type resolution not to abort when one type is \`void' * Fix declarator evaluation in order to construct a function object which returns a function pointer correctly when the function-definition written without typedefed function pointer * Implement missing semantics of union object initialization * Revise function-like macro replacement in order to evaluate \`#' operator makes an empty string-literal when the parameter corresponding to the operand has no argument * Fix bad sequence-point timing of logical-and-expression and logical-or-expression * Add extra notification of variable value reference in evaluation of cast-expression in order not to misunderstand that a return value of a function is discarded when the return value is casted before assigning to a variable * Fix evaluation of prefix-increment-expression and prefix-decrement-expression to make rvalue of the new incremented or decremented value in order to comply with the ISO C99 standard === \AdLint 1.16.0 is released (2012-07-18) ==== Changes since the 1.14.0 release * Add W0643 detection * Add W0646 detection * Add W0691 detection * Add W0692 detection * Add W0694 detection * Add W0805 detection * Add W0811 detection * Add W1040 detection * Add W1041 detection * Add W1046 detection * Add W1073 detection * Add W1074 detection * Add W1075 detection * Add W1076 detection * Add W1077 detection * Add extra sequence-point notification in the conditional-expression in order not to over-warn about side-effects between sequence-points * Add extra variable value reference notification not to discard function return values in the 2nd and 3rd expressions of the conditional-expression * Add missing notification of variable value reference in comparison expressions === \AdLint 1.14.0 is released (2012-07-04) ==== Changes since the 1.12.0 release * Add W0645 detection * Add W0697 detection * Add W0700 detection * Add W1066 detection * Add W1067 detection * Add W1068 detection * Add W1069 detection * Add W1070 detection * Add W1072 detection * Fix W0104 detection not to warn when the unchanged parameter is typed with \`const volatile' qualifiers * Add W0104, W0645, W0697, W0700, W1066, W1067, W1068, W1069, W1070 and W1072 functional specifications === \AdLint 1.12.0 is released (2012-06-20) ==== Changes since the 1.10.0 release * Add W0732 detection * Add W0733 detection * Add W0734 detection * Add W0735 detection * Add W9003 detection * Revise the value domain narrowing in order not to over-narrow and under-narrow a value domain of the controlling variable * Fix bad multiplication logic in order to detect W0723 and W1052 correctly * Add unit specifications of domain of variables' value * Add unit specifications of syntax tree of the C language * Add W0093, W0687, W0688, W0689, W0690, W0732, W0733, W0734, W0735, W1052, W9001 and W9003 functional specifications * Add W1066, W1067, W1068, W1069, W1070, W1071, W1072, W1073, W1074, W1075, W1076, W1077 and W9003 message definitions === \AdLint 1.10.0 is released (2012-06-06) ==== Changes since the 1.8.10 release * Add W0716 detection * Add W0717 detection * Add W0718 detection * Fix W0500 detection not to warn when two standalone binary arithmetic expressions are appears at 2nd and 3rd expressions of a conditional-expression * Fix W0501 detection not to duplicate warnings about a conditional-expression * Fix W0582, W0583 and W0584 detections in order to consider type convertibility correctly * Fix W1031 detection not to warn when the declaration with \`static' and definition without storage-class-specifier * Fix lack of sequence-point notification of controlling expressions * Add unit specification of C type models * Add W0001, W0002, W0003, W0007, W0010, W0013, W0109, W0583, W0606, W0698, W0699, W0703, W0716, W0717, W0718, W0723 and W1031 functional specifications === \AdLint 1.8.10 is released (2012-05-18) ==== Changes since the 1.8.2 release * Fix bad narrowing logic of undefined value domain in order to detect W9001 correctly * Fix W0635 detection not to warn when the expected type of the conversion specifier is a pointer type and the corresponding argument's type is a pointer type whose base type is cv-qualified * Fix W0583 detection not to warn when the argument type is a cv-qualified one of the corresponding parameter's type * Fix W0112 detection not to warn about floating point relational-expressions * Fix W0117 and W0118 detection not to misunderstand linkage of object definitions * Fix W0101, W0102, W0103 and W0107 detections not to warn when an address of the parameter array variable (an alias of the caller's array) is going to be saved * Fix W0828 detection not to warn when the member variable is a type of char array and the corresponding initializer is a string-literal-specifier * Fix W0635 detection not to warn when the \`void *' argument passed as the \`%p' conversion specifier * Fix degraded W0118 detection not to warn when the object declaration is in the header file and the same declaration is in the source file, too * Fix bad value domain multiplication logic in order to correctly detect W0723 about multiplicative-expressions * Fix W0771 detection not to warn when declarations of the same object are in a source file * Fix W0080 detection to warn when the file local static variable is defined without initializer * Fix bad value domain multiplication logic in order to correctly detect W0608 about multiplicative-expressions * Fix degraded W0771 detection not to warn when declarations of the same object are in two or more files * Fix degraded W0118 detection to warn when all declarations of an object are in the source file === \AdLint 1.8.2 is released (2012-05-08) ==== Changes since the 1.8.0 release * Fix evaluation of array-subscript-expression not to convert the derived array object into a pointer in order to resolve a type of the nested array-subscript-expression correctly === \AdLint 1.8.0 is released (2012-04-27) ==== Changes since the 1.6.0 release * Add W0607 detection * Add W0608 detection * Add W0625 detection * Add W0632 detection * Add W0633 detection * Add W0634 detection * Add W0642 detection * Add W0711 detection * Add W0712 detection * Add W0713 detection * Add W0714 detection * Add W0715 detection * Add W0832 detection * Fix W0629 detection not to warn when the translation-unit local function is referred to derive a pointer to the function * Fix W0459 and W0460 detections not to warn about inner variables owned by a temporary variable * Fix W0461 and W0462 detections not to warn when the length omitted array parameter is specified as an argument * Fix W1031 detection not to warn when the storage-class-specifier of the object declaration is explicitly specified and the storage-class-specifier of following object definition is omitted * Fix W0581, W0582, W0583 and W0584 detections not to warn when the corresponding types of argument and parameter are array-array or array-pointer pair * Fix W0581 detection to warn when the number of arguments in current function call is greater than the number of arguments in previous function calls * Fix W0582, W0583 and W0584 detections to warn when the number of parameters is greater than the number of arguments * Fix abend problem when the pathname of #include_next directive is not in the executing environment * Support mswin path separator in #include or #include_next directives * Fix bad FN_UELS (number of incomplete if-else-if statement chains) metric measurement * Improve value version management of the abstract interpreter === \AdLint 1.6.0 is released (2012-04-06) ==== Changes since the 1.4.0 release * Add W0541 detection * Add W0573 detection * Add W0579 detection * Add W0685 detection * Add W0686 detection * Add W0781 detection * Add W0787 detection * Add W0788 detection * Add W0789 detection * Add W0807 detection * Add W0808 detection * Add W0809 detection * Add W1030 detection * Add W1053 detection * Add W1054 detection * Add W1055 detection * Add W1056 detection * Add W1057 detection * Add W1058 detection * Add W1059 detection * Add W1060 detection * Add W1061 detection * Add W1062 detection * Add W1063 detection * Fix W0027 detection not to warn when a pointer variable is compared with NULL constant * Fix W0728, W0729 and W0730 detections not to warn when the target is a variable of the other enum type * Fix W0104 detection not to warn about invariant parameter of array type whose base type is qualified as const * Fix bad W0031, W0100, W0104, W0459 and W0460 detections * Fix bad FN_UNUV measurement * Update the user's guide in Japanese * Update the user's guide in English === \AdLint 1.4.0 is released (2012-03-29) ==== Changes since the 1.2.0 release * Add W0606 detection * Add W0687 detection * Add W0695 detection * Add W0698 detection * Add W0699 detection * Add W0720 detection * Add W0721 detection * Add W0722 detection * Add W0723 detection * Add W0726 detection * Add W0727 detection * Add W0728 detection * Add W0729 detection * Add W0730 detection * Add W0731 detection * Add W0737 detection * Add W0738 detection * Add W0739 detection * Add W0740 detection * Add W0741 detection * Add W0743 detection * Add W0801 detection * Add W0806 detection * Add W1033 detection * Add W1064 detection * Add W1065 detection * Add missing implicit conversion of return-statement in order to detect W0727 at an expression of return-statement * Update the user's guide in Japanese * Update the user's guide in English === \AdLint 1.2.0 is released (2012-03-21) ==== Changes since the 1.0.0 release * Add W0597 detection * Add W0598 detection * Add W0599 detection * Add W0600 detection * Add W0688 detection * Add W0689 detection * Add W0690 detection * Change schema version validation method of input YAML files * Clarify message text of W0459 and W0460 * Revise specification of W0459 and W0460 detections not to warn when a pointer argument points to an uninitialized object * Fix bad FN_UNUV metric measurement * Update the user's guide in Japanese * Update the user's guide in English === \AdLint 1.0.0 is released (2012-02-28) This is the initial GA release of \AdLint. ==== Implemented features * Single module analysis * Cross module analysis * 597 kinds of code checkings * 14 kinds of code structure extractions * 15 kinds of quality metric measurements adlint-3.2.14/spec/0000755000004100000410000000000012340630463014037 5ustar www-datawww-dataadlint-3.2.14/spec/spec_helper.rb0000644000004100000410000000315112340630463016655 0ustar www-datawww-data# RSpec helper. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ if ENV["ADLINT_COV"] =~ /1|on|true/ require "simplecov" require "simplecov-html" SimpleCov.start end $LOAD_PATH.unshift(File.expand_path("../lib", File.dirname(__FILE__))) require "adlint" confdir = Pathname.new(File.expand_path("conf.d", File.dirname(__FILE__))) $default_traits = Pathname.new("default_traits.yml").expand_path(confdir) RSpec.configure do |c| c.color = true end adlint-3.2.14/spec/adlint/0000755000004100000410000000000012340630463015312 5ustar www-datawww-dataadlint-3.2.14/spec/adlint/location_spec.rb0000644000004100000410000000336212340630463020465 0ustar www-datawww-data# Unit specification of tokens' location identifier. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "spec_helper" module AdLint describe Location do before(:all) { @adlint = AdLint.new($default_traits) } context "initial header" do subject { Location.new(Pathname.new("spec/conf.d/empty_pinit.h"), 1, 1) } it { should_not be_in_analysis_target(@adlint.traits) } end context "source file" do subject { Location.new(Pathname.new("spec/conf.d/project/foo.c"), 1, 1) } it { should be_in_analysis_target(@adlint.traits) } end end end adlint-3.2.14/spec/adlint/cc1/0000755000004100000410000000000012340630463015760 5ustar www-datawww-dataadlint-3.2.14/spec/adlint/cc1/operator_spec.rb0000644000004100000410000002662512340630463021165 0ustar www-datawww-data# Unit specification of operator of controlling expressions. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "spec_helper" module AdLint module Cc1 describe Operator do context "Operator" do subject { Operator } it "=== Operator::EQ should be true" do (subject === Operator::EQ).should be_true end it "=== Operator::NE should be true" do (subject === Operator::NE).should be_true end it "=== Operator::LT should be true" do (subject === Operator::LT).should be_true end it "=== Operator::GT should be true" do (subject === Operator::GT).should be_true end it "=== Operator::LE should be true" do (subject === Operator::LE).should be_true end it "=== Operator::GE should be true" do (subject === Operator::GE).should be_true end end context "Operator::EQ" do subject { Operator::EQ } it "=== `==' should be true" do (subject === ComparisonOperator.new(:==)).should be_true end it "=== `!=' should not be true" do (subject === ComparisonOperator.new(:!=)).should_not be_true end it "=== `<' should not be true" do (subject === ComparisonOperator.new(:<)).should_not be_true end it "=== `>' should not be true" do (subject === ComparisonOperator.new(:>)).should_not be_true end it "=== `<=' should not be true" do (subject === ComparisonOperator.new(:<=)).should_not be_true end it "=== `>=' should not be true" do (subject === ComparisonOperator.new(:>=)).should_not be_true end end context "Operator::NE" do subject { Operator::NE } it "=== `==' should not be true" do (subject === ComparisonOperator.new(:==)).should_not be_true end it "=== `!=' should be true" do (subject === ComparisonOperator.new(:!=)).should be_true end it "=== `<' should not be true" do (subject === ComparisonOperator.new(:<)).should_not be_true end it "=== `>' should not be true" do (subject === ComparisonOperator.new(:>)).should_not be_true end it "=== `<=' should not be true" do (subject === ComparisonOperator.new(:<=)).should_not be_true end it "=== `>=' should not be true" do (subject === ComparisonOperator.new(:>=)).should_not be_true end end context "Operator::LT" do subject { Operator::LT } it "=== `==' should not be true" do (subject === ComparisonOperator.new(:==)).should_not be_true end it "=== `!=' should not be true" do (subject === ComparisonOperator.new(:!=)).should_not be_true end it "=== `<' should be true" do (subject === ComparisonOperator.new(:<)).should be_true end it "=== `>' should not be true" do (subject === ComparisonOperator.new(:>)).should_not be_true end it "=== `<=' should not be true" do (subject === ComparisonOperator.new(:<=)).should_not be_true end it "=== `>=' should not be true" do (subject === ComparisonOperator.new(:>=)).should_not be_true end end context "Operator::GT" do subject { Operator::GT } it "=== `==' should not be true" do (subject === ComparisonOperator.new(:==)).should_not be_true end it "=== `!=' should not be true" do (subject === ComparisonOperator.new(:!=)).should_not be_true end it "=== `<' should not be true" do (subject === ComparisonOperator.new(:<)).should_not be_true end it "=== `>' should be true" do (subject === ComparisonOperator.new(:>)).should be_true end it "=== `<=' should not be true" do (subject === ComparisonOperator.new(:<=)).should_not be_true end it "=== `>=' should not be true" do (subject === ComparisonOperator.new(:>=)).should_not be_true end end context "Operator::LE" do subject { Operator::LE } it "=== `==' should not be true" do (subject === ComparisonOperator.new(:==)).should_not be_true end it "=== `!=' should not be true" do (subject === ComparisonOperator.new(:!=)).should_not be_true end it "=== `<' should not be true" do (subject === ComparisonOperator.new(:<)).should_not be_true end it "=== `>' should not be true" do (subject === ComparisonOperator.new(:>)).should_not be_true end it "=== `<=' should be true" do (subject === ComparisonOperator.new(:<=)).should be_true end it "=== `>=' should not be true" do (subject === ComparisonOperator.new(:>=)).should_not be_true end end context "Operator::GE" do subject { Operator::GE } it "=== `==' should not be true" do (subject === ComparisonOperator.new(:==)).should_not be_true end it "=== `!=' should not be true" do (subject === ComparisonOperator.new(:!=)).should_not be_true end it "=== `<' should not be true" do (subject === ComparisonOperator.new(:<)).should_not be_true end it "=== `>' should not be true" do (subject === ComparisonOperator.new(:>)).should_not be_true end it "=== `<=' should not be true" do (subject === ComparisonOperator.new(:<=)).should_not be_true end it "=== `>=' should be true" do (subject === ComparisonOperator.new(:>=)).should be_true end end describe ComparisonOperator do context "`=='" do subject { ComparisonOperator.new(:==) } it "=== Operator::EQ should be true" do (subject === Operator::EQ).should be_true end it "=== Operator::NE should not be true" do (subject === Operator::NE).should_not be_true end it "=== Operator::LT should not be true" do (subject === Operator::LT).should_not be_true end it "=== Operator::GT should not be true" do (subject === Operator::GT).should_not be_true end it "=== Operator::LE should not be true" do (subject === Operator::LE).should_not be_true end it "=== Operator::GE should not be true" do (subject === Operator::GE).should_not be_true end end context "`!='" do subject { ComparisonOperator.new(:!=) } it "=== Operator::EQ should not be true" do (subject === Operator::EQ).should_not be_true end it "=== Operator::NE should be true" do (subject === Operator::NE).should be_true end it "=== Operator::LT should not be true" do (subject === Operator::LT).should_not be_true end it "=== Operator::GT should not be true" do (subject === Operator::GT).should_not be_true end it "=== Operator::LE should not be true" do (subject === Operator::LE).should_not be_true end it "=== Operator::GE should not be true" do (subject === Operator::GE).should_not be_true end end context "`<'" do subject { ComparisonOperator.new(:<) } it "=== Operator::EQ should not be true" do (subject === Operator::EQ).should_not be_true end it "=== Operator::NE should not be true" do (subject === Operator::NE).should_not be_true end it "=== Operator::LT should be true" do (subject === Operator::LT).should be_true end it "=== Operator::GT should not be true" do (subject === Operator::GT).should_not be_true end it "=== Operator::LE should not be true" do (subject === Operator::LE).should_not be_true end it "=== Operator::GE should not be true" do (subject === Operator::GE).should_not be_true end end context "`>'" do subject { ComparisonOperator.new(:>) } it "=== Operator::EQ should not be true" do (subject === Operator::EQ).should_not be_true end it "=== Operator::NE should not be true" do (subject === Operator::NE).should_not be_true end it "=== Operator::LT should not be true" do (subject === Operator::LT).should_not be_true end it "=== Operator::GT should be true" do (subject === Operator::GT).should be_true end it "=== Operator::LE should not be true" do (subject === Operator::LE).should_not be_true end it "=== Operator::GE should not be true" do (subject === Operator::GE).should_not be_true end end context "`<='" do subject { ComparisonOperator.new(:<=) } it "=== Operator::EQ should not be true" do (subject === Operator::EQ).should_not be_true end it "=== Operator::NE should not be true" do (subject === Operator::NE).should_not be_true end it "=== Operator::LT should not be true" do (subject === Operator::LT).should_not be_true end it "=== Operator::GT should not be true" do (subject === Operator::GT).should_not be_true end it "=== Operator::LE should be true" do (subject === Operator::LE).should be_true end it "=== Operator::GE should not be true" do (subject === Operator::GE).should_not be_true end end context "`>='" do subject { ComparisonOperator.new(:>=) } it "=== Operator::EQ should not be true" do (subject === Operator::EQ).should_not be_true end it "=== Operator::NE should not be true" do (subject === Operator::NE).should_not be_true end it "=== Operator::LT should not be true" do (subject === Operator::LT).should_not be_true end it "=== Operator::GT should not be true" do (subject === Operator::GT).should_not be_true end it "=== Operator::LE should not be true" do (subject === Operator::LE).should_not be_true end it "=== Operator::GE should be true" do (subject === Operator::GE).should be_true end end end end end end adlint-3.2.14/spec/adlint/cc1/syntax_spec.rb0000644000004100000410000004744412340630463020662 0ustar www-datawww-data# Unit specification of AST of C language. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "spec_helper" module AdLint module Cc1 describe Expression do let(:symbol_table) { SymbolTable.new } context "`*'" do subject { error_expression(operator("*")) } it { should_not be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end context "`foo'" do subject { object_specifier("foo") } it { should_not be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end context "`0x11'" do subject { constant_specifier("0x11") } it { should_not be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end context %(`"aiueo"') do subject { string_literal_specifier('"aiueo"') } it { should_not be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end context "`NULL'" do subject { null_constant_specifier } it { should_not be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end # NOTE: GroupedExpression encloses an arithmetic expression. context "`(1 + 2)'" do subject do grouped_expression( additive_expression( "+", constant_specifier(1), constant_specifier(2))) end it { should_not be_logical } it { should be_arithmetic } it { should_not be_bitwise } end # NOTE: GroupedExpression encloses a bitwise expression. context "`(1 << 2)'" do subject do grouped_expression( shift_expression("<<", constant_specifier(1), constant_specifier(2))) end it { should_not be_logical } it { should_not be_arithmetic } it { should be_bitwise } end # NOTE: GroupedExpression encloses an expression which is neither # arithmetic nor bitwise. context "`(1 && 2)'" do subject do grouped_expression( logical_and_expression(constant_specifier(1), constant_specifier(2))) end it { should be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end context "`i++'" do subject { postfix_increment_expression(object_specifier("i")) } it { should_not be_logical } it { should be_arithmetic } it { should_not be_bitwise } end context "`i--'" do subject { postfix_decrement_expression(object_specifier("i")) } it { should_not be_logical } it { should be_arithmetic } it { should_not be_bitwise } end context "`++i'" do subject { prefix_increment_expression(object_specifier("i")) } it { should_not be_logical } it { should be_arithmetic } it { should_not be_bitwise } end context "`--i'" do subject { prefix_decrement_expression(object_specifier("i")) } it { should_not be_logical } it { should be_arithmetic } it { should_not be_bitwise } end context "`(char) i'" do subject { cast_expression(char_t_name, object_specifier("i")) } it { should_not be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end context "`(char) (i + 1)'" do subject do cast_expression( char_t_name, grouped_expression( additive_expression( "+", object_specifier("i"), constant_specifier(1)))) end it { should_not be_logical } it { should be_arithmetic } it { should_not be_bitwise } end context "`(char) (i == 0)'" do subject do cast_expression( char_t_name, grouped_expression( equality_expression( "==", object_specifier("i"), constant_specifier(1)))) end it { should be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end context "`(char) (i & 1)'" do subject do cast_expression( char_t_name, grouped_expression( and_expression(object_specifier("i"), constant_specifier(1)))) end it { should_not be_logical } it { should_not be_arithmetic } it { should be_bitwise } end context "`i * j'" do subject do multiplicative_expression( "*", object_specifier("i"), object_specifier("j")) end it { should_not be_logical } it { should be_arithmetic } it { should_not be_bitwise } end context "`i + j'" do subject do additive_expression("+", object_specifier("i"), object_specifier("j")) end it { should_not be_logical } it { should be_arithmetic } it { should_not be_bitwise } end context "`i << 1'" do subject do shift_expression("<<", object_specifier("i"), constant_specifier(1)) end it { should_not be_logical } it { should_not be_arithmetic } it { should be_bitwise } end context "`i < 0'" do subject do relational_expression( "<", object_specifier("i"), constant_specifier(0)) end it { should be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end context "`i == j'" do subject do equality_expression("==", object_specifier("i"), object_specifier("j")) end it { should be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end context "`i & 1'" do subject { and_expression(object_specifier("i"), constant_specifier(1)) } it { should_not be_logical } it { should_not be_arithmetic } it { should be_bitwise } end context "`i ^ 2'" do subject do exclusive_or_expression(object_specifier("i"), constant_specifier(2)) end it { should_not be_logical } it { should_not be_arithmetic } it { should be_bitwise } end context "`i | 2'" do subject do inclusive_or_expression(object_specifier("i"), constant_specifier(2)) end it { should_not be_logical } it { should_not be_arithmetic } it { should be_bitwise } end context "`i && j'" do subject do logical_and_expression(object_specifier("i"), object_specifier("j")) end it { should be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end context "`i || j'" do subject do logical_or_expression(object_specifier("i"), object_specifier("j")) end it { should be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end # NOTE: ConditionalExpression has arithmetics as 2nd and 3rd expression. context "`i > 0 ? i + 2 : j - 4'" do subject do conditional_expression( relational_expression( ">", object_specifier("i"), constant_specifier(0)), additive_expression( "+", object_specifier("i"), constant_specifier(2)), additive_expression( "-", object_specifier("j"), constant_specifier(4))) end it { should_not be_logical } it { should be_arithmetic } it { should_not be_bitwise } end # NOTE: ConditionalExpression has an arithmetic as 2nd expression and a # logical as 3rd expression. context "`i > 0 ? i + 2 : j || k'" do subject do conditional_expression( relational_expression( ">", object_specifier("i"), constant_specifier(0)), additive_expression( "+", object_specifier("i"), constant_specifier(2)), logical_or_expression( object_specifier("j"), object_specifier("k"))) end it { should be_logical } it { should be_arithmetic } it { should_not be_bitwise } end # NOTE: ConditionalExpression has an arithmetic as 2nd expression and a # bitwise as 3rd expression. context "`i < 10 ? i + 2 : i << 4'" do subject do conditional_expression( relational_expression( "<", object_specifier("i"), constant_specifier(10)), additive_expression( "+", object_specifier("i"), constant_specifier(2)), shift_expression( "<<", object_specifier("i"), constant_specifier(4))) end it { should_not be_logical } it { should be_arithmetic } it { should be_bitwise } end # NOTE: ConditionalExpression has bitwises as 2nd and 3rd expression. context "`i < 10 ? i ^ 2 : i << 4'" do subject do conditional_expression( relational_expression( "<", object_specifier("i"), constant_specifier(10)), exclusive_or_expression( object_specifier("i"), constant_specifier(2)), shift_expression( "<<", object_specifier("i"), constant_specifier(4))) end it { should_not be_logical } it { should_not be_arithmetic } it { should be_bitwise } end # NOTE: ConditionalExpression has a logical as 2nd expression and a bitwise # as 3rd expression. context "`i < 10 ? i && j : i << 4'" do subject do conditional_expression( relational_expression( "<", object_specifier("i"), constant_specifier(10)), logical_and_expression( object_specifier("i"), object_specifier("j")), shift_expression( "<<", object_specifier("i"), constant_specifier(4))) end it { should be_logical } it { should_not be_arithmetic } it { should be_bitwise } end # NOTE: ConditionalExpression has logicals as 2nd and 3rd expression. context "`i < 10 ? i && j : i || j'" do subject do conditional_expression( relational_expression( "<", object_specifier("i"), constant_specifier(10)), logical_and_expression( object_specifier("i"), object_specifier("j")), logical_or_expression( object_specifier("i"), object_specifier("j"))) end it { should be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end context "`i = 0'" do subject do simple_assignment_expression( object_specifier("i"), constant_specifier(0)) end it { should_not be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end context "`i = j = k + 1'" do subject do simple_assignment_expression( object_specifier("i"), simple_assignment_expression( object_specifier("j"), additive_expression( "+", object_specifier("k"), constant_specifier(1)))) end it { should_not be_logical } it { should be_arithmetic } it { should_not be_bitwise } end context "`i = j = k << 1'" do subject do simple_assignment_expression( object_specifier("i"), simple_assignment_expression( object_specifier("j"), shift_expression( "<<", object_specifier("k"), constant_specifier(1)))) end it { should_not be_logical } it { should_not be_arithmetic } it { should be_bitwise } end context "`i = j = (k > 5 && k < 10)'" do subject do simple_assignment_expression( object_specifier("i"), simple_assignment_expression( object_specifier("j"), grouped_expression( logical_and_expression( relational_expression( ">", object_specifier("k"), constant_specifier(5)), relational_expression( "<", object_specifier("k"), constant_specifier(10)))))) end it { should be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end context "`i += 2'" do subject do compound_assignment_expression( "+=", object_specifier("i"), constant_specifier(2)) end it { should_not be_logical } it { should be_arithmetic } it { should_not be_bitwise } end context "`i &= 2'" do subject do compound_assignment_expression( "&=", object_specifier("i"), constant_specifier(2)) end it { should_not be_logical } it { should_not be_arithmetic } it { should be_bitwise } end context "`i ^= j && k'" do subject do compound_assignment_expression( "^=", object_specifier("i"), logical_and_expression( object_specifier("j"), object_specifier("k"))) end it { should_not be_logical } it { should_not be_arithmetic } it { should be_bitwise } end # NOTE: CommaSeparatedExpression has two arithmetic expressions. context "`i + 1, j + 2'" do subject do comma_separated_expression( additive_expression( "+", object_specifier("i"), constant_specifier(1)), additive_expression( "+", object_specifier("j"), constant_specifier(2))) end it { should_not be_logical } it { should be_arithmetic } it { should_not be_bitwise } end # NOTE: CommaSeparatedExpression has a logical expression followed by an # arithmetic expression. context "`i < 1, j + 2'" do subject do comma_separated_expression( relational_expression( "<", object_specifier("i"), constant_specifier(1)), additive_expression( "+", object_specifier("j"), constant_specifier(2))) end it { should_not be_logical } it { should be_arithmetic } it { should_not be_bitwise } end # NOTE: CommaSeparatedExpression has an arithmetic expression followed by a # bitwise expression. context "`i + 1, j << 2'" do subject do comma_separated_expression( additive_expression( "+", object_specifier("i"), constant_specifier(1)), shift_expression( "<<", object_specifier("j"), constant_specifier(2))) end it { should_not be_logical } it { should_not be_arithmetic } it { should be_bitwise } end # NOTE: CommaSeparatedExpression has two bitwise expressions. context "`i << 1, j << 2'" do subject do comma_separated_expression( shift_expression( "<<", object_specifier("i"), constant_specifier(1)), shift_expression( "<<", object_specifier("j"), constant_specifier(2))) end it { should_not be_logical } it { should_not be_arithmetic } it { should be_bitwise } end # NOTE: CommaSeparatedExpression has a logical expression followed by a # bitwise expression. context "`i > 0, i << 1'" do subject do comma_separated_expression( relational_expression( ">", object_specifier("i"), constant_specifier(0)), shift_expression( "<<", object_specifier("i"), constant_specifier(1))) end it { should_not be_logical } it { should_not be_arithmetic } it { should be_bitwise } end # NOTE: CommaSeparatedExpression has two logical expressions. context "`i < 0, j > 0'" do subject do comma_separated_expression( relational_expression( "<", object_specifier("i"), constant_specifier(0)), relational_expression( ">", object_specifier("j"), constant_specifier(0))) end it { should be_logical } it { should_not be_arithmetic } it { should_not be_bitwise } end private def comma_separated_expression(*exprs) CommaSeparatedExpression.new(exprs.first).tap do |obj| exprs.drop(1).each { |expr| obj.push(expr) } end end def compound_assignment_expression(op_str, lhs, rhs) CompoundAssignmentExpression.new(operator(op_str), lhs, rhs) end def simple_assignment_expression(lhs, rhs) SimpleAssignmentExpression.new(operator("="), lhs, rhs) end def conditional_expression(first, second, third) ConditionalExpression.new(first, second, third, operator("?")) end def inclusive_or_expression(lhs, rhs) InclusiveOrExpression.new(operator("|"), lhs, rhs) end def exclusive_or_expression(lhs, rhs) ExclusiveOrExpression.new(operator("^"), lhs, rhs) end def relational_expression(op_str, lhs, rhs) RelationalExpression.new(operator(op_str), lhs, rhs) end def multiplicative_expression(op_str, lhs, rhs) MultiplicativeExpression.new(operator(op_str), lhs, rhs) end def and_expression(lhs, rhs) AndExpression.new(operator("&"), lhs, rhs) end def equality_expression(op_str, lhs, rhs) EqualityExpression.new(operator(op_str), lhs, rhs) end def cast_expression(type_name, operand) CastExpression.new(type_name, operand) end def char_t_name sq_list = SpecifierQualifierList.new.tap { |obj| obj.type_qualifiers.push(char_t_specifier) } TypeName.new(sq_list, nil, symbol_table) end def char_t_specifier StandardTypeSpecifier.new(Token.new(:CHAR, "char", location)) end def prefix_decrement_expression(operand) PrefixDecrementExpression.new(operator("--"), operand) end def prefix_increment_expression(operand) PrefixIncrementExpression.new(operator("++"), operand) end def postfix_decrement_expression(operand) PostfixDecrementExpression.new(operator("--"), operand) end def postfix_increment_expression(operand) PostfixIncrementExpression.new(operator("++"), operand) end def logical_or_expression(lhs, rhs) LogicalOrExpression.new(operator("||"), lhs, rhs) end def logical_and_expression(lhs, rhs) LogicalAndExpression.new(operator("&&"), lhs, rhs) end def shift_expression(op_str, lhs, rhs) ShiftExpression.new(operator(op_str), lhs, rhs) end def additive_expression(op_str, lhs, rhs) AdditiveExpression.new(operator(op_str), lhs, rhs) end def grouped_expression(expr) GroupedExpression.new(expr) end def error_expression(token) ErrorExpression.new(token) end def object_specifier(str) ObjectSpecifier.new(Token.new(:IDENTIFIER, str, location)) end def null_constant_specifier NullConstantSpecifier.new(Token.new(:NULL, "NULL", location)) end def constant_specifier(str) ConstantSpecifier.new(Token.new(:CONSTANT, str, location)) end def string_literal_specifier(str) StringLiteralSpecifier.new(Token.new(:STRING_LITERAL, str, location)) end def operator(str) Token.new(str, str, location) end def location Location.new end end end end adlint-3.2.14/spec/adlint/cc1/type_spec.rb0000644000004100000410000001335312340630463020305 0ustar www-datawww-data# Unit specification of C type models. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "spec_helper" module AdLint module Cc1 describe Type do before(:all) { @adlint = AdLint.new($default_traits) } before(:each) do @monitor = ProgressMonitor.new(nil, nil, false) @logger = Logger.new(File.open(File::NULL, "w")) end let(:type_table) { TypeTable.new(@adlint.traits, @monitor, @logger) } let(:int_ptr_t) { pointer_type(int_t) } let(:const_int_ptr_t) { pointer_type(qualified_type(int_t, :const)) } let(:const_int_t) { qualified_type(int_t, :const) } let(:volatile_int_t) { qualified_type(int_t, :volatile) } let(:const_volatile_int_t) { qualified_type(int_t, :const, :volatile) } let(:const_char_t) { qualified_type(char_t, :const) } let(:const_unsigned_char_t) { qualified_type(unsigned_char_t, :const) } let(:char_ptr_t) { pointer_type(char_t) } let(:const_char_ptr_t) { pointer_type(qualified_type(char_t, :const)) } let(:const_unsigned_char_ptr_t) { pointer_type(qualified_type(unsigned_char_t, :const)) } describe ArrayType do context "`int[3]'" do subject { array_type(int_t, 3) } it "should be convertible to `const int *'" do should be_convertible(const_int_ptr_t) end it "should be convertible to `int *'" do should be_convertible(int_ptr_t) end end context "`int[]'" do subject { array_type(int_t) } it "should be convertible to `const int *'" do should be_convertible(const_int_ptr_t) end it "should be convertible to `int *'" do should be_convertible(int_ptr_t) end end end describe PointerType do context "`const int *'" do subject { const_int_ptr_t } it "should not be convertible to `int[]'" do should_not be_convertible(array_type(int_t)) end end context "`int *'" do subject { int_ptr_t } it "should be convertible to `int[]'" do should be_convertible(array_type(int_t)) end end context "`const int'" do subject { const_int_t } it "should be more cv-qualified than `int'" do should be_more_cv_qualified(int_t) end it "should not be more cv-qualified than `const int'" do should_not be_more_cv_qualified(const_int_t) end it "should not be more cv-qualified than `volatile int'" do should_not be_more_cv_qualified(volatile_int_t) end end context "`volatile int'" do subject { volatile_int_t } it "should be more cv-qualified than `int'" do should be_more_cv_qualified(int_t) end end context "`const volatile int'" do subject { const_volatile_int_t } it "should be more cv-qualified than `int'" do should be_more_cv_qualified(int_t) end it "should be more cv-qualified than `const int'" do should be_more_cv_qualified(const_int_t) end it "should be more cv-qualified than `volatile int'" do should be_more_cv_qualified(volatile_int_t) end end end describe QualifiedType do context "`const char'" do subject { const_char_t } it "should be equal to `const unsigned char'" do should == const_unsigned_char_t end it "should be convertible to `char'" do should be_convertible(char_t) end it "should be convertible to `const unsigned char'" do should be_convertible(const_unsigned_char_t) end end context "`char'" do subject { char_t } it "should be convertible to `const char'" do should be_convertible(const_char_t) end end context "`const char *'" do subject { const_char_ptr_t } it "should be convertible to `const unsigned char *'" do should be_convertible(const_unsigned_char_ptr_t) end it "should not be convertible to `char *'" do should_not be_convertible(char_ptr_t) end end end describe CharType do context "`char'" do subject { char_t } it "should be equal to `unsigned char'" do should == unsigned_char_t end it "should not be equal to `signed char'" do should_not == signed_char_t end end end include TypeTableMediator end end end adlint-3.2.14/spec/adlint/cc1/domain_spec.rb0000644000004100000410000006677012340630463020606 0ustar www-datawww-data# Unit specification of domain of values bound to variables. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "spec_helper" module AdLint module Cc1 describe ValueDomain do include ArithmeticAccessor before(:all) { @adlint = AdLint.new($default_traits) } describe EqualToValueDomain do context "(== -2147483648)" do subject { value_domain_equal_to(-2147483648) } it "should contain (== -2147483648)" do subject.contain?(value_domain_equal_to(-2147483648)).should be_true end it "should not contain (== 2147483647)" do subject.contain?(value_domain_equal_to(2147483647)).should be_false end end context "(== 2147483647)" do subject { value_domain_equal_to(2147483647) } it "should not contain (== -2147483648)" do subject.contain?(value_domain_equal_to(-2147483648)).should be_false end end context "(== 2)" do subject { value_domain_equal_to(2) } it "* (== 3) should be (== 6)" do rhs = value_domain_equal_to(3) (subject * rhs).to_s.should == "(== 6)" end it "* (== 0) should be (== 0)" do rhs = value_domain_equal_to(0) (subject * rhs).to_s.should == "(== 0)" end it "* (== -3) should be (== -6)" do rhs = value_domain_equal_to(-3) (subject * rhs).to_s.should == "(== -6)" end it "* (< 3) should be (< 6)" do rhs = value_domain_less_than(3) (subject * rhs).to_s.should == "(< 6)" end it "* (< 0) should be (< 0)" do rhs = value_domain_less_than(0) (subject * rhs).to_s.should == "(< 0)" end it "* (< -3) should be (< -6)" do rhs = value_domain_less_than(-3) (subject * rhs).to_s.should == "(< -6)" end it "* (> 3) should be (> 6)" do rhs = value_domain_greater_than(3) (subject * rhs).to_s.should == "(> 6)" end it "* (> 0) should be (> 0)" do rhs = value_domain_greater_than(0) (subject * rhs).to_s.should == "(> 0)" end it "* (> -3) should be (> -6)" do rhs = value_domain_greater_than(-3) (subject * rhs).to_s.should == "(> -6)" end end context "(== 0)" do subject { value_domain_equal_to(0) } it "* (== 3) should be (== 0)" do rhs = value_domain_equal_to(3) (subject * rhs).to_s.should == "(== 0)" end it "* (== 0) should be (== 0)" do rhs = value_domain_equal_to(0) (subject * rhs).to_s.should == "(== 0)" end it "* (== -3) should be (== 0)" do rhs = value_domain_equal_to(-3) (subject * rhs).to_s.should == "(== 0)" end it "* (< 3) should be (== 0)" do rhs = value_domain_less_than(3) (subject * rhs).to_s.should == "(== 0)" end it "* (< 0) should be (== 0)" do rhs = value_domain_less_than(0) (subject * rhs).to_s.should == "(== 0)" end it "* (< -3) should be (== 0)" do rhs = value_domain_less_than(-3) (subject * rhs).to_s.should == "(== 0)" end it "* (> 3) should be (== 0)" do rhs = value_domain_greater_than(3) (subject * rhs).to_s.should == "(== 0)" end it "* (> 0) should be (== 0)" do rhs = value_domain_greater_than(0) (subject * rhs).to_s.should == "(== 0)" end it "* (> -3) should be (== 0)" do rhs = value_domain_greater_than(-3) (subject * rhs).to_s.should == "(== 0)" end end context "(== -2)" do subject { value_domain_equal_to(-2) } it "* (== 3) should be (== -6)" do rhs = value_domain_equal_to(3) (subject * rhs).to_s.should == "(== -6)" end it "* (== 0) should be (== 0)" do rhs = value_domain_equal_to(0) (subject * rhs).to_s.should == "(== 0)" end it "* (== -3) should be (== 6)" do rhs = value_domain_equal_to(-3) (subject * rhs).to_s.should == "(== 6)" end it "* (< 3) should be (> -6)" do rhs = value_domain_less_than(3) (subject * rhs).to_s.should == "(> -6)" end it "* (< 0) should be (> 0)" do rhs = value_domain_less_than(0) (subject * rhs).to_s.should == "(> 0)" end it "* (< -3) should be (> 6)" do rhs = value_domain_less_than(-3) (subject * rhs).to_s.should == "(> 6)" end it "* (> 3) should be (< -6)" do rhs = value_domain_greater_than(3) (subject * rhs).to_s.should == "(< -6)" end it "* (> 0) should be (< 0)" do rhs = value_domain_greater_than(0) (subject * rhs).to_s.should == "(< 0)" end it "* (> -3) should be (< 6)" do rhs = value_domain_greater_than(-3) (subject * rhs).to_s.should == "(< 6)" end end end describe LessThanValueDomain do context "(< 128)" do subject { value_domain_less_than(128) } it "< (== 127) should be (== Unlimited)" do rhs = value_domain_equal_to(127) (subject < rhs).to_s.should == "(== Unlimited)" end end context "(< 2)" do subject { value_domain_less_than(2) } it "* (== 3) should be (< 6)" do rhs = value_domain_equal_to(3) (subject * rhs).to_s.should == "(< 6)" end it "* (== 0) should be (== 0)" do rhs = value_domain_equal_to(0) (subject * rhs).to_s.should == "(== 0)" end it "* (== -3) should be (> -6)" do rhs = value_domain_equal_to(-3) (subject * rhs).to_s.should == "(> -6)" end it "* (< 3) should be (== Unlimited)" do rhs = value_domain_less_than(3) (subject * rhs).to_s.should == "(== Unlimited)" end it "* (< 0) should be (== Unlimited)" do rhs = value_domain_less_than(0) (subject * rhs).to_s.should == "(== Unlimited)" end it "* (< -3) should be (== Unlimited)" do rhs = value_domain_less_than(-3) (subject * rhs).to_s.should == "(== Unlimited)" end it "* (> 3) should be (== Unlimited)" do rhs = value_domain_greater_than(3) (subject * rhs).to_s.should == "(== Unlimited)" end it "* (> 0) should be (== Unlimited)" do rhs = value_domain_greater_than(0) (subject * rhs).to_s.should == "(== Unlimited)" end it "* (> -3) should be (== Unlimited)" do rhs = value_domain_greater_than(-3) (subject * rhs).to_s.should == "(== Unlimited)" end end context "(< 0)" do subject { value_domain_less_than(0) } it "* (== 3) should be (< 0)" do rhs = value_domain_equal_to(3) (subject * rhs).to_s.should == "(< 0)" end it "* (== 0) should be (== 0)" do rhs = value_domain_equal_to(0) (subject * rhs).to_s.should == "(== 0)" end it "* (== -3) should be (> 0)" do rhs = value_domain_equal_to(-3) (subject * rhs).to_s.should == "(> 0)" end it "* (< 3) should be (== Unlimited)" do rhs = value_domain_less_than(3) (subject * rhs).to_s.should == "(== Unlimited)" end it "* (< 0) should be (> 0)" do rhs = value_domain_less_than(0) (subject * rhs).to_s.should == "(> 0)" end it "* (< -3) should be (> 0)" do rhs = value_domain_less_than(-3) (subject * rhs).to_s.should == "(> 0)" end it "* (> 3) should be (< 0)" do rhs = value_domain_greater_than(3) (subject * rhs).to_s.should == "(< 0)" end it "* (> 0) should be (< 0)" do rhs = value_domain_greater_than(0) (subject * rhs).to_s.should == "(< 0)" end it "* (> -3) should be (== Unlimited)" do rhs = value_domain_greater_than(-3) (subject * rhs).to_s.should == "(== Unlimited)" end end context "(< -2)" do subject { value_domain_less_than(-2) } it "* (== 3) should be (< -6)" do rhs = value_domain_equal_to(3) (subject * rhs).to_s.should == "(< -6)" end it "* (== 0) should be (== 0)" do rhs = value_domain_equal_to(0) (subject * rhs).to_s.should == "(== 0)" end it "* (== -3) should be (> 6)" do rhs = value_domain_equal_to(-3) (subject * rhs).to_s.should == "(> 6)" end it "* (< 3) should be (== Unlimited)" do rhs = value_domain_less_than(3) (subject * rhs).to_s.should == "(== Unlimited)" end it "* (< 0) should be (> 0)" do rhs = value_domain_less_than(0) (subject * rhs).to_s.should == "(> 0)" end it "* (< -3) should be (> 6)" do rhs = value_domain_less_than(-3) (subject * rhs).to_s.should == "(> 6)" end it "* (> 3) should be (< -6)" do rhs = value_domain_greater_than(3) (subject * rhs).to_s.should == "(< -6)" end it "* (> 0) should be (< 0)" do rhs = value_domain_greater_than(0) (subject * rhs).to_s.should == "(< 0)" end it "* (> -3) should be (== Unlimited)" do rhs = value_domain_greater_than(-3) (subject * rhs).to_s.should == "(== Unlimited)" end end end describe GreaterThanValueDomain do context "(> -129)" do subject { value_domain_greater_than(-129) } it "< (== 127) should be (== Unlimited)" do rhs = value_domain_equal_to(127) (subject < rhs).to_s.should == "(== Unlimited)" end end context "(> 2)" do subject { value_domain_greater_than(2) } it "* (== 3) should be (> 6)" do rhs = value_domain_equal_to(3) (subject * rhs).to_s.should == "(> 6)" end it "* (== 0) should be (== 0)" do rhs = value_domain_equal_to(0) (subject * rhs).to_s.should == "(== 0)" end it "* (== -3) should be (< -6)" do rhs = value_domain_equal_to(-3) (subject * rhs).to_s.should == "(< -6)" end it "* (< 3) should be (== Unlimited)" do rhs = value_domain_less_than(3) (subject * rhs).to_s.should == "(== Unlimited)" end it "* (< 0) should be (< 0)" do rhs = value_domain_less_than(0) (subject * rhs).to_s.should == "(< 0)" end it "* (< -3) should be (< -6)" do rhs = value_domain_less_than(-3) (subject * rhs).to_s.should == "(< -6)" end it "* (> 3) should be (> 6)" do rhs = value_domain_greater_than(3) (subject * rhs).to_s.should == "(> 6)" end it "* (> 0) should be (> 0)" do rhs = value_domain_greater_than(0) (subject * rhs).to_s.should == "(> 0)" end it "* (> -3) should be (== Unlimited)" do rhs = value_domain_greater_than(-3) (subject * rhs).to_s.should == "(== Unlimited)" end end context "(> 0)" do subject { value_domain_greater_than(0) } it "* (== 3) should be (> 0)" do rhs = value_domain_equal_to(3) (subject * rhs).to_s.should == "(> 0)" end it "* (== 0) should be (== 0)" do rhs = value_domain_equal_to(0) (subject * rhs).to_s.should == "(== 0)" end it "* (== -3) should be (< 0)" do rhs = value_domain_equal_to(-3) (subject * rhs).to_s.should == "(< 0)" end it "* (< 3) should be (== Unlimited)" do rhs = value_domain_less_than(3) (subject * rhs).to_s.should == "(== Unlimited)" end it "* (< 0) should be (< 0)" do rhs = value_domain_less_than(0) (subject * rhs).to_s.should == "(< 0)" end it "* (< -3) should be (< 0)" do rhs = value_domain_less_than(-3) (subject * rhs).to_s.should == "(< 0)" end it "* (> 3) should be (> 0)" do rhs = value_domain_greater_than(3) (subject * rhs).to_s.should == "(> 0)" end it "* (> 0) should be (> 0)" do rhs = value_domain_greater_than(0) (subject * rhs).to_s.should == "(> 0)" end it "* (> -3) should be (== Unlimited)" do rhs = value_domain_greater_than(-3) (subject * rhs).to_s.should == "(== Unlimited)" end end context "(> -2)" do subject { value_domain_greater_than(-2) } it "* (== 3) should be (> -6)" do rhs = value_domain_equal_to(3) (subject * rhs).to_s.should == "(> -6)" end it "* (== 0) should be (== 0)" do rhs = value_domain_equal_to(0) (subject * rhs).to_s.should == "(== 0)" end it "* (== -3) should be (< 6)" do rhs = value_domain_equal_to(-3) (subject * rhs).to_s.should == "(< 6)" end it "* (< 3) should be (== Unlimited)" do rhs = value_domain_less_than(3) (subject * rhs).to_s.should == "(== Unlimited)" end it "* (< 0) should be (== Unlimited)" do rhs = value_domain_less_than(0) (subject * rhs).to_s.should == "(== Unlimited)" end it "* (< -3) should be (== Unlimited)" do rhs = value_domain_less_than(-3) (subject * rhs).to_s.should == "(== Unlimited)" end it "* (> 3) should be (== Unlimited)" do rhs = value_domain_greater_than(3) (subject * rhs).to_s.should == "(== Unlimited)" end it "* (> 0) should be (== Unlimited)" do rhs = value_domain_greater_than(0) (subject * rhs).to_s.should == "(== Unlimited)" end it "* (> -3) should be (== Unlimited)" do rhs = value_domain_greater_than(-3) (subject * rhs).to_s.should == "(== Unlimited)" end end end describe CompositeValueDomain do context "(== (((< 10) || (== 10)) && ((== -10) || (> -10))))" do subject do tmp = value_domain_greater_than_or_equal_to(-10) tmp.intersection(value_domain_less_than_or_equal_to(10)) end it "should contain ((== -5) || (== 5))" do rhs = value_domain_equal_to(-5).union(value_domain_equal_to(5)) subject.contain?(rhs).should be_true end end context "((== -5) || (== 5))" do subject { value_domain_equal_to(-5).union(value_domain_equal_to(5)) } it "should not contain " + "(((< 10) || (== 10)) && ((== -10) || (> -10)))" do rhs = value_domain_greater_than_or_equal_to(-10) rhs = rhs.intersection(value_domain_less_than_or_equal_to(10)) subject.contain?(rhs).should be_false end it "should be contained by " + "(((< 10) || (== 10)) && ((== -10) || (> -10)))" do lhs = value_domain_greater_than_or_equal_to(-10) lhs = lhs.intersection(value_domain_less_than_or_equal_to(10)) lhs.contain?(subject).should be_true end it "intersection with (< 0) should be equal to (== -5)" do rhs = value_domain_less_than(0) subject.intersection(rhs).to_s.should == "(== -5)" end it "intersection with (> 0) should be equal to (== 5)" do rhs = value_domain_greater_than(0) subject.intersection(rhs).to_s.should == "(== 5)" end it "intersection with ((== -10) || (> -10)) " + "should be equal to the subject domain" do rhs = value_domain_greater_than_or_equal_to(-10) subject.intersection(rhs).should == subject end it "intersection with ((== 10) || (< 10)) " + "should be equal to the subject domain" do rhs = value_domain_less_than_or_equal_to(10) subject.intersection(rhs).should == subject end it "should not contain (((< 0) && (> -10)) || (== -10))" do rhs = value_domain_greater_than_or_equal_to(-10) rhs = rhs.intersection(value_domain_less_than_or_equal_to(10)) rhs = rhs.intersection(value_domain_less_than(0)) subject.contain?(rhs).should be_false end end context "(((< 0) && (> -10)) || (== -10))" do subject do tmp = value_domain_greater_than_or_equal_to(-10) tmp = tmp.intersection(value_domain_less_than_or_equal_to(10)) tmp.intersection(value_domain_less_than(0)) end it "should not contain ((== -5) || (== 5))" do rhs = value_domain_equal_to(-5).union(value_domain_equal_to(5)) subject.contain?(rhs).should be_false end end context "(((< 0) && (> -2147483647)) || (== 0))" do subject do tmp = value_domain_less_than_or_equal_to(0) tmp.intersection(value_domain_greater_than_or_equal_to(-2147483647)) end it "union with ((== -2147483647) || (== 0)) should be " + "((((< 0) && (> -2147483647)) || (== -2147483647)) || (== 0))" do rhs = value_domain_equal_to(-2147483647) rhs = rhs.union(value_domain_equal_to(0)) subject.union(rhs).to_s.should == "((((< 0) && (> -2147483647)) || (== -2147483647)) || (== 0))" end end context "((== -2147483647) || (== 0))" do subject do value_domain_equal_to(-2147483647).union(value_domain_equal_to(0)) end it "should contain ((== -2147483647) || (== 0))" do rhs = value_domain_equal_to(-2147483647) rhs = rhs.union(value_domain_equal_to(0)) subject.contain?(rhs).should be_true end it "should contain (== -2147483647)" do subject.contain?(value_domain_equal_to(-2147483647)).should be_true end it "should contain (== 0)" do subject.contain?(value_domain_equal_to(0)).should be_true end end context "(((< 2147483647) && (> -2147483648)) || (== 2147483647))" do subject do tmp = value_domain_greater_than(-2147483648) tmp = tmp.intersection(value_domain_less_than(2147483647)) tmp.union(value_domain_equal_to(2147483647)) end it "cloned should be " + "(((< 2147483647) && (> -2147483648)) || (== 2147483647))" do subject.dup.to_s.should == "(((< 2147483647) && (> -2147483648)) || (== 2147483647))" end it "intersection with its cloned should be " + "(((< 2147483647) && (> -2147483648)) || (== 2147483647))" do subject.intersection(subject.dup).to_s.should == "(((< 2147483647) && (> -2147483648)) || (== 2147483647))" end it "union with its cloned should be " + "(((< 2147483647) && (> -2147483648)) || (== 2147483647))" do subject.union(subject.dup).to_s.should == "(((< 2147483647) && (> -2147483648)) || (== 2147483647))" end end context "(((< 2147483647) && (> 1)) || (== 1))" do subject do tmp = value_domain_greater_than(1) tmp = tmp.intersection(value_domain_less_than(2147483647)) tmp.union(value_domain_equal_to(1)) end it "union with ((== 1) || (== 2147483647)) should be " + "(((< 2147483647) && (> 1)) || ((== 1) || (== 2147483647)))" do rhs = value_domain_equal_to(1) rhs = rhs.union(value_domain_equal_to(2147483647)) subject.union(rhs).to_s.should == "(((< 2147483647) && (> 1)) || ((== 1) || (== 2147483647)))" end end context "(((< 429) && (> 0)) || (== 429))" do subject do tmp = value_domain_greater_than(0) tmp = tmp.intersection(value_domain_less_than(429)) tmp.union(value_domain_equal_to(429)) end it "intersection with (== 0) should be (== Nil)" do subject.intersection(value_domain_equal_to(0)).to_s.should == "(== Nil)" end end context "(((< 10) || (== 10)) && ((== 0) || (> 0)))" do subject do ValueDomain.of_intersection( value_domain_greater_than_or_equal_to(0), value_domain_less_than_or_equal_to(10) ) end it "+ (((< 10) || (== 10)) && ((== 0) || (> 0))) " + "should be ((((< 20) && (> 0)) || (== 0)) || (== 20))" do (subject + subject.dup).to_s.should == "((((< 20) && (> 0)) || (== 0)) || (== 20))" end end context "((((< 10) && (> -10)) || (== 10)) || (== -10))" do subject do tmp = value_domain_greater_than_or_equal_to(-10) tmp.intersection(value_domain_less_than_or_equal_to(10)) end it "should intersect with (== 0)" do subject.intersect?(value_domain_equal_to(0)).should be_true end it "< (== 0) should be (== Unlimited)" do (subject < value_domain_equal_to(0)).to_s.should == "(== Unlimited)" end it "> (== 0) should be (== Unlimited)" do (subject > value_domain_equal_to(0)).to_s.should == "(== Unlimited)" end it "== (== 0) should be (== Unlimited)" do (subject == value_domain_equal_to(0)).to_s.should == "(== Unlimited)" end it "!= (== 0) should be (== Unlimited)" do (subject != value_domain_equal_to(0)).to_s.should == "(== Unlimited)" end it "< (== 20) should be ((< 0) || (> 0))" do (subject < value_domain_equal_to(20)).to_s.should == "((< 0) || (> 0))" end it "> (== 20) should be (== 0)" do (subject > value_domain_equal_to(20)).to_s.should == "(== 0)" end end context "(((< 11) && (> 1)) || (== 11))" do subject do tmp = value_domain_greater_than(1) tmp = tmp.intersection(value_domain_less_than(11)) tmp.union(value_domain_equal_to(11)) end it "narrowed by == ((((< 10) && (> 0)) || (== 10)) || (== 0)) " + "should be (((< 10) && (> 1)) || (== 10))" do rhs = value_domain_greater_than(0) rhs = rhs.intersection(value_domain_less_than(10)) rhs = rhs.union(value_domain_equal_to(0)) rhs = rhs.union(value_domain_equal_to(10)) subject.narrow(Operator::EQ, rhs).to_s.should == "(((< 10) && (> 1)) || (== 10))" end end context "((< 128) && (> -129))" do subject do tmp = value_domain_greater_than(-129) tmp.intersection(value_domain_less_than(128)) end it "should intersect with (== -128)" do subject.intersect?(value_domain_equal_to(-128)).should be_true end it "should intersect with (== 127)" do subject.intersect?(value_domain_equal_to(127)).should be_true end end context "((((< 2147483647) && (> -2147483648)) || " + "(== 2147483647)) || (== -2147483648))" do subject do tmp = value_domain_greater_than_or_equal_to(-2147483648) tmp.intersection(value_domain_less_than_or_equal_to(2147483647)) end it "narrowed by != (== 1) should be " + "(((((< 1) && (> -2147483648)) || ((< 2147483647) && (> 1))) || " + "(== 2147483647)) || (== -2147483648))" do subject.narrow(Operator::NE, value_domain_equal_to(1)).to_s.should == "(((((< 1) && (> -2147483648)) || ((< 2147483647) && (> 1))) || " + "(== 2147483647)) || (== -2147483648))" end end context "(((< 10) && (> 0)) || (== 0))" do subject do tmp = value_domain_greater_than_or_equal_to(0) tmp.intersection(value_domain_less_than(10)) end it "narrowed by != its cloned should be (== Nil)" do subject.narrow(Operator::NE, subject.dup).to_s.should == "(== Nil)" end end context "((< 10) && (> 0))" do subject do tmp = value_domain_greater_than(0) tmp.intersection(value_domain_less_than(10)) end it "+ ((< 10) && (> 0)) should be ((< 10) && (> 0))" do rhs = value_domain_greater_than(0) rhs = rhs.intersection(value_domain_less_than(10)) (subject + rhs).to_s.should == "((< 20) && (> 0))" end it "* (== 2) should be ((< 20) && (> 0))" do rhs = value_domain_equal_to(2) (subject * rhs).to_s.should == "((< 20) && (> 0))" end it "* ((< 10) && (> 0)) should be ((< 100) && (> 0))" do rhs = value_domain_greater_than(0) rhs = rhs.intersection(value_domain_less_than(10)) (subject * rhs).to_s.should == "((< 100) && (> 0))" end it "/ (== 2) should be ((< 5) && (> 0))" do rhs = value_domain_equal_to(2) (subject / rhs).to_s.should == "((< 5) && (> 0))" end # TODO: Fix bad value-domain division before 1.14.0 GA release. #it "/ ((< 10) && (> 0)) should be ((< 10) && (> 0))" do # rhs = value_domain_greater_than(0) # rhs = rhs.intersection(value_domain_less_than(10)) # File.open("dump", "w") { |io| PP.pp(subject / rhs, io) } # (subject / rhs).to_s.should == "((< 10) && (> 0))" #end end context "(== 0)" do subject { value_domain_equal_to(0) } it "narrowed by == ((== 3) || (== 4)) should be (== Nil)" do rhs = value_domain_equal_to(3).union(value_domain_equal_to(4)) subject.narrow(Operator::EQ, rhs).to_s.should == "(== Nil)" end end end private def value_domain_equal_to(val) ValueDomain.equal_to(val, logical_right_shift?) end def value_domain_less_than(val) ValueDomain.less_than(val, logical_right_shift?) end def value_domain_greater_than(val) ValueDomain.greater_than(val, logical_right_shift?) end def value_domain_less_than_or_equal_to(val) ValueDomain.less_than_or_equal_to(val, logical_right_shift?) end def value_domain_greater_than_or_equal_to(val) ValueDomain.greater_than_or_equal_to(val, logical_right_shift?) end def traits @adlint.traits end end end end adlint-3.2.14/spec/adlint/cc1/ctrlexpr_spec.rb0000644000004100000410000001321312340630463021162 0ustar www-datawww-data# Unit specification of controlling expression of selection-statements and # iteration-statements. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "spec_helper" module AdLint module Cc1 describe ControllingExpression do include InterpreterMediator before(:all) { @adlint = AdLint.new($default_traits) } before(:each) do @monitor = ProgressMonitor.new(nil, nil, false) @logger = Logger.new(File.open(File::NULL, "w")) @symbol_table = SymbolTable.new @type_table = TypeTable.new(@adlint.traits, @monitor, @logger) @interpreter = Interpreter.new(@type_table) @int_i = @interpreter.define_variable(int_i_def, nil) @int_j = @interpreter.define_variable(int_j_def, nil) end context "`int i = ((> 0) && (< 10)) || (== 0)' and " + "`int j = ((> 0) && (< 10)) || (== 0)'" do before do @int_i.narrow_value_domain!(Operator::GE, scalar_value_of(0)) @int_i.narrow_value_domain!(Operator::LT, scalar_value_of(10)) @int_j.narrow_value_domain!(Operator::GE, scalar_value_of(0)) @int_j.narrow_value_domain!(Operator::LT, scalar_value_of(10)) end it "(i == j) makes that `i' should contain 0 and 9, " + "and should not contain 10" do expr = EqualityExpression.new(eq_op, i_spec, j_spec) branched_eval(expr, NARROWING, FINAL) do @int_i.value.test_may_be_equal_to( scalar_value_of(0)).result.should be_true @int_i.value.test_may_be_equal_to( scalar_value_of(9)).result.should be_true @int_i.value.test_may_be_equal_to( scalar_value_of(10)).result.should be_false end end it "(i != j) makes that `i' should contain 0 and 9, " + "and should not contain 10" do expr = EqualityExpression.new(ne_op, i_spec, j_spec) branched_eval(expr, NARROWING, FINAL) do @int_i.value.test_may_be_equal_to( scalar_value_of(0)).result.should be_true @int_i.value.test_may_be_equal_to( scalar_value_of(9)).result.should be_true @int_i.value.test_may_be_equal_to( scalar_value_of(10)).result.should be_false end end end context "`int i = ((> 0) && (< 10)) || (== 0)' and " + "`int j = ((> 3) && (< 5)) || (== 3)'" do before do @int_i.narrow_value_domain!(Operator::GE, scalar_value_of(0)) @int_i.narrow_value_domain!(Operator::LT, scalar_value_of(10)) @int_j.narrow_value_domain!(Operator::GE, scalar_value_of(3)) @int_j.narrow_value_domain!(Operator::LT, scalar_value_of(5)) end it "(i == j) makes that `i' should contain 3 and 4, " + "and should not contain 0" do expr = EqualityExpression.new(eq_op, i_spec, j_spec) branched_eval(expr, NARROWING, FINAL) do @int_i.value.test_may_be_equal_to( scalar_value_of(3)).result.should be_true @int_i.value.test_may_be_equal_to( scalar_value_of(4)).result.should be_true @int_i.value.test_may_be_equal_to( scalar_value_of(0)).result.should be_false end end end private def eq_op Token.new("==", "==", nil_loc) end def ne_op Token.new("!=", "!=", nil_loc) end def i_spec obj_spec_of("i") end def j_spec obj_spec_of("j") end def obj_spec_of(name) ObjectSpecifier.new(id_of(name)) end def int_i_def uninitialized_int_vardef("i", @type_table.int_t) end def int_j_def uninitialized_int_vardef("j", @type_table.int_t) end def uninitialized_int_vardef(name, type) dcl_specs = DeclarationSpecifiers.new.tap { |ds| ds.type_specifiers.push(int_t_spec) } decl = Declaration.new(dcl_specs, [uninitialized_int_dcl(name)], @symbol_table) decl.items.each { |item| item.type = type } decl.items.find { |item| item.kind_of?(VariableDefinition) } end def uninitialized_int_dcl(name) InitDeclarator.new(IdentifierDeclarator.new(id_of(name)), nil, nil) end def int_t_spec StandardTypeSpecifier.new(Token.new(:INT, "int", Location.new)) end def id_of(name) Token.new(:IDENTIFIER, name, nil_loc) end def nil_loc Location.new end def resolve_type(node) StaticTypeResolver.new.resolve(node) end def interpreter @interpreter end end include BranchOptions end end adlint-3.2.14/spec/conf.d/0000755000004100000410000000000012340630463015206 5ustar www-datawww-dataadlint-3.2.14/spec/conf.d/empty_pinit.h0000644000004100000410000000075112340630463017723 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * Project specific initial header file generated by adlintize 1.6.0 * at 2012-04-23 21:48:10 +0900. */ /* Put project specific predefined macros and types here. */ adlint-3.2.14/spec/conf.d/default_traits.yml0000644000004100000410000001650112340630463020746 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # Traits file generated by adlintize 1.19.0 at 2012-04-23 21:48:10 +0900. # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "3.0.0" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "spec" # Project root directory. project_root: "spec/conf.d/project" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "spec/conf.d/project" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "spec/conf.d/empty_pinit.h" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "spec/conf.d/empty_cinit.h" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "ja_JP" # Enable translation-unit specific code check selection? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/spec/conf.d/project/0000755000004100000410000000000012340630463016654 5ustar www-datawww-dataadlint-3.2.14/spec/conf.d/project/foo.c0000644000004100000410000000000012340630463017571 0ustar www-datawww-dataadlint-3.2.14/spec/conf.d/empty_cinit.h0000644000004100000410000000075312340630463017710 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * Compiler specific initial header file generated by adlintize 1.6.0 * at 2012-04-23 21:48:10 +0900. */ /* Put compiler specific predefined macros and types here. */ adlint-3.2.14/lib/0000755000004100000410000000000012340630463013653 5ustar www-datawww-dataadlint-3.2.14/lib/adlint/0000755000004100000410000000000012340630463015126 5ustar www-datawww-dataadlint-3.2.14/lib/adlint/lang.rb0000644000004100000410000000565112340630463016403 0ustar www-datawww-data# Programming language detection mechanism. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/cpp/scanner" require "adlint/cpp/phase" require "adlint/cc1/scanner" require "adlint/cc1/phase" module AdLint #:nodoc: # == DESCRIPTION # Programming language. class Language # === DESCRIPTION # Detects programming language of the specified source file. # # === PARAMETER # _fpath_:: Pathname -- File path of the source file. # # === RETURN VALUE # Language -- Object of the derived class of Language class. def self.of(fpath) # FIXME: Dummy implementation. C end class Cpp extend ::AdLint::Cpp::Scanner class << self def single_module_phases; [] end def check_phases; [] end end end class C include Cc1::ScannerConstants extend Cc1::Scanner class << self def single_module_phases [ ::AdLint::Cpp::Prepare1Phase, ::AdLint::Cpp::Prepare2Phase, ::AdLint::Cpp::EvalPhase, ::AdLint::Cpp::SubstPhase, ::AdLint::Cc1::Prepare1Phase, ::AdLint::Cc1::ParsePhase, ::AdLint::Cc1::ResolvePhase, ::AdLint::Cc1::Prepare2Phase, ::AdLint::Cc1::InterpPhase, ::AdLint::Cpp::ReviewPhase, ::AdLint::Cc1::ReviewPhase, ::AdLint::Cpp::ExaminationPhase, ::AdLint::Cc1::ExaminationPhase ].freeze end def check_phases [ ::AdLint::Cpp::Prepare1Phase, ::AdLint::Cpp::EvalPhase, ::AdLint::Cpp::SubstPhase, ::AdLint::Cc1::Prepare1Phase, ::AdLint::Cc1::ParsePhase ].freeze end end end end end adlint-3.2.14/lib/adlint/source.rb0000644000004100000410000000730112340630463016754 0ustar www-datawww-data# Analyzing source files. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/traits" require "adlint/report" require "adlint/util" module AdLint #:nodoc: # == DESCRIPTION # Target source file. class Source # === DESCRIPTION # Constructs a target source file. # # === PARAMETER # _fpath_:: Pathname -- Path name of the target source file. # _content_:: String -- Source content. def initialize(fpath, fenc, included_at = Location.new) @fpath = fpath @fenc = fenc @included_at = included_at @content = nil end extend Pluggable def_plugin :on_cr_at_eol_found def_plugin :on_eof_mark_at_eof_found def_plugin :on_eof_newline_not_found # === VALUE # String -- The path name of this source file. attr_reader :fpath attr_reader :included_at def user_header? false end def system_header? false end def analysis_target?(traits) Location.new(@fpath).in_analysis_target?(traits) end # === DESCRIPTION # Opens the target source file. # # === PARAMETER # _block_:: Proc -- Yieldee block. def open(&block) @content ||= read_content(@fpath) io = StringIO.new(@content) yield(io) ensure io && io.close end # === DESCRIPTION # Converts this source content into string. # # === RETURN VALUE # String -- Content of this source file. def to_s @content ||= read_content(@fpath) end private def read_content(fpath) cont = IO.read(fpath, mode: "rb", encoding: @fenc || "binary") if cont =~ /\r/ notify_cr_at_eol_found(Location.new(fpath)) cont = cont.gsub(/\r\n|\r/, "\n") end if cont =~ /\x1a/ notify_eof_mark_at_eof_found(Location.new(fpath)) cont = cont.gsub(/\x1a/, "") end unless cont.end_with?("\n") notify_eof_newline_not_found(Location.new(fpath)) cont << "\n" end cont end def notify_cr_at_eol_found(loc) on_cr_at_eol_found.invoke(loc) end def notify_eof_mark_at_eof_found(loc) on_eof_mark_at_eof_found.invoke(loc) end def notify_eof_newline_not_found(loc) on_eof_newline_not_found.invoke(loc) end end class EmptySource < Source def initialize super(File::NULL, nil, nil) @content = "\n" end end class UserHeader < Source def user_header? true end end class SystemHeader < Source def system_header? true end end end adlint-3.2.14/lib/adlint/location.rb0000644000004100000410000001042112340630463017261 0ustar www-datawww-data# Location identifier of tokens. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: # == DESCRIPTION # Location identifier of tokens. class Location include Comparable # === Constructs a location identifier. # # Param:: _fpath_ (Pathname) Path name of the file contains the token. # Param:: _line_no_ (Integer) Line-no where the token appears. # Param:: _column_no_ (Integer) Column-no where the token appears. def initialize(fpath = nil, line_no = nil, column_no = nil, appearance_column_no = column_no) @fpath, @line_no, @column_no = fpath, line_no, column_no @appearance_column_no = appearance_column_no end # === VALUE # Pathname -- Path name of the file contains this token. attr_reader :fpath # === VALUE # Integer -- Line-no where this token appears. attr_reader :line_no # === VALUE # Integer -- Column-no where this token appears. attr_reader :column_no attr_reader :appearance_column_no def in_analysis_target?(traits) if @fpath under_inclusion_paths?(@fpath, traits) && !under_exclusion_paths?(@fpath, traits) and !@fpath.identical?(traits.of_project.initial_header) && !@fpath.identical?(traits.of_compiler.initial_header) else false end end # NOTE: Value of #in_analysis_target? depends on the `traits' parameter. # But the `traits' parameter always points the same object in an # AdLint instance. # So, it is safe to treat this method as nullary method for improving # the performance. memoize :in_analysis_target?, force_nullary: true def <=>(rhs) self.to_a <=> rhs.to_a end def eql?(rhs) self == rhs end def hash to_a.hash end # === DESCRIPTION # Converts this location identifier to an array representation. # # === RETURN VALUE # Array< Object > -- Array representation of this location identifier. def to_a [@fpath, @line_no, @column_no] end # === DESCRIPTION # Converts this location to a human readable string representation. # # === RETURN VALUE # String -- String representation of this location identifier. def to_s "#{@fpath}:#{@line_no}:#{@column_no}" end # === DESCRIPTION # Converts this location to debugging dump representation. # # === RETURN VALUE # String -- String representation of this location identifier. def inspect "#{@fpath ? @fpath : 'nil'}:" + "#{@line_no ? @line_no : 'nil'}:#{@column_no ? @column_no : 'nil'}" end private def under_inclusion_paths?(fpath, traits) traits.of_project.target_files.inclusion_paths.any? do |dpath| fpath.under?(dpath) end end def under_exclusion_paths?(fpath, traits) traits.of_project.target_files.exclusion_paths.any? do |dpath| fpath.under?(dpath) end end end module LocationHolder # NOTE: Host class must respond to #location. def analysis_target?(traits) location.in_analysis_target?(traits) end end end adlint-3.2.14/lib/adlint/memo.rb0000644000004100000410000001536012340630463016415 0ustar www-datawww-data# Memoizing utility. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: module Memoizable def memoize(name, *opts) force_nullary, key_indices = extract_memoize_options(opts) case when instance_method(name).arity == 0 || force_nullary memoize_nullary_method(name) when instance_method(name).arity == 1 || key_indices.size == 1 memoize_unary_method(name, key_indices.first || 0) else memoize_polynomial_method(name, key_indices) end end private def extract_memoize_options(opts) hash = opts.first || {} [hash[:force_nullary], hash[:key_indices] || []] end def memoize_nullary_method(name) save_memoizing_method(name) prepare_nullary_method_cache(name) class_eval <<-EOS define_method(:#{name}) do |*args| if #{cache_name_of(name)}_initialized ||= false #{cache_name_of(name)}_forbidden = false #{cache_name_of(name)} else if #{cache_name_of(name)}_forbidden ||= false #{cache_name_of(name)}_forbidden = false #{orig_name_of(name)} else #{cache_name_of(name)}_initialized = true #{cache_name_of(name)} = #{orig_name_of(name)}(*args) end end end EOS end def memoize_unary_method(name, key_index) save_memoizing_method(name) prepare_unary_method_cache(name, key_index) class_eval <<-EOS define_method(:#{name}) do |*args| key = args[#{key_index}] if #{cache_name_of(name)}_initialized ||= false #{cache_name_of(name)}_forbidden = false if #{cache_name_of(name)}.include?(key) #{cache_name_of(name)}[key] else #{cache_name_of(name)}[key] = #{orig_name_of(name)}(*args) end else if #{cache_name_of(name)}_forbidden ||= false #{cache_name_of(name)}_forbidden = false #{orig_name_of(name)}(*args) else #{cache_name_of(name)}_initialized = true #{cache_name_of(name)} = {} #{cache_name_of(name)}[key] = #{orig_name_of(name)}(*args) end end end EOS end def memoize_polynomial_method(name, key_indices) save_memoizing_method(name) prepare_polynomial_method_cache(name, key_indices) class_eval <<-EOS define_method(:#{name}) do |*args| key = __key_for_#{name}(*args) if #{cache_name_of(name)}_initialized ||= false #{cache_name_of(name)}_forbidden = false if #{cache_name_of(name)}.include?(key) #{cache_name_of(name)}[key] else #{cache_name_of(name)}[key] = #{orig_name_of(name)}(*args) end else if #{cache_name_of(name)}_forbidden ||= false #{cache_name_of(name)}_forbidden = false #{orig_name_of(name)}(*args) else #{cache_name_of(name)}_initialized = true #{cache_name_of(name)} = {} #{cache_name_of(name)}[key] = #{orig_name_of(name)}(*args) end end end EOS end def prepare_nullary_method_cache(name) class_eval <<-EOS define_method(:forbid_once_memo_of__#{name}) do #{cache_name_of(name)}_forbidden = true end define_method(:clear_memo_of__#{name}) do #{cache_name_of(name)} = nil #{cache_name_of(name)}_initialized = false end define_method(:forget_memo_of__#{name}) do clear_memo_of__#{name} end EOS end def prepare_unary_method_cache(name, key_index) class_eval <<-EOS define_method(:forbid_once_memo_of__#{name}) do #{cache_name_of(name)}_forbidden = true end define_method(:clear_memo_of__#{name}) do #{cache_name_of(name)} = nil #{cache_name_of(name)}_initialized = false end define_method(:forget_memo_of__#{name}) do |*args| if #{cache_name_of(name)}_initialized #{cache_name_of(name)}.delete(args[#{key_index}]) end end EOS end def prepare_polynomial_method_cache(name, key_indices) define_key_generator(name, key_indices) class_eval <<-EOS define_method(:forbid_once_memo_of__#{name}) do #{cache_name_of(name)}_forbidden = true end define_method(:clear_memo_of__#{name}) do #{cache_name_of(name)} = nil #{cache_name_of(name)}_initialized = false end define_method(:forget_memo_of__#{name}) do |*args| if #{cache_name_of(name)}_initialized #{cache_name_of(name)}.delete(__key_for_#{name}(*args)) end end EOS end def define_key_generator(name, key_indices) if key_indices.empty? class_eval <<-EOS define_method(:__key_for_#{name}) do |*args| args end EOS else class_eval <<-EOS define_method(:__key_for_#{name}) do |*args| args.values_at(#{key_indices.join(',')}) end EOS end class_eval "private(:__key_for_#{name})" end def save_memoizing_method(name) class_eval <<-EOS alias_method(:#{orig_name_of(name)}, :#{name}) private(:#{orig_name_of(name)}) EOS end def cache_name_of(name) "@__cache_of__#{name.to_s.sub("?", "_p")}" end def orig_name_of(name) "__orig_#{name}" end end end adlint-3.2.14/lib/adlint/traits.rb0000644000004100000410000004735212340630463016774 0ustar www-datawww-data# AdLint analysis project configuration. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/version" require "adlint/util" module AdLint #:nodoc: # == DESCRIPTION # Analysis configuration information. class Traits include Validation def initialize(traits_fpath) File.open(traits_fpath, "r:utf-8") do |io| case ary_or_stream = YAML.load_stream(io) when Array # NOTE: YAML.load_stream returns Array in Ruby 1.9.3-preview1. doc = ary_or_stream.first when YAML::Stream doc = ary_or_stream.documents.first end validate_version(doc["version"]) @exam_packages = (doc["exam_packages"] || []).uniq.map { |name| ExaminationPackage.new(name) }.freeze @project_traits = ProjectTraits.new(doc["project_traits"]).freeze @compiler_traits = CompilerTraits.new(doc["compiler_traits"]).freeze @linker_traits = LinkerTraits.new(doc["linker_traits"]).freeze @message_traits = MessageTraits.new(doc["message_traits"]).freeze end end attr_reader :exam_packages def of_project @project_traits end def of_compiler @compiler_traits end def of_linker @linker_traits end def of_message @message_traits end def entity_name "" end ensure_exam_packages_presence_of :exam_packages ensure_validity_of :project_traits ensure_validity_of :compiler_traits ensure_validity_of :linker_traits ensure_validity_of :message_traits private def validate_version(ver) ver == TRAITS_SCHEMA_VERSION or raise "invalid version of the traits file.\n" + "regenerate or migrate traits file by new `adlintize' command." end end class ProjectTraits include Validation include CompoundPathParser def initialize(doc) @project_name = doc["project_name"] @project_root = Pathname.new(doc["project_root"]) @target_files = TargetFiles.new(doc["target_files"]) @initial_header = doc["initial_header"] @file_search_paths = parse_compound_path_list(doc["file_search_paths"]) @coding_style = CodingStyle.new(doc["coding_style"]) @file_encoding = doc["file_encoding"] end def entity_name "project_traits" end attr_reader :project_name ensure_presence_of :project_name attr_reader :project_root ensure_dir_presence_of :project_root attr_reader :target_files ensure_validity_of :target_files attr_reader :initial_header ensure_file_presence_of :initial_header, :allow_nil => true attr_reader :file_search_paths ensure_dirs_presence_of :file_search_paths attr_reader :coding_style ensure_validity_of :coding_style attr_reader :file_encoding ensure_with :file_encoding, :message => "is not a valid encoding name.", :validator => Encoding.method(:include_name?) class TargetFiles include Validation include CompoundPathParser def initialize(doc) @inclusion_paths = parse_compound_path_list(doc["inclusion_paths"]) @exclusion_paths = parse_compound_path_list(doc["exclusion_paths"]) end def entity_name "project_traits:target_files" end attr_reader :inclusion_paths ensure_dirs_presence_of :inclusion_paths attr_reader :exclusion_paths ensure_dirs_presence_of :exclusion_paths def freeze @inclusion_paths.freeze @exclusion_paths.freeze super end end class CodingStyle include Validation K_AND_R = "K&R" ALLMAN = "Allman" GNU = "GNU" def initialize(doc) @indent_style = doc["indent_style"] @tab_width = doc["tab_width"] @indent_width = doc["indent_width"] end def entity_name "project_traits:coding_style" end attr_reader :indent_style ensure_inclusion_of :indent_style, :values => [K_AND_R, ALLMAN, GNU] attr_reader :tab_width ensure_numericality_of :tab_width, :only_integer => true, :min => 1 attr_reader :indent_width ensure_numericality_of :indent_width, :only_integer => true, :min => 1 def freeze @indent_style.freeze @tab_width.freeze @indent_width.freeze super end end def freeze @project_name.freeze @target_files.freeze @file_search_paths.freeze @coding_style.freeze @file_encoding.freeze super end end # == DESCRIPTION # Traits information of the compiler used in the project. class CompilerTraits include Validation include CompoundPathParser def initialize(doc) @initial_header = doc["initial_header"] @file_search_paths = parse_compound_path_list(doc["file_search_paths"]) @standard_types = StandardTypes.new(doc["standard_types"]) @arithmetic = Arithmetic.new(doc["arithmetic"]) @identifier_max = doc["identifier_max"] @extension_substitutions = doc["extension_substitutions"] || {} @arbitrary_substitutions = doc["arbitrary_substitutions"] || {} end def entity_name "compiler_traits" end # === VALUE # String -- The file path of the initial source. attr_reader :initial_header ensure_file_presence_of :initial_header, :allow_nil => true # === VALUE # Array< String > -- System include paths. attr_reader :file_search_paths ensure_dirs_presence_of :file_search_paths # === VALUE # CompilerTraits::StandardTypes -- The standard type traits information. attr_reader :standard_types ensure_validity_of :standard_types # === VALUE # CompilerTraits::Arithmetic -- The arithmetic traits information. attr_reader :arithmetic ensure_validity_of :arithmetic # === VALUE # Integer -- Max length of all symbols identified by the compiler. attr_reader :identifier_max ensure_numericality_of :identifier_max, :only_integer => true, :min => 1 # === VALUE # Hash -- The compiler-extension code substitution # settings. attr_reader :extension_substitutions # === VALUE # Hash -- The arbitrary code substitution settings. attr_reader :arbitrary_substitutions # == DESCRIPTION # Traits information of standard types. class StandardTypes include Validation def initialize(doc) @char_size = doc["char_size"] @char_alignment = doc["char_alignment"] @short_size = doc["short_size"] @short_alignment = doc["short_alignment"] @int_size = doc["int_size"] @int_alignment = doc["int_alignment"] @long_size = doc["long_size"] @long_alignment = doc["long_alignment"] @long_long_size = doc["long_long_size"] @long_long_alignment = doc["long_long_alignment"] @float_size = doc["float_size"] @float_alignment = doc["float_alignment"] @double_size = doc["double_size"] @double_alignment = doc["double_alignment"] @long_double_size = doc["long_double_size"] @long_double_alignment = doc["long_double_alignment"] @code_ptr_size = doc["code_ptr_size"] @code_ptr_alignment = doc["code_ptr_alignment"] @data_ptr_size = doc["data_ptr_size"] @data_ptr_alignment = doc["data_ptr_alignment"] @char_as_unsigned_char = doc["char_as_unsigned_char"] end def entity_name "compiler_traits:standard_types" end # === VALUE # Integer -- Bit length of the `char' type. attr_reader :char_size ensure_numericality_of :char_size, :only_integer => true, :min => 1, :max => 256 attr_reader :char_alignment ensure_numericality_of :char_alignment, :only_integer => true, :min => 1 # === VALUE # Integer -- Bit length of the `short' type. attr_reader :short_size ensure_numericality_of :short_size, :only_integer => true, :min => 1, :max => 256 attr_reader :short_alignment ensure_numericality_of :short_alignment, :only_integer => true, :min => 1 # === VALUE # Integer -- Bit length of the `int' type. attr_reader :int_size ensure_numericality_of :int_size, :only_integer => true, :min => 1, :max => 256 attr_reader :int_alignment ensure_numericality_of :int_alignment, :only_integer => true, :min => 1 # === VALUE # Integer -- Bit length of the `long' type. attr_reader :long_size ensure_numericality_of :long_size, :only_integer => true, :min => 1, :max => 256 attr_reader :long_alignment ensure_numericality_of :long_alignment, :only_integer => true, :min => 1 # === VALUE # Integer -- Bit length of the `long long' type. attr_reader :long_long_size ensure_numericality_of :long_long_size, :only_integer => true, :min => 1, :max => 256 attr_reader :long_long_alignment ensure_numericality_of :long_long_alignment, :only_integer => true, :min => 1 # === VALUE # Integer -- Bit length of the `float' type. attr_reader :float_size ensure_numericality_of :float_size, :only_integer => true, :min => 1, :max => 256 attr_reader :float_alignment ensure_numericality_of :float_alignment, :only_integer => true, :min => 1 # === VALUE # Integer -- Bit length of the `double' type. attr_reader :double_size ensure_numericality_of :double_size, :only_integer => true, :min => 1, :max => 256 attr_reader :double_alignment ensure_numericality_of :double_alignment, :only_integer => true, :min => 1 # === VALUE # Integer -- Bit length of the `long double' type. attr_reader :long_double_size ensure_numericality_of :long_double_size, :only_integer => true, :min => 1, :max => 256 attr_reader :long_double_alignment ensure_numericality_of :long_double_alignment, :only_integer => true, :min => 1 attr_reader :code_ptr_size ensure_numericality_of :code_ptr_size, :only_integer => true, :min => 1, :max => 256 attr_reader :code_ptr_alignment ensure_numericality_of :code_ptr_alignment, :only_integer => true, :min => 1 attr_reader :data_ptr_size ensure_numericality_of :data_ptr_size, :only_integer => true, :min => 1, :max => 256 attr_reader :data_ptr_alignment ensure_numericality_of :data_ptr_alignment, :only_integer => true, :min => 1 # === VALUE # Boolean -- The flag indicates `char' is `unsigned char'. attr_reader :char_as_unsigned_char ensure_true_or_false_of :char_as_unsigned_char def freeze @char_size.freeze @char_alignment.freeze @short_size.freeze @short_alignment.freeze @int_size.freeze @int_alignment.freeze @long_size.freeze @long_alignment.freeze @long_long_size.freeze @long_long_alignment.freeze @float_size.freeze @float_alignment.freeze @double_size.freeze @double_alignment.freeze @long_double_size.freeze @long_double_alignment.freeze @code_ptr_size.freeze @code_ptr_alignment.freeze @data_ptr_size.freeze @data_ptr_alignment.freeze @char_as_unsigned_char.freeze super end end private_constant :StandardTypes # == DESCRIPTION # Traits information of arithmetic process. class Arithmetic include Validation def initialize(doc) @logical_right_shift = doc["logical_right_shift"] end def entity_name "compiler_traits:arithmetic" end # === VALUE # Boolean -- The flag value indicates the right shift operation is # logical. attr_reader :logical_right_shift ensure_true_or_false_of :logical_right_shift def freeze @logical_right_shift.freeze super end end private_constant :Arithmetic def freeze @file_search_paths.freeze @standard_types.freeze @arithmetic.freeze @identifier_max.freeze @extension_substitutions.freeze @arbitrary_substitutions.freeze super end end # == DESCRIPTION # Traits information of the linker used in the project. class LinkerTraits include Validation def initialize(doc) @identifier_max = doc["identifier_max"] @identifier_ignore_case = doc["identifier_ignore_case"] end def entity_name "linker_traits" end # === VALUE # Integer -- Max length of all external symbols identified by the linker. attr_reader :identifier_max ensure_numericality_of :identifier_max, :only_integer => true, :min => 1 # === VALUE # Boolean -- The flag indicates that external symbols are identified # without case by the linker. attr_reader :identifier_ignore_case ensure_true_or_false_of :identifier_ignore_case def freeze @identifier_max.freeze @identifier_ignore_case.freeze super end end class MessageTraits include Validation include CompoundPathParser def initialize(doc) @language = doc["language"] @individual_suppression = doc["individual_suppression"] @exclusion = Exclusion.new(doc["exclusion"]) @inclusion = Inclusion.new(doc["inclusion"]) @change_list = (doc["change_list"] || []).each_with_object({}) { |(name, cont), hash| hash[MessageId.new(cont["package"], name.to_sym)] = cont } end def entity_name "message_traits" end attr_reader :language ensure_inclusion_of :language, :values => %w(ja_JP en_US) attr_reader :individual_suppression ensure_true_or_false_of :individual_suppression attr_reader :exclusion ensure_validity_of :exclusion attr_reader :inclusion ensure_validity_of :inclusion attr_reader :change_list class Exclusion include Validation def initialize(doc) if doc @categories = doc["categories"] || [] @severities = doc["severities"] ? Regexp.new(doc["severities"]) : nil @messages = (doc["messages"] || {}).map { |msg_name, pkg_name| MessageId.new(pkg_name, msg_name.to_sym) }.to_set else @categories = [] @severities = nil @messages = Set.new end end def entity_name "message_traits:exclusion" end attr_reader :categories attr_reader :severities attr_reader :messages def freeze @categories.freeze @severities.freeze @messages.freeze super end end private_constant :Exclusion class Inclusion include Validation def initialize(doc) if doc @messages = (doc["messages"] || {}).map { |msg_name, pkg_name| MessageId.new(pkg_name, msg_name.to_sym) }.to_set else @messages = Set.new end end def entity_name "message_traits:inclusion" end attr_reader :messages def freeze @messages.freeze super end end private_constant :Inclusion def freeze @language.freeze @individual_suppression.freeze @exclusion.freeze @inclusion.freeze @change_list.freeze super end end module CodingStyleAccessor # NOTE: Host class must respond to #traits. def coding_style traits.of_project.coding_style end def indent_style coding_style.indent_style end def tab_width coding_style.tab_width end def indent_width coding_style.indent_width end INDENT_STYLE_K_AND_R = ProjectTraits::CodingStyle::K_AND_R INDENT_STYLE_ALLMAN = ProjectTraits::CodingStyle::ALLMAN INDENT_STYLE_GNU = ProjectTraits::CodingStyle::GNU end module StandardTypesAccessor # NOTE: Host class must respond to #traits. def standard_types traits.of_compiler.standard_types end def char_size standard_types.char_size end def char_alignment standard_types.char_alignment end def short_size standard_types.short_size end def short_alignment standard_types.short_alignment end def int_size standard_types.int_size end def int_alignment standard_types.int_alignment end def long_size standard_types.long_size end def long_alignment standard_types.long_alignment end def long_long_size standard_types.long_long_size end def long_long_alignment standard_types.long_long_alignment end def float_size standard_types.float_size end def float_alignment standard_types.float_alignment end def double_size standard_types.double_size end def double_alignment standard_types.double_alignment end def long_double_size standard_types.long_double_size end def long_double_alignment standard_types.long_double_alignment end def code_ptr_size standard_types.code_ptr_size end def code_ptr_alignment standard_types.code_ptr_alignment end def data_ptr_size standard_types.data_ptr_size end def data_ptr_alignment standard_types.data_ptr_alignment end def char_as_unsigned_char? standard_types.char_as_unsigned_char end end module ArithmeticAccessor # NOTE: Host class must respond to #traits. def arithmetic traits.of_compiler.arithmetic end def logical_right_shift? arithmetic.logical_right_shift end end module ExclusionAccessor # NOTE: Host class must respond to #traits. def exclusion traits.of_message.exclusion end def categories exclusion.categories end def severities exclusion.severities end def messages exclusion.messages end end module InclusionAccessor # NOTE: Host class must respond to #traits. def inclusion traits.of_message.inclusion end def messages inclusion.messages end end end adlint-3.2.14/lib/adlint/driver.rb0000644000004100000410000001077412340630463016757 0ustar www-datawww-data# Analysis drivers. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/prelude" require "adlint/traits" require "adlint/message" require "adlint/analyzer" module AdLint #:nodoc: class AdLint def initialize(traits_fpath, output_dpath = nil, verbose = false, cmd_name = File.basename($0)) @cmd_name = cmd_name @traits = load_traits(traits_fpath) @msg_catalog = load_message_catalog(@traits) @output_dpath = output_dpath @verbose = verbose if verbose $stdout.sync = true at_exit { print_elapsed_time($stdout) } end end attr_reader :traits attr_reader :msg_catalog attr_reader :verbose def run_sma!(src_fpath, strip_num = 0) FileUtils.mkdir_p(sma_output_dpath(src_fpath, strip_num, @output_dpath)) SingleModuleAnalyzer.new(@traits, @msg_catalog, src_fpath, strip_num, @output_dpath, @verbose).run end def run_cma!(met_fpaths) FileUtils.mkdir_p(@output_dpath) if @output_dpath CrossModuleAnalyzer.new(@traits, @msg_catalog, met_fpaths, @output_dpath, @verbose).run end def run_chk!(src_fpath, strip_num = 0) FileUtils.mkdir_p(sma_output_dpath(src_fpath, strip_num, @output_dpath)) ConfigurationValidator.new(@traits, @msg_catalog, src_fpath, strip_num, @output_dpath, @verbose).run end def met_fpaths_of(src_fpaths, strip_num) src_fpaths.map do |fpath| if @output_dpath @output_dpath.join(fpath.strip(strip_num)).add_ext(".met.csv") else fpath.strip(strip_num).add_ext(".met.csv") end end end private def load_traits(traits_fpath) begin traits = Traits.new(traits_fpath) unless traits.valid? $stderr.puts "#{@cmd_name}: Failed to read `#{traits_fpath}'." $stderr.puts $stderr.puts "Detailed message is below;" traits.errors.each_with_index do |err, idx| $stderr.puts "#{idx + 1}. #{err}" end $stderr.puts exit 3 end traits rescue Psych::SyntaxError, StandardError => ex $stderr.puts "#{@cmd_name}: Failed to read `#{traits_fpath}'." $stderr.puts $stderr.puts "Detailed message is below;" $stderr.puts ex.message, ex.backtrace $stderr.puts exit 2 end end def load_message_catalog(traits) begin MessageCatalog.new(traits) rescue Psych::SyntaxError, StandardError => ex $stderr.puts "#{@cmd_name}: Failed to read the message catalog for " + "`#{traits.of_message.language}'." $stderr.puts $stderr.puts "Detailed message is below;" $stderr.puts ex.message, ex.backtrace $stderr.puts exit 2 end end def sma_output_dpath(src_fpath, strip_num, output_dpath) src_fpath.strip(strip_num).expand_path(output_dpath).dirname end def print_elapsed_time(io) tms = Process.times io.print " %.3fs user, %.3fs system, " % [tms.utime, tms.stime] total = tms.utime + tms.stime h = total / 3600 m = total / 60 % 60 s = (total % 60).floor io.puts "%02d:%02d:%02d.%02d total" % [h, m, s, ((total % 60) - s) * 100] end end end adlint-3.2.14/lib/adlint/lexer.rb0000644000004100000410000001604012340630463016573 0ustar www-datawww-data# Lexical analyzer base classes. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/token" require "adlint/source" require "adlint/traits" require "adlint/error" module AdLint #:nodoc: # == DESCRIPTION # Token queue to interface to the parser. class TokenQueue < Array # === DESCRIPTION # Constructs an empty token queue or a solid token queue from specified # token array. # # === PARAMETER # _token_ary_:: TokenArray -- Array of tokens. def initialize(tok_ary = nil) if tok_ary super else super() end end def expect(tok_type) tok = self.first tok && tok.type == tok_type ? true : false end end # == DESCRIPTION # Object represents the whole content of something. class Content def location subclass_responsibility end def empty? subclass_responsibility end end # == DESCRIPTION # Object represents the whole content of the string. class StringContent < Content # === DESCRIPTION # Constructs the content object of the string. # # === PARAMETER # _str_:: String -- Target string. # _fpath_:: Pathname -- File path name contains the target string. # _line_no_:: Integer -- Initial line-no of the target string. def initialize(str, tab_width = 8, fpath = nil, line_no = 1, column_no = 1) @scanner = StringScanner.new(str) @tab_width = tab_width @fpath, @line_no, @column_no = fpath, line_no, column_no @appearance_column_no = column_no end def location Location.new(@fpath, @line_no, @column_no, @appearance_column_no) end memoize :location # === DESCRIPTION # Scans a token. # # === PARAMETER # _regexp_:: Regexp -- Token pattern. # # === RETURN VALUE # String -- Token string or nil. def scan(regexp) tok = @scanner.scan(regexp) if tok update_location(tok) tok else nil end end def check(regexp) @scanner.check(regexp) end # === DESCRIPTION # Skips a content. # # === PARAMETER # _len_:: Integer -- Skipping content length. # # === RETURN VALUE # String -- Eaten string. def eat!(len = 1) self.scan(/.{#{len}}/m) end # === DESCRIPTION # Checks whether this content is currently empty or not. # # === RETURN VALUE # Boolean -- Returns true if already empty. def empty? @scanner.eos? end def _debug_inspect @scanner.rest end private def update_location(tok) if (nl_cnt = tok.count("\n")) > 0 @line_no += nl_cnt lst_line = tok[tok.rindex("\n")..-1] @column_no = lst_line.length @appearance_column_no = lst_line.gsub(/\t/, " " * @tab_width).length else @column_no += tok.length @appearance_column_no += tok.gsub(/\t/, " " * @tab_width).length end forget_memo_of__location end end # == DESCRIPTION # Object represents the whole content of the source file. class SourceContent < StringContent # === DESCRIPTION # Constructs the content object of the source file. # # === PARAMETER # _src_:: Source -- Target source object. def initialize(src, tab_width) super(src.open { |io| io.read }, tab_width, src.fpath) end end class TokensContent < Content def initialize(tok_ary) @token_ary = tok_ary end def location if self.empty? nil else @token_ary.first.location end end def empty? @token_ary.empty? end def next_token if empty? nil else @token_ary.shift end end end # == DESCRIPTION # Generic lexical analysis context. class LexerContext # === DESCRIPTION # Constructs a lexical analysis context object. # # === PARAMETER # _cont_:: SourceContent | StringContent -- Target content. def initialize(cont) @content = cont end # === VALUE # SourceContent | StringContent -- The target content of this context. attr_reader :content # === DESCRIPTION # Reads the current location of the target content. # # === RETURN VALUE # Location -- Current location. def location @content.location end end # == DESCRIPTION # Base class of the lexical analyzer of the string. class StringLexer # === DESCRIPTION # Constructs a lexical analyzer of the string. # # === PARAMETER # _str_:: String -- Target string. def initialize(str) @str = str end # === DESCRIPTION # Executes the lexical analysis. # # === RETURN VALUE # TokenArray -- Scanned tokens. def execute lexer_ctxt = create_lexer_context(@str) tokenize(lexer_ctxt) rescue Error raise rescue => ex if lexer_ctxt raise InternalError.new(ex, lexer_ctxt.location) else raise InternalError.new(ex, nil) end end private # === DESCRIPTION # Creates the context object. # # Subclasses must implement this method. # # === PARAMETER # _str_:: String -- Target string object. def create_lexer_context(str) subclass_responsibility end # === DESCRIPTION # Tokenize the target content. # # Subclasses must implement this method. # # === PARAMETER # _lexer_ctxt_:: LexerContext -- Lexical analysis context. def tokenize(lexer_ctxt) subclass_responsibility end end class TokensRelexer def initialize(tok_ary) @lexer_ctxt = create_lexer_context(tok_ary) end def next_token tokenize(@lexer_ctxt) rescue Error raise rescue => ex raise InternalError.new(ex, @lexer_ctxt.location) end private def create_lexer_context(tok_ary) subclass_responsibility end def tokenize(lexer_ctxt) subclass_responsibility end end end adlint-3.2.14/lib/adlint/annot.rb0000644000004100000410000000730312340630463016575 0ustar www-datawww-data# Source code annotations. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/supp" module AdLint #:nodoc: class Annotation def self.parse(str, loc) FileWiseMessageSuppressionSpecifier.parse(str, loc) || LineWiseMessageSuppressionSpecifier.parse(str, loc) end def initialize(loc) @location = loc end def message_suppression_specifier? subclass_responsibility end end class MessageSuppressionSpecifier < Annotation def initialize(loc, msg_id_ary) super(loc) @message_ids = msg_id_ary.to_set end def message_suppression_specifier? true end def file_wise? subclass_responsibility end def line_wise? subclass_responsibility end def create_suppressor subclass_responsibility end private def parse_message_specifiers(trailer) msg_specs = [] scanner = StringScanner.new(trailer) loop do case when scanned = scanner.scan(/:[a-z][a-z_0-9]*:\[.*?\]/m) *, pkg_name, msg_names = scanned.split(":") msg_specs.concat(parse_message_name_list(msg_names).map { |msg_name| MessageId.new(pkg_name, msg_name) }) when scanned = scanner.scan(/:\[.*?\]/m) *, msg_names = scanned.split(":") msg_specs.concat(parse_message_name_list(msg_names).map { |msg_name| MessageId.new(nil, msg_name) }) else break end end msg_specs end def parse_message_name_list(msg_names) msg_names.slice(/\[(.*)\]/m, 1).split(",").map do |msg_name_str| msg_name_str.strip.to_sym end end end class FileWiseMessageSuppressionSpecifier < MessageSuppressionSpecifier def self.parse(str, loc) str =~ /ADLINT:SF(:.*)\z/m ? new(loc, $1) : nil end def initialize(loc, trailer) super(loc, parse_message_specifiers(trailer)) end def file_wise? true end def line_wise? false end def create_suppressor FileWiseMessageSuppressor.new(@message_ids, @location) end end class LineWiseMessageSuppressionSpecifier < MessageSuppressionSpecifier def self.parse(str, loc) str =~ /ADLINT:SL(:.*)\z/m ? new(loc, $1) : nil end def initialize(loc, trailer) super(loc, parse_message_specifiers(trailer)) end def file_wise? false end def line_wise? true end def create_suppressor LineWiseMessageSuppressor.new(@message_ids, @location) end end end adlint-3.2.14/lib/adlint/cpp/0000755000004100000410000000000012340630463015710 5ustar www-datawww-dataadlint-3.2.14/lib/adlint/cpp/source.rb0000644000004100000410000001125012340630463017534 0ustar www-datawww-data# Preprocessed pure C language source. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/util" require "adlint/cpp/asm" require "adlint/cpp/subst" module AdLint #:nodoc: module Cpp #:nodoc: class PreprocessedSource include InlineAssemblyDefinition def initialize(root_fpath) @root_fpath = root_fpath @tokens = [] end extend Pluggable def_plugin :on_language_extension def_plugin :on_inline_assembly attr_reader :root_fpath def add_token(tok) @tokens.push(tok) end def pp_tokens @tokens.select { |tok| tok.type == :PP_TOKEN } end def substitute_code_blocks(traits) traits.of_compiler.extension_substitutions.each do |ptn, repl| @tokens = create_extension_substitution(ptn, repl).execute(@tokens) end traits.of_compiler.arbitrary_substitutions.each do |ptn, repl| @tokens = create_arbitrary_substitution(ptn, repl).execute(@tokens) end create_inline_assembly_substitutions(self).each do |sub| @tokens = sub.execute(@tokens) end self end def to_s @lst_fpath = nil @lst_line_no = 0 @lst_column_no = 1 @lst_token = nil @io = StringIO.new @io.set_encoding(Encoding.default_external) @tokens.each { |tok| print(tok) } @io.string end private def create_extension_substitution(ptn, repl) CodeSubstitution.new(ptn, repl).tap do |sub| sub.on_substitution += lambda { |matched_toks| on_language_extension.invoke(matched_toks) } end end def create_arbitrary_substitution(ptn, repl) CodeSubstitution.new(ptn, repl) end def print(tok) return if @lst_column_no == 1 && tok.type == :NEW_LINE if tok.location.fpath == @lst_fpath if @lst_line_no < tok.location.line_no if (vsp = tok.location.line_no - @lst_line_no) > 3 insert_line_marker(tok) else vsp.times { @io.puts } end end if (hsp = tok.location.appearance_column_no - @lst_column_no) > 0 @io.print(" " * hsp) elsif need_hspace?(tok) @io.print(" ") end if tok.type == :NEW_LINE @io.puts @lst_line_no = tok.location.line_no + 1 @lst_column_no = 1 else @io.print(tok.value.to_default_external) @lst_line_no = tok.location.line_no @lst_column_no = tok.location.appearance_column_no + tok.value.length end else insert_line_marker(tok) print(tok) end @lst_token = tok end def need_hspace?(tok) return false unless @lst_token if keyword_or_identifier?(@lst_token.value) !start_with_punctuator?(tok.value) else !(end_with_punctuator?(@lst_token.value) || start_with_punctuator?(tok.value)) end end def start_with_punctuator?(str) str !~ /\A[a-z_0-9]/i end def end_with_punctuator?(str) str !~ /[a-z_0-9]\z/i end def keyword_or_identifier?(str) str =~ /\A[a-z_][a-z_0-9]*\z/i end def insert_line_marker(tok) if @lst_column_no > 1 @io.puts end line_marker = "# #{tok.location.line_no.to_s.to_default_external} " + "\"#{tok.location.fpath.to_s.to_default_external}\"" @io.puts(line_marker.to_default_external) @lst_fpath = tok.location.fpath @lst_line_no = tok.location.line_no @lst_column_no = 1 end end end end adlint-3.2.14/lib/adlint/cpp/macro.rb0000644000004100000410000006060712340630463017347 0ustar www-datawww-data# C preprocessor macros. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/token" require "adlint/report" require "adlint/util" require "adlint/cpp/syntax" require "adlint/cpp/lexer" module AdLint #:nodoc: module Cpp #:nodoc: class Macro include LocationHolder def initialize(define_line) @define_line = define_line end attr_reader :define_line def name @define_line.identifier end def replacement_list @define_line.replacement_list end def location @define_line.location end def expand(toks, macro_tbl, repl_ctxt) @define_line.mark_as_referred_by(toks.first) end def function_like? subclass_responsibility end end class ObjectLikeMacro < Macro def replaceable_size(toks) if toks.first.value == "NULL" then 0 else name.value == toks.first.value ? 1 : 0 end end def expand(toks, macro_tbl, repl_ctxt) super if repl_list = self.replacement_list loc = toks.first.location rslt_toks = repl_list.tokens.map { |tok| ReplacedToken.new(tok.type, tok.value, loc, tok.type_hint, false) } else rslt_toks = [] end macro_tbl.notify_object_like_macro_replacement(self, toks, rslt_toks) rslt_toks end def function_like?; false end end class FunctionLikeMacro < Macro def initialize(define_line) super if params = define_line.identifier_list @parameter_names = params.identifiers.map { |tok| tok.value } else @parameter_names = [] end end attr_reader :parameter_names def replaceable_size(toks) if name.value == toks.first.value args, idx = parse_arguments(toks, 1) case when args && @parameter_names.empty? return idx + 1 when args && @parameter_names.size >= args.size return idx + 1 end end 0 end def expand(toks, macro_tbl, repl_ctxt) super args, * = parse_arguments(toks, 1) args = [] if @parameter_names.empty? args_hash = @parameter_names.zip(args).each_with_object({}) { |(param, arg), hash| hash[param] = arg } rslt_toks = expand_replacement_list(args_hash, toks.first.location, macro_tbl, repl_ctxt) macro_tbl.notify_function_like_macro_replacement(self, toks, args, rslt_toks) rslt_toks end def function_like?; true end private def parse_arguments(toks, idx) while tok = toks[idx] case when tok.type == :NEW_LINE idx += 1 when tok.value == "(" idx += 1 break else return nil, idx end end return nil, idx unless tok args = [] loop do arg, idx, lst = parse_one_argument(toks, idx) args.push(arg) break if lst end return args, idx end def parse_one_argument(toks, idx) arg = [] paren_depth = 0 while tok = toks[idx] case tok.value when "(" arg.push(tok) paren_depth += 1 when ")" paren_depth -= 1 if paren_depth >= 0 arg.push(tok) else return arg, idx, true end when "," if paren_depth > 0 arg.push(tok) else return arg, idx + 1, false end when "\n" ; else arg.push(tok) end idx += 1 end return arg, idx, true # NOTREACHED end def expand_replacement_list(args, loc, macro_tbl, repl_ctxt) unless repl_list = self.replacement_list return [] end rslt_toks = [] idx = 0 while cur_tok = repl_list.tokens[idx] nxt_tok = repl_list.tokens[idx + 1] case when arg = args[cur_tok.value] substitute_argument(cur_tok, nxt_tok, arg, loc, rslt_toks, macro_tbl, repl_ctxt) when cur_tok.value == "#" if nxt_tok tok = stringize_argument(args[nxt_tok.value], loc, macro_tbl) rslt_toks.push(tok) idx += 1 end when cur_tok.value == "##" && nxt_tok.value == "#" if nxt_nxt_tok = repl_list.tokens[idx + 2] tok = stringize_argument(args[nxt_nxt_tok.value], loc, macro_tbl) concat_with_last_token([tok], loc, rslt_toks, macro_tbl) idx += 2 end when cur_tok.value == "##" if nxt_tok and arg = args[nxt_tok.value] concat_with_last_token(arg, loc, rslt_toks, macro_tbl) else concat_with_last_token([nxt_tok], loc, rslt_toks, macro_tbl) end idx += 1 else rslt_toks.push(ReplacedToken.new(cur_tok.type, cur_tok.value, loc, cur_tok.type_hint, false)) end idx += 1 end rslt_toks end def substitute_argument(param_tok, nxt_tok, arg, loc, rslt_toks, macro_tbl, repl_ctxt) # NOTE: The ISO C99 standard says; # # 6.10.3.1 Argument substitution # # 1 After the arguments for the invocation of a function-like macro have # been identified, argument substitution take place. A parameter in # the replacement list, unless proceeded by a # or ## preprocessing # token or followed by a ## preprocessing token, is replaced by the # corresponding argument after all macros contained therein have been # expanded. Before being substituted, each argument's preprocessing # tokens are completely macro replaced as if they formed the rest of # the preprocessing file; no other preprocessing tokens are available. if nxt_tok && nxt_tok.value == "##" rslt_toks.concat(arg.map { |tok| ReplacedToken.new(tok.type, tok.value, loc, tok.type_hint, false) }) else macro_tbl.replace(arg, repl_ctxt) rslt_toks.concat(arg.map { |tok| ReplacedToken.new(tok.type, tok.value, loc, tok.type_hint, true) }) end end def stringize_argument(arg, expansion_loc, macro_tbl) # NOTE: The ISO C99 standard says; # # 6.10.3.2 The # operator # # Constraints # # 1 Each # preprocessing token in the replacement list for a # function-like macro shall be followed by a parameter as the next # preprocessing token in the replacement list. # # Semantics # # 2 If, in the replacement list, a parameter is immediately proceeded by # a # preprocessing token, both are replaced by a single character # string literal preprocessing token that contains the spelling of the # preprocessing token sequence for the corresponding argument. Each # occurrence of white space between the argument's preprocessing tokens # becomes a single space character in the character string literal. # White space before the first preprocessing token and after the last # preprocessing token composing the argument is deleted. Otherwise, # the original spelling of each preprocessing token in the argument is # retained in the character string literal, except for special handling # for producing the spelling of string literals and character # constants: a \ character is inserted before each " and \ character of # a character constant or string literal (including the delimiting " # characters), except that it is implementation-defined whether a \ # character is inserted before the \ character beginning of universal # character name. If the replacement that results is not a valid # character string literal, the behavior is undefined. The character # string literal corresponding to an empty argument is "". The order # of evaluation of # and ## operators is unspecified. # # NOTE: This code does not concern about contents of the string literal. # But, it is enough for analysis. str = arg.map { |tok| tok.value }.join if str =~ /((:?\\*))\\\z/ && $1.length.even? str.chop! macro_tbl.notify_last_backslash_ignored(arg.last) end ReplacedToken.new(:PP_TOKEN, "\"#{str.gsub(/["\\]/) { "\\" + $& }}\"", expansion_loc, :STRING_LITERAL, false) end def concat_with_last_token(arg_toks, expansion_loc, rslt_toks, macro_tbl) # NOTE: The ISO C99 standard says; # # 6.10.3.3 The ## operator # # Constraints # # 1 A ## preprocessing token shall not occur at the beginning or at the # end of a replacement list for either form of macro definition. # # Semantics # # 2 If, in the replacement list of a function-form macro, a parameter is # immediately preceded or followed by a ## preprocessing token, the # parameter is replaced by the corresponding argument's preprocessing # token sequence; however, if an argument consists of no preprocessing # tokens, the parameter is replaced by a placemarker preprocessing # token instead. # # 3 For both object-like and function-like macro invocations, before the # replacement list is reexamined for more macro names to replace, each # instance of a ## preprocessing token in the replacement list (not # from an argument) is deleted and the preceding preprocessing token is # concatenated with the following preprocessing token. Placemarker # preprocessing tokens are handled specially: concatenation of two # placemarkers results in a single placemarker preprocessing token, and # concatenation of a placemarker with a non-placemarker preprocessing # token results in the non-placemarker preprocessing token. If the # result is not a valid preprocessing token, the behavior is undefined. # The resulting token is available for further macro replacement. The # order of evaluation of ## operators is unspecified. if lhs = rslt_toks.pop unless arg_toks.empty? # NOTE: To avoid syntax error when the concatenated token can be # retokenize to two or more tokens. unlexed_arg = unlex_tokens(arg_toks) new_toks = StringToPPTokensLexer.new(lhs.value + unlexed_arg).execute new_toks.map! do |tok| ReplacedToken.new(tok.type, tok.value, expansion_loc, tok.type_hint, false) end rslt_toks.concat(new_toks) macro_tbl.notify_sharpsharp_operator_evaled( lhs, Token.new(:MACRO_ARG, unlexed_arg, arg_toks.first.location), new_toks) else new_toks = [ReplacedToken.new(lhs.type, lhs.value, expansion_loc, lhs.type_hint, false)] rslt_toks.concat(new_toks) end end end def unlex_tokens(arg_toks) # NOTE: To regenerate source string from pp_tokens in preparation for # the argument substitution. # 6.10.3 Macro replacement # # Semantics # # 11 The sequence of preprocessing tokens bounded by the outside-most # matching parentheses forms the list of arguments for the # function-like macro. The individual arguments within the list are # separated by comma preprocessing tokens, but comma preprocessing # tokens between matching inner parentheses do not separate arguments. # If there are sequences of preprocessing tokens within the list of # arguments that would otherwise act as preprocessing directives, the # behavior is undefined. arg_toks.each_cons(2).reduce(arg_toks.first.value) do |str, (lhs, rhs)| lhs_loc, rhs_loc = lhs.location, rhs.location if lhs_loc.line_no == rhs_loc.line_no tok_gap = rhs_loc.column_no - lhs_loc.column_no - lhs.value.length str + " " * [tok_gap, 0].max + rhs.value else "#{str} #{rhs.value}" end end end end class VaFunctionLikeMacro < FunctionLikeMacro def replaceable_size(toks) if name.value == toks.first.value args, idx = parse_arguments(toks, 1) args ? idx + 1 : 0 else 0 end end def expand(toks, macro_tbl, repl_ctxt) super all_args, * = parse_arguments(toks, 1) args = all_args.shift(@parameter_names.size) rest_args = all_args args_hash = @parameter_names.zip(args).each_with_object({}) { |(param, arg), hash| hash[param] = arg } va_args = args_hash["__VA_ARGS__"] = [] unless rest_args.empty? va_args.concat(rest_args.shift) rest_args.each do |arg| va_args.push(ReplacedToken.new(:PP_TOKEN, ",", Location.new)) va_args.concat(arg) end end rslt_toks = expand_replacement_list(args_hash, toks.first.location, macro_tbl, repl_ctxt) macro_tbl.notify_function_like_macro_replacement(self, toks, args, rslt_toks) rslt_toks end end class SpecialMacro < ObjectLikeMacro def initialize(name_str) super(PseudoObjectLikeDefineLine.new(name_str)) @replacement_list = nil end attr_reader :replacement_list def expand(toks, macro_tbl, repl_ctxt) @replacement_list = generate_replacement_list(toks.first) super end private def generate_replacement_list(tok) subclass_responsibility end end class DateMacro < SpecialMacro def initialize super("__DATE__") end private def generate_replacement_list(tok) date = Time.now.strftime("%h %d %Y") PPTokens.new.push(Token.new(:PP_TOKEN, "\"#{date}\"", tok.location, :STRING_LITERAL)) end end class FileMacro < SpecialMacro def initialize super("__FILE__") end private def generate_replacement_list(tok) PPTokens.new.push( Token.new(:PP_TOKEN, "\"#{tok.location.fpath}\"", tok.location, :STRING_LITERAL)) end end class LineMacro < SpecialMacro def initialize super("__LINE__") end private def generate_replacement_list(tok) PPTokens.new.push( Token.new(:PP_TOKEN, "#{tok.location.line_no}", tok.location, :STRING_LITERAL)) end end class StdcMacro < SpecialMacro def initialize super("__STDC__") end private def generate_replacement_list(tok) PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT)) end end class StdcHostedMacro < SpecialMacro def initialize super("__STDC_HOSTED__") end private def generate_replacement_list(tok) PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT)) end end class StdcMbMightNeqWcMacro < SpecialMacro def initialize super("__STDC_MB_MIGHT_NEQ_WC__") end private def generate_replacement_list(tok) PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT)) end end class StdcVersionMacro < SpecialMacro def initialize super("__STDC_VERSION__") end private def generate_replacement_list(tok) PPTokens.new.push(Token.new(:PP_TOKEN, "199901L", tok.location, :CONSTANT)) end end class TimeMacro < SpecialMacro def initialize super("__TIME__") end private def generate_replacement_list(tok) time = Time.now.strftime("%H:%M:%S") PPTokens.new.push(Token.new(:PP_TOKEN, "\"#{time}\"", tok.location, :STRING_LITERAL)) end end class StdcIec559Macro < SpecialMacro def initialize super("__STDC_IEC_559__") end private def generate_replacement_list(tok) PPTokens.new.push(Token.new(:PP_TOKEN, "0", tok.location, :CONSTANT)) end end class StdcIec559ComplexMacro < SpecialMacro def initialize super("__STDC_IEC_559_COMPLEX__") end private def generate_replacement_list(tok) PPTokens.new.push(Token.new(:PP_TOKEN, "0", tok.location, :CONSTANT)) end end class StdcIso10646Macro < SpecialMacro def initialize super("__STDC_ISO_10646__") end private def generate_replacement_list(tok) PPTokens.new.push(Token.new(:PP_TOKEN, "199712L", tok.location, :CONSTANT)) end end class PragmaOperator < FunctionLikeMacro def initialize super(PseudoFunctionLikeDefineLine.new("_Pragma", ["str"])) end def expand(toks, macro_tbl, repl_ctxt) # TODO: Should implement pragma handling feature. [] end end class LintSpecificMacro1 < SpecialMacro def initialize super("__LINT__") end private def generate_replacement_list(tok) PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT)) end end class LintSpecificMacro2 < SpecialMacro def initialize super("lint") end private def generate_replacement_list(tok) PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT)) end end class LintSpecificMacro3 < SpecialMacro def initialize super("__lint") end private def generate_replacement_list(tok) PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT)) end end class LintSpecificMacro4 < SpecialMacro def initialize super("__lint__") end private def generate_replacement_list(tok) PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT)) end end class AdLintSpecificMacro1 < SpecialMacro def initialize super("__ADLINT__") end private def generate_replacement_list(tok) PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT)) end end class AdLintSpecificMacro2 < SpecialMacro def initialize super("adlint") end private def generate_replacement_list(tok) PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT)) end end class AdLintSpecificMacro3 < SpecialMacro def initialize super("__adlint") end private def generate_replacement_list(tok) PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT)) end end class AdLintSpecificMacro4 < SpecialMacro def initialize super("__adlint__") end private def generate_replacement_list(tok) PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT)) end end class MacroReplacementContext def initialize @hide_sets = Hash.new { |hash, key| hash[key] = Set.new } end def add_to_hide_set(orig_tok, new_toks, macro_name) new_toks.each do |new_tok| @hide_sets[new_tok].merge(@hide_sets[orig_tok]) @hide_sets[new_tok].add(macro_name) end end def hidden?(tok, macro_name) @hide_sets[tok].include?(macro_name) end end class MacroTable def initialize @macros = {} predefine_special_macros end extend Pluggable def_plugin :on_object_like_macro_replacement def_plugin :on_function_like_macro_replacement def_plugin :on_sharpsharp_operator_evaled def_plugin :on_last_backslash_ignored def define(macro) @macros[macro.name.value] = macro self end def undef(name_str) @macros.delete(name_str) self end def lookup(name_str) @macros[name_str] end def replace(toks, repl_ctxt = nil) replaced = false idx = 0 while tok = toks[idx] case tok.value when "defined" in_defined = true when "(", ")" ; else if in_defined in_defined = false else if new_idx = do_replace(toks, idx, repl_ctxt) idx = new_idx replaced = true end end end idx += 1 end replaced end def notify_object_like_macro_replacement(macro, replacing_toks, rslt_toks) on_object_like_macro_replacement.invoke(macro, replacing_toks, rslt_toks) end def notify_function_like_macro_replacement(macro, replacing_toks, args, rslt_toks) on_function_like_macro_replacement.invoke(macro, replacing_toks, args, rslt_toks) end def notify_sharpsharp_operator_evaled(lhs_tok, rhs_tok, new_toks) on_sharpsharp_operator_evaled.invoke(lhs_tok, rhs_tok, new_toks) end def notify_last_backslash_ignored(tok) on_last_backslash_ignored.invoke(tok) end private def do_replace(toks, idx, repl_ctxt) repl_ctxt ||= MacroReplacementContext.new return nil unless tok = toks[idx] and macro = lookup(tok.value) return nil if repl_ctxt.hidden?(tok, macro.name.value) size = macro.replaceable_size(toks.drop(idx)) if toks[idx, size].all? { |t| t.need_no_further_replacement? } return nil end expanded = macro.expand(toks[idx, size], self, repl_ctxt) repl_ctxt.add_to_hide_set(toks[idx], expanded, macro.name.value) # NOTE: The ISO C99 standard says; # # 6.10.3.4 Rescanning and further replacement # # 1 After all parameters in the replacement list have been substituted # and # and ## processing has take place, all placemarker preprocessing # tokens are removed. Then, the resulting preprocessing token sequence # is rescanned, along with all subsequent preprocessing tokens of the # source file, for more macro names to replace. # # 2 If the name of the macro being replaced is found during this scan of # the replacement list (not including the rest of the source file's # preprocessing tokens), it is not replaced. Furthermore, if any # nested replacements encounter the name of the macro being replaced, # it is not replaced. These nonreplaced macro name preprocessing # tokens are no longer available for further replacement even if they # are later (re)examined in contexts in which that macro name # preprocessing token whould otherwise have been replaced. while replace(expanded, repl_ctxt); end toks[idx, size] = expanded idx + expanded.size - 1 end def predefine_special_macros define(DateMacro.new) define(FileMacro.new) define(LineMacro.new) define(StdcMacro.new) define(StdcHostedMacro.new) define(StdcMbMightNeqWcMacro.new) define(StdcVersionMacro.new) define(TimeMacro.new) define(StdcIec559Macro.new) define(StdcIec559ComplexMacro.new) define(StdcIso10646Macro.new) define(PragmaOperator.new) define(LintSpecificMacro1.new) define(LintSpecificMacro2.new) define(LintSpecificMacro3.new) define(LintSpecificMacro4.new) define(AdLintSpecificMacro1.new) define(AdLintSpecificMacro2.new) define(AdLintSpecificMacro3.new) define(AdLintSpecificMacro4.new) end end end end adlint-3.2.14/lib/adlint/cpp/asm.rb0000644000004100000410000000452312340630463017021 0ustar www-datawww-data# Inline assembly notations. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/cpp/subst" module AdLint #:nodoc: module Cpp #:nodoc: module InlineAssemblyDefinition def create_inline_assembly_substitutions(src) [create_cxx_asm_definition(src)] + create_extended_asm_definitions(src) end def create_cxx_asm_definition(src) CodeSubstitution.new("asm(__adlint__any);", "").tap do |sub| sub.on_substitution += lambda { |matched_toks| src.on_inline_assembly.invoke(matched_toks) } end end def create_extended_asm_definitions(src) [ "__asm(__adlint__any);", "asm { __adlint__any }", "__asm { __adlint__any }", "__asm__(__adlint__any);", "__asm__ volatile (__adlint__any);", "__asm__ __volatile__ (__adlint__any);", "asm(__adlint__any);", "asm volatile (__adlint__any);", "asm __volatile__ (__adlint__any);" ].map do |ptn| CodeSubstitution.new(ptn, "").tap { |sub| sub.on_substitution += lambda { |matched_toks| src.on_inline_assembly.invoke(matched_toks) } } end end end end end adlint-3.2.14/lib/adlint/cpp/lexer.rb0000644000004100000410000006022312340630463017357 0ustar www-datawww-data# Lexical analyzer which tokenizes C language source into pp-tokens. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/lexer" require "adlint/report" require "adlint/util" module AdLint #:nodoc: module Cpp #:nodoc: class Lexer def initialize(src, traits) src.on_cr_at_eol_found += lambda { |loc| on_cr_at_eol_found.invoke(loc) } src.on_eof_mark_at_eof_found += lambda { |loc| on_eof_mark_at_eof_found.invoke(loc) } src.on_eof_newline_not_found += method(:notify_eof_newline_not_found) tab_width = traits.of_project.coding_style.tab_width @content = SourceContent.lazy_new(src, tab_width) @state = Initial.new(self) @top_token = nil end attr_reader :content extend Pluggable def_plugin :on_block_comment_found def_plugin :on_line_comment_found def_plugin :on_nested_block_comment_found def_plugin :on_unterminated_block_comment def_plugin :on_eof_newline_not_found def_plugin :on_unlexable_char_found def_plugin :on_cr_at_eol_found def_plugin :on_eof_mark_at_eof_found def_plugin :on_illformed_newline_escape_found def next_token if @top_token tok = @top_token @top_token = nil return tok end @state.next_token end def top_token @top_token ? @top_token : (@top_token = self.next_token) end def skip_group group_depth = 1 until @content.empty? scan_until_next_directive_or_comment(@content) case when @content.check(/\/\*|\/\//) discard_heading_comments when @content.check(/[ \t]*#[ \t]*(?:if|ifdef|ifndef|asm)\b/) group_depth += 1 @content.scan(/.*?\n/) when @content.check(/[ \t]*#[ \t]*(?:else|elif)\b/) return true if group_depth == 1 @content.scan(/.*?\n/) when @content.check(/[ \t]*#[ \t]*(?:endif|endasm)\b/) group_depth -= 1 return true if group_depth == 0 @content.scan(/.*?\n/) end end false end def discard_heading_comments case when @content.check(/\/\*/) loc = @content.location comment = scan_block_comment(@content) unless comment.empty? notify_block_comment_found(comment, loc) return true end when @content.check(/\/\//) loc = @content.location comment = scan_line_comment(@content) unless comment.empty? notify_line_comment_found(comment, loc) return true end end false end def transit(next_state) @state = next_state end def notify_block_comment_found(comment, loc) on_block_comment_found.invoke(comment, loc) end def notify_line_comment_found(comment, loc) on_line_comment_found.invoke(comment, loc) end def notify_nested_block_comment_found(loc) on_nested_block_comment_found.invoke(loc) end def notify_unterminated_block_comment(loc) on_unterminated_block_comment.invoke(loc) end def notify_eof_newline_not_found(loc) on_eof_newline_not_found.invoke(loc) end def notify_unlexable_char_found(char, loc) on_unlexable_char_found.invoke(char, loc) end def notify_illformed_newline_escape_found(loc) on_illformed_newline_escape_found.invoke(loc) end private GROUP_DIRECTIVE_RE = /^[ \t]*#[ \t]*(?:if|ifdef|ifndef|asm|else|elif|endif|endasm)\b/ private_constant :GROUP_DIRECTIVE_RE def scan_until_next_directive_or_comment(cont) until cont.empty? cont.scan(/.*?(?=#{GROUP_DIRECTIVE_RE}|"|'|\/\*|\/\/)/m) case when cont.check(/"/) Language::C::scan_string_literal(cont) when cont.check(/'/) Language::C::scan_char_constant(cont) else break end end end def scan_block_comment(cont) comment = "" nest_depth = 0 until cont.empty? loc = cont.location case when nest_depth == 0 && cont.scan(/\/\*/) nest_depth = 1 comment += "/*" when nest_depth > 0 && cont.check(/\/\*\//) comment += cont.scan(/\//) when nest_depth > 0 && cont.check(/\/\*/) nest_depth += 1 comment += cont.scan(/\/\*/) notify_nested_block_comment_found(loc) when cont.scan(/\*\//) comment += "*/" break when nest_depth == 0 return nil else if scanned = cont.scan(/.*?(?=\/\*|\*\/)/m) comment += scanned else notify_unterminated_block_comment(loc) end end end comment end def scan_line_comment(cont) cont.scan(/\/\/.*?(?=\n)/) end end class LexerState def initialize(lexer) @lexer = lexer end def next_token subclass_responsibility end private def discard_heading_comments @lexer.discard_heading_comments end def scan_escaped_newline(cont) loc = cont.location case when escaped_nl = cont.scan(/\\\n/) escaped_nl when escaped_nl = cont.scan(/\\[ \t]+\n/) @lexer.notify_illformed_newline_escape_found(loc) escaped_nl else nil end end def tokenize_pp_token(cont) loc = cont.location case when val = Language::C.scan_keyword(cont), val = Language::Cpp.scan_keyword(cont) Token.new(:PP_TOKEN, val, loc, Language::C::KEYWORDS[val]) when val = Language::C.scan_char_constant(cont), val = Language::C.scan_floating_constant(cont), val = Language::C.scan_integer_constant(cont) Token.new(:PP_TOKEN, val, loc, :CONSTANT) when val = Language::C.scan_string_literal(cont) Token.new(:PP_TOKEN, val, loc, :STRING_LITERAL) when val = Language::C.scan_null_constant(cont) Token.new(:PP_TOKEN, val, loc, :NULL) when val = Language::C.scan_identifier(cont) Token.new(:PP_TOKEN, val, loc, :IDENTIFIER) when val = Language::Cpp.scan_punctuator(cont) Token.new(:PP_TOKEN, val, loc, val) else nil end end def tokenize_new_line(cont) loc = cont.location if val = cont.scan(/\n/) return Token.new(:NEW_LINE, val, loc) end nil end def tokenize_header_name(cont) loc = cont.location if val = Language::Cpp.scan_system_header_name(cont) return Token.new(:SYS_HEADER_NAME, val, loc) elsif val = Language::Cpp.scan_user_header_name(cont) return Token.new(:USR_HEADER_NAME, val, loc) end nil end def tokenize_identifier(cont) loc = cont.location if val = Language::C.scan_identifier(cont) return Token.new(:IDENTIFIER, val, loc) end nil end def tokenize_punctuator(cont) loc = cont.location if punctuator = Language::Cpp.scan_punctuator(cont) return Token.new(punctuator, punctuator, loc) end nil end def tokenize_extra_token(cont) # NOTE: #tokenize_pp_token can tokenize almost all types of tokens. if tok = tokenize_pp_token(cont) Token.new(:EXTRA_TOKEN, tok.value, tok.location) else nil end end end class Initial < LexerState def next_token # NOTE: An escaped newline may appear at the line above a preprocessing # directive line. loop do unless discard_heading_comments || scan_escaped_newline(@lexer.content) break end end case when @lexer.content.check(/[ \t]*#/) case when tok = tokenize_if_directive(@lexer.content) @lexer.transit(InIfDirective.new(@lexer)) when tok = tokenize_ifdef_directive(@lexer.content) @lexer.transit(InIfdefDirective.new(@lexer)) when tok = tokenize_ifndef_directive(@lexer.content) @lexer.transit(InIfndefDirective.new(@lexer)) when tok = tokenize_elif_directive(@lexer.content) @lexer.transit(InElifDirective.new(@lexer)) when tok = tokenize_else_directive(@lexer.content) @lexer.transit(InElseDirective.new(@lexer)) when tok = tokenize_endif_directive(@lexer.content) @lexer.transit(InEndifDirective.new(@lexer)) when tok = tokenize_include_directive(@lexer.content) @lexer.transit(InIncludeDirective.new(@lexer)) when tok = tokenize_include_next_directive(@lexer.content) @lexer.transit(InIncludeNextDirective.new(@lexer)) when tok = tokenize_define_directive(@lexer.content) @lexer.transit(InDefineDirective.new(@lexer)) when tok = tokenize_undef_directive(@lexer.content) @lexer.transit(InUndefDirective.new(@lexer)) when tok = tokenize_line_directive(@lexer.content) @lexer.transit(InLineDirective.new(@lexer)) when tok = tokenize_error_directive(@lexer.content) @lexer.transit(InErrorDirective.new(@lexer)) when tok = tokenize_pragma_directive(@lexer.content) @lexer.transit(InPragmaDirective.new(@lexer)) when tok = tokenize_asm_directive(@lexer.content) @lexer.transit(InAsmDirective.new(@lexer)) when tok = tokenize_endasm_directive(@lexer.content) @lexer.transit(InEndasmDirective.new(@lexer)) else tok = tokenize_null_directive(@lexer.content) || tokenize_unknown_directive(@lexer.content) end else tok = tokenize_text_line(@lexer.content) end tok end private def tokenize_if_directive(cont) loc = cont.location if val = cont.scan(/[ \t]*#[ \t]*if\b/) return Token.new(:IF, val, loc) end nil end def tokenize_ifdef_directive(cont) loc = cont.location if val = cont.scan(/[ \t]*#[ \t]*ifdef\b/) return Token.new(:IFDEF, val, loc) end nil end def tokenize_ifndef_directive(cont) loc = cont.location if val = cont.scan(/[ \t]*#[ \t]*ifndef\b/) return Token.new(:IFNDEF, val, loc) end nil end def tokenize_elif_directive(cont) loc = cont.location if val = cont.scan(/[ \t]*#[ \t]*elif\b/) return Token.new(:ELIF, val, loc) end nil end def tokenize_else_directive(cont) loc = cont.location if val = cont.scan(/[ \t]*#[ \t]*else\b/) return Token.new(:ELSE, val, loc) end nil end def tokenize_endif_directive(cont) loc = cont.location if val = cont.scan(/[ \t]*#[ \t]*endif\b/) return Token.new(:ENDIF, val, loc) end nil end def tokenize_include_directive(cont) loc = cont.location if val = cont.scan(/[ \t]*#[ \t]*include\b/) return Token.new(:INCLUDE, val, loc) end nil end def tokenize_include_next_directive(cont) # NOTE: #include_next directive is a GCC extension. loc = cont.location if val = cont.scan(/[ \t]*#[ \t]*include_next\b/) return Token.new(:INCLUDE_NEXT, val, loc) end nil end def tokenize_define_directive(cont) loc = cont.location if val = cont.scan(/[ \t]*#[ \t]*define\b/) return Token.new(:DEFINE, val, loc) end nil end def tokenize_undef_directive(cont) loc = cont.location if val = cont.scan(/[ \t]*#[ \t]*undef\b/) return Token.new(:UNDEF, val, loc) end nil end def tokenize_line_directive(cont) loc = cont.location if val = cont.scan(/[ \t]*#[ \t]*line\b/) return Token.new(:LINE, val, loc) end nil end def tokenize_error_directive(cont) loc = cont.location if val = cont.scan(/[ \t]*#[ \t]*error\b/) return Token.new(:ERROR, val, loc) end nil end def tokenize_pragma_directive(cont) loc = cont.location if val = cont.scan(/[ \t]*#[ \t]*pragma\b/) return Token.new(:PRAGMA, val, loc) end nil end def tokenize_asm_directive(cont) loc = cont.location if val = cont.scan(/[ \t]*#[ \t]*asm\b/) return Token.new(:ASM, val, loc) end nil end def tokenize_endasm_directive(cont) loc = cont.location if val = cont.scan(/[ \t]*#[ \t]*endasm\b/) return Token.new(:ENDASM, val, loc) end nil end def tokenize_null_directive(cont) loc = cont.location if val = cont.scan(/[ \t]*#[ \t]\n/) return Token.new(:NULL_DIRECTIVE, val, loc) end nil end def tokenize_unknown_directive(cont) loc = cont.location val = cont.scan(/[ \t]*#/) until cont.empty? next if discard_heading_comments || scan_escaped_newline(cont) case when str = cont.scan(/.+?(?=\/\*|\/\/|\\[ \t]*\n|L?"|L?'|\n)/i) val += str when str = cont.scan(/\n/) val += str break end end Token.new(:UNKNOWN_DIRECTIVE, val, loc) end def tokenize_text_line(cont) loc = cont.location val = "" until cont.empty? if tok = cont.scan(/.*?(?=\/\*|\/\/|\\[ \t]*\n|L?"|L?'|\n)/i) val += tok end if tok = cont.scan(/\n/) val += tok break end next if scan_escaped_newline(cont) case when cont.check(/\/\*/) discard_heading_comments when cont.check(/\/\//) discard_heading_comments when cont.check(/L?"/i) string_literal = Language::C.scan_string_literal(cont) val += string_literal when cont.check(/L?'/i) char_constant = Language::C.scan_char_constant(cont) val += char_constant end end val.empty? ? nil : Token.new(:TEXT_LINE, val, loc) end end class InIfDirective < LexerState def next_token until @lexer.content.empty? if discard_heading_comments || scan_escaped_newline(@lexer.content) next end tok = tokenize_pp_token(@lexer.content) || tokenize_new_line(@lexer.content) || tokenize_extra_token(@lexer.content) if tok break else @lexer.content.eat! end end unless tok tok = Token.new(:NEW_LINE, "\n", @lexer.content.location) @lexer.notify_eof_newline_not_found(tok.location) end if tok.type == :NEW_LINE @lexer.transit(Initial.new(@lexer)) end tok end end class InIfdefDirective < LexerState def next_token until @lexer.content.empty? if discard_heading_comments || scan_escaped_newline(@lexer.content) next end tok = tokenize_identifier(@lexer.content) || tokenize_new_line(@lexer.content) || tokenize_extra_token(@lexer.content) if tok break else @lexer.content.eat! end end unless tok tok = Token.new(:NEW_LINE, "\n", @lexer.content.location) @lexer.notify_eof_newline_not_found(tok.location) end if tok.type == :NEW_LINE @lexer.transit(Initial.new(@lexer)) end tok end end class InIfndefDirective < InIfdefDirective; end class InElifDirective < InIfDirective; end class InElseDirective < LexerState def next_token until @lexer.content.empty? if discard_heading_comments || scan_escaped_newline(@lexer.content) next end tok = tokenize_new_line(@lexer.content) || tokenize_extra_token(@lexer.content) if tok break else @lexer.content.eat! end end unless tok tok = Token.new(:NEW_LINE, "\n", @lexer.content.location) @lexer.notify_eof_newline_not_found(tok.location) end if tok.type == :NEW_LINE @lexer.transit(Initial.new(@lexer)) end tok end end class InEndifDirective < InElseDirective; end class InIncludeDirective < LexerState def next_token until @lexer.content.empty? if discard_heading_comments || scan_escaped_newline(@lexer.content) next end tok = tokenize_header_name(@lexer.content) || tokenize_pp_token(@lexer.content) || tokenize_new_line(@lexer.content) || tokenize_extra_token(@lexer.content) if tok break else @lexer.content.eat! end end unless tok tok = Token.new(:NEW_LINE, "\n", @lexer.content.location) @lexer.notify_eof_newline_not_found(tok.location) end if tok.type == :NEW_LINE @lexer.transit(Initial.new(@lexer)) end tok end end class InIncludeNextDirective < InIncludeDirective; end class InDefineDirective < LexerState def initialize(lexer) super @tokens = [] end def next_token if @tokens.empty? tokenize_macro_name(@lexer.content) tokenize_pp_tokens(@lexer.content) end tok = @tokens.shift @lexer.transit(Initial.new(@lexer)) if @tokens.empty? tok end private def tokenize_macro_name(cont) until cont.empty? next if discard_heading_comments || scan_escaped_newline(cont) if tok = tokenize_identifier(cont) @tokens.push(tok) break else cont.eat! end end return unless cont.check(/\(/) paren_depth = 0 until cont.empty? next if discard_heading_comments || scan_escaped_newline(cont) if tok = tokenize_identifier(cont) @tokens.push(tok) next end if tok = tokenize_punctuator(cont) @tokens.push(tok) case tok.type when "(" paren_depth += 1 when ")" paren_depth -= 1 break if paren_depth == 0 end next end if tok = tokenize_new_line(cont) @tokens.push(tok) break end cont.eat! end end def tokenize_pp_tokens(cont) until cont.empty? next if discard_heading_comments || scan_escaped_newline(cont) tok = tokenize_pp_token(cont) || tokenize_new_line(cont) if tok @tokens.push(tok) if tok.type == :NEW_LINE break end else loc = cont.location if eaten = cont.eat! and eaten !~ /\A\s\z/ @lexer.notify_unlexable_char_found(eaten, loc) end end end unless @tokens.last && @tokens.last.type == :NEW_LINE tok = Token.new(:NEW_LINE, "\n", cont.location) @lexer.notify_eof_newline_not_found(tok.location) @tokens.push(tok) end end end class InUndefDirective < InDefineDirective; end class InLineDirective < InIfDirective; end class InErrorDirective < InLineDirective; end class InPragmaDirective < InLineDirective; end class InAsmDirective < InElseDirective; end class InEndasmDirective < InElseDirective; end class StringToPPTokensLexer < StringLexer def initialize(str, tab_width = 8) super(str) @tab_width = tab_width end private def create_lexer_context(str) lexer_ctxt = LexerContext.new(create_content(str)) class << lexer_ctxt attr_accessor :last_symbol end lexer_ctxt end def create_content(str) StringContent.new(str, @tab_width) end def tokenize(lexer_ctxt) tok_ary = TokenArray.new until lexer_ctxt.content.empty? next if tokenize_pp_token(lexer_ctxt, tok_ary) loc = lexer_ctxt.location if new_line = lexer_ctxt.content.scan(/\n/) tok_ary.push(Token.new(:NEW_LINE, new_line, loc)) break else lexer_ctxt.content.eat! end end tok_ary end def tokenize_pp_token(lexer_ctxt, tok_ary) pp_tok = tokenize_keyword(lexer_ctxt) || tokenize_constant(lexer_ctxt) || tokenize_string_literal(lexer_ctxt) || tokenize_null_constant(lexer_ctxt) || tokenize_identifier(lexer_ctxt) || tokenize_punctuator(lexer_ctxt) || tokenize_backslash(lexer_ctxt) if pp_tok tok_ary.push(pp_tok) return true end false end def tokenize_keyword(lexer_ctxt) loc = lexer_ctxt.location keyword = Language::C.scan_keyword(lexer_ctxt.content) || Language::Cpp.scan_keyword(lexer_ctxt.content) if keyword lexer_ctxt.last_symbol = :KEYWORD Token.new(:PP_TOKEN, keyword, loc, Language::C::KEYWORDS[keyword]) else nil end end def tokenize_constant(lexer_ctxt) loc = lexer_ctxt.location # NOTE: For extended bit-access operators. return nil if lexer_ctxt.last_symbol == :IDENTIFIER constant = Language::C.scan_char_constant(lexer_ctxt.content) || Language::C.scan_floating_constant(lexer_ctxt.content) || Language::C.scan_integer_constant(lexer_ctxt.content) if constant lexer_ctxt.last_symbol = :CONSTANT return Token.new(:PP_TOKEN, constant, loc, :CONSTANT) end nil end def tokenize_string_literal(lexer_ctxt) loc = lexer_ctxt.location string_literal = Language::C.scan_string_literal(lexer_ctxt.content) if string_literal lexer_ctxt.last_symbol = :STRING_LITERAL return Token.new(:PP_TOKEN, string_literal, loc, :STRING_LITERAL) end nil end def tokenize_null_constant(lexer_ctxt) loc = lexer_ctxt.location null_constant = Language::C.scan_null_constant(lexer_ctxt.content) if null_constant lexer_ctxt.last_symbol = :NULL return Token.new(:PP_TOKEN, null_constant, loc, :NULL) end nil end def tokenize_identifier(lexer_ctxt) loc = lexer_ctxt.location identifier = Language::C.scan_identifier(lexer_ctxt.content) if identifier lexer_ctxt.last_symbol = :IDENTIFIER return Token.new(:PP_TOKEN, identifier, loc, :IDENTIFIER) end nil end def tokenize_punctuator(lexer_ctxt) loc = lexer_ctxt.location punctuator = Language::Cpp.scan_punctuator(lexer_ctxt.content) if punctuator lexer_ctxt.last_symbol = :PUNCTUATOR return Token.new(:PP_TOKEN, punctuator, loc, punctuator) end nil end def tokenize_backslash(lexer_ctxt) loc = lexer_ctxt.location backslash = lexer_ctxt.content.scan(/\\/) if backslash lexer_ctxt.last_symbol = :BACKSLASH return Token.new(:PP_TOKEN, backslash, loc, backslash) end nil end end class TextLineToPPTokensLexer < StringToPPTokensLexer def initialize(text_line, tab_width) super(text_line.token.value, tab_width) @text_line = text_line end private def create_content(str) StringContent.new(str, @tab_width, *@text_line.location.to_a) end end end end adlint-3.2.14/lib/adlint/cpp/constexpr.rb0000644000004100000410000004746112340630463020276 0ustar www-datawww-data# # DO NOT MODIFY!!!! # This file is automatically generated by Racc 1.4.11 # from Racc grammer file "". # require 'racc/parser.rb' require "adlint/report" require "adlint/util" require "adlint/cpp/util" module AdLint module Cpp class ConstantExpression < Racc::Parser module_eval(<<'...end constexpr.y/module_eval...', 'constexpr.y', 311) include ReportUtil def initialize(pp_ctxt, expr_toks) @pp_ctxt = pp_ctxt @expr_toks = expr_toks @macro_tbl = pp_ctxt.macro_table @fpath = expr_toks.first.location.fpath @lst_line_no = expr_toks.last.location.line_no end extend Pluggable def_plugin :on_illformed_defined_op_found def_plugin :on_undefined_macro_referred def evaluate @tok_queue = relex(@expr_toks) if expr = do_parse expr else ErrorExpression.new(nil) end end private def relex(expr_toks) tok_queue = [] expr_toks.each do |tok| case tok.value when /\A(?:0x[0-9a-f]+|[0-9]+)[UL]*\z/i tok_queue.push(Token.new(:CONSTANT, tok.value, tok.location)) when /\A(?:[0-9]*\.[0-9]*e[+-]?[0-9]+|[0-9]+\.?e[+-]?[0-9]+)[FL]*/i tok_queue.push(Token.new(:CONSTANT, tok.value, tok.location)) when /\AL?'.*'\z/i tok_queue.push(Token.new(:CONSTANT, tok.value, tok.location)) when /\AL?".*"\z/i tok_queue.push(Token.new(:CONSTANT, tok.value, tok.location)) when "(", ")", "+", "-", "~", "!", "*", "/", "%", "<<", ">>", "<", ">", "<=", ">=", "==", "!=", "&", "^", "|", "&&", "||", "?", ":" tok_queue.push(Token.new(tok.value, tok.value, tok.location)) when "defined" tok_queue.push(Token.new(:DEFINED, tok.value, tok.location)) else tok_queue.push(Token.new(:IDENTIFIER, tok.value, tok.location)) end end tok_queue end def next_token (tok = @tok_queue.shift) ? [tok.type, tok] : nil end def on_error(err_tok_id, err_val, *) E(:E0007, loc_of(err_val), val_of(err_val)) end def loc_of(tok) tok == "$" ? Location.new(@fpath, @lst_line_no) : tok.location end def val_of(tok) tok == "$" ? "EOF" : tok.value end def notify_illformed_defined_operator(loc, no_args) on_illformed_defined_op_found.invoke(loc, no_args) end def notify_undefined_macro_referred(id) on_undefined_macro_referred.invoke(id) end extend Forwardable def_delegator :@pp_ctxt, :report private :report def_delegator :@pp_ctxt, :message_catalog private :message_catalog # vim:ft=racc:sw=2:ts=2:sts=2:et: ...end constexpr.y/module_eval... ##### State transition tables begin ### racc_action_table = [ 2, 3, 11, 4, 24, 7, 8, 9, 10, 2, 3, 11, 4, 77, 7, 8, 9, 10, 2, 3, 11, 4, 47, 7, 8, 9, 10, 2, 3, 11, 4, 48, 7, 8, 9, 10, 2, 3, 11, 4, 49, 7, 8, 9, 10, 2, 3, 11, 4, 50, 7, 8, 9, 10, 2, 3, 11, 4, 53, 7, 8, 9, 10, 2, 3, 11, 4, 54, 7, 8, 9, 10, 2, 3, 11, 4, 55, 7, 8, 9, 10, 2, 3, 11, 4, 47, 7, 8, 9, 10, 2, 3, 11, 4, 48, 7, 8, 9, 10, 2, 3, 11, 4, 49, 7, 8, 9, 10, 2, 3, 11, 4, 50, 7, 8, 9, 10, 2, 3, 11, 4, 78, 7, 8, 9, 10, 2, 3, 11, 4, 56, 7, 8, 9, 10, 2, 3, 11, 4, nil, 7, 8, 9, 10, 2, 3, 11, 4, nil, 7, 8, 9, 10, 2, 3, 11, 4, nil, 7, 8, 9, 10, 2, 3, 11, 4, nil, 7, 8, 9, 10, 2, 3, 11, 4, nil, 7, 8, 9, 10, 2, 3, 11, 4, nil, 7, 8, 9, 10, 2, 3, 11, 4, nil, 7, 8, 9, 10, 2, 3, 11, 4, nil, 7, 8, 9, 10, 2, 3, 11, 4, nil, 7, 8, 9, 10, 2, 3, 11, 4, nil, 7, 8, 9, 10, 2, 3, 11, 4, nil, 7, 8, 9, 10, 2, 3, 11, 4, nil, 7, 8, 9, 10, 33, nil, 32, nil, 31, 41, 42, 43, 44, 41, 42, 43, 44, 41, 42, 43, 44, 34, 35, 36, 34, 35, 36, 34, 35, 36, 39, 40, 39, 40, 45, 46, 39, 40, 39, 40, 37, 38, 51, 52, 45, 46, 37, 38, 39, 40, 37, 38 ] racc_action_check = [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 38, 38, 38, 38, 56, 38, 38, 38, 38, 4, 4, 4, 4, 18, 4, 4, 4, 4, 7, 7, 7, 7, 19, 7, 7, 7, 7, 8, 8, 8, 8, 20, 8, 8, 8, 8, 9, 9, 9, 9, 21, 9, 9, 9, 9, 10, 10, 10, 10, 24, 10, 10, 10, 10, 55, 55, 55, 55, 25, 55, 55, 55, 55, 52, 52, 52, 52, 26, 52, 52, 52, 52, 51, 51, 51, 51, 71, 51, 51, 51, 51, 50, 50, 50, 50, 72, 50, 50, 50, 50, 49, 49, 49, 49, 73, 49, 49, 49, 49, 48, 48, 48, 48, 74, 48, 48, 48, 48, 47, 47, 47, 47, 75, 47, 47, 47, 47, 46, 46, 46, 46, 31, 46, 46, 46, 46, 45, 45, 45, 45, nil, 45, 45, 45, 45, 44, 44, 44, 44, nil, 44, 44, 44, 44, 43, 43, 43, 43, nil, 43, 43, 43, 43, 42, 42, 42, 42, nil, 42, 42, 42, 42, 41, 41, 41, 41, nil, 41, 41, 41, 41, 40, 40, 40, 40, nil, 40, 40, 40, 40, 39, 39, 39, 39, nil, 39, 39, 39, 39, 34, 34, 34, 34, nil, 34, 34, 34, 34, 35, 35, 35, 35, nil, 35, 35, 35, 35, 36, 36, 36, 36, nil, 36, 36, 36, 36, 37, 37, 37, 37, nil, 37, 37, 37, 37, 78, 78, 78, 78, nil, 78, 78, 78, 78, 11, nil, 11, nil, 11, 16, 16, 16, 16, 69, 69, 69, 69, 68, 68, 68, 68, 13, 13, 13, 60, 60, 60, 61, 61, 61, 65, 65, 66, 66, 17, 17, 67, 67, 15, 15, 14, 14, 22, 22, 70, 70, 63, 63, 64, 64, 62, 62 ] racc_action_pointer = [ -2, 4, nil, nil, 16, nil, nil, 25, 34, 43, 52, 242, nil, 249, 272, 263, 232, 253, 0, 8, 16, 24, 255, nil, 58, 61, 47, nil, nil, nil, nil, 127, nil, nil, 196, 205, 214, 223, 7, 187, 178, 169, 160, 151, 142, 133, 124, 115, 106, 97, 88, 79, 70, nil, nil, 61, 7, nil, nil, nil, 252, 255, 282, 278, 273, 255, 257, 261, 240, 236, 263, 63, 71, 79, 87, 93, nil, nil, 232, nil ] racc_action_default = [ -46, -46, -1, -2, -46, -4, -5, -46, -46, -46, -46, -46, -13, -17, -20, -23, -28, -31, -33, -35, -37, -39, -41, -43, -46, -46, -44, -6, -7, -8, -9, -46, -11, -12, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, 80, -3, -46, -46, -14, -15, -16, -18, -19, -21, -22, -24, -25, -26, -27, -29, -30, -32, -34, -36, -38, -40, -46, -45, -10, -46, -42 ] racc_goto_table = [ 25, 27, 28, 29, 30, 64, 65, 66, 67, 60, 61, 62, 63, 68, 69, 1, 70, 71, 72, 73, 74, 79, nil, nil, nil, nil, nil, nil, 57, 58, 59, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 75, nil, nil, 76 ] racc_goto_check = [ 3, 5, 5, 5, 5, 8, 8, 8, 8, 6, 6, 7, 7, 9, 9, 1, 10, 11, 12, 13, 14, 16, nil, nil, nil, nil, nil, nil, 5, 5, 5, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 3, nil, nil, 3 ] racc_goto_pointer = [ nil, 15, nil, -4, nil, -6, -28, -28, -36, -32, -31, -31, -31, -31, -31, nil, -57 ] racc_goto_default = [ nil, 26, 5, nil, 6, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 ] racc_reduce_table = [ 0, 0, :racc_error, 1, 32, :_reduce_1, 1, 32, :_reduce_2, 3, 32, :_reduce_3, 1, 34, :_reduce_none, 1, 35, :_reduce_none, 2, 35, :_reduce_6, 2, 35, :_reduce_7, 2, 35, :_reduce_8, 2, 35, :_reduce_9, 4, 35, :_reduce_10, 2, 35, :_reduce_11, 2, 35, :_reduce_12, 1, 36, :_reduce_none, 3, 36, :_reduce_14, 3, 36, :_reduce_15, 3, 36, :_reduce_16, 1, 37, :_reduce_none, 3, 37, :_reduce_18, 3, 37, :_reduce_19, 1, 38, :_reduce_none, 3, 38, :_reduce_21, 3, 38, :_reduce_22, 1, 39, :_reduce_none, 3, 39, :_reduce_24, 3, 39, :_reduce_25, 3, 39, :_reduce_26, 3, 39, :_reduce_27, 1, 40, :_reduce_none, 3, 40, :_reduce_29, 3, 40, :_reduce_30, 1, 41, :_reduce_none, 3, 41, :_reduce_32, 1, 42, :_reduce_none, 3, 42, :_reduce_34, 1, 43, :_reduce_none, 3, 43, :_reduce_36, 1, 44, :_reduce_none, 3, 44, :_reduce_38, 1, 45, :_reduce_none, 3, 45, :_reduce_40, 1, 46, :_reduce_none, 5, 46, :_reduce_42, 1, 31, :_reduce_none, 1, 33, :_reduce_none, 3, 33, :_reduce_45 ] racc_reduce_n = 46 racc_shift_n = 80 racc_token_table = { false => 0, :error => 1, :CONSTANT => 2, :IDENTIFIER => 3, :DEFINED => 4, "(" => 5, ")" => 6, "+" => 7, "-" => 8, "~" => 9, "!" => 10, "*" => 11, "/" => 12, "%" => 13, "<<" => 14, ">>" => 15, "<" => 16, ">" => 17, "<=" => 18, ">=" => 19, "==" => 20, "!=" => 21, "&" => 22, "^" => 23, "|" => 24, "&&" => 25, "||" => 26, "?" => 27, ":" => 28, "," => 29 } racc_nt_base = 30 racc_use_result_var = true Racc_arg = [ racc_action_table, racc_action_check, racc_action_default, racc_action_pointer, racc_goto_table, racc_goto_check, racc_goto_default, racc_goto_pointer, racc_nt_base, racc_reduce_table, racc_token_table, racc_shift_n, racc_reduce_n, racc_use_result_var ] Racc_token_to_s_table = [ "$end", "error", "CONSTANT", "IDENTIFIER", "DEFINED", "\"(\"", "\")\"", "\"+\"", "\"-\"", "\"~\"", "\"!\"", "\"*\"", "\"/\"", "\"%\"", "\"<<\"", "\">>\"", "\"<\"", "\">\"", "\"<=\"", "\">=\"", "\"==\"", "\"!=\"", "\"&\"", "\"^\"", "\"|\"", "\"&&\"", "\"||\"", "\"?\"", "\":\"", "\",\"", "$start", "constant_expression", "primary_expression", "expression", "postfix_expression", "unary_expression", "multiplicative_expression", "additive_expression", "shift_expression", "relational_expression", "equality_expression", "and_expression", "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression", "logical_or_expression", "conditional_expression" ] Racc_debug_parser = false ##### State transition tables end ##### # reduce 0 omitted module_eval(<<'.,.,', 'constexpr.y', 44) def _reduce_1(val, _values, result) case val[0].value when /\A0b([01]+)[UL]*\z/i value = $1.to_i(2) when /\A(0[0-9]*)[UL]*\z/i value = $1.to_i(8) when /\A([1-9][0-9]*)[UL]*\z/i value = $1.to_i(10) when /\A0x([0-9a-f]+)[UL]*\z/i value = $1.to_i(16) when /\A([0-9]*\.[0-9]*E[+-]?[0-9]+|[0-9]+\.?E[+-]?[0-9]+)[FL]*\z/i, /\A([0-9]*\.[0-9]+|[0-9]+\.)[FL]*/i value = $1.to_f when /\AL?'(.*)'\z/i if $1.length > 1 && $1[0] == "\\" value = EscapeSequence.new($1).value else value = $1[0].ord end else value = 0 end result = ConstantSpecifier.new(value, val[0]) yyerrok result end .,., module_eval(<<'.,.,', 'constexpr.y', 70) def _reduce_2(val, _values, result) notify_undefined_macro_referred(val[0]) result = ErrorExpression.new(val[0]) yyerrok result end .,., module_eval(<<'.,.,', 'constexpr.y', 76) def _reduce_3(val, _values, result) result = GroupedExpression.new(val[1].value, val[1]) yyerrok result end .,., # reduce 4 omitted # reduce 5 omitted module_eval(<<'.,.,', 'constexpr.y', 89) def _reduce_6(val, _values, result) value = val[1].value result = UnaryArithmeticExpression.new(value, val[0], val[1]) result end .,., module_eval(<<'.,.,', 'constexpr.y', 94) def _reduce_7(val, _values, result) value = -val[1].value result = UnaryArithmeticExpression.new(value, val[0], val[1]) result end .,., module_eval(<<'.,.,', 'constexpr.y', 99) def _reduce_8(val, _values, result) value = ~val[1].value result = UnaryArithmeticExpression.new(value, val[0], val[1]) result end .,., module_eval(<<'.,.,', 'constexpr.y', 104) def _reduce_9(val, _values, result) value = val[1].value == 0 ? 1 : 0 result = UnaryArithmeticExpression.new(value, val[0], val[1]) result end .,., module_eval(<<'.,.,', 'constexpr.y', 109) def _reduce_10(val, _values, result) if macro = @macro_tbl.lookup(val[2].value) macro.define_line.mark_as_referred_by(val[2]) value = 1 else value = 0 end result = DefinedExpression.new(value, val[0], val[2]) result end .,., module_eval(<<'.,.,', 'constexpr.y', 119) def _reduce_11(val, _values, result) if macro = @macro_tbl.lookup(val[1].value) macro.define_line.mark_as_referred_by(val[1]) value = 1 else value = 0 end result = DefinedExpression.new(value, val[0], val[1]) result end .,., module_eval(<<'.,.,', 'constexpr.y', 129) def _reduce_12(val, _values, result) notify_illformed_defined_operator(loc_of(val[0]), val[1] == "$") result = ErrorExpression.new(val[1]) result end .,., # reduce 13 omitted module_eval(<<'.,.,', 'constexpr.y', 138) def _reduce_14(val, _values, result) value = val[0].value * val[2].value result = MultiplicativeExpression.new(value, val[1], val[0], val[2]) result end .,., module_eval(<<'.,.,', 'constexpr.y', 143) def _reduce_15(val, _values, result) unless val[2].value == 0 value = val[0].value / val[2].value else value = 0 end result = MultiplicativeExpression.new(value, val[1], val[0], val[2]) result end .,., module_eval(<<'.,.,', 'constexpr.y', 152) def _reduce_16(val, _values, result) unless val[2].value == 0 value = val[0].value % val[2].value else value = 0 end result = MultiplicativeExpression.new(value, val[1], val[0], val[2]) result end .,., # reduce 17 omitted module_eval(<<'.,.,', 'constexpr.y', 165) def _reduce_18(val, _values, result) value = val[0].value + val[2].value result = AdditiveExpression.new(value, val[1], val[0], val[2]) result end .,., module_eval(<<'.,.,', 'constexpr.y', 170) def _reduce_19(val, _values, result) value = val[0].value - val[2].value result = AdditiveExpression.new(value, val[1], val[0], val[2]) result end .,., # reduce 20 omitted module_eval(<<'.,.,', 'constexpr.y', 179) def _reduce_21(val, _values, result) value = val[0].value << val[2].value result = ShiftExpression.new(value, val[1], val[0], val[2]) result end .,., module_eval(<<'.,.,', 'constexpr.y', 184) def _reduce_22(val, _values, result) value = val[0].value >> val[2].value result = ShiftExpression.new(value, val[1], val[0], val[2]) result end .,., # reduce 23 omitted module_eval(<<'.,.,', 'constexpr.y', 193) def _reduce_24(val, _values, result) value = val[0].value < val[2].value ? 1 : 0 result = RelationalExpression.new(value, val[1], val[0], val[2]) result end .,., module_eval(<<'.,.,', 'constexpr.y', 198) def _reduce_25(val, _values, result) value = val[0].value > val[2].value ? 1 : 0 result = RelationalExpression.new(value, val[1], val[0], val[2]) result end .,., module_eval(<<'.,.,', 'constexpr.y', 203) def _reduce_26(val, _values, result) value = val[0].value <= val[2].value ? 1 : 0 result = RelationalExpression.new(value, val[1], val[0], val[2]) result end .,., module_eval(<<'.,.,', 'constexpr.y', 208) def _reduce_27(val, _values, result) value = val[0].value >= val[2].value ? 1 : 0 result = RelationalExpression.new(value, val[1], val[0], val[2]) result end .,., # reduce 28 omitted module_eval(<<'.,.,', 'constexpr.y', 217) def _reduce_29(val, _values, result) value = val[0].value == val[2].value ? 1 : 0 result = EqualityExpression.new(value, val[1], val[0], val[2]) result end .,., module_eval(<<'.,.,', 'constexpr.y', 222) def _reduce_30(val, _values, result) value = val[0].value != val[2].value ? 1 : 0 result = EqualityExpression.new(value, val[1], val[0], val[2]) result end .,., # reduce 31 omitted module_eval(<<'.,.,', 'constexpr.y', 231) def _reduce_32(val, _values, result) value = val[0].value & val[2].value result = AndExpression.new(value, val[1], val[0], val[2]) result end .,., # reduce 33 omitted module_eval(<<'.,.,', 'constexpr.y', 240) def _reduce_34(val, _values, result) value = val[0].value ^ val[2].value result = ExclusiveOrExpression.new(value, val[1], val[0], val[2]) result end .,., # reduce 35 omitted module_eval(<<'.,.,', 'constexpr.y', 249) def _reduce_36(val, _values, result) value = val[0].value | val[2].value result = InclusiveOrExpression.new(value, val[1], val[0], val[2]) result end .,., # reduce 37 omitted module_eval(<<'.,.,', 'constexpr.y', 258) def _reduce_38(val, _values, result) value = val[0].value == 1 && val[2].value == 1 ? 1 : 0 result = LogicalAndExpression.new(value, val[1], val[0], val[2]) result end .,., # reduce 39 omitted module_eval(<<'.,.,', 'constexpr.y', 267) def _reduce_40(val, _values, result) value = val[0].value == 1 || val[2].value == 1 ? 1 : 0 result = LogicalOrExpression.new(value, val[1], val[0], val[2]) result end .,., # reduce 41 omitted module_eval(<<'.,.,', 'constexpr.y', 276) def _reduce_42(val, _values, result) value = val[0].value == 1 ? val[2].value : val[4].value result = ConditionalExpression.new(value, val[0], val[2], val[4]) result end .,., # reduce 43 omitted # reduce 44 omitted module_eval(<<'.,.,', 'constexpr.y', 289) def _reduce_45(val, _values, result) case val[0] when CommaSeparatedExpression then val[0].value = val[2].value result = val[0].push(val[2]) else value = val[2].value result = CommaSeparatedExpression.new(value).push(val[0]).push(val[2]) end result end .,., def _reduce_none(val, _values, result) val[0] end end # class ConstantExpression end # module Cpp end # module AdLint adlint-3.2.14/lib/adlint/cpp/scanner.rb0000644000004100000410000000522412340630463017671 0ustar www-datawww-data# Scanner for C preprocessor language. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: module Cpp #:nodoc: # == DESCRIPTION # Utility module for scanning the C preprocessor language code. module Scanner # === DESCRIPTION # Scans CPP keyword. # # === PARAMETER # _cont_:: StringContent -- Scanning source. # # === RETURN VALUE # String -- Returns CPP keyword string if found at head of the content. def scan_keyword(cont) cont.scan(/defined\b/) end # === DESCRIPTION # Scans CPP punctuator. # # === PARAMETER # _cont_:: StringContent -- Scanning source. # # === RETURN VALUE # String -- Returns CPP punctuator string if found at head of the content. def scan_punctuator(cont) Language::C.scan_punctuator(cont) or cont.scan(/##?/) end # === DESCRIPTION # Scans CPP user header name. # # === PARAMETER # _cont_:: StringContent -- Scanning source. # # === RETURN VALUE # String -- Returns CPP user header name string if found at head of the # content. def scan_user_header_name(cont) cont.scan(/"[^"]*"/) end # === DESCRIPTION # Scans CPP system header name. # # === PARAMETER # _cont_:: StringContent -- Scanning source. # # === RETURN VALUE # String -- Returns CPP system header name string if found at head of the # content. def scan_system_header_name(cont) cont.scan(/<[^>]*>/) end end end end adlint-3.2.14/lib/adlint/cpp/eval.rb0000644000004100000410000007540512340630463017177 0ustar www-datawww-data# C preprocessor. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/error" require "adlint/source" require "adlint/report" require "adlint/util" require "adlint/cpp/syntax" require "adlint/cpp/source" require "adlint/cpp/macro" require "adlint/cpp/lexer" require "adlint/cpp/constexpr" module AdLint #:nodoc: module Cpp #:nodoc: # == DESCRIPTION # C preprocessor language evaluator. # # Preprocessor executes recursive descent parsing and evaluation at a time. class Preprocessor include ReportUtil include LogUtil def execute(pp_ctxt, src) @pp_ctxt = pp_ctxt @pp_ctxt.push_lexer(create_lexer(@pp_ctxt, src)) preprocessing_file(@pp_ctxt) end extend Pluggable def_plugin :on_user_header_included def_plugin :on_system_header_included def_plugin :on_object_like_macro_defined def_plugin :on_function_like_macro_defined def_plugin :on_va_function_like_macro_defined def_plugin :on_macro_undefined def_plugin :on_asm_section_evaled def_plugin :on_unknown_pragma_evaled def_plugin :on_pp_token_extracted def_plugin :on_block_comment_found def_plugin :on_line_comment_found def_plugin :on_nested_block_comment_found def_plugin :on_eof_newline_not_found def_plugin :on_unlexable_char_found def_plugin :on_cr_at_eol_found def_plugin :on_eof_mark_at_eof_found def_plugin :on_illformed_newline_escape_found def_plugin :on_illformed_defined_op_found def_plugin :on_undefined_macro_referred def_plugin :on_extra_tokens_found private def preprocessing_file(pp_ctxt) PreprocessingFile.new(pp_ctxt.tunit_root_fpath, group(pp_ctxt)) end def group(pp_ctxt) if group_part = group_part(pp_ctxt) group = Group.new.push(group_part) while group_part = group_part(pp_ctxt) group.push(group_part) end return group end nil end def group_part(pp_ctxt) if top_tok = pp_ctxt.top_token case top_tok.type when :IF, :IFDEF, :IFNDEF return if_section(pp_ctxt) when :INCLUDE, :INCLUDE_NEXT, :DEFINE, :UNDEF, :LINE, :ERROR, :PRAGMA return control_line(pp_ctxt) when :ASM return asm_section(pp_ctxt) when :NULL_DIRECTIVE return NullDirective.new(pp_ctxt.next_token) when :UNKNOWN_DIRECTIVE return UnknownDirective.new(pp_ctxt.next_token) when :TEXT_LINE text_line = TextLine.new(pp_ctxt.next_token) toks = TextLineNormalizer.normalize(text_line, pp_ctxt) if toks pp_ctxt.deferred_text_lines.clear toks.each do |tok| pp_ctxt.source.add_token(tok) notify_pp_token_extracted(tok) end else pp_ctxt.deferred_text_lines.push(text_line) end return text_line end end nil end def if_section(pp_ctxt) pp_ctxt.push_branch if_group = if_group(pp_ctxt) while top_tok = pp_ctxt.top_token case top_tok.type when :ELIF elif_groups = elif_groups(pp_ctxt) when :ELSE else_group = else_group(pp_ctxt) when :ENDIF endif_line = endif_line(pp_ctxt) break end end E(:E0004, if_group.location) unless endif_line pp_ctxt.pop_branch IfSection.new(if_group, elif_groups, else_group, endif_line) end def if_group(pp_ctxt) if keyword = pp_ctxt.top_token case keyword.type when :IF return if_statement(pp_ctxt) when :IFDEF return ifdef_statement(pp_ctxt) when :IFNDEF return ifndef_statement(pp_ctxt) end end nil end def if_statement(pp_ctxt) keyword = pp_ctxt.next_token unless pp_toks = pp_tokens(pp_ctxt) return nil end discard_extra_tokens_until_newline(pp_ctxt) expr = ExpressionNormalizer.normalize(pp_toks, pp_ctxt, self) if expr.value == 0 pp_ctxt.skip_group else group = group(pp_ctxt) pp_ctxt.branch_evaluated = true end IfStatement.new(keyword, expr, group) end def ifdef_statement(pp_ctxt) keyword = pp_ctxt.next_token unless id = pp_ctxt.next_token and id.type == :IDENTIFIER return nil end discard_extra_tokens_until_newline(pp_ctxt) if macro_defined?(pp_ctxt, id) group = group(pp_ctxt) pp_ctxt.branch_evaluated = true else pp_ctxt.skip_group end IfdefStatement.new(keyword, id, group) end def ifndef_statement(pp_ctxt) keyword = pp_ctxt.next_token unless id = pp_ctxt.next_token and id.type == :IDENTIFIER return nil end discard_extra_tokens_until_newline(pp_ctxt) if macro_defined?(pp_ctxt, id) pp_ctxt.skip_group else group = group(pp_ctxt) pp_ctxt.branch_evaluated = true end IfndefStatement.new(keyword, id, group) end def elif_groups(pp_ctxt) if elif_group = elif_group(pp_ctxt) elif_groups = ElifGroups.new.push(elif_group) while elif_group = elif_group(pp_ctxt) elif_groups.push(elif_group) end return elif_groups end nil end def elif_group(pp_ctxt) unless top_tok = pp_ctxt.top_token and top_tok.type == :ELIF return nil end if keyword = pp_ctxt.next_token if keyword.type == :ELIF unless pp_toks = pp_tokens(pp_ctxt) return nil end discard_extra_tokens_until_newline(pp_ctxt) expr = ExpressionNormalizer.normalize(pp_toks, pp_ctxt, self) if pp_ctxt.branch_evaluated? || expr.value == 0 pp_ctxt.skip_group else group = group(pp_ctxt) pp_ctxt.branch_evaluated = true end return ElifStatement.new(keyword, expr, group) end end nil end def else_group(pp_ctxt) if keyword = pp_ctxt.next_token if keyword.type == :ELSE discard_extra_tokens_until_newline(pp_ctxt) if pp_ctxt.branch_evaluated? pp_ctxt.skip_group else group = group(pp_ctxt) pp_ctxt.branch_evaluated = true end return ElseStatement.new(keyword, group) end end nil end def endif_line(pp_ctxt) if keyword = pp_ctxt.next_token if keyword.type == :ENDIF discard_extra_tokens_until_newline(pp_ctxt) return EndifLine.new(keyword) end end nil end def control_line(pp_ctxt) if keyword = pp_ctxt.top_token case keyword.type when :INCLUDE return include_line(pp_ctxt) when :INCLUDE_NEXT return include_next_line(pp_ctxt) when :DEFINE return define_line(pp_ctxt) when :UNDEF return undef_line(pp_ctxt) when :LINE return line_line(pp_ctxt) when :ERROR return error_line(pp_ctxt) when :PRAGMA return pragma_line(pp_ctxt) end end nil end def include_line(pp_ctxt) keyword = pp_ctxt.next_token if header_name = pp_ctxt.top_token case header_name.type when :USR_HEADER_NAME return user_include_line(pp_ctxt, keyword) when :SYS_HEADER_NAME return system_include_line(pp_ctxt, keyword) else return macro_include_line(pp_ctxt, keyword) end end nil end def include_next_line(pp_ctxt) keyword = pp_ctxt.next_token if header_name = pp_ctxt.top_token case header_name.type when :USR_HEADER_NAME return user_include_next_line(pp_ctxt, keyword) when :SYS_HEADER_NAME return system_include_next_line(pp_ctxt, keyword) else return macro_include_next_line(pp_ctxt, keyword) end end nil end def user_include_line(pp_ctxt, keyword) header_name = pp_ctxt.next_token discard_extra_tokens_until_newline(pp_ctxt) usr_include_line = UserIncludeLine.new(keyword, header_name, pp_ctxt.include_depth) include_first_user_header(usr_include_line, pp_ctxt) usr_include_line end def user_include_next_line(pp_ctxt, keyword) header_name = pp_ctxt.next_token discard_extra_tokens_until_newline(pp_ctxt) usr_include_next_line = UserIncludeNextLine.new(keyword, header_name, pp_ctxt.include_depth) include_next_user_header(usr_include_next_line, pp_ctxt) usr_include_next_line end def system_include_line(pp_ctxt, keyword) header_name = pp_ctxt.next_token discard_extra_tokens_until_newline(pp_ctxt) sys_include_line = SystemIncludeLine.new(keyword, header_name, pp_ctxt.include_depth) include_first_system_header(sys_include_line, pp_ctxt) sys_include_line end def system_include_next_line(pp_ctxt, keyword) header_name = pp_ctxt.next_token discard_extra_tokens_until_newline(pp_ctxt) sys_include_next_line = SystemIncludeNextLine.new(keyword, header_name, pp_ctxt.include_depth) include_next_system_header(sys_include_next_line, pp_ctxt) sys_include_next_line end def macro_include_line(pp_ctxt, keyword) unless pp_toks = pp_tokens(pp_ctxt) return nil end discard_extra_tokens_until_newline(pp_ctxt) PPTokensNormalizer.normalize(pp_toks, pp_ctxt) unless pp_toks.tokens.empty? case param = pp_toks.tokens.map { |tok| tok.value }.join when /\A".*"\z/ usr_include_line = UserIncludeLine.new( keyword, Token.new(:USR_HEADER_NAME, param, pp_toks.tokens.first.location), pp_ctxt.include_depth) include_first_user_header(usr_include_line, pp_ctxt) return usr_include_line when /\A<.*>\z/ sys_include_line = SystemIncludeLine.new( keyword, Token.new(:SYS_HEADER_NAME, param, pp_toks.tokens.first.location), pp_ctxt.include_depth) include_first_system_header(sys_include_line, pp_ctxt) return sys_include_line end end E(:E0017, keyword.location) raise IllformedIncludeDirectiveError.new( keyword.location, pp_ctxt.msg_fpath, pp_ctxt.log_fpath) end def macro_include_next_line(pp_ctxt, keyword) unless pp_toks = pp_tokens(pp_ctxt) return nil end discard_extra_tokens_until_newline(pp_ctxt) PPTokensNormalizer.normalize(pp_toks, pp_ctxt) return nil if pp_toks.tokens.empty? case param = pp_toks.tokens.map { |tok| tok.value }.join when /\A".*"\z/ usr_include_next_line = UserIncludeNextLine.new( keyword, Token.new(:USR_HEADER_NAME, param, pp_toks.tokens.first.location), pp_ctxt.include_depth) include_next_user_header(usr_include_next_line, pp_ctxt) return usr_include_next_line when /\A<.*>\z/ sys_include_next_line = SystemIncludeNextLine.new( keyword, Token.new(:SYS_HEADER_NAME, param, pp_toks.tokens.first.location), pp_ctxt.include_depth) include_next_system_header(sys_include_next_line, pp_ctxt) return sys_include_next_line end nil end def define_line(pp_ctxt) keyword = pp_ctxt.next_token unless id = pp_ctxt.next_token and id.type == :IDENTIFIER return nil end sym = pp_ctxt.symbol_table.create_new_symbol(MacroName, id) if paren = pp_ctxt.top_token and paren.type == "(" pp_ctxt.next_token id_list = identifier_list(pp_ctxt) unless paren_or_ellipsis = pp_ctxt.next_token return nil end case paren_or_ellipsis.type when "..." ellipsis = paren_or_ellipsis if paren = pp_ctxt.top_token and paren.type == ")" pp_ctxt.next_token else return nil end when ")" ellipsis = nil else return nil end repl_list = replacement_list(pp_ctxt) discard_extra_tokens_until_newline(pp_ctxt) if ellipsis define_line = VaFunctionLikeDefineLine.new(keyword, id, id_list, repl_list, sym) macro = VaFunctionLikeMacro.new(define_line) notify_va_function_like_macro_defined(define_line, macro) else define_line = FunctionLikeDefineLine.new(keyword, id, id_list, repl_list, sym) macro = FunctionLikeMacro.new(define_line) notify_function_like_macro_defined(define_line, macro) end else repl_list = replacement_list(pp_ctxt) discard_extra_tokens_until_newline(pp_ctxt) define_line = ObjectLikeDefineLine.new(keyword, id, repl_list, sym) macro = ObjectLikeMacro.new(define_line) notify_object_like_macro_defined(define_line, macro) end pp_ctxt.macro_table.define(macro) define_line end def undef_line(pp_ctxt) keyword = pp_ctxt.next_token unless id = pp_ctxt.next_token and id.type == :IDENTIFIER return nil end discard_extra_tokens_until_newline(pp_ctxt) undef_line = UndefLine.new(keyword, id) macro = pp_ctxt.macro_table.lookup(id.value) # NOTE: Undefining macro may be nil if not defined. notify_macro_undefined(undef_line, macro) pp_ctxt.macro_table.undef(id.value) undef_line end def line_line(pp_ctxt) keyword = pp_ctxt.next_token pp_toks = pp_tokens(pp_ctxt) discard_extra_tokens_until_newline(pp_ctxt) # NOTE: The ISO C99 standard says; # # 6.10.4 Line control # # Semantics # # 5 A preprocessing directive of the form # # line pp-tokens new-line # that does not match one of the two previous forms is permitted. The # preprocessing tokens after line on the directive are processed just # as in normal text (each identifier currently defined as a macro name # is replaced by its replacement list of preprocessing tokens). The # directive resulting after all replacements shall match one of the two # previous forms and is then processed as appropriate. PPTokensNormalizer.normalize(pp_toks, pp_ctxt) if pp_toks LineLine.new(keyword, pp_toks) end def error_line(pp_ctxt) keyword = pp_ctxt.next_token pp_toks = pp_tokens(pp_ctxt) discard_extra_tokens_until_newline(pp_ctxt) ErrorLine.new(keyword, pp_toks) end def pragma_line(pp_ctxt) keyword = pp_ctxt.next_token pp_toks = pp_tokens(pp_ctxt) discard_extra_tokens_until_newline(pp_ctxt) pragma_line = PragmaLine.new(keyword, pp_toks) if pp_toks and pp_toks.tokens.size == 1 && pp_toks.tokens.first.value == "once" pp_ctxt.once_set.add(keyword.location.fpath) else notify_unknown_pragma_evaled(pragma_line) end pragma_line end def identifier_list(pp_ctxt) unless id = pp_ctxt.top_token and id.type == :IDENTIFIER return nil end id_list = IdentifierList.new while tok = pp_ctxt.next_token if tok.type == :IDENTIFIER id_list.push(tok) end if comma = pp_ctxt.top_token and comma.type == "," pp_ctxt.next_token else break end unless id = pp_ctxt.top_token and id.type == :IDENTIFIER break end end id_list end def replacement_list(pp_ctxt) pp_tokens(pp_ctxt) end def pp_tokens(pp_ctxt) unless pp_tok = pp_ctxt.top_token and pp_tok.type == :PP_TOKEN return nil end pp_toks = PPTokens.new while tok = pp_ctxt.top_token if tok.type == :PP_TOKEN pp_toks.push(pp_ctxt.next_token) else break end end pp_toks end def asm_section(pp_ctxt) asm_line = asm_line(pp_ctxt) pp_ctxt.skip_group endasm_line = endasm_line(pp_ctxt) asm_section = AsmSection.new(asm_line, endasm_line) notify_asm_section_evaled(asm_section) asm_section end def asm_line(pp_ctxt) if keyword = pp_ctxt.next_token if keyword.type == :ASM discard_extra_tokens_until_newline(pp_ctxt) return AsmLine.new(keyword) end end nil end def endasm_line(pp_ctxt) if keyword = pp_ctxt.next_token if keyword.type == :ENDASM discard_extra_tokens_until_newline(pp_ctxt) return EndasmLine.new(keyword) end end nil end def include_first_user_header(include_line, pp_ctxt) basename = include_line.header_name.value.sub(/\A"(.*)"\z/, "\\1") cur_dpath = include_line.location.fpath.dirname if fpath = resolve_first_user_header(basename, cur_dpath, pp_ctxt) include_user_header(fpath, include_line, pp_ctxt) else E(:E0010, include_line.location, basename) raise MissingUserHeaderError.new(include_line.location, basename, pp_ctxt.msg_fpath, pp_ctxt.log_fpath) end end def include_next_user_header(include_line, pp_ctxt) basename = include_line.header_name.value.sub(/\A"(.*)"\z/, "\\1") cur_dpath = include_line.location.fpath.dirname if fpath = resolve_next_user_header(basename, cur_dpath, pp_ctxt) include_user_header(fpath, include_line, pp_ctxt) else E(:E0010, include_line.location, basename) raise MissingUserHeaderError.new(include_line.location, basename, pp_ctxt.msg_fpath, pp_ctxt.log_fpath) end end def include_user_header(fpath, include_line, pp_ctxt) unless pp_ctxt.once_set.include?(fpath) LOG_I("including \"#{fpath}\" at #{include_line.location.to_s}") include_line.fpath = fpath usr_header = UserHeader.new(fpath, pp_ctxt.traits.of_project.file_encoding, include_line.location) pp_ctxt.push_lexer(create_lexer(pp_ctxt, usr_header)) pp_ctxt.sources.push(usr_header) notify_user_header_included(include_line, usr_header) end end def include_first_system_header(include_line, pp_ctxt) basename = include_line.header_name.value.sub(/\A<(.*)>\z/, "\\1") if fpath = resolve_first_system_header(basename, pp_ctxt) include_system_header(fpath, include_line, pp_ctxt) else E(:E0009, include_line.location, basename) raise MissingSystemHeaderError.new(include_line.location, basename, pp_ctxt.msg_fpath, pp_ctxt.log_fpath) end end def include_next_system_header(include_line, pp_ctxt) basename = include_line.header_name.value.sub(/\A<(.*)>\z/, "\\1") if fpath = resolve_next_system_header(basename, pp_ctxt) include_system_header(fpath, include_line, pp_ctxt) else E(:E0009, include_line.location, basename) raise MissingSystemHeaderError.new(include_line.location, basename, pp_ctxt.msg_fpath, pp_ctxt.log_fpath) end end def include_system_header(fpath, include_line, pp_ctxt) unless pp_ctxt.once_set.include?(fpath) LOG_I("including <#{fpath}> at #{include_line.location.to_s}") include_line.fpath = fpath # FIXME: The character encoding of system headers may not be same as # one of project's source files. sys_header = SystemHeader.new(fpath, pp_ctxt.traits.of_project.file_encoding, include_line.location) pp_ctxt.push_lexer(create_lexer(pp_ctxt, sys_header)) pp_ctxt.sources.push(sys_header) notify_system_header_included(include_line, sys_header) end end def resolve_first_user_header(basename, cur_dpath, pp_ctxt) resolve_user_headers(basename, cur_dpath, 1, pp_ctxt).first end def resolve_next_user_header(basename, cur_dpath, pp_ctxt) resolve_user_headers(basename, cur_dpath, 2, pp_ctxt).last end def resolve_user_headers(basename, cur_dpath, max_num, pp_ctxt) search_paths = [cur_dpath] search_paths += pp_ctxt.traits.of_project.file_search_paths search_paths += pp_ctxt.traits.of_compiler.file_search_paths base_fpath = Pathname.new(basename) if base_fpath.absolute? && base_fpath.readable? [base_fpath] else resolved = [] search_paths.each do |dpath| fpath = dpath.join(base_fpath) fpath = Pathname.new(fpath.to_s.gsub(/\\\\|\\/, "/")) resolved.push(fpath) if fpath.readable? break if resolved.size == max_num end resolved end end def resolve_first_system_header(basename, pp_ctxt) resolve_system_headers(basename, 1, pp_ctxt).first end def resolve_next_system_header(basename, pp_ctxt) resolve_system_headers(basename, 2, pp_ctxt).last end def resolve_system_headers(basename, max_num, pp_ctxt) search_paths = pp_ctxt.traits.of_project.file_search_paths search_paths += pp_ctxt.traits.of_compiler.file_search_paths base_fpath = Pathname.new(basename) if base_fpath.absolute? && base_fpath.readable? [base_fpath] else resolved = [] search_paths.each do |dpath| fpath = dpath.join(base_fpath) fpath = Pathname.new(fpath.to_s.gsub(/\\\\|\\/, "/")) resolved.push(fpath) if fpath.readable? break if resolved.size == max_num end resolved end end def macro_defined?(pp_ctxt, id) if macro = pp_ctxt.macro_table.lookup(id.value) macro.define_line.mark_as_referred_by(id) true else false end end def discard_extra_tokens_until_newline(pp_ctxt) extra_toks = [] while tok = pp_ctxt.next_token if tok.type == :NEW_LINE break else extra_toks.push(tok) end end notify_extra_tokens_found(extra_toks) unless extra_toks.empty? end def create_lexer(pp_ctxt, src) Lexer.new(src, pp_ctxt.traits).tap { |lexer| attach_lexer_plugin(lexer) } end def attach_lexer_plugin(lexer) lexer.on_block_comment_found += lambda { |*args| on_block_comment_found.invoke(*args) } lexer.on_line_comment_found += lambda { |*args| on_line_comment_found.invoke(*args) } lexer.on_nested_block_comment_found += lambda { |*args| on_nested_block_comment_found.invoke(*args) } lexer.on_unterminated_block_comment += lambda { |*args| handle_unterminated_block_comment(*args) } lexer.on_eof_newline_not_found += lambda { |*args| on_eof_newline_not_found.invoke(*args) } lexer.on_unlexable_char_found += lambda { |*args| on_unlexable_char_found.invoke(*args) } lexer.on_cr_at_eol_found += lambda { |*args| on_cr_at_eol_found.invoke(*args) } lexer.on_eof_mark_at_eof_found += lambda { |*args| on_eof_mark_at_eof_found.invoke(*args) } lexer.on_illformed_newline_escape_found += lambda { |*args| on_illformed_newline_escape_found.invoke(*args) } end def notify_user_header_included(usr_include_line, usr_header) on_user_header_included.invoke(usr_include_line, usr_header) end def notify_system_header_included(sys_include_line, sys_header) on_system_header_included.invoke(sys_include_line, sys_header) end def notify_object_like_macro_defined(define_line, macro) on_object_like_macro_defined.invoke(define_line, macro) end def notify_function_like_macro_defined(define_line, macro) on_function_like_macro_defined.invoke(define_line, macro) end def notify_va_function_like_macro_defined(define_line, macro) on_va_function_like_macro_defined.invoke(define_line, macro) end def notify_macro_undefined(undef_line, macro) on_macro_undefined.invoke(undef_line, macro) end def notify_asm_section_evaled(asm_section) on_asm_section_evaled.invoke(asm_section) end def notify_unknown_pragma_evaled(pragma_line) on_unknown_pragma_evaled.invoke(pragma_line) end def notify_pp_token_extracted(pp_tok) on_pp_token_extracted.invoke(pp_tok) end def notify_illformed_defined_op_found(loc, no_args) on_illformed_defined_op_found.invoke(loc, no_args) end def notify_undefined_macro_referred(id) on_undefined_macro_referred.invoke(id) end def notify_extra_tokens_found(extra_toks) on_extra_tokens_found.invoke(extra_toks) end def handle_unterminated_block_comment(loc) E(:E0016, loc) raise UnterminatedCommentError.new(loc, @pp_ctxt.msg_fpath, @pp_ctxt.log_fpath) end extend Forwardable def_delegator :@pp_ctxt, :report private :report def_delegator :@pp_ctxt, :message_catalog private :message_catalog def_delegator :@pp_ctxt, :logger private :logger end class PreprocessContext def initialize(phase_ctxt) @phase_ctxt = phase_ctxt @deferred_text_lines = [] @lexer_stack = [] @branch_stack = [] @once_set = Set.new end attr_reader :deferred_text_lines attr_reader :once_set extend Forwardable def_delegator :@phase_ctxt, :traits def_delegator :@phase_ctxt, :message_catalog def_delegator :@phase_ctxt, :report def_delegator :@phase_ctxt, :logger def_delegator :@phase_ctxt, :msg_fpath def_delegator :@phase_ctxt, :log_fpath def tunit_root_fpath @phase_ctxt[:sources].first.fpath end def source @phase_ctxt[:cc1_source] end def sources @phase_ctxt[:sources] end def symbol_table @phase_ctxt[:symbol_table] end def macro_table @phase_ctxt[:cpp_macro_table] end def push_lexer(lexer) @lexer_stack.push(lexer) end def top_token unless @lexer_stack.empty? unless tok = @lexer_stack.last.top_token @lexer_stack.pop top_token else tok end else nil end end def next_token if top_token @lexer_stack.last.next_token else nil end end def skip_group until @lexer_stack.last.skip_group @lexer_stack.pop break if @lexer_stack.empty? end end def push_branch @branch_stack.push(false) end def pop_branch @branch_stack.pop end def branch_evaluated=(evaluated) @branch_stack[-1] = evaluated end def branch_evaluated? @branch_stack.last end def include_depth @lexer_stack.size end end module PPTokensNormalizer def normalize(pp_toks, pp_ctxt) pp_ctxt.macro_table.replace(pp_toks.tokens) pp_toks end module_function :normalize end module ExpressionNormalizer def normalize(pp_toks, pp_ctxt, preprocessor = nil) PPTokensNormalizer.normalize(pp_toks, pp_ctxt) const_expr = ConstantExpression.new(pp_ctxt, pp_toks.tokens) if preprocessor const_expr.on_illformed_defined_op_found += preprocessor.method(:notify_illformed_defined_op_found) const_expr.on_undefined_macro_referred += preprocessor.method(:notify_undefined_macro_referred) end const_expr.evaluate end module_function :normalize end module TextLineNormalizer def normalize(text_line, pp_ctxt) tab_width = pp_ctxt.traits.of_project.coding_style.tab_width pp_toks = [] unless pp_ctxt.deferred_text_lines.empty? pp_ctxt.deferred_text_lines.each do |deferred_line| lexer = TextLineToPPTokensLexer.new(deferred_line, tab_width) pp_toks += lexer.execute.to_a end end lexer = TextLineToPPTokensLexer.new(text_line, tab_width) pp_toks += lexer.execute.to_a fun_like_macro_referred = pp_toks.any? { |tok| (macro = pp_ctxt.macro_table.lookup(tok.value)) ? macro.function_like? : false } if fun_like_macro_referred return nil unless complete_macro_reference?(pp_toks, pp_ctxt) end pp_ctxt.macro_table.replace(pp_toks) pp_toks end module_function :normalize def complete_macro_reference?(pp_toks, pp_ctxt) idx = 0 while tok = pp_toks[idx] idx += 1 macro = pp_ctxt.macro_table.lookup(tok.value) if macro && macro.function_like? next if not_calling_function_like_macro?(pp_toks, idx) else next end # NOTE: It's not completed when a new-line appears after the macro # name. return false unless pp_toks.drop(idx).any? { |t| t.value == "(" } paren_cnt = 0 while tok = pp_toks[idx] case tok.value when "(" paren_cnt += 1 when ")" paren_cnt -= 1 break if paren_cnt == 0 end idx += 1 end return false if paren_cnt > 0 end true end module_function :complete_macro_reference? def not_calling_function_like_macro?(pp_toks, idx) while pp_tok = pp_toks[idx] case when pp_tok.value == "(" return false when pp_tok.type == :NEW_LINE idx += 1 else return true end end false end module_function :not_calling_function_like_macro? end end end adlint-3.2.14/lib/adlint/cpp/phase.rb0000644000004100000410000001123112340630463017333 0ustar www-datawww-data# Analysis phases for C preprocessor language. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/phase" require "adlint/annot" require "adlint/cpp/lexer" require "adlint/cpp/eval" require "adlint/cpp/util" module AdLint #:nodoc: module Cpp #:nodoc: class CppPhase < Phase def initialize(phase_ctxt, phase_name) super(phase_ctxt, "cpp", phase_name) end end class Prepare1Phase < CppPhase def initialize(phase_ctxt) super(phase_ctxt, "pr1") end private def do_execute(phase_ctxt, *) root_src = phase_ctxt[:sources].first phase_ctxt[:cc1_source] = PreprocessedSource.new(root_src) phase_ctxt[:cpp_macro_table] = MacroTable.new phase_ctxt[:cpp_interpreter] = Preprocessor.new phase_ctxt[:cpp_ast_traversal] = SyntaxTreeMulticastVisitor.new register_annotation_parser end def register_annotation_parser parser = method(:parse_annotation) @phase_ctxt[:cpp_interpreter].on_line_comment_found += parser @phase_ctxt[:cpp_interpreter].on_block_comment_found += parser end def parse_annotation(comment, loc) if annot = Annotation.parse(comment, loc) @phase_ctxt[:annotations].push(annot) if annot.message_suppression_specifier? && traits.of_message.individual_suppression @phase_ctxt[:suppressors].add(annot.create_suppressor) end end end end class Prepare2Phase < CppPhase def initialize(phase_ctxt) super(phase_ctxt, "pr2") end private def do_execute(*) end end class EvalPhase < CppPhase def initialize(phase_ctxt) super(phase_ctxt, "cpp") end private def do_execute(phase_ctxt, *) pp_ctxt = PreprocessContext.new(phase_ctxt) process_cinit_header(phase_ctxt, pp_ctxt) process_pinit_header(phase_ctxt, pp_ctxt) process_target_source(phase_ctxt, pp_ctxt) end def process_cinit_header(phase_ctxt, pp_ctxt) if fpath = traits.of_compiler.initial_header fenc = traits.of_project.file_encoding init_header = Source.new(Pathname.new(fpath), fenc) else init_header = EmptySource.new end phase_ctxt[:cpp_ast] = phase_ctxt[:cpp_interpreter].execute(pp_ctxt, init_header) end def process_pinit_header(phase_ctxt, pp_ctxt) if fpath = traits.of_project.initial_header fenc = traits.of_project.file_encoding init_header = Source.new(Pathname.new(fpath), fenc) else init_header = EmptySource.new end phase_ctxt[:cpp_ast].concat( phase_ctxt[:cpp_interpreter].execute(pp_ctxt, init_header)) end def process_target_source(phase_ctxt, pp_ctxt) root_src = phase_ctxt[:sources].first phase_ctxt[:cpp_ast].concat( phase_ctxt[:cpp_interpreter].execute(pp_ctxt, root_src)) end end class SubstPhase < CppPhase def initialize(phase_ctxt) super(phase_ctxt, "sub") end private def do_execute(phase_ctxt, *) phase_ctxt[:cc1_source].substitute_code_blocks(traits) end end class ReviewPhase < CppPhase def initialize(phase_ctxt) super(phase_ctxt, "rv1") end private def do_execute(phase_ctxt, *) phase_ctxt[:cpp_ast].accept(phase_ctxt[:cpp_ast_traversal]) end end class ExaminationPhase < CppPhase def initialize(phase_ctxt) super(phase_ctxt, "ex1") end private def do_execute(phase_ctxt, *) examinations.each { |exam| exam.execute } end end end end adlint-3.2.14/lib/adlint/cpp/constexpr.y0000644000004100000410000002516112340630463020134 0ustar www-datawww-data# The constant-expression evaluator. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ class AdLint::Cpp::ConstantExpression token CONSTANT IDENTIFIER DEFINED start constant_expression rule primary_expression : CONSTANT { case val[0].value when /\A0b([01]+)[UL]*\z/i value = $1.to_i(2) when /\A(0[0-9]*)[UL]*\z/i value = $1.to_i(8) when /\A([1-9][0-9]*)[UL]*\z/i value = $1.to_i(10) when /\A0x([0-9a-f]+)[UL]*\z/i value = $1.to_i(16) when /\A([0-9]*\.[0-9]*E[+-]?[0-9]+|[0-9]+\.?E[+-]?[0-9]+)[FL]*\z/i, /\A([0-9]*\.[0-9]+|[0-9]+\.)[FL]*/i value = $1.to_f when /\AL?'(.*)'\z/i if $1.length > 1 && $1[0] == "\\" value = EscapeSequence.new($1).value else value = $1[0].ord end else value = 0 end result = ConstantSpecifier.new(value, val[0]) yyerrok } | IDENTIFIER { notify_undefined_macro_referred(val[0]) result = ErrorExpression.new(val[0]) yyerrok } | "(" expression ")" { result = GroupedExpression.new(val[1].value, val[1]) yyerrok } ; postfix_expression : primary_expression ; unary_expression : postfix_expression | "+" unary_expression { value = val[1].value result = UnaryArithmeticExpression.new(value, val[0], val[1]) } | "-" unary_expression { value = -val[1].value result = UnaryArithmeticExpression.new(value, val[0], val[1]) } | "~" unary_expression { value = ~val[1].value result = UnaryArithmeticExpression.new(value, val[0], val[1]) } | "!" unary_expression { value = val[1].value == 0 ? 1 : 0 result = UnaryArithmeticExpression.new(value, val[0], val[1]) } | DEFINED "(" IDENTIFIER ")" { if macro = @macro_tbl.lookup(val[2].value) macro.define_line.mark_as_referred_by(val[2]) value = 1 else value = 0 end result = DefinedExpression.new(value, val[0], val[2]) } | DEFINED IDENTIFIER { if macro = @macro_tbl.lookup(val[1].value) macro.define_line.mark_as_referred_by(val[1]) value = 1 else value = 0 end result = DefinedExpression.new(value, val[0], val[1]) } | DEFINED error { notify_illformed_defined_operator(loc_of(val[0]), val[1] == "$") result = ErrorExpression.new(val[1]) } ; multiplicative_expression : unary_expression | multiplicative_expression "*" unary_expression { value = val[0].value * val[2].value result = MultiplicativeExpression.new(value, val[1], val[0], val[2]) } | multiplicative_expression "/" unary_expression { unless val[2].value == 0 value = val[0].value / val[2].value else value = 0 end result = MultiplicativeExpression.new(value, val[1], val[0], val[2]) } | multiplicative_expression "%" unary_expression { unless val[2].value == 0 value = val[0].value % val[2].value else value = 0 end result = MultiplicativeExpression.new(value, val[1], val[0], val[2]) } ; additive_expression : multiplicative_expression | additive_expression "+" multiplicative_expression { value = val[0].value + val[2].value result = AdditiveExpression.new(value, val[1], val[0], val[2]) } | additive_expression "-" multiplicative_expression { value = val[0].value - val[2].value result = AdditiveExpression.new(value, val[1], val[0], val[2]) } ; shift_expression : additive_expression | shift_expression "<<" additive_expression { value = val[0].value << val[2].value result = ShiftExpression.new(value, val[1], val[0], val[2]) } | shift_expression ">>" additive_expression { value = val[0].value >> val[2].value result = ShiftExpression.new(value, val[1], val[0], val[2]) } ; relational_expression : shift_expression | relational_expression "<" shift_expression { value = val[0].value < val[2].value ? 1 : 0 result = RelationalExpression.new(value, val[1], val[0], val[2]) } | relational_expression ">" shift_expression { value = val[0].value > val[2].value ? 1 : 0 result = RelationalExpression.new(value, val[1], val[0], val[2]) } | relational_expression "<=" shift_expression { value = val[0].value <= val[2].value ? 1 : 0 result = RelationalExpression.new(value, val[1], val[0], val[2]) } | relational_expression ">=" shift_expression { value = val[0].value >= val[2].value ? 1 : 0 result = RelationalExpression.new(value, val[1], val[0], val[2]) } ; equality_expression : relational_expression | equality_expression "==" relational_expression { value = val[0].value == val[2].value ? 1 : 0 result = EqualityExpression.new(value, val[1], val[0], val[2]) } | equality_expression "!=" relational_expression { value = val[0].value != val[2].value ? 1 : 0 result = EqualityExpression.new(value, val[1], val[0], val[2]) } ; and_expression : equality_expression | and_expression "&" equality_expression { value = val[0].value & val[2].value result = AndExpression.new(value, val[1], val[0], val[2]) } ; exclusive_or_expression : and_expression | exclusive_or_expression "^" and_expression { value = val[0].value ^ val[2].value result = ExclusiveOrExpression.new(value, val[1], val[0], val[2]) } ; inclusive_or_expression : exclusive_or_expression | inclusive_or_expression "|" exclusive_or_expression { value = val[0].value | val[2].value result = InclusiveOrExpression.new(value, val[1], val[0], val[2]) } ; logical_and_expression : inclusive_or_expression | logical_and_expression "&&" inclusive_or_expression { value = val[0].value == 1 && val[2].value == 1 ? 1 : 0 result = LogicalAndExpression.new(value, val[1], val[0], val[2]) } ; logical_or_expression : logical_and_expression | logical_or_expression "||" logical_and_expression { value = val[0].value == 1 || val[2].value == 1 ? 1 : 0 result = LogicalOrExpression.new(value, val[1], val[0], val[2]) } ; conditional_expression : logical_or_expression | logical_or_expression "?" expression ":" conditional_expression { value = val[0].value == 1 ? val[2].value : val[4].value result = ConditionalExpression.new(value, val[0], val[2], val[4]) } ; constant_expression : conditional_expression ; expression : constant_expression | constant_expression "," expression { case val[0] when CommaSeparatedExpression then val[0].value = val[2].value result = val[0].push(val[2]) else value = val[2].value result = CommaSeparatedExpression.new(value).push(val[0]).push(val[2]) end } ; end ---- header require "adlint/report" require "adlint/util" require "adlint/cpp/util" ---- inner include ReportUtil def initialize(pp_ctxt, expr_toks) @pp_ctxt = pp_ctxt @expr_toks = expr_toks @macro_tbl = pp_ctxt.macro_table @fpath = expr_toks.first.location.fpath @lst_line_no = expr_toks.last.location.line_no end extend Pluggable def_plugin :on_illformed_defined_op_found def_plugin :on_undefined_macro_referred def evaluate @tok_queue = relex(@expr_toks) if expr = do_parse expr else ErrorExpression.new(nil) end end private def relex(expr_toks) tok_queue = [] expr_toks.each do |tok| case tok.value when /\A(?:0x[0-9a-f]+|[0-9]+)[UL]*\z/i tok_queue.push(Token.new(:CONSTANT, tok.value, tok.location)) when /\A(?:[0-9]*\.[0-9]*e[+-]?[0-9]+|[0-9]+\.?e[+-]?[0-9]+)[FL]*/i tok_queue.push(Token.new(:CONSTANT, tok.value, tok.location)) when /\AL?'.*'\z/i tok_queue.push(Token.new(:CONSTANT, tok.value, tok.location)) when /\AL?".*"\z/i tok_queue.push(Token.new(:CONSTANT, tok.value, tok.location)) when "(", ")", "+", "-", "~", "!", "*", "/", "%", "<<", ">>", "<", ">", "<=", ">=", "==", "!=", "&", "^", "|", "&&", "||", "?", ":" tok_queue.push(Token.new(tok.value, tok.value, tok.location)) when "defined" tok_queue.push(Token.new(:DEFINED, tok.value, tok.location)) else tok_queue.push(Token.new(:IDENTIFIER, tok.value, tok.location)) end end tok_queue end def next_token (tok = @tok_queue.shift) ? [tok.type, tok] : nil end def on_error(err_tok_id, err_val, *) E(:E0007, loc_of(err_val), val_of(err_val)) end def loc_of(tok) tok == "$" ? Location.new(@fpath, @lst_line_no) : tok.location end def val_of(tok) tok == "$" ? "EOF" : tok.value end def notify_illformed_defined_operator(loc, no_args) on_illformed_defined_op_found.invoke(loc, no_args) end def notify_undefined_macro_referred(id) on_undefined_macro_referred.invoke(id) end extend Forwardable def_delegator :@pp_ctxt, :report private :report def_delegator :@pp_ctxt, :message_catalog private :message_catalog # vim:ft=racc:sw=2:ts=2:sts=2:et: adlint-3.2.14/lib/adlint/cpp/util.rb0000644000004100000410000001103012340630463017205 0ustar www-datawww-data# Miscellaneous utilities for C preprocessor language. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: module Cpp #:nodoc: class EscapeSequence # TODO: Remove duplication in cc1/util.rb and cpp/util.rb . def initialize(str) @str = str end def value case @str when "\\'" then "'".ord when "\\\"" then "\"".ord when "\\?" then "?".ord when "\\\\" then "\\".ord when "\\a" then "\a".ord when "\\b" then "\b".ord when "\\f" then "\f".ord when "\\n" then "\n".ord when "\\r" then "\r".ord when "\\t" then "\t".ord when "\\v" then "\v".ord else case @str when /\A\\([0-9]{1,3})\z/ $1.to_i(8) when /\A\\x([0-9A-F]+)\z/i $1.to_i(16) when /\A\\u([0-9A-F]{4,8})\z/i $1.to_i(16) else 0 end end end end module BasicSourceCharacterSet def include?(str) str.chars.all? { |ch| CHARS.include?(ch.ord) } end module_function :include? def select_adapted(str) str.chars.select { |ch| CHARS.include?(ch.ord) } end module_function :select_adapted def select_not_adapted(str) str.chars.to_a - select_adapted(str) end module_function :select_not_adapted # NOTE: The ISO C99 standard says; # # 5.2 Environmental considerations # 5.2.1 Character sets # # 1 Two sets of characters and their associated collating sequences shall # be defined: the set in which source files are written (the source # character set), and the set interpreted in the execution environment # (the execution character set). Each set is further divided into a basic # character set, whose contents are given by this subclause, and a set of # zero or more locale-specific members (which are not members of the # basic character set) called extended characters. The combined set is # also called the extended character set. The values of the members of # the execution character set are implementation-defined. # # 3 Both the basic source and basic execution character sets shall have the # following members: the 26 uppercase letters of the Latin alphabet # A B C D E F G H I J K L M # N O P Q R S T U V W X Y Z # the 26 lowercase letters of the Latin alphabet # a b c d e f g h i j k l m # n o p q r s t u v w x y z # the 10 decimal digits # 0 1 2 3 4 5 6 7 8 9 # the following 29 graphic characters # ! " # % & ' ( ) * + , - . / : # ; < = > ? [ \ ] ^ _ { | } ~ # the space character, and control characters representing horizontal # tab, vertical tab, and form feed. CHARS = [ "A", "B" , "C" , "D" , "E" , "F", "G", "H", "I" , "J", "K", "L", "M", "N", "O" , "P" , "Q" , "R" , "S", "T", "U", "V" , "W", "X", "Y", "Z", "a", "b" , "c" , "d" , "e" , "f", "g", "h", "i" , "j", "k", "l", "m", "n", "o" , "p" , "q" , "r" , "s", "t", "u", "v" , "w", "x", "y", "z", "0", "1" , "2" , "3" , "4" , "5", "6", "7", "8" , "9", "!", '"' , "#" , "%" , "&" , "'", "(", ")", "*" , "+", ",", "-", ".", "/", ":" , ";" , "<" , "=" , ">", "?", "[", "\\", "]", "^", "_", "{", "|", "}" , "~" , " ", "\t", "\v", "\f", "\n" ].map { |ch| ch.ord }.to_set.freeze private_constant :CHARS end end end adlint-3.2.14/lib/adlint/cpp/syntax.rb0000644000004100000410000007461312340630463017576 0ustar www-datawww-data# AST of C preprocessor language. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/symbol" require "adlint/location" require "adlint/exam" require "adlint/util" module AdLint #:nodoc: module Cpp #:nodoc: class SyntaxNode include Visitable include LocationHolder def location subclass_responsibility end def inspect(indent = 0) subclass_responsibility end def short_class_name self.class.name.sub(/\A.*::/, "") end end class IdentifierList < SyntaxNode def initialize(ids = []) @identifiers = ids end attr_reader :identifiers def push(id) @identifiers.push(id) self end def location @identifiers.first.location end def inspect(indent = 0) ([" " * indent + short_class_name] + @identifiers.map { |child| child.inspect }).join("\n") end end class PreprocessingFile < SyntaxNode def initialize(fpath, group = nil) @fpath = fpath @group = group end attr_reader :fpath attr_reader :group def location @group.location end def concat(pp_file) @group.group_parts.concat(pp_file.group.group_parts) end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + (@group ? @group.inspect(indent + 1) : "") end end class Group < SyntaxNode def initialize super @group_parts = [] end attr_reader :group_parts def push(group_part) @group_parts.push(group_part) self end def location @group_parts.first.location end def inspect(indent = 0) ([" " * indent + short_class_name] + @group_parts.map { |child| child.inspect(indent + 1) }).join("\n") end end class GroupPart < SyntaxNode; end class IfSection < GroupPart def initialize(if_group, elif_groups, else_group, endif_line) @if_group = if_group @elif_groups = elif_groups @else_group = else_group @endif_line = endif_line end attr_reader :if_group attr_reader :elif_groups attr_reader :else_group attr_reader :endif_line def location @if_group.location end def inspect(indent = 0) [" " * indent + short_class_name, @if_group ? @if_group.inspect(indent + 1) : nil, @elif_groups ? @elif_groups.inspect(indent + 1) : nil, @else_group ? @else_group.inspect(indent + 1) : nil, @endif_line ? @endif_line.inspect(indent + 1) : nil ].compact.join("\n") end end class IfGroup < SyntaxNode def initialize(keyword) @keyword = keyword end attr_reader :keyword def location @keyword.location end end class IfStatement < IfGroup def initialize(keyword, expr, group) super(keyword) @expression = expr @group = group end attr_accessor :expression attr_reader :group def inspect(indent = 0) [" " * indent + "#{short_class_name}", @expression.inspect(indent + 1), @group ? @group.inspect(indent + 1) : nil].compact.join("\n") end end class IfdefStatement < IfGroup def initialize(keyword, id, group) super(keyword) @identifier = id @group = group end attr_reader :identifier attr_reader :group def inspect(indent = 0) [" " * indent + "#{short_class_name} #{@identifier.inspect}", @group ? @group.inspect(indent + 1) : nil].join("\n") end end class IfndefStatement < IfGroup def initialize(keyword, id, group) super(keyword) @identifier = id @group = group end attr_reader :identifier attr_reader :group def inspect(indent = 0) [" " * indent + "#{short_class_name} #{@identifier.inspect}", @group ? @group.inspect(indent + 1) : nil].join("\n") end end class ElifGroups < SyntaxNode def initialize super @elif_statements = [] end attr_reader :elif_statements def push(elif_stmt) @elif_statements.push(elif_stmt) self end def inspect(indent = 0) ([" " * indent + short_class_name] + @elif_statements.map { |child| child.inspect(indent + 1) }).join("\n") end end class ElifGroup < SyntaxNode def initialize(keyword) @keyword = keyword end attr_reader :keyword def location @keyword.location end end class ElifStatement < ElifGroup def initialize(keyword, expr, group) super(keyword) @expression = expr @group = group end attr_accessor :expression attr_reader :group def inspect(indent = 0) [" " * indent + "#{short_class_name} #{@expression.inspect}", @group ? @group.inspect(indent + 1) : nil].compact.join("\n") end end class ElseGroup < SyntaxNode def initialize(keyword) @keyword = keyword end attr_reader :keyword def location @keyword.location end end class ElseStatement < ElseGroup def initialize(keyword, group) super(keyword) @group = group end attr_reader :group def inspect(indent = 0) [" " * indent + short_class_name, @group ? @group.inspect(indent + 1) : nil].compact.join("\n") end end class EndifLine < SyntaxNode def initialize(keyword) @keyword = keyword end attr_reader :keyword def location @keyword.location end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{@keyword.inspect})" end end class ControlLine < GroupPart def initialize(keyword) @keyword = keyword end attr_reader :keyword def location @keyword.location end end class IncludeLine < ControlLine def initialize(keyword, header_name, include_depth) super(keyword) @header_name = header_name @include_depth = include_depth end attr_reader :include_depth attr_reader :header_name attr_accessor :fpath end class UserIncludeLine < IncludeLine def initialize(keyword, usr_header_name, include_depth) super(keyword, usr_header_name, include_depth) end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{header_name.inspect})" end end class UserIncludeNextLine < UserIncludeLine; end class SystemIncludeLine < IncludeLine def initialize(keyword, sys_header_name, include_depth) super(keyword, sys_header_name, include_depth) end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{header_name.inspect})" end end class SystemIncludeNextLine < SystemIncludeLine; end class DefineLine < ControlLine include SymbolicElement def initialize(keyword, id, repl_list, sym) super(keyword) @identifier = id @replacement_list = repl_list @symbol = sym end attr_reader :identifier attr_reader :replacement_list attr_reader :symbol end class ObjectLikeDefineLine < DefineLine def inspect(indent = 0) " " * indent + "#{short_class_name} (#{identifier.inspect})" end end class PseudoObjectLikeDefineLine < DefineLine def initialize(name_str) super(Token.new(:DEFINE, "#define", Location.new), Token.new(:PP_TOKEN, name_str, Location.new), nil, nil) end def mark_as_referred_by(tok) end end class FunctionLikeDefineLine < DefineLine def initialize(keyword, id, id_list, repl_list, sym) super(keyword, id, repl_list, sym) @identifier_list = id_list end attr_reader :identifier_list def have_va_list? false end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{identifier.inspect})" end end class PseudoFunctionLikeDefineLine < FunctionLikeDefineLine def initialize(name_str, param_names) id_list = IdentifierList.new( param_names.map { |str| Token.new(:PP_TOKEN, str, Location.new) }) super(Token.new(:DEFINE, "#define", Location.new), Token.new(:PP_TOKEN, name_str, Location.new), id_list, nil, nil) end def mark_as_referred_by(tok) end end class VaFunctionLikeDefineLine < FunctionLikeDefineLine def have_va_list? true end end class UndefLine < ControlLine def initialize(keyword, id) super(keyword) @identifier = id end attr_reader :identifier def inspect(indent = 0) " " * indent + "#{short_class_name} (#{@identifier.inspect})" end end class LineLine < ControlLine def initialize(keyword, pp_toks) super(keyword) @pp_tokens = pp_toks end attr_reader :pp_tokens def inspect(indent = 0) " " * indent + "#{short_class_name} (#{@pp_tokens.inspect})" end end class ErrorLine < ControlLine def initialize(keyword, pp_toks) super(keyword) @pp_tokens = pp_toks end attr_reader :pp_tokens def inspect(indent = 0) " " * indent + "#{short_class_name} (#{@pp_tokens ? @pp_tokens.inspect : ""})" end end class PragmaLine < ControlLine def initialize(keyword, pp_toks) super(keyword) @pp_tokens = pp_toks end attr_reader :pp_tokens def inspect(indent = 0) " " * indent + "#{short_class_name} (#{@pp_tokens ? @pp_tokens.inspect : ""})" end end class TextLine < GroupPart def initialize(tok) @token = tok end attr_reader :token def location @token.location end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{@token.inspect})" end end class NullDirective < GroupPart def initialize(tok) @token = tok end attr_reader :token def location @token.location end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{@token.inspect})" end end class UnknownDirective < GroupPart def initialize(tok) @token = tok end attr_reader :token def location @token.location end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{@token.inspect})" end end class AsmSection < GroupPart def initialize(asm_line, endasm_line) @asm_line = asm_line @endasm_line = endasm_line end attr_reader :asm_line attr_reader :endasm_line def location @asm_line.location end def inspect(indent = 0) [" " * indent + short_class_name, @asm_line.inspect(indent + 1), @endasm_line.inspect(indent + 1)].join("\n") end end class AsmLine < SyntaxNode def initialize(keyword) @keyword = keyword end attr_reader :keyword def location @keyword.location end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{@keyword.inspect})" end end class EndasmLine < SyntaxNode def initialize(keyword) @keyword = keyword end attr_reader :keyword def location @keyword.location end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{@keyword.inspect})" end end class PPTokens < SyntaxNode def initialize super @tokens = [] end attr_reader :tokens def push(tok) @tokens.push(tok) self end def location @tokens.first.location end def may_represent_expression? return false if @tokens.size < 2 @tokens.all? do |pp_tok| case pp_tok.value when "{", "}" false when ";" false when "while", "do", "for", "if", "else", "switch", "case", "default", "goto", "return", "break", "continue" false when "typedef", "extern", "static", "auto", "regisiter" false else true end end end def may_represent_initializer? return false if @tokens.size < 2 if @tokens.first.value == "{" && @tokens.last.value == "}" @tokens.all? do |pp_tok| case pp_tok.value when "while", "do", "for", "if", "else", "switch", "case", "default", "goto", "return", "break", "continue" false when ";" false else true end end else false end end def may_represent_block? return false if @tokens.size < 2 if @tokens.first.value == "{" && @tokens.last.value == "}" @tokens.any? { |pp_tok| pp_tok.value == ";" } else false end end def may_represent_do_while_zero_idiom? return false if @tokens.size < 4 @tokens[0].value == "do" && @tokens[-4].value == "while" && @tokens[-3].value == "(" && @tokens[-2].value == "0" && @tokens[-1].value == ")" end def may_represent_specifier_qualifier_list? @tokens.select { |pp_tok| case pp_tok.value when "const", "volatile", "restrict" true when "*" true when "void", "signed", "unsigned", "char", "short", "int", "long", "float", "double" true else false end }.size > 1 end def may_represent_declaration_specifiers_head? @tokens.all? do |pp_tok| case pp_tok.value when "typedef", "extern", "static", "auto", "register" true when "const", "volatile", "restrict" true else false end end end PUNCTUATORS = [ "[", "]", "(", ")", "{", "}", ".", "->", "++", "--", "&", "*", "+", "-", "~", "!", "/", "%", "<<", ">>", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", ";", "...", "=", "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", "&=", "^=", "|=", ",", "#", "##", "<:", ":>", "<%", "%>", "%:", "%:%:" ].to_set.freeze private_constant :PUNCTUATORS def may_represent_punctuator? @tokens.size == 1 && PUNCTUATORS.include?(@tokens.first.value) end def may_represent_controlling_keyword? return false if @tokens.size > 1 case @tokens.first.value when "while", "do", "for", "if", "else", "switch", "case", "default", "goto", "return", "break", "continue" true else false end end def to_s @tokens.map { |tok| tok.value }.join(" ") end def inspect(indent = 0) " " * indent + self.to_s end end class Expression < SyntaxNode def initialize(val) @value = val end attr_reader :value def to_s subclass_responsibility end end class ErrorExpression < Expression def initialize(err_tok) super(0) @error_token = err_tok end attr_reader :error_token def location @error_token.location end def to_s "" end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{@error_token.inspect})" end end class PrimaryExpression < Expression; end class ConstantSpecifier < PrimaryExpression def initialize(val, const) super(val) @constant = const end attr_reader :constant def location @constant.location end def to_s @constant.value end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{constant.inspect})" end end class GroupedExpression < PrimaryExpression def initialize(val, expr) super(val) @expression = expr end attr_reader :expression def location @expression.location end def to_s "(#{@expression.to_s})" end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + @expression.inspect(indent + 1) end end class UnaryExpression < Expression def initialize(val, op) super(val) @operator = op end attr_reader :operator def location @operator.location end end class UnaryArithmeticExpression < UnaryExpression def initialize(val, op, expr) super(val, op) @expression = expr end attr_reader :expression def to_s "#{operator.value} #{@expression.to_s}" end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{operator.inspect})\n" + @expression.inspect(indent + 1) end end class DefinedExpression < UnaryExpression def initialize(val, op, id) super(val, op) @identifier = id end attr_reader :identifier def to_s "#{operator.value}(#{@identifier.value})" end def inspect(indent = 0) " " * indent + "#{short_class_name} " + "(#{operator.inspect} #{@identifier.inspect}" end end class BinaryExpression < Expression def initialize(val, op, lhs_expr, rhs_expr) super(val) @operator = op @lhs_expression = lhs_expr @rhs_expression = rhs_expr end attr_reader :operator attr_reader :lhs_expression attr_reader :rhs_expression def location @lhs_expression.location end def to_s "#{@lhs_expression.to_s} #{@operator.value} #{@rhs_expression.to_s}" end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{@operator.inspect})\n" + @lhs_expression.inspect(indent + 1) + "\n" + @rhs_expression.inspect(indent + 1) end end class MultiplicativeExpression < BinaryExpression; end class AdditiveExpression < BinaryExpression; end class ShiftExpression < BinaryExpression; end class RelationalExpression < BinaryExpression; end class EqualityExpression < BinaryExpression; end class AndExpression < BinaryExpression; end class ExclusiveOrExpression < BinaryExpression; end class InclusiveOrExpression < BinaryExpression; end class LogicalAndExpression < BinaryExpression; end class LogicalOrExpression < BinaryExpression; end class ConditionalExpression < Expression def initialize(val, cond, fst_expr, snd_expr) super(val) @condition = cond @first_expression = fst_expr @second_expression = snd_expr end attr_reader :condition attr_reader :first_expression attr_reader :second_expression def location @condition.location end def to_s "#{@condition.to_s}? " + "#{@first_expression.to_s} : #{@second_expression.to_s}" end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{@condition.inspect})\n" + @first_expression.inspect(indent + 1) + "\n" + @second_expression.inspect(indent + 1) end end class CommaSeparatedExpression < Expression def initialize(val) super(val) @expressions = [] end attr_writer :expressions def location @expressions.first.location end def to_s @expressions.map { |expr| expr.to_s }.join(",") end def push(expression) @expressions.push(expression) self end def inspect(indent = 0) ([" " * indent + short_class_name] + @expressions.map { |expr| expr.inspect(indent + 1) }).join("\n") end end class SyntaxTreeVisitor def visit_identifier_list(node) end def visit_preprocessing_file(node) node.group.accept(self) if node.group end def visit_group(node) node.group_parts.each { |group_part| group_part.accept(self) } end def visit_if_section(node) node.if_group.accept(self) if node.if_group node.elif_groups.accept(self) if node.elif_groups node.else_group.accept(self) if node.else_group node.endif_line.accept(self) if node.endif_line end def visit_if_statement(node) node.expression.accept(self) node.group.accept(self) if node.group end def visit_ifdef_statement(node) node.group.accept(self) if node.group end def visit_ifndef_statement(node) node.group.accept(self) if node.group end def visit_elif_groups(node) node.elif_statements.each { |elif_stmt| elif_stmt.accept(self) } end def visit_elif_statement(node) node.expression.accept(self) node.group.accept(self) if node.group end def visit_else_statement(node) node.group.accept(self) if node.group end def visit_endif_line(node) end def visit_user_include_line(node) end def visit_system_include_line(node) end def visit_user_include_next_line(node) end def visit_system_include_next_line(node) end def visit_object_like_define_line(node) end def visit_function_like_define_line(node) end def visit_va_function_like_define_line(node) end def visit_undef_line(node) end def visit_line_line(node) end def visit_error_line(node) end def visit_pragma_line(node) end def visit_text_line(node) end def visit_null_directive(node) end def visit_unknown_directive(node) end def visit_asm_section(node) end def visit_pp_tokens(node) end def visit_error_expression(node) end def visit_constant_specifier(node) end def visit_grouped_expression(node) node.expression.accept(self) end def visit_unary_arithmetic_expression(node) node.expression.accept(self) end def visit_defined_expression(node) end def visit_multiplicative_expression(node) node.lhs_expression.accept(self) node.rhs_expression.accept(self) end def visit_additive_expression(node) node.lhs_expression.accept(self) node.rhs_expression.accept(self) end def visit_shift_expression(node) node.lhs_expression.accept(self) node.rhs_expression.accept(self) end def visit_relational_expression(node) node.lhs_expression.accept(self) node.rhs_expression.accept(self) end def visit_equality_expression(node) node.lhs_expression.accept(self) node.rhs_expression.accept(self) end def visit_and_expression(node) node.lhs_expression.accept(self) node.rhs_expression.accept(self) end def visit_exclusive_or_expression(node) node.lhs_expression.accept(self) node.rhs_expression.accept(self) end def visit_inclusive_or_expression(node) node.lhs_expression.accept(self) node.rhs_expression.accept(self) end def visit_logical_and_expression(node) node.lhs_expression.accept(self) node.rhs_expression.accept(self) end def visit_logical_or_expression(node) node.lhs_expression.accept(self) node.rhs_expression.accept(self) end def visit_conditional_expression(node) node.condition.accept(self) node.first_expression.accept(self) node.second_expression.accept(self) end def visit_comma_separated_expression(node) node.expressions.each { |expr| expr.accept(self) } end end class SyntaxTreeMulticastVisitor < SyntaxTreeVisitor extend Pluggable def_plugin :enter_identifier_list def_plugin :leave_identifier_list def_plugin :enter_preprocessing_file def_plugin :leave_preprocessing_file def_plugin :enter_group def_plugin :leave_group def_plugin :enter_if_section def_plugin :leave_if_section def_plugin :enter_if_statement def_plugin :leave_if_statement def_plugin :enter_ifdef_statement def_plugin :leave_ifdef_statement def_plugin :enter_ifndef_statement def_plugin :leave_ifndef_statement def_plugin :enter_elif_groups def_plugin :leave_elif_groups def_plugin :enter_elif_statement def_plugin :leave_elif_statement def_plugin :enter_else_statement def_plugin :leave_else_statement def_plugin :enter_endif_line def_plugin :leave_endif_line def_plugin :enter_user_include_line def_plugin :leave_user_include_line def_plugin :enter_system_include_line def_plugin :leave_system_include_line def_plugin :enter_user_include_next_line def_plugin :leave_user_include_next_line def_plugin :enter_system_include_next_line def_plugin :leave_system_include_next_line def_plugin :enter_object_like_define_line def_plugin :leave_object_like_define_line def_plugin :enter_function_like_define_line def_plugin :leave_function_like_define_line def_plugin :enter_va_function_like_define_line def_plugin :leave_va_function_like_define_line def_plugin :enter_undef_line def_plugin :leave_undef_line def_plugin :enter_line_line def_plugin :leave_line_line def_plugin :enter_error_line def_plugin :leave_error_line def_plugin :enter_pragma_line def_plugin :leave_pragma_line def_plugin :enter_text_line def_plugin :leave_text_line def_plugin :enter_null_directive def_plugin :leave_null_directive def_plugin :enter_unknown_directive def_plugin :leave_unknown_directive def_plugin :enter_pp_tokens def_plugin :leave_pp_tokens def_plugin :enter_error_expression def_plugin :leave_error_expression def_plugin :enter_constant_specifier def_plugin :leave_constant_specifier def_plugin :enter_grouped_expression def_plugin :leave_grouped_expression def_plugin :enter_unary_arithmetic_expression def_plugin :leave_unary_arithmetic_expression def_plugin :enter_defined_expression def_plugin :leave_defined_expression def_plugin :enter_multiplicative_expression def_plugin :leave_multiplicative_expression def_plugin :enter_additive_expression def_plugin :leave_additive_expression def_plugin :enter_shift_expression def_plugin :leave_shift_expression def_plugin :enter_relational_expression def_plugin :leave_relational_expression def_plugin :enter_equality_expression def_plugin :leave_equality_expression def_plugin :enter_and_expression def_plugin :leave_and_expression def_plugin :enter_exclusive_or_expression def_plugin :leave_exclusive_or_expression def_plugin :enter_inclusive_or_expression def_plugin :leave_inclusive_or_expression def_plugin :enter_logical_and_expression def_plugin :leave_logical_and_expression def_plugin :enter_logical_or_expression def_plugin :leave_logical_or_expression def_plugin :enter_conditional_expression def_plugin :leave_conditional_expression def_plugin :enter_comma_separated_expression def_plugin :leave_comma_separated_expression def self.def_visitor_method(node_name) class_eval <<-EOS define_method("visit_#{node_name}") do |*args| visit_with_notifying(__method__, args.first) { super(args.first) } end EOS end private_class_method :def_visitor_method def_visitor_method :identifier_list def_visitor_method :preprocessing_file def_visitor_method :group def_visitor_method :if_section def_visitor_method :if_statement def_visitor_method :ifdef_statement def_visitor_method :ifndef_statement def_visitor_method :elif_groups def_visitor_method :elif_statement def_visitor_method :else_statement def_visitor_method :endif_line def_visitor_method :user_include_line def_visitor_method :system_include_line def_visitor_method :user_include_next_line def_visitor_method :system_include_next_line def_visitor_method :object_like_define_line def_visitor_method :function_like_define_line def_visitor_method :va_function_like_define_line def_visitor_method :undef_line def_visitor_method :line_line def_visitor_method :error_line def_visitor_method :pragma_line def_visitor_method :text_line def_visitor_method :null_directive def_visitor_method :unknown_directive def_visitor_method :pp_tokens def_visitor_method :error_expression def_visitor_method :constant_specifier def_visitor_method :grouped_expression def_visitor_method :unary_arithmetic_expression def_visitor_method :defined_expression def_visitor_method :multiplicative_expression def_visitor_method :additive_expression def_visitor_method :shift_expression def_visitor_method :relational_expression def_visitor_method :equality_expression def_visitor_method :and_expression def_visitor_method :exclusive_or_expression def_visitor_method :inclusive_or_expression def_visitor_method :logical_and_expression def_visitor_method :logical_or_expression def_visitor_method :conditional_expression def_visitor_method :comma_separated_expression private def visit_with_notifying(caller_method, node, &block) suffix = caller_method.to_s.sub(/\Avisit_/, "") __send__("enter_#{suffix}").invoke(node) yield __send__("leave_#{suffix}").invoke(node) end end module SyntaxNodeCollector def collect_define_lines(node) if node DefineLineCollector.new.tap { |col| node.accept(col) }.define_lines else [] end end module_function :collect_define_lines def collect_undef_lines(node) if node UndefLineCollector.new.tap { |col| node.accept(col) }.undef_lines else [] end end module_function :collect_undef_lines end class DefineLineCollector < SyntaxTreeVisitor def initialize @define_lines = [] end attr_reader :define_lines def visit_object_like_define_line(node) super @define_lines.push(node) end def visit_function_like_define_line(node) super @define_lines.push(node) end def visit_va_function_like_define_line(node) super @define_lines.push(node) end end class UndefLineCollector < SyntaxTreeVisitor def initialize @undef_lines = [] end attr_reader :undef_lines def visit_undef_line(node) super @undef_lines.push(node) end end end end adlint-3.2.14/lib/adlint/cpp/subst.rb0000644000004100000410000001627512340630463017410 0ustar www-datawww-data# Pre-analysis code substitution mechanism. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/report" require "adlint/util" require "adlint/cpp/lexer" module AdLint #:nodoc: module Cpp #:nodoc: class CodeSubstitution def initialize(ptn_str, repl_str) @pattern = StringToPPTokensLexer.new(ptn_str).execute.to_a @replacement = StringToPPTokensLexer.new(repl_str).execute.to_a end extend Pluggable def_plugin :on_substitution def execute(toks) rslt_toks = [] idx = 0 while first_tok = toks[idx] matcher = Matcher.new(@pattern) matched_len = matcher.match(toks, idx) if matcher.accepted? || idx + matched_len == toks.size notify_substitution(toks, idx, matched_len) rslt_toks.concat(@replacement.map { |tok| Token.new(tok.type, tok.value, first_tok.location, tok.type_hint) }) idx += matched_len else rslt_toks.push(first_tok) idx += 1 end end rslt_toks end private def notify_substitution(toks, idx, len) matched_toks = toks[idx, len] on_substitution.invoke(matched_toks) unless matched_toks.empty? end end class Matcher def initialize(ptn_toks) @state = OuterTokenMatching.new(self) @pattern_tokens = ptn_toks @pattern_index = 0 end def rest_pattern_tokens @pattern_tokens.drop(@pattern_index) end def next_pattern_token ptn_tok = @pattern_tokens[@pattern_index] @pattern_index += 1 ptn_tok end def match(toks, idx) return 0 if head = toks[idx] and head.type == :NEW_LINE match_len = 0 while tok = toks[idx] unless tok.type == :NEW_LINE @state = @state.process(tok) break unless @state.matching? end match_len += 1 idx += 1 end match_len end def accepted? @state.accepted? end def matching? @state.matching? end def rejected? @state.rejected? end class State def initialize(matcher) @matcher = matcher end attr_reader :matcher def process(tok) subclass_responsibility end def accepted? subclass_responsibility end def rejected? subclass_responsibility end def matching? !accepted? && !rejected? end private def next_pattern_token @matcher.next_pattern_token end def rest_pattern_tokens @matcher.rest_pattern_tokens end end private_constant :State class Accepted < State def accepted? true end def rejected? false end end private_constant :Accepted class Rejected < State def accepted? false end def rejected? true end end private_constant :Rejected class Matching < State def accepted? false end def rejected? false end end private_constant :Matching class OuterTokenMatching < Matching def process(tok) if ptn_tok = next_pattern_token if tok.value == ptn_tok.value case tok.value when "(", "[", "{" InnerTokenMatching.new(matcher, self) else self end else if ptn_tok.value == "__adlint__any" if sentry_tok = rest_pattern_tokens.first and tok.value == sentry_tok.value case tok.value when "(", "[", "{" InnerTokenMatching.new(matcher, self).process(tok) else self end else OuterAnyMatching.new(matcher) end else Rejected.new(matcher) end end else Accepted.new(matcher) end end end private_constant :OuterTokenMatching class OuterAnyMatching < Matching def process(tok) if sentry_tok = rest_pattern_tokens.first if tok.value == sentry_tok.value return OuterTokenMatching.new(@matcher).process(tok) end end self end end private_constant :OuterAnyMatching class InnerTokenMatching < Matching def initialize(matcher, prv_state) super(matcher) @prv_state = prv_state end def process(tok) if ptn_tok = next_pattern_token if tok.value == ptn_tok.value case tok.value when "(", "[", "{" InnerTokenMatching.new(matcher, self) when ")", "]", "}" @prv_state else self end else if ptn_tok.value == "__adlint__any" case tok.value when "(", "[", "{" InnerAnyMatching.new(matcher, self, 1) when ")", "]", "}" # NOTE: Return to the upper matching state and process the # current token in order not to discard it. @prv_state.process(tok) else InnerAnyMatching.new(matcher, self, 0) end else Rejected.new(matcher) end end else Accepted.new(matcher) end end end private_constant :InnerTokenMatching class InnerAnyMatching < Matching def initialize(matcher, prv_state, depth) super(matcher) @prv_state = prv_state @depth = depth end def process(tok) case tok.value when "(", "[", "{" @depth += 1 when ")", "]", "}" @depth -= 1 end if sentry_tok = rest_pattern_tokens.first if tok.value == sentry_tok.value if @depth < 0 return @prv_state.process(tok) end end end self end end private_constant :InnerAnyMatching end end end adlint-3.2.14/lib/adlint/exam/0000755000004100000410000000000012340630463016060 5ustar www-datawww-dataadlint-3.2.14/lib/adlint/exam/c_builtin.rb0000644000004100000410000002725212340630463020365 0ustar www-datawww-data# adlint-exam-c_builtin examination package loader. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint" require "adlint/exam/c_builtin/cc1_code" require "adlint/exam/c_builtin/cc1_check" require "adlint/exam/c_builtin/cc1_metric" require "adlint/exam/c_builtin/cpp_code" require "adlint/exam/c_builtin/cpp_check" require "adlint/exam/c_builtin/ld_check" require "adlint/exam/c_builtin/ld_metric" module AdLint #:nodoc: module Exam #:nodoc: module CBuiltin #:nodoc: Catalog = ExaminationCatalog.new(__FILE__) do |cat| cat.name = "c_builtin" cat.major_version = MAJOR_VERSION cat.minor_version = MINOR_VERSION cat.patch_version = PATCH_VERSION cat.release_date = RELEASE_DATE cat.examination_classes = [ W0001_Cc1, W0001_Cpp, W0002, W0003, W0007, W0010, W0013, W0016, W0017, W0018, W0019, W0021, W0023, W0024, W0025, W0026, W0027, W0028, W0030, W0031, W0033, W0035, W0036, W0037, W0038, W0039, W0040, W0041, W0042, W0043, W0049, W0050, W0051, W0052, W0053, W0054, W0055, W0056, W0057, W0058, W0059, W0060, W0061, W0062, W0063, W0064, W0065, W0066, W0067, W0068, W0069, W0070, W0071, W0072, W0073, W0076, W0077, W0078, W0079, W0080, W0081, W0082, W0084, W0085, W0086, W0087, W0088, W0093, W0096, W0097, W0100, W0101, W0102, W0103, W0104, W0105, W0107, W0108, W0109, W0110, W0112, W0114, W0115, W0116, W0117, W0118, W0119, W0120, W0121, W0122, W0123, W0124, W0125, W0126, W0127, W0128, W0129, W0130, W0131, W0132, W0133, W0134, W0135, W0136, W0137, W0138, W0139, W0140, W0141, W0142, W0143, W0144, W0145, W0146, W0147, W0148, W0149, W0150, W0151, W0152, W0153, W0154, W0155, W0156, W0157, W0158, W0159, W0160, W0161, W0162, W0163, W0164, W0165, W0166, W0167, W0168, W0169, W0170, W0171, W0172, W0173, W0174, W0175, W0176, W0177, W0178, W0179, W0180, W0181, W0182, W0183, W0184, W0185, W0186, W0187, W0188, W0189, W0190, W0191, W0192, W0193, W0194, W0195, W0196, W0197, W0198, W0199, W0200, W0201, W0202, W0203, W0204, W0205, W0206, W0207, W0208, W0209, W0210, W0211, W0212, W0213, W0214, W0215, W0216, W0217, W0218, W0219, W0220, W0221, W0222, W0223, W0224, W0225, W0226, W0227, W0228, W0229, W0230, W0231, W0232, W0233, W0234, W0235, W0236, W0237, W0238, W0239, W0240, W0241, W0242, W0243, W0244, W0245, W0246, W0247, W0248, W0249, W0250, W0251, W0252, W0253, W0254, W0255, W0256, W0257, W0258, W0259, W0260, W0261, W0262, W0263, W0264, W0265, W0266, W0267, W0268, W0269, W0270, W0271, W0272, W0273, W0274, W0275, W0276, W0277, W0278, W0279, W0280, W0281, W0282, W0283, W0284, W0285, W0286, W0287, W0288, W0289, W0290, W0291, W0292, W0293, W0294, W0295, W0296, W0297, W0298, W0299, W0300, W0301, W0302, W0303, W0304, W0305, W0306, W0307, W0308, W0309, W0310, W0311, W0312, W0313, W0314, W0315, W0316, W0317, W0318, W0319, W0320, W0321, W0322, W0323, W0324, W0325, W0326, W0327, W0328, W0329, W0330, W0331, W0332, W0333, W0334, W0335, W0336, W0337, W0338, W0339, W0340, W0341, W0342, W0343, W0344, W0345, W0346, W0347, W0348, W0349, W0350, W0351, W0352, W0353, W0354, W0355, W0356, W0357, W0358, W0359, W0360, W0361, W0362, W0363, W0364, W0365, W0366, W0367, W0368, W0369, W0370, W0371, W0372, W0373, W0374, W0375, W0376, W0377, W0378, W0379, W0380, W0381, W0382, W0383, W0384, W0385, W0386, W0387, W0388, W0389, W0390, W0391, W0392, W0393, W0394, W0395, W0396, W0397, W0398, W0399, W0400, W0401, W0402, W0403, W0404, W0405, W0406, W0407, W0408, W0409, W0410, W0411, W0413, W0414, W0421, W0422, W0423, W0424, W0425, W0431, W0432, W0440, W0441, W0442, W0443, W0444, W0445, W0446, W0447, W0456, W0457, W0458, W0459, W0460, W0461, W0462, W0477, W0478, W0479, W0480, W0481, W0482, W0483, W0488, W0489, W0490, W0491, W0492, W0493, W0495, W0496, W0497, W0498, W0499, W0500, W0501, W0502, W0508, W0511, W0512, W0525, W0528, W0529, W0530, W0532, W0534, W0535, W0538, W0540, W0541, W0542, W0543, W0544, W0546, W0549, W0551, W0552, W0553, W0554, W0555, W0556, W0559, W0560, W0561, W0562, W0563, W0564, W0565, W0566, W0567, W0568, W0569, W0570, W0571, W0572, W0573, W0574, W0575, W0576, W0577, W0578, W0579, W0580, W0581, W0582, W0583, W0584, W0585, W0586, W0589, W0591, W0593, W0597, W0598, W0599, W0600, W0605, W0606, W0607, W0608, W0609, W0610, W0611, W0612, W0613, W0614, W0622, W0623, W0624, W0625, W0626, W0627, W0628, W0629, W0632, W0633, W0634, W0635, W0636, W0637, W0638, W0639, W0640, W0641, W0642, W0643, W0644, W0645, W0646, W0649, W0650, W0653, W0654, W0655, W0656, W0657, W0658, W0659, W0660, W0661, W0662, W0663, W0664, W0665, W0666, W0667, W0668, W0669, W0670, W0671, W0672, W0673, W0674, W0675, W0676, W0677, W0678, W0679, W0680, W0681, W0682, W0683, W0684, W0685, W0686, W0687, W0688, W0689, W0690, W0691, W0692, W0694, W0695, W0696, W0697, W0698, W0699, W0700, W0703, W0704, W0705, W0707, W0708, W0711, W0712, W0713, W0714, W0715, W0716, W0717, W0718, W0719, W0720, W0721, W0722, W0723, W0726, W0727, W0728, W0729, W0730, W0731, W0732, W0733, W0734, W0735, W0736, W0737, W0738, W0739, W0740, W0741, W0742, W0743, W0744, W0745, W0747, W0748, W0749, W0750, W0751, W0752, W0753, W0754, W0755, W0756, W0757, W0758, W0759, W0760, W0761, W0762, W0763, W0764, W0765, W0766, W0767, W0768, W0769, W0770, W0771, W0774, W0775, W0776, W0777, W0778, W0779, W0780, W0781, W0783, W0785, W0786, W0787, W0788, W0789, W0790, W0791, W0792, W0793, W0794, W0795, W0796, W0797, W0798, W0799, W0800, W0801, W0804, W0805, W0806, W0807, W0808, W0809, W0810, W0811, W0827, W0828, W0830, W0831, W0832, W0833, W0834, W0947, W0948, W0949, W0950, W1026, W1027, W1028, W1029, W1030, W1031, W1032, W1033, W1034, W1037, W1039, W1040, W1041, W1046, W1047, W1049, W1050, W1051, W1052, W1053, W1054, W1055, W1056, W1057, W1058, W1059, W1060, W1061, W1062, W1063, W1064, W1065, W1066, W1067, W1068, W1069, W1070, W1071, W1072, W1073, W1074, W1075, W1076, W1077, W9001, W9002, W9003, FL_STMT, FL_FUNC, FN_STMT, FN_UNRC, FN_LINE, FN_PARA, FN_UNUV, FN_CSUB, FN_GOTO, FN_RETN, FN_UELS, FN_NEST, FN_PATH, FN_CYCM, FN_CALL, TypeDclExtraction, GVarDclExtraction, FunDclExtraction, VarDefExtraction, FunDefExtraction, LabelDefExtraction, InitializationExtraction, AssignmentExtraction, FuncallExtraction, XRefExtraction, LiteralExtraction, ObjLikeMacroExtraction, FunLikeMacroExtraction, IncludeDirectiveExtraction, DirectiveExtraction ] end end end end adlint-3.2.14/lib/adlint/exam/c_builtin/0000755000004100000410000000000012340630463020030 5ustar www-datawww-dataadlint-3.2.14/lib/adlint/exam/c_builtin/ld_metric.rb0000644000004100000410000000363512340630463022326 0ustar www-datawww-data# Metric measurements (ld-phase) of adlint-exam-c_builtin package. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/exam" require "adlint/report" require "adlint/ld/phase" module AdLint #:nodoc: module Exam #:nodoc: module CBuiltin #:nodoc: class FN_CALL < MetricMeasurement def_registrant_phase Ld::PreparePhase def initialize(phase_ctxt) super phase_ctxt[:ld_function_traversal].on_definition += T(:measure) @call_graph = phase_ctxt[:ld_call_graph] end private def do_prepare(*) end def do_execute(*) end def measure(fun) FN_CALL(FunctionId.new(fun.name, fun.signature), fun.location, @call_graph.all_callers_of(fun).count { |ref| ref.function }) end end end end end adlint-3.2.14/lib/adlint/exam/c_builtin/cpp_check.rb0000644000004100000410000012146112340630463022301 0ustar www-datawww-data# Code checkings (cpp-phase) of adlint-exam-c_builtin package. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/exam" require "adlint/report" require "adlint/traits" require "adlint/cpp/phase" require "adlint/cpp/util" module AdLint #:nodoc: module Exam #:nodoc: module CBuiltin #:nodoc: class W0001_Cpp < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0001 may be duplicative when the same header which has the deeply # grouped expression is included twice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_grouped_expression += T(:enter_grouped_expression) trav.leave_grouped_expression += T(:leave_grouped_expression) @group_depth = 0 end private def enter_grouped_expression(node) @group_depth += 1 W(node.location) if @group_depth == 32 end def leave_grouped_expression(node) @group_depth -= 1 end end class W0025 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_user_header_included += T(:check_user_include) interp.on_system_header_included += T(:check_system_include) @usr_header_fpaths = Set.new @sys_header_fpaths = Set.new end private def check_user_include(usr_include_line, usr_header) if @usr_header_fpaths.include?(usr_header.fpath) W(usr_include_line.location, usr_include_line.fpath) else if usr_include_line.include_depth == 1 @usr_header_fpaths.add(usr_header.fpath) end end end def check_system_include(sys_include_line, sys_header) if @sys_header_fpaths.include?(sys_header.fpath) W(sys_include_line.location, sys_include_line.fpath) else if sys_include_line.include_depth == 1 @sys_header_fpaths.add(sys_header.fpath) end end end end class W0026 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_user_header_included += T(:check_user_include) interp.on_system_header_included += T(:check_system_include) @usr_header_fpaths = Set.new @sys_header_fpaths = Set.new end private def check_user_include(usr_include_line, usr_header) if @usr_header_fpaths.include?(usr_header.fpath) W(usr_include_line.location, usr_include_line.fpath) else if usr_include_line.include_depth > 1 @usr_header_fpaths.add(usr_header.fpath) end end end def check_system_include(sys_include_line, sys_header) if @sys_header_fpaths.include?(sys_header.fpath) W(sys_include_line.location, sys_include_line.fpath) else if sys_include_line.include_depth > 1 @sys_header_fpaths.add(sys_header.fpath) end end end end class W0053 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_user_header_included += T(:check_user_include) end private def check_user_include(usr_include_line, usr_header) if usr_include_line.include_depth == 7 W(usr_include_line.location, usr_header.fpath) end end end class W0054 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_if_section += T(:enter_if_section) trav.leave_if_section += T(:leave_if_section) @if_depth = 0 end private def enter_if_section(node) @if_depth += 1 W(node.location) if @if_depth == 9 end def leave_if_section(*) @if_depth -= 1 end end class W0055 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_object_like_macro_defined += T(:check) interp.on_function_like_macro_defined += T(:check) interp.on_va_function_like_macro_defined += T(:check) @macro_num = 0 end private def check(define_line, *) unless in_initial_header?(define_line) @macro_num += 1 W(define_line.location) if @macro_num == 1025 end end def in_initial_header?(node) node.location.fpath.identical?(pinit_fpath) || node.location.fpath.identical?(cinit_fpath) end def pinit_fpath if fpath = traits.of_project.initial_header Pathname.new(fpath) else nil end end memoize :pinit_fpath def cinit_fpath if fpath = traits.of_compiler.initial_header Pathname.new(fpath) else nil end end memoize :cinit_fpath end class W0056 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0056 may be duplicative when the same header which has macro # definition with too many parameters is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_function_like_macro_defined += T(:check) interp.on_va_function_like_macro_defined += T(:check) end private def check(define_line, macro) W(define_line.location) if macro.parameter_names.size > 31 end end class W0057 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0057 may be duplicative when the same header which has macro call # with too many arguments is included twice or more. mark_as_unique def initialize(phase_ctxt) super macro_table = phase_ctxt[:cpp_macro_table] macro_table.on_function_like_macro_replacement += T(:check) end private def check(macro, repl_toks, *) W(repl_toks.first.location) if macro.parameter_names.size > 31 end end class W0059 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0059 may be duplicative when the same header which has carriage # return at end of lines is included twice or more. mark_as_unique # NOTE: W0059 may be detected before evaluating the annotation for message # suppression. mark_as_deferred def initialize(phase_ctxt) super phase_ctxt[:cpp_interpreter].on_cr_at_eol_found += M(:check) end private def check(loc) W(loc) if loc.in_analysis_target?(traits) end end class W0060 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0060 may be duplicative when the same header which has the # end-of-file mark is included twice or more. mark_as_unique # NOTE: W0060 may be detected before evaluating the annotation for message # suppression. mark_as_deferred def initialize(phase_ctxt) super phase_ctxt[:cpp_interpreter].on_eof_mark_at_eof_found += M(:check) end private def check(loc) W(loc) if loc.in_analysis_target?(traits) end end class W0061 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0061 may be duplicative when the same header which has the token # sequence of the compiler specific extension is included twice or # more. mark_as_unique def initialize(phase_ctxt) super phase_ctxt[:cc1_source].on_language_extension += M(:check) end private def check(matched_toks) head_loc = matched_toks.first.location if head_loc.in_analysis_target?(traits) W(head_loc, tokens_to_str(matched_toks)) end end def tokens_to_str(toks) toks.map { |tok| tok.type == :NEW_LINE ? nil : tok.value }.compact.join(" ") end end class W0069 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0069 may be duplicative when the same header which has the nested # block comment is included twice or more. mark_as_unique def initialize(phase_ctxt) super phase_ctxt[:cpp_interpreter].on_nested_block_comment_found += M(:check) end private def check(loc) W(loc) if loc.in_analysis_target?(traits) end end class W0072 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0072 may be duplicative when the same header which has non # basic-source-character in the #include directive is included twice # or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_user_include_line += T(:check_user_include_line) trav.enter_system_include_line += T(:check_system_include_line) end private def check_user_include_line(node) unless Cpp::BasicSourceCharacterSet.include?(node.header_name.value) W(node.header_name.location) end end def check_system_include_line(node) unless Cpp::BasicSourceCharacterSet.include?(node.header_name.value) W(node.header_name.location) end end end class W0073 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0073 may be duplicative when the same header without the # include-guard is included twice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_user_include_line += T(:enter_include_line) trav.enter_system_include_line += T(:enter_include_line) trav.enter_text_line += T(:enter_text_line) trav.enter_if_section += T(:enter_if_section) @main_fpath = phase_ctxt[:sources].first.fpath @last_fpath = nil @enclosed_by_if_section = false @warned_files = Set.new end private def enter_include_line(node) unless node.location.fpath == @last_fpath @enclosed_by_if_section = false @last_fpath = node.location.fpath end return if in_initial_header?(node) || in_main_file?(node) unless @enclosed_by_if_section || in_warned_file?(node) W(node.location) @warned_files.add(node.location.fpath) end end def enter_text_line(node) unless node.location.fpath == @last_fpath @enclosed_by_if_section = false @last_fpath = node.location.fpath end if empty_line?(node) || in_initial_header?(node) || in_main_file?(node) return end unless @enclosed_by_if_section || in_warned_file?(node) W(node.location) @warned_files.add(node.location.fpath) end end def enter_if_section(node) @enclosed_by_if_section = true @last_fpath = node.location.fpath end def empty_line?(node) node.token.value.chomp.empty? end def in_main_file?(node) node.location.fpath == @main_fpath end def in_initial_header?(node) node.location.fpath.identical?(pinit_fpath) || node.location.fpath.identical?(cinit_fpath) end def in_warned_file?(node) @warned_files.include?(node.location.fpath) end def pinit_fpath if fpath = traits.of_project.initial_header Pathname.new(fpath) else nil end end memoize :pinit_fpath def cinit_fpath if fpath = traits.of_compiler.initial_header Pathname.new(fpath) else nil end end memoize :cinit_fpath end class W0442 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0442 may be duplicative when the same header which has # function-like macro definitions is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_function_like_macro_defined += T(:check) interp.on_va_function_like_macro_defined += T(:check) end private def check(define_line, *) W(define_line.location) end end class W0443 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0443 may be duplicative when the same header which has # functionizable function-like macro definitions is included twice or # more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_function_like_define_line += T(:check) trav.enter_va_function_like_define_line += T(:check) end private def check(node) return unless node.identifier_list if repl_lsit = node.replacement_list should_be_function = repl_lsit.tokens.all? { |pp_tok| if keyword_or_punctuator?(pp_tok) false elsif type_specifier_or_type_qualifier?(pp_tok) false else true end } W(node.location) if should_be_function end end KEYWORDS = [ "sizeof", "typedef", "extern", "static", "auto", "register", "inline", "restrict", "char", "short", "int", "long", "signed", "unsigned", "float", "double", "const", "volatile", "void", "_Bool", "_Complex", "_Imaginary", "struct", "union", "enum", "case", "default", "if", "else", "switch", "while", "do", "for", "goto", "continue", "break", "return" ].to_set.freeze private_constant :KEYWORDS def keyword_or_punctuator?(pp_tok) pp_tok.value == "#" || pp_tok.value == "##" || pp_tok.value == "{" || pp_tok.value == "}" || pp_tok.value == ";" || KEYWORDS.include?(pp_tok.value) end def type_specifier_or_type_qualifier?(pp_tok) pp_tok.value == "const" || pp_tok.value == "volatile" || pp_tok.value == "restrict" || @phase_ctxt[:cc1_type_table].all_type_names.include?(pp_tok.value) end end class W0444 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0444 may be duplicative when the same header which has the # function-like macro definition with `#' and `##' operators is # included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_function_like_macro_defined += T(:check) interp.on_va_function_like_macro_defined += T(:check) end private def check(define_line, macro) if repl_list = macro.replacement_list sharp_op_num = 0 sharpsharp_op_num = 0 repl_list.tokens.each do |pp_tok| case pp_tok.value when "#" sharp_op_num += 1 when "##" sharpsharp_op_num += 1 end end W(define_line.location) if sharp_op_num > 0 && sharpsharp_op_num > 0 end end end class W0445 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0445 may be duplicative when the same header which has the # function-like macro definition with two or more `##' operators is # included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_function_like_macro_defined += T(:check) interp.on_va_function_like_macro_defined += T(:check) end private def check(define_line, macro) if repl_list = macro.replacement_list sharpsharp_op_num = 0 repl_list.tokens.each do |pp_tok| if pp_tok.value == "##" sharpsharp_op_num += 1 end end W(define_line.location) if sharpsharp_op_num > 1 end end end class W0477 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0477 may be duplicative when the same header which has the macro # definition with unbalanced grouping tokens is included twice or # more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_object_like_macro_defined += T(:check) interp.on_function_like_macro_defined += T(:check) interp.on_va_function_like_macro_defined += T(:check) end private def check(define_line, macro) if repl_list = macro.replacement_list paren_count = 0 brace_count = 0 bracket_count = 0 repl_list.tokens.each do |pp_tok| case pp_tok.value when "(" paren_count += 1 when ")" paren_count -= 1 when "{" brace_count += 1 when "}" brace_count -= 1 when "[" bracket_count += 1 when "]" bracket_count -= 1 end end unless paren_count == 0 && brace_count == 0 && bracket_count == 0 W(define_line.location) end end end end class W0478 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0478 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_object_like_define_line += T(:check) trav.enter_function_like_define_line += T(:check) trav.enter_va_function_like_define_line += T(:check) end private def check(node) if repl_list = node.replacement_list and repl_list.tokens.size > 1 unless repl_list.may_represent_expression? || repl_list.may_represent_initializer? || repl_list.may_represent_block? || repl_list.may_represent_do_while_zero_idiom? || repl_list.may_represent_specifier_qualifier_list? || repl_list.may_represent_declaration_specifiers_head? W(node.location) end end end end class W0479 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0479 may be duplicative when the same header which has # typedef-able macro definition is included twice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_object_like_define_line += T(:check) end private def check(node) if repl_list = node.replacement_list if repl_list.may_represent_specifier_qualifier_list? W(node.location) end end end end class W0480 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0480 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_object_like_define_line += T(:check) trav.enter_function_like_define_line += T(:check) trav.enter_va_function_like_define_line += T(:check) end private def check(node) if repl_list = node.replacement_list and repl_list.may_represent_punctuator? || repl_list.may_represent_controlling_keyword? W(node.location) end end end class W0481 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0481 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_object_like_define_line += T(:check) trav.enter_function_like_define_line += T(:check) trav.enter_va_function_like_define_line += T(:check) end private def check(node) if repl_list = node.replacement_list and repl_list.may_represent_block? W(node.location) end end end class W0482 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0482 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_object_like_define_line += T(:check) end private def check(node) if repl_list = node.replacement_list return unless repl_list.tokens.size == 1 if type_specifier?(repl_list.tokens.first) W(node.location) end end end def type_specifier?(pp_tok) case pp_tok.value when "void", "char", "short", "int", "long", "float", "double" true when "signed", "unsigned" true when "struct", "union", "enum" true else false end end end class W0483 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0483 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_object_like_define_line += T(:check) end private def check(node) if repl_list = node.replacement_list if repl_list.may_represent_declaration_specifiers_head? W(node.location) end end end end class W0511 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0511 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super phase_ctxt[:cpp_interpreter].on_line_comment_found += M(:check) end private def check(*, loc) W(loc) if loc.in_analysis_target?(traits) end end class W0528 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0528 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_object_like_macro_defined += T(:check) end private def check(*, macro) if repl_list = macro.replacement_list octal_tok = repl_list.tokens.find { |pp_tok| pp_tok.value =~ /\A0[0-9]+[UL]*\z/i } W(octal_tok.location) if octal_tok end end end class W0541 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0541 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super phase_ctxt[:cc1_source].on_inline_assembly += M(:check) end private def check(asm_toks) head_loc = asm_toks.first.location if head_loc.in_analysis_target?(traits) W(head_loc) unless asm_toks.any? { |tok| tok.replaced? } end end end class W0549 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0549 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_function_like_macro_defined += T(:check) interp.on_va_function_like_macro_defined += T(:check) end private def check(*, macro) return unless macro.replacement_list macro.parameter_names.each do |name| macro.replacement_list.tokens.each_with_index do |pp_tok, idx| next unless pp_tok.value == name prv_tok = macro.replacement_list.tokens[[idx - 1, 0].max] nxt_tok = macro.replacement_list.tokens[idx + 1] next if prv_tok && prv_tok.value =~ /\A##?\z/ next if nxt_tok && nxt_tok.value == "##" unless prv_tok && prv_tok.value == "(" W(pp_tok.location) next end unless nxt_tok && nxt_tok.value == ")" W(pp_tok.location) next end end end end end class W0554 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0554 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_unknown_pragma_evaled += T(:check) end private def check(pragma_line) W(pragma_line.location, pragma_line.pp_tokens ? pragma_line.pp_tokens.to_s : "") end end class W0574 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0574 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_pp_token_extracted += T(:check_pp_token) interp.on_object_like_macro_defined += T(:check_macro) interp.on_function_like_macro_defined += T(:check_macro) interp.on_va_function_like_macro_defined += T(:check_macro) end private def check_pp_token(pp_tok) if pp_tok.value =~ /\AL?'(.*)'\z/ unless Cpp::BasicSourceCharacterSet.include?($1) W(pp_tok.location) end end end def check_macro(*, macro) if repl_lsit = macro.replacement_list repl_lsit.tokens.each { |pp_tok| check_pp_token(pp_tok) } end end end class W0575 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0575 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_pp_token_extracted += T(:check_pp_token) interp.on_object_like_macro_defined += T(:check_macro) interp.on_function_like_macro_defined += T(:check_macro) interp.on_va_function_like_macro_defined += T(:check_macro) end private def check_pp_token(pp_tok) if pp_tok.value =~ /\AL?"(.*)"\z/ unless Cpp::BasicSourceCharacterSet.include?($1) W(pp_tok.location) end end end def check_macro(*, macro) if repl_list = macro.replacement_list repl_list.tokens.each { |pp_tok| check_pp_token(pp_tok) } end end end class W0576 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0576 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_block_comment_found += M(:check) interp.on_line_comment_found += M(:check) @warned_chars = Set.new end private def check(comment, loc) if loc.in_analysis_target?(traits) not_adapted = Cpp::BasicSourceCharacterSet.select_not_adapted(comment) new_chars = not_adapted.to_set - @warned_chars unless new_chars.empty? W(loc, loc.fpath) @warned_chars.merge(new_chars) end end end end class W0577 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0577 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_unlexable_char_found += M(:check) @warned = false end private def check(*, loc) if loc.in_analysis_target?(traits) unless @warned W(loc, loc.fpath) @warned = true end end end end class W0632 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0632 may be duplicative when the same header which has references # to the undefined macro is included twice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_system_include_line += T(:check) trav.enter_system_include_next_line += T(:check) end private def check(include_line) if include_line.header_name.value =~ /['"]/ W(include_line.location, include_line.header_name.value) end end end class W0633 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0633 may be duplicative when the same header which has references # to the undefined macro is included twice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_user_include_line += T(:check) trav.enter_user_include_next_line += T(:check) end private def check(include_line) if include_line.header_name.value =~ /'/ W(include_line.location, include_line.header_name.value) end end end class W0634 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0634 may be duplicative when the same header which has references # to the undefined macro is included twice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_user_include_line += T(:check) trav.enter_user_include_next_line += T(:check) trav.enter_system_include_line += T(:check) trav.enter_system_include_next_line += T(:check) end private def check(include_line) if include_line.header_name.value.include?("\\") W(include_line.location) end end end class W0643 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0643 may be duplicative when the same header which has references # to the undefined macro is included twice or more. mark_as_unique def initialize(phase_ctxt) super macro_table = phase_ctxt[:cpp_macro_table] macro_table.on_last_backslash_ignored += T(:check) end private def check(tok) W(tok.location) end end class W0687 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0687 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_macro_undefined += T(:check) end private def check(undef_line, *) if undef_line.identifier.value == "defined" W(undef_line.identifier.location) end end end class W0688 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0688 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_line_line += T(:check) end private def check(line_line) if line_no_arg = line_no_argument(line_line) line_no = Integer(line_no_arg.value) unless line_no > 0 && line_no < 32768 W(line_no_arg.location) end end rescue end def line_no_argument(line_line) line_line.pp_tokens ? line_line.pp_tokens.tokens.first : nil end end class W0689 < W0688 def_registrant_phase Cpp::Prepare2Phase # NOTE: W0689 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique private def check(line_line) if fname_arg = file_name_argument(line_line) unless fname_arg.value =~ /\A".*"\z/ W(fname_arg.location) end end end def file_name_argument(line_line) line_line.pp_tokens ? line_line.pp_tokens.tokens[1] : nil end end class W0690 < W0688 def_registrant_phase Cpp::Prepare2Phase # NOTE: W0690 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique private def check(line_line) if line_no_arg = line_no_argument(line_line) Integer(line_no_arg.value) end rescue W(line_no_arg.location) end end class W0691 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0691 may be duplicative when the same header which has references # to the undefined macro is included twice or more. mark_as_unique def initialize(phase_ctxt) super macro_table = phase_ctxt[:cpp_macro_table] macro_table.on_sharpsharp_operator_evaled += T(:check) end private def check(*, new_toks) W(new_toks.first.location) if new_toks.size > 1 end end class W0692 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0692 may be duplicative when the same header which has references # to the undefined macro is included twice or more. mark_as_unique def initialize(phase_ctxt) super macro_table = phase_ctxt[:cpp_macro_table] macro_table.on_function_like_macro_replacement += T(:check) end private def check(macro, repl_toks, args, *) unless macro.parameter_names.empty? if args.any? { |arg| arg.empty? } W(repl_toks.first.location, macro.name.value) end end end end class W0695 < W0687 def_registrant_phase Cpp::Prepare2Phase # NOTE: W0695 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique private def check(undef_line, *) if undef_line.identifier.value == "assert" W(undef_line.identifier.location) end end end class W0696 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0696 may be duplicative when the same header which has references # to the undefined macro is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_undefined_macro_referred += T(:check) end private def check(tok) W(tok.location, tok.value) end end class W0804 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0804 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super phase_ctxt[:cpp_interpreter].on_illformed_defined_op_found += M(:check) end private def check(loc, *) W(loc) if loc.in_analysis_target?(traits) end end class W0805 < W0804 def_registrant_phase Cpp::Prepare2Phase # NOTE: W0805 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique private def check(loc, no_args) if loc.in_analysis_target?(traits) W(loc) unless no_args end end end class W0806 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0806 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_object_like_macro_defined += T(:check) end private def check(define_line, *) if define_line.identifier.value == "defined" W(define_line.identifier.location) end end end class W0807 < W0687 def_registrant_phase Cpp::Prepare2Phase # NOTE: W0807 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique private def check(undef_line, macro) if macro.kind_of?(Cpp::SpecialMacro) identifier = undef_line.identifier W(identifier.location, identifier.value) end end end class W0808 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0808 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_object_like_macro_defined += T(:check) @macro_tbl = phase_ctxt[:cpp_macro_table] end private def check(define_line, *) id = define_line.identifier W(id.location, id.value) if @macro_tbl.lookup(id.value) end end class W0811 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0811 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super macro_table = phase_ctxt[:cpp_macro_table] macro_table.on_object_like_macro_replacement += T(:check) macro_table.on_function_like_macro_replacement += T(:check) end private def check(*, rslt_toks) if defined_tok = rslt_toks.find { |tok| tok.value == "defined" } W(defined_tok.location) end end end class W0831 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0831 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_asm_section_evaled += T(:check) end private def check(asm_section) W(asm_section.location) end end class W0832 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W0832 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super phase_ctxt[:cc1_source].on_inline_assembly += M(:check) end private def check(asm_toks) head_loc = asm_toks.first.location W(head_loc) if head_loc.in_analysis_target?(traits) end end class W1040 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W1040 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_extra_tokens_found += M(:check) end private def check(extra_toks) head_loc = extra_toks.first.location W(head_loc) if head_loc.in_analysis_target?(traits) end end class W1041 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W1041 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_unknown_directive += T(:check) end private def check(node) W(node.location, node.token.value.chomp.strip) end end class W1046 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W1046 may be duplicative when the same header which causes this # warning is included twice or more. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_illformed_newline_escape_found += M(:check) end private def check(loc) W(loc) if loc.in_analysis_target?(traits) end end class W9002 < PassiveCodeCheck def_registrant_phase Cpp::Prepare2Phase # NOTE: W9002 may be duplicative when the same header which has no newline # at end of the file is included twice or more. mark_as_unique # NOTE: W9002 may be detected before evaluating the annotation for message # suppression. mark_as_deferred def initialize(phase_ctxt) super phase_ctxt[:cpp_interpreter].on_eof_newline_not_found += M(:check) end private def check(loc) W(loc) if loc.in_analysis_target?(traits) end end end end end adlint-3.2.14/lib/adlint/exam/c_builtin/cc1_code.rb0000644000004100000410000003321212340630463022016 0ustar www-datawww-data# Code structure extractions (cc1-phase) of adlint-exam-c_builtin package. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/exam" require "adlint/report" require "adlint/cc1/phase" require "adlint/cc1/syntax" module AdLint #:nodoc: module Exam #:nodoc: module CBuiltin #:nodoc: class TypeDclExtraction < CodeExtraction def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_typedef_declaration += T(:extract_typedef_dcl) trav.enter_struct_type_declaration += T(:extract_struct_dcl) trav.enter_union_type_declaration += T(:extract_union_dcl) trav.enter_enum_type_declaration += T(:extract_enum_dcl) end private def do_prepare(*) end def do_execute(*) end def extract_typedef_dcl(typedef_dcl) TYPEDCL(typedef_dcl.identifier.location, "T", typedef_dcl.type.name, typedef_dcl.type.image) end def extract_struct_dcl(struct_type_dcl) TYPEDCL(struct_type_dcl.identifier.location, "S", struct_type_dcl.type.name, struct_type_dcl.type.image) end def extract_union_dcl(union_type_dcl) TYPEDCL(union_type_dcl.identifier.location, "U", union_type_dcl.type.name, union_type_dcl.type.image) end def extract_enum_dcl(enum_type_dcl) TYPEDCL(enum_type_dcl.identifier.location, "E", enum_type_dcl.type.name, enum_type_dcl.type.image) end end class GVarDclExtraction < CodeExtraction def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_declared += T(:extract) end private def do_prepare(*) end def do_execute(*) end def extract(var_dcl, var) if var.declared_as_extern? GVARDCL(var_dcl.identifier.location, var_dcl.identifier.value, var_dcl.type.brief_image) end end end class FunDclExtraction < CodeExtraction def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_function_declared += T(:extract_explicit_dcl) interp.on_implicit_function_declared += T(:extract_implicit_dcl) interp.on_block_started += T(:enter_block) interp.on_block_ended += T(:leave_block) @block_level = 0 end private def do_prepare(*) end def do_execute(*) end def extract_explicit_dcl(fun_dcl, fun) if fun.declared_as_extern? FUNDCL(fun_dcl.identifier.location, "X", @block_level == 0 ? "F" : "B", "E", FunctionId.new(fun_dcl.identifier.value, fun_dcl.signature.to_s)) else FUNDCL(fun_dcl.identifier.location, "I", @block_level == 0 ? "F" : "B", "E", FunctionId.new(fun_dcl.identifier.value, fun_dcl.signature.to_s)) end end def extract_implicit_dcl(expr, fun) if fun.named? FUNDCL(expr.location, "X", "F", "I", FunctionId.new(fun.name, fun.signature.to_s)) end end def enter_block(*) @block_level += 1 end def leave_block(*) @block_level -= 1 end end class VarDefExtraction < CodeExtraction def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:extract_variable) interp.on_parameter_defined += T(:extract_parameter) interp.on_block_started += T(:enter_block) interp.on_block_ended += T(:leave_block) @block_level = 0 end private def do_prepare(*) end def do_execute(*) end def extract_variable(var_def, var) case when var.declared_as_extern? VARDEF(var_def.identifier.location, "X", @block_level == 0 ? "F" : "B", storage_class_type(var_def.storage_class_specifier), var_def.identifier.value, var_def.type.brief_image) when var.declared_as_static? VARDEF(var_def.identifier.location, "I", @block_level == 0 ? "F" : "B", storage_class_type(var_def.storage_class_specifier), var_def.identifier.value, var_def.type.brief_image) when var.declared_as_auto? VARDEF(var_def.identifier.location, "I", @block_level == 0 ? "F" : "B", storage_class_type(var_def.storage_class_specifier), var_def.identifier.value, var_def.type.brief_image) when var.declared_as_register? VARDEF(var_def.identifier.location, "I", @block_level == 0 ? "F" : "B", storage_class_type(var_def.storage_class_specifier), var_def.identifier.value, var_def.type.brief_image) end end def extract_parameter(param_def, var) if var.named? VARDEF(param_def.identifier.location, "I", "P", storage_class_type(param_def.storage_class_specifier), param_def.identifier.value, param_def.type.brief_image) end end def enter_block(*) @block_level += 1 end def leave_block(*) @block_level -= 1 end def storage_class_type(sc_spec) if sc_spec case sc_spec.type when :AUTO "A" when :REGISTER "R" when :STATIC "S" when :EXTERN "E" else "N" end else "N" end end end class FunDefExtraction < CodeExtraction def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_function_defined += T(:extract_function) end private def do_prepare(*) end def do_execute(*) end def extract_function(fun_def, fun) fun_id = FunctionId.new(fun_def.identifier.value, fun_def.signature.to_s) case when fun.declared_as_extern? FUNDEF(fun_def.identifier.location, "X", "F", fun_id, fun_def.lines) when fun.declared_as_static? FUNDEF(fun_def.identifier.location, "I", "F", fun_id, fun_def.lines) end end end class LabelDefExtraction < CodeExtraction def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_generic_labeled_statement += T(:extract) end private def do_prepare(*) end def do_execute(*) end def extract(labeled_stmt) LABELDEF(labeled_stmt.label.location, labeled_stmt.label.value) end end class InitializationExtraction < CodeExtraction def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_variable_definition += T(:extract) end private def do_prepare(*) end def do_execute(*) end def extract(var_def) if var_def.initializer INITIALIZATION(var_def.identifier.location, var_def.identifier.value, var_def.initializer.to_s) end end end class AssignmentExtraction < CodeExtraction def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_simple_assignment_expression += T(:extract) trav.enter_compound_assignment_expression += T(:extract) end private def do_prepare(*) end def do_execute(*) end def extract(assign_expr) ASSIGNMENT(assign_expr.operator.location, assign_expr.lhs_operand.to_s, stringify(assign_expr)) end def stringify(assign_expr) "#{assign_expr.operator.value} #{assign_expr.rhs_operand.to_s}" end end class FuncallExtraction < CodeExtraction def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:update_caller) interp.on_function_ended += T(:clear_caller) interp.on_function_call_expr_evaled += T(:extract_function_call) @caller = nil end private def do_prepare(*) end def do_execute(*) end def update_caller(*, fun) @caller = fun end def clear_caller(*) @caller = nil end def extract_function_call(funcall_expr, fun, *) if fun.named? if @caller referrer = FunctionId.new(@caller.name, @caller.signature.to_s) else referrer = FunctionId.of_ctors_section end FUNCALL(funcall_expr.location, referrer, FunctionId.new(fun.name, fun.signature.to_s)) end end end class XRefExtraction < CodeExtraction def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:update_accessor) interp.on_function_ended += T(:clear_accessor) interp.on_variable_value_referred += T(:extract_variable_read) interp.on_variable_value_updated += T(:extract_variable_write) interp.on_function_referred += T(:extract_function_reference) @accessor = nil end private def do_prepare(*) end def do_execute(*) end def update_accessor(*, fun) @accessor = fun end def clear_accessor(*) @accessor = nil end def extract_variable_read(expr, var) if var.scope.global? && var.named? # NOTE: When a value of the inner-variable of array or composite object # is referred, dependency record of only outmost-variable access # should be output. var = var.owner while var.inner? if @accessor referrer = FunctionId.new(@accessor.name, @accessor.signature.to_s) else referrer = FunctionId.of_ctors_section end XREF_VAR(expr.location, referrer, "R", var.name) end end def extract_variable_write(expr, var) # NOTE: When a value of the inner-variable of array or composite # object is updated, dependency record of the inner-variable # access should not be output and the outer variable's value # will also be notified later. return if var.inner? if var.scope.global? && var.named? if @accessor referrer = FunctionId.new(@accessor.name, @accessor.signature.to_s) else referrer = FunctionId.of_ctors_section end XREF_VAR(expr.location, referrer, "W", var.name) end end def extract_function_reference(expr, fun) if fun.named? if @accessor referrer = FunctionId.new(@accessor.name, @accessor.signature.to_s) else referrer = FunctionId.of_ctors_section end XREF_FUN(expr.location, referrer, "R", FunctionId.new(fun.name, fun.signature.to_s)) end end end class LiteralExtraction < CodeExtraction def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_constant_specifier += T(:extract_constant) trav.enter_string_literal_specifier += T(:extract_string_literal) end private def do_prepare(*) end def do_execute(*) end def extract_constant(const_spec) LIT(const_spec.location, type_of(const_spec), const_spec.prefix, const_spec.suffix, const_spec.constant.value) end def extract_string_literal(str_lit_spec) LIT(str_lit_spec.location, type_of(str_lit_spec), str_lit_spec.prefix, nil, str_lit_spec.literal.value) end def type_of(const_or_str_lit_spec) case const_or_str_lit_spec when Cc1::ConstantSpecifier case const_or_str_lit_spec.constant.value when /\A0x[0-9a-f]+[UL]*\z/i "HN" when /\A0b[01]+[UL]*\z/i "BN" when /\A0[0-9]+[UL]*\z/i "ON" when /\A[0-9]+[UL]*\z/i "DN" when /\A(?:[0-9]*\.[0-9]*E[+-]?[0-9]+|[0-9]+\.?E[+-]?[0-9]+)[FL]*\z/i, /\A(?:[0-9]*\.[0-9]+|[0-9]+\.)[FL]*\z/i "FN" when /\A'.*'\z/i "CN" when /\AL'.*'\z/i "CW" else "NA" end when Cc1::StringLiteralSpecifier case const_or_str_lit_spec.literal.value when /\A".*"\z/i "SN" when /\AL".*"\z/i "SW" else "NA" end else raise TypeError end end end end end end adlint-3.2.14/lib/adlint/exam/c_builtin/cpp_code.rb0000644000004100000410000001470012340630463022133 0ustar www-datawww-data# Code structure extractions (cpp-phase) of adlint-exam-c_builtin package. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/exam" require "adlint/report" require "adlint/cpp/phase" module AdLint #:nodoc: module Exam #:nodoc: module CBuiltin #:nodoc: class ObjLikeMacroExtraction < CodeExtraction def_registrant_phase Cpp::Prepare2Phase def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_object_like_macro_defined += T(:extract) end private def do_prepare(*) end def do_execute(*) end def extract(define_line, macro) MACRODEF(define_line.location, macro.name.value, "O") end end class FunLikeMacroExtraction < CodeExtraction def_registrant_phase Cpp::Prepare2Phase def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_function_like_macro_defined += T(:extract) interp.on_va_function_like_macro_defined += T(:extract) end private def do_prepare(*) end def do_execute(*) end def extract(define_line, macro) MACRODEF(define_line.location, macro.name.value, "F") end end class IncludeDirectiveExtraction < CodeExtraction def_registrant_phase Cpp::Prepare2Phase def initialize(phase_ctxt) super interp = phase_ctxt[:cpp_interpreter] interp.on_system_header_included += T(:extract_system_include) interp.on_user_header_included += T(:extract_user_include) end private def do_prepare(*) end def do_execute(*) end def extract_system_include(sys_include_line, sys_header) INCLUDE(sys_include_line.location, "<#{sys_header.fpath}>") end def extract_user_include(usr_include_line, usr_header) INCLUDE(usr_include_line.location, "\"#{usr_header.fpath}\"") end end class DirectiveExtraction < CodeExtraction def_registrant_phase Cpp::Prepare2Phase def initialize(phase_ctxt) super trav = phase_ctxt[:cpp_ast_traversal] trav.enter_if_statement += T(:extract_if) trav.enter_ifdef_statement += T(:extract_ifdef) trav.enter_ifndef_statement += T(:extract_ifndef) trav.enter_elif_statement += T(:extract_elif) trav.enter_else_statement += T(:extract_else) trav.enter_endif_line += T(:extract_endif) trav.enter_user_include_line += T(:extract_usr_include) trav.enter_system_include_line += T(:extract_sys_include) trav.enter_object_like_define_line += T(:extract_define) trav.enter_function_like_define_line += T(:extract_define) trav.enter_va_function_like_define_line += T(:extract_define) trav.enter_undef_line += T(:extract_undef) trav.enter_line_line += T(:extract_line) trav.enter_error_line += T(:extract_error) trav.enter_pragma_line += T(:extract_pragma) trav.enter_null_directive += T(:extract_null) end private def do_prepare(*) end def do_execute(*) end def extract_if(if_stmt) PP_DIRECTIVE(if_stmt.location, if_stmt.keyword.value, if_stmt.expression.to_s) end def extract_ifdef(ifdef_stmt) PP_DIRECTIVE(ifdef_stmt.location, ifdef_stmt.keyword.value, ifdef_stmt.identifier.value) end def extract_ifndef(ifndef_stmt) PP_DIRECTIVE(ifndef_stmt.location, ifndef_stmt.keyword.value, ifndef_stmt.identifier.value) end def extract_elif(elif_stmt) PP_DIRECTIVE(elif_stmt.location, elif_stmt.keyword.value, elif_stmt.expression.to_s) end def extract_else(else_stmt) PP_DIRECTIVE(else_stmt.location, else_stmt.keyword.value, nil) end def extract_endif(endif_line) PP_DIRECTIVE(endif_line.location, endif_line.keyword.value, nil) end def extract_usr_include(usr_include_line) PP_DIRECTIVE(usr_include_line.location, usr_include_line.keyword.value, usr_include_line.header_name.value) end def extract_sys_include(sys_include_line) PP_DIRECTIVE(sys_include_line.location, sys_include_line.keyword.value, sys_include_line.header_name.value) end def extract_define(define_line) PP_DIRECTIVE(define_line.location, define_line.keyword.value, define_line.identifier.value) end def extract_undef(undef_line) PP_DIRECTIVE(undef_line.location, undef_line.keyword.value, undef_line.identifier.value) end def extract_line(line_line) PP_DIRECTIVE(line_line.location, line_line.keyword.value, line_line.pp_tokens ? line_line.pp_tokens.to_s : "") end def extract_error(error_line) PP_DIRECTIVE(error_line.location, error_line.keyword.value, error_line.pp_tokens.tokens.map { |t| t.value }.join(" ")) end def extract_pragma(pragma_line) PP_DIRECTIVE(pragma_line.location, pragma_line.keyword.value, pragma_line.pp_tokens ? pragma_line.pp_tokens.to_s : "") end def extract_null(null_directive) PP_DIRECTIVE(null_directive.location, null_directive.token.value, nil) end end end end end adlint-3.2.14/lib/adlint/exam/c_builtin/cc1_metric.rb0000644000004100000410000005771112340630463022401 0ustar www-datawww-data# Metric measurements (cc1-phase) of adlint-exam-c_builtin package. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/exam" require "adlint/report" require "adlint/cc1/phase" require "adlint/cc1/syntax" module AdLint #:nodoc: module Exam #:nodoc: module CBuiltin #:nodoc: class FL_STMT < MetricMeasurement def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath trav = phase_ctxt[:cc1_ast_traversal] trav.enter_error_statement += T(:count_statement) trav.enter_generic_labeled_statement += T(:count_statement) trav.enter_case_labeled_statement += T(:count_statement) trav.enter_default_labeled_statement += T(:count_statement) trav.enter_expression_statement += T(:count_statement) trav.enter_if_statement += T(:count_statement) trav.enter_if_else_statement += T(:count_statement) trav.enter_switch_statement += T(:count_statement) trav.enter_while_statement += T(:count_statement) trav.enter_do_statement += T(:count_statement) trav.enter_for_statement += T(:count_statement) trav.enter_c99_for_statement += T(:count_statement) trav.enter_goto_statement += T(:count_statement) trav.enter_continue_statement += T(:count_statement) trav.enter_break_statement += T(:count_statement) trav.enter_return_statement += T(:count_statement) trav.leave_translation_unit += M(:measure) @stmt_cnt = 0 end private def do_prepare(*) end def do_execute(*) end def count_statement(stmt) if @fpath == stmt.location.fpath @stmt_cnt += 1 end end def measure(*) FL_STMT(@fpath, @stmt_cnt) end end class FL_FUNC < MetricMeasurement def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:count_function) trav.enter_kandr_function_definition += T(:count_function) trav.leave_translation_unit += M(:measure) @fun_cnt = 0 end private def do_prepare(*) end def do_execute(*) end def count_function(fun_def) if @fpath == fun_def.location.fpath @fun_cnt += 1 end end def measure(*) FL_FUNC(@fpath, @fun_cnt) end end class FN_STMT < MetricMeasurement def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:enter_function) trav.leave_ansi_function_definition += T(:leave_function) trav.enter_kandr_function_definition += T(:enter_function) trav.leave_kandr_function_definition += T(:leave_function) trav.enter_error_statement += T(:count_statement) trav.enter_generic_labeled_statement += T(:count_statement) trav.enter_case_labeled_statement += T(:count_statement) trav.enter_default_labeled_statement += T(:count_statement) trav.enter_expression_statement += T(:count_statement) trav.enter_if_statement += T(:count_statement) trav.enter_if_else_statement += T(:count_statement) trav.enter_switch_statement += T(:count_statement) trav.enter_while_statement += T(:count_statement) trav.enter_do_statement += T(:count_statement) trav.enter_for_statement += T(:count_statement) trav.enter_c99_for_statement += T(:count_statement) trav.enter_goto_statement += T(:count_statement) trav.enter_continue_statement += T(:count_statement) trav.enter_break_statement += T(:count_statement) trav.enter_return_statement += T(:count_statement) @cur_fun = nil @stmt_cnt = 0 end private def do_prepare(*) end def do_execute(*) end def enter_function(fun_def) @cur_fun = fun_def @stmt_cnt = 0 end def leave_function(*) if @cur_fun FN_STMT(FunctionId.new(@cur_fun.identifier.value, @cur_fun.signature.to_s), @cur_fun.location, @stmt_cnt) @cur_fun = nil @stmt_cnt = 0 end end def count_statement(*) @stmt_cnt += 1 if @cur_fun end end class FN_UNRC < MetricMeasurement def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:enter_function) trav.leave_ansi_function_definition += T(:leave_function) trav.enter_kandr_function_definition += T(:enter_function) trav.leave_kandr_function_definition += T(:leave_function) trav.enter_error_statement += T(:count_statement) trav.enter_generic_labeled_statement += T(:count_statement) trav.enter_case_labeled_statement += T(:count_statement) trav.enter_default_labeled_statement += T(:count_statement) trav.enter_expression_statement += T(:count_statement) trav.enter_if_statement += T(:count_statement) trav.enter_if_else_statement += T(:count_statement) trav.enter_switch_statement += T(:count_statement) trav.enter_while_statement += T(:count_statement) trav.enter_do_statement += T(:count_statement) trav.enter_for_statement += T(:count_statement) trav.enter_c99_for_statement += T(:count_statement) trav.enter_goto_statement += T(:count_statement) trav.enter_continue_statement += T(:count_statement) trav.enter_break_statement += T(:count_statement) trav.enter_return_statement += T(:count_statement) @cur_fun = nil @unreached_stmt_cnt = 0 end private def do_prepare(*) end def do_execute(*) end def enter_function(fun_def) @cur_fun = fun_def @unreached_stmt_cnt = 0 end def leave_function(*) if @cur_fun FN_UNRC(FunctionId.new(@cur_fun.identifier.value, @cur_fun.signature.to_s), @cur_fun.location, @unreached_stmt_cnt) @cur_fun = nil @unreached_stmt_cnt = 0 end end def count_statement(stmt) if @cur_fun @unreached_stmt_cnt += 1 unless stmt.executed? end end end class FN_LINE < MetricMeasurement def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:measure) trav.enter_kandr_function_definition += T(:measure) end private def do_prepare(*) end def do_execute(*) end def measure(fun_def) FN_LINE(FunctionId.new(fun_def.identifier.value, fun_def.signature.to_s), fun_def.location, fun_def.lines) end end class FN_PARA < MetricMeasurement def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:measure_ansi_function) trav.enter_kandr_function_definition += T(:measure_kandr_function) end private def do_prepare(*) end def do_execute(*) end def measure_ansi_function(fun_def) # TODO: Determine how many parameters if function has va_list. if fun_def.parameter_type_list params = fun_def.parameter_definitions FN_PARA(FunctionId.new(fun_def.identifier.value, fun_def.signature.to_s), fun_def.location, params.count { |param| !param.type.void? }) else # TODO: Determine how many parameters if signature is abbreviated. FN_PARA(FunctionId.new(fun_def.identifier.value, fun_def.signature.to_s), fun_def.location, 0) end end def measure_kandr_function(fun_def) FN_PARA(FunctionId.new(fun_def.identifier.value, fun_def.signature.to_s), fun_def.location, fun_def.identifier_list.size) end end class FN_UNUV < MetricMeasurement def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:enter_function) interp.on_function_ended += T(:leave_function) interp.on_variable_defined += T(:define_variable) interp.on_parameter_defined += T(:define_variable) interp.on_variable_referred += T(:refer_variable) interp.on_variable_value_referred += T(:read_variable) interp.on_variable_value_updated += T(:write_variable) @cur_fun = nil @vars = nil end private def do_prepare(*) end def do_execute(*) end def enter_function(fun_def, *) @cur_fun = fun_def @vars = {} end def leave_function(*) if @cur_fun useless_cnt = @vars.each_value.reduce(0) { |cnt, read_cnt| read_cnt == 0 ? cnt + 1 : cnt } FN_UNUV(FunctionId.new(@cur_fun.identifier.value, @cur_fun.signature.to_s), @cur_fun.location, useless_cnt) @cur_fun = nil @vars = nil end end def define_variable(*, var) if @cur_fun @vars[var.name] = 0 end end def refer_variable(*, var) if @cur_fun @vars[var.name] += 1 if var.named? && @vars[var.name] end end def read_variable(*, var) if @cur_fun @vars[var.name] += 1 if var.named? && @vars[var.name] end end def write_variable(*, var) if @cur_fun @vars[var.name] = 0 if var.named? && @vars[var.name] end end end class FN_CSUB < MetricMeasurement def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:enter_function) trav.leave_ansi_function_definition += T(:leave_function) trav.enter_kandr_function_definition += T(:enter_function) trav.leave_kandr_function_definition += T(:leave_function) trav.enter_function_call_expression += T(:count_function_call) @cur_fun = nil @funcall_cnt = 0 end private def do_prepare(*) end def do_execute(*) end def enter_function(fun_def) @cur_fun = fun_def @funcall_cnt = 0 end def leave_function(*) if @cur_fun FN_CSUB(FunctionId.new(@cur_fun.identifier.value, @cur_fun.signature.to_s), @cur_fun.location, @funcall_cnt) @cur_fun = nil @funcall_cnt = 0 end end def count_function_call(*) if @cur_fun @funcall_cnt += 1 end end end class FN_GOTO < MetricMeasurement def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:enter_function) trav.leave_ansi_function_definition += T(:leave_function) trav.enter_kandr_function_definition += T(:enter_function) trav.leave_kandr_function_definition += T(:leave_function) trav.enter_goto_statement += T(:count_goto) @cur_fun = nil @goto_cnt = 0 end private def do_prepare(*) end def do_execute(*) end def enter_function(fun_def) @cur_fun = fun_def @goto_cnt = 0 end def leave_function(*) if @cur_fun FN_GOTO(FunctionId.new(@cur_fun.identifier.value, @cur_fun.signature.to_s), @cur_fun.location, @goto_cnt) @cur_fun = nil @goto_cnt = 0 end end def count_goto(*) if @cur_fun @goto_cnt += 1 end end end class FN_RETN < MetricMeasurement def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:enter_function) trav.leave_ansi_function_definition += T(:leave_function) trav.enter_kandr_function_definition += T(:enter_function) trav.leave_kandr_function_definition += T(:leave_function) trav.enter_error_statement += T(:enter_statement) trav.enter_generic_labeled_statement += T(:enter_statement) trav.enter_case_labeled_statement += T(:enter_statement) trav.enter_default_labeled_statement += T(:enter_statement) trav.enter_expression_statement += T(:enter_statement) trav.enter_if_statement += T(:enter_statement) trav.enter_if_else_statement += T(:enter_statement) trav.enter_switch_statement += T(:enter_statement) trav.enter_while_statement += T(:enter_statement) trav.enter_do_statement += T(:enter_statement) trav.enter_for_statement += T(:enter_statement) trav.enter_c99_for_statement += T(:enter_statement) trav.enter_goto_statement += T(:enter_statement) trav.enter_continue_statement += T(:enter_statement) trav.enter_break_statement += T(:enter_statement) trav.enter_return_statement += T(:count_return) @cur_fun = nil @ret_cnt = 0 @lst_stmt = nil end private def do_prepare(*) end def do_execute(*) end def enter_function(fun_def) @cur_fun = fun_def @ret_cnt = 0 @lst_stmt = nil end def leave_function(*) if @cur_fun if @cur_fun.type.return_type.void? && !(@lst_stmt.kind_of?(Cc1::ReturnStatement)) FN_RETN(FunctionId.new(@cur_fun.identifier.value, @cur_fun.signature.to_s), @cur_fun.location, @ret_cnt + 1) else FN_RETN(FunctionId.new(@cur_fun.identifier.value, @cur_fun.signature.to_s), @cur_fun.location, @ret_cnt) end @cur_fun = nil @ret_cnt = 0 @lst_stmt = nil end end def enter_statement(node) if @cur_fun @lst_stmt = node if node.executed? end end def count_return(node) if @cur_fun @ret_cnt += 1 @lst_stmt = node end end end class FN_UELS < MetricMeasurement def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:enter_function) trav.leave_ansi_function_definition += T(:leave_function) trav.enter_kandr_function_definition += T(:enter_function) trav.leave_kandr_function_definition += T(:leave_function) trav.enter_if_else_statement += T(:enter_if_else_statement) trav.leave_if_else_statement += T(:leave_if_else_statement) @cur_fun = nil @if_else_stmt_chain = 0 @incomplete_if_else_stmt_cnt = 0 end private def do_prepare(*) end def do_execute(*) end def enter_function(fun_def) @cur_fun = fun_def @if_else_stmt_chain = 0 @incomplete_if_else_stmt_cnt = 0 end def leave_function(*) if @cur_fun FN_UELS(FunctionId.new(@cur_fun.identifier.value, @cur_fun.signature.to_s), @cur_fun.location, @incomplete_if_else_stmt_cnt) @cur_fun = nil @if_else_stmt_chain = 0 @incomplete_if_else_stmt_cnt = 0 end end def enter_if_else_statement(node) @if_else_stmt_chain += 1 if @cur_fun && @if_else_stmt_chain > 0 if node.else_statement.kind_of?(Cc1::IfStatement) @incomplete_if_else_stmt_cnt += 1 end end end def leave_if_else_statement(*) @if_else_stmt_chain -= 1 end end class FN_NEST < MetricMeasurement def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:enter_function) trav.leave_ansi_function_definition += T(:leave_function) trav.enter_kandr_function_definition += T(:enter_function) trav.leave_kandr_function_definition += T(:leave_function) trav.enter_compound_statement += T(:enter_block) trav.leave_compound_statement += T(:leave_block) trav.enter_if_statement += T(:check_statement) trav.enter_if_else_statement += T(:check_statement) trav.enter_while_statement += T(:check_statement) trav.enter_do_statement += T(:check_statement) trav.enter_for_statement += T(:check_statement) trav.enter_c99_for_statement += T(:check_statement) @cur_fun = nil end private def do_prepare(*) end def do_execute(*) end def enter_function(fun_def) @cur_fun = fun_def # NOTE: Nest level of the top of the function is 0. # Function definition must have a compound-statement as the # function body. @max_nest_level = @cur_nest_level = -1 end def leave_function(fun_def) if @cur_fun FN_NEST(FunctionId.new(@cur_fun.identifier.value, @cur_fun.signature.to_s), @cur_fun.location, @max_nest_level) @cur_fun = nil end end def enter_block(*) if @cur_fun @cur_nest_level += 1 @max_nest_level = [@max_nest_level, @cur_nest_level].max end end def leave_block(*) if @cur_fun @cur_nest_level -= 1 end end def check_statement(stmt) if @cur_fun case stmt when Cc1::IfStatement sub_statement = stmt.statement when Cc1::IfElseStatement if stmt.then_statement.kind_of?(Cc1::CompoundStatement) sub_statement = stmt.else_statement else sub_statement = stmt.then_statement end when Cc1::WhileStatement, Cc1::DoStatement sub_statement = stmt.statement when Cc1::ForStatement, Cc1::C99ForStatement sub_statement = stmt.body_statement end case sub_statement when Cc1::CompoundStatement, Cc1::IfStatement, Cc1::IfElseStatement else @cur_nest_level += 1 @max_nest_level = [@max_nest_level, @cur_nest_level].max end end end end class FN_PATH < MetricMeasurement def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:enter_function) interp.on_function_ended += T(:leave_function) interp.on_branch_started += M(:enter_branch) interp.on_branch_ended += M(:leave_branch) @cur_fun = nil end private def do_prepare(*) end def do_execute(*) end def enter_function(fun_def, *) @cur_fun = fun_def # NOTE: Number of paths in the current function. @paths_in_fun = 1 # NOTE: Stack of the number of paths to enter the current branch group. @paths_to_enter_branch_group = [@paths_in_fun] # NOTE: Stack of the number of paths in the current branch. @paths_in_branch = [@paths_in_fun] # NOTE: Stack of the number of paths in the current branch group. @paths_in_branch_group = [@paths_in_fun] end def leave_function(*) if @cur_fun FN_PATH(FunctionId.new(@cur_fun.identifier.value, @cur_fun.signature.to_s), @cur_fun.location, @paths_in_fun) @cur_fun = nil end end def enter_branch(branch) if @cur_fun # NOTE: Entering into new branch group. if branch.first? @paths_in_fun -= @paths_in_branch.last @paths_to_enter_branch_group.push(@paths_in_branch.last) @paths_in_branch_group.push(0) end # NOTE: Entering into new branch. @paths_in_branch.push(@paths_to_enter_branch_group.last) @paths_in_fun += @paths_to_enter_branch_group.last end end def leave_branch(branch) if @cur_fun paths_in_this_branch = @paths_in_branch.pop # NOTE: Leaving from the current branch whose paths are not terminated. unless branch.break_with_return? @paths_in_branch_group[-1] += paths_in_this_branch end # NOTE: Leaving from the current branch group. if branch.final? paths_to_enter_this_branch_group = @paths_to_enter_branch_group.pop paths_in_this_branch_group = @paths_in_branch_group.pop @paths_in_branch[-1] = paths_in_this_branch_group # NOTE: The current branch group is an incomplete branch group. unless branch.group.complete? @paths_in_fun += paths_to_enter_this_branch_group @paths_in_branch[-1] += paths_to_enter_this_branch_group end end end end end class FN_CYCM < MetricMeasurement def_registrant_phase Cc1::Prepare2Phase def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:enter_function) trav.leave_ansi_function_definition += T(:leave_function) trav.enter_kandr_function_definition += T(:enter_function) trav.leave_kandr_function_definition += T(:leave_function) trav.enter_if_statement += T(:enter_selection) trav.enter_if_else_statement += T(:enter_selection) trav.enter_case_labeled_statement += T(:enter_selection) @cur_fun = nil @cycl_compl = 0 end private def do_prepare(*) end def do_execute(*) end def enter_function(fun_def) @cur_fun = fun_def @cycl_compl = 0 end def leave_function(*) if @cur_fun FN_CYCM(FunctionId.new(@cur_fun.identifier.value, @cur_fun.signature.to_s), @cur_fun.location, @cycl_compl + 1) @cur_fun = nil end end def enter_selection(*) @cycl_compl += 1 if @cur_fun end end end end end adlint-3.2.14/lib/adlint/exam/c_builtin/ld_check.rb0000644000004100000410000002316212340630463022115 0ustar www-datawww-data# Code checkings (ld-phase) of adlint-exam-c_builtin package. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/exam" require "adlint/ld/phase" module AdLint #:nodoc: module Exam #:nodoc: module CBuiltin #:nodoc: class W0555 < PassiveCodeCheck def_registrant_phase Ld::PreparePhase def initialize(phase_ctxt) super phase_ctxt[:ld_function_traversal].on_definition += T(:check) @call_graph = phase_ctxt[:ld_call_graph] end private def check(fun) refs = @call_graph.indirect_callers_of(fun) if refs.any? { |ref| caller_fun = ref.function and caller_fun == fun } W(fun.location) end end end class W0586 < PassiveCodeCheck def_registrant_phase Ld::PreparePhase def initialize(phase_ctxt) super phase_ctxt[:ld_typedef_traversal].on_declaration += T(:check) @map = phase_ctxt[:ld_typedef_map] end private def check(typedef) if @map.lookup(typedef.name).any? { |td| td != typedef } W(typedef.location, typedef.name) end end end class W0589 < PassiveCodeCheck def_registrant_phase Ld::PreparePhase def initialize(phase_ctxt) super phase_ctxt[:ld_function_traversal].on_definition += T(:check_function) phase_ctxt[:ld_variable_traversal].on_definition += T(:check_variable) @xref_graph = phase_ctxt[:ld_xref_graph] end private def check_function(fun) if fun.extern? refs = @xref_graph.direct_referrers_of(fun) ref_funs = refs.map { |ref| ref.function }.compact.uniq if ref_funs.size == 1 if ref_funs.first.location.fpath == fun.location.fpath W(fun.location, fun.signature, ref_funs.first.signature) end end end end def check_variable(var) if var.extern? refs = @xref_graph.direct_referrers_of(var) ref_funs = refs.map { |ref| ref.function }.compact.uniq if ref_funs.size == 1 if ref_funs.first.location.fpath == var.location.fpath W(var.location, var.name, ref_funs.first.signature) end end end end end class W0591 < PassiveCodeCheck def_registrant_phase Ld::PreparePhase def initialize(phase_ctxt) super phase_ctxt[:ld_function_traversal].on_definition += T(:check) @xref_graph = phase_ctxt[:ld_xref_graph] end private def check(fun) if fun.extern? direct_refs = @xref_graph.direct_referrers_of(fun) if !direct_refs.empty? && direct_refs.all? { |ref| ref.location.fpath == fun.location.fpath } W(fun.location, fun.signature) end end end end class W0593 < PassiveCodeCheck def_registrant_phase Ld::PreparePhase def initialize(phase_ctxt) super phase_ctxt[:ld_variable_traversal].on_definition += T(:check) @xref_graph = phase_ctxt[:ld_xref_graph] end private def check(var) if var.extern? direct_refs = @xref_graph.direct_referrers_of(var) if !direct_refs.empty? && direct_refs.all? { |ref| ref.location.fpath == var.location.fpath } W(var.location, var.name) end end end end class W0628 < PassiveCodeCheck def_registrant_phase Ld::PreparePhase def initialize(phase_ctxt) super phase_ctxt[:ld_function_traversal].on_definition += T(:check) @xref_graph = phase_ctxt[:ld_xref_graph] end private def check(fun) unless fun.name == "main" if @xref_graph.direct_referrers_of(fun).empty? W(fun.location, fun.signature) end end end end class W0770 < PassiveCodeCheck def_registrant_phase Ld::PreparePhase # NOTE: W0770 may be duplicative when function declarations of the same # name appears twice or more in the project. mark_as_unique def initialize(phase_ctxt) super fun_traversal = phase_ctxt[:ld_function_traversal] fun_traversal.on_declaration += T(:check_function_declaration) fun_traversal.on_definition += T(:check_function_definition) @fun_map = phase_ctxt[:ld_function_map] var_traversal = phase_ctxt[:ld_variable_traversal] var_traversal.on_declaration += T(:check_variable) var_traversal.on_definition += T(:check_variable) @var_map = phase_ctxt[:ld_variable_map] end private def check_function_declaration(fun_dcl) if fun_dcl.extern? && fun_dcl.explicit? check_function(fun_dcl) end end def check_function_definition(fun_def) if fun_def.extern? check_function(fun_def) end end def check_function(fun) similar_dcls = @fun_map.lookup_function_declarations(fun.name).select { |fun_dcl| fun_dcl.explicit? } if similar_dcls.size > 1 W(fun.location, fun.signature, *similar_dcls.map { |pair| C(:C0001, pair.location, pair.signature) unless pair == fun }.compact) end end def check_variable(var) if var.extern? similar_dcls = @var_map.lookup_variable_declarations(var.name) if similar_dcls.size > 1 W(var.location, var.name, *similar_dcls.map { |pair| C(:C0001, pair.location, pair.name) unless pair == var }.compact) end end end end class W0791 < PassiveCodeCheck def_registrant_phase Ld::PreparePhase # NOTE: W0791 may be duplicative when definitions of the same name appears # twice or more in the project. mark_as_unique def initialize(phase_ctxt) super phase_ctxt[:ld_function_traversal].on_definition += T(:check_function) phase_ctxt[:ld_variable_traversal].on_definition += T(:check_variable) @fun_map = phase_ctxt[:ld_function_map] @var_map = phase_ctxt[:ld_variable_map] end private def check_function(fun) if fun.extern? similar_funs = @fun_map.lookup_functions(fun.name) if similar_funs.size > 1 W(fun.location, fun.signature, *similar_funs.map { |pair| C(:C0001, pair.location, pair.signature) unless pair == fun }.compact) end end end def check_variable(var) if var.extern? similar_vars = @var_map.lookup_variables(var.name) if similar_vars.size > 1 W(var.location, var.name, *similar_vars.map { |pair| C(:C0001, pair.location, pair.name) unless pair == var }.compact) end end end end class W1037 < PassiveCodeCheck def_registrant_phase Ld::PreparePhase # NOTE: W1037 may be duplicative when declarations or definitions of the # same name appears twice or more in the project. mark_as_unique def initialize(phase_ctxt) super fun_traversal = phase_ctxt[:ld_function_traversal] fun_traversal.on_declaration += T(:check_function_declaration) fun_traversal.on_definition += T(:check_function_definition) @fun_map = phase_ctxt[:ld_function_map] var_traversal = phase_ctxt[:ld_variable_traversal] var_traversal.on_declaration += T(:check_variable) var_traversal.on_definition += T(:check_variable) @var_map = phase_ctxt[:ld_variable_map] end private def check_function_declaration(fun) check_function(fun) if fun.extern? && fun.explicit? end def check_function_definition(fun) check_function(fun) if fun.extern? end def check_function(fun) similar_dcls_or_funs = @fun_map.lookup_function_declarations(fun.name).select { |dcl| dcl.explicit? && dcl.extern? && dcl.signature != fun.signature } + @fun_map.lookup_functions(fun.name).select { |mapped_fun| mapped_fun.extern? && mapped_fun.signature != fun.signature } unless similar_dcls_or_funs.empty? W(fun.location, fun.signature, *similar_dcls_or_funs.map { |pair| C(:C0001, pair.location, pair.signature) }) end end def check_variable(var) if var.extern? dcls_or_vars = @var_map.lookup_variable_declarations(var.name) + @var_map.lookup_variables(var.name) similar_dcls_or_vars = dcls_or_vars.select { |dcl_or_var| dcl_or_var.extern? && dcl_or_var.type != var.type } unless similar_dcls_or_vars.empty? W(var.location, var.name, *similar_dcls_or_vars.map { |pair| C(:C0001, pair.location, pair.name) }) end end end end end end end adlint-3.2.14/lib/adlint/exam/c_builtin/cc1_check.rb0000644000004100000410000212340012340630463022162 0ustar www-datawww-data# Code checkings (cc1-phase) of adlint-exam-c_builtin package. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/exam" require "adlint/report" require "adlint/token" require "adlint/traits" require "adlint/monitor" require "adlint/cc1/phase" require "adlint/cc1/syntax" require "adlint/cc1/type" require "adlint/cc1/format" require "adlint/cc1/option" require "adlint/cc1/conv" require "adlint/cc1/util" require "adlint/cpp/syntax" module AdLint #:nodoc: module Exam #:nodoc: module CBuiltin #:nodoc: class W0001_Cc1 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_grouped_expression += T(:enter_grouped_expression) trav.leave_grouped_expression += T(:leave_grouped_expression) @group_depth = 0 end private def enter_grouped_expression(node) @group_depth += 1 W(node.location) if @group_depth == 33 end def leave_grouped_expression(node) @group_depth -= 1 end end class W0002 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_kandr_function_definition += T(:check) end private def check(node) W(node.location, node.identifier.value) end end class W0003 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_switch_statement += T(:check) end private def check(node) if node.statement.kind_of?(Cc1::CompoundStatement) unless have_default_statement?(node.statement) W(node.location) end end end def have_default_statement?(compound_stmt) compound_stmt.block_items.any? do |item| case item when Cc1::GenericLabeledStatement, Cc1::CaseLabeledStatement item = item.statement redo when Cc1::DefaultLabeledStatement true else false end end end end class W0007 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_switch_statement += T(:enter_switch_statement) end private def enter_switch_statement(node) prv_item = nil node.statement.block_items.each do |item| if prv_item case item when Cc1::CaseLabeledStatement, Cc1::DefaultLabeledStatement case prv_item when Cc1::CompoundStatement unless end_with_break_or_return_statement?(item) W(item.location) warn_inner_case_labeled_statement(item) end when Cc1::BreakStatement, Cc1::ReturnStatement ; else W(item.location) warn_inner_case_labeled_statement(item) end end end item = item.statement while item.kind_of?(Cc1::LabeledStatement) prv_item = item end end def warn_inner_case_labeled_statement(node) child = node loop do child = child.statement break unless child.kind_of?(Cc1::CaseLabeledStatement) W(child.location) end end def end_with_break_or_return_statement?(stmt) case stmt when Cc1::CompoundStatement end_with_break_or_return_statement?(stmt.block_Items.last) when Cc1::BreakStatement true when Cc1::ReturnStatement true end end end class W0010 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_conditional_expression += T(:check) end private def check(node) if node.then_expression.have_side_effect? || node.else_expression.have_side_effect? W(node.location) end end end class W0013 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_continue_statement += T(:check) end private def check(node) W(node.location) end end class W0016 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*printf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) if fmt css = fmt.conversion_specifiers if css.any? { |cs| cs.field_width_value > 509 } W(fmt.location) end end end end def format_str_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end def create_format(funcall_expr, fmt_str_idx, arg_vars, env) if fmt_str_idx fmt_str = funcall_expr.argument_expressions[fmt_str_idx] if fmt_str && fmt_str.literal.value =~ /\AL?"(.*)"\z/i args = arg_vars.drop(fmt_str_idx + 1) || [] return Cc1::PrintfFormat.new($1, fmt_str.location, args, env) end end nil end end class W0017 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*scanf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) if fmt conv_specs = fmt.conversion_specifiers if conv_specs.any? { |cs| cs.field_width_value > 509 } W(fmt.location) end end end end def format_str_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end def create_format(funcall_expr, fmt_str_idx, arg_vars, env) if fmt_str_idx fmt_str = funcall_expr.argument_expressions[fmt_str_idx] if fmt_str && fmt_str.literal.value =~ /\AL?"(.*)"\z/i args = arg_vars.drop(fmt_str_idx + 1) || [] return Cc1::ScanfFormat.new($1, fmt_str.location, args, env) end end nil end end class W0018 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*printf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) if fmt conv_specs = fmt.conversion_specifiers if conv_specs.any? { |cs| cs.precision_value > 509 } W(fmt.location) end end end end def format_str_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end def create_format(funcall_expr, fmt_str_idx, arg_vars, env) if fmt_str_idx fmt_str = funcall_expr.argument_expressions[fmt_str_idx] if fmt_str && fmt_str.literal.value =~ /\AL?"(.*)"\z/i args = arg_vars.drop(fmt_str_idx + 1) || [] return Cc1::PrintfFormat.new($1, fmt_str.location, args, env) end end nil end end class W0019 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_conv_performed += T(:check_explicit_conversion) end private def check_explicit_conversion(expr, orig_var, rslt_var) orig_type = orig_var.type rslt_type = rslt_var.type if orig_type.pointer? && orig_type.unqualify.base_type.const? && rslt_type.pointer? && !rslt_type.unqualify.base_type.const? W(expr.location) end end end class W0021 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_conv_performed += T(:check_explicit_conversion) end private def check_explicit_conversion(expr, orig_var, rslt_var) orig_type = orig_var.type rslt_type = rslt_var.type if orig_type.pointer? && orig_type.unqualify.base_type.volatile? && rslt_type.pointer? && !rslt_type.unqualify.base_type.volatile? W(expr.location) end end end class W0023 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_additive_expr_evaled += T(:check_binary) @interp.on_multiplicative_expr_evaled += T(:check_binary) end private def check_binary(binary_expr, lhs_var, rhs_var, *) case when lhs_var.type.pointer? && rhs_var.type.scalar? rhs_val = rhs_var.value if rhs_var.value.scalar? && rhs_val.test_must_be_equal_to(scalar_value_of(1)).false? W(binary_expr.location) end when rhs_var.type.pointer? && lhs_var.type.scalar? lhs_val = lhs_var.value if lhs_val.scalar? && lhs_val.test_must_be_equal_to(scalar_value_of(1)).false? W(binary_expr.location) end end end def interpreter @interp end end class W0024 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_additive_expr_evaled += T(:check_binary) @interp.on_prefix_increment_expr_evaled += T(:check_unary_prefix) @interp.on_postfix_increment_expr_evaled += T(:check_unary_postfix) @interp.on_prefix_decrement_expr_evaled += T(:check_unary_prefix) @interp.on_postfix_decrement_expr_evaled += T(:check_unary_postfix) end private def check_binary(binary_expr, lhs_var, rhs_var, *) case when lhs_var.type.pointer? && rhs_var.type.scalar? rhs_val = rhs_var.value if rhs_var.value.scalar? && rhs_val.test_must_be_equal_to(scalar_value_of(1)).true? W(binary_expr.location) end when rhs_var.type.pointer? && lhs_var.type.scalar? lhs_val = lhs_var.value if lhs_var.value.scalar? && lhs_val.test_must_be_equal_to(scalar_value_of(1)).true? W(binary_expr.location) end end end def check_unary_prefix(unary_expr, ope_var, *) if ope_var.type.pointer? W(unary_expr.location) end end def check_unary_postfix(postfix_expr, ope_var, *) if ope_var.type.pointer? W(postfix_expr.location) end end def interpreter @interp end end class W0027 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_relational_expr_evaled += T(:check_comparison) interp.on_equality_expr_evaled += T(:check_comparison) end private def check_comparison(expr, lhs_var, rhs_var, *) return if expr.lhs_operand.kind_of?(Cc1::NullConstantSpecifier) return if expr.rhs_operand.kind_of?(Cc1::NullConstantSpecifier) if lhs_var.type.pointer? || rhs_var.type.pointer? W(expr.location) end end end class W0028 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_indirection_expr_evaled += T(:check_indirection) @interp.on_member_access_expr_evaled += T(:check_member_access) @interp.on_array_subscript_expr_evaled += T(:check_array_subscript) end private def check_indirection(expr, var, *) if constant_expression?(expr.operand) val = var.value if val.scalar? && val.test_must_be_null.true? W(expr.location) end end end def check_member_access(expr, outer_var, *) return unless outer_var.type.pointer? if constant_expression?(expr.expression) val = outer_var.value if val.scalar? && val.test_must_be_null.true? W(expr.location) end end end def check_array_subscript(expr, ptr_var, *) return unless ptr_var.type.pointer? if constant_expression?(expr.expression) val = ptr_var.value if val.scalar? && val.test_must_be_null.true? W(expr.location) end end end def interpreter @interp end end class W0030 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_multiplicative_expr_evaled += T(:check_binary) @interp.on_additive_expr_evaled += T(:check_binary) @interp.on_shift_expr_evaled += T(:check_binary) @interp.on_and_expr_evaled += T(:check_binary) @interp.on_exclusive_or_expr_evaled += T(:check_binary) @interp.on_inclusive_or_expr_evaled += T(:check_binary) @interp.on_prefix_increment_expr_evaled += T(:check_unary_prefix) @interp.on_postfix_increment_expr_evaled += T(:check_unary_postfix) @interp.on_prefix_decrement_expr_evaled += T(:check_unary_prefix) @interp.on_postfix_decrement_expr_evaled += T(:check_unary_postfix) end private def check_binary(expr, lhs_var, rhs_var, *) lhs_type, lhs_val = lhs_var.type, lhs_var.value rhs_type, rhs_val = rhs_var.type, rhs_var.value if constant_expression?(expr.lhs_operand) && lhs_type.pointer? && lhs_val.test_must_be_null.true? W(expr.lhs_operand.location) end if constant_expression?(expr.rhs_operand) && rhs_type.pointer? && rhs_val.test_must_be_null.true? W(expr.rhs_operand.location) end end def check_unary_prefix(expr, ope_var, orig_val) type, val = ope_var.type, orig_val if constant_expression?(expr.operand) && type.pointer? && val.test_must_be_null.true? W(expr.operand.location) end end def check_unary_postfix(expr, ope_var, *) type, val = ope_var.type, ope_var.value if constant_expression?(expr.operand) && type.pointer? && val.test_must_be_null.true? W(expr.operand.location) end end def interpreter @interp end end class W0031 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:start_function) interp.on_parameter_defined += T(:add_parameter) interp.on_variable_referred += T(:use_parameter) interp.on_variable_value_referred += T(:use_parameter) interp.on_function_ended += T(:check_unused_parameter) @parameters = nil end private def start_function(*) @parameters = {} end def add_parameter(param_def, var) if @parameters && var.named? @parameters[var.name] = [param_def, false] end end def use_parameter(*, var) if @parameters && var.named? if param_def = @parameters[var.name] @parameters[var.name] = [param_def, true] end end end def check_unused_parameter(*) if @parameters @parameters.each do |name, param| W(param[0].location, name) unless param[1] end @parameters = nil end end end class W0033 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:collect_labels) interp.on_goto_stmt_evaled += T(:use_label) interp.on_function_ended += T(:check_unused_label) @labels = nil end private def collect_labels(fun_def, *) @labels = LabelCollector.new.tap { |col| fun_def.function_body.accept(col) }.labels end def end_function(*) @labels = nil end def use_label(*, label_name) if @labels and label = @labels[label_name] @labels[label_name] = [label, true] end end def check_unused_label(*) if @labels @labels.each do |name, label| W(label[0].location, name) unless label[1] end @labels = nil end end class LabelCollector < Cc1::SyntaxTreeVisitor def initialize @labels = {} end attr_reader :labels def visit_generic_labeled_statement(node) @labels[node.label.value] = [node.label, false] end end private_constant :LabelCollector end class W0035 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_logical_or_expr_evaled += T(:check_logical) interp.on_logical_and_expr_evaled += T(:check_logical) interp.on_conditional_expr_evaled += T(:check_conditional) end private def check_logical(expr, lhs_var, rhs_var, *) unless rhs_var.type.scalar? W(expr.location) end end def check_conditional(expr, ctrl_var, *) unless ctrl_var.type.scalar? W(expr.location) end end end class W0036 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_init_declarator += T(:check_init_dcr) trav.enter_struct_declarator += T(:check_struct_dcr) trav.enter_parameter_declaration += T(:check_parameter_dcl) trav.enter_kandr_function_definition += T(:check_kandr_fundef) trav.enter_ansi_function_definition += T(:check_ansi_fundef) trav.enter_type_name += T(:check_type_name) end private def check_init_dcr(init_dcr) dcr_num = DeclaratorCounter.new.tap { |cnt| init_dcr.declarator.accept(cnt) }.result W(init_dcr.location) if dcr_num > 12 end def check_struct_dcr(struct_dcr) if dcr = struct_dcr.declarator dcr_num = DeclaratorCounter.new.tap { |cnt| dcr.accept(cnt) }.result W(struct_dcr.location) if dcr_num > 12 end end def check_parameter_dcl(param_dcl) if dcr = param_dcl.declarator dcr_num = DeclaratorCounter.new.tap { |cnt| dcr.accept(cnt) }.result W(param_dcl.location) if dcr_num > 12 end end def check_kandr_fundef(fun_def) dcr_num = DeclaratorCounter.new.tap { |cnt| fun_def.declarator.accept(cnt) }.result W(fun_def.location) if dcr_num > 12 end def check_ansi_fundef(fun_def) dcr_num = DeclaratorCounter.new.tap { |cnt| fun_def.declarator.accept(cnt) }.result W(fun_def.location) if dcr_num > 12 end def check_type_name(type_name) if dcr = type_name.abstract_declarator dcr_num = DeclaratorCounter.new.tap { |cnt| dcr.accept(cnt) }.result W(type_name.location) if dcr_num > 12 end end class DeclaratorCounter < Cc1::SyntaxTreeVisitor def initialize @result = 0 end attr_reader :result def visit_identifier_declarator(node) super if ptr = node.pointer @result += ptr.count { |tok| tok.type == "*" } end end def visit_array_declarator(node) super @result += 1 if ptr = node.pointer @result += ptr.count { |tok| tok.type == "*" } end end def visit_ansi_function_declarator(node) node.base.accept(self) @result += 1 if ptr = node.pointer @result += ptr.count { |tok| tok.type == "*" } end end def visit_kandr_function_declarator(node) super @result += 1 if ptr = node.pointer @result += ptr.count { |tok| tok.type == "*" } end end def visit_abbreviated_function_declarator(node) super @result += 1 if ptr = node.pointer @result += ptr.count { |tok| tok.type == "*" } end end def visit_pointer_abstract_declarator(node) super @result += node.pointer.count { |tok| tok.type == "*" } end def visit_array_abstract_declarator(node) super @result += 1 end def visit_function_abstract_declarator(node) node.base.accept(self) if node.base @result += 1 end end private_constant :DeclaratorCounter end class W0037 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_struct_specifier += T(:enter_struct_specifier) trav.leave_struct_specifier += T(:leave_struct_specifier) trav.enter_union_specifier += T(:enter_union_specifier) trav.leave_union_specifier += T(:leave_union_specifier) @nest_level = 0 end private def enter_struct_specifier(node) @nest_level += 1 W(node.location) if @nest_level == 16 end def leave_struct_specifier(node) @nest_level -= 1 end def enter_union_specifier(node) @nest_level += 1 W(node.location) if @nest_level == 16 end def leave_union_specifier(node) @nest_level -= 1 end end class W0038 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_variable_definition += T(:check) end private def check(node) if node.type.aligned_byte_size > 32767 W(node.location, node.identifier.value) end end end class W0039 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_compound_statement += T(:enter_block) trav.leave_compound_statement += T(:leave_block) trav.enter_variable_definition += T(:add_identifier) trav.enter_variable_declaration += T(:add_identifier) trav.enter_typedef_declaration += T(:add_identifier) @block_stack = [0] end private def enter_block(node) @block_stack.push(0) end def leave_block(node) @block_stack.pop end def add_identifier(node) @block_stack[-1] += 1 W(node.location) if @block_stack.last == 128 end end class W0040 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_struct_type_declaration += T(:check) trav.enter_union_type_declaration += T(:check) end private def check(node) node.struct_declarations.each do |struct_dcl| struct_dcl.items.each do |memb_dcl| memb_type = memb_dcl.type next unless memb_type.scalar? && memb_type.integer? if memb_type.bitfield? && !memb_type.explicitly_signed? W(node.location) return end end end end end class W0041 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_struct_type_declaration += T(:check_struct) trav.enter_union_type_declaration += T(:check_union) end private def check_struct(node) memb_num = node.struct_declarations.map { |dcl| dcl.items.size }.reduce(0) { |sum, num| sum + num } W(node.location) if memb_num > 127 end def check_union(node) memb_num = node.struct_declarations.map { |dcl| dcl.items.size }.reduce(0) { |sum, num| sum + num } W(node.location) if memb_num > 127 end end class W0042 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_enum_type_declaration += T(:check) end private def check(node) if node.enum_specifier.enumerators.size > 127 W(node.location) end end end class W0043 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_variable_definition += T(:enter_variable_definition) end private def enter_variable_definition(node) return unless node.initializer return unless node.type.array? if inits = node.initializer.initializers if initializer_depth(node.initializer) == type_depth(node.type) check_well_balanced(node.type, inits, node.initializer) else check_flattened(node.type, inits, node.initializer) end end end def check_well_balanced(ary_type, inits, parent_init) return unless ary_type.length if !inits.empty? && inits.size < ary_type.length if inits.size == 1 and expr = inits.first.expression unless expr.kind_of?(Cc1::ConstantSpecifier) && expr.constant.value == "0" warn(expr, parent_init) end else warn(inits.first, parent_init) end end if ary_type.base_type.array? inits.each do |init| if init.initializers check_well_balanced(ary_type.base_type, init.initializers, init) end end end end def check_flattened(ary_type, inits, parent_init) unless total_length = total_length(ary_type) # NOTE: Cannot check the incomplete array. return end flattener = lambda { |init| init.expression || init.initializers.map(&flattener) } exprs = inits.map { |init| flattener.call(init) }.flatten.compact if !exprs.empty? && exprs.size < total_length if exprs.size == 1 and fst = exprs.first if fst.kind_of?(Cc1::ObjectSpecifier) && fst.constant.value != "0" warn(fst, parent_init) end else warn(exprs.first, parent_init) end end end def warn(node, parant_init) if parant_init W(parant_init.location) else W(node.location) end end def initializer_depth(init) if inits = init.initializers 1 + inits.map { |i| initializer_depth(i) }.max else 0 end end def type_depth(type) case when type.array? 1 + type_depth(type.base_type) when type.composite? type.members.empty? ? 1 : 1 + type.members.map { |memb| type_depth(memb.type) }.max else 0 end end def total_length(ary_type) total_len = 1 type = ary_type while type.array? if type.length total_len *= type.length type = type.base_type else return nil end end total_len end end class W0049 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_if_statement += T(:enter_if_statement) trav.leave_if_statement += T(:leave_if_statement) trav.enter_switch_statement += T(:enter_switch_statement) trav.leave_switch_statement += T(:leave_switch_statement) trav.enter_while_statement += T(:enter_while_statement) trav.leave_while_statement += T(:leave_while_statement) trav.enter_do_statement += T(:enter_do_statement) trav.leave_do_statement += T(:leave_do_statement) trav.enter_for_statement += T(:enter_for_statement) trav.leave_for_statement += T(:leave_for_statement) trav.enter_c99_for_statement += T(:enter_c99_for_statement) trav.leave_c99_for_statement += T(:leave_c99_for_statement) @ctrl_stmt_level = 0 end private def enter_if_statement(node) @ctrl_stmt_level += 1 W(node.location) if @ctrl_stmt_level == 16 end def leave_if_statement(node) @ctrl_stmt_level -= 1 end def enter_switch_statement(node) @ctrl_stmt_level += 1 W(node.location) if @ctrl_stmt_level == 16 end def leave_switch_statement(node) @ctrl_stmt_level -= 1 end def enter_while_statement(node) @ctrl_stmt_level += 1 W(node.location) if @ctrl_stmt_level == 16 end def leave_while_statement(node) @ctrl_stmt_level -= 1 end def enter_do_statement(node) @ctrl_stmt_level += 1 W(node.location) if @ctrl_stmt_level == 16 end def leave_do_statement(node) @ctrl_stmt_level -= 1 end def enter_for_statement(node) @ctrl_stmt_level += 1 W(node.location) if @ctrl_stmt_level == 16 end def leave_for_statement(node) @ctrl_stmt_level -= 1 end def enter_c99_for_statement(node) @ctrl_stmt_level += 1 W(node.location) if @ctrl_stmt_level == 16 end def leave_c99_for_statement(node) @ctrl_stmt_level -= 1 end end class W0050 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_switch_statement += T(:enter_switch_statement) trav.leave_switch_statement += T(:leave_switch_statement) trav.enter_case_labeled_statement += T(:check) @label_num_stack = [] end private def enter_switch_statement(node) @label_num_stack.push(0) end def leave_switch_statement(node) @label_num_stack.pop end def check(node) unless @label_num_stack.empty? @label_num_stack[-1] += 1 W(node.location) if @label_num_stack[-1] == 258 end end end class W0051 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_declared += T(:add_variable) interp.on_variable_defined += T(:add_variable) interp.on_explicit_function_declared += T(:add_function) interp.on_explicit_function_defined += T(:add_function) interp.on_translation_unit_ended += M(:check) @obj_dcls = Hash.new { |hash, key| hash[key] = [] } end private def add_variable(dcl_or_def, var) if var.named? && var.declared_as_extern? @obj_dcls[mangle(var.name)].push(dcl_or_def) end end def add_function(dcl_or_def, fun) if fun.named? && fun.declared_as_extern? @obj_dcls[mangle(fun.name)].push(dcl_or_def) end end def check(*) @obj_dcls.each_value do |dcls| similar_dcls = dcls.uniq { |dcl| dcl.identifier.value } next unless similar_dcls.size > 1 similar_dcls.each do |dcl| W(dcl.location, dcl.identifier.value, *similar_dcls.map { |pair_dcl| next if pair_dcl == dcl C(:C0001, pair_dcl.location, pair_dcl.identifier.value) }.compact) end end end def mangle(name) truncated = name.slice(0...@phase_ctxt.traits.of_linker.identifier_max) if @phase_ctxt.traits.of_linker.identifier_ignore_case truncated.upcase else truncated end end end class W0052 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_declared += T(:declare_object) interp.on_variable_defined += T(:declare_object) interp.on_explicit_function_declared += T(:declare_object) interp.on_explicit_function_defined += T(:declare_object) interp.on_block_started += T(:enter_scope) interp.on_block_ended += T(:leave_scope) @dcl_names = [Hash.new { |hash, key| hash[key] = [] }] end private def declare_object(dcl_or_def, *) dcl_name = dcl_or_def.identifier pair_names = @dcl_names.map { |name_hash| name_hash[mangle(dcl_name.value)] }.reduce([]) { |all_names, similar_names| all_names + similar_names }.uniq { |id| id.value }.reject { |id| id.value == dcl_name.value } unless pair_names.empty? W(dcl_or_def.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @dcl_names.last[mangle(dcl_name.value)].push(dcl_name) end def enter_scope(*) @dcl_names.push(Hash.new { |hash, key| hash[key] = [] }) end def leave_scope(*) @dcl_names.pop end def mangle(name) name.slice(0...@phase_ctxt.traits.of_compiler.identifier_max) end end class W0058 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_string_literal_specifier += T(:check) end private def check(node) if node.literal.value.length - 2 > 509 W(node.location) end end end class W0062 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_typeof_type_specifier += T(:check) end private def check(node) W(node.location) end end class W0063 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_alignof_expression += T(:check) trav.enter_alignof_type_expression += T(:check) end private def check(node) W(node.location) end end class W0064 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_constant_referred += T(:check) end private def check(const_spec, *) W(const_spec.location) if const_spec.constant.value =~ /\A0b/ end end class W0065 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_simple_assignment_expression += T(:check) end private def check(node) if node.lhs_operand.kind_of?(Cc1::CastExpression) W(node.location) end end end class W0066 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:check_ansi_function) trav.enter_kandr_function_definition += T(:check_kandr_function) @interp = phase_ctxt[:cc1_interpreter] end private def check_ansi_function(node) check(node) if node.identifier.value == "main" end def check_kandr_function(node) check(node) if node.identifier.value == "main" end def check(node) unless node.type.return_type == int_t W(node.location) return end if node.type.parameter_types.size == 1 && node.type.parameter_types[0] == void_t return end if node.type.parameter_types.size == 2 && node.type.parameter_types[0] == argc_type && node.type.parameter_types[1] == argv_type return end W(node.location) end def argc_type int_t end def argv_type array_type(pointer_type(char_t)) end def interpreter @interp end end class W0067 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_member_access_expr_evaled += T(:check_member_access) end private def check_member_access(expr, outer_var, inner_var) case expr when Cc1::MemberAccessByValueExpression outer_type = outer_var.type.unqualify when Cc1::MemberAccessByPointerExpression outer_type = outer_var.type.unqualify.base_type else return end if outer_type.composite? && !outer_type.incomplete? unless outer_type.member_named(expr.identifier.value) W(expr.location) end end end end class W0068 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_bit_access_by_value_expression += T(:check) trav.enter_bit_access_by_pointer_expression += T(:check) end private def check(node) W(node.location) end end class W0070 < CodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def do_prepare(phase_ctxt) end def do_execute(phase_ctxt) sys_headers = phase_ctxt[:sources].select { |src| src.system_header? } sys_headers.each do |src| if src.included_at.in_analysis_target?(traits) syms = phase_ctxt[:symbol_table].symbols_appeared_in(src) if syms.all? { |sym| sym.useless? } W(src.included_at, src.fpath) end end end end end class W0071 < CodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def do_prepare(phase_ctxt) end def do_execute(phase_ctxt) usr_headers = phase_ctxt[:sources].select { |src| src.user_header? } usr_headers.each do |src| if src.included_at.in_analysis_target?(traits) syms = phase_ctxt[:symbol_table].symbols_appeared_in(src) if syms.all? { |sym| sym.useless? } W(src.included_at, src.fpath) end end end end end class W0076 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_constant_referred += T(:check) end private def check(const_spec, *) if const_spec.constant.value =~ /\A0x[0-9A-F]+\z/i W(const_spec.location) end end end class W0077 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_constant_referred += T(:check) end private def check(const_spec, *) case const_spec.constant.value when /\A(?:[0-9]*\.[0-9]*[Ee][+-]?[0-9]+|[0-9]+\.?[Ee][+-]?[0-9]+).*l\z/, /\A(?:[0-9]*\.[0-9]+|[0-9]+\.).*l\z/, /\A(?:0x[0-9A-Fa-f]+|0b[01]+|[0-9]+)l\z/ W(const_spec.location) end end end class W0078 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_function_declaration += T(:check) end private def check(node) W(node.location) if node.type.parameter_types.empty? end end class W0079 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_variable_definition += T(:check) @interp = phase_ctxt[:cc1_interpreter] end private def check(node) return unless node.initializer && node.initializer.expression if node.type.array? && node.type.base_type.same_as?(char_t) if len = node.type.length finder = StringLiteralSpecifierFinder.new node.initializer.expression.accept(finder) if str_lit = finder.result str = unquote_string_literal(str_lit) W(node.location) if len <= str.length end end end end def unquote_string_literal(str_lit) str_lit.literal.value.sub(/\AL?"(.*)"\z/, "\\1") end def interpreter @interp end class StringLiteralSpecifierFinder < Cc1::SyntaxTreeVisitor def initialize @result = nil end attr_reader :result def visit_string_literal_specifier(node) @result = node end end private_constant :StringLiteralSpecifierFinder end class W0080 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:check) interp.on_block_started += T(:enter_block) interp.on_block_ended += T(:leave_block) @block_level = 0 end private def check(var_def, var) if @block_level == 0 if var.declared_as_extern? || var.declared_as_static? if var.type.const? && var_def.initializer.nil? W(var_def.location) end end end end def enter_block(*) @block_level += 1 end def leave_block(*) @block_level -= 1 end end class W0081 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_unary_arithmetic_expr_evaled += T(:check) end private def check(expr, ope_var, *) if expr.operator.type == "-" if ope_var.type.same_as?(unsigned_int_t) || ope_var.type.same_as?(unsigned_long_t) || ope_var.type.same_as?(unsigned_long_long_t) W(expr.location) end end end def interpreter @interp end end class W0082 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_unary_arithmetic_expr_evaled += T(:check) end private def check(expr, ope_var, *) if expr.operator.type == "-" if unsigned_underlying_type?(ope_var.type) W(expr.location, ope_var.type.brief_image) end end end def unsigned_underlying_type?(type) type.same_as?(unsigned_char_t) || type.same_as?(unsigned_short_t) || type.bitfield? end def interpreter @interp end end class W0084 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_comma_separated_expression += T(:check) end private def check(node) if node.expressions.size > 1 node.expressions[0..-2].each do |expr| W(expr.location) unless expr.have_side_effect? end end end end class W0085 < CodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def do_prepare(phase_ctxt) end def do_execute(phase_ctxt) phase_ctxt[:cc1_ast].accept(Visitor.new(phase_ctxt)) end class Visitor < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt) @phase_ctxt = phase_ctxt end def visit_expression_statement(node) if node.analysis_target?(traits) unless node.expression && node.expression.have_side_effect? W(node.location) end end end def visit_for_statement(node) node.body_statement.accept(self) if node.analysis_target?(traits) end def visit_c99_for_statement(node) node.body_statement.accept(self) if node.analysis_target?(traits) end private extend Forwardable def_delegator :@phase_ctxt, :traits private :traits def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :Visitor end class W0086 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_conditional_expression += T(:check) end private def check(node) then_expr = node.then_expression else_expr = node.else_expression if then_expr.have_side_effect? != else_expr.have_side_effect? W(node.location) end end end class W0087 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_simple_assignment_expression += T(:enter_assignment) trav.leave_simple_assignment_expression += T(:leave_assignment) trav.enter_compound_assignment_expression += T(:enter_assignment) trav.leave_compound_assignment_expression += T(:leave_assignment) trav.enter_function_call_expression += T(:enter_assignment) trav.leave_function_call_expression += T(:leave_assignment) trav.enter_comma_separated_expression += T(:check) @assignment_depth = 0 end private def enter_assignment(*) @assignment_depth += 1 end def leave_assignment(*) @assignment_depth -= 1 end def check(node) if !node.expressions.last.have_side_effect? && @assignment_depth == 0 W(node.location) end end end class W0088 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_expression_stmt_started += T(:enter_expression_statement) interp.on_expression_stmt_ended += T(:leave_expression_statement) interp.on_logical_and_expr_evaled += T(:check) interp.on_logical_or_expr_evaled += T(:check) @cur_expr_stmt = nil end private def enter_expression_statement(expr_stmt) case expr_stmt.expression when Cc1::SimpleAssignmentExpression, Cc1::CompoundAssignmentExpression, Cc1::FunctionCallExpression @cur_expr_stmt = nil else @cur_expr_stmt = expr_stmt end end def leave_expression_statement(*) @cur_expr_stmt = nil end def check(expr, *) if @cur_expr_stmt unless expr.rhs_operand.have_side_effect? W(expr.operator.location) end end end end class W0093 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_multiplicative_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, *) return if expr.operator.type == "*" return unless rhs_var.type.scalar? && rhs_var.value.scalar? unless constant_expression?(expr.rhs_operand) if rhs_var.value.test_must_be_equal_to(scalar_value_of(0)).false? test = rhs_var.value.test_may_be_equal_to(scalar_value_of(0)) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end end def interpreter @interp end end class W0096 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_multiplicative_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, *) return if expr.operator.type == "*" return unless rhs_var.type.scalar? && rhs_var.value.scalar? if constant_expression?(expr.rhs_operand) test = rhs_var.value.test_must_be_equal_to(scalar_value_of(0)) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end def interpreter @interp end end class W0097 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_multiplicative_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, *) return if expr.operator.type == "*" return unless rhs_var.type.scalar? && rhs_var.value.scalar? unless constant_expression?(expr.rhs_operand) test = rhs_var.value.test_must_be_equal_to(scalar_value_of(0)) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end def interpreter @interp end end class W0100 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:define_variable) interp.on_variable_initialized += T(:init_variable) interp.on_variable_value_updated += T(:write_variable) interp.on_block_started += T(:enter_block) interp.on_block_ended += T(:leave_block) interp.on_while_stmt_started += T(:enter_iteration) interp.on_while_stmt_ended += T(:leave_iteration) interp.on_do_stmt_started += T(:enter_iteration) interp.on_do_stmt_ended += T(:leave_iteration) interp.on_for_stmt_started += T(:enter_iteration) interp.on_for_stmt_ended += T(:leave_iteration) interp.on_c99_for_stmt_started += T(:enter_iteration) interp.on_c99_for_stmt_ended += T(:leave_iteration) @var_stack = [{}] @iter_stmt_stack = [] end private def enter_block(*) @var_stack.push({}) end def leave_block(*) check_constant_variables(@var_stack.last) @var_stack.pop end def define_variable(var_def, var) if var.named? @var_stack.last[var] = [var_def.location, 0] end end def init_variable(var_def, var, *) if rec = @var_stack.last[var] rec[1] += 1 end end def write_variable(*, var) var = var.owner while var.inner? return unless var.named? @var_stack.reverse_each do |vars| if rec = vars[var] if @iter_stmt_stack.empty? rec[1] += 1 else # NOTE: Update twice in order not to over-warn about this variable, # because an iteration is treated as a normal selection by # the abstract interpreter. rec[1] += 2 end end end end def enter_iteration(iter_stmt) @iter_stmt_stack.push(iter_stmt) end def leave_iteration(*) @iter_stmt_stack.pop end def check_constant_variables(vars) vars.each do |var, (loc, assign_cnt)| case when var.type.pointer? && var.type.unqualify.base_type.function? next when var.type.array? if assign_cnt <= 1 base_type = var.type.base_type while base_type.array? || base_type.pointer? base_type = base_type.base_type end W(loc, var.name) unless base_type.const? end when !var.type.const? W(loc, var.name) if assign_cnt <= 1 end end end end class W0101 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_assignment_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var) return unless lhs_var.type.pointer? && rhs_var.type.pointer? if rhs_pointee = pointee_of(rhs_var) if rhs_pointee.variable? && rhs_pointee.named? return unless rhs_pointee.binding.memory.dynamic? # NOTE: An array typed parameter can be considered as an alias of the # corresponding argument. So, it is safe to return an address # of the argument. return if rhs_pointee.type.parameter? && rhs_pointee.type.array? case when lhs_var.binding.memory.static? W(expr.location) when lhs_var.scope.depth < rhs_pointee.scope.depth W(expr.location) end end end end def interpreter @interp end end class W0102 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_started += T(:start_function) @interp.on_function_ended += T(:end_function) @interp.on_parameter_defined += T(:add_parameter) @interp.on_indirection_expr_evaled += T(:relate_pointer) @interp.on_assignment_expr_evaled += T(:check_assignment) @params = nil @ptr_relationship = nil end private def start_function(*) @params = Set.new @ptr_relationship = {} end def end_function(*) @params = nil @ptr_relationship = nil end def add_parameter(*, var) if @params && var.named? @params.add(var.name) end end def relate_pointer(*, var, derefed_var) if @ptr_relationship @ptr_relationship[derefed_var] = var end end def check_assignment(expr, lhs_var, rhs_var) return unless @params && @ptr_relationship return unless lhs_var.type.pointer? && rhs_var.type.pointer? if ptr = @ptr_relationship[lhs_var] return unless ptr.named? && @params.include?(ptr.name) else return end if rhs_pointee = pointee_of(rhs_var) if rhs_pointee.variable? && rhs_pointee.named? return unless rhs_pointee.binding.memory.dynamic? # NOTE: An array typed parameter can be considered as an alias of the # corresponding argument. So, it is safe to return an address # of the argument. return if rhs_pointee.type.parameter? && rhs_pointee.type.array? W(expr.location) end end end def interpreter @interp end end class W0103 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_started += T(:start_function) @interp.on_function_ended += T(:end_function) @interp.on_variable_defined += T(:add_local_variable) @interp.on_parameter_defined += T(:add_local_variable) @interp.on_return_stmt_evaled += T(:check_return_statement) @lvars = nil end private def start_function(*) @lvars = Set.new end def end_function(*) @lvars = nil end def add_local_variable(*, var) return unless var.binding.memory.dynamic? if @lvars && var.named? @lvars.add(var.name) end end def check_return_statement(ret_stmt, ret_var) return unless @lvars return unless ret_var && ret_var.type.pointer? if pointee = pointee_of(ret_var) if pointee.variable? && pointee.named? # NOTE: An array typed parameter can be considered as an alias of the # corresponding argument. So, it is safe to return an address # of the argument. return if pointee.type.parameter? && pointee.type.array? if @lvars.include?(pointee.name) W(ret_stmt.location) end end end end def interpreter @interp end end class W0104 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:start_function) interp.on_function_ended += T(:check_constant_parameters) interp.on_parameter_defined += T(:add_parameter) interp.on_variable_value_updated += T(:write_parameter) @params = nil end private def start_function(*) @params = {} end def add_parameter(param_def, var) if @params && var.named? @params[var.name] = [false, var, param_def.location] end end def write_parameter(*, var) if @params && var.named? && @params.include?(var.name) @params[var.name][0] = true end end def check_constant_parameters(*) return unless @params @params.each do |name, (written, var, loc)| next if var.type.const? next if var.type.array? && var.type.base_type.const? W(loc, name) unless written end @params = nil end end class W0105 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:start_function) interp.on_function_ended += T(:check_constant_parameters) interp.on_parameter_defined += T(:add_parameter) interp.on_variable_value_updated += T(:write_parameter) interp.on_indirection_expr_evaled += T(:handle_indirection) interp.on_array_subscript_expr_evaled += T(:handle_array_subscript) @var_relationship = nil @params = nil end private def start_function(*) @var_relationship = {} @params = {} end def add_parameter(param_def, var) if @params && var.type.pointer? && var.named? @params[var] = [param_def.location, false] end end def write_parameter(*, var) return unless @var_relationship && @params if ptr = @var_relationship[var] if @params.include?(ptr) @params[ptr][1] = true end end end def handle_indirection(*, var, derefed_var) if @var_relationship @var_relationship[derefed_var] = var end end def handle_array_subscript(expr, ary_or_ptr, *, rslt_var) if @var_relationship && ary_or_ptr.type.pointer? @var_relationship[rslt_var] = ary_or_ptr end end def check_constant_parameters(*) return unless @params @params.each do |ptr, (loc, written)| base_type = ptr.type.unqualify.base_type unless base_type.function? unless written || base_type.const? W(loc, ptr.name) end end end @var_relationship = nil @params = nil end end class W0107 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_assignment_expr_evaled += T(:check_assignment) end private def check_assignment(expr, lhs_var, rhs_var) return unless lhs_var.type.pointer? && rhs_var.type.pointer? if rhs_pointee = pointee_of(rhs_var) if rhs_pointee.variable? && rhs_pointee.named? return unless rhs_pointee.binding.memory.dynamic? # NOTE: An array typed parameter can be considered as an alias of the # corresponding argument. So, it is safe to return an address # of the argument. return if rhs_pointee.type.parameter? && rhs_pointee.type.array? if lhs_var.scope.local? && lhs_var.binding.memory.static? W(expr.location) end end end end def interpreter @interp end end class W0108 < CodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def do_prepare(phase_ctxt) end def do_execute(phase_ctxt) phase_ctxt[:cc1_ast].accept(Visitor.new(phase_ctxt)) end class Visitor < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt) @phase_ctxt = phase_ctxt end def visit_if_statement(node) super if node.analysis_target?(traits) warn(node.expression) end def visit_if_else_statement(node) super if node.analysis_target?(traits) warn(node.expression) end def visit_while_statement(node) super if node.analysis_target?(traits) warn(node.expression) end def visit_do_statement(node) super if node.analysis_target?(traits) warn(node.expression) end def visit_for_statement(node) super if node.analysis_target?(traits) warn(node.condition_statement.expression) end def visit_c99_for_statement(node) super if node.analysis_target?(traits) warn(node.condition_statement.expression) end def visit_relational_expression(node) super if node.analysis_target?(traits) warn(node.lhs_operand) warn(node.rhs_operand) end def visit_equality_expression(node) super if node.analysis_target?(traits) warn(node.lhs_operand) warn(node.rhs_operand) end def visit_unary_arithmetic_expression(node) super if node.analysis_target?(traits) warn(node.operand) if node.operator.type == "!" end def visit_logical_and_expression(node) super if node.analysis_target?(traits) warn(node.lhs_operand) warn(node.rhs_operand) end def visit_logical_or_expression(node) super if node.analysis_target?(traits) warn(node.lhs_operand) warn(node.rhs_operand) end def visit_conditional_expression(node) super if node.analysis_target?(traits) warn(node.condition) end private def warn(node) node = node.expression while node.kind_of?(Cc1::GroupedExpression) if node && node.analysis_target?(traits) case node when Cc1::SimpleAssignmentExpression, Cc1::CompoundAssignmentExpression W(node.location) end end end extend Forwardable def_delegator :@phase_ctxt, :traits private :traits def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :Visitor end class W0109 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_implicit_function_declared += T(:check) end private def check(obj_spec, fun) W(obj_spec.location, fun.name) if fun.named? end end class W0110 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_for_stmt_started += T(:handle_for_statement) @interp.on_c99_for_stmt_started += T(:handle_for_statement) end private def handle_for_statement(stmt) stmt.accept(ForStatementAnalyzer.new(@phase_ctxt, @interp)) end class ForStatementAnalyzer < Cc1::SyntaxTreeVisitor include Cc1::InterpreterMediator include ReportUtil def initialize(phase_ctxt, interp) @phase_ctxt = phase_ctxt @interp = interp @reported = false end def visit_for_statement(node) node.condition_statement.accept(self) node.expression.accept(self) if node.expression end def visit_c99_for_statement(node) node.condition_statement.accept(self) node.expression.accept(self) if node.expression end def visit_object_specifier(node) return if @reported if var = variable_named(node.identifier.value) if var.type.scalar? && var.type.floating? W(node.location) @reported = true end end end private extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def interpreter @interp end def suppressors @phase_ctxt[:suppressors] end end private_constant :ForStatementAnalyzer end class W0112 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_equality_expr_evaled += T(:check_equality) end private def check_equality(expr, lhs_var, rhs_var, *) if lhs_var.type.scalar? && lhs_var.type.floating? and rhs_var.type.scalar? && rhs_var.type.floating? W(expr.location) end end end class W0114 < CodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def do_prepare(phase_ctxt) end def do_execute(phase_ctxt) phase_ctxt[:cc1_ast].accept(Visitor.new(phase_ctxt)) end class Visitor < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt) @phase_ctxt = phase_ctxt @logical_op_num = 0 end def visit_if_statement(node) if node.analysis_target?(traits) @logical_op_num = 0 node.expression.accept(self) check_logical_operation(node.location) node.statement.accept(self) end end def visit_if_else_statement(node) if node.analysis_target?(traits) @logical_op_num = 0 node.expression.accept(self) check_logical_operation(node.location) node.then_statement.accept(self) node.else_statement.accept(self) end end def visit_while_statement(node) if node.analysis_target?(traits) @logical_op_num = 0 node.expression.accept(self) check_logical_operation(node.location) node.statement.accept(self) end end def visit_do_statement(node) if node.analysis_target?(traits) node.statement.accept(self) @logical_op_num = 0 node.expression.accept(self) check_logical_operation(node.location) end end def visit_for_statement(node) if node.analysis_target?(traits) @logical_op_num = 0 node.condition_statement.accept(self) check_logical_operation(node.location) node.body_statement.accept(self) end end def visit_c99_for_statement(node) if node.analysis_target?(traits) @logical_op_num = 0 node.condition_statement.accept(self) check_logical_operation(node.location) node.body_statement.accept(self) end end def visit_unary_arithmetic_expression(node) if node.analysis_target?(traits) if node.operator.type == "!" @logical_op_num += 1 end super end end def visit_relational_expression(node) if node.analysis_target?(traits) @logical_op_num += 1 super end end def visit_equality_expression(node) if node.analysis_target?(traits) @logical_op_num += 1 super end end def visit_logical_and_expression(node) if node.analysis_target?(traits) @logical_op_num += 1 super end end def visit_logical_or_expression(node) if node.analysis_target?(traits) @logical_op_num += 1 super end end def visit_conditional_expression(node) if node.analysis_target?(traits) @logical_op_num = 0 node.condition.accept(self) check_logical_operation(node.condition.location) node.then_expression.accept(self) node.else_expression.accept(self) end end private def check_logical_operation(loc) W(loc) if @logical_op_num == 0 end extend Forwardable def_delegator :@phase_ctxt, :traits private :traits def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :Visitor end class W0115 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_shift_expr_evaled += T(:check) end private def check(shift_expr, lhs_var, rhs_var, *) op = shift_expr.operator.type return unless op == "<<" || op == "<<=" if lhs_var.type.unsigned? lhs_limit = scalar_value_of(lhs_var.type.max) >> rhs_var.value test = lhs_var.value.test_must_be_greater_than(lhs_limit) if test.true? W(shift_expr.location, *test.evidence.emit_context_messages(self, shift_expr.location)) end end end def interpreter @interp end end class W0116 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_shift_expr_evaled += T(:check) end private def check(shift_expr, lhs_var, rhs_var, *) operator = shift_expr.operator.type return unless operator == "<<" || operator == "<<=" if lhs_var.type.unsigned? lhs_limit = scalar_value_of(lhs_var.type.max) >> rhs_var.value if lhs_var.value.test_must_be_greater_than(lhs_limit).false? test = lhs_var.value.test_may_be_greater_than(lhs_limit) if test.true? W(shift_expr.location, *test.evidence.emit_context_messages(self, shift_expr.location)) end end end end def interpreter @interp end end class W0117 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_function_declared += M(:declare_function) interp.on_variable_declared += M(:declare_variable) interp.on_explicit_function_defined += T(:check_function) interp.on_variable_defined += T(:check_variable) @target_fpath = phase_ctxt[:sources].first.fpath @external_syms = Set.new end private def declare_function(*, fun) if fun.named? && fun.declared_as_extern? @external_syms.add(fun.name) end end def declare_variable(*, var) if var.named? && var.declared_as_extern? @external_syms.add(var.name) end end def check_function(fun_def, fun) if fun.named? && fun.declared_as_extern? return if fun.name == "main" unless @external_syms.include?(fun.name) if fun_def.location.fpath == @target_fpath W(fun_def.location, fun.name) end end end end def check_variable(var_def, var) if var.named? && var.declared_as_extern? unless @external_syms.include?(var.name) if var_def.location.fpath == @target_fpath W(var_def.location, var.name) end end end end end class W0118 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] fst_src = phase_ctxt[:sources].first if fst_src && fst_src.analysis_target?(traits) interp.on_explicit_function_declared += M(:check_function) interp.on_variable_declared += M(:check_variable) @target_fpath = fst_src.fpath @external_syms = Set.new end end private def check_function(fun_dcl, fun) if fun.named? && fun.declared_as_extern? unless @external_syms.include?(fun.name) if fun_dcl.location.fpath.identical?(@target_fpath) W(fun_dcl.location, fun.name) else @external_syms.add(fun.name) end end end end def check_variable(var_dcl, var) if var.named? && var.declared_as_extern? unless @external_syms.include?(var.name) if var_dcl.location.fpath.identical?(@target_fpath) W(var_dcl.location, var.name) else @external_syms.add(var.name) end end end end end class W0119 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_implicit_conv_performed += T(:check) end private def check(init_or_expr, from_var, to_var) if match?(from_var, to_var) W(init_or_expr.location) end end def from_type char_t end def to_type signed_char_t end def match?(from_var, to_var) unless from_var.type.same_as?(from_type) && to_var.type.same_as?(to_type) return false end if char_type_family?(from_type) && from_var.type.explicitly_signed? != from_type.explicitly_signed? return false end if char_type_family?(to_type) && to_var.type.explicitly_signed? != to_type.explicitly_signed? return false end true end def char_type_family?(type) type == char_t || type == signed_char_t || type == unsigned_char_t end def interpreter @interp end end class W0120 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type unsigned_char_t end end class W0121 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type signed_short_t end end class W0122 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type unsigned_short_t end end class W0123 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type signed_int_t end end class W0124 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type unsigned_int_t end end class W0125 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type signed_long_t end end class W0126 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type unsigned_long_t end end class W0127 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type float_t end end class W0128 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type double_t end end class W0129 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type long_double_t end end class W0130 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type signed_long_long_t end end class W0131 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type unsigned_long_long_t end end class W0132 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type char_t end end class W0133 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type char_t end end class W0134 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type char_t end end class W0135 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type char_t end end class W0136 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type char_t end end class W0137 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type char_t end end class W0138 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type char_t end end class W0139 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type char_t end end class W0140 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type char_t end end class W0141 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type char_t end end class W0142 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type signed_char_t end end class W0143 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type signed_char_t end end class W0144 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type signed_short_t end end class W0145 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type signed_char_t end end class W0146 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type signed_short_t end end class W0147 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type signed_int_t end end class W0148 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type signed_char_t end end class W0149 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type signed_short_t end end class W0150 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type signed_int_t end end class W0151 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type signed_long_t end end class W0152 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type signed_char_t end end class W0153 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type signed_short_t end end class W0154 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type signed_int_t end end class W0155 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type signed_long_t end end class W0156 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type signed_long_long_t end end class W0157 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type unsigned_char_t end end class W0158 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type unsigned_short_t end end class W0159 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type unsigned_int_t end end class W0160 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type unsigned_long_t end end class W0161 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type unsigned_char_t end end class W0162 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type unsigned_short_t end end class W0163 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type unsigned_int_t end end class W0164 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type unsigned_long_t end end class W0165 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type unsigned_char_t end end class W0166 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type unsigned_short_t end end class W0167 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type unsigned_int_t end end class W0168 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type unsigned_long_t end end class W0169 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type unsigned_char_t end end class W0170 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type unsigned_short_t end end class W0171 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type unsigned_int_t end end class W0172 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type unsigned_long_t end end class W0173 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type unsigned_long_long_t end end class W0174 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type unsigned_long_long_t end end class W0175 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type unsigned_long_long_t end end class W0176 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type unsigned_long_long_t end end class W0177 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type unsigned_char_t end end class W0178 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type unsigned_short_t end end class W0179 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type unsigned_int_t end end class W0180 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type unsigned_long_t end end class W0181 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type unsigned_long_long_t end end class W0182 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type float_t end end class W0183 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type double_t end end class W0184 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type long_double_t end end class W0185 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type float_t end end class W0186 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type double_t end end class W0187 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type long_double_t end end class W0188 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type float_t end end class W0189 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type double_t end end class W0190 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type long_double_t end end class W0191 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type float_t end end class W0192 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type double_t end end class W0193 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type long_double_t end end class W0194 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type float_t end end class W0195 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type double_t end end class W0196 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type long_double_t end end class W0197 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type float_t end end class W0198 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type double_t end end class W0199 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type long_double_t end end class W0200 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type float_t end end class W0201 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type double_t end end class W0202 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type long_double_t end end class W0203 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type float_t end end class W0204 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type double_t end end class W0205 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type long_double_t end end class W0206 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type float_t end end class W0207 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type double_t end end class W0208 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type long_double_t end end class W0209 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type float_t end end class W0210 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type double_t end end class W0211 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type long_double_t end end class W0212 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type char_t end end class W0213 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type signed_char_t end end class W0214 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type unsigned_char_t end end class W0215 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type signed_short_t end end class W0216 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type unsigned_short_t end end class W0217 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type signed_int_t end end class W0218 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type unsigned_int_t end end class W0219 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type signed_long_t end end class W0220 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type unsigned_long_t end end class W0221 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type char_t end end class W0222 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type signed_char_t end end class W0223 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type unsigned_char_t end end class W0224 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type signed_short_t end end class W0225 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type unsigned_short_t end end class W0226 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type signed_int_t end end class W0227 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type unsigned_int_t end end class W0228 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type signed_long_t end end class W0229 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type unsigned_long_t end end class W0230 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type char_t end end class W0231 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type signed_char_t end end class W0232 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type unsigned_char_t end end class W0233 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type signed_short_t end end class W0234 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type unsigned_short_t end end class W0235 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type signed_int_t end end class W0236 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type unsigned_int_t end end class W0237 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type signed_long_t end end class W0238 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type unsigned_long_t end end class W0239 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type signed_long_long_t end end class W0240 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type unsigned_long_long_t end end class W0241 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type signed_long_long_t end end class W0242 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type unsigned_long_long_t end end class W0243 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type signed_long_long_t end end class W0244 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type unsigned_long_long_t end end class W0245 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type signed_short_t end end class W0246 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type signed_int_t end end class W0247 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type signed_long_t end end class W0248 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type signed_int_t end end class W0249 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type signed_long_t end end class W0250 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type signed_long_t end end class W0251 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type signed_long_long_t end end class W0252 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type signed_long_long_t end end class W0253 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type signed_long_long_t end end class W0254 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type signed_long_long_t end end class W0255 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_started += T(:enter_function) @interp.on_function_ended += T(:leave_function) @interp.on_return_stmt_evaled += T(:check) @cur_fun = nil end private def enter_function(fun_def, fun) @cur_fun = fun end def leave_function(fun_def, fun) @cur_fun = nil end def check(ret_stmt, ret_var) if @cur_fun && ret_var if match?(ret_var.type, @cur_fun.type.return_type) W(ret_stmt.location, @cur_fun.name) end end end def from_type char_t end def to_type signed_char_t end def match?(expr_type, fun_type) unless expr_type.same_as?(from_type) && fun_type.same_as?(to_type) return false end if char_type_family?(expr_type) && expr_type.explicitly_signed? != from_type.explicitly_signed? return false end if char_type_family?(fun_type) && fun_type.explicitly_signed? != to_type.explicitly_signed? return false end true end def char_type_family?(type) type == char_t || type == signed_char_t || type == unsigned_char_t end def interpreter @interp end end class W0256 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type unsigned_char_t end end class W0257 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type signed_short_t end end class W0258 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type unsigned_short_t end end class W0259 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type signed_int_t end end class W0260 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type unsigned_int_t end end class W0261 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type signed_long_t end end class W0262 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type unsigned_long_t end end class W0263 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type float_t end end class W0264 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type double_t end end class W0265 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type long_double_t end end class W0266 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type signed_long_long_t end end class W0267 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type char_t end def to_type unsigned_long_long_t end end class W0268 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type char_t end end class W0269 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type char_t end end class W0270 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type char_t end end class W0271 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type char_t end end class W0272 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type char_t end end class W0273 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type char_t end end class W0274 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type char_t end end class W0275 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type char_t end end class W0276 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type char_t end end class W0277 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type char_t end end class W0278 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type signed_char_t end end class W0279 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type signed_char_t end end class W0280 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type signed_short_t end end class W0281 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type signed_char_t end end class W0282 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type signed_short_t end end class W0283 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type signed_int_t end end class W0284 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type signed_char_t end end class W0285 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type signed_short_t end end class W0286 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type signed_int_t end end class W0287 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type signed_long_t end end class W0288 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type signed_char_t end end class W0289 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type signed_short_t end end class W0290 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type signed_int_t end end class W0291 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type signed_long_t end end class W0292 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type signed_long_long_t end end class W0293 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type unsigned_char_t end end class W0294 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type unsigned_short_t end end class W0295 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type unsigned_int_t end end class W0296 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type unsigned_long_t end end class W0297 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type unsigned_char_t end end class W0298 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type unsigned_short_t end end class W0299 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type unsigned_int_t end end class W0300 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type unsigned_long_t end end class W0301 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type unsigned_char_t end end class W0302 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type unsigned_short_t end end class W0303 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type unsigned_int_t end end class W0304 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type unsigned_long_t end end class W0305 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type unsigned_char_t end end class W0306 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type unsigned_short_t end end class W0307 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type unsigned_int_t end end class W0308 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type unsigned_long_t end end class W0309 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type unsigned_long_long_t end end class W0310 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type unsigned_long_long_t end end class W0311 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type unsigned_long_long_t end end class W0312 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type unsigned_long_long_t end end class W0313 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type unsigned_char_t end end class W0314 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type unsigned_short_t end end class W0315 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type unsigned_int_t end end class W0316 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type unsigned_long_t end end class W0317 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type unsigned_long_long_t end end class W0318 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type float_t end end class W0319 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type double_t end end class W0320 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type long_double_t end end class W0321 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type float_t end end class W0322 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type double_t end end class W0323 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_char_t end def to_type long_double_t end end class W0324 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type float_t end end class W0325 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type double_t end end class W0326 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type long_double_t end end class W0327 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type float_t end end class W0328 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type double_t end end class W0329 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type long_double_t end end class W0330 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type float_t end end class W0331 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type double_t end end class W0332 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type long_double_t end end class W0333 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type float_t end end class W0334 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type double_t end end class W0335 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type long_double_t end end class W0336 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type float_t end end class W0337 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type double_t end end class W0338 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type long_double_t end end class W0339 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type float_t end end class W0340 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type double_t end end class W0341 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type long_double_t end end class W0342 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type float_t end end class W0343 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type double_t end end class W0344 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type long_double_t end end class W0345 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type float_t end end class W0346 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type double_t end end class W0347 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type long_double_t end end class W0348 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type char_t end end class W0349 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type signed_char_t end end class W0350 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type unsigned_char_t end end class W0351 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type signed_short_t end end class W0352 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type unsigned_short_t end end class W0353 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type signed_int_t end end class W0354 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type unsigned_int_t end end class W0355 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type signed_long_t end end class W0356 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type unsigned_long_t end end class W0357 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type char_t end end class W0358 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type signed_char_t end end class W0359 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type unsigned_char_t end end class W0360 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type signed_short_t end end class W0361 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type unsigned_short_t end end class W0362 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type signed_int_t end end class W0363 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type unsigned_int_t end end class W0364 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type signed_long_t end end class W0365 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type unsigned_long_t end end class W0366 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type char_t end end class W0367 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type signed_char_t end end class W0368 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type unsigned_char_t end end class W0369 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type signed_short_t end end class W0370 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type unsigned_short_t end end class W0371 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type signed_int_t end end class W0372 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type unsigned_int_t end end class W0373 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type signed_long_t end end class W0374 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type unsigned_long_t end end class W0375 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type signed_long_long_t end end class W0376 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type unsigned_long_long_t end end class W0377 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type signed_long_long_t end end class W0378 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type unsigned_long_long_t end end class W0379 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type signed_long_long_t end end class W0380 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type unsigned_long_long_t end end class W0381 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type signed_char_t end end class W0382 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type unsigned_char_t end end class W0383 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type signed_char_t end end class W0384 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type signed_short_t end end class W0385 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type unsigned_char_t end end class W0386 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type unsigned_short_t end end class W0387 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type signed_char_t end end class W0388 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type signed_short_t end end class W0389 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type signed_int_t end end class W0390 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type unsigned_char_t end end class W0391 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type unsigned_short_t end end class W0392 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type unsigned_int_t end end class W0393 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type signed_char_t end end class W0394 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type signed_short_t end end class W0395 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type signed_int_t end end class W0396 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type signed_long_t end end class W0397 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type unsigned_char_t end end class W0398 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type unsigned_short_t end end class W0399 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type unsigned_int_t end end class W0400 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type unsigned_long_t end end class W0401 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type signed_short_t end end class W0402 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type signed_int_t end end class W0403 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type signed_long_t end end class W0404 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type signed_int_t end end class W0405 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type signed_long_t end end class W0406 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type signed_long_t end end class W0407 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_char_t end def to_type signed_long_long_t end end class W0408 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type signed_long_long_t end end class W0409 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type signed_long_long_t end end class W0410 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type signed_long_long_t end end class W0411 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_enum_type_declaration += T(:check) end private def check(node) if enums = node.enum_specifier.enumerators exprs = enums.map { |enum| enum.expression } return if exprs.all? { |expr| expr.nil? } return if exprs.first && exprs.drop(1).all? { |expr| expr.nil? } return if exprs.all? { |expr| !expr.nil? } W(node.location) end end end class W0413 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_if_statement += T(:check_if_statement) trav.enter_if_else_statement += T(:check_if_else_statement) trav.enter_while_statement += T(:check_while_statement) trav.enter_do_statement += T(:check_do_statement) trav.enter_for_statement += T(:check_for_statement) trav.enter_c99_for_statement += T(:check_for_statement) end private def check_if_statement(node) unless node.header_terminator.location.line_no == node.statement.head_location.line_no unless node.statement.kind_of?(Cc1::CompoundStatement) W(node.statement.location) end end end def check_if_else_statement(node) unless node.then_header_terminator.location.line_no == node.then_statement.head_location.line_no unless node.then_statement.kind_of?(Cc1::CompoundStatement) W(node.then_statement.location) end end unless node.else_header_terminator.location.line_no == node.else_statement.head_location.line_no case node.else_statement when Cc1::CompoundStatement, Cc1::IfStatement, Cc1::IfElseStatement else W(node.else_statement.location) end end end def check_while_statement(node) unless node.header_terminator.location.line_no == node.statement.head_location.line_no unless node.statement.kind_of?(Cc1::CompoundStatement) W(node.statement.location) end end end def check_do_statement(node) unless node.header_terminator.location.line_no == node.statement.head_location.line_no unless node.statement.kind_of?(Cc1::CompoundStatement) W(node.statement.location) end end end def check_for_statement(node) unless node.header_terminator.location.line_no == node.body_statement.head_location.line_no unless node.body_statement.kind_of?(Cc1::CompoundStatement) W(node.body_statement.location) end end end end class W0414 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_if_statement += T(:check_if_statement) trav.enter_if_else_statement += T(:check_if_else_statement) trav.enter_while_statement += T(:check_while_statement) trav.enter_do_statement += T(:check_do_statement) trav.enter_for_statement += T(:check_for_statement) trav.enter_c99_for_statement += T(:check_for_statement) end private def check_if_statement(node) if node.header_terminator.location.line_no == node.statement.head_location.line_no unless node.statement.kind_of?(Cc1::CompoundStatement) W(node.statement.location) end end end def check_if_else_statement(node) if node.then_header_terminator.location.line_no == node.then_statement.head_location.line_no unless node.then_statement.kind_of?(Cc1::CompoundStatement) W(node.then_statement.location) end end if node.else_header_terminator.location.line_no == node.else_statement.head_location.line_no case node.else_statement when Cc1::CompoundStatement, Cc1::IfStatement, Cc1::IfElseStatement else W(node.else_statement.location) end end end def check_while_statement(node) if node.header_terminator.location.line_no == node.statement.head_location.line_no unless node.statement.kind_of?(Cc1::CompoundStatement) W(node.statement.location) end end end def check_do_statement(node) if node.header_terminator.location.line_no == node.statement.head_location.line_no unless node.statement.kind_of?(Cc1::CompoundStatement) W(node.statement.location) end end end def check_for_statement(node) if node.header_terminator.location.line_no == node.body_statement.head_location.line_no unless node.body_statement.kind_of?(Cc1::CompoundStatement) W(node.body_statement.location) end end end end class W0421 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_indirection_expr_evaled += T(:check_indirection) @interp.on_member_access_expr_evaled += T(:check_member_access) @interp.on_array_subscript_expr_evaled += T(:check_array_subscript) end private def check_indirection(expr, ptr_var, *) return unless ptr_var.value.scalar? unless constant_expression?(expr.operand) test = ptr_var.value.test_must_be_null if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end def check_member_access(expr, outer_var, *) return unless outer_var.type.pointer? return unless outer_var.value.scalar? unless constant_expression?(expr.expression) test = outer_var.value.test_must_be_null if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end def check_array_subscript(expr, ary_or_ptr, *) return unless ary_or_ptr.type.pointer? return unless ary_or_ptr.value.scalar? unless constant_expression?(expr.expression) test = ary_or_ptr.value.test_must_be_null if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end def interpreter @interp end end class W0422 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_indirection_expr_evaled += T(:check_indirection) @interp.on_member_access_expr_evaled += T(:check_member_access) @interp.on_array_subscript_expr_evaled += T(:check_array_subscript) end private def check_indirection(expr, ptr_var, *) return unless ptr_var.value.scalar? unless constant_expression?(expr.operand) if ptr_var.value.test_must_be_null.false? test = ptr_var.value.test_may_be_null if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end end def check_member_access(expr, outer_var, *) return unless outer_var.type.pointer? return unless outer_var.value.scalar? unless constant_expression?(expr.expression) if outer_var.value.test_must_be_null.false? test = outer_var.value.test_may_be_null if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end end def check_array_subscript(expr, ary_or_ptr, *) return unless ary_or_ptr.type.pointer? return unless ary_or_ptr.value.scalar? unless constant_expression?(expr.expression) if ary_or_ptr.value.test_must_be_null.false? test = ary_or_ptr.value.test_may_be_null if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end end def interpreter @interp end end class W0423 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_multiplicative_expr_evaled += T(:check_binary) interp.on_additive_expr_evaled += T(:check_binary) interp.on_shift_expr_evaled += T(:check_binary) interp.on_and_expr_evaled += T(:check_binary) interp.on_exclusive_or_expr_evaled += T(:check_binary) interp.on_inclusive_or_expr_evaled += T(:check_binary) interp.on_prefix_increment_expr_evaled += T(:check_unary_prefix) interp.on_postfix_increment_expr_evaled += T(:check_unary_postfix) interp.on_prefix_decrement_expr_evaled += T(:check_unary_prefix) interp.on_postfix_decrement_expr_evaled += T(:check_unary_postfix) end private def check_binary(expr, lhs_var, rhs_var, *) lhs_type, lhs_val = lhs_var.type, lhs_var.value rhs_type, rhs_val = rhs_var.type, rhs_var.value if lhs_type.pointer? test = lhs_val.test_must_be_null if test.true? lhs_operand = expr.lhs_operand W(lhs_operand.location, *test.evidence.emit_context_messages(self, lhs_operand.location)) end end if rhs_type.pointer? test = rhs_val.test_must_be_null if test.true? rhs_operand = expr.rhs_operand W(rhs_operand.location, *test.evidence.emit_context_messages(self, rhs_operand.location)) end end end def check_unary_prefix(expr, ope_var, orig_val) type, val = ope_var.type, orig_val if type.pointer? test = val.test_must_be_null if test.true? W(expr.operand.location, *test.evidence.emit_context_messages(self, expr.operand.location)) end end end def check_unary_postfix(expr, ope_var, *) type, val = ope_var.type, ope_var.value if type.pointer? test = val.test_must_be_null if test.true? W(expr.operand.location, *test.evidence.emit_context_messages(self, expr.operand.location)) end end end end class W0424 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_multiplicative_expr_evaled += T(:check_binary) interp.on_additive_expr_evaled += T(:check_binary) interp.on_shift_expr_evaled += T(:check_binary) interp.on_and_expr_evaled += T(:check_binary) interp.on_exclusive_or_expr_evaled += T(:check_binary) interp.on_inclusive_or_expr_evaled += T(:check_binary) interp.on_prefix_increment_expr_evaled += T(:check_unary_prefix) interp.on_postfix_increment_expr_evaled += T(:check_unary_postfix) interp.on_prefix_decrement_expr_evaled += T(:check_unary_prefix) interp.on_postfix_decrement_expr_evaled += T(:check_unary_postfix) end private def check_binary(expr, lhs_var, rhs_var, *) lhs_type, lhs_val = lhs_var.type, lhs_var.value rhs_type, rhs_val = rhs_var.type, rhs_var.value if lhs_type.pointer? && lhs_val.test_must_be_null.false? test = lhs_val.test_may_be_null if test.true? lhs_operand = expr.lhs_operand W(lhs_operand.location, *test.evidence.emit_context_messages(self, lhs_operand.location)) end end if rhs_type.pointer? && rhs_val.test_must_be_null.false? test = rhs_val.test_may_be_null if test.true? rhs_operand = expr.rhs_operand W(rhs_operand.location, *test.evidence.emit_context_messages(self, rhs_operand.location)) end end end def check_unary_prefix(expr, ope_var, orig_val) type, val = ope_var.type, orig_val if type.pointer? && val.test_must_be_null.false? test = val.test_may_be_null if test.true? W(expr.operand.location, *test.evidence.emit_context_messages(self, expr.operand.location)) end end end def check_unary_postfix(expr, ope_var, *) type, val = ope_var.type, ope_var.value if type.pointer? && val.test_must_be_null.false? test = val.test_may_be_null if test.true? W(expr.operand.location, *test.evidence.emit_context_messages(self, expr.operand.location)) end end end end class W0425 < CodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def do_prepare(phase_ctxt) end def do_execute(phase_ctxt) phase_ctxt[:cc1_ast].accept(Visitor.new(phase_ctxt)) end class Visitor < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt) @phase_ctxt = phase_ctxt @lst_dcl_or_stmt_loc = Location.new @lst_memb_dcl_loc = Location.new end def visit_function_declaration(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) @lst_dcl_or_stmt_loc = node.location end end def visit_variable_declaration(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) @lst_dcl_or_stmt_loc = node.location end end def visit_variable_definition(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) @lst_dcl_or_stmt_loc = node.location end end def visit_typedef_declaration(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) @lst_dcl_or_stmt_loc = node.location end end def visit_member_declaration(node) if node.analysis_target?(traits) check_member_dcl(node) @lst_memb_dcl_loc = node.location end end def visit_generic_labeled_statement(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) @lst_dcl_or_stmt_loc = node.location end end def visit_case_labeled_statement(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) @lst_dcl_or_stmt_loc = node.location end end def visit_default_labeled_statement(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) @lst_dcl_or_stmt_loc = node.location end end def visit_expression_statement(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) @lst_dcl_or_stmt_loc = node.location end end def visit_if_statement(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) node.statement.accept(self) @lst_dcl_or_stmt_loc = node.location end end def visit_if_else_statement(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) orig_loc = @lst_dcl_or_stmt_loc node.then_statement.accept(self) @lst_dcl_or_stmt_loc = orig_loc node.else_statement.accept(self) @lst_dcl_or_stmt_loc = node.location end end def visit_switch_statement(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) node.statement.accept(self) @lst_dcl_or_stmt_loc = node.location end end def visit_while_statement(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) node.statement.accept(self) @lst_dcl_or_stmt_loc = node.location end end def visit_do_statement(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) node.statement.accept(self) @lst_dcl_or_stmt_loc = node.location end end def visit_for_statement(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) node.body_statement.accept(self) @lst_dcl_or_stmt_loc = node.location end end def visit_c99_for_statement(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) node.body_statement.accept(self) @lst_dcl_or_stmt_loc = node.location end end def visit_goto_statement(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) @lst_dcl_or_stmt_loc = node.location end end def visit_continue_statement(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) @lst_dcl_or_stmt_loc = node.location end end def visit_break_statement(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) @lst_dcl_or_stmt_loc = node.location end end def visit_return_statement(node) if node.analysis_target?(traits) check_dcl_or_stmt(node) @lst_dcl_or_stmt_loc = node.location end end private def check_dcl_or_stmt(node) if @lst_dcl_or_stmt_loc.fpath == node.location.fpath && @lst_dcl_or_stmt_loc.line_no == node.location.line_no W(node.location) end end def check_member_dcl(node) if @lst_memb_dcl_loc.fpath == node.location.fpath && @lst_memb_dcl_loc.line_no == node.location.line_no W(node.location) end end extend Forwardable def_delegator :@phase_ctxt, :traits private :traits def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :Visitor end class W0431 < CodeCheck def_registrant_phase Cc1::Prepare2Phase include CodingStyleAccessor include MonitorUtil # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def do_prepare(phase_ctxt) fpath = phase_ctxt[:sources].first.fpath @tokens = phase_ctxt[:cc1_tokens].select { |tok| tok.location.fpath == fpath } @index = 0 @indent_level = 0 @indent_widths = Hash.new(0) @paren_depth = 0 @lst_token = nil end def last_line_no @lst_token ? @lst_token.location.line_no : 0 end def do_execute(phase_ctxt) while tok = next_token case tok.type when "{" on_left_brace(tok) when "}" on_right_brace(tok) when "(" on_left_paren(tok) when ")" on_right_paren(tok) end case tok.type when :IF, :FOR, :WHILE if last_line_no < tok.location.line_no on_beginning_of_line(tok) end skip_controlling_part unless tok = peek_token and tok.type == "{" skip_simple_substatement end when :ELSE if last_line_no < tok.location.line_no on_beginning_of_line(tok) end unless tok = peek_token and tok.type == :IF || tok.type == "{" skip_simple_substatement end when :DO if last_line_no < tok.location.line_no on_beginning_of_line(tok) end unless tok = peek_token and tok.type == "{" skip_simple_substatement end else if last_line_no < tok.location.line_no on_beginning_of_line(tok) end end end end def skip_controlling_part paren_depth = 0 while tok = next_token case tok.type when "(" paren_depth += 1 when ")" paren_depth -= 1 break if paren_depth == 0 end end end def skip_simple_substatement paren_depth = 0 while tok = next_token case tok.type when "(" paren_depth += 1 when ")" paren_depth -= 1 end case tok.type when :IF, :FOR, :WHILE skip_controlling_part unless tok = peek_token and tok.type == "{" skip_simple_substatement break end when :ELSE unless tok = peek_token and tok.type == :IF || tok.type == "{" skip_simple_substatement break end when :DO unless tok = peek_token and tok.type == "{" skip_simple_substatement skip_simple_substatement break end when ";" break if paren_depth == 0 end end end def next_token return nil unless tok = peek_token @index += 1 case tok.type when :CASE while tok = peek_token @index += 1 break if tok.type == ":" end when :IDENTIFIER, :DEFAULT if nxt_tok = @tokens[@index] and nxt_tok.type == ":" tok = peek_token @index += 1 end end tok end def peek_token if tok = @tokens[@index] @lst_token = @tokens[[0, @index - 1].max] checkpoint(tok.location) end tok end def on_left_brace(tok) if indent_style == INDENT_STYLE_GNU && @indent_level > 0 @indent_level += 2 else @indent_level += 1 end end def on_right_brace(tok) if indent_style == INDENT_STYLE_GNU @indent_level -= 2 @indent_level = 0 if @indent_level < 0 else @indent_level -= 1 end end def on_left_paren(tok) @paren_depth += 1 end def on_right_paren(tok) @paren_depth -= 1 end def on_beginning_of_line(tok) return if @paren_depth > 0 || @lst_token.replaced? case tok.type when "{" if @indent_level == 0 widths_idx = @indent_level else widths_idx = @indent_level - 1 end when "}" if indent_style == INDENT_STYLE_GNU && @indent_level > 0 widths_idx = @indent_level + 1 else widths_idx = @indent_level end else widths_idx = @indent_level end expected_column_no = @indent_widths[widths_idx] if tok.location.appearance_column_no < expected_column_no W(tok.location) if tok.analysis_target?(traits) end @indent_widths[widths_idx] = tok.location.appearance_column_no end def monitor @phase_ctxt.monitor end end class W0432 < CodeCheck def_registrant_phase Cc1::Prepare2Phase include CodingStyleAccessor include MonitorUtil # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def do_prepare(phase_ctxt) fpath = phase_ctxt[:sources].first.fpath @tokens = phase_ctxt[:cc1_tokens].select { |tok| tok.location.fpath == fpath } @index = 0 @indent_level = 0 @indent_width = indent_width @paren_depth = 0 @lst_token = nil end def last_line_no @lst_token ? @lst_token.location.line_no : 0 end def do_execute(phase_ctxt) while tok = next_token case tok.type when "{" on_left_brace(tok) when "}" on_right_brace(tok) when "(" on_left_paren(tok) when ")" on_right_paren(tok) end case tok.type when :IF, :FOR, :WHILE if last_line_no < tok.location.line_no on_beginning_of_line(tok) end skip_controlling_part unless tok = peek_token and tok.type == "{" process_simple_substatement end when :ELSE if last_line_no < tok.location.line_no on_beginning_of_line(tok) end unless tok = peek_token and tok.type == :IF || tok.type == "{" process_simple_substatement end when :DO if last_line_no < tok.location.line_no on_beginning_of_line(tok) end unless tok = peek_token and tok.type == "{" process_simple_substatement end else if last_line_no < tok.location.line_no on_beginning_of_line(tok) end end end end def skip_controlling_part paren_depth = 0 while tok = next_token case tok.type when "(" paren_depth += 1 when ")" paren_depth -= 1 break if paren_depth == 0 end end end def process_simple_substatement @indent_level += 1 while tok = next_token case tok.type when "{" on_left_brace(tok) when "}" on_right_brace(tok) when "(" on_left_paren(tok) when ")" on_right_paren(tok) end case tok.type when :IF, :FOR, :WHILE if last_line_no < tok.location.line_no on_beginning_of_line(tok) end skip_controlling_part unless tok = peek_token and tok.type == "{" process_simple_substatement break end when :ELSE if last_line_no < tok.location.line_no on_beginning_of_line(tok) end unless tok = peek_token and tok.type == :IF || tok.type == "{" process_simple_substatement break end when :DO if last_line_no < tok.location.line_no on_beginning_of_line(tok) end unless tok = peek_token and tok.type == "{" process_simple_substatement process_simple_substatement break end else if last_line_no < tok.location.line_no on_beginning_of_line(tok) end break if tok.type == ";" end end @indent_level -= 1 end def next_token return nil unless tok = peek_token @index += 1 case tok.type when :CASE while tok = peek_token @index += 1 break if tok.type == ":" end when :IDENTIFIER, :DEFAULT if nxt_tok = @tokens[@index] and nxt_tok.type == ":" tok = peek_token @index += 1 end end tok end def peek_token if tok = @tokens[@index] @lst_token = @tokens[[0, @index - 1].max] checkpoint(tok.location) end tok end def on_left_brace(tok) if indent_style == INDENT_STYLE_GNU && @indent_level > 0 @indent_level += 2 else @indent_level += 1 end end def on_right_brace(tok) if indent_style == INDENT_STYLE_GNU @indent_level -= 2 @indent_level = 0 if @indent_level < 0 else @indent_level -= 1 end end def on_left_paren(tok) @paren_depth += 1 end def on_right_paren(tok) @paren_depth -= 1 end def on_beginning_of_line(tok) return if @paren_depth > 0 || @lst_token.replaced? case tok.type when "{" if @indent_level == 0 expected_column_no = expected_indent_width(tok) else expected_column_no = expected_indent_width(tok, -1) end when "}" if indent_style == INDENT_STYLE_GNU && @indent_level > 0 expected_column_no = expected_indent_width(tok, +1) else expected_column_no = expected_indent_width(tok) end else expected_column_no = expected_indent_width(tok) end unless tok.location.appearance_column_no == expected_column_no W(tok.location) if tok.analysis_target?(traits) end end def expected_indent_width(tok, delta_level = 0) if @indent_width == 0 && @indent_level > 0 @indent_width = (tok.location.appearance_column_no - 1) / @indent_level end if @indent_width > 0 @indent_width * @indent_level + @indent_width * delta_level + 1 else tok.location.appearance_column_no end end def monitor @phase_ctxt.monitor end end class W0440 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include CodingStyleAccessor # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_compound_statement += T(:check) end private def check(node) return if indent_style == INDENT_STYLE_K_AND_R unless node.head_location.appearance_column_no == node.tail_location.appearance_column_no W(node.tail_location) end end end class W0441 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_constant_referred += T(:check) end private def check(const_spec, var) return unless var.type.scalar? && var.type.integer? return if const_spec.character? if const_spec.suffix.nil? && var.type != int_t W(const_spec.location) end end def interpreter @interp end end class W0446 < CodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def do_prepare(phase_ctxt) end def do_execute(phase_ctxt) phase_ctxt[:cc1_ast].accept(Visitor.new(phase_ctxt)) end class Visitor < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt) @phase_ctxt = phase_ctxt end def visit_simple_assignment_expression(node) if node.analysis_target?(traits) super warn(node.lhs_operand) warn(node.rhs_operand) end end def visit_compound_assignment_expression(node) if node.analysis_target?(traits) super warn(node.lhs_operand) warn(node.rhs_operand) end end def visit_function_call_expression(node) if node.analysis_target?(traits) super node.argument_expressions.each { |expr| warn(expr) } end end def visit_unary_arithmetic_expression(node) if node.analysis_target?(traits) super if node.operator.type == "+" || node.operator.type == "-" warn(node.operand) end end end def visit_multiplicative_expression(node) if node.analysis_target?(traits) super warn(node.lhs_operand) warn(node.rhs_operand) end end def visit_additive_expression(node) if node.analysis_target?(traits) super warn(node.lhs_operand) warn(node.rhs_operand) end end def visit_return_statement(node) if node.analysis_target?(traits) super warn(node.expression) if node.expression end end private def warn(node) node = node.expression while node.kind_of?(Cc1::GroupedExpression) if node && node.analysis_target?(traits) case node when Cc1::SimpleAssignmentExpression, Cc1::CompoundAssignmentExpression W(node.location) end end end extend Forwardable def_delegator :@phase_ctxt, :traits private :traits def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :Visitor end class W0447 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_comma_separated_expression += T(:check) trav.enter_for_statement += T(:enter_for_statement) trav.leave_for_statement += T(:leave_for_statement) trav.enter_c99_for_statement += T(:enter_for_statement) trav.leave_c99_for_statement += T(:leave_for_statement) @in_for_stmt = false end private def check(node) W(node.location) unless @in_for_stmt end def enter_for_statement(node) @in_for_stmt = true end def leave_for_statement(node) @in_for_stmt = false end end class W0456 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:check_variable) interp.on_explicit_function_defined += T(:check_function) @target_fpath = phase_ctxt[:sources].first.fpath end private def check_variable(var_def, var) if var.declared_as_extern? unless var_def.location.fpath == @target_fpath W(var_def.location, var.name) end end end def check_function(fun_def, fun) if fun.declared_as_extern? unless fun_def.location.fpath == @target_fpath W(fun_def.location, fun.name) end end end end class W0457 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_function_declaration += T(:check_function) trav.enter_ansi_function_definition += T(:check_function) trav.enter_kandr_function_definition += T(:check_function) end private def check_function(node) W(node.location) if node.implicitly_typed? end end class W0458 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_variable_declaration += T(:check_variable) trav.enter_variable_definition += T(:check_variable) trav.enter_parameter_definition += T(:check_variable) end private def check_variable(node) W(node.location) if node.implicitly_typed? end end class W0459 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_value_referred += T(:check) end private def check(expr, var) return if var.scope.global? || var.binding.memory.static? if var.named? test = var.value.test_must_be_undefined if test.true? var = var.owner while var.inner? W(expr.location, var.name, *test.evidence.emit_context_messages(self, expr.location)) end end end end class W0460 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_value_referred += T(:check) end private def check(expr, var) return if var.scope.global? || var.binding.memory.static? if var.named? if var.value.test_must_be_undefined.false? test = var.value.test_may_be_undefined if test.true? var = var.owner while var.inner? W(expr.location, var.name, *test.evidence.emit_context_messages(self, expr.location)) end end end end end class W0461 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_call_expr_evaled += T(:check) end private def check(funcall_expr, fun, arg_vars, *) args = arg_vars.zip(fun.type.parameter_types) args.each_with_index do |(arg, type), idx| next unless arg.variable? && arg.value.scalar? next unless type && type.pointer? base_type = type.unqualify.base_type next unless !base_type.function? && base_type.const? if pointee = pointee_of(arg) and pointee.variable? if !pointee.temporary? test = pointee.value.test_must_be_undefined if test.true? arg_expr = funcall_expr.argument_expressions[idx] W(arg_expr.location, *test.evidence.emit_context_messages(self, arg_expr.location)) end end end end end def interpreter @interp end end class W0462 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_call_expr_evaled += T(:check) end private def check(funcall_expr, fun, arg_vars, *) args = arg_vars.zip(fun.type.parameter_types) args.each_with_index do |(arg, type), idx| next unless arg.variable? && arg.value.scalar? next unless type && type.pointer? next unless type.unqualify.base_type.const? if pointee = pointee_of(arg) and pointee.variable? next if pointee.value.test_must_be_undefined.true? if !pointee.temporary? test = pointee.value.test_may_be_undefined if test.true? arg_expr = funcall_expr.argument_expressions[idx] W(arg_expr.location, *test.evidence.emit_context_messages(self, arg_expr.location)) end end end end end def interpreter @interp end end class W0488 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: W0488 may be duplicative when problematic operators appear thrice # or more in an expression. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_initializer += T(:check_initializer) trav.enter_expression_statement += T(:check_expr_statement) trav.enter_if_statement += T(:check_selection_statement) trav.enter_if_else_statement += T(:check_selection_statement) trav.enter_switch_statement += T(:check_selection_statement) trav.enter_while_statement += T(:check_iteration_statement) trav.enter_do_statement += T(:check_iteration_statement) trav.enter_for_statement += T(:check_iteration_statement) trav.enter_c99_for_statement += T(:check_iteration_statement) trav.enter_return_statement += T(:check_return_statement) end private def check_initializer(node) Cc1::ExpressionExtractor.new.tap { |extr| node.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_expr_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_selection_statement(node) Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_iteration_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_return_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end class AmbiguousExpressionDetector < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt, expr) @phase_ctxt = phase_ctxt @target_expr = expr @enclusure_exprs = [expr] @ary_subs_exprs = Hash.new(0) @funcall_exprs = Hash.new(0) @memb_exprs = Hash.new(0) end def execute @target_expr.accept(self) end def visit_grouped_expression(node) @enclusure_exprs.push(node) super @enclusure_exprs.pop end def visit_array_subscript_expression(node) node.expression.accept(self) @ary_subs_exprs[current_encl_expr] += 1 AmbiguousExpressionDetector.new(@phase_ctxt, node.array_subscript).execute end def visit_function_call_expression(node) node.expression.accept(self) @funcall_exprs[current_encl_expr] += 1 node.argument_expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def visit_member_access_by_value_expression(node) super @memb_exprs[current_encl_expr] += 1 end def visit_member_access_by_pointer_expression(node) super @memb_exprs[current_encl_expr] += 1 end def visit_bit_access_by_value_expression(node) super @memb_exprs[current_encl_expr] += 1 end def visit_bit_access_by_pointer_expression(node) super @memb_exprs[current_encl_expr] += 1 end def visit_logical_and_expression(node) super if include_ambiguous_expr? W(current_encl_expr.head_location) end end def visit_logical_or_expression(node) super if include_ambiguous_expr? W(current_encl_expr.head_location) end end def visit_conditional_expression(node) cond_expr = node.condition then_expr = node.then_expression else_expr = node.else_expression AmbiguousExpressionDetector.new(@phase_ctxt, cond_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, then_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, else_expr).execute end private def include_ambiguous_expr? @ary_subs_exprs[current_encl_expr] > 0 || @funcall_exprs[current_encl_expr] > 0 || @memb_exprs[current_encl_expr] > 0 end def current_encl_expr @enclusure_exprs.last end extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :AmbiguousExpressionDetector end class W0489 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: W0489 may be duplicative when operators of the same priority are # used thrice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_initializer += T(:check_initializer) trav.enter_expression_statement += T(:check_expr_statement) trav.enter_if_statement += T(:check_selection_statement) trav.enter_if_else_statement += T(:check_selection_statement) trav.enter_switch_statement += T(:check_selection_statement) trav.enter_while_statement += T(:check_iteration_statement) trav.enter_do_statement += T(:check_iteration_statement) trav.enter_for_statement += T(:check_iteration_statement) trav.enter_c99_for_statement += T(:check_iteration_statement) trav.enter_return_statement += T(:check_return_statement) end private def check_initializer(node) Cc1::ExpressionExtractor.new.tap { |extr| node.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_expr_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_selection_statement(node) Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_iteration_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_return_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end class AmbiguousExpressionDetector < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt, expr) @phase_ctxt = phase_ctxt @target_expr = expr @encl_expr_stack = [expr] @unary_exprs = Hash.new(0) end def execute @target_expr.accept(self) end def visit_grouped_expression(node) @encl_expr_stack.push(node) super @encl_expr_stack.pop end def visit_postfix_increment_expression(node) super @unary_exprs[current_encl_expr] += 1 end def visit_postfix_decrement_expression(node) super @unary_exprs[current_encl_expr] += 1 end def visit_prefix_increment_expression(node) super @unary_exprs[current_encl_expr] += 1 end def visit_prefix_decrement_expression(node) super @unary_exprs[current_encl_expr] += 1 end def visit_address_expression(node) super @unary_exprs[current_encl_expr] += 1 end def visit_indirection_expression(node) super @unary_exprs[current_encl_expr] += 1 end def visit_unary_arithmetic_expression(node) super @unary_exprs[current_encl_expr] += 1 end def visit_sizeof_expression(node) super @unary_exprs[current_encl_expr] += 1 end def visit_alignof_expression(node) super @unary_exprs[current_encl_expr] += 1 end def visit_cast_expression(node) node.operand.accept(self) @unary_exprs[current_encl_expr] += 1 end def visit_logical_and_expression(node) super if include_ambiguous_expr? W(current_encl_expr.head_location) end end def visit_logical_or_expression(node) super if include_ambiguous_expr? W(current_encl_expr.head_location) end end def visit_conditional_expression(node) cond_expr = node.condition then_expr = node.then_expression else_expr = node.else_expression AmbiguousExpressionDetector.new(@phase_ctxt, cond_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, then_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, else_expr).execute end private def include_ambiguous_expr? @unary_exprs[current_encl_expr] > 0 end def current_encl_expr @encl_expr_stack.last end extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :AmbiguousExpressionDetector end class W0490 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: W0490 may be duplicative when problematic operators appear thrice # or more in an expression. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_initializer += T(:check_initializer) trav.enter_expression_statement += T(:check_expr_statement) trav.enter_if_statement += T(:check_selection_statement) trav.enter_if_else_statement += T(:check_selection_statement) trav.enter_switch_statement += T(:check_selection_statement) trav.enter_while_statement += T(:check_iteration_statement) trav.enter_do_statement += T(:check_iteration_statement) trav.enter_for_statement += T(:check_iteration_statement) trav.enter_c99_for_statement += T(:check_iteration_statement) trav.enter_return_statement += T(:check_return_statement) end private def check_initializer(node) Cc1::ExpressionExtractor.new.tap { |extr| node.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_expr_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_selection_statement(node) Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_iteration_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_return_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end class AmbiguousExpressionDetector < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt, expr) @phase_ctxt = phase_ctxt @target_expr = expr @encl_expr_stack = [expr] @highprec_exprs = Hash.new(0) @logical_and_exprs = Hash.new(0) end def execute @target_expr.accept(self) end def visit_grouped_expression(node) @encl_expr_stack.push(node) super @encl_expr_stack.pop end def visit_array_subscript_expression(node) node.expression.accept(self) AmbiguousExpressionDetector.new(@phase_ctxt, node.array_subscript).execute end def visit_function_call_expression(node) node.expression.accept(self) node.argument_expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def visit_multiplicative_expression(node) super @highprec_exprs[current_encl_expr] += 1 end def visit_additive_expression(node) super @highprec_exprs[current_encl_expr] += 1 end def visit_shift_expression(node) super @highprec_exprs[current_encl_expr] += 1 end def visit_relational_expression(node) super @highprec_exprs[current_encl_expr] += 1 end def visit_equality_expression(node) super @highprec_exprs[current_encl_expr] += 1 end def visit_and_expression(node) super @highprec_exprs[current_encl_expr] += 1 end def visit_exclusive_or_expression(node) super @highprec_exprs[current_encl_expr] += 1 end def visit_inclusive_or_expression(node) super @highprec_exprs[current_encl_expr] += 1 end def visit_logical_and_expression(node) super cur_encl = current_encl_expr @logical_and_exprs[cur_encl] += 1 if @highprec_exprs[cur_encl] > 0 W(cur_encl.head_location) end end def visit_logical_or_expression(node) super cur_encl = current_encl_expr if @highprec_exprs[cur_encl] + @logical_and_exprs[cur_encl] > 0 W(cur_encl.head_location) end end def visit_conditional_expression(node) cond_expr = node.condition then_expr = node.then_expression else_expr = node.else_expression AmbiguousExpressionDetector.new(@phase_ctxt, cond_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, then_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, else_expr).execute end private def current_encl_expr @encl_expr_stack.last end extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :AmbiguousExpressionDetector end class W0491 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:define_variable) interp.on_variable_declared += T(:declare_variable) interp.on_struct_declared += T(:declare_struct) interp.on_union_declared += T(:declare_union) interp.on_enum_declared += T(:declare_enum) interp.on_typedef_declared += T(:declare_typedef) interp.on_parameter_defined += T(:define_parameter) interp.on_label_defined += T(:define_label) interp.on_block_started += T(:enter_scope) interp.on_block_ended += T(:leave_scope) @dcl_names = [[]] @tag_names = [[]] @label_names = [[]] end private def define_variable(var_def, *) dcl_name = var_def.identifier pair_names = (@tag_names + @label_names).flatten.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(var_def.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @dcl_names.last.push(dcl_name) end def declare_variable(var_dcl, *) dcl_name = var_dcl.identifier pair_names = (@tag_names + @label_names).flatten.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(var_dcl.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @dcl_names.last.push(dcl_name) end def declare_struct(struct_dcl) tag_name = struct_dcl.identifier return unless tag_name pair_names = (@dcl_names + @label_names).flatten.select { |id| id.value == tag_name.value } unless pair_names.empty? W(struct_dcl.location, tag_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @tag_names.last.push(tag_name) end def declare_union(union_dcl) tag_name = union_dcl.identifier return unless tag_name pair_names = (@dcl_names + @label_names).flatten.select { |id| id.value == tag_name.value } unless pair_names.empty? W(union_dcl.location, tag_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @tag_names.last.push(tag_name) end def declare_enum(enum_dcl) tag_name = enum_dcl.identifier return unless tag_name pair_names = (@dcl_names + @label_names).flatten.select { |id| id.value == tag_name.value } unless pair_names.empty? W(enum_dcl.location, tag_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @tag_names.last.push(tag_name) end def declare_typedef(typedef_dcl) dcl_name = typedef_dcl.identifier pair_names = (@tag_names + @label_names).flatten.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(typedef_dcl.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @dcl_names.last.push(dcl_name) end def define_parameter(param_def, *) dcl_name = param_def.identifier return unless dcl_name pair_names = (@tag_names + @label_names).flatten.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(param_def.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @dcl_names.last.push(dcl_name) end def define_label(labeled_stmt) label_name = labeled_stmt.label pair_names = (@dcl_names + @tag_names).flatten.select { |id| id.value == label_name.value } unless pair_names.empty? W(labeled_stmt.location, label_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @label_names.last.push(label_name) end def enter_scope(*) @dcl_names.push([]) @tag_names.push([]) @label_names.push([]) end def leave_scope(*) @dcl_names.pop @tag_names.pop @label_names.pop end end class W0492 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:define_variable) interp.on_variable_declared += T(:declare_variable) interp.on_struct_declared += T(:declare_struct_or_union) interp.on_union_declared += T(:declare_struct_or_union) interp.on_enum_declared += T(:declare_enum) interp.on_typedef_declared += T(:declare_typedef) interp.on_parameter_defined += T(:define_parameter) interp.on_label_defined += T(:define_label) interp.on_block_started += T(:enter_scope) interp.on_block_ended += T(:leave_scope) @dcl_names = [[]] @tag_names = [[]] @label_names = [[]] @memb_names = [[]] end private def define_variable(var_def, *) dcl_name = var_def.identifier pair_names = @memb_names.flatten.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(var_def.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @dcl_names.last.push(dcl_name) end def declare_variable(var_dcl, *) dcl_name = var_dcl.identifier pair_names = @memb_names.flatten.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(var_dcl.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @dcl_names.last.push(dcl_name) end def declare_struct_or_union(struct_or_union_dcl) tag_name = struct_or_union_dcl.identifier return unless tag_name pair_names = @memb_names.flatten.select { |id| id.value == tag_name.value } unless pair_names.empty? W(struct_or_union_dcl.location, tag_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @tag_names.last.push(tag_name) declare_members(struct_or_union_dcl) end def declare_members(struct_or_union_dcl) memb_dcls = MemberExtractor.new.tap { |extr| struct_or_union_dcl.accept(extr) }.result.select { |memb| !memb.identifier.nil? } memb_dcls.each do |memb_dcl| pair_names = (@dcl_names + @tag_names + @label_names).flatten.select { |id| id.value == memb_dcl.identifier.value } unless pair_names.empty? W(memb_dcl.location, memb_dcl.identifier.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @memb_names.last.push(memb_dcl.identifier) end end def declare_enum(enum_dcl) tag_name = enum_dcl.identifier return unless tag_name pair_names = @memb_names.flatten.select { |id| id.value == tag_name.value } unless pair_names.empty? W(enum_dcl.location, tag_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @tag_names.last.push(tag_name) end def declare_typedef(typedef_dcl) dcl_name = typedef_dcl.identifier pair_names = @memb_names.flatten.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(typedef_dcl.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @dcl_names.last.push(dcl_name) end def define_parameter(param_def, *) dcl_name = param_def.identifier return unless dcl_name pair_names = @memb_names.flatten.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(param_def.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @dcl_names.last.push(dcl_name) end def define_label(labeled_stmt) label_name = labeled_stmt.label pair_names = @memb_names.flatten.select { |id| id.value == label_name.value } unless pair_names.empty? W(labeled_stmt.location, label_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @label_names.last.push(label_name) end def enter_scope(*) @dcl_names.push([]) @tag_names.push([]) @label_names.push([]) @memb_names.push([]) end def leave_scope(*) @dcl_names.pop @tag_names.pop @label_names.pop @memb_names.pop end class MemberExtractor < Cc1::SyntaxTreeVisitor def initialize @result = [] end attr_reader :result def visit_struct_type_declaration(node) if node.struct_declarations node.struct_declarations.each do |struct_dcl| struct_dcl.accept(self) end end end def visit_union_type_declaration(node) if node.struct_declarations node.struct_declarations.each do |struct_dcl| struct_dcl.accept(self) end end end def visit_struct_declaration(node) node.items.each { |item| item.accept(self) } end def visit_member_declaration(node) @result.push(node) end end private_constant :MemberExtractor end class W0493 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) end private def check(funcall_expr, fun, arg_vars, *) if arg_vars.any? { |arg| arg.type.composite? } W(funcall_expr.location) end end end class W0495 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: W0495 may be duplicative when problematic operators appear thrice # or more in an expression. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_initializer += T(:check_initializer) trav.enter_expression_statement += T(:check_expr_statement) trav.enter_if_statement += T(:check_selection_statement) trav.enter_if_else_statement += T(:check_selection_statement) trav.enter_switch_statement += T(:check_selection_statement) trav.enter_while_statement += T(:check_iteration_statement) trav.enter_do_statement += T(:check_iteration_statement) trav.enter_for_statement += T(:check_iteration_statement) trav.enter_c99_for_statement += T(:check_iteration_statement) trav.enter_return_statement += T(:check_return_statement) end private def check_initializer(node) Cc1::ExpressionExtractor.new.tap { |extr| node.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_expr_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_selection_statement(node) Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_iteration_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_return_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end class AmbiguousExpressionDetector < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt, expr) @phase_ctxt = phase_ctxt @target_expr = expr @encl_expr_stack = [expr] @add_exprs = Hash.new(0) @sub_exprs = Hash.new(0) @mul_exprs = Hash.new(0) @div_exprs = Hash.new(0) @mod_exprs = Hash.new(0) end def execute @target_expr.accept(self) end def visit_grouped_expression(node) @encl_expr_stack.push(node) super @encl_expr_stack.pop end def visit_array_subscript_expression(node) AmbiguousExpressionDetector.new(@phase_ctxt, node.array_subscript).execute end def visit_function_call_expression(node) node.argument_expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def visit_additive_expression(node) cur_encl = current_encl_expr case node.operator.type when "+" @add_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when "-" @sub_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? end super end def visit_multiplicative_expression(node) cur_encl = current_encl_expr case node.operator.type when "*" @mul_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when "/" @div_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when "%" @mod_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? end super end def visit_conditional_expression(node) cond_expr = node.condition then_expr = node.then_expression else_expr = node.else_expression AmbiguousExpressionDetector.new(@phase_ctxt, cond_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, then_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, else_expr).execute end private def include_ambiguous_expr? cur_encl = current_encl_expr return false if @mod_exprs[cur_encl] == 0 additive_exprs = @add_exprs[cur_encl] + @sub_exprs[cur_encl] multiplicative_exprs = @mul_exprs[cur_encl] + @div_exprs[cur_encl] + @mod_exprs[cur_encl] additive_exprs > 0 && multiplicative_exprs > 0 or multiplicative_exprs > 1 end def current_encl_expr @encl_expr_stack.last end extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :AmbiguousExpressionDetector end class W0496 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: W0496 may be duplicative when problematic operators appear thrice # or more in an expression. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_initializer += T(:check_initializer) trav.enter_expression_statement += T(:check_expr_statement) trav.enter_if_statement += T(:check_selection_statement) trav.enter_if_else_statement += T(:check_selection_statement) trav.enter_switch_statement += T(:check_selection_statement) trav.enter_while_statement += T(:check_iteration_statement) trav.enter_do_statement += T(:check_iteration_statement) trav.enter_for_statement += T(:check_iteration_statement) trav.enter_c99_for_statement += T(:check_iteration_statement) trav.enter_return_statement += T(:check_return_statement) end private def check_initializer(node) Cc1::ConditionalExpressionExtractor.new.tap { |extr| node.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_expr_statement(node) return unless node.expression Cc1::ConditionalExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_selection_statement(node) Cc1::ConditionalExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_iteration_statement(node) return unless node.expression Cc1::ConditionalExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_return_statement(node) return unless node.expression Cc1::ConditionalExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end class AmbiguousExpressionDetector < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt, expr) @phase_ctxt = phase_ctxt @target_expr = expr @encl_expr_stack = [expr] @cond_exprs = Hash.new(0) end def execute @target_expr.accept(self) end def visit_grouped_expression(node) @encl_expr_stack.push(node) super @encl_expr_stack.pop end def visit_conditional_expression(node) super cur_encl = current_encl_expr if @cond_exprs[cur_encl] > 0 W(cur_encl.head_location) end @cond_exprs[cur_encl] += 1 end private def current_encl_expr @encl_expr_stack.last end extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :AmbiguousExpressionDetector end class W0497 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: W0497 may be duplicative when problematic operators appear thrice # or more in an expression. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_initializer += T(:check_initializer) trav.enter_expression_statement += T(:check_expr_statement) trav.enter_if_statement += T(:check_selection_statement) trav.enter_if_else_statement += T(:check_selection_statement) trav.enter_switch_statement += T(:check_selection_statement) trav.enter_while_statement += T(:check_iteration_statement) trav.enter_do_statement += T(:check_iteration_statement) trav.enter_for_statement += T(:check_iteration_statement) trav.enter_c99_for_statement += T(:check_iteration_statement) trav.enter_return_statement += T(:check_return_statement) end private def check_initializer(node) Cc1::ExpressionExtractor.new.tap { |extr| node.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_expr_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_selection_statement(node) Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_iteration_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_return_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end class AmbiguousExpressionDetector < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt, expr) @phase_ctxt = phase_ctxt @target_expr = expr @encl_expr_stack = [expr] @shr_exprs = Hash.new(0) @shl_exprs = Hash.new(0) @lt_exprs = Hash.new(0) @gt_exprs = Hash.new(0) @le_exprs = Hash.new(0) @ge_exprs = Hash.new(0) @eq_exprs = Hash.new(0) @ne_exprs = Hash.new(0) end def execute @target_expr.accept(self) end def visit_grouped_expression(node) @encl_expr_stack.push(node) super @encl_expr_stack.pop end def visit_array_subscript_expression(node) AmbiguousExpressionDetector.new(@phase_ctxt, node.array_subscript).execute end def visit_function_call_expression(node) node.argument_expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def visit_shift_expression(node) cur_encl = current_encl_expr case node.operator.type when "<<" @shl_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when ">>" @shr_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? end super end def visit_relational_expression(node) cur_encl = current_encl_expr case node.operator.type when "<" @lt_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when ">" @gt_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when "<=" @le_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when ">=" @ge_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? end super end def visit_equality_expression(node) cur_encl = current_encl_expr case node.operator.type when "==" @eq_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when "!=" @ne_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? end super end def visit_conditional_expression(node) cond_expr = node.condition then_expr = node.then_expression else_expr = node.else_expression AmbiguousExpressionDetector.new(@phase_ctxt, cond_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, then_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, else_expr).execute end private def include_ambiguous_expr? cur_encl = current_encl_expr @shl_exprs[cur_encl] > 1 || @shr_exprs[cur_encl] > 1 || @lt_exprs[cur_encl] > 1 || @gt_exprs[cur_encl] > 1 || @le_exprs[cur_encl] > 1 || @ge_exprs[cur_encl] > 1 || @eq_exprs[cur_encl] > 1 || @ne_exprs[cur_encl] > 1 end def current_encl_expr @encl_expr_stack.last end extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :AmbiguousExpressionDetector end class W0498 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: W0498 may be duplicative when operators of the same priority are # used thrice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_initializer += T(:check_initializer) trav.enter_expression_statement += T(:check_expr_statement) trav.enter_if_statement += T(:check_selection_statement) trav.enter_if_else_statement += T(:check_selection_statement) trav.enter_switch_statement += T(:check_selection_statement) trav.enter_while_statement += T(:check_iteration_statement) trav.enter_do_statement += T(:check_iteration_statement) trav.enter_for_statement += T(:check_iteration_statement) trav.enter_c99_for_statement += T(:check_iteration_statement) trav.enter_return_statement += T(:check_return_statement) end private def check_initializer(node) Cc1::ExpressionExtractor.new.tap { |extr| node.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_expr_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_selection_statement(node) Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_iteration_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_return_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end class AmbiguousExpressionDetector < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt, expr) @phase_ctxt = phase_ctxt @target_expr = expr @encl_expr_stack = [expr] @add_exprs = Hash.new(0) @sub_exprs = Hash.new(0) @mul_exprs = Hash.new(0) @div_exprs = Hash.new(0) end def execute @target_expr.accept(self) end def visit_grouped_expression(node) @encl_expr_stack.push(node) super @encl_expr_stack.pop end def visit_array_subscript_expression(node) AmbiguousExpressionDetector.new(@phase_ctxt, node.array_subscript).execute end def visit_function_call_expression(node) node.argument_expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def visit_additive_expression(node) cur_encl = current_encl_expr case node.operator.type when "+" @add_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when "-" @sub_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? end super end def visit_multiplicative_expression(node) cur_encl = current_encl_expr case node.operator.type when "*" @mul_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when "/" @div_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? end super end def visit_conditional_expression(node) cond_expr = node.condition then_expr = node.then_expression else_expr = node.else_expression AmbiguousExpressionDetector.new(@phase_ctxt, cond_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, then_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, else_expr).execute end private def include_ambiguous_expr? cur_encl = current_encl_expr @add_exprs[cur_encl] > 0 && @sub_exprs[cur_encl] > 0 or @mul_exprs[cur_encl] > 0 && @div_exprs[cur_encl] > 0 end def current_encl_expr @encl_expr_stack.last end extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :AmbiguousExpressionDetector end class W0499 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: W0499 may be duplicative when operators of the same priority are # used thrice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_initializer += T(:check_initializer) trav.enter_expression_statement += T(:check_expr_statement) trav.enter_if_statement += T(:check_selection_statement) trav.enter_if_else_statement += T(:check_selection_statement) trav.enter_switch_statement += T(:check_selection_statement) trav.enter_while_statement += T(:check_iteration_statement) trav.enter_do_statement += T(:check_iteration_statement) trav.enter_for_statement += T(:check_iteration_statement) trav.enter_c99_for_statement += T(:check_iteration_statement) trav.enter_return_statement += T(:check_return_statement) end private def check_initializer(node) Cc1::ExpressionExtractor.new.tap { |extr| node.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_expr_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_selection_statement(node) Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_iteration_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_return_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end class AmbiguousExpressionDetector < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt, expr) @phase_ctxt = phase_ctxt @target_expr = expr @encl_expr_stack = [expr] @shr_exprs = Hash.new(0) @shl_exprs = Hash.new(0) @lt_exprs = Hash.new(0) @gt_exprs = Hash.new(0) @le_exprs = Hash.new(0) @ge_exprs = Hash.new(0) @eq_exprs = Hash.new(0) @ne_exprs = Hash.new(0) end def execute @target_expr.accept(self) end def visit_grouped_expression(node) @encl_expr_stack.push(node) super @encl_expr_stack.pop end def visit_array_subscript_expression(node) AmbiguousExpressionDetector.new(@phase_ctxt, node.array_subscript).execute end def visit_function_call_expression(node) node.argument_expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def visit_shift_expression(node) cur_encl = current_encl_expr case node.operator.type when "<<" @shl_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when ">>" @shr_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? end super end def visit_relational_expression(node) cur_encl = current_encl_expr case node.operator.type when "<" @lt_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when ">" @gt_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when "<=" @le_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when ">=" @ge_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? end super end def visit_equality_expression(node) cur_encl = current_encl_expr case node.operator.type when "==" @eq_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when "!=" @ne_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? end super end def visit_conditional_expression(node) cond_expr = node.condition then_expr = node.then_expression else_expr = node.else_expression AmbiguousExpressionDetector.new(@phase_ctxt, cond_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, then_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, else_expr).execute end private def include_ambiguous_expr? cur_encl = current_encl_expr shl_expr_num = @shl_exprs[cur_encl] shr_expr_num = @shr_exprs[cur_encl] lt_expr_num = @lt_exprs[cur_encl] gt_expr_num = @gt_exprs[cur_encl] le_expr_num = @le_exprs[cur_encl] ge_expr_num = @ge_exprs[cur_encl] eq_expr_num = @eq_exprs[cur_encl] ne_expr_num = @ne_exprs[cur_encl] shl_expr_num > 0 && shr_expr_num > 0 or lt_expr_num > 0 && (gt_expr_num + le_expr_num + ge_expr_num) > 0 or gt_expr_num > 0 && (lt_expr_num + le_expr_num + ge_expr_num) > 0 or le_expr_num > 0 && (lt_expr_num + gt_expr_num + ge_expr_num) > 0 or ge_expr_num > 0 && (lt_expr_num + gt_expr_num + le_expr_num) > 0 or eq_expr_num > 0 && ne_expr_num > 0 end def current_encl_expr @encl_expr_stack.last end extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :AmbiguousExpressionDetector end class W0500 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: W0500 may be duplicative when operators of the different priority # are used thrice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_initializer += T(:check_initializer) trav.enter_expression_statement += T(:check_expr_statement) trav.enter_if_statement += T(:check_selection_statement) trav.enter_if_else_statement += T(:check_selection_statement) trav.enter_switch_statement += T(:check_selection_statement) trav.enter_while_statement += T(:check_iteration_statement) trav.enter_do_statement += T(:check_iteration_statement) trav.enter_for_statement += T(:check_iteration_statement) trav.enter_c99_for_statement += T(:check_iteration_statement) trav.enter_return_statement += T(:check_return_statement) end private def check_initializer(node) Cc1::ExpressionExtractor.new.tap { |extr| node.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_expr_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_selection_statement(node) Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_iteration_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_return_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end class AmbiguousExpressionDetector < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt, expr) @phase_ctxt = phase_ctxt @target_expr = expr @encl_expr_stack = [expr] @add_exprs = Hash.new(0) @sub_exprs = Hash.new(0) @mul_exprs = Hash.new(0) @div_exprs = Hash.new(0) end def execute @target_expr.accept(self) end def visit_grouped_expression(node) @encl_expr_stack.push(node) super @encl_expr_stack.pop end def visit_array_subscript_expression(node) AmbiguousExpressionDetector.new(@phase_ctxt, node.array_subscript).execute end def visit_function_call_expression(node) node.argument_expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def visit_multiplicative_expression(node) cur_encl = current_encl_expr case node.operator.type when "*" @mul_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when "/" @div_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? end super end def visit_additive_expression(node) cur_encl = current_encl_expr case node.operator.type when "+" @add_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? when "-" @sub_exprs[cur_encl] += 1 W(cur_encl.head_location) if include_ambiguous_expr? end super end def visit_conditional_expression(node) cond_expr = node.condition then_expr = node.then_expression else_expr = node.else_expression AmbiguousExpressionDetector.new(@phase_ctxt, cond_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, then_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, else_expr).execute end private def include_ambiguous_expr? cur_encl = current_encl_expr (@add_exprs[cur_encl] + @sub_exprs[cur_encl]) > 0 && (@mul_exprs[cur_encl] + @div_exprs[cur_encl]) > 0 end def current_encl_expr @encl_expr_stack.last end extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :AmbiguousExpressionDetector end class W0501 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: W0501 may be duplicative when problematic operators appear thrice # or more in an expression. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_initializer += T(:check_initializer) trav.enter_expression_statement += T(:check_expr_statement) trav.enter_if_statement += T(:check_selection_statement) trav.enter_if_else_statement += T(:check_selection_statement) trav.enter_switch_statement += T(:check_selection_statement) trav.enter_while_statement += T(:check_iteration_statement) trav.enter_do_statement += T(:check_iteration_statement) trav.enter_for_statement += T(:check_iteration_statement) trav.enter_c99_for_statement += T(:check_iteration_statement) trav.enter_return_statement += T(:check_return_statement) end private def check_initializer(node) Cc1::ConditionalExpressionExtractor.new.tap { |extr| node.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_expr_statement(node) return unless node.expression Cc1::ConditionalExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_selection_statement(node) Cc1::ConditionalExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_iteration_statement(node) return unless node.expression Cc1::ConditionalExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_return_statement(node) return unless node.expression Cc1::ConditionalExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end class AmbiguousExpressionDetector < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt, expr) @phase_ctxt = phase_ctxt @target_expr = expr @group_depth = 0 @ungrouped_expr = 0 end def execute @target_expr.accept(self) end def visit_grouped_expression(node) @group_depth += 1 super @group_depth -= 1 end def visit_multiplicative_expression(node) check_binary_expression super end def visit_additive_expression(node) check_binary_expression super end def visit_shift_expression(node) check_binary_expression super end def visit_relational_expression(node) check_binary_expression super end def visit_equality_expression(node) check_binary_expression super end def visit_and_expression(node) check_binary_expression super end def visit_exclusive_or_expression(node) check_binary_expression super end def visit_inclusive_or_expression(node) check_binary_expression super end def visit_logical_and_expression(node) check_binary_expression super end def visit_logical_or_expression(node) check_binary_expression super end def visit_simple_assignment_expression(node) check_binary_expression super end def visit_compound_assignment_expression(node) check_binary_expression super end private def check_binary_expression @ungrouped_expr += 1 if @group_depth == 0 W(@target_expr.location) if include_ambiguous_expr? end def include_ambiguous_expr? @ungrouped_expr > 0 end extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :AmbiguousExpressionDetector end class W0502 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: W0502 may be duplicative when operators of the different priority # are used thrice or more. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_initializer += T(:check_initializer) trav.enter_expression_statement += T(:check_expr_statement) trav.enter_if_statement += T(:check_selection_statement) trav.enter_if_else_statement += T(:check_selection_statement) trav.enter_switch_statement += T(:check_selection_statement) trav.enter_while_statement += T(:check_iteration_statement) trav.enter_do_statement += T(:check_iteration_statement) trav.enter_for_statement += T(:check_iteration_statement) trav.enter_c99_for_statement += T(:check_iteration_statement) trav.enter_return_statement += T(:check_return_statement) end private def check_initializer(node) Cc1::ExpressionExtractor.new.tap { |extr| node.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_expr_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_selection_statement(node) Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_iteration_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def check_return_statement(node) return unless node.expression Cc1::ExpressionExtractor.new.tap { |extr| node.expression.accept(extr) }.expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end class AmbiguousExpressionDetector < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt, expr) @phase_ctxt = phase_ctxt @target_expr = expr @encl_expr_stack = [expr] @arith_exprs = Hash.new(0) @shift_exprs = Hash.new(0) @relat_exprs = Hash.new(0) @equal_exprs = Hash.new(0) @and_exprs = Hash.new(0) @xor_exprs = Hash.new(0) @or_exprs = Hash.new(0) @land_exprs = Hash.new(0) end def execute @target_expr.accept(self) end def visit_grouped_expression(node) @encl_expr_stack.push(node) super @encl_expr_stack.pop end def visit_array_subscript_expression(node) AmbiguousExpressionDetector.new(@phase_ctxt, node.array_subscript).execute end def visit_function_call_expression(node) node.argument_expressions.each do |expr| AmbiguousExpressionDetector.new(@phase_ctxt, expr).execute end end def visit_multiplicative_expression(node) super @arith_exprs[current_encl_expr] += 1 end def visit_additive_expression(node) super @arith_exprs[current_encl_expr] += 1 end def visit_shift_expression(node) super @shift_exprs[current_encl_expr] += 1 if current_arith_exprs > 0 W(current_encl_expr.head_location) end end def visit_relational_expression(node) super @relat_exprs[current_encl_expr] += 1 if current_arith_exprs + current_shift_exprs > 0 W(current_encl_expr.head_location) end end def visit_equality_expression(node) super @equal_exprs[current_encl_expr] += 1 if current_arith_exprs + current_shift_exprs + current_relat_exprs > 0 W(current_encl_expr.head_location) end end def visit_and_expression(node) super @and_exprs[current_encl_expr] += 1 if current_arith_exprs + current_shift_exprs + current_relat_exprs + current_equal_exprs > 0 W(current_encl_expr.head_location) end end def visit_exclusive_or_expression(node) super @xor_exprs[current_encl_expr] += 1 if current_arith_exprs + current_shift_exprs + current_relat_exprs + current_equal_exprs + current_and_exprs > 0 W(current_encl_expr.head_location) end end def visit_inclusive_or_expression(node) super @or_exprs[current_encl_expr] += 1 if current_arith_exprs + current_shift_exprs + current_relat_exprs + current_equal_exprs + current_and_exprs + current_xor_exprs > 0 W(current_encl_expr.head_location) end end def visit_logical_and_expression(node) super @land_exprs[current_encl_expr] += 1 if current_arith_exprs + current_shift_exprs + current_relat_exprs + current_equal_exprs + current_and_exprs + current_xor_exprs + current_or_exprs > 0 W(current_encl_expr.head_location) end end def visit_logical_or_expression(node) super if current_arith_exprs + current_shift_exprs + current_relat_exprs + current_equal_exprs + current_and_exprs + current_xor_exprs + current_or_exprs + current_land_exprs > 0 W(current_encl_expr.head_location) end end def visit_conditional_expression(node) cond_expr = node.condition then_expr = node.then_expression else_expr = node.else_expression AmbiguousExpressionDetector.new(@phase_ctxt, cond_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, then_expr).execute AmbiguousExpressionDetector.new(@phase_ctxt, else_expr).execute end private def current_arith_exprs @arith_exprs[current_encl_expr] end def current_shift_exprs @shift_exprs[current_encl_expr] end def current_relat_exprs @relat_exprs[current_encl_expr] end def current_equal_exprs @equal_exprs[current_encl_expr] end def current_and_exprs @and_exprs[current_encl_expr] end def current_xor_exprs @xor_exprs[current_encl_expr] end def current_or_exprs @or_exprs[current_encl_expr] end def current_land_exprs @land_exprs[current_encl_expr] end def current_encl_expr @encl_expr_stack.last end extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :AmbiguousExpressionDetector end class W0508 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_logical_and_expression += T(:check) trav.enter_logical_or_expression += T(:check) end private def check(node) W(node.location) if node.rhs_operand.have_side_effect? end end class W0512 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_expression_statement += T(:enter_expr_stmt) trav.leave_expression_statement += T(:leave_expr_stmt) trav.enter_postfix_increment_expression += T(:check) trav.enter_postfix_decrement_expression += T(:check) trav.enter_prefix_increment_expression += T(:check) trav.enter_prefix_decrement_expression += T(:check) @cur_stmt = nil end private def enter_expr_stmt(node) @cur_stmt = node end def leave_expr_stmt(node) @cur_stmt = nil end def check(node) if @cur_stmt unless @cur_stmt.expression == node W(node.location) end end end end class W0525 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_member_declaration += T(:check) end private def check(node) return unless node.type.scalar? && node.type.integer? if node.identifier if node.type.bitfield? && node.type.signed? && node.type.bit_size == 1 W(node.location) end end end end class W0529 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_constant_specifier += T(:check) end private def check(node) if node.constant.value =~ /\A0[0-9]+[UL]*\z/i W(node.location) end end end class W0530 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_constant_specifier += T(:check_constant) trav.enter_string_literal_specifier += T(:check_string_literal) end private def check_constant(node) if node.constant.value =~ /\AL?'.*\\0[0-9]+.*'\z/i W(node.location) end end def check_string_literal(node) if node.literal.value =~ /\AL?".*\\0[0-9]+.*"\z/i W(node.location) end end end class W0532 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_switch_statement += T(:check_switch_statement) end private def check_switch_statement(node) return unless node.statement.kind_of?(Cc1::CompoundStatement) node.statement.block_items.each_with_index do |item, idx| effective_breaks = EffectiveBreakCollector.new.execute(item) unless effective_breaks.empty? if nxt_item = node.statement.block_items[idx + 1] while nxt_item.kind_of?(Cc1::GenericLabeledStatement) nxt_item = nxt_item.statement end case nxt_item when Cc1::CaseLabeledStatement, Cc1::DefaultLabeledStatement ; else effective_breaks.each do |effective_break| W(effective_break.location) end end end end end end class EffectiveBreakCollector < Cc1::SyntaxTreeVisitor def initialize @result = [] end def execute(node) node.accept(self) @result end def visit_switch_statement(node) end def visit_while_statement(node) end def visit_do_statement(node) end def visit_for_statement(node) end def visit_c99_for_statement(node) end def visit_break_statement(node) @result.push(node) end end private_constant :EffectiveBreakCollector end class W0534 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator include Cc1::SyntaxNodeCollector # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_for_stmt_started += T(:check_for_stmt) @interp.on_c99_for_stmt_started += T(:check_c99_for_stmt) end private def check_for_stmt(node) inited_var_names = collect_object_specifiers(node.initial_statement).map { |os| os.identifier.value } if ctrl_var_name = deduct_ctrl_variable_name(node, inited_var_names) unless inited_var_names.include?(ctrl_var_name) W(node.initial_statement.location, ctrl_var_name) end end end def check_c99_for_stmt(node) inited_var_names = collect_identifier_declarators(node.declaration).map { |id| id.identifier.value } if ctrl_var_name = deduct_ctrl_variable_name(node, inited_var_names) unless inited_var_names.include?(ctrl_var_name) W(node.declaration.location, ctrl_var_name) end end end def deduct_ctrl_variable_name(node, inited_var_names) var_names = inited_var_names + node.varying_variable_names histo = var_names.each_with_object({}) { |name, hash| hash[name] = 0 } ctrlexpr, * = node.deduct_controlling_expression collect_object_specifiers(ctrlexpr).map { |obj_spec| obj_spec.identifier.value }.each { |obj_name| histo.include?(obj_name) and histo[obj_name] += 1 } histo.to_a.sort { |a, b| b.last <=> a.last }.map(&:first).find do |name| var = variable_named(name) and !var.type.const? end end def interpreter @interp end end class W0535 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_comma_separated_expression += T(:check) trav.enter_for_statement += T(:enter_for_statement) trav.leave_for_statement += T(:leave_for_statement) trav.enter_c99_for_statement += T(:enter_for_statement) trav.leave_c99_for_statement += T(:leave_for_statement) @in_for_stmt = false end private def check(node) W(node.location) if @in_for_stmt end def enter_for_statement(node) @in_for_stmt = true end def leave_for_statement(node) @in_for_stmt = false end end class W0538 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_switch_statement += T(:check) end private def check(node) return unless node.statement.kind_of?(Cc1::CompoundStatement) labeled_stmt, idx = find_default_labeled_statement(node.statement) if labeled_stmt unless final_clause?(idx, node.statement) W(labeled_stmt.location) end end end def find_default_labeled_statement(compound_stmt) compound_stmt.block_items.each_with_index do |item, idx| case item when Cc1::GenericLabeledStatement item = item.statement redo when Cc1::DefaultLabeledStatement return item, idx end end return nil, nil end def final_clause?(idx, compound_stmt) idx += 1 while item = compound_stmt.block_items[idx] case item when Cc1::GenericLabeledStatement item = item.statement redo when Cc1::CaseLabeledStatement return false else idx += 1 end end true end end class W0540 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:check) end private def check(node) if node.declarator.kind_of?(Cc1::AbbreviatedFunctionDeclarator) W(node.declarator.location) end end end class W0542 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_function_declaration += T(:check) end private def check(node) node.init_declarator.accept(Visitor.new(@phase_ctxt, node)) end class Visitor < Cc1::SyntaxTreeVisitor include Cc1::SyntaxNodeCollector include ReportUtil def initialize(phase_ctxt, fun_dcl) @phase_ctxt = phase_ctxt @function_dcl = fun_dcl end def visit_parameter_type_list(node) return unless node.parameters param_has_name = node.parameters.map { |param_dcl| if param_dcl.declarator collect_identifier_declarators(param_dcl.declarator).count > 0 else false end } unless param_has_name.all? || param_has_name.none? W(@function_dcl.location) end end private extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :Visitor end class W0543 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator include Cc1::SyntaxNodeCollector # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:check) @interp = phase_ctxt[:cc1_interpreter] end private def check(node) fun = function_named(node.identifier.value) return unless fun params = fun.declarations_and_definitions.map { |dcl_or_def| case dcl_or_def when Cc1::FunctionDeclaration extract_param_names(dcl_or_def.init_declarator) when Cc1::FunctionDefinition extract_param_names(dcl_or_def.declarator) end } if params.size > 1 params.first.zip(*params.drop(1)) do |names| unless names.tap { |ary| ary.delete("") }.uniq.size == 1 W(node.location) break end end end end def extract_param_names(node) collect_identifier_declarators(node).map { |dcr| dcr.identifier.value } end def interpreter @interp end end class W0544 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_initialized += T(:check_initialization) interp.on_assignment_expr_evaled += T(:check_assignment) end private def check_initialization(var_def, var, init_var) lhs_type = var.type.unqualify rhs_type = init_var.type.unqualify if lhs_type.pointer? && lhs_type.base_type.function? && rhs_type.pointer? && rhs_type.base_type.function? check(var_def, lhs_type.base_type, rhs_type.base_type) end end def check_assignment(expr, lhs_var, rhs_var) lhs_type = lhs_var.type.unqualify rhs_type = rhs_var.type.unqualify if lhs_type.pointer? && lhs_type.base_type.function? && rhs_type.pointer? && rhs_type.base_type.function? check(expr, lhs_type.base_type, rhs_type.base_type) end end def check(node, lhs_fun_type, rhs_fun_type) param_types = lhs_fun_type.parameter_types.zip(rhs_fun_type.parameter_types) if param_types.any? { |l, r| l && r && l.param_name != r.param_name } W(node.location) end end end class W0546 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_switch_statement += T(:check) end private def check(node) if node.statement.kind_of?(Cc1::CompoundStatement) body = node.statement else return end body.block_items.each { |item| item.accept(Visitor.new(@phase_ctxt)) } end class Visitor < Cc1::SyntaxTreeVisitor include ReportUtil def initialize(phase_ctxt) @phase_ctxt = phase_ctxt @block_level = 0 end def visit_case_labeled_statement(node) super W(node.location) if @block_level > 0 end def visit_default_labeled_statement(node) super W(node.location) if @block_level > 0 end def visit_compound_statement(node) @block_level += 1 super @block_level -= 1 end def visit_if_statement(node) @block_level += 1 node.statement.accept(self) @block_level -= 1 end def visit_if_else_statement(node) @block_level += 1 node.then_statement.accept(self) node.else_statement.accept(self) @block_level -= 1 end def visit_switch_statement(node) end def visit_while_statement(node) @block_level += 1 node.statement.accept(self) @block_level -= 1 end def visit_do_statement(node) @block_level += 1 node.statement.accept(self) @block_level -= 1 end def visit_for_statement(node) @block_level += 1 node.body_statement.accept(self) @block_level -= 1 end def visit_c99_for_statement(node) @block_level += 1 node.body_statement.accept(self) @block_level -= 1 end private extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :Visitor end class W0551 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_union_type_declaration += T(:check) end private def check(node) W(node.location) end end class W0552 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:check) end private def check(var_def, var) W(var_def.location) if var.type.union? end end class W0553 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_conv_performed += T(:check) end private def check(expr, orig_var, rslt_var) lhs_type = orig_var.type.unqualify rhs_type = rslt_var.type.unqualify return unless lhs_type.pointer? && lhs_type.base_type.function? return unless rhs_type.pointer? && rhs_type.base_type.function? unless lhs_type.base_type.same_as?(rhs_type.base_type) W(expr.location) end end end class W0556 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:enter_function) interp.on_function_ended += T(:leave_function) interp.on_function_call_expr_evaled += T(:check) @functions = [] end private def enter_function(*, fun) @functions.push(fun) end def leave_function(*) @functions.pop end def check(funcall_expr, fun, *) if cur_fun = @functions.last and fun == cur_fun W(funcall_expr.location) end end end class W0559 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_unary_arithmetic_expression += T(:check) end private def check(node) if node.operator.type == "!" if Visitor.new.tap { |v| node.operand.accept(v) }.bitwise_expr_num > 0 W(node.location) end end end class Visitor < Cc1::SyntaxTreeVisitor def initialize @bitwise_expr_num = 0 end attr_reader :bitwise_expr_num def visit_unary_arithmetic_expression(node) super unless node.operator.type == "!" end def visit_and_expression(node) super @bitwise_expr_num += 1 end def visit_inclusive_or_expression(node) super @bitwise_expr_num += 1 end end private_constant :Visitor end class W0560 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_unary_arithmetic_expression += T(:check) end private def check(node) if node.operator.type == "~" if Visitor.new.tap { |v| node.operand.accept(v) }.logical_expr_num > 0 W(node.location) end end end class Visitor < Cc1::SyntaxTreeVisitor def initialize @logical_expr_num = 0 end attr_reader :logical_expr_num def visit_unary_arithmetic_expression(node) super unless node.operator.type == "~" end def visit_relational_expression(node) super @logical_expr_num += 1 end def visit_equality_expression(node) super @logical_expr_num += 1 end def visit_logical_and_expression(node) super @logical_expr_num += 1 end def visit_logical_or_expression(node) super @logical_expr_num += 1 end end private_constant :Visitor end class W0561 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_expression_statement += T(:check) end private def check(node) case expr = node.expression when Cc1::IndirectionExpression case expr.operand when Cc1::PostfixIncrementExpression W(node.location) end end end end class W0562 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_variable_definition += T(:check) end private def check(node) if init = node.initializer if initializer_depth(init) > type_depth(node.type) W(init.location) end end end def initializer_depth(init) if inits = init.initializers 1 + inits.map { |i| initializer_depth(i) }.max else 0 end end def type_depth(type) case when type.array? 1 + type_depth(type.base_type) when type.composite? type.members.empty? ? 1 : 1 + type.members.map { |memb| type_depth(memb.type) }.max else 0 end end end class W0563 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_compound_statement += T(:enter_block) trav.leave_compound_statement += T(:leave_block) trav.enter_generic_labeled_statement += T(:check) @blocks = [] end private def check(node) return if node.referrers.empty? if @blocks.size > 1 cur_block = @blocks.last anterior_goto = node.referrers.find { |goto| goto.location.line_no < cur_block.head_location.line_no } return unless anterior_goto # FIXME: Must consider that the declaration may appear at anywhere in # ISO C99. cur_block_items = cur_block.block_items if cur_block_items.any? { |item| item.kind_of?(Cc1::Declaration) } W(node.location, node.label.value) end end end def enter_block(node) @blocks.push(node) end def leave_block(node) @blocks.pop end end class W0564 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_compound_statement += T(:enter_block) trav.leave_compound_statement += T(:leave_block) trav.enter_generic_labeled_statement += T(:check) @blocks = [] end private def check(node) return if node.referrers.empty? if @blocks.size > 1 cur_block = @blocks.last posterior_goto = node.referrers.find { |goto| goto.location.line_no > cur_block.tail_location.line_no } return unless posterior_goto # FIXME: Must consider that the declaration may appear at anywhere in # ISO C99. cur_block_items = cur_block.block_items if cur_block_items.any? { |item| item.kind_of?(Cc1::Declaration) } W(posterior_goto.location, node.label.value) end end end def enter_block(node) @blocks.push(node) end def leave_block(node) @blocks.pop end end class W0565 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_conv_performed += T(:check) end private def check(expr, orig_var, rslt_var) lhs_type = orig_var.type.unqualify rhs_type = rslt_var.type.unqualify if lhs_type.integer? && !lhs_type.pointer? && rhs_type.pointer? && rhs_type.base_type.volatile? W(expr.location) return end if rhs_type.integer? && !rhs_type.pointer? && lhs_type.pointer? && lhs_type.base_type.volatile? W(expr.location) return end end end class W0566 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_conv_performed += T(:check) end private def check(expr, orig_var, rslt_var) lhs_type = orig_var.type.unqualify rhs_type = rslt_var.type.unqualify case when lhs_type.integer? && !lhs_type.pointer? && rhs_type.pointer? && rhs_type.base_type.function? W(expr.location) when rhs_type.integer? && !rhs_type.pointer? && lhs_type.pointer? && lhs_type.base_type.function? W(expr.location) end end end class W0567 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_conv_performed += T(:check) end private def check(expr, orig_var, rslt_var) lhs_type = orig_var.type.unqualify rhs_type = rslt_var.type.unqualify if lhs_type.integer? && !lhs_type.pointer? && rhs_type.pointer? && !rhs_type.base_type.volatile? W(expr.location) return end if rhs_type.integer? && !rhs_type.pointer? && lhs_type.pointer? && !lhs_type.base_type.volatile? W(expr.location) return end end end class W0568 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_shift_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, *) op = expr.operator.type return unless op == "<<" || op == "<<=" return unless constant_expression?(expr.lhs_operand) if lhs_var.type.signed? test = lhs_var.value.test_must_be_less_than(scalar_value_of(0)) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) return end if lhs_var.value.test_must_be_greater_than(scalar_value_of(0)).true? lhs_limit = scalar_value_of(lhs_var.type.max) >> rhs_var.value test = lhs_var.value.test_must_be_greater_than(lhs_limit) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end end def interpreter @interp end end class W0569 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_shift_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, *) op = expr.operator.type return unless op == "<<" || op == "<<=" return if constant_expression?(expr.lhs_operand) if lhs_var.type.signed? test = lhs_var.value.test_must_be_less_than(scalar_value_of(0)) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) return end if lhs_var.value.test_must_be_greater_than(scalar_value_of(0)).true? lhs_limit = scalar_value_of(lhs_var.type.max) >> rhs_var.value test = lhs_var.value.test_must_be_greater_than(lhs_limit) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end end def interpreter @interp end end class W0570 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_shift_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, *) op = expr.operator.type return unless op == "<<" || op == "<<=" return if constant_expression?(expr.lhs_operand) if lhs_var.type.signed? if lhs_var.value.test_must_be_less_than(scalar_value_of(0)).false? test = lhs_var.value.test_may_be_less_than(scalar_value_of(0)) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) return end end lhs_limit = scalar_value_of(lhs_var.type.max) >> rhs_var.value if lhs_var.value.test_must_be_greater_than(lhs_limit).false? test = lhs_var.value.test_may_be_greater_than(lhs_limit) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end end def interpreter @interp end end class W0571 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_shift_expr_evaled += T(:check) end private def check(expr, lhs_var, *) op = expr.operator.type if op == ">>" || op == ">>=" W(expr.location) if lhs_var.type.signed? end end end class W0572 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_shift_expr_evaled += T(:check_shift) interp.on_and_expr_evaled += T(:check_binary) interp.on_inclusive_or_expr_evaled += T(:check_binary) interp.on_exclusive_or_expr_evaled += T(:check_binary) interp.on_unary_arithmetic_expr_evaled += T(:check_unary) end private def check_shift(expr, lhs_var, *) if lhs_var.type.scalar? && lhs_var.type.signed? W(expr.location) end end def check_binary(expr, lhs_var, rhs_var, *) if lhs_var.type.scalar? && lhs_var.type.signed? W(expr.location) return end if rhs_var.type.scalar? && rhs_var.type.signed? W(expr.location) return end end def check_unary(expr, var, *) return unless expr.operator.type == "~" if var.type.scalar? && var.type.signed? W(expr.location) end end end class W0573 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*scanf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) return unless fmt fmt.conversion_specifiers.each do |conv_spec| if conv_spec.scanset && conv_spec.scanset.include?("-") W(fmt.location) break end end end end def format_str_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end def create_format(funcall_expr, fmt_str_idx, arg_vars, env) if fmt_str_idx fmt_str = funcall_expr.argument_expressions[fmt_str_idx] if fmt_str && fmt_str.literal.value =~ /\AL?"(.*)"\z/i trailing_args = arg_vars.drop(fmt_str_idx + 1) || [] return Cc1::ScanfFormat.new($1, fmt_str.location, trailing_args, env) end end nil end end class W0578 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_implicit_conv_performed += T(:check) interp.on_function_started += T(:clear_rvalues) interp.on_unary_arithmetic_expr_evaled += T(:handle_unary) interp.on_shift_expr_evaled += T(:handle_shift) interp.on_additive_expr_evaled += T(:handle_additive) interp.on_multiplicative_expr_evaled += T(:handle_multiplicative) @rvalues = nil end private def check(init_or_expr, src_var, dst_var) return unless @rvalues src_type = src_var.type dst_type = dst_var.type return unless src_type.integer? if src_type.integer_conversion_rank < dst_type.integer_conversion_rank case @rvalues[src_var] when Cc1::UnaryArithmeticExpression, Cc1::ShiftExpression, Cc1::AdditiveExpression, Cc1::MultiplicativeExpression W(init_or_expr.location, src_type.brief_image, dst_type.brief_image) end end end def clear_rvalues(*) @rvalues = {} end def handle_unary(expr, *, rslt_var) if expr.operator == "~" memorize_rvalue_derivation(rslt_var, expr) end end def handle_shift(expr, *, rslt_var) if expr.operator.type == "<<" memorize_rvalue_derivation(rslt_var, expr) end end def handle_additive(expr, *, rslt_var) memorize_rvalue_derivation(rslt_var, expr) end def handle_multiplicative(expr, *, rslt_var) unless expr.operator.type == "%" memorize_rvalue_derivation(rslt_var, expr) end end def memorize_rvalue_derivation(rvalue_holder, expr) @rvalues[rvalue_holder] = expr if @rvalues end end class W0579 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_conv_performed += T(:check) interp.on_function_started += T(:clear_rvalues) interp.on_unary_arithmetic_expr_evaled += T(:handle_unary) interp.on_shift_expr_evaled += T(:handle_shift) interp.on_additive_expr_evaled += T(:handle_additive) interp.on_multiplicative_expr_evaled += T(:handle_multiplicative) @rvalues = nil end private def check(cast_expr, src_var, dst_var) return unless @rvalues src_type = src_var.type dst_type = dst_var.type return unless src_type.integer? if src_type.integer_conversion_rank < dst_type.integer_conversion_rank case @rvalues[src_var] when Cc1::UnaryArithmeticExpression, Cc1::ShiftExpression, Cc1::AdditiveExpression, Cc1::MultiplicativeExpression W(cast_expr.location, src_type.brief_image, dst_type.brief_image) end end end def clear_rvalues(*) @rvalues = {} end def handle_unary(expr, *, rslt_var) if expr.operator == "~" memorize_rvalue_derivation(rslt_var, expr) end end def handle_shift(expr, *, rslt_var) if expr.operator.type == "<<" memorize_rvalue_derivation(rslt_var, expr) end end def handle_additive(expr, *, rslt_var) memorize_rvalue_derivation(rslt_var, expr) end def handle_multiplicative(expr, *, rslt_var) unless expr.operator.type == "%" memorize_rvalue_derivation(rslt_var, expr) end end def memorize_rvalue_derivation(rvalue_holder, expr) @rvalues[rvalue_holder] = expr if @rvalues end end class W0580 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_started += T(:start_function) @interp.on_function_ended += T(:end_function) @interp.on_parameter_defined += T(:add_parameter) @interp.on_indirection_expr_evaled += T(:relate_pointer) @interp.on_assignment_expr_evaled += T(:check) @params = nil @ptr_relat = nil end private def start_function(*) @params = Set.new @ptr_relat = {} end def end_function(*) @params = nil @ptr_relat = nil end def add_parameter(*, var) if @params && var.named? @params.add(var.name) end end def relate_pointer(*, var, derefed_var) if @ptr_relat @ptr_relat[derefed_var] = var end end def check(assign_expr, lhs_var, rhs_var) return unless @params && @ptr_relat return unless lhs_var.type.pointer? && rhs_var.type.pointer? if rhs_pointee = pointee_of(rhs_var) and rhs_pointee.variable? && rhs_pointee.named? && rhs_pointee.scope.local? && rhs_pointee.binding.memory.static? if lhs_var.scope.global? W(assign_expr.location) else if ptr = @ptr_relat[lhs_var] if ptr.named? && @params.include?(ptr.name) W(assign_expr.location) end end end end end def interpreter @interp end end class W0581 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @funcalls = Hash.new { |hash, key| hash[key] = [] } end private def check(funcall_expr, fun, arg_vars, *) return unless fun.named? return if prototype_declaration_of(fun) arg_types = arg_vars.map { |var| var.type.unqualify } @funcalls[fun.name].each do |prv_arg_types| if prv_arg_types.size == arg_types.size conformed = prv_arg_types.zip(arg_types).all? { |prv, lst| case when prv.array? && lst.array?, prv.array? && lst.pointer?, prv.pointer? && lst.array? prv.base_type == lst.base_type else prv == lst end } else conformed = false end unless conformed W(funcall_expr.location) break end end @funcalls[fun.name].push(arg_types) end def prototype_declaration_of(fun) fun.declarations_and_definitions.find do |dcl_or_def| dcl_or_def.kind_of?(Cc1::FunctionDeclaration) end end end class W0582 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator include Cc1::Conversion # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_call_expr_evaled += T(:call_function) @interp.on_explicit_function_declared += T(:check) @funcalls = Hash.new { |hash, key| hash[key] = [] } end private def check(*, fun) return unless fun.named? return if fun.type.have_va_list? param_types = fun.type.parameter_types.reject { |type| type.void? } @funcalls[fun.name].each do |funcall_expr, args| if args.size == param_types.size types = args.map { |ary| ary.first }.zip(param_types) conformed = types.each_with_index.all? { |(atype, ptype), idx| arg_expr = funcall_expr.argument_expressions[idx] constant_expression?(arg_expr) && untyped_pointer_conversion?(atype, ptype, args[idx].last) or atype.convertible?(ptype) } else conformed = false end W(funcall_expr.location) unless conformed end end def call_function(funcall_expr, fun, arg_vars, *) if fun.named? args = arg_vars.map { |var| [var.type, var.value.to_single_value] } @funcalls[fun.name].push([funcall_expr, args]) end end def interpreter @interp end end class W0583 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator include Cc1::Conversion # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_call_expr_evaled += T(:call_function) @interp.on_explicit_function_defined += T(:check) @funcalls = Hash.new { |hash, key| hash[key] = [] } end private def check(*, fun) return unless fun.named? return if fun.type.have_va_list? param_types = fun.type.parameter_types.reject { |type| type.void? } @funcalls[fun.name].each do |funcall_expr, args| if args.size == param_types.size types = args.map { |ary| ary.first }.zip(param_types) conformed = types.each_with_index.all? { |(atype, ptype), idx| arg_expr = funcall_expr.argument_expressions[idx] constant_expression?(arg_expr) && untyped_pointer_conversion?(atype, ptype, args[idx].last) or atype.convertible?(ptype) } else conformed = false end W(funcall_expr.location) unless conformed end end def call_function(funcall_expr, fun, arg_vars, *) if fun.named? args = arg_vars.map { |var| [var.type, var.value.to_single_value] } @funcalls[fun.name].push([funcall_expr, args]) end end def interpreter @interp end end class W0584 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator include Cc1::Conversion # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_call_expr_evaled += T(:check) end private def check(funcall_expr, fun, arg_vars, *) return unless fun.named? return unless kandr_style_definition_of(fun) return if fun.type.have_va_list? args = arg_vars.map { |var| [var.type, var.value.to_single_value] } param_types = fun.type.parameter_types.reject { |type| type.void? } return unless args.size == param_types.size args.zip(param_types).each_with_index do |(arg, ptype), idx| arg_expr = funcall_expr.argument_expressions[idx] if constant_expression?(arg_expr) next if untyped_pointer_conversion?(arg.first, ptype, arg.last) end unless arg.first.convertible?(ptype) W(arg_expr.location, idx + 1) end end end def kandr_style_definition_of(fun) fun.declarations_and_definitions.find do |dcl_or_def| dcl_or_def.kind_of?(Cc1::KandRFunctionDefinition) end end def interpreter @interp end end class W0585 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator include Cc1::SyntaxNodeCollector # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_for_stmt_started += T(:check_for_stmt) @interp.on_c99_for_stmt_started += T(:check_c99_for_stmt) end private def check_for_stmt(node) inited_var_names = collect_object_specifiers(node.initial_statement).map { |os| os.identifier.value } if ctrl_var_name = deduct_ctrl_variable_name(node, inited_var_names) if node.expression varying_var_names = collect_varying_variable_names(node.expression) unless varying_var_names.include?(ctrl_var_name) W(node.expression.location, ctrl_var_name) end end end end def check_c99_for_stmt(node) inited_var_names = collect_identifier_declarators(node.declaration).map { |id| id.identifier.value } if ctrl_var_name = deduct_ctrl_variable_name(node, inited_var_names) if node.expression varying_var_names = collect_varying_variable_names(node.expression) unless varying_var_names.include?(ctrl_var_name) W(node.expression.location, ctrl_var_name) end end end end def deduct_ctrl_variable_name(node, inited_var_names) var_names = inited_var_names + node.varying_variable_names histo = var_names.each_with_object({}) { |name, hash| hash[name] = 0 } ctrlexpr, * = node.deduct_controlling_expression collect_object_specifiers(ctrlexpr).map { |obj_spec| obj_spec.identifier.value }.each { |obj_name| histo.include?(obj_name) and histo[obj_name] += 1 } histo.to_a.sort { |a, b| b.last <=> a.last }.map(&:first).find do |name| var = variable_named(name) and !var.type.const? end end def collect_varying_variable_names(node) varying_var_names = [] collect_simple_assignment_expressions(node).each do |expr| if expr.lhs_operand.kind_of?(Cc1::ObjectSpecifier) varying_var_names.push(expr.lhs_operand.identifier.value) end end collect_compound_assignment_expressions(node).each do |expr| if expr.lhs_operand.kind_of?(Cc1::ObjectSpecifier) varying_var_names.push(expr.lhs_operand.identifier.value) end end collect_prefix_increment_expressions(node).each do |expr| if expr.operand.kind_of?(Cc1::ObjectSpecifier) varying_var_names.push(expr.operand.identifier.value) end end collect_prefix_decrement_expressions(node).each do |expr| if expr.operand.kind_of?(Cc1::ObjectSpecifier) varying_var_names.push(expr.operand.identifier.value) end end collect_postfix_increment_expressions(node).each do |expr| if expr.operand.kind_of?(Cc1::ObjectSpecifier) varying_var_names.push(expr.operand.identifier.value) end end collect_postfix_decrement_expressions(node).each do |expr| if expr.operand.kind_of?(Cc1::ObjectSpecifier) varying_var_names.push(expr.operand.identifier.value) end end varying_var_names.uniq end def interpreter @interp end end class W0597 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_sequence_point_reached += T(:commit_changes) interp.on_variable_value_updated += T(:update_variable) @update_cnt = Hash.new(0) end private def commit_changes(seqp) @update_cnt.each { |var, cnt| W(seqp.location, var.name) if cnt > 1 } @update_cnt = Hash.new(0) end def update_variable(*, var) @update_cnt[var] += 1 if var.named? end end class W0598 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_sequence_point_reached += T(:commit_changes) interp.on_variable_value_updated += T(:update_variable) @update_cnt = [Hash.new(0)] end private def commit_changes(seqp) if seqp.obvious? updated_vars = @update_cnt.map { |hash| hash.keys }.flatten.uniq updated_vars.each do |var| if @update_cnt.count { |hash| hash.include?(var) } > 1 if @update_cnt.map { |hash| hash[var] }.max == 1 W(seqp.location, var.name) end end end @update_cnt = [Hash.new(0)] else @update_cnt.push(Hash.new(0)) end end def update_variable(*, var) @update_cnt.last[var] += 1 if var.named? end end class W0599 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_sequence_point_reached += T(:commit_changes) interp.on_variable_value_referred += T(:refer_variable) interp.on_variable_value_updated += T(:update_variable) @refer_cnt = Hash.new(0) @update_cnt = Hash.new(0) end private def commit_changes(seqp) (@refer_cnt.keys & @update_cnt.keys).each do |var| if @refer_cnt[var] > 0 && @update_cnt[var] > 0 W(seqp.location, var.name) end end @refer_cnt = Hash.new(0) @update_cnt = Hash.new(0) end def refer_variable(*, var) @refer_cnt[var] += 1 if var.named? end def update_variable(expr, var) if var.named? case expr when Cc1::SimpleAssignmentExpression, Cc1::CompoundAssignmentExpression # NOTE: The expression-statement `i = i + j;' should not be warned. # But the expression-statement `i = i++ + j;' should be warned. # So, side-effects of the assignment-expression are given # special treatment. else @update_cnt[var] += 1 end end end end class W0600 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_sequence_point_reached += T(:commit_changes) interp.on_variable_value_referred += T(:refer_variable) interp.on_variable_value_updated += T(:update_variable) @refer_cnt = [Hash.new(0)] @update_cnt = [Hash.new(0)] end private def commit_changes(seqp) if seqp.obvious? updated_vars = @update_cnt.map { |hash| hash.keys }.flatten.uniq access_count = @refer_cnt.zip(@update_cnt) updated_vars.each do |var| count = access_count.count { |rhash, uhash| rhash.include?(var) && !uhash.include?(var) } W(seqp.location, var.name) if count > 0 end @refer_cnt = [Hash.new(0)] @update_cnt = [Hash.new(0)] else @refer_cnt.push(Hash.new(0)) @update_cnt.push(Hash.new(0)) end end def refer_variable(*, var) @refer_cnt.last[var] += 1 if var.named? end def update_variable(expr, var) if var.named? case expr when Cc1::SimpleAssignmentExpression, Cc1::CompoundAssignmentExpression # NOTE: The expression-statement `i = i + j;' should not be warned. # But the expression-statement `i = i++ + j;' should be warned. # So, side-effects of the assignment-expression are given # special treatment. else @update_cnt.last[var] += 1 end end end end class W0605 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_break_statement += T(:check) trav.enter_switch_statement += T(:enter_breakable_statement) trav.leave_switch_statement += T(:leave_breakable_statement) trav.enter_while_statement += T(:enter_breakable_statement) trav.leave_while_statement += T(:leave_breakable_statement) trav.enter_do_statement += T(:enter_breakable_statement) trav.leave_do_statement += T(:leave_breakable_statement) trav.enter_for_statement += T(:enter_breakable_statement) trav.leave_for_statement += T(:leave_breakable_statement) trav.enter_c99_for_statement += T(:enter_breakable_statement) trav.leave_c99_for_statement += T(:leave_breakable_statement) @breakable_stmts = [] end private def check(break_stmt) @breakable_stmts.last[1] += 1 if @breakable_stmts.last[1] > 1 && @breakable_stmts.last[0].kind_of?(Cc1::IterationStatement) W(break_stmt.location) end end def enter_breakable_statement(stmt) @breakable_stmts.push([stmt, 0]) end def leave_breakable_statement(*) @breakable_stmts.pop end end class W0606 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_union_type_declaration += T(:check) end private def check(node) node.struct_declarations.each do |struct_dcl| struct_dcl.items.each do |memb_dcl| if memb_dcl.type.scalar? && memb_dcl.type.floating? W(node.location) return end end end end end class W0607 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_explicit_conv_performed += T(:check) end private def check(expr, orig_var, rslt_var) orig_type = orig_var.type rslt_type = rslt_var.type unless orig_type.scalar? && orig_type.integer? && rslt_type.scalar? && rslt_type.integer? && rslt_type.unsigned? return end if orig_var.value.scalar? test = orig_var.value.test_must_be_less_than(scalar_value_of(0)) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end def interpreter @interp end end class W0608 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_explicit_conv_performed += T(:check) end private def check(expr, orig_var, rslt_var) orig_type = orig_var.type rslt_type = rslt_var.type unless orig_type.scalar? && orig_type.integer? && rslt_type.scalar? && rslt_type.integer? && rslt_type.unsigned? return end if orig_var.value.scalar? && orig_var.value.test_must_be_less_than(scalar_value_of(0)).false? test = orig_var.value.test_may_be_less_than(scalar_value_of(0)) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end def interpreter @interp end end class W0609 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::SyntaxNodeCollector # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_relational_expr_evaled += T(:check) interp.on_equality_expr_evaled += T(:check) interp.on_logical_and_expr_evaled += T(:check) interp.on_logical_or_expr_evaled += T(:check) interp.on_for_stmt_started += T(:enter_for_statement) interp.on_c99_for_stmt_started += T(:enter_for_statement) interp.on_for_stmt_ended += T(:leave_for_statement) interp.on_c99_for_stmt_ended += T(:leave_for_statement) interp.on_for_ctrlexpr_evaled += T(:memorize_for_ctrlexpr) interp.on_c99_for_ctrlexpr_evaled += T(:memorize_for_ctrlexpr) @for_ctrlexpr_stack = [] end private def check(expr, *, rslt_var) if rslt_var.value.test_must_be_true.true? && !should_not_check?(expr) W(expr.location) end end def enter_for_statement(*) @for_ctrlexpr_stack.push(nil) end def leave_for_statement(*) @for_ctrlexpr_stack.pop end def memorize_for_ctrlexpr(for_stmt, *) if explicit_ctrlexpr = for_stmt.condition_statement.expression @for_ctrlexpr_stack[-1] = explicit_ctrlexpr end end def should_not_check?(expr) if ctrlexpr = @for_ctrlexpr_stack.last collect_relational_expressions(ctrlexpr).include?(expr) || collect_equality_expressions(ctrlexpr).include?(expr) || collect_logical_and_expressions(ctrlexpr).include?(expr) || collect_logical_or_expressions(ctrlexpr).include?(expr) else false end end end class W0610 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::SyntaxNodeCollector # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_relational_expr_evaled += T(:check) interp.on_equality_expr_evaled += T(:check) interp.on_logical_and_expr_evaled += T(:check) interp.on_logical_or_expr_evaled += T(:check) interp.on_for_stmt_started += T(:enter_for_statement) interp.on_c99_for_stmt_started += T(:enter_for_statement) interp.on_for_stmt_ended += T(:leave_for_statement) interp.on_c99_for_stmt_ended += T(:leave_for_statement) interp.on_for_ctrlexpr_evaled += T(:memorize_for_ctrlexpr) interp.on_c99_for_ctrlexpr_evaled += T(:memorize_for_ctrlexpr) @for_ctrlexpr_stack = [] end private def check(expr, *, rslt_var) if rslt_var.value.test_must_be_false.true? && !should_not_check?(expr) W(expr.location) end end def enter_for_statement(*) @for_ctrlexpr_stack.push(nil) end def leave_for_statement(*) @for_ctrlexpr_stack.pop end def memorize_for_ctrlexpr(for_stmt, *) if explicit_ctrlexpr = for_stmt.condition_statement.expression @for_ctrlexpr_stack[-1] = explicit_ctrlexpr end end def should_not_check?(expr) if ctrlexpr = @for_ctrlexpr_stack.last collect_relational_expressions(ctrlexpr).include?(expr) || collect_equality_expressions(ctrlexpr).include?(expr) || collect_logical_and_expressions(ctrlexpr).include?(expr) || collect_logical_or_expressions(ctrlexpr).include?(expr) else false end end end class W0611 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator include Cc1::SyntaxNodeCollector # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_while_stmt_started += T(:enter_while_stmt) @interp.on_do_stmt_started += T(:enter_do_stmt) @interp.on_for_stmt_started += T(:enter_for_stmt) @interp.on_c99_for_stmt_started += T(:enter_c99_for_stmt) @interp.on_while_ctrlexpr_evaled += T(:memorize_ctrlexpr_val) @interp.on_do_ctrlexpr_evaled += T(:memorize_ctrlexpr_val) @interp.on_for_ctrlexpr_evaled += T(:memorize_ctrlexpr_val) @interp.on_c99_for_ctrlexpr_evaled += T(:memorize_ctrlexpr_val) @interp.on_variable_value_updated += T(:update_ctrl_var) @interp.on_while_stmt_ended += T(:check) @interp.on_do_stmt_ended += T(:check) @interp.on_for_stmt_ended += T(:check) @interp.on_c99_for_stmt_ended += T(:check) @iter_stmts = [] end private def enter_while_stmt(node) enter_iteration_stmt(node.expression) end def enter_do_stmt(node) enter_iteration_stmt(node.expression) end def enter_for_stmt(node) enter_iteration_stmt(node.condition_statement.expression) end def enter_c99_for_stmt(node) enter_iteration_stmt(node.condition_statement.expression) end IterationStmt = Struct.new(:ctrlexpr, :ctrlexpr_val, :ctrl_vars) private_constant :IterationStmt def enter_iteration_stmt(ctrlexpr) if ctrlexpr @iter_stmts.push(IterationStmt.new(ctrlexpr, nil, deduct_ctrl_vars(ctrlexpr))) else @iter_stmts.push(IterationStmt.new(nil, nil, nil)) end end def deduct_ctrl_vars(ctrlexpr) collect_object_specifiers(ctrlexpr).each_with_object({}) do |os, hash| if ctrl_var = variable_named(os.identifier.value) hash[os.identifier.value] = false unless ctrl_var.type.const? end end end def memorize_ctrlexpr_val(*, ctrlexpr_val) @iter_stmts.last.ctrlexpr_val = ctrlexpr_val end def update_ctrl_var(expr, var) if var.named? @iter_stmts.reverse_each do |iter_stmt| if iter_stmt.ctrlexpr && iter_stmt.ctrl_vars.include?(var.name) iter_stmt.ctrl_vars[var.name] = true end end end end def check(*) if ctrlexpr = @iter_stmts.last.ctrlexpr unless constant_expression?(ctrlexpr) ctrlexpr_val = @iter_stmts.last.ctrlexpr_val ctrl_vars = @iter_stmts.last.ctrl_vars if ctrlexpr_val && ctrlexpr_val.test_must_be_true.true? and ctrl_vars && ctrl_vars.values.none? W(ctrlexpr.location) end end end @iter_stmts.pop end def interpreter @interp end end class W0612 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_if_ctrlexpr_evaled += T(:check) @interp.on_if_else_ctrlexpr_evaled += T(:check) end private def check(selection_stmt, ctrlexpr_val) if ctrlexpr = selection_stmt.expression unless constant_expression?(ctrlexpr) W(ctrlexpr.location) if ctrlexpr_val.test_must_be_true.true? end end end def interpreter @interp end end class W0613 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_if_ctrlexpr_evaled += T(:check_if_stmt) interp.on_if_else_ctrlexpr_evaled += T(:check_if_else_stmt) interp.on_while_ctrlexpr_evaled += T(:check_while_stmt) interp.on_for_ctrlexpr_evaled += T(:check_for_stmt) interp.on_c99_for_ctrlexpr_evaled += T(:check_c99_for_stmt) end private def check_if_stmt(if_stmt, ctrlexpr_val) if ctrlexpr_val.test_must_be_false.true? W(if_stmt.expression.location) end end def check_if_else_stmt(if_else_stmt, ctrlexpr_val) if ctrlexpr_val.test_must_be_false.true? W(if_else_stmt.expression.location) end end def check_while_stmt(while_stmt, ctrlexpr_val) if ctrlexpr_val.test_must_be_false.true? W(while_stmt.expression.location) end end def check_for_stmt(for_stmt, ctrlexpr_val) # NOTE: This method is called only if the for-statement has a controlling # expression. if ctrlexpr_val.test_must_be_false.true? W(for_stmt.condition_statement.expression.location) end end def check_c99_for_stmt(c99_for_stmt, ctrlexpr_val) # NOTE: This method is called only if the c99-for-statement has a # controlling expression. if ctrlexpr_val.test_must_be_false.true? W(c99_for_stmt.condition_statement.expression.location) end end end class W0614 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_do_ctrlexpr_evaled += T(:check) end private def check(do_stmt, ctrlexpr_val) unless constant_expression?(do_stmt.expression) if ctrlexpr_val.test_must_be_false.true? W(do_stmt.expression.location) end end end def interpreter @interp end end class W0622 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_function_declared += T(:check) interp.on_block_started += T(:enter_block) interp.on_block_ended += T(:leave_block) @block_level = 0 end private def check(fun_dcl, fun) if @block_level > 0 && fun.declared_as_extern? W(fun_dcl.location) end end def enter_block(*) @block_level += 1 end def leave_block(*) @block_level -= 1 end end class W0623 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_declared += T(:check) interp.on_block_started += T(:enter_block) interp.on_block_ended += T(:leave_block) @block_level = 0 end private def check(var_dcl, var) if @block_level > 0 && var.declared_as_extern? W(var_dcl.location) end end def enter_block(*) @block_level += 1 end def leave_block(*) @block_level -= 1 end end class W0624 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cpp::SyntaxNodeCollector # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:check) trav.enter_kandr_function_definition += T(:check) @dires = collect_define_lines(phase_ctxt[:cpp_ast]) + collect_undef_lines(phase_ctxt[:cpp_ast]) end private def check(fun_def) @dires.select { |node| in_block?(fun_def.function_body, node) }.each { |node| W(node.location) } end def in_block?(outer_node, inner_node) outer_node.location.fpath == inner_node.location.fpath && outer_node.head_token.location.line_no < inner_node.location.line_no && outer_node.tail_token.location.line_no > inner_node.location.line_no end end class W0625 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::SyntaxNodeCollector # NOTE: W0625 may be duplicative when the same typedef is used twice or # more. mark_as_unique def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath interp = phase_ctxt[:cc1_interpreter] interp.on_typedef_declared += T(:declare_typedef) interp.on_variable_defined += T(:check) interp.on_variable_declared += T(:check) interp.on_explicit_function_declared += T(:check) interp.on_explicit_function_defined += T(:check) @typedef_types = {} end private def declare_typedef(typedef_dcl) typedef_name = typedef_dcl.identifier.value if @fpath == typedef_dcl.location.fpath @typedef_types[typedef_name] = typedef_dcl else @typedef_types.delete(typedef_name) end end def check(dcl_or_def, obj, *) return unless obj.declared_as_extern? if dcl_specs = dcl_or_def.declaration_specifiers find_bad_typedef_decls(dcl_specs).each do |dcl| W(dcl.location, dcl.identifier.value) break end end end def find_bad_typedef_decls(node) collect_typedef_type_specifiers(node).map { |type_spec| @typedef_types[type_spec.identifier.value] }.compact end end class W0626 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_constant_specifier += T(:check_constant) trav.enter_string_literal_specifier += T(:check_string_literal) end private def check_constant(node) W(node.location) if node.prefix =~ /\AL\z/i end def check_string_literal(node) W(node.location) if node.prefix =~ /\AL\z/i end end class W0627 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_compound_statement += T(:enter_block) trav.leave_compound_statement += T(:leave_block) trav.enter_expression_statement += T(:enter_expression_statement) trav.enter_if_statement += T(:update_last_statement) trav.enter_if_else_statement += T(:update_last_statement) trav.enter_switch_statement += T(:update_last_statement) trav.enter_while_statement += T(:update_last_statement) trav.enter_do_statement += T(:update_last_statement) trav.enter_for_statement += T(:enter_for_statement) trav.enter_c99_for_statement += T(:enter_for_statement) trav.enter_goto_statement += T(:update_last_statement) trav.enter_continue_statement += T(:update_last_statement) trav.enter_break_statement += T(:update_last_statement) trav.enter_return_statement += T(:update_last_statement) @lst_stmts = [] @expected_stmts = Set.new end private def enter_block(*) @lst_stmts.push(nil) end def leave_block(*) @lst_stmts.pop end def enter_expression_statement(node) return if @expected_stmts.include?(node) unless node.expression if lst_stmt = @lst_stmts.last tail = lst_stmt.tail_location head = node.head_location if tail.fpath == head.fpath && tail.line_no == head.line_no W(node.location) end end end update_last_statement(node) end def enter_for_statement(node) @expected_stmts.add(node.condition_statement) update_last_statement(node) end def update_last_statement(node) @lst_stmts[-1] = node end end class W0629 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_function_defined += T(:define_function) interp.on_function_referred += T(:refer_function) interp.on_translation_unit_ended += M(:check) @static_functions = {} end private def check(*) @static_functions.map { |name, (cnt, loc)| cnt == 0 ? [name, loc] : nil }.compact.each { |name, loc| W(loc, name) } end def define_function(fun_def, fun) if fun.declared_as_static? @static_functions[fun.name] ||= [0, fun_def.location] @static_functions[fun.name][1] ||= fun_def.location end end def refer_function(*, fun) if fun.named? if rec = @static_functions[fun.name] rec[0] += 1 else @static_functions[fun.name] = [1, nil] end end end end class W0635 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*printf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) return unless fmt fmt.conversion_specifiers.each_with_index do |cs, idx| if cs.wellformed? if cs.consume_arguments? && cs.conversion_argument W(fmt.location, idx + 1) unless cs.acceptable? end end end end end def format_str_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end def create_format(funcall_expr, fmt_str_idx, arg_vars, env) if fmt_str_idx fmt_str = funcall_expr.argument_expressions[fmt_str_idx] if fmt_str && fmt_str.literal.value =~ /\AL?"(.*)"\z/i args = arg_vars.drop(fmt_str_idx + 1) || [] return Cc1::PrintfFormat.new($1, fmt_str.location, args, env) end end nil end end class W0636 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*printf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) return unless fmt fmt.conversion_specifiers.each_with_index do |cs, idx| if cs.wellformed? if cs.consume_arguments? && cs.conversion_argument.nil? W(fmt.location, idx + 1) end end end end end def format_str_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end def create_format(funcall_expr, fmt_str_idx, arg_vars, env) if fmt_str_idx fmt_str = funcall_expr.argument_expressions[fmt_str_idx] if fmt_str && fmt_str.literal.value =~ /\AL?"(.*)"\z/i args = arg_vars.drop(fmt_str_idx + 1) || [] return Cc1::PrintfFormat.new($1, fmt_str.location, args, env) end end nil end end class W0637 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*printf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) return unless fmt unless fmt.extra_arguments.empty? if expr = find_extra_argument_expr(funcall_expr, fmt.extra_arguments) W(expr.location) else W(funcall_expr.location) end end end end def format_str_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end def create_format(funcall_expr, fmt_str_idx, arg_vars, env) if fmt_str_idx fmt_str = funcall_expr.argument_expressions[fmt_str_idx] if fmt_str && fmt_str.literal.value =~ /\AL?"(.*)"\z/i args = arg_vars.drop(fmt_str_idx + 1) || [] return Cc1::PrintfFormat.new($1, fmt_str.location, args, env) end end nil end def find_extra_argument_expr(funcall_expr, extra_args) funcall_expr.argument_expressions[-extra_args.size] end end class W0638 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) end private def check(funcall_expr, fun, *) if fun.named? && fun.name =~ /\A.*printf\z/ if funcall_expr.argument_expressions.empty? W(funcall_expr.location) end end end end class W0639 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*scanf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) return unless fmt fmt.conversion_specifiers.each_with_index do |cs, idx| if cs.wellformed? if cs.consume_arguments? && cs.conversion_argument W(fmt.location, idx + 1) unless cs.acceptable? end end end end end def format_str_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end def create_format(funcall_expr, fmt_str_idx, arg_vars, env) if fmt_str_idx fmt_str = funcall_expr.argument_expressions[fmt_str_idx] if fmt_str && fmt_str.literal.value =~ /\AL?"(.*)"\z/i args = arg_vars.drop(fmt_str_idx + 1) || [] return Cc1::ScanfFormat.new($1, fmt_str.location, args, env) end end nil end end class W0640 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*scanf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) return unless fmt fmt.conversion_specifiers.each do |cs| if arg = cs.conversion_argument and !arg.type.pointer? idx = arg_vars.index(arg) if idx and arg_expr = funcall_expr.argument_expressions[idx] W(arg_expr.location) else W(funcall_expr.location) break end end end end end def format_str_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end def create_format(funcall_expr, fmt_str_idx, arg_vars, env) if fmt_str_idx fmt_str = funcall_expr.argument_expressions[fmt_str_idx] if fmt_str && fmt_str.literal.value =~ /\AL?"(.*)"\z/i args = arg_vars.drop(fmt_str_idx + 1) || [] return Cc1::ScanfFormat.new($1, fmt_str.location, args, env) end end nil end end class W0641 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_conv_performed += T(:check) end private def check(expr, orig_var, rslt_var) lhs_type = orig_var.type.unqualify rhs_type = rslt_var.type.unqualify case when lhs_type.floating? && rhs_type.pointer? && !rhs_type.base_type.function? W(expr.location) when rhs_type.floating? && lhs_type.pointer? && !lhs_type.base_type.function? W(expr.location) end end end class W0642 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_address_derivation_performed += T(:check) end private def check(expr, obj, *) W(expr.location) if obj.declared_as_register? end end class W0644 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: W0644 may be duplicative when both hand side of a binary-expression # refer a value of `void' expression. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_value_referred += T(:check) interp.on_explicit_conv_performed += lambda { |expr, from, *| check(expr, from) } end private def check(expr, var) W(expr.location) if var.type.void? end end class W0645 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_kandr_function_definition += T(:check) end def check(node) if node.type.parameter_types.any? { |type| type.void? } W(node.location) end end end class W0646 < PassiveCodeCheck def_registrant_phase Cc1::Prepare1Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super parser = phase_ctxt[:cc1_parser] parser.on_string_literals_concatenated += T(:check) end private def check(former, latter, *) if former.value =~ /\A"/ && latter.value =~ /\AL"/i or former.value =~ /\AL"/i && latter.value =~ /\A"/ W(latter.location) end end end class W0649 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_shift_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, *) if constant_expression?(expr.rhs_operand) if rhs_var.value.test_must_be_less_than(scalar_value_of(0)).true? W(expr.location) end end end def interpreter @interp end end class W0650 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_shift_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, *) if constant_expression?(expr.rhs_operand) promoted_type = lhs_var.type.integer_promoted_type promoted_bit_size = scalar_value_of(promoted_type.bit_size) if rhs_var.value.test_must_be_equal_to(promoted_bit_size).true? || rhs_var.value.test_must_be_greater_than(promoted_bit_size).true? W(expr.location, promoted_type.brief_image) end end end def interpreter @interp end end class W0653 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_initialized += T(:check) end private def check(var_def, var, init_var) if initializer = var_def.initializer init_depth = initializer_depth(initializer) case when init_depth == 0 && init_var.type.array?, init_depth == 0 && init_var.type.composite? return when init_depth == 0 && type_depth(var.type) > 0 W(initializer.location) end end end def initializer_depth(init) if inits = init.initializers 1 + inits.map { |i| initializer_depth(i) }.max else 0 end end def type_depth(type) case when type.array? 1 + type_depth(type.base_type) when type.composite? type.members.empty? ? 1 : 1 + type.members.map { |memb| type_depth(memb.type) }.max else 0 end end end class W0654 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_initialized += T(:check) end private def check(var_def, var, init_var) type = var.type if type.struct? || type.union? and !type.same_as?(init_var.type) W(var_def.location) end end end class W0655 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_sizeof_expr_evaled += T(:check) end private def check(expr, ope_var, *) type = ope_var.type if type.scalar? && type.integer? && type.bitfield? W(expr.location) end end end class W0656 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*printf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) return unless fmt fmt.conversion_specifiers.each_with_index do |cs, idx| if cs.complete? if cs.undefined? || cs.illformed? W(fmt.location, idx + 1) end end end end end def format_str_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end def create_format(funcall_expr, fmt_str_idx, arg_vars, env) if fmt_str_idx fmt_str = funcall_expr.argument_expressions[fmt_str_idx] if fmt_str && fmt_str.literal.value =~ /\AL?"(.*)"\z/i args = arg_vars.drop(fmt_str_idx + 1) || [] return Cc1::PrintfFormat.new($1, fmt_str.location, args, env) end end nil end end class W0657 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*printf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) return unless fmt fmt.conversion_specifiers.each_with_index do |cs, idx| unless cs.valid_length_modifier? warn(fmt, cs.conversion_specifier_character, idx) end end end end def warn(fmt, cs_char, idx) if target_conversion_specifiers.include?(cs_char) W(fmt.location, idx + 1) end end def format_str_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end def create_format(funcall_expr, fmt_str_idx, arg_vars, env) if fmt_str_idx fmt_str = funcall_expr.argument_expressions[fmt_str_idx] if fmt_str && fmt_str.literal.value =~ /\AL?"(.*)"\z/i args = arg_vars.drop(fmt_str_idx + 1) || [] return Cc1::PrintfFormat.new($1, fmt_str.location, args, env) end end nil end def target_conversion_specifiers ["i", "d"] end end class W0658 < W0657 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["o"] end end class W0659 < W0657 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["u"] end end class W0660 < W0657 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["x"] end end class W0661 < W0657 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["X"] end end class W0662 < W0657 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["f"] end end class W0663 < W0657 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["e"] end end class W0664 < W0657 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["E"] end end class W0665 < W0657 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["g"] end end class W0666 < W0657 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["G"] end end class W0667 < W0657 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["c"] end end class W0668 < W0657 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["%"] end end class W0669 < W0657 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["s"] end end class W0670 < W0657 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["n"] end end class W0671 < W0657 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["p"] end end class W0672 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*printf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) return unless fmt fmt.conversion_specifiers.each_with_index do |cs, idx| W(fmt.location, idx + 1) if cs.incomplete? end end end def format_str_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end def create_format(funcall_expr, fmt_str_idx, arg_vars, env) if fmt_str_idx fmt_str = funcall_expr.argument_expressions[fmt_str_idx] if fmt_str && fmt_str.literal.value =~ /\AL?"(.*)"\z/i args = arg_vars.drop(fmt_str_idx + 1) || [] return Cc1::PrintfFormat.new($1, fmt_str.location, args, env) end end nil end end class W0673 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*scanf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) return unless fmt fmt.conversion_specifiers.each_with_index do |cs, idx| if cs.complete? W(fmt.location, idx + 1) if cs.undefined? || cs.illformed? end end end end def format_str_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end def create_format(funcall_expr, fmt_str_idx, arg_vars, env) if fmt_str_idx fmt_str = funcall_expr.argument_expressions[fmt_str_idx] if fmt_str && fmt_str.literal.value =~ /\AL?"(.*)"\z/i args = arg_vars.drop(fmt_str_idx + 1) || [] return Cc1::ScanfFormat.new($1, fmt_str.location, args, env) end end nil end end class W0674 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*scanf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) return unless fmt fmt.conversion_specifiers.each_with_index do |cs, idx| unless cs.valid_length_modifier? warn(fmt, cs.conversion_specifier_character, idx) end end end end def warn(fmt, cs_char, idx) if target_conversion_specifiers.include?(cs_char) W(fmt.location, idx + 1) end end def format_str_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end def create_format(funcall_expr, fmt_str_idx, arg_vars, env) if fmt_str_idx fmt_str = funcall_expr.argument_expressions[fmt_str_idx] if fmt_str && fmt_str.literal.value =~ /\AL?"(.*)"\z/i args = arg_vars.drop(fmt_str_idx + 1) || [] return Cc1::ScanfFormat.new($1, fmt_str.location, args, env) end end nil end def target_conversion_specifiers ["d", "i", "n"] end end class W0675 < W0674 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["o"] end end class W0676 < W0674 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["u"] end end class W0677 < W0674 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["x", "X"] end end class W0678 < W0674 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["e", "E", "f", "g", "G"] end end class W0679 < W0674 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["s"] end end class W0680 < W0674 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["p"] end end class W0681 < W0674 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["%"] end end class W0682 < W0674 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["["] end end class W0683 < W0674 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def target_conversion_specifiers ["c"] end end class W0684 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*scanf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) return unless fmt fmt.conversion_specifiers.each_with_index do |cs, idx| W(fmt.location, idx + 1) if cs.incomplete? end end end def format_str_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end def create_format(funcall_expr, fmt_str_idx, arg_vars, env) if fmt_str_idx fmt_str = funcall_expr.argument_expressions[fmt_str_idx] if fmt_str && fmt_str.literal.value =~ /\AL?"(.*)"\z/i args = arg_vars.drop(fmt_str_idx + 1) || [] return Cc1::ScanfFormat.new($1, fmt_str.location, args, env) end end nil end end class W0685 < W0573 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*scanf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) return unless fmt fmt.conversion_specifiers.each do |conv_spec| if conv_spec.scanset conv_spec.scanset.scan(/(.)-(.)/).each do |lhs, rhs| W(fmt.location) if lhs.ord > rhs.ord end end end end end end class W0686 < W0573 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def check(funcall_expr, fun, arg_vars, *) if fun.named? && fun.name =~ /\A.*scanf\z/ fmt = create_format(funcall_expr, format_str_index_of(funcall_expr), arg_vars, @environ) return unless fmt fmt.conversion_specifiers.each do |conv_spec| if conv_spec.scanset W(fmt.location) unless conv_spec.valid_scanset? end end end end end class W0694 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) end private def check(funcall_expr, fun, *) W(funcall_expr.location) if fun.named? && fun.name == "assert" end end class W0697 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:start_function) interp.on_function_ended += T(:end_function) interp.on_implicit_return_evaled += M(:check_implicit_return) @cur_fun = nil end private def start_function(fun_def, *) @cur_fun = fun_def end def end_function(*) @cur_fun = nil end def check_implicit_return(loc) if @cur_fun && loc.in_analysis_target?(traits) unless @cur_fun.type.return_type.void? W(@cur_fun.location, @cur_fun.identifier.value) end end end end class W0698 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:start_function) trav.enter_kandr_function_definition += T(:start_function) trav.leave_ansi_function_definition += T(:end_function) trav.leave_kandr_function_definition += T(:end_function) trav.enter_return_statement += T(:check) @cur_fun = nil end private def start_function(fun_def) @cur_fun = fun_def end def end_function(*) @cur_fun = nil end def check(ret_stmt) return unless @cur_fun.explicitly_typed? if ret_type = @cur_fun.type.return_type if !ret_type.void? && ret_stmt.expression.nil? W(ret_stmt.location, @cur_fun.identifier.value) end end end end class W0699 < W0698 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def check(ret_stmt) return unless @cur_fun.implicitly_typed? if ret_stmt.expression.nil? W(ret_stmt.location, @cur_fun.identifier.value) end end end class W0700 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:start_function) interp.on_function_ended += T(:end_function) interp.on_return_stmt_evaled += T(:check_explicit_return) interp.on_implicit_return_evaled += M(:check_implicit_return) @cur_fun = nil end private def start_function(fun_def, *) @cur_fun = fun_def end def end_function(*) @cur_fun = nil end def check_explicit_return(ret_stmt, *) if @cur_fun if @cur_fun.implicitly_typed? && ret_stmt.expression.nil? W(@cur_fun.location, @cur_fun.identifier.value) end end end def check_implicit_return(loc) if @cur_fun && loc.in_analysis_target?(traits) if @cur_fun.implicitly_typed? W(@cur_fun.location, @cur_fun.identifier.value) end end end end class W0703 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_struct_declared += T(:declare_struct) interp.on_union_declared += T(:declare_union) interp.on_enum_declared += T(:declare_enum) interp.on_block_started += T(:enter_scope) interp.on_block_ended += T(:leave_scope) @tag_names = [[]] end private def declare_struct(struct_dcl) tag_name = struct_dcl.identifier pair_names = @tag_names.flatten.select { |id| id.value == tag_name.value } unless pair_names.empty? W(struct_dcl.location, tag_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @tag_names.last.push(tag_name) end def declare_union(union_dcl) tag_name = union_dcl.identifier pair_names = @tag_names.flatten.select { |id| id.value == tag_name.value } unless pair_names.empty? W(union_dcl.location, tag_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @tag_names.last.push(tag_name) end def declare_enum(enum_dcl) tag_name = enum_dcl.identifier pair_names = @tag_names.flatten.select { |id| id.value == tag_name.value } unless pair_names.empty? W(enum_dcl.location, tag_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @tag_names.last.push(tag_name) end def enter_scope(*) @tag_names.push([]) end def leave_scope(*) @tag_names.pop end end class W0704 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:define_variable) interp.on_explicit_function_declared += T(:declare_function) interp.on_variable_declared += T(:declare_variable) interp.on_enum_declared += T(:declare_enum) interp.on_typedef_declared += T(:declare_typedef) interp.on_explicit_function_defined += T(:define_function) interp.on_parameter_defined += T(:define_parameter) interp.on_block_started += T(:enter_scope) interp.on_block_ended += T(:leave_scope) @vdcls = [[]] @vdefs = [[]] @fdcls = [[]] @fdefs = [[]] @tdefs = [[]] @enums = [[]] end private def define_variable(var_def, *) dcl_name = var_def.identifier pair_names = wider_identifiers_of_variable_definition.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(var_def.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @vdefs.last.push(dcl_name) end def wider_identifiers_of_variable_definition (@vdcls[0..-2] + @vdefs[0..-2] + @fdcls[0..-2] + @fdefs[0..-2] + @tdefs[0..-2] + @enums[0..-2]).flatten end def declare_function(fun_dcl, *) dcl_name = fun_dcl.identifier pair_names = wider_identifiers_of_function_declaration.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(fun_dcl.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @fdcls.last.push(dcl_name) end def wider_identifiers_of_function_declaration (@vdcls[0..-2] + @vdefs[0..-2] + @fdcls[0..-2] + @fdefs[0..-2] + @tdefs[0..-2] + @enums[0..-2]).flatten end def declare_variable(var_dcl, *) dcl_name = var_dcl.identifier pair_names = wider_identifiers_of_variable_declaration.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(var_dcl.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @vdcls.last.push(dcl_name) end def wider_identifiers_of_variable_declaration (@vdefs[0..-2] + @fdcls[0..-2] + @fdefs[0..-2] + @tdefs[0..-2] + @enums[0..-2]).flatten end def declare_enum(enum_dcl) enum_dcl.enumerators.each do |enum| enum_name = enum.identifier pair_names = wider_identifiers_of_enum_declaration.select { |id| id.value == enum_name.value } unless pair_names.empty? W(enum.location, enum_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @enums.last.push(enum_name) end end def wider_identifiers_of_enum_declaration (@vdcls[0..-2] + @vdefs[0..-2] + @fdcls[0..-2] + @fdefs[0..-2] + @tdefs[0..-2] + @enums[0..-2]).flatten end def declare_typedef(typedef_dcl) dcl_name = typedef_dcl.identifier pair_names = wider_identifiers_of_typedef_declaration.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(typedef_dcl.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @enums.last.push(dcl_name) end def wider_identifiers_of_typedef_declaration (@vdcls[0..-2] + @vdefs[0..-2] + @fdcls[0..-2] + @fdefs[0..-2] + @tdefs[0..-2] + @enums[0..-2]).flatten end def define_function(fun_def, *) dcl_name = fun_def.identifier pair_names = wider_identifiers_of_function_definition.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(fun_def.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @fdefs.last.push(dcl_name) end def wider_identifiers_of_function_definition (@vdcls[0..-2] + @vdefs[0..-2] + @fdefs[0..-2] + @tdefs[0..-2] + @enums[0..-2]).flatten end def define_parameter(param_def, *) dcl_name = param_def.identifier pair_names = wider_identifiers_of_parameter_definition.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(param_def.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @vdefs.last.push(dcl_name) end def wider_identifiers_of_parameter_definition (@vdcls[0..-2] + @vdefs[0..-2] + @fdcls[0..-2] + @fdefs[0..-2] + @tdefs[0..-2] + @enums[0..-2]).flatten end def enter_scope(*) @vdcls.push([]) @vdefs.push([]) @fdcls.push([]) @fdefs.push([]) @tdefs.push([]) @enums.push([]) end def leave_scope(*) @vdcls.pop @vdefs.pop @fdcls.pop @fdefs.pop @tdefs.pop @enums.pop end end class W0705 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator include Cc1::InterpreterOptions include Cc1::SyntaxNodeCollector # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_array_subscript_expr_evaled += T(:check_array_subscript) @interp.on_indirection_expr_evaled += T(:check_indirection) end private def check_array_subscript(expr, ary_or_ptr, subs, ary, *) return unless ary unless constant_expression?(expr.array_subscript) warn_array_oob_access(expr.array_subscript, ary, subs) end end def check_indirection(expr, *) ary, subs_expr = extract_array_and_subscript(expr.operand) return unless ary unless constant_expression?(subs_expr) subs = interpret(subs_expr, QUIET, WITHOUT_SIDE_EFFECTS) warn_array_oob_access(expr.operand, ary, subs) end end def warn_array_oob_access(expr, ary, subs) if ary_len = ary.type.length lower_bound = scalar_value_of(0) if subs.value.test_must_be_less_than(lower_bound).false? test = subs.value.test_may_be_less_than(lower_bound) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) return end end upper_bound = scalar_value_of(ary_len - 1) if subs.value.test_must_be_greater_than(upper_bound).false? test = subs.value.test_may_be_greater_than(upper_bound) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end end def extract_array_and_subscript(expr) ary, ary_name = extract_array(expr) subs_expr = create_subscript_expr(expr, ary_name) return ary, subs_expr end def extract_array(expr) collect_object_specifiers(expr).each do |os| if obj = variable_named(os.identifier.value) case when obj.type.array? return obj, os.identifier.value when obj.type.pointer? if obj = pointee_of(obj) and obj.type.array? return obj, os.identifier.value end end end end nil end def create_subscript_expr(expr, ary_name) expr.accept(ExpressionTransformer.new(ary_name)) end def interpreter @interp end class ExpressionTransformer < Cc1::SyntaxTreeVisitor def initialize(ary_name) @ary_name = ary_name end def visit_error_expression(node) node end def visit_object_specifier(node) if node.identifier.value == @ary_name Cc1::ConstantSpecifier.new(Token.new(:CONSTANT, "0", node.location)) else node end end def visit_constant_specifier(node) node end def visit_string_literal_specifier(node) node end def visit_null_constant_specifier(node) node end def visit_grouped_expression(node) Cc1::GroupedExpression.new(node.expression.accept(self)) end def visit_array_subscript_expression(node) Cc1::ArraySubscriptExpression.new( node.expression.accept(self), node.array_subscript.accept(self), node.operator) end def visit_function_call_expression(node) Cc1::FunctionCallExpression.new( node.expression.accept(self), node.argument_expressions.map { |expr| expr.accept(self) }, node.operator) end def visit_member_access_by_value_expression(node) Cc1::MemberAccessByValueExpression.new( node.expression.accept(self), node.identifier, node.operator) end def visit_member_access_by_pointer_expression(node) Cc1::MemberAccessByPointerExpression.new( node.expression.accept(self), node.identifier, node.operator) end def visit_bit_access_by_value_expression(node) Cc1::BitAccessByValueExpression.new( node.expression.accept(self), node.constant, node.operator) end def visit_bit_access_by_pointer_expression(node) Cc1::BitAccessByPointerExpression.new( node.expression.accept(self), node.constant, node.operator) end def visit_postfix_increment_expression(node) # NOTE: The postfix-increment-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PrefixDecrementExpression.new( Token.new("--", "--", node.operator.location), node.operand.accept(self)) end def visit_postfix_decrement_expression(node) # NOTE: The postfix-decrement-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PrefixIncrementExpression.new( Token.new("++", "++", node.operator.location), node.operand.accept(self)) end def visit_compound_literal_expression(node) Cc1::CompoundLiteralExpression.new( node.type_name, node.initializers.map { |init| init.accept(self) }, node.operator) end def visit_prefix_increment_expression(node) # NOTE: The prefix-increment-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PostfixDecrementExpression.new( Token.new("--", "--", node.operator.location), node.operand.accept(self)) end def visit_prefix_decrement_expression(node) # NOTE: The prefix-decrement-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PostfixIncrementExpression.new( Token.new("++", "++", node.operator.location), node.operand.accept(self)) end def visit_address_expression(node) Cc1::AddressExpression.new(node.operator, node.operand.accept(self)) end def visit_indirection_expression(node) Cc1::IndirectionExpression.new( node.operator, node.operand.accept(self)) end def visit_unary_arithmetic_expression(node) Cc1::UnaryArithmeticExpression.new( node.operator, node.operand.accept(self)) end def visit_sizeof_expression(node) Cc1::SizeofExpression.new(node.operator, node.operand.accept(self)) end def visit_sizeof_type_expression(node) node end def visit_alignof_expression(node) Cc1::AlignofExpression.new(node.operator, node.operand.accept(self)) end def visit_alignof_type_expression(node) node end def visit_cast_expression(node) Cc1::CastExpression.new(node.type_name, node.operand.accept(self)) end def visit_multiplicative_expression(node) Cc1::MultiplicativeExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_additive_expression(node) Cc1::AdditiveExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_shift_expression(node) Cc1::ShiftExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_relational_expression(node) Cc1::RelationalExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_equality_expression(node) Cc1::EqualityExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_and_expression(node) Cc1::AndExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_exclusive_or_expression(node) Cc1::ExclusiveOrExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_inclusive_or_expression(node) Cc1::InclusiveOrExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_logical_and_expression(node) Cc1::LogicalAndExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_logical_or_expression(node) Cc1::LogicalOrExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_conditional_expression(node) Cc1::ConditionalExpression.new(node.condition.accept(self), node.then_expression.accept(self), node.else_expression.accept(self), Token.new("?", "?", node.location)) end def visit_simple_assignment_expression(node) Cc1::SimpleAssignmentExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_compound_assignment_expression(node) Cc1::CompoundAssignmentExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_comma_separated_expression(node) exprs = node.expressions.map { |expr| expr.accept(self) } transformed = Cc1::CommaSeparatedExpression.new(exprs.shift) exprs.each { |expr| transformed.expressions.push(expr) } transformed end def visit_initializer(node) case when node.expression Cc1::Initializer.new(node.expression.accept(self), nil) when node.initializers Cc1::Initializer.new( nil, node.initializers.map { |i| i.accept(self) }) end end end private_constant :ExpressionTransformer end class W0707 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator include Cc1::InterpreterOptions include Cc1::SyntaxNodeCollector # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_array_subscript_expr_evaled += T(:check_array_subscript) @interp.on_indirection_expr_evaled += T(:check_indirection) end private def check_array_subscript(expr, ary_or_ptr, subs, ary, *) return unless ary if constant_expression?(expr.array_subscript) warn_array_oob_access(expr.array_subscript, ary, subs) end end def check_indirection(expr, *) ary, subs_expr = extract_array_and_subscript(expr.operand) return unless ary if constant_expression?(subs_expr) # NOTE: A constant-expression has no side-effects. subs = interpret(subs_expr, QUIET) warn_array_oob_access(expr.operand, ary, subs) end end def warn_array_oob_access(expr, ary, subs) if ary_len = ary.type.length lower_bound = scalar_value_of(0) test = subs.value.test_must_be_less_than(lower_bound) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) return end upper_bound = scalar_value_of(ary_len - 1) test = subs.value.test_must_be_greater_than(upper_bound) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end def extract_array_and_subscript(expr) ary, ary_name = extract_array(expr) subs_expr = create_subscript_expr(expr, ary_name) return ary, subs_expr end def extract_array(expr) collect_object_specifiers(expr).each do |os| if obj = variable_named(os.identifier.value) case when obj.type.array? return obj, os.identifier.value when obj.type.pointer? if obj = pointee_of(obj) and obj.type.array? return obj, os.identifier.value end end end end nil end def create_subscript_expr(expr, ary_name) expr.accept(ExpressionTransformer.new(ary_name)) end def interpreter @interp end class ExpressionTransformer < Cc1::SyntaxTreeVisitor def initialize(ary_name) @ary_name = ary_name end def visit_error_expression(node) node end def visit_object_specifier(node) if node.identifier.value == @ary_name Cc1::ConstantSpecifier.new(Token.new(:CONSTANT, "0", node.location)) else node end end def visit_constant_specifier(node) node end def visit_string_literal_specifier(node) node end def visit_null_constant_specifier(node) node end def visit_grouped_expression(node) Cc1::GroupedExpression.new(node.expression.accept(self)) end def visit_array_subscript_expression(node) Cc1::ArraySubscriptExpression.new(node.expression.accept(self), node.array_subscript.accept(self), node.operator) end def visit_function_call_expression(node) Cc1::FunctionCallExpression.new( node.expression.accept(self), node.argument_expressions.map { |expr| expr.accept(self) }, node.operator) end def visit_member_access_by_value_expression(node) Cc1::MemberAccessByValueExpression.new( node.expression.accept(self), node.identifier, node.operator) end def visit_member_access_by_pointer_expression(node) Cc1::MemberAccessByPointerExpression.new( node.expression.accept(self), node.identifier, node.operator) end def visit_bit_access_by_value_expression(node) Cc1::BitAccessByValueExpression.new( node.expression.accept(self), node.constant, node.operator) end def visit_bit_access_by_pointer_expression(node) Cc1::BitAccessByPointerExpression.new( node.expression.accept(self), node.constant, node.operator) end def visit_postfix_increment_expression(node) # NOTE: The postfix-increment-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PrefixDecrementExpression.new( Token.new("--", "--", node.operator.location), node.operand.accept(self)) end def visit_postfix_decrement_expression(node) # NOTE: The postfix-decrement-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PrefixIncrementExpression.new( Token.new("++", "++", node.operator.location), node.operand.accept(self)) end def visit_compound_literal_expression(node) Cc1::CompoundLiteralExpression.new( node.type_name, node.initializers.map { |init| init.accept(self) }, node.operator) end def visit_prefix_increment_expression(node) # NOTE: The prefix-increment-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PostfixDecrementExpression.new( Token.new("--", "--", node.operator.location), node.operand.accept(self)) end def visit_prefix_decrement_expression(node) # NOTE: The prefix-decrement-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PostfixIncrementExpression.new( Token.new("++", "++", node.operator.location), node.operand.accept(self)) end def visit_address_expression(node) Cc1::AddressExpression.new(node.operator, node.operand.accept(self)) end def visit_indirection_expression(node) Cc1::IndirectionExpression.new( node.operator, node.operand.accept(self)) end def visit_unary_arithmetic_expression(node) Cc1::UnaryArithmeticExpression.new( node.operator, node.operand.accept(self)) end def visit_sizeof_expression(node) Cc1::SizeofExpression.new(node.operator, node.operand.accept(self)) end def visit_sizeof_type_expression(node) node end def visit_alignof_expression(node) Cc1::AlignofExpression.new(node.operator, node.operand.accept(self)) end def visit_alignof_type_expression(node) node end def visit_cast_expression(node) Cc1::CastExpression.new(node.type_name, node.operand.accept(self)) end def visit_multiplicative_expression(node) Cc1::MultiplicativeExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_additive_expression(node) Cc1::AdditiveExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_shift_expression(node) Cc1::ShiftExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_relational_expression(node) Cc1::RelationalExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_equality_expression(node) Cc1::EqualityExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_and_expression(node) Cc1::AndExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_exclusive_or_expression(node) Cc1::ExclusiveOrExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_inclusive_or_expression(node) Cc1::InclusiveOrExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_logical_and_expression(node) Cc1::LogicalAndExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_logical_or_expression(node) Cc1::LogicalOrExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_conditional_expression(node) Cc1::ConditionalExpression.new(node.condition.accept(self), node.then_expression.accept(self), node.else_expression.accept(self), Token.new("?", "?", node.location)) end def visit_simple_assignment_expression(node) Cc1::SimpleAssignmentExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_compound_assignment_expression(node) Cc1::CompoundAssignmentExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_comma_separated_expression(node) exprs = node.expressions.map { |expr| expr.accept(self) } transformed = Cc1::CommaSeparatedExpression.new(exprs.shift) exprs.each { |expr| transformed.expressions.push(expr) } transformed end def visit_initializer(node) case when node.expression Cc1::Initializer.new(node.expression.accept(self), nil) when node.initializers Cc1::Initializer.new( nil, node.initializers.map { |i| i.accept(self) }) end end end private_constant :ExpressionTransformer end class W0708 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator include Cc1::SyntaxNodeCollector # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_for_stmt_started += T(:enter_for_stmt) @interp.on_for_stmt_ended += T(:leave_for_stmt) @interp.on_c99_for_stmt_started += T(:enter_c99_for_stmt) @interp.on_c99_for_stmt_ended += T(:leave_c99_for_stmt) @interp.on_variable_value_updated += T(:update_variable) @ctrl_var_stack = [] end private def enter_for_stmt(node) inited_var_names = collect_object_specifiers(node.initial_statement).map { |os| os.identifier.value } if ctrl_var_name = deduct_ctrl_variable_name(node, inited_var_names) @ctrl_var_stack.push([ctrl_var_name, node]) end end def leave_for_stmt(*) @ctrl_var_stack.pop end def enter_c99_for_stmt(node) inited_var_names = collect_identifier_declarators(node.declaration).map { |id| id.identifier.value } if ctrl_var_name = deduct_ctrl_variable_name(node, inited_var_names) @ctrl_var_stack.push([ctrl_var_name, node]) end end def leave_c99_for_stmt(*) @ctrl_var_stack.pop end def update_variable(expr, var) if var.named? and ctrl_vars = @ctrl_var_stack.last if ctrl_vars.first == var.name && !in_ctrl_part(ctrl_vars.last, expr) W(expr.location, var.name) end end end def deduct_ctrl_variable_name(node, inited_var_names) var_names = inited_var_names + node.varying_variable_names histo = var_names.each_with_object({}) { |name, hash| hash[name] = 0 } ctrlexpr, * = node.deduct_controlling_expression collect_object_specifiers(ctrlexpr).map { |obj_spec| obj_spec.identifier.value }.each { |obj_name| histo.include?(obj_name) and histo[obj_name] += 1 } histo.to_a.sort { |a, b| b.last <=> a.last }.map(&:first).find do |name| var = variable_named(name) and !var.type.const? end end def in_ctrl_part(for_or_c99_for_stmt, expr) case for_or_c99_for_stmt when Cc1::ForStatement contain_expr?(for_or_c99_for_stmt.initial_statement, expr) || contain_expr?(for_or_c99_for_stmt.condition_statement, expr) || contain_expr?(for_or_c99_for_stmt.expression, expr) when Cc1::C99ForStatement contain_expr?(for_or_c99_for_stmt.condition_statement, expr) || contain_expr?(for_or_c99_for_stmt.expression, expr) end end def contain_expr?(node, expr) node ? Visitor.new(expr).tap { |v| node.accept(v) }.result : false end def interpreter @interp end class Visitor < Cc1::SyntaxTreeVisitor def initialize(expr) @expr = expr @result = false end attr_reader :result def visit_address_expression(node) node == @expr && @result = true or super end def visit_postfix_increment_expression(node) node == @expr && @result = true or super end def visit_postfix_decrement_expression(node) node == @expr && @result = true or super end def visit_prefix_increment_expression(node) node == @expr && @result = true or super end def visit_prefix_decrement_expression(node) node == @expr && @result = true or super end def visit_simple_assignment_expression(node) node == @expr && @result = true or super end def visit_compound_assignment_expression(node) node == @expr && @result = true or super end def visit_function_call_expression(node) node == @expr && @result = true or super end end private_constant :Visitor end class W0711 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_relational_expression += T(:check) end private def check(expr) if !expr.lhs_operand.logical? && expr.rhs_operand.logical? W(expr.rhs_operand.location) end end end class W0712 < W0711 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def check(expr) if expr.lhs_operand.logical? && !expr.rhs_operand.logical? W(expr.lhs_operand.location) end end end class W0713 < W0711 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def check(expr) if expr.lhs_operand.logical? && expr.rhs_operand.logical? W(expr.location) end end end class W0714 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_and_expression += T(:check) end private def check(expr) if expr.lhs_operand.logical? && expr.rhs_operand.logical? W(expr.location) end end end class W0715 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_inclusive_or_expression += T(:check) end private def check(expr) if expr.lhs_operand.logical? && expr.rhs_operand.logical? W(expr.location) end end end class W0716 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_additive_expression += T(:check) trav.enter_multiplicative_expression += T(:check) trav.enter_shift_expression += T(:check) trav.enter_and_expression += T(:check) trav.enter_exclusive_or_expression += T(:check) trav.enter_inclusive_or_expression += T(:check) trav.enter_compound_assignment_expression += T(:check) end private def check(expr) if expr.lhs_operand.logical? && expr.rhs_operand.logical? W(expr.location) end end end class W0717 < W0716 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def check(expr) if expr.lhs_operand.logical? && !expr.rhs_operand.logical? W(expr.lhs_operand.location) end end end class W0718 < W0716 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def check(expr) if !expr.lhs_operand.logical? && expr.rhs_operand.logical? W(expr.rhs_operand.location) end end end class W0719 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_shift_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, *) if constant_expression?(expr.rhs_operand) underlying_type = lhs_var.type underlying_bit_size = scalar_value_of(underlying_type.bit_size) promoted_type = lhs_var.type.integer_promoted_type promoted_bit_size = scalar_value_of(promoted_type.bit_size) rhs_val = rhs_var.value if rhs_val.test_must_be_equal_to(underlying_bit_size).true? || rhs_val.test_must_be_greater_than(underlying_bit_size).true? and rhs_val.test_must_be_less_than(promoted_bit_size).true? W(expr.location, underlying_type.brief_image) end end end def interpreter @interp end end class W0720 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_explicit_conv_performed += T(:check) end private def check(expr, orig_var, rslt_var) orig_type = orig_var.type rslt_type = rslt_var.type unless orig_type.scalar? && orig_type.floating? && rslt_type.scalar? && rslt_type.integer? return end orig_val = orig_var.value return unless orig_val.scalar? lower_bound = scalar_value_of(rslt_type.min - 1) test = orig_val.test_must_be_less_than(lower_bound) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) return end upper_bound = scalar_value_of(rslt_type.max + 1) test = orig_val.test_must_be_greater_than(upper_bound) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end def interpreter @interp end end class W0721 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_conv_performed += T(:check) end private def check(expr, orig_var, rslt_var) orig_type = orig_var.type rslt_type = rslt_var.type unless orig_type.pointer? && rslt_type.scalar? && rslt_type.integer? return end if orig_type.min < rslt_type.min || orig_type.max > rslt_type.max W(expr.location) end end end class W0722 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_multiplicative_expr_evaled += T(:check) @interp.on_additive_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, rslt_var) return unless lhs_var.type.scalar? && lhs_var.type.signed? return unless rhs_var.type.scalar? && rhs_var.type.signed? return unless lhs_var.value.scalar? && rhs_var.value.scalar? case expr.operator.type when "+" unbound_val = lhs_var.value + rhs_var.value when "-" unbound_val = lhs_var.value - rhs_var.value when "*" unbound_val = lhs_var.value * rhs_var.value else return end lower_test = unbound_val < scalar_value_of(rslt_var.type.min) upper_test = unbound_val > scalar_value_of(rslt_var.type.max) if lower_test.test_must_be_true.true? || upper_test.test_must_be_true.true? W(expr.location) end end def interpreter @interp end end class W0723 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_multiplicative_expr_evaled += T(:check) @interp.on_additive_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, rslt_var) return unless lhs_var.type.scalar? && lhs_var.type.signed? return unless rhs_var.type.scalar? && rhs_var.type.signed? return unless lhs_var.value.scalar? && rhs_var.value.scalar? case expr.operator.type when "+" unbound_val = lhs_var.value + rhs_var.value when "-" unbound_val = lhs_var.value - rhs_var.value when "*" unbound_val = lhs_var.value * rhs_var.value else return end lower_test = unbound_val < scalar_value_of(rslt_var.type.min) upper_test = unbound_val > scalar_value_of(rslt_var.type.max) if !lower_test.test_must_be_true.true? && lower_test.test_may_be_true.true? or !upper_test.test_must_be_true.true? && upper_test.test_may_be_true.true? W(expr.location) end end def interpreter @interp end end class W0726 < W0698 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def check(ret_stmt) if ret_stmt.expression if ret_type = @cur_fun.type.return_type if ret_type.void? && (ret_type.const? || ret_type.volatile?) W(ret_stmt.location, @cur_fun.identifier.value) end end end end end class W0727 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_conv_performed += T(:check) interp.on_implicit_conv_performed += T(:check) end private def check(init_or_expr, orig_var, rslt_var) return unless rslt_var.type.enum? val = orig_var.value.unique_sample unless rslt_var.type.enumerators.any? { |enum| val == enum.value } W(init_or_expr.location) end end end class W0728 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_call_expr_evaled += T(:check) end private def check(expr, fun, arg_vars, *) args = arg_vars.zip(fun.type.parameter_types) args.each_with_index do |(arg_var, param_type), idx| next unless param_type && param_type.enum? arg_expr = expr.argument_expressions[idx] if constant_expression?(arg_expr) if arg_var.type.enum? W(arg_expr.location) unless arg_var.type.same_as?(param_type) end end end end def interpreter @interp end end class W0729 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_assignment_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var) return unless lhs_var.type.enum? if constant_expression?(expr.rhs_operand) if rhs_var.type.enum? && !lhs_var.type.same_as?(rhs_var.type) W(expr.location) end end end def interpreter @interp end end class W0730 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_started += T(:start_function) @interp.on_function_ended += T(:end_function) @interp.on_return_stmt_evaled += T(:check) @cur_fun = nil end private def start_function(*, fun) @cur_fun = fun end def end_function(*) @cur_fun = nil end def check(ret_stmt, ret_var) return unless @cur_fun && ret_var return unless ret_type = @cur_fun.type.return_type return unless ret_type.enum? if constant_expression?(ret_stmt.expression) if ret_var.type.enum? && !ret_type.same_as?(ret_var.type) W(ret_stmt.expression.location) end end end def interpreter @interp end end class W0731 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_switch_stmt_ended += T(:end_switch_statement) interp.on_switch_ctrlexpr_evaled += T(:memorize_switch_ctrlexpr) interp.on_case_ctrlexpr_evaled += T(:check) @switch_ctrlexpr_stack = [] end private def end_switch_statement(*) @switch_ctrlexpr_stack.pop end def memorize_switch_ctrlexpr(*, ctrlexpr_var) @switch_ctrlexpr_stack.push(ctrlexpr_var) end def check(case_stmt, ctrlexpr_var) unless switch_ctrlexpr_var = @switch_ctrlexpr_stack.last return end return unless switch_ctrlexpr_var.type.enum? expected_type = switch_ctrlexpr_var.type val = ctrlexpr_var.value.unique_sample unless expected_type.enumerators.any? { |enum| val == enum.value } W(case_stmt.expression.location, case_stmt.expression.to_s) end end end class W0732 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_logical_and_expression += T(:check) end private def check(expr) if expr.lhs_operand.arithmetic? || expr.lhs_operand.bitwise? if expr.rhs_operand.arithmetic? || expr.rhs_operand.bitwise? W(expr.location) end end end end class W0733 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_logical_or_expression += T(:check) end private def check(expr) if expr.lhs_operand.arithmetic? || expr.lhs_operand.bitwise? if expr.rhs_operand.arithmetic? || expr.rhs_operand.bitwise? W(expr.location) end end end end class W0734 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_logical_and_expression += T(:check) trav.enter_logical_or_expression += T(:check) end private def check(expr) if expr.lhs_operand.arithmetic? || expr.lhs_operand.bitwise? unless expr.rhs_operand.arithmetic? || expr.rhs_operand.bitwise? W(expr.lhs_operand.location) end end end end class W0735 < W0734 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def check(expr) if expr.rhs_operand.arithmetic? || expr.rhs_operand.bitwise? unless expr.lhs_operand.arithmetic? || expr.lhs_operand.bitwise? W(expr.rhs_operand.location) end end end end class W0736 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:define_variable) interp.on_variable_referred += T(:refer_variable) interp.on_function_started += T(:enter_function) interp.on_function_ended += T(:leave_function) interp.on_translation_unit_ended += M(:check) @static_vars = {} @functions = [] end private def define_variable(var_def, var) return unless @functions.empty? @static_vars[var] = [var_def, Set.new] if var.declared_as_static? end def refer_variable(*, var) return if @functions.empty? @static_vars[var].last.add(@functions.last) if @static_vars.include?(var) end def enter_function(*, fun) @functions.push(fun) end def leave_function(*) @functions.pop end def check(*) @static_vars.each do |var, (var_def, accessors)| W(var_def.location, var.name) if accessors.size == 1 end end end class W0737 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_declared += T(:check) interp.on_variable_defined += T(:check) end private def check(dcl_or_def, *) return unless dcl_or_def.type.enum? if dcl_or_def.type.incomplete? W(dcl_or_def.location, dcl_or_def.type.name) end end end class W0738 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_implicit_conv_performed += T(:check) end private def check(init_or_expr, orig_var, rslt_var) case init_or_expr when Cc1::Initializer unless expr = init_or_expr.expression return end when Cc1::Expression expr = init_or_expr end return unless constant_expression?(expr) orig_type = orig_var.type rslt_type = rslt_var.type unless orig_type.scalar? && orig_type.integer? && rslt_type.scalar? && rslt_type.integer? && rslt_type.unsigned? return end orig_val = orig_var.value return unless orig_val.scalar? upper_test = orig_val > scalar_value_of(rslt_type.max) W(expr.location) if upper_test.test_must_be_true.true? end def interpreter @interp end end class W0739 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_additive_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, rslt_var) return unless expr.operator.type == "-" return unless constant_expression?(expr.lhs_operand) return unless constant_expression?(expr.rhs_operand) return unless lhs_var.type.scalar? && lhs_var.type.unsigned? return unless rhs_var.type.scalar? && rhs_var.type.unsigned? return unless lhs_var.value.scalar? && rhs_var.value.scalar? unbound_val = lhs_var.value - rhs_var.value lower_test = unbound_val < scalar_value_of(rslt_var.type.min) W(expr.location) if lower_test.test_must_be_true.true? end def interpreter @interp end end class W0740 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_additive_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, rslt_var) return unless expr.operator.type == "+" return unless constant_expression?(expr.lhs_operand) return unless constant_expression?(expr.rhs_operand) return unless lhs_var.type.scalar? && lhs_var.type.unsigned? return unless rhs_var.type.scalar? && rhs_var.type.unsigned? return unless lhs_var.value.scalar? && rhs_var.value.scalar? unbound_val = lhs_var.value + rhs_var.value upper_test = unbound_val > scalar_value_of(rslt_var.type.max) W(expr.location) if upper_test.test_must_be_true.true? end def interpreter @interp end end class W0741 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_multiplicative_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, rslt_var) return unless expr.operator.type == "*" return unless constant_expression?(expr.lhs_operand) return unless constant_expression?(expr.rhs_operand) return unless lhs_var.type.scalar? && lhs_var.type.unsigned? return unless rhs_var.type.scalar? && rhs_var.type.unsigned? return unless lhs_var.value.scalar? && rhs_var.value.scalar? unbound_val = lhs_var.value * rhs_var.value upper_test = unbound_val > scalar_value_of(rslt_var.type.max) W(expr.location) if upper_test.test_must_be_true.true? end def interpreter @interp end end class W0742 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_implicit_conv_performed += T(:check) end private def check(init_or_expr, orig_var, rslt_var) unless orig_var.type.scalar? && rslt_var.type.scalar? && orig_var.type.signed? && rslt_var.type.unsigned? return end if init_or_expr.kind_of?(Cc1::Initializer) expr = init_or_expr.expression else expr = init_or_expr end if expr && constant_expression?(expr) && orig_var.value.test_must_be_less_than(scalar_value_of(0)).true? W(expr.location) end end def interpreter @interp end end class W0743 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_implicit_conv_performed += T(:check) end private def check(init_or_expr, orig_var, rslt_var) case init_or_expr when Cc1::Initializer unless expr = init_or_expr.expression return end when Cc1::Expression expr = init_or_expr end return unless constant_expression?(expr) orig_type = orig_var.type rslt_type = rslt_var.type unless orig_type.scalar? && orig_type.integer? && rslt_type.scalar? && rslt_type.integer? && rslt_type.signed? return end orig_val = orig_var.value return unless orig_val.scalar? lower_test = orig_val < scalar_value_of(rslt_type.min) upper_test = orig_val > scalar_value_of(rslt_type.max) if lower_test.test_must_be_true.true? || upper_test.test_must_be_true.true? W(expr.location) end end def interpreter @interp end end class W0744 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_if_ctrlexpr_evaled += T(:check_if_statement) @interp.on_if_else_ctrlexpr_evaled += T(:check_if_else_statement) @interp.on_while_ctrlexpr_evaled += T(:check_while_statement) @interp.on_for_ctrlexpr_evaled += T(:check_for_statement) @interp.on_c99_for_ctrlexpr_evaled += T(:check_c99_for_statement) end private def check_if_statement(if_stmt, ctrlexpr_val) ctrlexpr = if_stmt.expression if constant_expression?(ctrlexpr) && ctrlexpr_val.test_must_be_false.true? W(ctrlexpr.location) end end def check_if_else_statement(if_else_stmt, ctrlexpr_val) ctrlexpr = if_else_stmt.expression if constant_expression?(ctrlexpr) && ctrlexpr_val.test_must_be_false.true? W(ctrlexpr.location) end end def check_while_statement(while_stmt, ctrlexpr_val) ctrlexpr = while_stmt.expression if constant_expression?(ctrlexpr) && ctrlexpr_val.test_must_be_false.true? W(ctrlexpr.location) end end def check_for_statement(for_stmt, ctrlexpr_val) ctrlexpr = for_stmt.condition_statement.expression if constant_expression?(ctrlexpr) && ctrlexpr_val.test_must_be_false.true? W(ctrlexpr.location) end end def check_c99_for_statement(c99_for_stmt, ctrlexpr_val) ctrlexpr = c99_for_stmt.condition_statement.expression if constant_expression?(ctrlexpr) && ctrlexpr_val.test_must_be_false.true? W(ctrlexpr.location) end end def interpreter @interp end end class W0745 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator include Cc1::InterpreterOptions include Cc1::SyntaxNodeCollector # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_array_subscript_expr_evaled += T(:check_array_subscript) @interp.on_indirection_expr_evaled += T(:check_indirection) end private def check_array_subscript(expr, ary_or_ptr, subs, ary, *) return unless ary unless constant_expression?(expr.array_subscript) warn_array_oob_access(expr.array_subscript, ary, subs) end end def check_indirection(expr, *) ary, subs_expr = extract_array_and_subscript(expr.operand) return unless ary unless constant_expression?(subs_expr) subs = interpret(subs_expr, QUIET, WITHOUT_SIDE_EFFECTS) warn_array_oob_access(expr.operand, ary, subs) end end def warn_array_oob_access(expr, ary, subs) if ary_len = ary.type.length lower_bound = scalar_value_of(0) test = subs.value.test_must_be_less_than(lower_bound) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) return end upper_bound = scalar_value_of(ary_len - 1) test = subs.value.test_must_be_greater_than(upper_bound) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end def extract_array_and_subscript(expr) ary, ary_name = extract_array(expr) subs_expr = create_subscript_expr(expr, ary_name) return ary, subs_expr end def extract_array(expr) collect_object_specifiers(expr).each do |obj_spec| if obj = variable_named(obj_spec.identifier.value) case when obj.type.array? return obj, obj_spec.identifier.value when obj.type.pointer? if obj = pointee_of(obj) and obj.type.array? return obj, obj_spec.identifier.value end end end end nil end def create_subscript_expr(expr, ary_name) expr.accept(ExpressionTransformer.new(ary_name)) end def interpreter @interp end class ExpressionTransformer < Cc1::SyntaxTreeVisitor def initialize(ary_name) @ary_name = ary_name end def visit_error_expression(node) node end def visit_object_specifier(node) if node.identifier.value == @ary_name Cc1::ConstantSpecifier.new(Token.new(:CONSTANT, "0", node.location)) else node end end def visit_constant_specifier(node) node end def visit_string_literal_specifier(node) node end def visit_null_constant_specifier(node) node end def visit_grouped_expression(node) Cc1::GroupedExpression.new(node.expression.accept(self)) end def visit_array_subscript_expression(node) Cc1::ArraySubscriptExpression.new(node.expression.accept(self), node.array_subscript.accept(self), node.operator) end def visit_function_call_expression(node) Cc1::FunctionCallExpression.new( node.expression.accept(self), node.argument_expressions.map { |expr| expr.accept(self) }, node.operator) end def visit_member_access_by_value_expression(node) Cc1::MemberAccessByValueExpression.new( node.expression.accept(self), node.identifier, node.operator) end def visit_member_access_by_pointer_expression(node) Cc1::MemberAccessByPointerExpression.new( node.expression.accept(self), node.identifier, node.operator) end def visit_bit_access_by_value_expression(node) Cc1::BitAccessByValueExpression.new( node.expression.accept(self), node.constant, node.operator) end def visit_bit_access_by_pointer_expression(node) Cc1::BitAccessByPointerExpression.new( node.expression.accept(self), node.constant, node.operator) end def visit_postfix_increment_expression(node) # NOTE: The postfix-increment-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PrefixDecrementExpression.new( Token.new("--", "--", node.operator.location), node.operand.accept(self)) end def visit_postfix_decrement_expression(node) # NOTE: The postfix-decrement-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PrefixIncrementExpression.new( Token.new("++", "++", node.operator.location), node.operand.accept(self)) end def visit_compound_literal_expression(node) Cc1::CompoundLiteralExpression.new( node.type_name, node.initializers.map { |init| init.accept(self) }, node.operator) end def visit_prefix_increment_expression(node) # NOTE: The prefix-increment-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PostfixDecrementExpression.new( Token.new("--", "--", node.operator.location), node.operand.accept(self)) end def visit_prefix_decrement_expression(node) # NOTE: The prefix-decrement-expression is already evaluated with # side-effect. # To rollback the side-effect, create an inverted expression. Cc1::PostfixIncrementExpression.new( Token.new("++", "++", node.operator.location), node.operand.accept(self)) end def visit_address_expression(node) Cc1::AddressExpression.new( node.operator, node.operand.accept(self)) end def visit_indirection_expression(node) Cc1::IndirectionExpression.new( node.operator, node.operand.accept(self)) end def visit_unary_arithmetic_expression(node) Cc1::UnaryArithmeticExpression.new( node.operator, node.operand.accept(self)) end def visit_sizeof_expression(node) Cc1::SizeofExpression.new(node.operator, node.operand.accept(self)) end def visit_sizeof_type_expression(node) node end def visit_alignof_expression(node) Cc1::AlignofExpression.new(node.operator, node.operand.accept(self)) end def visit_alignof_type_expression(node) node end def visit_cast_expression(node) Cc1::CastExpression.new(node.type_name, node.operand.accept(self)) end def visit_multiplicative_expression(node) Cc1::MultiplicativeExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_additive_expression(node) Cc1::AdditiveExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_shift_expression(node) Cc1::ShiftExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_relational_expression(node) Cc1::RelationalExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_equality_expression(node) Cc1::EqualityExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_and_expression(node) Cc1::AndExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_exclusive_or_expression(node) Cc1::ExclusiveOrExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_inclusive_or_expression(node) Cc1::InclusiveOrExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_logical_and_expression(node) Cc1::LogicalAndExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_logical_or_expression(node) Cc1::LogicalOrExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_conditional_expression(node) Cc1::ConditionalExpression.new(node.condition.accept(self), node.then_expression.accept(self), node.else_expression.accept(self), Token.new("?", "?", node.location)) end def visit_simple_assignment_expression(node) Cc1::SimpleAssignmentExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_compound_assignment_expression(node) Cc1::CompoundAssignmentExpression.new(node.operator, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_comma_separated_expression(node) exprs = node.expressions.map { |expr| expr.accept(self) } transformed = Cc1::CommaSeparatedExpression.new(exprs.shift) exprs.each { |expr| transformed.expressions.push(expr) } transformed end def visit_initializer(node) case when node.expression Cc1::Initializer.new(node.expression.accept(self), nil) when node.initializers Cc1::Initializer.new( nil, node.initializers.map { |i| i.accept(self) }) end end end private_constant :ExpressionTransformer end class W0747 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_short_t end def to_type signed_char_t end end class W0748 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_short_t end def to_type unsigned_char_t end end class W0749 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type signed_char_t end end class W0750 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_int_t end def to_type signed_short_t end end class W0751 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type unsigned_char_t end end class W0752 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_int_t end def to_type unsigned_short_t end end class W0753 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type signed_char_t end end class W0754 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type signed_short_t end end class W0755 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_t end def to_type signed_int_t end end class W0756 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type unsigned_char_t end end class W0757 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type unsigned_short_t end end class W0758 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_t end def to_type unsigned_int_t end end class W0759 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type signed_char_t end end class W0760 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type signed_short_t end end class W0761 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type signed_int_t end end class W0762 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type signed_long_long_t end def to_type signed_long_t end end class W0763 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type unsigned_char_t end end class W0764 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type unsigned_short_t end end class W0765 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type unsigned_int_t end end class W0766 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type unsigned_long_long_t end def to_type unsigned_long_t end end class W0767 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type float_t end end class W0768 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type float_t end end class W0769 < W0119 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type double_t end end class W0771 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_declared += T(:declare_variable) interp.on_explicit_function_declared += T(:declare_function) interp.on_translation_unit_ended += M(:check) @obj_dcls = Hash.new { |hash, key| hash[key] = [] } end private def declare_variable(var_dcl, var) if var.named? && var.declared_as_extern? @obj_dcls[var.name].push(var_dcl) end end def declare_function(fun_dcl, fun) if fun.named? && fun.declared_as_extern? @obj_dcls[fun.name].push(fun_dcl) end end def check(*) @obj_dcls.each_value do |dcls| similar_dcls = dcls.uniq { |dcl| dcl.location.fpath } next unless similar_dcls.size > 1 similar_dcls.each do |dcl| W(dcl.location, dcl.identifier.value, *similar_dcls.map { |pair_dcl| next if pair_dcl == dcl C(:C0001, pair_dcl.location, pair_dcl.identifier.value) }.compact) end end end end class W0774 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type float_t end end class W0775 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type float_t end end class W0776 < W0255 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type long_double_t end def to_type double_t end end class W0777 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_implicit_conv_performed += T(:check) @interp.on_function_started += T(:clear_rvalues) @interp.on_additive_expr_evaled += T(:handle_additive) @interp.on_multiplicative_expr_evaled += T(:handle_multiplicative) @rvalues = nil end private def check(*, orig_var, rslt_var) return unless @rvalues && orig_var.type.floating? case expr = @rvalues[orig_var] when Cc1::AdditiveExpression, Cc1::MultiplicativeExpression if orig_var.type.same_as?(from_type) && rslt_var.type.same_as?(to_type) W(expr.location) end end end def clear_rvalues(*) @rvalues = {} end def handle_additive(expr, *, rslt_var) memorize_rvalue_derivation(rslt_var, expr) end def handle_multiplicative(expr, *, rslt_var) unless expr.operator.type == "%" memorize_rvalue_derivation(rslt_var, expr) end end def memorize_rvalue_derivation(rvalue_holder, expr) @rvalues[rvalue_holder] = expr if @rvalues end def from_type float_t end def to_type double_t end def interpreter @interp end end class W0778 < W0777 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type long_double_t end end class W0779 < W0777 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type long_double_t end end class W0780 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_shift_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, *) op = expr.operator.type return unless op == "<<" || op == "<<=" if lhs_var.type.unsigned? && constant_expression?(expr) if must_overflow?(lhs_var, rhs_var) W(expr.location) end end end def must_overflow?(lhs_var, rhs_var) unbound_val = lhs_var.value << rhs_var.value lhs_max_val = scalar_value_of(lhs_var.type.max) unbound_val.test_must_be_greater_than(lhs_max_val).true? end def interpreter @interp end end class W0781 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_switch_statement += T(:enter_switch_statement) trav.leave_switch_statement += T(:check) trav.enter_case_labeled_statement += T(:add_exec_path) trav.enter_default_labeled_statement += T(:add_exec_path) @exec_path_nums = [] end private def enter_switch_statement(*) @exec_path_nums.push(0) end def check(node) if exec_path_num = @exec_path_nums.last and exec_path_num < 2 W(node.location) end @exec_path_nums.pop end def add_exec_path(node) @exec_path_nums[-1] += 1 if node.executed? end end class W0783 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_conv_performed += T(:check) end private def check(expr, orig_var, rslt_var) from_type = orig_var.type.unqualify to_type = rslt_var.type.unqualify return unless from_type.pointer? && to_type.pointer? unless from_type.base_type.void? || to_type.base_type.void? if from_type.base_type.incomplete? || to_type.base_type.incomplete? W(expr.location) end end end end class W0785 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_struct_declared += T(:check) interp.on_union_declared += T(:check) interp.on_enum_declared += T(:check) @tag_names = Set.new end private def check(type_dcl) # NOTE: Unique autogenerated tag name is assigned to the unnamed # struct/union/enum declarations in parsing phase. tag_name = type_dcl.identifier.value W(type_dcl.location, tag_name) if @tag_names.include?(tag_name) @tag_names.add(tag_name) end end class W0786 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_struct_type_declaration += T(:check) trav.enter_union_type_declaration += T(:check) @interp = phase_ctxt[:cc1_interpreter] end private def check(node) node.struct_declarations.each do |struct_dcl| struct_dcl.items.each do |memb_dcl| type = memb_dcl.type next unless type.scalar? && type.integer? && type.bitfield? unless type.base_type.same_as?(int_t) || type.base_type.same_as?(unsigned_int_t) || type.base_type.same_as?(signed_int_t) W(node.location) return end end end end def interpreter @interp end end class W0787 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_declared += T(:check_object_dcl) interp.on_variable_defined += T(:check_object_dcl) interp.on_explicit_function_declared += T(:check_object_dcl) interp.on_explicit_function_defined += T(:check_object_dcl) interp.on_typedef_declared += T(:check_typedef_dcl) interp.on_enum_declared += T(:check_enum_dcl) interp.on_block_started += T(:enter_scope) interp.on_block_ended += T(:leave_scope) @obj_dcls = [Hash.new { |hash, key| hash[key] = [] }] @typedef_dcls = [Hash.new { |hash, key| hash[key] = [] }] @enum_names = [Hash.new { |hash, key| hash[key] = [] }] @obj_dcls_in_other_scope = Hash.new { |hash, key| hash[key] = [] } @typedef_dcls_in_other_scope = Hash.new { |hash, key| hash[key] = [] } @enum_names_in_other_scope = Hash.new { |hash, key| hash[key] = [] } end private def check_object_dcl(obj_dcl, obj) return unless obj.declared_as_extern? name = obj_dcl.identifier.value type = obj_dcl.type pairs = @obj_dcls_in_other_scope[name].select { |dcl| dcl.type != type } + @typedef_dcls_in_other_scope[name] + @enum_names_in_other_scope[name] unless pairs.empty? W(obj_dcl.location, name, *pairs.map { |pair| C(:C0001, pair.location, pair.identifier.value) }) end @obj_dcls.last[name].push(obj_dcl) end def check_typedef_dcl(typedef_dcl) name = typedef_dcl.identifier.value type = typedef_dcl.type pairs = @obj_dcls_in_other_scope[name] + @typedef_dcls_in_other_scope[name].select { |dcl| dcl.type != type } + @enum_names_in_other_scope[name] unless pairs.empty? W(typedef_dcl.location, name, *pairs.map { |pair| C(:C0001, pair.location, pair.identifier.value) }) end @typedef_dcls.last[name].push(typedef_dcl) end def check_enum_dcl(enum_dcl) enum_dcl.enumerators.each { |enum| check_enumerator(enum) } end def check_enumerator(enum) name = enum.identifier.value pairs = @obj_dcls_in_other_scope[name] + @typedef_dcls_in_other_scope[name] + @enum_names_in_other_scope[name] unless pairs.empty? W(enum.location, name, *pairs.map { |pair| C(:C0001, pair.location, pair.identifier.value) }) end @enum_names.last[name].push(enum) end def enter_scope(*) @obj_dcls.push(Hash.new { |hash, key| hash[key] = [] }) @typedef_dcls.push(Hash.new { |hash, key| hash[key] = [] }) @enum_names.push(Hash.new { |hash, key| hash[key] = [] }) end def leave_scope(*) @obj_dcls.last.each do |name, dcls| @obj_dcls_in_other_scope[name].concat(dcls) end @obj_dcls.pop @typedef_dcls.last.each do |name, dcls| @typedef_dcls_in_other_scope[name].concat(dcls) end @typedef_dcls.pop @enum_names.last.each do |name, enums| @enum_names_in_other_scope[name].concat(enums) end @enum_names.pop end end class W0788 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_declared += T(:check_object_dcl) interp.on_variable_defined += T(:check_object_dcl) interp.on_explicit_function_declared += T(:check_object_dcl) interp.on_explicit_function_defined += T(:check_object_dcl) interp.on_typedef_declared += T(:check_typedef_dcl) interp.on_enum_declared += T(:check_enum_dcl) interp.on_block_started += T(:enter_scope) interp.on_block_ended += T(:leave_scope) @obj_dcls = [Hash.new { |hash, key| hash[key] = [] }] @typedef_dcls = [Hash.new { |hash, key| hash[key] = [] }] @enum_names = [Hash.new { |hash, key| hash[key] = [] }] end private def check_object_dcl(obj_dcl, *) name = obj_dcl.identifier.value type = obj_dcl.type pairs = @obj_dcls.last[name].select { |dcl| dcl.type != type } + @typedef_dcls.last[name] + @enum_names.last[name] unless pairs.empty? W(obj_dcl.location, name, *pairs.map { |pair| C(:C0001, pair.location, pair.identifier.value) }) end @obj_dcls.last[name].push(obj_dcl) end def check_typedef_dcl(typedef_dcl) name = typedef_dcl.identifier.value type = typedef_dcl.type pairs = @obj_dcls.last[name] + @typedef_dcls.last[name].select { |dcl| dcl.type != type } + @enum_names.last[name] unless pairs.empty? W(typedef_dcl.location, name, *pairs.map { |pair| C(:C0001, pair.location, pair.identifier.value) }) end @typedef_dcls.last[name].push(typedef_dcl) end def check_enum_dcl(enum_dcl) enum_dcl.enumerators.each { |enum| check_enumerator(enum) } end def check_enumerator(enum) name = enum.identifier.value pairs = @obj_dcls.last[name] + @typedef_dcls.last[name] + @enum_names.last[name] unless pairs.empty? W(enum.location, name, *pairs.map { |pair| C(:C0001, pair.location, pair.identifier.value) }) end @enum_names.last[name].push(enum) end def enter_scope(*) @obj_dcls.push(Hash.new { |hash, key| hash[key] = [] }) @typedef_dcls.push(Hash.new { |hash, key| hash[key] = [] }) @enum_names.push(Hash.new { |hash, key| hash[key] = [] }) end def leave_scope(*) @obj_dcls.pop @typedef_dcls.pop @enum_names.pop end end class W0789 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_declared += T(:check_object_dcl) interp.on_variable_defined += T(:check_object_dcl) interp.on_explicit_function_declared += T(:check_object_dcl) interp.on_explicit_function_defined += T(:check_object_dcl) interp.on_typedef_declared += T(:check_typedef_dcl) interp.on_enum_declared += T(:check_enum_dcl) interp.on_block_started += T(:enter_scope) interp.on_block_ended += T(:leave_scope) @obj_dcls = [Hash.new { |hash, key| hash[key] = [] }] @typedef_dcls = [Hash.new { |hash, key| hash[key] = [] }] @enum_names = [Hash.new { |hash, key| hash[key] = [] }] end private def check_object_dcl(obj_dcl, *) name = obj_dcl.identifier.value type = obj_dcl.type pairs = merge_upper_scopes(name, @obj_dcls).select { |dcl| dcl.type != type } + merge_upper_scopes(name, @typedef_dcls) + merge_upper_scopes(name, @enum_names) unless pairs.empty? W(obj_dcl.location, name, *pairs.map { |pair| C(:C0001, pair.location, pair.identifier.value) }) end @obj_dcls.last[name].push(obj_dcl) end def check_typedef_dcl(typedef_dcl) name = typedef_dcl.identifier.value type = typedef_dcl.type pairs = merge_upper_scopes(name, @obj_dcls) + merge_upper_scopes(name, @typedef_dcls).select { |dcl| dcl.type != type } + merge_upper_scopes(name, @enum_names) unless pairs.empty? W(typedef_dcl.location, name, *pairs.map { |pair| C(:C0001, pair.location, pair.identifier.value) }) end @typedef_dcls.last[name].push(typedef_dcl) end def check_enum_dcl(enum_dcl) enum_dcl.enumerators.each { |enum| check_enumerator(enum) } end def check_enumerator(enum) name = enum.identifier.value pairs = merge_upper_scopes(name, @obj_dcls) + merge_upper_scopes(name, @typedef_dcls) + merge_upper_scopes(name, @enum_names) unless pairs.empty? W(enum.location, name, *pairs.map { |pair| C(:C0001, pair.location, pair.identifier.value) }) end @enum_names.last[name].push(enum) end def enter_scope(*) @obj_dcls.push(Hash.new { |hash, key| hash[key] = [] }) @typedef_dcls.push(Hash.new { |hash, key| hash[key] = [] }) @enum_names.push(Hash.new { |hash, key| hash[key] = [] }) end def leave_scope(*) @obj_dcls.pop @typedef_dcls.pop @enum_names.pop end def merge_upper_scopes(name, scoped_hash) scoped_hash[0..-2].reduce([]) { |scopes, hash| scopes + hash[name] } end end class W0790 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:check) interp.on_explicit_function_defined += T(:check) @global_names = Hash.new { |hash, key| hash[key] = [] } end private def check(var_or_fun_def, obj) if obj.declared_as_extern? name = var_or_fun_def.identifier if @global_names.include?(name.value) W(var_or_fun_def.location, name.value, *@global_names[name.value].map { |pair_name| C(:C0001, pair_name.location, pair_name.value) }) end @global_names[name.value].push(name) end end end class W0792 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_conv_performed += T(:check) end private def check(expr, orig_var, rslt_var) lhs_type = orig_var.type.unqualify rhs_type = rslt_var.type.unqualify case when lhs_type.floating? && rhs_type.pointer? && rhs_type.base_type.function? W(expr.location) when rhs_type.floating? && lhs_type.pointer? && lhs_type.base_type.function? W(expr.location) end end end class W0793 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_conv_performed += T(:check) end private def check(expr, orig_var, rslt_var) lhs_type = orig_var.type.unqualify rhs_type = rslt_var.type.unqualify if lhs_type.pointer? && rhs_type.pointer? case when lhs_type.base_type.void? || rhs_type.base_type.void? # NOTE: Nothing to be done with conversion between `void *' and any # pointer and between `void *' and `void *'. when lhs_type.base_type.function? && !rhs_type.base_type.function?, rhs_type.base_type.function? && !lhs_type.base_type.function? W(expr.location) end end end end class W0794 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_shift_expr_evaled += T(:check) end private def check(expr, lhs_var, *) case expr.operator.type when "<<", "<<=" unless constant_expression?(expr.lhs_operand) W(expr.location) if lhs_var.type.signed? end end end def interpreter @interp end end class W0795 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) end private def check(funcall_expr, fun, arg_vars, *) if proto = prototype_declaration_of(fun) param_types = proto.type.parameter_types if arg_vars.size < param_types.select { |type| !type.void? }.size W(funcall_expr.location) end end end def prototype_declaration_of(fun) fun.declarations_and_definitions.find do |dcl_or_def| dcl_or_def.kind_of?(Cc1::FunctionDeclaration) end end end class W0796 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) end private def check(funcall_expr, fun, arg_vars, *) if proto = prototype_declaration_of(fun) return if proto.type.have_va_list? param_types = proto.type.parameter_types if !param_types.empty? && arg_vars.size > param_types.select { |type| !type.void? }.size W(funcall_expr.location) end end end def prototype_declaration_of(fun) fun.declarations_and_definitions.find do |dcl_or_def| dcl_or_def.kind_of?(Cc1::FunctionDeclaration) end end end class W0797 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) end private def check(funcall_expr, fun, arg_vars, *) unless prototype_declaration_of(fun) if fun_def = kandr_style_definition_of(fun) case fun_dcr = fun_def.function_declarator when Cc1::KandRFunctionDeclarator param_num = fun_dcr.identifier_list.size else return end W(funcall_expr.location) unless arg_vars.size == param_num end end end def prototype_declaration_of(fun) fun.declarations_and_definitions.find do |dcl_or_def| dcl_or_def.kind_of?(Cc1::FunctionDeclaration) end end def kandr_style_definition_of(fun) fun.declarations_and_definitions.find do |dcl_or_def| dcl_or_def.kind_of?(Cc1::KandRFunctionDefinition) end end end class W0798 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_indirection_expr_evaled += T(:check_indirection) interp.on_member_access_expr_evaled += T(:check_member_access) interp.on_array_subscript_expr_evaled += T(:check_array_subscript) end private def check_indirection(expr, var, *) if var.type.pointer? base_type = var.type.unqualify.base_type if base_type.union? && base_type.incomplete? W(expr.location) end end end def check_member_access(expr, outer_var, *) if outer_var.type.pointer? base_type = outer_var.type.unqualify.base_type if base_type.union? && base_type.incomplete? W(expr.location) end end end def check_array_subscript(expr, ary_or_ptr, *) if ary_or_ptr.type.pointer? base_type = ary_or_ptr.type.unqualify.base_type if base_type.union? && base_type.incomplete? W(expr.location) end end end end class W0799 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_indirection_expr_evaled += T(:check_indirection) interp.on_member_access_expr_evaled += T(:check_member_access) interp.on_array_subscript_expr_evaled += T(:check_array_subscript) end private def check_indirection(expr, var, *) if var.type.pointer? base_type = var.type.unqualify.base_type if base_type.struct? && base_type.incomplete? W(expr.location) end end end def check_member_access(expr, outer_var, *) if outer_var.type.pointer? base_type = outer_var.type.unqualify.base_type if base_type.struct? && base_type.incomplete? W(expr.location) end end end def check_array_subscript(expr, ary_or_ptr, *) if ary_or_ptr.type.pointer? base_type = ary_or_ptr.type.unqualify.base_type if base_type.struct? && base_type.incomplete? W(expr.location) end end end end class W0800 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:check) end private def check(var_def, var) unless var.declared_as_extern? W(var_def.location, var.name) if var.type.incomplete? end end end class W0801 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_struct_type_declaration += T(:check) trav.enter_union_type_declaration += T(:check) end private def check(node) W(node.location) if node.type.members.none? { |memb| memb.named? } end end class W0809 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_function_declaration += T(:check_function_name) trav.enter_variable_declaration += T(:check_variable_name) trav.enter_variable_definition += T(:check_variable_name) trav.enter_parameter_definition += T(:check_variable_name) trav.enter_typedef_declaration += T(:check_typedef_name) trav.enter_struct_type_declaration += T(:check_tag_name) trav.enter_union_type_declaration += T(:check_tag_name) trav.enter_enum_type_declaration += T(:check_tag_name) trav.enter_enumerator += T(:check_enumerator_name) trav.enter_kandr_function_definition += T(:enter_function) trav.enter_ansi_function_definition += T(:enter_function) trav.leave_kandr_function_definition += T(:leave_function) trav.leave_ansi_function_definition += T(:leave_function) @fun_def_level = 0 end private def check_function_name(fun_dcl) check_object_name(fun_dcl) end def check_variable_name(var_dcl_or_def) check_object_name(var_dcl_or_def) end def check_typedef_name(typedef_dcl) if typedef_dcl.identifier case name = typedef_dcl.identifier.value when /\A__/, /\A_[A-Z]/, /\A_/ W(typedef_dcl.location, name) end end end def check_tag_name(type_dcl) if type_dcl.identifier case name = type_dcl.identifier.value when /\A__adlint/ # NOTE: To ignore AdLint internal tag names. when /\A__/, /\A_[A-Z]/, /\A_/ W(type_dcl.location, name) end end end def check_enumerator_name(enum) if enum.identifier case name = enum.identifier.value when /\A__/, /\A_[A-Z]/, /\A_/ W(enum.location, name) end end end def enter_function(node) check_object_name(node) @fun_def_level += 1 end def leave_function(node) @fun_def_level -= 1 end def check_object_name(dcl_or_def) if dcl_or_def.identifier case name = dcl_or_def.identifier.value when /\A__/, /\A_[A-Z]/ W(dcl_or_def.location, name) when /\A_/ check_filelocal_object_name(name, dcl_or_def) end end end def check_filelocal_object_name(name, dcl_or_def) if @fun_def_level == 0 if sc_spec = dcl_or_def.storage_class_specifier if sc_spec.type == :STATIC W(dcl_or_def.location, name) end end end end end class W0810 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_if_statement += T(:enter_outer_if_stmt) trav.leave_if_statement += T(:leave_outer_if_stmt) trav.enter_if_else_statement += T(:check_inner_if_else_stmt) @if_stmt_stack = [] end private def enter_outer_if_stmt(if_stmt) @if_stmt_stack.push(if_stmt) end def leave_outer_if_stmt(*) @if_stmt_stack.pop end def check_inner_if_else_stmt(*) if outer_if_stmt = @if_stmt_stack.last and !outer_if_stmt.statement.kind_of?(Cc1::CompoundStatement) W(outer_if_stmt.location) end end end class W0827 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_variable_definition += T(:enter_variable_definition) end private def enter_variable_definition(node) if outmost_init = node.initializer if inits = outmost_init.initializers case when node.type.array? check(node.type.base_type, inits.first) when node.type.struct? node.type.members.zip(inits).each do |memb, init| check(memb.type, init) if init end end end end end def check(type, init) return unless init if inits = init.initializers case when type.array? check(type.base_type, inits.first) when type.struct? type.members.zip(inits).each { |m, i| i and check(m.type, i) } end else W(init.location) if type.struct? end end end class W0828 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_variable_definition += T(:enter_variable_definition) end private def enter_variable_definition(node) if outmost_init = node.initializer if inits = outmost_init.initializers case when node.type.array? check(node.type.base_type, inits.first) when node.type.struct? node.type.members.zip(inits).each do |memb, init| check(memb.type, init) if init end end end end end def check(type, init) return unless init case when inits = init.initializers case when type.array? check(type.base_type, inits.first) when type.struct? type.members.zip(inits).each { |m, i| i and check(m.type, i) } end when init.expression.kind_of?(Cc1::StringLiteralSpecifier) else W(init.location) if type.array? end end end class W0830 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_enum_specifier += T(:check) end private def check(enum_spec) if extra_comma = enum_spec.trailing_comma W(extra_comma.location) end end end class W0833 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_constant_referred += T(:check) end private def check(const_spec, *) if const_spec.constant.value =~ /LL/i W(const_spec.location) end end end class W0834 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: W0834 may be duplicative on a function-definition because # function-definition has both parameter-declarations and # parameter-definitions. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_member_declaration += T(:check_member_dcl) trav.enter_typedef_declaration += T(:check_dcl_spec_holder) trav.enter_function_declaration += T(:check_dcl_spec_holder) trav.enter_parameter_declaration += T(:check_dcl_spec_holder) trav.enter_variable_declaration += T(:check_dcl_spec_holder) trav.enter_variable_definition += T(:check_dcl_spec_holder) trav.enter_ansi_function_definition += T(:check_dcl_spec_holder) trav.enter_kandr_function_definition += T(:check_dcl_spec_holder) trav.enter_parameter_definition += T(:check_dcl_spec_holder) trav.enter_type_name += T(:check_type_name) end private def check_member_dcl(node) type_specs = node.specifier_qualifier_list.type_specifiers if fst_ts = type_specs.first node.type.accept(Visitor.new(@phase_ctxt, fst_ts.location)) end end def check_type_name(node) type_specs = node.specifier_qualifier_list.type_specifiers if fst_ts = type_specs.first node.type.accept(Visitor.new(@phase_ctxt, fst_ts.location)) end end def check_dcl_spec_holder(dcl_spec_holder) type_specs = dcl_spec_holder.type_specifiers if fst_ts = type_specs.first dcl_spec_holder.type.accept(Visitor.new(@phase_ctxt, fst_ts.location)) end end class Visitor < Cc1::TypeVisitor include ReportUtil def initialize(phase_ctxt, loc) @phase_ctxt = phase_ctxt @location = loc end def visit_long_long_type(*) W(@location) end def visit_signed_long_long_type(*) W(@location) end def visit_unsigned_long_long_type(*) W(@location) end def visit_long_long_int_type(*) W(@location) end def visit_signed_long_long_int_type(*) W(@location) end def visit_unsigned_long_long_int_type(*) W(@location) end def visit_function_type(type) type.return_type.accept(self) end def visit_struct_type(*) end def visit_union_type(*) end private extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def suppressors @phase_ctxt[:suppressors] end end private_constant :Visitor end class W0947 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_string_literal_specifier += T(:check) end private def check(str_lit_spec) W(str_lit_spec.location) unless str_lit_spec.literal.replaced? end end class W0948 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_constant_specifier += T(:check) end private def check(const_spec) if const_spec.character? && !const_spec.constant.replaced? W(const_spec.location, const_spec.constant.value) end end end class W0949 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator include Cc1::InterpreterOptions # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_struct_declarator += T(:check) @interp = Cc1::Interpreter.new(phase_ctxt[:cc1_type_table]) end private def check(node) if node.kind_of?(Cc1::StructDeclarator) if expr = node.expression and expr.kind_of?(Cc1::ConstantSpecifier) && !expr.constant.replaced? bitfield_width = compute_bitfield_width(expr) W(expr.location, expr.constant.value) if bitfield_width > 1 end end end def compute_bitfield_width(expr) obj = interpret(expr, QUIET) if obj.variable? && obj.value.scalar? obj.value.unique_sample || 0 else 0 end end def interpreter @interp end end class W0950 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::SyntaxNodeCollector # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_variable_definition += T(:check) end private def check(var_def) return unless var_def.type.array? dcr = var_def.init_declarator.declarator ary_dcrs = collect_array_declarators(dcr) ary_dcrs.each do |ary_dcr| if expr = ary_dcr.size_expression const_specs = collect_constant_specifiers(expr) if immediate = const_specs.find { |cs| !cs.constant.replaced? } W(immediate.location, immediate.to_s) end end end end end class W1026 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) end private def check(expr, fun, arg_vars, *) arg_exprs = expr.argument_expressions arg_exprs.zip(arg_vars).each_with_index do |(arg_expr, var), idx| W(arg_expr.location, idx + 1) if var.type.incomplete? end end end class W1027 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:check) interp.on_variable_declared += T(:check) end private def check(dcl_or_def, var) W(dcl_or_def.location) if var.type.array? && var.type.base_type.function? end end class W1028 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:check) interp.on_variable_declared += T(:check) end private def check(dcl_or_def, var) if var.type.array? type = var.type.base_type while type.array? if type.length type = type.base_type else W(dcl_or_def.location) break end end end end end class W1029 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:check) interp.on_variable_declared += T(:check) end private def check(dcl_or_def, var) if var.type.array? if var.type.base_type.composite? || var.type.base_type.void? W(dcl_or_def.location) if var.type.base_type.incomplete? end end end end class W1030 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_generic_labeled_statement += T(:check) trav.enter_ansi_function_definition += T(:enter_function) trav.leave_ansi_function_definition += T(:leave_function) trav.enter_kandr_function_definition += T(:enter_function) trav.leave_kandr_function_definition += T(:leave_function) @labels = nil end private def check(labeled_stmt) if @labels if @labels.include?(labeled_stmt.label.value) W(labeled_stmt.label.location, labeled_stmt.label.value) else @labels.add(labeled_stmt.label.value) end end end def enter_function(*) @labels = Set.new end def leave_function(*) @labels = nil end end class W1031 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_declared += T(:declare_variable) interp.on_variable_defined += T(:define_variable) interp.on_explicit_function_declared += T(:declare_function) interp.on_explicit_function_defined += T(:define_function) end private def declare_variable(var_dcl, var) if var.named? case when var.declared_as_extern? sc_spec = var_dcl.storage_class_specifier if sc_spec && sc_spec.type == :STATIC W(var_dcl.location, var.name) end when var.declared_as_static? sc_spec = var_dcl.storage_class_specifier if sc_spec && sc_spec.type == :EXTERN W(var_dcl.location, var.name) end end end end def define_variable(var_def, var) if var.named? case when var.declared_as_extern? sc_spec = var_def.storage_class_specifier if sc_spec && sc_spec.type == :STATIC W(var_def.location, var.name) end when var.declared_as_static? sc_spec = var_def.storage_class_specifier if sc_spec && sc_spec.type == :EXTERN W(var_def.location, var.name) end end end end def declare_function(fun_dcl, fun) if fun.named? case when fun.declared_as_extern? sc_spec = fun_dcl.storage_class_specifier if sc_spec && sc_spec.type == :STATIC W(fun_dcl.location, fun.name) end when fun.declared_as_static? sc_spec = fun_dcl.storage_class_specifier if sc_spec && sc_spec.type == :EXTERN W(fun_dcl.location, fun.name) end end end end def define_function(fun_def, fun) if fun.named? case when fun.declared_as_extern? sc_spec = fun_def.storage_class_specifier if sc_spec && sc_spec.type == :STATIC W(fun_def.location, fun.name) end when fun.declared_as_static? sc_spec = fun_def.storage_class_specifier if sc_spec && sc_spec.type == :EXTERN W(fun_def.location, fun.name) end end end end end class W1032 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:check) end private def check(var_def, var) if var.declared_as_static? && var.type.incomplete? W(var_def.location, var.name) end end end class W1033 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:check) trav.enter_kandr_function_definition += T(:check) trav.enter_function_declaration += T(:check) end private def check(dcl_or_def) if ret_type = dcl_or_def.type.return_type if ret_type.const? || ret_type.volatile? W(dcl_or_def.location) end end end end class W1034 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_function_declaration += T(:check) trav.enter_compound_statement += T(:enter_block) trav.leave_compound_statement += T(:leave_block) @block_level = 0 end private def check(dcl) if @block_level > 0 if sc_spec = dcl.storage_class_specifier and sc_spec.type == :STATIC W(dcl.location, dcl.identifier.value) end end end def enter_block(*) @block_level += 1 end def leave_block(*) @block_level -= 1 end end class W1039 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) @environ = interp.environment end private def check(expr, fun, arg_vars, *) if fun.named? case fun.name when /\A.*printf\z/ check_printf_format(expr, arg_vars) when /\A.*scanf\z/ check_scanf_format(expr, arg_vars) end end end def check_printf_format(expr, arg_vars) if fmt = create_printf_format(expr, arg_vars) fmt.conversion_specifiers.each_with_index do |conv_spec, idx| W(fmt.location, idx + 1) if conv_spec.length_modifier == "ll" end end end def check_scanf_format(expr, arg_vars) if fmt = create_scanf_format(expr, arg_vars) fmt.conversion_specifiers.each_with_index do |conv_spec, idx| W(fmt.location, idx + 1) if conv_spec.length_modifier == "ll" end end end def create_printf_format(expr, arg_vars) if fmt_idx = format_arg_index_of(expr) fmt_arg = expr.argument_expressions[fmt_idx] if fmt_arg && fmt_arg.literal.value =~ /\AL?"(.*)"\z/i loc = fmt_arg.location args = arg_vars.drop(fmt_idx + 1) || [] return Cc1::PrintfFormat.new($1, loc, args, @environ) end end nil end def create_scanf_format(expr, arg_vars) if fmt_idx = format_arg_index_of(expr) fmt_arg = expr.argument_expressions[fmt_idx] if fmt_arg && fmt_arg.literal.value =~ /\AL?"(.*)"\z/i loc = fmt_arg.location args = arg_vars.drop(fmt_idx + 1) || [] return Cc1::ScanfFormat.new($1, loc, args, @environ) end end nil end def format_arg_index_of(funcall_expr) funcall_expr.argument_expressions.index do |arg_expr| arg_expr.kind_of?(Cc1::StringLiteralSpecifier) end end end class W1047 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator include Cc1::SyntaxNodeCollector # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_variable_initialized += T(:check) end private def check(var_def, *) type = var_def.type return unless type.struct? || type.union? || type.array? if init = var_def.initializer Cc1::ExpressionExtractor.new.tap { |extr| init.accept(extr) }.expressions.each do |expr| unless constant_expression?(expr) W(var_def.location) break end end end end def interpreter @interp end end class W1049 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_explicit_conv_performed += T(:check) end private def check(expr, orig_var, rslt_var) orig_type = orig_var.type rslt_type = rslt_var.type unless orig_type.scalar? && orig_type.integer? && rslt_type.scalar? && rslt_type.integer? && rslt_type.signed? return end orig_val = orig_var.value return unless orig_val.scalar? lower_bound = scalar_value_of(rslt_type.min) if orig_val.test_must_be_less_than(lower_bound).false? test = orig_val.test_may_be_less_than(lower_bound) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) return end end upper_bound = scalar_value_of(rslt_type.max) if orig_val.test_must_be_greater_than(upper_bound).false? test = orig_val.test_may_be_greater_than(upper_bound) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end end def interpreter @interp end end class W1050 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_explicit_conv_performed += T(:check) end private def check(expr, orig_var, rslt_var) orig_type = orig_var.type rslt_type = rslt_var.type unless orig_type.scalar? && orig_type.integer? && rslt_type.scalar? && rslt_type.integer? && rslt_type.signed? return end orig_val = orig_var.value return unless orig_val.scalar? lower_bound = scalar_value_of(rslt_type.min) test = orig_val.test_must_be_less_than(lower_bound) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) return end upper_bound = scalar_value_of(rslt_type.max) test = orig_val.test_must_be_greater_than(upper_bound) if test.true? W(expr.location, *test.evidence.emit_context_messages(self, expr.location)) end end def interpreter @interp end end class W1051 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_multiplicative_expr_evaled += T(:check) @interp.on_additive_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, rslt_var) return unless lhs_var.type.scalar? && lhs_var.type.unsigned? return unless rhs_var.type.scalar? && rhs_var.type.unsigned? return unless lhs_var.value.scalar? && rhs_var.value.scalar? case expr.operator.type when "+" unbound_val = lhs_var.value + rhs_var.value when "-" unbound_val = lhs_var.value - rhs_var.value when "*" unbound_val = lhs_var.value * rhs_var.value else return end lower_test = unbound_val < scalar_value_of(rslt_var.type.min) upper_test = unbound_val > scalar_value_of(rslt_var.type.max) if lower_test.test_must_be_true.true? || upper_test.test_must_be_true.true? W(expr.location, rslt_var.type.brief_image) end end def interpreter @interp end end class W1052 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_multiplicative_expr_evaled += T(:check) @interp.on_additive_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var, rslt_var) return unless lhs_var.type.scalar? && lhs_var.type.unsigned? return unless rhs_var.type.scalar? && rhs_var.type.unsigned? return unless lhs_var.value.scalar? && rhs_var.value.scalar? case expr.operator.type when "+" unbound_val = lhs_var.value + rhs_var.value when "-" unbound_val = lhs_var.value - rhs_var.value when "*" unbound_val = lhs_var.value * rhs_var.value else return end lower_test = unbound_val < scalar_value_of(rslt_var.type.min) upper_test = unbound_val > scalar_value_of(rslt_var.type.max) if !lower_test.test_must_be_true.true? && lower_test.test_may_be_true.true? or !upper_test.test_must_be_true.true? && upper_test.test_may_be_true.true? W(expr.location, rslt_var.type.brief_image) end end def interpreter @interp end end class W1053 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_call_expr_evaled += T(:check) end private def check(expr, fun, arg_vars, *) args = arg_vars.zip(fun.type.parameter_types) args.each_with_index do |(arg_var, param_type), idx| next unless param_type && param_type.enum? arg_expr = expr.argument_expressions[idx] if constant_expression?(arg_expr) W(arg_expr.location) unless arg_var.type.enum? end end end def interpreter @interp end end class W1054 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_assignment_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var) W(expr.location) if lhs_var.type.enum? && !rhs_var.type.enum? end end class W1055 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:start_function) interp.on_function_ended += T(:end_function) interp.on_return_stmt_evaled += T(:check) @cur_fun = nil end private def start_function(*, fun) @cur_fun = fun end def end_function(*) @cur_fun = nil end def check(ret_stmt, ret_var) return unless @cur_fun && ret_var if ret_type = @cur_fun.type.return_type and ret_type.enum? unless ret_var.type.enum? W(ret_stmt.expression.location) end end end end class W1056 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_call_expr_evaled += T(:check) end private def check(expr, fun, arg_vars, *) args = arg_vars.zip(fun.type.parameter_types) args.each_with_index do |(arg_var, param_type), idx| next unless param_type && param_type.enum? arg_expr = expr.argument_expressions[idx] unless constant_expression?(arg_expr) if arg_var.type.enum? W(arg_expr.location) unless arg_var.type.same_as?(param_type) end end end end def interpreter @interp end end class W1057 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_assignment_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var) return unless lhs_var.type.enum? if rhs_var.type.enum? && !constant_expression?(expr.rhs_operand) unless lhs_var.type.same_as?(rhs_var.type) W(expr.location) end end end def interpreter @interp end end class W1058 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_started += T(:start_function) @interp.on_function_ended += T(:end_function) @interp.on_return_stmt_evaled += T(:check) @cur_fun = nil end private def start_function(*, fun) @cur_fun = fun end def end_function(*) @cur_fun = nil end def check(ret_stmt, ret_var) return unless @cur_fun && ret_var return if constant_expression?(ret_stmt.expression) if ret_type = @cur_fun.type.return_type and ret_type.enum? if ret_var.type.enum? && !ret_type.same_as?(ret_var.type) W(ret_stmt.expression.location) end end end def interpreter @interp end end class W1059 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_call_expr_evaled += T(:check) end private def check(expr, fun, arg_vars, *) args = arg_vars.zip(fun.type.parameter_types) args.each_with_index do |(arg_var, param_type), idx| if param_type && !param_type.enum? W(expr.argument_expressions[idx].location) if arg_var.type.enum? end end end end class W1060 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:start_function) interp.on_function_ended += T(:end_function) interp.on_return_stmt_evaled += T(:check) @cur_fun = nil end private def start_function(*, fun) @cur_fun = fun end def end_function(*) @cur_fun = nil end def check(ret_stmt, ret_var) return unless @cur_fun && ret_var if ret_type = @cur_fun.type.return_type and !ret_type.enum? W(ret_stmt.expression.location) if ret_var.type.enum? end end end class W1061 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_call_expr_evaled += T(:check) end private def check(expr, fun, arg_vars, *) args = arg_vars.zip(fun.type.parameter_types) args.each_with_index do |(arg_var, param_type), idx| next unless param_type && param_type.enum? arg_expr = expr.argument_expressions[idx] unless constant_expression?(arg_expr) unless arg_var.type.same_as?(param_type) W(arg_expr.location) end end end end def interpreter @interp end end class W1062 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_assignment_expr_evaled += T(:check) end private def check(expr, lhs_var, rhs_var) if lhs_var.type.enum? && !constant_expression?(expr.rhs_operand) unless lhs_var.type.same_as?(rhs_var.type) W(expr.location) end end end def interpreter @interp end end class W1063 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_function_started += T(:start_function) @interp.on_function_ended += T(:end_function) @interp.on_return_stmt_evaled += T(:check) @cur_fun = nil end private def start_function(*, fun) @cur_fun = fun end def end_function(*) @cur_fun = nil end def check(ret_stmt, ret_var) return unless @cur_fun && ret_var if ret_type = @cur_fun.type.return_type and ret_type.enum? unless constant_expression?(ret_stmt.expression) unless ret_var.type.same_as?(ret_type) W(ret_stmt.expression.location) end end end end def interpreter @interp end end class W1064 < W0731 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def check(case_stmt, ctrlexpr_var) unless switch_ctrlexpr_var = @switch_ctrlexpr_stack.last return end return unless switch_ctrlexpr_var.type.enum? W(case_stmt.expression.location) unless ctrlexpr_var.type.enum? end end class W1065 < W0731 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def check(case_stmt, ctrlexpr_var) unless switch_ctrlexpr_var = @switch_ctrlexpr_stack.last return end return unless switch_ctrlexpr_var.type.enum? if ctrlexpr_var.type.enum? expected_type = switch_ctrlexpr_var.type unless ctrlexpr_var.type.same_as?(expected_type) W(case_stmt.expression.location) end end end end class W1066 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_explicit_conv_performed += T(:check) @interp.on_function_started += T(:clear_rvalues) @interp.on_additive_expr_evaled += T(:handle_additive) @interp.on_multiplicative_expr_evaled += T(:handle_multiplicative) @rvalues = nil end private def check(*, orig_var, rslt_var) return unless @rvalues && orig_var.type.floating? case expr = @rvalues[orig_var] when Cc1::AdditiveExpression, Cc1::MultiplicativeExpression if orig_var.type.same_as?(from_type) && rslt_var.type.same_as?(to_type) W(expr.location) end end end def clear_rvalues(*) @rvalues = {} end def handle_additive(expr, *, rslt_var) memorize_rvalue_derivation(rslt_var, expr) end def handle_multiplicative(expr, *, rslt_var) unless expr.operator.type == "%" memorize_rvalue_derivation(rslt_var, expr) end end def memorize_rvalue_derivation(rvalue_holder, expr) @rvalues[rvalue_holder] = expr if @rvalues end def from_type float_t end def to_type double_t end def interpreter @interp end end class W1067 < W1066 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type float_t end def to_type long_double_t end end class W1068 < W1066 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def from_type double_t end def to_type long_double_t end end class W1069 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:enter_function) trav.enter_kandr_function_definition += T(:enter_function) trav.enter_compound_statement += T(:enter_compound_stmt) trav.leave_compound_statement += T(:leave_compound_stmt) trav.enter_if_else_statement += T(:enter_if_else_stmt) trav.leave_if_else_statement += T(:leave_if_else_stmt) @if_else_stmt_chain_stack = [] end private def enter_function(*) @if_else_stmt_chain_stack = [] end def enter_compound_stmt(*) @if_else_stmt_chain_stack.push([]) end def leave_compound_stmt(*) @if_else_stmt_chain_stack.pop end def enter_if_else_stmt(node) @if_else_stmt_chain_stack.last.push(node) if node.else_statement.kind_of?(Cc1::IfStatement) W(@if_else_stmt_chain_stack.last.first.location) end end def leave_if_else_stmt(*) @if_else_stmt_chain_stack.last.pop end end class W1070 < W0781 def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique private def check(node) if exec_path_num = @exec_path_nums.last and exec_path_num == 2 W(node.location) end @exec_path_nums.pop end def add_exec_path(*) @exec_path_nums[-1] += 1 end end class W1071 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:enter_function) interp.on_function_ended += T(:leave_function) interp.on_implicit_return_evaled += M(:memorize_implicit_termination) interp.on_return_stmt_evaled += T(:memorize_termination) @cur_fun = nil @term_points = 0 end private def enter_function(fun_def, *) @cur_fun = fun_def @term_points = 0 end def leave_function(*) if @cur_fun && @term_points > 1 W(@cur_fun.location, @cur_fun.identifier.value) end @cur_fun = nil end def memorize_implicit_termination(loc) if loc.in_analysis_target?(traits) memorize_termination end end def memorize_termination(*) @term_points += 1 if @cur_fun end end class W1072 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_goto_statement += T(:warn_goto) end private def warn_goto(node) W(node.location) end end class W1073 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:enter_function) interp.on_function_ended += T(:leave_function) interp.on_function_call_expr_evaled += T(:add_return_value) interp.on_variable_value_referred += T(:refer_return_value) @cur_fun = nil @ret_vals = nil end private def enter_function(fun_def, *) @cur_fun = fun_def @ret_vals = {} end def leave_function(*) if @cur_fun @ret_vals.each_value do |rec| unless rec[0] fun_name = rec[2].named? ? rec[2].name : "(anon)" W(rec[1].location, fun_name) end end end @cur_fun = nil @ret_vals = nil end def add_return_value(expr, fun, *, rslt_var) if @cur_fun unless fun.type.return_type.void? @ret_vals[rslt_var] = [false, expr, fun] end end end def refer_return_value(expr, var) if @cur_fun if rec = @ret_vals[var] rec[0] = true end end end end class W1074 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_sizeof_expression += T(:check) end private def check(expr) W(expr.operand.location) if expr.operand.have_side_effect? end end class W1075 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_declared += T(:declare_variable) interp.on_variable_defined += T(:define_variable) interp.on_explicit_function_declared += T(:declare_function) interp.on_explicit_function_defined += T(:define_function) end private def declare_variable(var_dcl, var) if var.named? if var.declared_as_static? sc_spec = var_dcl.storage_class_specifier unless sc_spec && sc_spec.type == :STATIC W(var_dcl.location, var.name) end end end end def define_variable(var_def, var) if var.named? if var.declared_as_static? sc_spec = var_def.storage_class_specifier unless sc_spec && sc_spec.type == :STATIC W(var_def.location, var.name) end end end end def declare_function(fun_dcl, fun) if fun.named? if fun.declared_as_static? sc_spec = fun_dcl.storage_class_specifier unless sc_spec && sc_spec.type == :STATIC W(fun_dcl.location, fun.name) end end end end def define_function(fun_def, fun) if fun.named? if fun.declared_as_static? sc_spec = fun_def.storage_class_specifier unless sc_spec && sc_spec.type == :STATIC W(fun_def.location, fun.name) end end end end end class W1076 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_explicit_function_defined += T(:define_function) end private def define_function(fun_def, fun) if fun.named? && fun.declared_as_static? anterior_dcls = fun.declarations_and_definitions.reject { |dcl| dcl == fun_def } if anterior_dcls.empty? W(fun_def.location, fun.name) end end end end class W1077 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_declared += T(:check) end private def check(var_dcl, *) type = var_dcl.type begin if type.array? unless type.length W(var_dcl.location) break end else break end end while type = type.base_type end end class W9001 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath trav = phase_ctxt[:cc1_ast_traversal] trav.enter_error_statement += T(:check) trav.enter_generic_labeled_statement += T(:check) trav.enter_case_labeled_statement += T(:check) trav.enter_default_labeled_statement += T(:check) trav.enter_expression_statement += T(:check) trav.enter_if_statement += T(:check) trav.enter_if_else_statement += T(:check) trav.enter_switch_statement += T(:check) trav.enter_while_statement += T(:check) trav.enter_do_statement += T(:check) trav.enter_for_statement += T(:check) trav.enter_c99_for_statement += T(:check) trav.enter_goto_statement += T(:check) trav.enter_continue_statement += T(:check) trav.enter_break_statement += T(:check) trav.enter_return_statement += T(:check) end private def check(node) if @fpath == node.location.fpath W(node.location) unless node.executed? end end end class W9003 < PassiveCodeCheck def_registrant_phase Cc1::Prepare2Phase include Cc1::InterpreterMediator include Cc1::Conversion # NOTE: All messages of cc1-phase code check should be unique till function # step-in analysis is supported. mark_as_unique def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_implicit_conv_performed += T(:check) end private def check(init_or_expr, orig_var, rslt_var) from_type = orig_var.type to_type = rslt_var.type if from_type.undeclared? || from_type.unresolved? || to_type.undeclared? || to_type.unresolved? return end case init_or_expr when Cc1::Initializer expr = init_or_expr.expression if expr && constant_expression?(expr) if untyped_pointer_conversion?(from_type, to_type, orig_var.value) return end end when Cc1::Expression if constant_expression?(init_or_expr) if untyped_pointer_conversion?(from_type, to_type, orig_var.value) return end end end unless from_type.standard? && to_type.standard? unless from_type.convertible?(to_type) W(init_or_expr.location, from_type.brief_image, to_type.brief_image) end end end def interpreter @interp end end end end end adlint-3.2.14/lib/adlint/metric.rb0000644000004100000410000003524612340630463016750 0ustar www-datawww-data# Code quality metrics. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: class CodeMetric def print_as_csv(io) io.puts(to_csv) end def to_s delim = ",".to_default_external to_a.map { |obj| obj.to_s.to_default_external }.join(delim) end private def to_a subclass_responsibility end def to_csv to_a.map { |obj| obj ? obj.to_s.to_default_external : nil }.to_csv end end class FileMetric < CodeMetric def initialize(name, fpath, val) @name = name @fpath = fpath @val = val end private def to_a ["MET", @name, @fpath, @val] end end class FL_STMT_Metric < FileMetric def initialize(fpath, stmt_cnt) super("FL_STMT", fpath, stmt_cnt) end end class FL_FUNC_Metric < FileMetric def initialize(fpath, fun_cnt) super("FL_FUNC", fpath, fun_cnt) end end class FunctionMetric < CodeMetric def initialize(name, fun_id, loc, val) @name = name @fun_id = fun_id @loc = loc @val = val end private def to_a ["MET", @name, *@fun_id.to_a, *@loc.to_a, @val] end end class FN_STMT_Metric < FunctionMetric def initialize(fun_id, loc, stmt_cnt) super("FN_STMT", fun_id, loc, stmt_cnt) end end class FN_UNRC_Metric < FunctionMetric def initialize(fun_id, loc, unreached_stmt_cnt) super("FN_UNRC", fun_id, loc, unreached_stmt_cnt) end end class FN_LINE_Metric < FunctionMetric def initialize(fun_id, loc, fun_lines) super("FN_LINE", fun_id, loc, fun_lines) end end class FN_PARA_Metric < FunctionMetric def initialize(fun_id, loc, param_cnt) super("FN_PARA", fun_id, loc, param_cnt) end end class FN_UNUV_Metric < FunctionMetric def initialize(fun_id, loc, useless_var_cnt) super("FN_UNUV", fun_id, loc, useless_var_cnt) end end class FN_CSUB_Metric < FunctionMetric def initialize(fun_id, loc, funcall_cnt) super("FN_CSUB", fun_id, loc, funcall_cnt) end end class FN_GOTO_Metric < FunctionMetric def initialize(fun_id, loc, goto_cnt) super("FN_GOTO", fun_id, loc, goto_cnt) end end class FN_RETN_Metric < FunctionMetric def initialize(fun_id, loc, ret_cnt) super("FN_RETN", fun_id, loc, ret_cnt) end end class FN_UELS_Metric < FunctionMetric def initialize(fun_id, loc, if_stmt_cnt) super("FN_UELS", fun_id, loc, if_stmt_cnt) end end class FN_NEST_Metric < FunctionMetric def initialize(fun_id, loc, max_nest) super("FN_NEST", fun_id, loc, max_nest) end end class FN_PATH_Metric < FunctionMetric def initialize(fun_id, loc, path_cnt) super("FN_PATH", fun_id, loc, path_cnt) end end class FN_CYCM_Metric < FunctionMetric def initialize(fun_id, loc, cycl_compl) super("FN_CYCM", fun_id, loc, cycl_compl) end end class FN_CALL_Metric < FunctionMetric def initialize(fun_id, loc, caller_cnt) super("FN_CALL", fun_id, loc, caller_cnt) end end class MetricRecord < CsvRecord def self.of(csv_row, sma_wd) case csv_row[0] when "VER" create_version_record(csv_row) when "DCL" create_declaration_record(csv_row, sma_wd) when "DEF" create_definition_record(csv_row, sma_wd) when "INI" create_initialization_record(csv_row, sma_wd) when "ASN" create_assignment_record(csv_row, sma_wd) when "DEP" create_dependency_record(csv_row, sma_wd) when "LIT" create_literal_record(csv_row, sma_wd) when "PRE" create_pp_directive_record(csv_row, sma_wd) when "MET" create_metric_record(csv_row, sma_wd) else # NOTE: Silently ignore unknown records so that an optional examination # package may output its own special ones. # #raise "invalid metric record." nil end end def initialize(csv_row, sma_wd) super(csv_row) @sma_wd = sma_wd end def type field_at(0) end def fpath sma_abs_fpath = Pathname.new(field_at(1)).expand_path(@sma_wd) sma_abs_fpath.relative_path_from(Pathname.pwd) end def line_no field_at(2).to_i end def column_no field_at(3).to_i end def location Location.new(fpath, line_no, column_no) end memoize :location def version?; false end def typedef_declaration?; false end def struct_declaration?; false end def union_declaration?; false end def enum_declaration?; false end def global_variable_declaration?; false end def function_declaration?; false end def variable_definition?; false end def function_definition?; false end def macro_definition?; false end def label_definition?; false end def initialization?; false end def assignment?; false end def include?; false end def function_call?; false end def variable_xref?; false end def function_xref?; false end def literal?; false end def pp_directive?; false end def self.create_version_record(csv_row) VersionRecord.new(csv_row) end private_class_method :create_version_record def self.create_declaration_record(csv_row, sma_wd) case csv_row[4] when "T" case csv_row[5] when "T" TypedefDeclarationRecord.new(csv_row, sma_wd) when "S" StructDeclarationRecord.new(csv_row, sma_wd) when "U" UnionDeclarationRecord.new(csv_row, sma_wd) when "E" EnumDeclarationRecord.new(csv_row, sma_wd) else raise "invalid DCL record." end when "V" GlobalVariableDeclarationRecord.new(csv_row, sma_wd) when "F" FunctionDeclarationRecord.new(csv_row, sma_wd) else raise "invalid DCL record." end end private_class_method :create_declaration_record def self.create_definition_record(csv_row, sma_wd) case csv_row[4] when "V" VariableDefinitionRecord.new(csv_row, sma_wd) when "F" FunctionDefinitionRecord.new(csv_row, sma_wd) when "M" MacroDefinitionRecord.new(csv_row, sma_wd) when "L" LabelDefinitionRecord.new(csv_row, sma_wd) else raise "invalid DEF record." end end private_class_method :create_definition_record def self.create_initialization_record(csv_row, sma_wd) InitializationRecord.new(csv_row, sma_wd) end private_class_method :create_initialization_record def self.create_assignment_record(csv_row, sma_wd) AssignmentRecord.new(csv_row, sma_wd) end private_class_method :create_assignment_record def self.create_dependency_record(csv_row, sma_wd) case csv_row[4] when "I" IncludeRecord.new(csv_row, sma_wd) when "C" FunctionCallRecord.new(csv_row, sma_wd) when "X" case csv_row[5] when "V" VariableXRefRecord.new(csv_row, sma_wd) when "F" FunctionXRefRecord.new(csv_row, sma_wd) else raise "invalid DEP record." end else raise "invalid DEP record." end end private_class_method :create_dependency_record def self.create_literal_record(csv_row, sma_wd) LiteralRecord.new(csv_row, sma_wd) end private_class_method :create_literal_record def self.create_pp_directive_record(csv_row, sma_wd) PPDirectiveRecord.new(csv_row, sma_wd) end private_class_method :create_pp_directive_record def self.create_metric_record(csv_row, sma_wd) new(csv_row, sma_wd) end private_class_method :create_metric_record class VersionRecord < MetricRecord def initialize(csv_row) super(csv_row, nil) end def version? true end def version_number field_at(1) end def exec_timestamp field_at(2) end def exec_working_directory field_at(3) end end private_constant :VersionRecord class TypedefDeclarationRecord < MetricRecord def typedef_declaration? true end def typedcl_type field_at(5) end def type_name field_at(6) end def type_rep field_at(7) end end private_constant :TypedefDeclarationRecord class StructDeclarationRecord < MetricRecord def struct_declaration? true end def typedcl_type field_at(5) end def type_name field_at(6) end def type_rep field_at(7) end end private_constant :StructDeclarationRecord class UnionDeclarationRecord < MetricRecord def union_declaration? true end def typedcl_type field_at(5) end def type_name field_at(6) end def type_rep field_at(7) end end private_constant :UnionDeclarationRecord class EnumDeclarationRecord < MetricRecord def enum_declaration? true end def typedcl_type field_at(5) end def type_name field_at(6) end def type_rep field_at(7) end end private_constant :EnumDeclarationRecord class GlobalVariableDeclarationRecord < MetricRecord def global_variable_declaration? true end def variable_name field_at(5) end def type_rep field_at(6) end end private_constant :GlobalVariableDeclarationRecord class FunctionDeclarationRecord < MetricRecord def function_declaration? true end def function_linkage_type field_at(5) end def function_scope_type field_at(6) end def function_declaration_type field_at(7) end def function_id FunctionId.new(field_at(8), field_at(9)) end end private_constant :FunctionDeclarationRecord class VariableDefinitionRecord < MetricRecord def variable_definition? true end def variable_linkage_type field_at(5) end def variable_scope_type field_at(6) end def storage_class_type field_at(7) end def variable_name field_at(8) end def type_rep field_at(9) end end private_constant :VariableDefinitionRecord class FunctionDefinitionRecord < MetricRecord def function_definition? true end def function_linkage_type field_at(5) end def function_scope_type field_at(6) end def function_id FunctionId.new(field_at(7), field_at(8)) end def lines field_at(9) end end private_constant :FunctionDefinitionRecord class MacroDefinitionRecord < MetricRecord def macro_definition? true end def macro_name field_at(5) end def macro_type field_at(6) end end private_constant :MacroDefinitionRecord class LabelDefinitionRecord < MetricRecord def label_definition? true end def label_name field_at(5) end end private_constant :LabelDefinitionRecord class InitializationRecord < MetricRecord def initialization? true end def variable_name field_at(4) end def initializer_rep field_at(5) end end private_constant :InitializationRecord class AssignmentRecord < MetricRecord def assignment? true end def variable_name field_at(4) end def assignment_rep field_at(5) end end private_constant :AssignmentRecord class IncludeRecord < MetricRecord def include? true end def included_fpath Pathname.new(field_at(5)) end end private_constant :IncludeRecord class FunctionCallRecord < MetricRecord def function_call? true end def caller_function FunctionId.new(field_at(5), field_at(6)) end def callee_function FunctionId.new(field_at(7), field_at(8)) end end private_constant :FunctionCallRecord class VariableXRefRecord < MetricRecord def variable_xref? true end def accessor_function FunctionId.new(field_at(6), field_at(7)) end def access_type field_at(8) end def accessee_variable field_at(9) end end private_constant :VariableXRefRecord class FunctionXRefRecord < MetricRecord def function_xref? true end def accessor_function FunctionId.new(field_at(6), field_at(7)) end def access_type field_at(8) end def accessee_function FunctionId.new(field_at(9), field_at(10)) end end private_constant :FunctionXRefRecord class LiteralRecord < MetricRecord def literal? true end def literal_type field_at(4) end def literal_prefix field_at(5) end def literal_suffix field_at(6) end def literal_value field_at(7) end end private_constant :LiteralRecord class PPDirectiveRecord < MetricRecord def pp_directive? true end def pp_directive field_at(4) end def pp_tokens field_at(5) end end private_constant :PPDirectiveRecord end end adlint-3.2.14/lib/adlint/ld.rb0000644000004100000410000000253012340630463016052 0ustar www-datawww-data# AdLint::Ld package loader. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/ld/object" require "adlint/ld/util" require "adlint/ld/typedef" require "adlint/ld/phase" adlint-3.2.14/lib/adlint/monitor.rb0000644000004100000410000000702512340630463017146 0ustar www-datawww-data# Progress monitoring mechanism. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/token" require "adlint/error" require "adlint/report" module AdLint #:nodoc: module MonitorUtil # NOTE: Host class must respond to #monitor. def monitored_region(title, total = 1) monitor.start(title, total) retval = yield(monitor) monitor.finish retval rescue Error monitor.abort raise rescue => ex monitor.abort raise InternalError.new(ex, monitor.location) end def checkpoint(loc_or_num) case loc_or_num when Location monitor.location = loc_or_num when Numeric monitor.progress = loc_or_num end end end class ProgressMonitor def initialize(fpath, phase_num, verbose) @fpath = fpath @phase_num = phase_num @verbose = verbose @start_time = Time.now @cur_phase = 0 end attr_reader :location attr_reader :progress def start(title, total = 1) @total = total @title = title @location = nil @progress = 0 @cur_phase += 1 draw end def finish @progress = @total if @cur_phase == @phase_num draw_finished else draw end end def abort draw_aborted end def location=(loc) @location = loc if false && @fpath.identical?(@location.fpath) self.progress = @location.line_no end end def progress=(val) @progress = val draw end private def draw if @verbose draw_bar(@fpath, @title) print " %3d%%" % (total_progress * 100).to_i end end def draw_finished if @verbose draw_bar(@fpath, "fin") puts " %.3fs" % (Time.now - @start_time) end end def draw_aborted if @verbose draw_bar(@fpath, @title) puts " %.3fs!" % (Time.now - @start_time) end end def total_progress phase_start = (@cur_phase - 1).to_f / @phase_num phase_progress = @progress.to_f / @total / @phase_num phase_start + phase_progress end def draw_bar(fpath, title) print "\r%30.30s [%3.3s] |" % [fpath.to_s.scan(/.{,30}\z/).first, title] print "=" * (28 * total_progress).to_i print " " * (28 - (28 * total_progress).to_i) print "|" end end end adlint-3.2.14/lib/adlint/ld/0000755000004100000410000000000012340630463015525 5ustar www-datawww-dataadlint-3.2.14/lib/adlint/ld/typedef.rb0000644000004100000410000000566212340630463017523 0ustar www-datawww-data# C typedef models for cross module analysis. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/location" require "adlint/metric" module AdLint #:nodoc: module Ld #:nodoc: class Typedef include LocationHolder def initialize(name, loc) @name = name @location = loc end attr_reader :name attr_reader :location def eql?(rhs) @name == rhs.name && @location == rhs.location end alias :== :eql? def hash "#{name} #{location}".hash end end class TypedefMap def initialize @name_index = Hash.new { |hash, key| hash[key] = Set.new } @composing_fpaths = Set.new end attr_reader :composing_fpaths def add(typedef) @name_index[typedef.name].add(typedef) @composing_fpaths.add(typedef.location.fpath) end def all_typedefs @name_index.values.each_with_object([]) do |typedefs, all| all.concat(typedefs.to_a) end end def lookup(typedef_name) @name_index[typedef_name].to_a end end class TypedefMapper def initialize @map = TypedefMap.new end attr_reader :map def execute(met_fpath) sma_wd = Pathname.pwd CSV.foreach(met_fpath) do |csv_row| if rec = MetricRecord.of(csv_row, sma_wd) case when rec.version? sma_wd = Pathname.new(rec.exec_working_directory) when rec.typedef_declaration? @map.add(Typedef.new(rec.type_name, rec.location)) end end end end end class TypedefTraversal def initialize(typedef_map) @map = typedef_map end extend Pluggable def_plugin :on_declaration def execute @map.all_typedefs.each { |tdef| on_declaration.invoke(tdef) } end end end end adlint-3.2.14/lib/adlint/ld/object.rb0000644000004100000410000003451312340630463017326 0ustar www-datawww-data# C runtime object models for cross module analysis. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/location" require "adlint/metric" require "adlint/util" module AdLint #:nodoc: module Ld #:nodoc: class Variable include LocationHolder def initialize(var_def_rec) @met_record = var_def_rec end def location @met_record.location end def name @met_record.variable_name end def type @met_record.type_rep end def extern? @met_record.variable_linkage_type == "X" end def eql?(rhs) name == rhs.name && location == rhs.location end alias :== :eql? def hash "#{name} #{location}".hash end end class VariableDeclaration include LocationHolder def initialize(gvar_dcl_rec) @met_record = gvar_dcl_rec end def location @met_record.location end def name @met_record.variable_name end def type @met_record.type_rep end def extern? true end def eql?(rhs) name == rhs.name && location == rhs.location end alias :== :eql? def hash "#{name} #{location}".hash end end class VariableMap def initialize @def_index = Hash.new { |hash, key| hash[key] = Set.new } @dcl_index = Hash.new { |hash, key| hash[key] = Set.new } @composing_fpaths = Set.new end attr_reader :composing_fpaths def add_variable(var) @def_index[var.name].add(var) @composing_fpaths.add(var.location.fpath) end def add_variable_declaration(var_dcl) @dcl_index[var_dcl.name].add(var_dcl) @composing_fpaths.add(var_dcl.location.fpath) end def all_variables @def_index.values.reduce(Set.new) { |all, vars| all + vars }.to_a end def all_variable_declarations @dcl_index.values.reduce(Set.new) { |all, dcls| all + dcls }.to_a end def lookup_variables(var_name) @def_index[var_name].to_a end def lookup_variable_declarations(var_name) @dcl_index[var_name].to_a end end class VariableMapper def initialize @map = VariableMap.new end attr_reader :map def execute(met_fpath) sma_wd = Pathname.pwd CSV.foreach(met_fpath) do |csv_row| if rec = MetricRecord.of(csv_row, sma_wd) case when rec.version? sma_wd = Pathname.new(rec.exec_working_directory) when rec.variable_definition? if rec.variable_linkage_type == "X" @map.add_variable(Variable.new(rec)) end when rec.global_variable_declaration? @map.add_variable_declaration(VariableDeclaration.new(rec)) end end end end end class VariableTraversal def initialize(var_map) @map = var_map end extend Pluggable def_plugin :on_declaration def_plugin :on_definition def execute @map.all_variable_declarations.each do |var_dcl| on_declaration.invoke(var_dcl) end @map.all_variables.each do |var_def| on_definition.invoke(var_def) end end end class Function include LocationHolder def initialize(fun_def_rec) @met_record = fun_def_rec end def location @met_record.location end def signature @met_record.function_id.signature end def name @met_record.function_id.name end def extern? @met_record.function_linkage_type == "X" end def eql?(rhs) signature == rhs.signature && location == rhs.location end alias :== :eql? def hash "#{signature} #{location}".hash end end class FunctionDeclaration include LocationHolder def initialize(fun_dcl_rec) @met_record = fun_dcl_rec end def location @met_record.location end def signature @met_record.function_id.signature end def name @met_record.function_id.name end def extern? @met_record.function_linkage_type == "X" end def explicit? @met_record.function_declaration_type == "E" end def implicit? @met_record.function_declaration_type == "I" end def eql?(rhs) signature == rhs.signature && location == rhs.location end alias :== :eql? def hash "#{signature} #{location}".hash end end class FunctionMap def initialize @def_index = Hash.new { |hash, key| hash[key] = Set.new } @dcl_index = Hash.new { |hash, key| hash[key] = Set.new } @composing_fpaths = Set.new end attr_reader :composing_fpaths def add_function(fun) @def_index[fun.name].add(fun) @composing_fpaths.add(fun.location.fpath) end def add_function_declaration(fun_dcl) @dcl_index[fun_dcl.name].add(fun_dcl) @composing_fpaths.add(fun_dcl.location.fpath) end def all_functions @def_index.values.reduce(Set.new) { |all, funs| all + funs }.to_a end def all_function_declarations @dcl_index.values.reduce(Set.new) { |all, dcls| all + dcls }.to_a end def lookup_functions(fun_name) @def_index[fun_name].to_a end def lookup_function_declarations(fun_name) @dcl_index[fun_name].to_a end end class FunctionMapper def initialize @map = FunctionMap.new end attr_reader :map def execute(met_fpath) sma_wd = Pathname.pwd CSV.foreach(met_fpath) do |csv_row| if rec = MetricRecord.of(csv_row, sma_wd) case when rec.version? sma_wd = Pathname.new(rec.exec_working_directory) when rec.function_definition? @map.add_function(Function.new(rec)) when rec.function_declaration? @map.add_function_declaration(FunctionDeclaration.new(rec)) end end end end end class FunctionTraversal def initialize(fun_map) @map = fun_map end extend Pluggable def_plugin :on_declaration def_plugin :on_definition def execute @map.all_function_declarations.each do |fun_dcl| on_declaration.invoke(fun_dcl) end @map.all_functions.each do |fun_def| on_definition.invoke(fun_def) end end end class ObjectReferrer class << self def of_function(fun) Function.new(fun) end def of_ctors_section(ref_loc) CtorsSection.new(ref_loc) end end def location subclass_responsibility end def function subclass_responsibility end def hash subclass_responsibility end def eql?(rhs) subclass_responsibility end class Function < ObjectReferrer def initialize(fun) @function = fun end attr_reader :function def location @function.location end def hash @function.hash end def eql?(rhs) case rhs when Function @function == rhs.function else false end end end private_constant :Function class CtorsSection < ObjectReferrer def initialize(ref_loc) @location = ref_loc end attr_reader :location def function nil end def hash @location.fpath.hash end def eql?(rhs) case rhs when CtorsSection @location.fpath == rhs.location.fpath else false end end end private_constant :CtorsSection end class ObjectReference include LocationHolder def initialize(ref, obj, loc) @referrer = ref @object = obj @location = loc end attr_reader :referrer attr_reader :object attr_reader :location def eql?(rhs) to_a == rhs.to_a end alias :== :eql? def hash to_a.hash end def to_a [@referrer, @object, @location] end end class ObjectXRefGraph def initialize(funcall_graph) @funcall_graph = funcall_graph @obj_index = Hash.new { |hash, key| hash[key] = Set.new } end def add(obj_ref) @obj_index[obj_ref.object].add(obj_ref) end def all_referrers_of(obj) direct_referrers_of(obj) + indirect_referrers_of(obj) end def direct_referrers_of(obj) @obj_index[obj].map { |obj_ref| obj_ref.referrer }.to_set end def indirect_referrers_of(obj) direct_referrers_of(obj).reduce(Set.new) do |res, ref| if fun = ref.function res + @funcall_graph.all_callers_of(fun) else res end end end end class ObjectXRefGraphBuilder def initialize(var_map, fun_map, funcall_graph) @var_map, @fun_map = var_map, fun_map @graph = ObjectXRefGraph.new(funcall_graph) end attr_reader :graph def execute(met_fpath) sma_wd = Pathname.pwd CSV.foreach(met_fpath) do |csv_row| if rec = MetricRecord.of(csv_row, sma_wd) case when rec.version? sma_wd = Pathname.new(rec.exec_working_directory) when rec.variable_xref? if var = @var_map.lookup_variables(rec.accessee_variable).first fun_id = rec.accessor_function if fun_id.named? fun = @fun_map.lookup_functions(fun_id.name).first ref = ObjectReferrer.of_function(fun) else ref = ObjectReferrer.of_ctors_section(rec.location) end @graph.add(ObjectReference.new(ref, var, rec.location)) end when rec.function_xref? ref, fun = lookup_referrer_and_function_by_xref(rec) if ref && fun @graph.add(ObjectReference.new(ref, fun, rec.location)) end end end end end private def lookup_referrer_and_function_by_xref(fun_xref) caller_id = fun_xref.accessor_function if caller_id.named? caller_fun = @fun_map.lookup_functions(caller_id.name).find { |fun| fun.location.fpath == fun_xref.location.fpath } return nil, nil unless caller_fun ref = ObjectReferrer.of_function(caller_fun) else ref = ObjectReferrer.of_ctors_section(fun_xref.location) end callee_funs = @fun_map.lookup_functions(fun_xref.accessee_function.name) callee_fun = callee_funs.find { |fun| fun.location.fpath == ref.location.fpath } || callee_funs.first return ref, callee_fun end end class FunctionCall def initialize(caller_ref, callee_fun) @caller = caller_ref @callee = callee_fun end attr_reader :caller attr_reader :callee def eql?(rhs) to_a == rhs.to_a end alias :== :eql? def hash to_a.hash end def to_a [@caller, @callee] end end class FunctionCallGraph def initialize @callee_index = Hash.new { |hash, key| hash[key] = Set.new } end def add(funcall) @callee_index[funcall.callee].add(funcall) end def all_callers_of(fun) direct_callers_of(fun) + indirect_callers_of(fun) end memoize :all_callers_of def direct_callers_of(fun) @callee_index[fun].map { |funcall| funcall.caller }.to_set end memoize :direct_callers_of def indirect_callers_of(fun) direct_callers_of(fun).reduce(Set.new) do |res, ref| if fun = ref.function res + collect_callers_of(fun, res) else res end end end memoize :indirect_callers_of private def collect_callers_of(fun, exclusions) direct_callers_of(fun).reduce(Set.new) do |res, ref| case when exclusions.include?(ref) res.add(ref) when caller_fun = ref.function res.add(ref) + collect_callers_of(caller_fun, exclusions + res) else res.add(ref) end end end memoize :collect_callers_of, key_indices: [0] end class FunctionCallGraphBuilder def initialize(fun_map) @fun_map = fun_map @graph = FunctionCallGraph.new end attr_reader :graph def execute(met_fpath) sma_wd = Pathname.pwd CSV.foreach(met_fpath) do |csv_row| if rec = MetricRecord.of(csv_row, sma_wd) case when rec.version? sma_wd = Pathname.new(rec.exec_working_directory) when rec.function_call? caller_ref, callee_fun = lookup_functions_by_call(rec) if caller_ref && callee_fun @graph.add(FunctionCall.new(caller_ref, callee_fun)) end end end end end private def lookup_functions_by_call(funcall_rec) caller_fun = @fun_map.lookup_functions( funcall_rec.caller_function.name).find { |fun| fun.location.fpath == funcall_rec.location.fpath } if caller_fun caller_ref = ObjectReferrer.of_function(caller_fun) else return nil, nil end callee_funs = @fun_map.lookup_functions(funcall_rec.callee_function.name) callee_fun = callee_funs.first callee_funs.each do |fun| if fun.location.fpath == caller_ref.location.fpath callee_fun = fun break end end return caller_ref, callee_fun end end end end adlint-3.2.14/lib/adlint/ld/phase.rb0000644000004100000410000001407212340630463017156 0ustar www-datawww-data# Phases of cross module analysis. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/phase" require "adlint/annot" require "adlint/cpp/lexer" require "adlint/ld/object" require "adlint/ld/typedef" require "adlint/ld/util" module AdLint #:nodoc: module Ld #:nodoc: class LdPhase < Phase def initialize(phase_ctxt, phase_name) super(phase_ctxt, "ld", phase_name) end end class MapTypedefPhase < LdPhase def initialize(phase_ctxt) super(phase_ctxt, "mtd") end private def do_execute(phase_ctxt, monitor) mapper = TypedefMapper.new phase_ctxt[:metric_fpaths].each do |fpath| mapper.execute(fpath) monitor.progress += 1.0 / phase_ctxt[:metric_fpaths].size end phase_ctxt[:ld_typedef_map] = mapper.map end end class MapFunctionPhase < LdPhase def initialize(phase_ctxt) super(phase_ctxt, "mfn") end private def do_execute(phase_ctxt, monitor) mapper = FunctionMapper.new phase_ctxt[:metric_fpaths].each do |fpath| mapper.execute(fpath) monitor.progress += 1.0 / phase_ctxt[:metric_fpaths].size end phase_ctxt[:ld_function_map] = mapper.map end end class MapVariablePhase < LdPhase def initialize(phase_ctxt) super(phase_ctxt, "mvr") end private def do_execute(phase_ctxt, monitor) mapper = VariableMapper.new phase_ctxt[:metric_fpaths].each do |fpath| mapper.execute(fpath) monitor.progress += 1.0 / phase_ctxt[:metric_fpaths].size end phase_ctxt[:ld_variable_map] = mapper.map end end class BuildCallGraphPhase < LdPhase def initialize(phase_ctxt) super(phase_ctxt, "ld1") end private def do_execute(phase_ctxt, monitor) builder = FunctionCallGraphBuilder.new(phase_ctxt[:ld_function_map]) phase_ctxt[:metric_fpaths].each do |fpath| builder.execute(fpath) monitor.progress += 1.0 / phase_ctxt[:metric_fpaths].size end phase_ctxt[:ld_call_graph] = builder.graph ensure DebugUtil.dump_function_call_graph(phase_ctxt) end end class BuildXRefGraphPhase < LdPhase def initialize(phase_ctxt) super(phase_ctxt, "ld2") end private def do_execute(phase_ctxt, monitor) builder = ObjectXRefGraphBuilder.new( phase_ctxt[:ld_variable_map], phase_ctxt[:ld_function_map], phase_ctxt[:ld_call_graph]) phase_ctxt[:metric_fpaths].each do |fpath| builder.execute(fpath) monitor.progress += 1.0 / phase_ctxt[:metric_fpaths].size end phase_ctxt[:ld_xref_graph] = builder.graph ensure DebugUtil.dump_variable_reference_graph(phase_ctxt) end end class PreparePhase < LdPhase def initialize(phase_ctxt) super(phase_ctxt, "pre") end private def do_execute(phase_ctxt, *) collect_annotations phase_ctxt[:ld_typedef_traversal] = TypedefTraversal.new(phase_ctxt[:ld_typedef_map]) phase_ctxt[:ld_function_traversal] = FunctionTraversal.new(phase_ctxt[:ld_function_map]) phase_ctxt[:ld_variable_traversal] = VariableTraversal.new(phase_ctxt[:ld_variable_map]) end def collect_annotations composing_fpaths.each do |fpath| lexer = Cpp::Lexer.new( Source.new(fpath, traits.of_project.file_encoding), traits) parser = method(:parse_annotation) lexer.on_line_comment_found += parser lexer.on_block_comment_found += parser while lexer.next_token; end end end def composing_fpaths @phase_ctxt[:ld_function_map].composing_fpaths + @phase_ctxt[:ld_variable_map].composing_fpaths + @phase_ctxt[:ld_typedef_map].composing_fpaths end def parse_annotation(comment, loc) if annot = Annotation.parse(comment, loc) @phase_ctxt[:annotations].push(annot) if annot.message_suppression_specifier? && traits.of_message.individual_suppression @phase_ctxt[:suppressors].add(annot.create_suppressor) end end end end class TypedefReviewPhase < LdPhase def initialize(phase_ctxt) super(phase_ctxt, "rtd") end private def do_execute(phase_ctxt, *) phase_ctxt[:ld_typedef_traversal].execute end end class FunctionReviewPhase < LdPhase def initialize(phase_ctxt) super(phase_ctxt, "rfn") end private def do_execute(phase_ctxt, *) phase_ctxt[:ld_function_traversal].execute end end class VariableReviewPhase < LdPhase def initialize(phase_ctxt) super(phase_ctxt, "rvr") end private def do_execute(phase_ctxt, *) phase_ctxt[:ld_variable_traversal].execute end end class ExaminationPhase < LdPhase def initialize(phase_ctxt) super(phase_ctxt, "exm") end private def do_execute(phase_ctxt, *) examinations.each { |exam| exam.execute } end end end end adlint-3.2.14/lib/adlint/ld/util.rb0000644000004100000410000000677512340630463017046 0ustar www-datawww-data# Miscellaneous utilities for cross module analysis. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: module Ld #:nodoc: module DebugUtil def dump_function_call_graph(phase_ctxt) if $DEBUG proj_name = phase_ctxt.traits.of_project.project_name map_fname = Pathname.new("#{proj_name}.map") map_fpath = map_fname.expand_path(phase_ctxt.msg_fpath.dirname) map = phase_ctxt[:ld_function_map] call_graph = phase_ctxt[:ld_call_graph] return unless map && call_graph File.open(map_fpath, "w") do |io| io.puts("-- Function Call Graph --") map.all_functions.each do |callee| io.puts("DC of #{callee.signature}") call_graph.direct_callers_of(callee).each do |ref| if fun = ref.function io.puts(" #{fun.signature}") end end io.puts io.puts("IC of #{callee.signature}") call_graph.indirect_callers_of(callee).each do |ref| if fun = ref.function io.puts(" #{fun.signature}") end end io.puts end end end end module_function :dump_function_call_graph def dump_variable_reference_graph(phase_ctxt) if $DEBUG proj_name = phase_ctxt.traits.of_project.project_name map_fname = Pathname.new("#{proj_name}.map") map_fpath = map_fname.expand_path(phase_ctxt.msg_fpath.dirname) map = phase_ctxt[:ld_variable_map] ref_graph = phase_ctxt[:ld_xref_graph] return unless map && ref_graph File.open(map_fpath, "a") do |io| io.puts("-- Variable Reference Graph --") map.all_variables.each do |accessee| io.puts("DR of #{accessee.name}") ref_graph.direct_referrers_of(accessee).each do |ref| if fun = ref.function io.puts(" #{fun.signature}") end end io.puts io.puts("IR or #{accessee.name}") ref_graph.indirect_referrers_of(accessee).each do |ref| if fun = ref.function io.puts(" #{fun.signature}") end end io.puts end end end end module_function :dump_variable_reference_graph end end end adlint-3.2.14/lib/adlint/version.rb0000644000004100000410000000476212340630463017151 0ustar www-datawww-data# Version information. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: MAJOR_VERSION = 3 MINOR_VERSION = 2 PATCH_VERSION = 14 RELEASE_DATE = "2014-05-10" TRAITS_SCHEMA_VERSION = "3.0.0" SHORT_VERSION = "#{MAJOR_VERSION}.#{MINOR_VERSION}.#{PATCH_VERSION}" VERSION = "#{SHORT_VERSION} (#{RELEASE_DATE})" COPYRIGHT = <. EOS AUTHOR = < # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: # == DESCRIPTION # Base class of code structure information. class CodeStructure def print_as_csv(io) io.puts(to_csv) end # === DESCRIPTION # Converts this code structure information into string representation. # # === RETURN VALUE # String -- String representation. def to_s delim = ",".to_default_external to_a.map { |obj| obj.to_s.to_default_external }.join(delim) end private # === DESCRIPTION # Converts this code structure information into array representation. # # Subclasses must implement this method. # # === RETURN VALUE # Array< Object > -- Array representation. def to_a subclass_responsibility end def to_csv to_a.map { |obj| obj ? obj.to_s.to_default_external : nil }.to_csv end end # == DESCRIPTION # Type declaration information. class TypeDcl < CodeStructure # === DESCRIPTION # Constructs the type declaration information. # # === PARAMETER # _loc_:: Location -- Location where the declaration appears. # _dcl_type_:: String -- Type string of the type declaration. # _type_name_:: String -- Type name. # _type_rep_:: String -- Type representation. def initialize(loc, dcl_type, type_name, type_rep) @loc = loc @dcl_type = dcl_type @type_name = type_name @type_rep = type_rep end private # === DESCRIPTION # Converts this code structure information into array representation. # # === RETURN VALUE # Array< Object > -- Array representation. def to_a ["DCL", *@loc.to_a, "T", @dcl_type, @type_name, @type_rep] end end # == DESCRIPTION # Global variable declaration information. class GVarDcl < CodeStructure # === DESCRIPTION # Constructs the global variable declaration information. # # === PARAMETER # _loc_:: Location -- Location where the declaration appears. # _var_name_:: String -- Global variable name. # _type_rep_:: String -- Type of the global variable. def initialize(loc, var_name, type_rep) @loc = loc @var_name = var_name @type_rep = type_rep end private # === DESCRIPTION # Converts this code structure information into array representation. # # === RETURN VALUE # Array< Object > -- Array representation. def to_a ["DCL", *@loc.to_a, "V", @var_name, @type_rep] end end # == DESCRIPTION # Function declaration information. class FunDcl < CodeStructure # === DESCRIPTION # Constructs the function declaration information. # # === PARAMETER # _loc_:: Location -- Location where the declaration appears. # _linkage_:: String -- Function linkage type string. # _scope_type_:: String -- Declaration scope type string. # _dcl_type_:: String -- Declaration type string. # _fun_id_:: FunctionId -- Identifier of the function. def initialize(loc, linkage, scope_type, dcl_type, fun_id) @loc = loc @linkage = linkage @scope_type = scope_type @dcl_type = dcl_type @fun_id = fun_id end private # === DESCRIPTION # Converts this code structure information into array representation. # # === RETURN VALUE # Array< Object > -- Array representation. def to_a ["DCL", *@loc.to_a, "F", @linkage, @scope_type, @dcl_type, *@fun_id.to_a] end end # == DESCRIPTION # Variable definition information. class VarDef < CodeStructure # === DESCRIPTION # Constructs the variable definition information. # # === PARAMETER # _loc_:: Location -- Location where the definition appears. # _linkage_:: String -- Variable linkage type string. # _scope_type_:: String -- Variable scope type string. # _sc_type_:: String -- Variable storage class type. # _var_name_:: String -- Variable name. # _type_rep_:: String -- Variable type representation string. def initialize(loc, linkage, scope_type, sc_type, var_name, type_rep) @loc = loc @linkage = linkage @scope_type = scope_type @sc_type = sc_type @var_name = var_name @type_rep = type_rep end private # === DESCRIPTION # Converts this code structure information into array representation. # # === RETURN VALUE # Array< Object > -- Array representation. def to_a ["DEF", *@loc.to_a, "V", @linkage, @scope_type, @sc_type, @var_name, @type_rep] end end # == DESCRIPTION # Function definition information. class FunDef < CodeStructure # === DESCRIPTION # Constructs the function definition information. # # === PARAMETER # _loc_:: Location -- Location where the definition appears. # _linkage_:: String -- Function linkage type string. # _scope_type_:: String -- Definition scope type string. # _fun_id_:: FunctionId -- Function identifier. # _lines_:: Integer -- Physical lines. def initialize(loc, linkage, scope_type, fun_id, lines) @loc = loc @linkage = linkage @scope_type = scope_type @fun_id = fun_id @lines = lines end private # === DESCRIPTION # Converts this code structure information into array representation. # # === RETURN VALUE # Array< Object > -- Array representation. def to_a ["DEF", *@loc.to_a, "F", @linkage, @scope_type, *@fun_id.to_a, @lines] end end # == DESCRIPTION # Macro definition information. class MacroDef < CodeStructure # === DESCRIPTION # Constructs the macro definition information. # # === PARAMETER # _loc_:: Location -- Location where the definition appears. # _macro_name_:: String -- Macro name. # _macro_type_:: String -- Macro type string. def initialize(loc, macro_name, macro_type) @loc = loc @macro_name = macro_name @macro_type = macro_type end private # === DESCRIPTION # Converts this code structure information into array representation. # # === RETURN VALUE # Array< Object > -- Array representation. def to_a ["DEF", *@loc.to_a, "M", @macro_name, @macro_type] end end # == DESCRIPTION # Label definition information. class LabelDef < CodeStructure # === DESCRIPTION # Constructs the label definition information. # # === PARAMETER # _loc_:: Location -- Location where the definition appears. # _label_name_:: String -- Label name. def initialize(loc, label_name) @loc = loc @label_name = label_name end private # === DESCRIPTION # Converts this code structure information into array representation. # # === RETURN VALUE # Array< Object > -- Array representation. def to_a ["DEF", *@loc.to_a, "L", @label_name] end end # == DESCRIPTION # Initialization information. class Initialization < CodeStructure # === DESCRIPTION # Constructs the initialization information. # # === PARAMETER # _loc_:: Location -- Location where the variable appears. # _var_name_:: String -- Initialized variable name. # _init_rep_:: String -- Initializer representation. def initialize(loc, var_name, init_rep) @loc = loc @var_name = var_name @init_rep = init_rep end private # === DESCRIPTION # Converts this code structure information into array representation. # # === RETURN VALUE # Array< Object > -- Array representation. def to_a ["INI", *@loc.to_a, @var_name, @init_rep] end end # == DESCRIPTION # Assignment information. class Assignment < CodeStructure # === DESCRIPTION # Constructs the assignment information. # # === PARAMETER # _loc_:: Location -- Location where the variable appears. # _var_name_:: String -- Assigned variable name. # _assign_rep_:: String -- Assignment expression representation. def initialize(loc, var_name, assign_rep) @loc = loc @var_name = var_name @assign_rep = assign_rep end private # === DESCRIPTION # Converts this code structure information into array representation. # # === RETURN VALUE # Array< Object > -- Array representation. def to_a ["ASN", *@loc.to_a, @var_name, @assign_rep] end end # == DESCRIPTION # Header include information. class Include < CodeStructure # === DESCRIPTION # Constructs the header include information. # # === PARAMETER # _loc_:: Location -- Location where the directive appears. # _fpath_:: Pathname -- Path name of the included file. def initialize(loc, fpath) @loc = loc @fpath = fpath end private # === DESCRIPTION # Converts this code structure information into array representation. # # === RETURN VALUE # Array< Object > -- Array representation. def to_a ["DEP", *@loc.to_a, "I", @fpath] end end # == DESCRIPTION # Function call information. class Funcall < CodeStructure # === DESCRIPTION # Constructs the function call informatin. # # === PARAMETER # _loc_:: Location -- Location where the function call appears. # _caller_fun_:: FunctionId -- Calling function identifier. # _callee_fun_:: FunctionId -- Called function identifier. def initialize(loc, caller_fun, callee_fun) @loc = loc @caller_fun = caller_fun @callee_fun = callee_fun end private # === DESCRIPTION # Converts this code structure information into array representation. # # === RETURN VALUE # Array< Object > -- Array representation. def to_a ["DEP", *@loc.to_a, "C", *@caller_fun.to_a, *@callee_fun.to_a] end end # == DESCRIPTION # Variable cross reference information. class XRefVar < CodeStructure # === DESCRIPTION # Constructs the cross reference information. # # === PARAMETER # _loc_:: Location -- Location where the cross-ref appears. # _referrer_:: FunctionId -- Accessing function identifier. # _ref_type_:: String -- Referencing type string. # _var_name_:: String -- Accessed variable name. def initialize(loc, referrer, ref_type, var_name) @loc = loc @referrer = referrer @ref_type = ref_type @var_name = var_name end private # === DESCRIPTION # Converts this code structure information into array representation. # # === RETURN VALUE # Array< Object > -- Array representation. def to_a ["DEP", *@loc.to_a, "X", "V", *@referrer.to_a, @ref_type, @var_name] end end class XRefFun < CodeStructure # === DESCRIPTION # Constructs the cross reference information. # # === PARAMETER # _loc_:: Location -- Location where the cross-ref appears. # _referrer_:: FunctionId -- Accessing function identifier. # _ref_type_:: String -- Referencing type string. # _fun_:: FunctionId -- Accessed function identifier. def initialize(loc, referrer, ref_type, fun) @loc = loc @referrer = referrer @ref_type = ref_type @fun = fun end private # === DESCRIPTION # Converts this code structure information into array representation. # # === RETURN VALUE # Array< Object > -- Array representation. def to_a ["DEP", *@loc.to_a, "X", "F", *@referrer.to_a, @ref_type, *@fun.to_a] end end class Literal < CodeStructure def initialize(loc, lit_type, prefix, suffix, value) @loc = loc @lit_type = lit_type @prefix = prefix @suffix = suffix @value = value end private def to_a ["LIT", *@loc.to_a, @lit_type, @prefix, @suffix, @value] end end class PPDirective < CodeStructure def initialize(loc, pp_dire, pp_tokens) @loc = loc @pp_dire = pp_dire @pp_tokens = pp_tokens end private def to_a ["PRE", *@loc.to_a, @pp_dire, @pp_tokens] end end class FunctionId def self.of_ctors_section # NOTE: To represent an object referrer of non-function in case of global # function table initialization. self.new(nil, nil) end def initialize(name, sig_str) @name, @signature = name, sig_str end attr_reader :name attr_reader :signature def named? !@name.nil? end def to_a [@name, @signature] end end end adlint-3.2.14/lib/adlint/cc1/0000755000004100000410000000000012340630463015574 5ustar www-datawww-dataadlint-3.2.14/lib/adlint/cc1/ctrlexpr.rb0000644000004100000410000006604712340630463020001 0ustar www-datawww-data# Controlling expression of selection-statements and iteration-statements. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/cc1/syntax" require "adlint/cc1/object" require "adlint/cc1/mediator" require "adlint/cc1/expr" require "adlint/cc1/conv" require "adlint/cc1/operator" require "adlint/cc1/seqp" module AdLint #:nodoc: module Cc1 #:nodoc: # == DESCRIPTION # === Class structure # ControllingExpression # | # +-> ValueDomainManipulator # | <-- ValueDomainNarrower # | <-- ValueDomainWidener # | <-- NilValueDomainNarrower # | <-- NilValueDomainWidener # | # +-> ValueDomainNarrowing # <-- ValueComparison # <-- LogicalAnd # <-- LogicalOr # <-- StrictObjectDerivation # <-- DelayedObjectDerivation class ControllingExpression include SyntaxNodeCollector def initialize(interp, branch, target_expr = nil) @interpreter = interp @branch = branch @target_expr = target_expr @manipulators = [] end def ensure_true_by_narrowing(alt_expr = nil) expr = alt_expr || @target_expr if expr new_manip = ValueDomainNarrower.new(@interpreter, expr) if @branch.implicit_condition? eval_quietly { new_manip.prepare! } else new_manip.prepare! end else new_manip = NilValueDomainNarrower.new(@interpreter, @branch.group) end @manipulators.push(new_manip) new_manip end def ensure_true_by_widening(alt_expr = nil) expr = alt_expr || @target_expr if expr new_manip = ValueDomainWidener.new(@interpreter, expr) if @branch.implicit_condition? eval_quietly { new_manip.prepare! } else new_manip.prepare! end else new_manip = NilValueDomainWidener.new(@interpreter, @branch.group) end @manipulators.push(new_manip) new_manip end def undo(path_terminated) @manipulators.each { |manip| manip.rollback! } if path_terminated end def affected_variables @manipulators.map { |manip| manip.affected_variables }.flatten.uniq end def save_affected_variables @manipulators.each { |manip| manip.save! } end def restore_affected_variables @manipulators.each { |manip| manip.restore! } end def complexly_compounded? # NOTE: This method determines whether the controlling expression is too # complex to thin value domains of controlling variables. @target_expr && !collect_logical_and_expressions(@target_expr).empty? end def to_expr @target_expr end private def eval_quietly(&block) originally_quiet = @interpreter.quiet? if @branch.implicit_condition? && !originally_quiet @interpreter._quiet = true end yield ensure if @branch.implicit_condition? && !originally_quiet @interpreter._quiet = false end end end class ValueDomainManipulator < SyntaxTreeVisitor include InterpreterMediator include NotifierMediator include Conversion include ExpressionEvaluator::Impl include MonitorUtil def initialize(interp, target_expr) @interpreter = interp @target_expr = target_expr @affected_variables = [] @narrowing = nil @value_memory = nil end attr_reader :interpreter attr_reader :affected_variables def prepare! if @target_expr @narrowing = @target_expr.accept(self) @narrowing.execute! end end def commit! if @narrowing @narrowing.ensure_result_equal_to(scalar_value_of_true) end commit_changes(@narrowing) if @narrowing @affected_variables = @narrowing.narrowed_values.keys @narrowing = nil end end def rollback! # NOTE: Rollback narrowed version to cut out the value-domain to enter # the current branch. @affected_variables.each { |var| var.value.rollback! } end def save! @value_memory = {} @affected_variables.each do |var| @value_memory[var] = var.value.to_single_value.dup end end def restore! if @value_memory @value_memory.each { |var, saved_val| var.assign!(saved_val) } @value_memory = nil end end def self.def_strict_object_derivation(method_name) class_eval <<-EOS define_method("#{method_name}") do |*args| StrictObjectDerivation.new(self, args.first) end EOS end private_class_method :def_strict_object_derivation def_strict_object_derivation :visit_error_expression def_strict_object_derivation :visit_object_specifier def_strict_object_derivation :visit_constant_specifier def_strict_object_derivation :visit_string_literal_specifier def_strict_object_derivation :visit_null_constant_specifier def visit_array_subscript_expression(node) checkpoint(node.location) obj_manip = node.expression.accept(self) subs_manip = node.array_subscript.accept(self) DelayedObjectDerivation.new(self, node, obj_manip, subs_manip) do checkpoint(node.location) obj_manip.execute! subs_manip.execute! eval_array_subscript_expr(node, obj_manip.result, subs_manip.result) end end def visit_function_call_expression(node) checkpoint(node.location) obj_manip = node.expression.accept(self) arg_manips = node.argument_expressions.map { |expr| expr.accept(self) } DelayedObjectDerivation.new(self, node, obj_manip, *arg_manips) do checkpoint(node.location) obj_manip.execute! args = arg_manips.map { |m| m.execute!; [m.result, m.node] } eval_function_call_expr(node, obj_manip.result, args) end end def visit_member_access_by_value_expression(node) checkpoint(node.location) obj_manip = node.expression.accept(self) DelayedObjectDerivation.new(self, node, obj_manip) do checkpoint(node.location) obj_manip.execute! eval_member_access_by_value_expr(node, obj_manip.result) end end def visit_member_access_by_pointer_expression(node) checkpoint(node.location) obj_manip = node.expression.accept(self) DelayedObjectDerivation.new(self, node, obj_manip) do checkpoint(node.location) obj_manip.execute! eval_member_access_by_pointer_expr(node, obj_manip.result) end end def_strict_object_derivation :visit_bit_access_by_value_expression def_strict_object_derivation :visit_bit_access_by_pointer_expression def visit_postfix_increment_expression(node) checkpoint(node.location) obj_manip = node.operand.accept(self) DelayedObjectDerivation.new(self, node, obj_manip) do checkpoint(node.location) obj_manip.execute! eval_postfix_increment_expr(node, obj_manip.result) end end def visit_postfix_decrement_expression(node) checkpoint(node.location) obj_manip = node.operand.accept(self) DelayedObjectDerivation.new(self, node, obj_manip) do checkpoint(node.location) obj_manip.execute! eval_postfix_decrement_expr(node, obj_manip.result) end end def_strict_object_derivation :visit_compound_literal_expression def visit_prefix_increment_expression(node) checkpoint(node.location) obj_manip = node.operand.accept(self) DelayedObjectDerivation.new(self, node, obj_manip) do checkpoint(node.location) obj_manip.execute! eval_prefix_increment_expr(node, obj_manip.result) end end def visit_prefix_decrement_expression(node) checkpoint(node.location) obj_manip = node.operand.accept(self) DelayedObjectDerivation.new(self, node, obj_manip) do checkpoint(node.location) obj_manip.execute! eval_prefix_decrement_expr(node, obj_manip.result) end end def_strict_object_derivation :visit_address_expression def visit_indirection_expression(node) checkpoint(node.location) obj_manip = node.operand.accept(self) DelayedObjectDerivation.new(self, node, obj_manip) do checkpoint(node.location) obj_manip.execute! eval_indirection_expr(node, obj_manip.result) end end def visit_unary_arithmetic_expression(node) checkpoint(node.location) obj_manip = node.operand.accept(self) DelayedObjectDerivation.new(self, node, obj_manip) do checkpoint(node.location) obj_manip.execute! eval_unary_arithmetic_expr(node, obj_manip.result) end end def_strict_object_derivation :visit_sizeof_expression def_strict_object_derivation :visit_sizeof_type_expression def_strict_object_derivation :visit_alignof_expression def_strict_object_derivation :visit_alignof_type_expression def visit_cast_expression(node) checkpoint(node.location) obj_manip = node.operand.accept(self) DelayedObjectDerivation.new(self, node, obj_manip) do checkpoint(node.location) obj_manip.execute! eval_cast_expr(node, obj_manip.result) end end def visit_multiplicative_expression(node) checkpoint(node.location) lhs_manip = node.lhs_operand.accept(self) rhs_manip = node.rhs_operand.accept(self) DelayedObjectDerivation.new(self, node, lhs_manip, rhs_manip) do checkpoint(node.location) lhs_manip.execute! rhs_manip.execute! eval_multiplicative_expr(node, lhs_manip.result, rhs_manip.result) end end def visit_additive_expression(node) checkpoint(node.location) lhs_manip = node.lhs_operand.accept(self) rhs_manip = node.rhs_operand.accept(self) DelayedObjectDerivation.new(self, node, lhs_manip, rhs_manip) do checkpoint(node.location) lhs_manip.execute! rhs_manip.execute! eval_additive_expr(node, lhs_manip.result, rhs_manip.result) end end def visit_shift_expression(node) checkpoint(node.location) lhs_manip = node.lhs_operand.accept(self) rhs_manip = node.rhs_operand.accept(self) DelayedObjectDerivation.new(self, node, lhs_manip, rhs_manip) do checkpoint(node.location) lhs_manip.execute! rhs_manip.execute! eval_shift_expr(node, lhs_manip.result, rhs_manip.result) end end def visit_relational_expression(node) checkpoint(node.location) ValueComparison.new(self, node, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_equality_expression(node) checkpoint(node.location) ValueComparison.new(self, node, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_and_expression(node) checkpoint(node.location) lhs_manip = node.lhs_operand.accept(self) rhs_manip = node.rhs_operand.accept(self) DelayedObjectDerivation.new(self, node, lhs_manip, rhs_manip) do checkpoint(node.location) lhs_manip.execute! rhs_manip.execute! eval_and_expr(node, lhs_manip.result, rhs_manip.result) end end def visit_exclusive_or_expression(node) checkpoint(node.location) lhs_manip = node.lhs_operand.accept(self) rhs_manip = node.rhs_operand.accept(self) DelayedObjectDerivation.new(self, node, lhs_manip, rhs_manip) do checkpoint(node.location) lhs_manip.execute! rhs_manip.execute! eval_exclusive_or_expr(node, lhs_manip.result, rhs_manip.result) end end def visit_inclusive_or_expression(node) checkpoint(node.location) lhs_manip = node.lhs_operand.accept(self) rhs_manip = node.rhs_operand.accept(self) DelayedObjectDerivation.new(self, node, lhs_manip, rhs_manip) do checkpoint(node.location) lhs_manip.execute! rhs_manip.execute! eval_inclusive_or_expr(node, lhs_manip.result, rhs_manip.result) end end def visit_logical_and_expression(node) checkpoint(node.location) LogicalAnd.new(self, node, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_logical_or_expression(node) checkpoint(node.location) LogicalOr.new(self, node, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def_strict_object_derivation :visit_conditional_expression def visit_simple_assignment_expression(node) checkpoint(node.location) lhs_manip = node.lhs_operand.accept(self) rhs_manip = node.rhs_operand.accept(self) DelayedObjectDerivation.new(self, node, lhs_manip, rhs_manip) do checkpoint(node.location) lhs_manip.execute! rhs_manip.execute! eval_simple_assignment_expr(node, lhs_manip.result, rhs_manip.result) end end def visit_compound_assignment_expression(node) checkpoint(node.location) lhs_manip = node.lhs_operand.accept(self) rhs_manip = node.rhs_operand.accept(self) DelayedObjectDerivation.new(self, node, lhs_manip, rhs_manip) do checkpoint(node.location) lhs_manip.execute! rhs_manip.execute! eval_compound_assignment_expr(node, lhs_manip.result, rhs_manip.result) end end def visit_comma_separated_expression(node) checkpoint(node.location) obj_manips = node.expressions.map { |expr| expr.accept(self) } DelayedObjectDerivation.new(self, node, *obj_manips) do checkpoint(node.location) obj_manips.map { |manip| manip.execute!; manip.result }.last end end private def commit_changes(manip) subclass_responsibility end extend Forwardable def_delegator :@interpreter, :monitor private :monitor end class ValueDomainNarrower < ValueDomainManipulator private def commit_changes(manip) manip.narrowed_values.each do |var, val| var.narrow_value_domain!(Operator::EQ, val) end end end class ValueDomainWidener < ValueDomainManipulator private def commit_changes(manip) manip.narrowed_values.each do |var, val| var.widen_value_domain!(Operator::EQ, val) end end end class NilValueDomainNarrower < ValueDomainManipulator def initialize(interp, branch_group) super(interp, nil) @branch_group = branch_group end def prepare! raise TypeError, "no preparation without expression." end private def commit_changes(*) @branch_group.all_controlling_variables.each do |var| var.narrow_value_domain!(Operator::EQ, var.type.arbitrary_value) end true end end class NilValueDomainWidener < ValueDomainManipulator def initialize(interp, branch_group) super(interp, nil) @branch_group = branch_group end def prepare! raise TypeError, "no preparation without expression." end private def commit_changes(*) @branch_group.all_controlling_variables.each do |var| var.widen_value_domain!(Operator::EQ, var.type.arbitrary_value) end true end end class ValueDomainNarrowing include InterpreterMediator include NotifierMediator include Conversion def initialize(manip, node, *children) @manipulator = manip @node = node @children = children @original_values = {} @narrowed_values = {} @result = nil end attr_reader :node attr_reader :narrowed_values attr_reader :result def load_original_values!(manip) @original_values = manip.narrowed_values @children.each { |child| child.load_original_values!(manip) } end def execute! @result = do_narrowing @children.each do |manip| @narrowed_values = manip.narrowed_values.merge(@narrowed_values) end ensure if @result && @result.variable? notify_variable_value_referred(node, @result) end if seqp = node.subsequent_sequence_point notify_sequence_point_reached(seqp) end end def ensure_result_equal_to(val) if @result.variable? && @result.designated_by_lvalue? if @result.value.scalar? && val.scalar? ensure_relation(@result, Operator::EQ, val) end end end protected attr_reader :original_values private def do_narrowing subclass_responsibility end def do_logical_arithmetic_conversion(node, lhs_var, rhs_var) lhs_conved, rhs_conved = do_usual_arithmetic_conversion(lhs_var, rhs_var) unless lhs_conved == lhs_var notify_implicit_conv_performed(node.lhs_operand, lhs_var, lhs_conved) end unless rhs_conved == rhs_var notify_implicit_conv_performed(node.rhs_operand, rhs_var, rhs_conved) end return lhs_conved, rhs_conved end def ensure_relation(var, op, val) # NOTE: To avoid over-narrowing. if val.definite? or var.value.contain?(val) && !val.contain?(var.value) target_val = save_original_value(var).dup target_val.narrow_domain!(op, val) update_narrowed_value(var, target_val) end end def save_original_value(var) @original_values[var.to_named_variable] ||= var.value.dup end def original_value_of(var) @original_values[var.to_named_variable] end def update_narrowed_value(var, new_val) @narrowed_values[var.to_named_variable] = new_val end def narrowing_merge!(lhs_manip, rhs_manip) lhs_vals = lhs_manip.narrowed_values rhs_vals = rhs_manip.narrowed_values @narrowed_values = lhs_vals.merge(rhs_vals) { |key, lhs_val, rhs_val| rslt_val = lhs_val.dup rslt_val.narrow_domain!(Operator::EQ, rhs_val) rslt_val } end def widening_merge!(lhs_manip, rhs_manip) lhs_vals = lhs_manip.narrowed_values rhs_vals = rhs_manip.narrowed_values @narrowed_values = lhs_vals.merge(rhs_vals) { |key, lhs_val, rhs_val| rslt_val = lhs_val.dup rslt_val.widen_domain!(Operator::EQ, rhs_val) rslt_val } end extend Forwardable def_delegator :@manipulator, :interpreter private :interpreter alias :_orig_interpret :interpret def interpret(node) case node when ObjectSpecifier if safely_evaluable_object_specifier?(node) _orig_interpret(node) else # NOTE: Nothing to do with an undeclared object. create_tmpvar end else _orig_interpret(node) end end def safely_evaluable_object_specifier?(obj_spec) variable_named(obj_spec.identifier.value) || function_named(obj_spec.identifier.value) || enumerator_named(obj_spec.identifier.value) end end class ValueComparison < ValueDomainNarrowing def initialize(manip, node, lhs_manip, rhs_manip) super @operator = ComparisonOperator.new(node.operator) @lhs_manip = lhs_manip @rhs_manip = rhs_manip end private def do_narrowing @lhs_manip.execute! lhs_var = object_to_variable(@lhs_manip.result, @node.lhs_operand) @rhs_manip.execute! rhs_var = object_to_variable(@rhs_manip.result, @node.rhs_operand) unless lhs_var.type.scalar? && rhs_var.type.scalar? return create_tmpvar(int_t) end unless lhs_var.value.scalar? && rhs_var.value.scalar? return create_tmpvar(int_t) end lhs_conved, rhs_conved = do_logical_arithmetic_conversion(@node, lhs_var, rhs_var) lhs_val = lhs_conved.value rhs_val = rhs_conved.value case @operator when Operator::EQ rslt_var = create_tmpvar(int_t, lhs_val == rhs_val) when Operator::NE rslt_var = create_tmpvar(int_t, lhs_val != rhs_val) when Operator::LT rslt_var = create_tmpvar(int_t, lhs_val < rhs_val) when Operator::GT rslt_var = create_tmpvar(int_t, lhs_val > rhs_val) when Operator::LE rslt_var = create_tmpvar(int_t, lhs_val <= rhs_val) when Operator::GE rslt_var = create_tmpvar(int_t, lhs_val >= rhs_val) else __NOTREACHED__ end notify_variable_value_referred(@node, lhs_var) notify_variable_value_referred(@node, rhs_var) case @operator when Operator::EQ, Operator::NE notify_equality_expr_evaled(@node, lhs_conved, rhs_conved, rslt_var) when Operator::LT, Operator::GT, Operator::LE, Operator::GE notify_relational_expr_evaled(@node, lhs_conved, rhs_conved, rslt_var) else __NOTREACHED__ end case when lhs_conved.designated_by_lvalue? ensure_relation(lhs_conved, @operator, rhs_val) when rhs_conved.designated_by_lvalue? ensure_relation(rhs_conved, @operator.for_commutation, lhs_val) else # NOTE: Domain of the rvalue should not be narrowed. end rslt_var end end class LogicalAnd < ValueDomainNarrowing def initialize(manip, node, lhs_manip, rhs_manip) super @lhs_manip = lhs_manip @rhs_manip = rhs_manip end private def do_narrowing @lhs_manip.execute! @lhs_manip.ensure_result_equal_to(scalar_value_of_true) lhs_var = object_to_variable(@lhs_manip.result, @node.lhs_operand) # NOTE: The ISO C99 standard says; # # 6.5.13 Logical AND operator # # Semantics # # 4 Unlike the bitwise binary & operator, the && operator guarantees # left-to-right evaluation; there is a sequence point after the # evaluation of the first operand. If the first operand compares equal # to 0, the second operand is not evaluated. notify_sequence_point_reached(SequencePoint.new(@node.lhs_operand)) # TODO: Must look about the short-circuit evaluation. @rhs_manip.load_original_values!(@lhs_manip) @rhs_manip.execute! @rhs_manip.ensure_result_equal_to(scalar_value_of_true) rhs_var = object_to_variable(@rhs_manip.result, @node.rhs_operand) notify_sequence_point_reached(SequencePoint.new(@node.rhs_operand)) narrowing_merge!(@lhs_manip, @rhs_manip) notify_variable_value_referred(@node, lhs_var) notify_variable_value_referred(@node, rhs_var) unless lhs_var.type.scalar? && rhs_var.type.scalar? return create_tmpvar(int_t) end unless lhs_var.value.scalar? && rhs_var.value.scalar? return create_tmpvar(int_t) end lhs_conved, rhs_conved = do_logical_arithmetic_conversion(@node, lhs_var, rhs_var) lhs_val = lhs_conved.value rhs_val = rhs_conved.value rslt_var = create_tmpvar(int_t, lhs_val.logical_and(rhs_val)) notify_logical_and_expr_evaled(@node, lhs_conved, rhs_conved, rslt_var) rslt_var end end class LogicalOr < ValueDomainNarrowing def initialize(manip, node, lhs_manip, rhs_manip) super @lhs_manip = lhs_manip @rhs_manip = rhs_manip end private def do_narrowing @lhs_manip.execute! @lhs_manip.ensure_result_equal_to(scalar_value_of_true) lhs_var = object_to_variable(@lhs_manip.result, @node.lhs_operand) # NOTE: The ISO C99 standard says; # # 6.5.14 Logical OR operator # # Semantics # # 4 Unlike the bitwise | operator, the || operator guarantees # left-to-right evaluation; there is a sequence point after the # evaluation of the first operand. If the first operand compares # unequal to 0, the second operand is not evaluated. notify_sequence_point_reached(SequencePoint.new(@node.lhs_operand)) # TODO: Must look about the short-circuit evaluation. # FIXME: Base value of the RHS narrowing should be updated to ensure that # the LHS condition is false. @rhs_manip.execute! @rhs_manip.ensure_result_equal_to(scalar_value_of_true) rhs_var = object_to_variable(@rhs_manip.result, @node.rhs_operand) notify_sequence_point_reached(SequencePoint.new(@node.rhs_operand)) widening_merge!(@lhs_manip, @rhs_manip) notify_variable_value_referred(@node, lhs_var) notify_variable_value_referred(@node, rhs_var) unless lhs_var.type.scalar? && rhs_var.type.scalar? return create_tmpvar(int_t) end unless lhs_var.value.scalar? && rhs_var.value.scalar? return create_tmpvar(int_t) end lhs_conved, rhs_conved = do_logical_arithmetic_conversion(@node, lhs_var, rhs_var) lhs_val = lhs_conved.value rhs_val = rhs_conved.value rslt_var = create_tmpvar(int_t, lhs_val.logical_or(rhs_val)) notify_logical_or_expr_evaled(@node, lhs_conved, rhs_conved, rslt_var) rslt_var end end class StrictObjectDerivation < ValueDomainNarrowing def initialize(manip, node) super(manip, node) @object = interpret(node) end private def do_narrowing if @object.variable? && @object.named? if orig_val = original_value_of(@object) @object = PhantomVariable.new(@object, orig_val) end end @object end end class DelayedObjectDerivation < ValueDomainNarrowing def initialize(manip, node, *children, &block) super(manip, node, *children) @block = block end private def do_narrowing @block.call end end class PhantomVariable < AliasVariable def initialize(named_var, phantom_val = nil) super(named_var) @base_var = named_var @phantom_val = phantom_val ? phantom_val : named_var.memory.read.dup end def value @phantom_val end def assign!(val, *) @phantom_val = val end def to_named_variable @base_var.to_named_variable end def pretty_print(pp) Summary.new(object_id, name, type, @phantom_val).pretty_print(pp) end Summary = Struct.new(:object_id, :name, :type, :value) private_constant :Summary end end end adlint-3.2.14/lib/adlint/cc1/const.rb0000644000004100000410000004241312340630463017253 0ustar www-datawww-data# C constant-expression evaluator. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/traits" module AdLint #:nodoc: module Cc1 #:nodoc: module ConstantEvaluator # NOTE: Host class of this module must include InterpreterMediator. def eval_constant(const_spec) eval_as_integer_constant(const_spec.constant.value) or eval_as_floating_constant(const_spec.constant.value) or eval_as_character_constant(const_spec.constant.value) end private def eval_as_integer_constant(str) # NOTE: The ISO C99 standard says; # # 6.4.4.1 Integer constants # # 5 The type of an integer constant is the first of the corresponding # list in which its value can be represented. # # | decimal | octal or hexadecimal # ------------+------------------------+------------------------ # unsuffixed | int | int # | long int | unsigned int # | long long int | long int # | | unsigned long int # | | long long int # | | unsigned long long int # ------------+------------------------+------------------------ # u or U | unsigned int | unsigned int # | unsigned long int | unsigned long int # | unsigned long long int | unsigned long long int # ------------+------------------------+------------------------ # l or L | long int | long int # | long long int | unsigned long int # | | long long int # | | unsigned long long int # ------------+------------------------+------------------------ # u or U and | unsigned long int | unsigned long int # l or L | unsigned long long int | unsigned long long int # ------------+------------------------+------------------------ # ll or LL | long long int | long long int # | | unsigned long long int # ------------+------------------------+------------------------ # u or U and | unsigned long long int | unsigned long long int # ll or LL | | # NOTE: For binary constants. case str when /\A0b([01]+)(?:ULL|LLU)\z/i return eval_as_non_decimal_integer_constant_with_ull($1.to_i(2)) when /\A0b([01]+)LL\z/i return eval_as_non_decimal_integer_constant_with_ll($1.to_i(2)) when /\A0b([01]+)(?:UL|LU)\z/i return eval_as_non_decimal_integer_constant_with_ul($1.to_i(2)) when /\A0b([01]+)L\z/i return eval_as_non_decimal_integer_constant_with_l($1.to_i(2)) when /\A0b([01]+)U\z/i return eval_as_non_decimal_integer_constant_with_u($1.to_i(2)) when /\A0b([01]+)\z/i return eval_as_non_decimal_integer_constant_unsuffixed($1.to_i(2)) end # NOTE: For octal constants. case str when /\A0([0-9]+)(?:ULL|LLU)\z/i return eval_as_non_decimal_integer_constant_with_ull($1.to_i(8)) when /\A0([0-9]+)LL\z/i return eval_as_non_decimal_integer_constant_with_ll($1.to_i(8)) when /\A0([0-9]+)(?:UL|LU)\z/i return eval_as_non_decimal_integer_constant_with_ul($1.to_i(8)) when /\A0([0-9]+)L\z/i return eval_as_non_decimal_integer_constant_with_l($1.to_i(8)) when /\A0([0-9]+)U\z/i return eval_as_non_decimal_integer_constant_with_u($1.to_i(8)) when /\A0([0-9]+)\z/ return eval_as_non_decimal_integer_constant_unsuffixed($1.to_i(8)) end # NOTE: For decimal constants. case str when /\A([0-9]+)(?:ULL|LLU)\z/i return eval_as_decimal_integer_constant_with_ull($1.to_i(10)) when /\A([0-9]+)LL\z/i return eval_as_decimal_integer_constant_with_ll($1.to_i(10)) when /\A([0-9]+)(?:UL|LU)\z/i return eval_as_decimal_integer_constant_with_ul($1.to_i(10)) when /\A([0-9]+)L\z/i return eval_as_decimal_integer_constant_with_l($1.to_i(10)) when /\A([0-9]+)U\z/i return eval_as_decimal_integer_constant_with_u($1.to_i(10)) when /\A([0-9]+)\z/ return eval_as_decimal_integer_constant_unsuffixed($1.to_i(10)) end # NOTE: For hexadecimal constants. case str when /\A0x([0-9A-F]+)(?:ULL|LLU)\z/i return eval_as_non_decimal_integer_constant_with_ull($1.to_i(16)) when /\A0x([0-9A-F]+)LL\z/i return eval_as_non_decimal_integer_constant_with_ll($1.to_i(16)) when /\A0x([0-9A-F]+)(?:UL|LU)\z/i return eval_as_non_decimal_integer_constant_with_ul($1.to_i(16)) when /\A0x([0-9A-F]+)L\z/i return eval_as_non_decimal_integer_constant_with_l($1.to_i(16)) when /\A0x([0-9A-F]+)U\z/i return eval_as_non_decimal_integer_constant_with_u($1.to_i(16)) when /\A0x([0-9A-F]+)\z/i return eval_as_non_decimal_integer_constant_unsuffixed($1.to_i(16)) end nil end def eval_as_floating_constant(str) # TODO: Must implement hexadecimal-floating-constant evaluation. case str when /\A([0-9]*\.[0-9]*E[+-]?[0-9]+)\z/i, /\A([0-9]+\.?E[+-]?[0-9]+)\z/i, /\A([0-9]*\.[0-9]+|[0-9]+\.)\z/ return create_tmpvar(double_t, scalar_value_of($1.to_f)) when /\A([0-9]*\.[0-9]*E[+-]?[0-9]+)F\z/i, /\A([0-9]+\.?E[+-]?[0-9]+)F\z/i, /\A([0-9]*\.[0-9]+|[0-9]+\.)F\z/i return create_tmpvar(float_t, scalar_value_of($1.to_f)) when /\A([0-9]*\.[0-9]*E[+-]?[0-9]+)L\z/i, /\A([0-9]+\.?E[+-]?[0-9]+)L\z/i, /\A([0-9]*\.[0-9]+|[0-9]+\.)L\z/i return create_tmpvar(long_double_t, scalar_value_of($1.to_f)) end nil end def eval_as_character_constant(str) if str =~ /\A(L?)'(.*)'\z/i case $2.length when 0 char_code = 0 when 1 char_code = $2[0].ord else char_code = $2[0] == "\\" ? EscapeSequence.new($2).value : $2[0].ord end if $1 == "L" create_tmpvar(wchar_t, scalar_value_of(char_code)) else create_tmpvar(int_t, scalar_value_of(char_code)) end else nil end end def eval_as_decimal_integer_constant_unsuffixed(i) case when int_range.include?(i) create_tmpvar(int_t, scalar_value_of(i)) when long_int_range.include?(i) create_tmpvar(long_int_t, scalar_value_of(i)) when long_long_int_range.include?(i) create_tmpvar(long_long_int_t, scalar_value_of(i)) else # NOTE: The ISO C99 standard says; # # 6.4.4.1 Integer constants # # 6 If an integer constant cannot be represented by any type in its # list and has no extended integer type, then the integer constant # has no type. # # NOTE: Use ExtendedBigIntType for unrepresentable integer constants. create_tmpvar(extended_big_int_t, scalar_value_of(i)) end end def eval_as_decimal_integer_constant_with_u(i) case when unsigned_int_range.include?(i) create_tmpvar(unsigned_int_t, scalar_value_of(i)) when unsigned_long_int_range.include?(i) create_tmpvar(unsigned_long_int_t, scalar_value_of(i)) when unsigned_long_long_int_range.include?(i) create_tmpvar(unsigned_long_long_int_t, scalar_value_of(i)) else # NOTE: The ISO C99 standard says; # # 6.4.4.1 Integer constants # # 6 If an integer constant cannot be represented by any type in its # list and has no extended integer type, then the integer constant # has no type. # # NOTE: Use ExtendedBigIntType for unrepresentable integer constants. create_tmpvar(extended_big_int_t, scalar_value_of(i)) end end def eval_as_decimal_integer_constant_with_l(i) case when long_int_range.include?(i) create_tmpvar(long_int_t, scalar_value_of(i)) when long_long_int_range.include?(i) create_tmpvar(long_long_int_t, scalar_value_of(i)) else # NOTE: The ISO C99 standard says; # # 6.4.4.1 Integer constants # # 6 If an integer constant cannot be represented by any type in its # list and has no extended integer type, then the integer constant # has no type. # # NOTE: Use ExtendedBigIntType for unrepresentable integer constants. create_tmpvar(extended_big_int_t, scalar_value_of(i)) end end def eval_as_decimal_integer_constant_with_ul(i) case when unsigned_long_int_range.include?(i) create_tmpvar(unsigned_long_int_t, scalar_value_of(i)) when unsigned_long_long_int_range.include?(i) create_tmpvar(unsigned_long_long_int_t, scalar_value_of(i)) else # NOTE: The ISO C99 standard says; # # 6.4.4.1 Integer constants # # 6 If an integer constant cannot be represented by any type in its # list and has no extended integer type, then the integer constant # has no type. # # NOTE: Use ExtendedBigIntType for unrepresentable integer constants. create_tmpvar(extended_big_int_t, scalar_value_of(i)) end end def eval_as_decimal_integer_constant_with_ll(i) case when long_long_int_range.include?(i) create_tmpvar(long_long_int_t, scalar_value_of(i)) else # NOTE: The ISO C99 standard says; # # 6.4.4.1 Integer constants # # 6 If an integer constant cannot be represented by any type in its # list and has no extended integer type, then the integer constant # has no type. # # NOTE: Use ExtendedBigIntType for unrepresentable integer constants. create_tmpvar(extended_big_int_t, scalar_value_of(i)) end end def eval_as_decimal_integer_constant_with_ull(i) case when unsigned_long_long_int_range.include?(i) create_tmpvar(unsigned_long_long_int_t, scalar_value_of(i)) else # NOTE: The ISO C99 standard says; # # 6.4.4.1 Integer constants # # 6 If an integer constant cannot be represented by any type in its # list and has no extended integer type, then the integer constant # has no type. # # NOTE: Use ExtendedBigIntType for unrepresentable integer constants. create_tmpvar(extended_big_int_t, scalar_value_of(i)) end end def eval_as_non_decimal_integer_constant_unsuffixed(i) case when int_range.include?(i) create_tmpvar(int_t, scalar_value_of(i)) when unsigned_int_range.include?(i) create_tmpvar(unsigned_int_t, scalar_value_of(i)) when long_int_range.include?(i) create_tmpvar(long_int_t, scalar_value_of(i)) when unsigned_long_int_range.include?(i) create_tmpvar(unsigned_long_int_t, scalar_value_of(i)) when long_long_int_range.include?(i) create_tmpvar(long_long_int_t, scalar_value_of(i)) when unsigned_long_long_int_range.include?(i) create_tmpvar(unsigned_long_long_int_t, scalar_value_of(i)) else # NOTE: The ISO C99 standard says; # # 6.4.4.1 Integer constants # # 6 If an integer constant cannot be represented by any type in its # list and has no extended integer type, then the integer constant # has no type. # # NOTE: Use ExtendedBigIntType for unrepresentable integer constants. create_tmpvar(extended_big_int_t, scalar_value_of(i)) end end def eval_as_non_decimal_integer_constant_with_u(i) case when unsigned_int_range.include?(i) create_tmpvar(unsigned_int_t, scalar_value_of(i)) when unsigned_long_int_range.include?(i) create_tmpvar(unsigned_long_int_t, scalar_value_of(i)) when unsigned_long_long_int_range.include?(i) create_tmpvar(unsigned_long_long_int_t, scalar_value_of(i)) else # NOTE: The ISO C99 standard says; # # 6.4.4.1 Integer constants # # 6 If an integer constant cannot be represented by any type in its # list and has no extended integer type, then the integer constant # has no type. # # NOTE: Use ExtendedBigIntType for unrepresentable integer constants. create_tmpvar(extended_big_int_t, scalar_value_of(i)) end end def eval_as_non_decimal_integer_constant_with_l(i) case when long_int_range.include?(i) create_tmpvar(long_int_t, scalar_value_of(i)) when unsigned_long_int_range.include?(i) create_tmpvar(unsigned_long_int_t, scalar_value_of(i)) when long_long_int_range.include?(i) create_tmpvar(long_long_int_t, scalar_value_of(i)) when unsigned_long_long_int_range.include?(i) create_tmpvar(unsigned_long_long_int_t, scalar_value_of(i)) else # NOTE: The ISO C99 standard says; # # 6.4.4.1 Integer constants # # 6 If an integer constant cannot be represented by any type in its # list and has no extended integer type, then the integer constant # has no type. # # NOTE: Use ExtendedBigIntType for unrepresentable integer constants. create_tmpvar(extended_big_int_t, scalar_value_of(i)) end end def eval_as_non_decimal_integer_constant_with_ul(i) case when unsigned_long_int_range.include?(i) create_tmpvar(unsigned_long_int_t, scalar_value_of(i)) when unsigned_long_long_int_range.include?(i) create_tmpvar(unsigned_long_long_int_t, scalar_value_of(i)) else # NOTE: The ISO C99 standard says; # # 6.4.4.1 Integer constants # # 6 If an integer constant cannot be represented by any type in its # list and has no extended integer type, then the integer constant # has no type. # # NOTE: Use ExtendedBigIntType for unrepresentable integer constants. create_tmpvar(extended_big_int_t, scalar_value_of(i)) end end def eval_as_non_decimal_integer_constant_with_ll(i) case when long_long_int_range.include?(i) create_tmpvar(long_long_int_t, scalar_value_of(i)) when unsigned_long_long_int_range.include?(i) create_tmpvar(unsigned_long_long_int_t, scalar_value_of(i)) else # NOTE: The ISO C99 standard says; # # 6.4.4.1 Integer constants # # 6 If an integer constant cannot be represented by any type in its # list and has no extended integer type, then the integer constant # has no type. # # NOTE: Use ExtendedBigIntType for unrepresentable integer constants. create_tmpvar(extended_big_int_t, scalar_value_of(i)) end end def eval_as_non_decimal_integer_constant_with_ull(i) case when unsigned_long_long_int_range.include?(i) create_tmpvar(unsigned_long_long_int_t, scalar_value_of(i)) else # NOTE: The ISO C99 standard says; # # 6.4.4.1 Integer constants # # 6 If an integer constant cannot be represented by any type in its # list and has no extended integer type, then the integer constant # has no type. # # NOTE: Use ExtendedBigIntType for unrepresentable integer constants. create_tmpvar(extended_big_int_t, scalar_value_of(i)) end end def int_range int_t.min..int_t.max end def long_int_range long_int_t.min..long_int_t.max end def long_long_int_range long_long_int_t.min..long_long_int_t.max end def unsigned_int_range unsigned_int_t.min..unsigned_int_t.max end def unsigned_long_int_range unsigned_long_int_t.min..unsigned_long_int_t.max end def unsigned_long_long_int_range unsigned_long_long_t.min..unsigned_long_long_t.max end end end end adlint-3.2.14/lib/adlint/cc1/domain.rb0000644000004100000410000072441212340630463017402 0ustar www-datawww-data# Domain of values bound to variables. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/cc1/operator" module AdLint #:nodoc: module Cc1 #:nodoc: module ValueDomainFactory # NOTE: To avoid huge composite value-domain creation in the interp phase. COMPOSITE_MAX_COMPLEXITY = 16 private_constant :COMPOSITE_MAX_COMPLEXITY def equal_to(numeric, logical_shr) EqualToValueDomain.new(numeric, logical_shr) end # NOTE: Value of #equal_to depends on the `logical_shr' parameter derived # from the traits object. # But the traits object is unique in an AdLint instance. # So, it is safe to treat this method as unary method for improving # the performance. memoize :equal_to, key_indices: [0] def not_equal_to(numeric, logical_shr) equal_to(numeric, logical_shr).inversion end # NOTE: Value of #not_equal_to depends on the `logical_shr' parameter # derived from the traits object. # But the traits object is unique in an AdLint instance. # So, it is safe to treat this method as unary method for improving # the performance. memoize :not_equal_to, key_indices: [0] def less_than(numeric, logical_shr) LessThanValueDomain.new(numeric, logical_shr) end # NOTE: Value of #less_than depends on the `logical_shr' parameter derived # from the traits object. # But the traits object is unique in an AdLint instance. # So, it is safe to treat this method as unary method for improving # the performance. memoize :less_than, key_indices: [0] def greater_than(numeric, logical_shr) GreaterThanValueDomain.new(numeric, logical_shr) end # NOTE: Value of #greater_than depends on the `logical_shr' parameter # derived from the traits object. # But the traits object is unique in an AdLint instance. # So, it is safe to treat this method as unary method for improving # the performance. memoize :greater_than, key_indices: [0] def less_than_or_equal_to(numeric, logical_shr) less_than(numeric, logical_shr).union(equal_to(numeric, logical_shr)) end # NOTE: Value of #less_than_or_equal_to depends on the `logical_shr' # parameter derived from the traits object. # But the traits object is unique in an AdLint instance. # So, it is safe to treat this method as unary method for improving # the performance. memoize :less_than_or_equal_to, key_indices: [0] def greater_than_or_equal_to(numeric, logical_shr) greater_than(numeric, logical_shr).union(equal_to(numeric, logical_shr)) end # NOTE: Value of #greater_than_or_equal_to depends on the `logical_shr' # parameter derived from the traits object. # But the traits object is unique in an AdLint instance. # So, it is safe to treat this method as unary method for improving # the performance. memoize :greater_than_or_equal_to, key_indices: [0] def of_true(logical_shr) not_equal_to(0, logical_shr) end # NOTE: Value of #of_true depends on the `logical_shr' parameter derived # from the traits object. # But the traits object is unique in an AdLint instance. # So, it is safe to treat this method as nullary method for improving # the performance. memoize :of_true, force_nullary: true def of_false(logical_shr) equal_to(0, logical_shr) end # NOTE: Value of #of_false depends on the `logical_shr' parameter derived # from the traits object. # But the traits object is unique in an AdLint instance. # So, it is safe to treat this method as nullary method for improving # the performance. memoize :of_false, force_nullary: true def of_unlimited(logical_shr) UnlimitedValueDomain.new(logical_shr) end # NOTE: Value of #of_unlimited depends on the `logical_shr' parameter # derived from the traits object. # But the traits object is unique in an AdLint instance. # So, it is safe to treat this method as nullary method for improving # the performance. memoize :of_unlimited, force_nullary: true def of_nil(logical_shr) NilValueDomain.new(logical_shr) end # NOTE: Value of #of_nil depends on the `logical_shr' parameter derived # from the traits object. # But the traits object is unique in an AdLint instance. # So, it is safe to treat this method as nullary method for improving # the performance. memoize :of_nil, force_nullary: true def of_nan(logical_shr) NaN.new(logical_shr) end # NOTE: Value of #of_nan depends on the `logical_shr' parameter derived # from the traits object. # But the traits object is unique in an AdLint instance. # So, it is safe to treat this method as nullary method for improving # the performance. memoize :of_nan, force_nullary: true def of_intersection(lhs_dom, rhs_dom) case lhs_dom when UndefinedValueDomain lhs_dom = lhs_dom.domain undefined = true end case rhs_dom when UndefinedValueDomain rhs_dom = rhs_dom.domain undefined = true end case when lhs_dom.empty? intersection = lhs_dom when rhs_dom.empty? intersection = rhs_dom when lhs_dom.contain?(rhs_dom) intersection = rhs_dom when rhs_dom.contain?(lhs_dom) intersection = lhs_dom when lhs_dom.intersect?(rhs_dom) intersection = _create_intersection(lhs_dom, rhs_dom) else intersection = of_nil(lhs_dom.logical_shr? && rhs_dom.logical_shr?) end undefined ? of_undefined(intersection) : intersection end memoize :of_intersection def of_union(lhs_dom, rhs_dom) case lhs_dom when UndefinedValueDomain lhs_dom = lhs_dom.domain undefined = true end case rhs_dom when UndefinedValueDomain rhs_dom = rhs_dom.domain undefined = true end case when lhs_dom.empty? union = rhs_dom when rhs_dom.empty? union = lhs_dom when lhs_dom.contain?(rhs_dom) union = lhs_dom when rhs_dom.contain?(lhs_dom) union = rhs_dom else union = _create_union(lhs_dom, rhs_dom) end undefined ? of_undefined(union) : union end memoize :of_union def of_undefined(dom) if dom.undefined? dom else UndefinedValueDomain.new(dom) end end memoize :of_undefined def of_ambiguous(undefined, logical_shr) AmbiguousValueDomain.new(undefined, logical_shr) end # NOTE: Value of #of_ambiguous depends on the `logical_shr' parameter # derived from the traits object. # But the traits object is unique in an AdLint instance. # So, it is safe to treat this method as unary method for improving # the performance. memoize :of_ambiguous, key_indices: [0] def _create_intersection(lhs_dom, rhs_dom) expected = lhs_dom.complexity + rhs_dom.complexity if expected < COMPOSITE_MAX_COMPLEXITY IntersectionValueDomain.new(lhs_dom, rhs_dom) else of_ambiguous(lhs_dom.undefined? || rhs_dom.undefined?, lhs_dom.logical_shr? && rhs_dom.logical_shr?) end end memoize :_create_intersection def _create_union(lhs_dom, rhs_dom) expected = lhs_dom.complexity + rhs_dom.complexity if expected < COMPOSITE_MAX_COMPLEXITY UnionValueDomain.new(lhs_dom, rhs_dom) else of_ambiguous(lhs_dom.undefined? || rhs_dom.undefined?, lhs_dom.logical_shr? && rhs_dom.logical_shr?) end end memoize :_create_union def clear_memos clear_memo_of__equal_to clear_memo_of__not_equal_to clear_memo_of__less_than clear_memo_of__greater_than clear_memo_of__less_than_or_equal_to clear_memo_of__greater_than_or_equal_to clear_memo_of__of_true clear_memo_of__of_false clear_memo_of__of_unlimited clear_memo_of__of_nil clear_memo_of__of_nan clear_memo_of__of_intersection clear_memo_of__of_union clear_memo_of__of_undefined clear_memo_of__of_ambiguous clear_memo_of___create_intersection clear_memo_of___create_union end end # == DESCRIPTION # === ValueDomain class hierarchy # ValueDomain <------------------------------+ # <-- NilValueDomain | # <-- UnlimitedValueDomain | # <-- NaN | # <-- EqualToValueDomain | # <-- LessThanValueDomain | # <-- GreaterThanValueDomain | # <-- CompositeValueDomain <>--------------+ # <-- IntersectionValueDomain <------+ # <-- UnionValueDomain | # <-- UndefinedValueDomain <>--------------+ # <-- AmbiguousValueDomain class ValueDomain # NOTE: Instances of ValueDomain class are immutable. It is safe to share # the instance of the ValueDomain class of the same value. extend ValueDomainFactory def initialize(logical_shr) @logical_shr = logical_shr end def empty? subclass_responsibility end def nan? subclass_responsibility end def undefined? subclass_responsibility end def ambiguous? subclass_responsibility end def logical_shr? @logical_shr end def contain?(domain_or_numeric) case domain_or_numeric when ValueDomain contain_value_domain?(domain_or_numeric) when Numeric dom = ValueDomain.equal_to(domain_or_numeric, logical_shr?) contain_value_domain?(dom) else raise TypeError, "`#{domain_or_numeric.inspect}' " + "must be kind of ValueDomain or Numeric." end end def contain_value_domain?(rhs_dom) subclass_responsibility end def _contain_nil?(lhs_dom, rhs_dom = self) subclass_responsibility end def _contain_unlimited?(lhs_dom, rhs_dom = self) subclass_responsibility end def _contain_equal_to?(lhs_dom, rhs_dom = self) subclass_responsibility end def _contain_less_than?(lhs_dom, rhs_dom = self) subclass_responsibility end def _contain_greater_than?(lhs_dom, rhs_dom = self) subclass_responsibility end def _contain_intersection?(lhs_dom, rhs_dom = self) subclass_responsibility end def _contain_union?(lhs_dom, rhs_dom = self) subclass_responsibility end def intersect?(rhs_dom) subclass_responsibility end def _intersect_nil?(lhs_dom, rhs_dom = self) subclass_responsibility end def _intersect_unlimited?(lhs_dom, rhs_dom = self) subclass_responsibility end def _intersect_equal_to?(lhs_dom, rhs_dom = self) subclass_responsibility end def _intersect_less_than?(lhs_dom, rhs_dom = self) subclass_responsibility end def _intersect_greater_than?(lhs_dom, rhs_dom = self) subclass_responsibility end def narrow(op, ope_dom) case op when Operator::EQ _narrow_by_eq(ope_dom) when Operator::NE _narrow_by_ne(ope_dom) when Operator::LT _narrow_by_lt(ope_dom) when Operator::GT _narrow_by_gt(ope_dom) when Operator::LE _narrow_by_le(ope_dom) when Operator::GE _narrow_by_ge(ope_dom) else __NOTREACHED__ end end def _narrow_by_eq(rhs_dom, lhs_dom = self) subclass_responsibility end def _narrow_nil_by_eq(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_unlimited_by_eq(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_equal_to_by_eq(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_less_than_by_eq(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_greater_than_by_eq(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_by_ne(rhs_dom, lhs_dom = self) subclass_responsibility end def _narrow_nil_by_ne(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_unlimited_by_ne(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_equal_to_by_ne(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_less_than_by_ne(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_greater_than_by_ne(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_by_lt(rhs_dom, lhs_dom = self) subclass_responsibility end def _narrow_nil_by_lt(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_unlimited_by_lt(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_equal_to_by_lt(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_less_than_by_lt(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_greater_than_by_lt(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_by_gt(rhs_dom, lhs_dom = self) subclass_responsibility end def _narrow_nil_by_gt(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_unlimited_by_gt(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_equal_to_by_gt(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_less_than_by_gt(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_greater_than_by_gt(lhs_dom, rhs_dom = self) subclass_responsibility end def _narrow_by_le(rhs_dom, lhs_dom = self) _narrow_by_lt(rhs_dom).union(_narrow_by_eq(rhs_dom)) end def _narrow_by_ge(rhs_dom, lhs_dom = self) _narrow_by_gt(rhs_dom).union(_narrow_by_eq(rhs_dom)) end def widen(op, ope_dom) case op when Operator::EQ _widen_by_eq(ope_dom) when Operator::NE _widen_by_ne(ope_dom) when Operator::LT _widen_by_lt(ope_dom) when Operator::GT _widen_by_gt(ope_dom) when Operator::LE _widen_by_le(ope_dom) when Operator::GE _widen_by_ge(ope_dom) else __NOTREACHED__ end end def _widen_by_eq(rhs_dom, lhs_dom = self) lhs_dom.union(rhs_dom) end def _widen_by_ne(rhs_dom, lhs_dom = self) lhs_dom.union(rhs_dom.inversion) end def _widen_by_lt(rhs_dom, lhs_dom = self) lhs_dom.union(ValueDomain.of_unlimited(logical_shr?).narrow( Operator::LT, rhs_dom)) end def _widen_by_gt(rhs_dom, lhs_dom = self) lhs_dom.union(ValueDomain.of_unlimited(logical_shr?).narrow( Operator::GT, rhs_dom)) end def _widen_by_le(rhs_dom, lhs_dom = self) _widen_by_lt(rhs_dom).union(_widen_by_eq(rhs_dom)) end def _widen_by_ge(rhs_dom, lhs_dom = self) _widen_by_gt(rhs_dom).union(_widen_by_eq(rhs_dom)) end def inversion subclass_responsibility end def ~ subclass_responsibility end def +@ subclass_responsibility end def -@ subclass_responsibility end def +(rhs_dom) subclass_responsibility end def _add_nil(lhs_dom, rhs_dom = self) subclass_responsibility end def _add_unlimited(lhs_dom, rhs_dom = self) subclass_responsibility end def _add_equal_to(lhs_dom, rhs_dom = self) subclass_responsibility end def _add_less_than(lhs_dom, rhs_dom = self) subclass_responsibility end def _add_greater_than(lhs_dom, rhs_dom = self) subclass_responsibility end def -(rhs_dom) self + -rhs_dom end def *(rhs_dom) # NOTE: Operator * cannot be defined by `LHS / (1.0 / RHS)'. # Because `1.0 / RHS' will make NaN, when the value domain of the # right hand side contains 0. subclass_responsibility end def _mul_nil(lhs_dom, rhs_dom = self) subclass_responsibility end def _mul_unlimited(lhs_dom, rhs_dom = self) subclass_responsibility end def _mul_equal_to(lhs_dom, rhs_dom = self) subclass_responsibility end def _mul_less_than(lhs_dom, rhs_dom = self) subclass_responsibility end def _mul_greater_than(lhs_dom, rhs_dom = self) subclass_responsibility end def /(rhs_dom) subclass_responsibility end def _div_nil(lhs_dom, rhs_dom = self) subclass_responsibility end def _div_unlimited(lhs_dom, rhs_dom = self) subclass_responsibility end def _div_equal_to(lhs_dom, rhs_dom = self) subclass_responsibility end def _div_less_than(lhs_dom, rhs_dom = self) subclass_responsibility end def _div_greater_than(lhs_dom, rhs_dom = self) subclass_responsibility end def %(rhs_dom) self - rhs_dom * (self / rhs_dom).coerce_to_integer end def &(rhs_dom) subclass_responsibility end def _and_nil(lhs_dom, rhs_dom = self) subclass_responsibility end def _and_unlimited(lhs_dom, rhs_dom = self) subclass_responsibility end def _and_equal_to(lhs_dom, rhs_dom = self) subclass_responsibility end def _and_less_than(lhs_dom, rhs_dom = self) subclass_responsibility end def _and_greater_than(lhs_dom, rhs_dom = self) subclass_responsibility end def |(rhs_dom) subclass_responsibility end def _or_nil(lhs_dom, rhs_dom = self) subclass_responsibility end def _or_unlimited(lhs_dom, rhs_dom = self) subclass_responsibility end def _or_equal_to(lhs_dom, rhs_dom = self) subclass_responsibility end def _or_less_than(lhs_dom, rhs_dom = self) subclass_responsibility end def _or_greater_than(lhs_dom, rhs_dom = self) subclass_responsibility end def ^(rhs_dom) subclass_responsibility end def _xor_nil(lhs_dom, rhs_dom = self) subclass_responsibility end def _xor_unlimited(lhs_dom, rhs_dom = self) subclass_responsibility end def _xor_equal_to(lhs_dom, rhs_dom = self) subclass_responsibility end def _xor_less_than(lhs_dom, rhs_dom = self) subclass_responsibility end def _xor_greater_than(lhs_dom, rhs_dom = self) subclass_responsibility end def <<(rhs_dom) subclass_responsibility end def _shl_nil(lhs_dom, rhs_dom = self) subclass_responsibility end def _shl_unlimited(lhs_dom, rhs_dom = self) subclass_responsibility end def _shl_equal_to(lhs_dom, rhs_dom = self) subclass_responsibility end def _shl_less_than(lhs_dom, rhs_dom = self) subclass_responsibility end def _shl_greater_than(lhs_dom, rhs_dom = self) subclass_responsibility end def >>(rhs_dom) subclass_responsibility end def _shr_nil(lhs_dom, rhs_dom = self) subclass_responsibility end def _shr_unlimited(lhs_dom, rhs_dom = self) subclass_responsibility end def _shr_equal_to(lhs_dom, rhs_dom = self) subclass_responsibility end def _shr_less_than(lhs_dom, rhs_dom = self) subclass_responsibility end def _shr_greater_than(lhs_dom, rhs_dom = self) subclass_responsibility end def ! subclass_responsibility end def <(rhs_dom) subclass_responsibility end def _less_nil(lhs_dom, rhs_dom = self) subclass_responsibility end def _less_unlimited(lhs_dom, rhs_dom = self) subclass_responsibility end def _less_equal_to(lhs_dom, rhs_dom = self) subclass_responsibility end def _less_less_than(lhs_dom, rhs_dom = self) subclass_responsibility end def _less_greater_than(lhs_dom, rhs_dom = self) subclass_responsibility end def >(rhs_dom) rhs_dom < self end def ==(rhs_dom) # NOTE: Operator == cannot be defined by `!(LHS < RHS || LHS > RHS)'. # When the value domain of the left hand side is (--<===>-<===>--), # and the value domain of the right hand side is (-------|-------). # `LHS < RHS' should make `true or false' because values in the # left hand side may be less than or greater than the value in # the right hand side. # `LHS > RHS' should make `true or false', too. # So, `!(LHS < RHS) && !(LHS > RHS)' will make `true or false'. subclass_responsibility end def _equal_nil(lhs_dom, rhs_dom = self) subclass_responsibility end def _equal_unlimited(lhs_dom, rhs_dom = self) subclass_responsibility end def _equal_equal_to(lhs_dom, rhs_dom = self) subclass_responsibility end def _equal_less_than(lhs_dom, rhs_dom = self) subclass_responsibility end def _equal_greater_than(lhs_dom, rhs_dom = self) subclass_responsibility end def !=(rhs_dom) # NOTE: Operator != cannot be defined by `!(LHS == RHS)'. # When the value domain of the left hand side or the right hand # side is NilValueDomain, `LHS == RHS' should make `false'. # But `LHS != RHS' should make `false', too. subclass_responsibility end def _not_equal_nil(lhs_dom, rhs_dom = self) subclass_responsibility end def _not_equal_unlimited(lhs_dom, rhs_dom = self) subclass_responsibility end def _not_equal_equal_to(lhs_dom, rhs_dom = self) subclass_responsibility end def _not_equal_less_than(lhs_dom, rhs_dom = self) subclass_responsibility end def _not_equal_greater_than(lhs_dom, rhs_dom = self) subclass_responsibility end def <=(rhs_dom) (self < rhs_dom).logical_or(self == rhs_dom) end def >=(rhs_dom) (self > rhs_dom).logical_or(self == rhs_dom) end def logical_and(rhs_dom) # NOTE: Operator && cannot be defined as a method in Ruby. subclass_responsibility end def _logical_and_nil(lhs_dom, rhs_dom = self) subclass_responsibility end def _logical_and_unlimited(lhs_dom, rhs_dom = self) subclass_responsibility end def _logical_and_equal_to(lhs_dom, rhs_dom = self) subclass_responsibility end def _logical_and_less_than(lhs_dom, rhs_dom = self) subclass_responsibility end def _logical_and_greater_than(lhs_dom, rhs_dom = self) subclass_responsibility end def logical_or(rhs_dom) # NOTE: Operator || cannot be defined as a method in Ruby. subclass_responsibility end def _logical_or_nil(lhs_dom, rhs_dom = self) subclass_responsibility end def _logical_or_unlimited(lhs_dom, rhs_dom = self) subclass_responsibility end def _logical_or_equal_to(lhs_dom, rhs_dom = self) subclass_responsibility end def _logical_or_less_than(lhs_dom, rhs_dom = self) subclass_responsibility end def _logical_or_greater_than(lhs_dom, rhs_dom = self) subclass_responsibility end def intersection(rhs_dom) subclass_responsibility end def _intersection_nil(lhs_dom, rhs_dom = self) subclass_responsibility end def _intersection_unlimited(lhs_dom, rhs_dom = self) subclass_responsibility end def _intersection_equal_to(lhs_dom, rhs_dom = self) subclass_responsibility end def _intersection_less_than(lhs_dom, rhs_dom = self) subclass_responsibility end def _intersection_greater_than(lhs_dom, rhs_dom = self) subclass_responsibility end def union(rhs_dom) subclass_responsibility end def _union_nil(lhs_dom, rhs_dom = self) subclass_responsibility end def _union_unlimited(lhs_dom, rhs_dom = self) subclass_responsibility end def _union_equal_to(lhs_dom, rhs_dom = self) subclass_responsibility end def _union_less_than(lhs_dom, rhs_dom = self) subclass_responsibility end def _union_greater_than(lhs_dom, rhs_dom = self) subclass_responsibility end def coerce_to_integer subclass_responsibility end def coerce_to_real subclass_responsibility end def min_value subclass_responsibility end def max_value subclass_responsibility end def each_sample subclass_responsibility end def to_defined_domain subclass_responsibility end def <=>(rhs_dom) to_s <=> rhs_dom.to_s end def eql?(rhs_dom) to_s.eql?(rhs_dom.to_s) end def hash to_s.hash end memoize :hash def to_s subclass_responsibility end def complexity subclass_responsibility end private def right_shift(lhs_numeric, rhs_numeric) if logical_shr? lhs_numeric.to_i.logical_right_shift(rhs_numeric.to_i) else lhs_numeric.to_i.arithmetic_right_shift(rhs_numeric.to_i) end end def left_shift(lhs_numeric, rhs_numeric) lhs_numeric.to_i.left_shift(rhs_numeric.to_i) end end class NilValueDomain < ValueDomain def empty? true end def nan? false end def undefined? false end def ambiguous? false end def contain_value_domain?(rhs_dom) rhs_dom._contain_nil?(self) end def _contain_nil?(lhs_dom, rhs_dom = self) false end def _contain_unlimited?(lhs_dom, rhs_dom = self) true end def _contain_equal_to?(lhs_dom, rhs_dom = self) true end def _contain_less_than?(lhs_dom, rhs_dom = self) true end def _contain_greater_than?(lhs_dom, rhs_dom = self) true end def _contain_intersection?(lhs_dom, rhs_dom = self) true end def _contain_union?(lhs_dom, rhs_dom = self) true end def intersect?(rhs_dom) rhs_dom._intersect_nil?(self) end def _intersect_nil?(lhs_dom, rhs_dom = self) false end def _intersect_unlimited?(lhs_dom, rhs_dom = self) false end def _intersect_equal_to?(lhs_dom, rhs_dom = self) false end def _intersect_less_than?(lhs_dom, rhs_dom = self) false end def _intersect_greater_than?(lhs_dom, rhs_dom = self) false end def _narrow_by_eq(rhs_dom, lhs_dom = self) rhs_dom._narrow_nil_by_eq(lhs_dom) end def _narrow_nil_by_eq(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `== NilValueDomain' makes # NilValueDomain. lhs_dom end def _narrow_unlimited_by_eq(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `== NilValueDomain' makes # NilValueDomain. rhs_dom end def _narrow_equal_to_by_eq(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `== NilValueDomain' makes # NilValueDomain. rhs_dom end def _narrow_less_than_by_eq(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `== NilValueDomain' makes # NilValueDomain. rhs_dom end def _narrow_greater_than_by_eq(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `== NilValueDomain' makes # NilValueDomain. rhs_dom end def _narrow_by_ne(rhs_dom, lhs_dom = self) rhs_dom._narrow_nil_by_ne(lhs_dom) end def _narrow_nil_by_ne(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `!= NilValueDomain' makes # no effect to the target value-domain. lhs_dom end def _narrow_unlimited_by_ne(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `!= NilValueDomain' makes # no effect to the target value-domain. # NOTE: NaN is a subclass of UnlimitedValueDomain. # UnlimitedValueDomain should be narrowed to be # UnlimitedValueDomain, and NaN should be narrowed to be NaN. lhs_dom end def _narrow_equal_to_by_ne(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `!= NilValueDomain' makes # no effect to the target value-domain. lhs_dom end def _narrow_less_than_by_ne(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `!= NilValueDomain' makes # no effect to the target value-domain. lhs_dom end def _narrow_greater_than_by_ne(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `!= NilValueDomain' makes # no effect to the target value-domain. lhs_dom end def _narrow_by_lt(rhs_dom, lhs_dom = self) rhs_dom._narrow_nil_by_lt(lhs_dom) end def _narrow_nil_by_lt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `< NilValueDomain' makes # no effect to the target value-domain. lhs_dom end def _narrow_unlimited_by_lt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `< NilValueDomain' makes # no effect to the target value-domain. # NOTE: NaN is a subclass of UnlimitedValueDomain. # UnlimitedValueDomain should be narrowed to be # UnlimitedValueDomain, and NaN should be narrowed to be NaN. lhs_dom end def _narrow_equal_to_by_lt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `< NilValueDomain' makes # no effect to the target value-domain. lhs_dom end def _narrow_less_than_by_lt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `< NilValueDomain' makes # no effect to the target value-domain. lhs_dom end def _narrow_greater_than_by_lt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `< NilValueDomain' makes # no effect to the target value-domain. lhs_dom end def _narrow_by_gt(rhs_dom, lhs_dom = self) rhs_dom._narrow_nil_by_gt(lhs_dom) end def _narrow_nil_by_gt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `> NilValueDomain' makes # no effect to the target value-domain. lhs_dom end def _narrow_unlimited_by_gt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `> NilValueDomain' makes # no effect to the target value-domain. # NOTE: NaN is a subclass of UnlimitedValueDomain. # UnlimitedValueDomain should be narrowed to be # UnlimitedValueDomain, and NaN should be narrowed to be NaN. lhs_dom end def _narrow_equal_to_by_gt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `> NilValueDomain' makes # no effect to the target value-domain. lhs_dom end def _narrow_less_than_by_gt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `> NilValueDomain' makes # no effect to the target value-domain. lhs_dom end def _narrow_greater_than_by_gt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing any value-domain by `> NilValueDomain' makes # no effect to the target value-domain. lhs_dom end def inversion ValueDomain.of_unlimited(logical_shr?) end def ~ # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. self end def +@ # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. self end def -@ # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. self end def +(rhs_dom) rhs_dom._add_nil(self) end def _add_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _add_unlimited(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. rhs_dom end def _add_equal_to(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _add_less_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _add_greater_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def *(rhs_dom) rhs_dom._mul_nil(self) end def _mul_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _mul_unlimited(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. rhs_dom end def _mul_equal_to(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _mul_less_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _mul_greater_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def /(rhs_dom) rhs_dom._div_nil(self) end def _div_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _div_unlimited(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _div_equal_to(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _div_less_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _div_greater_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def &(rhs_dom) rhs_dom.coerce_to_integer._add_nil(coerce_to_integer) end def _and_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _and_unlimited(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _and_equal_to(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _and_less_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _and_greater_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def |(rhs_dom) rhs_dom.coerce_to_integer._or_nil(coerce_to_integer) end def _or_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _or_unlimited(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _or_equal_to(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _or_less_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _or_greater_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def ^(rhs_dom) rhs_dom.coerce_to_integer._xor_nil(coerce_to_integer) end def _xor_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _xor_unlimited(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _xor_equal_to(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _xor_less_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _xor_greater_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def <<(rhs_dom) rhs_dom.coerce_to_integer._shl_nil(coerce_to_integer) end def _shl_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _shl_unlimited(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _shl_equal_to(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _shl_less_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _shl_greater_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def >>(rhs_dom) rhs_dom.coerce_to_integer._shr_nil(coerce_to_integer) end def _shr_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _shr_unlimited(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _shr_equal_to(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _shr_less_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def _shr_greater_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. rhs_dom end def ! # NOTE: NilValueDomain contains no values. # So, logical negation of NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def <(rhs_dom) rhs_dom._less_nil(self) end def _less_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _less_unlimited(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _less_equal_to(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _less_less_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _less_greater_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def ==(rhs_dom) rhs_dom._equal_nil(self) end def _equal_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _equal_unlimited(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _equal_equal_to(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _equal_less_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _equal_greater_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def !=(rhs_dom) rhs_dom._not_equal_nil(self) end def _not_equal_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _not_equal_unlimited(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _not_equal_equal_to(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _not_equal_less_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _not_equal_greater_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def logical_and(rhs_dom) rhs_dom._logical_and_nil(self) end def _logical_and_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # If the value-domain of the other side of NilValueDomain contains # only zero value, the logical AND makes false. ValueDomain.of_unlimited(logical_shr?) end def _logical_and_unlimited(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # If the value-domain of the other side of NilValueDomain contains # only zero value, the logical AND makes false. ValueDomain.of_unlimited(logical_shr?) end def _logical_and_equal_to(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # If the value-domain of the other side of NilValueDomain contains # only zero value, the logical AND makes false. if lhs_dom.value == 0 ValueDomain.of_false(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def _logical_and_less_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # If the value-domain of the other side of NilValueDomain contains # only zero value, the logical AND makes false. ValueDomain.of_unlimited(logical_shr?) end def _logical_and_greater_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # If the value-domain of the other side of NilValueDomain contains # only zero value, the logical AND makes false. ValueDomain.of_unlimited(logical_shr?) end def logical_or(rhs_dom) rhs_dom._logical_or_nil(self) end def _logical_or_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # If the value-domain of the other side of NilValueDomain contains # only non-zero values, the logical OR makes true. ValueDomain.of_unlimited(logical_shr?) end def _logical_or_unlimited(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # If the value-domain of the other side of NilValueDomain contains # only non-zero values, the logical OR makes true. ValueDomain.of_unlimited(logical_shr?) end def _logical_or_equal_to(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # If the value-domain of the other side of NilValueDomain contains # only non-zero values, the logical OR makes true. if lhs_dom.value == 0 ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_true(logical_shr?) end end def _logical_or_less_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # If the value-domain of the other side of NilValueDomain contains # only non-zero values, the logical OR makes true. if lhs_dom.max_value >= 0 ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_true(logical_shr?) end end def _logical_or_greater_than(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # If the value-domain of the other side of NilValueDomain contains # only non-zero values, the logical OR makes true. if lhs_dom.min_value <= 0 ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_true(logical_shr?) end end def intersection(rhs_dom) rhs_dom._intersection_nil(self) end def _intersection_nil(lhs_dom, rhs_dom = self) rhs_dom end def _intersection_unlimited(lhs_dom, rhs_dom = self) rhs_dom end def _intersection_equal_to(lhs_dom, rhs_dom = self) rhs_dom end def _intersection_less_than(lhs_dom, rhs_dom = self) rhs_dom end def _intersection_greater_than(lhs_dom, rhs_dom = self) rhs_dom end def union(rhs_dom) rhs_dom._union_nil(self) end def _union_nil(lhs_dom, rhs_dom = self) lhs_dom end def _union_unlimited(lhs_dom, rhs_dom = self) lhs_dom end def _union_equal_to(lhs_dom, rhs_dom = self) lhs_dom end def _union_less_than(lhs_dom, rhs_dom = self) lhs_dom end def _union_greater_than(lhs_dom, rhs_dom = self) lhs_dom end def coerce_to_integer self end def coerce_to_real self end def min_value nil end def max_value nil end def each_sample if block_given? self else to_enum(:each_sample) end end def to_defined_domain self end def to_s "(== Nil)" end memoize :to_s def complexity 1 end end class UnlimitedValueDomain < ValueDomain def empty? false end def nan? false end def undefined? false end def ambiguous? false end def contain_value_domain?(rhs_dom) rhs_dom._contain_unlimited?(self) end def _contain_nil?(lhs_dom, rhs_dom = self) false end def _contain_unlimited?(lhs_dom, rhs_dom = self) true end def _contain_equal_to?(lhs_dom, rhs_dom = self) false end def _contain_less_than?(lhs_dom, rhs_dom = self) false end def _contain_greater_than?(lhs_dom, rhs_dom = self) false end def _contain_intersection?(lhs_dom, rhs_dom = self) false end def _contain_union?(lhs_dom, rhs_dom = self) false end def intersect?(rhs_dom) rhs_dom._intersect_unlimited?(self) end def _intersect_nil?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes NilValueDomain#_intersect_unlimited?. rhs_dom.intersect?(lhs_dom) end def _intersect_unlimited?(lhs_dom, rhs_dom = self) true end def _intersect_equal_to?(lhs_dom, rhs_dom = self) true end def _intersect_less_than?(lhs_dom, rhs_dom = self) true end def _intersect_greater_than?(lhs_dom, rhs_dom = self) true end def _narrow_by_eq(rhs_dom, lhs_dom = self) rhs_dom._narrow_unlimited_by_eq(lhs_dom) end def _narrow_nil_by_eq(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `== UnlimitedValueDomain' makes # no effect to the target value-domain. lhs_dom end def _narrow_unlimited_by_eq(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `== UnlimitedValueDomain' makes # no effect to the target value-domain. # NOTE: NaN is a subclass of UnlimitedValueDomain. # UnlimitedValueDomain should be narrowed to be # UnlimitedValueDomain, and NaN should be narrowed to be NaN. lhs_dom end def _narrow_equal_to_by_eq(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `== UnlimitedValueDomain' makes # no effect to the target value-domain. lhs_dom end def _narrow_less_than_by_eq(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `== UnlimitedValueDomain' makes # no effect to the target value-domain. lhs_dom end def _narrow_greater_than_by_eq(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `== UnlimitedValueDomain' makes # no effect to the target value-domain. lhs_dom end def _narrow_by_ne(rhs_dom, lhs_dom = self) rhs_dom._narrow_unlimited_by_ne(lhs_dom) end def _narrow_nil_by_ne(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `!= UnlimitedValueDomain' makes # NilValueDomain. lhs_dom end def _narrow_unlimited_by_ne(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `!= UnlimitedValueDomain' makes # NilValueDomain. # NOTE: NaN is a subclass of UnlimitedValueDomain. # UnlimitedValueDomain should be narrowed to be # UnlimitedValueDomain, and NaN should be narrowed to be NaN. ValueDomain.of_nil(logical_shr?) end def _narrow_equal_to_by_ne(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `!= UnlimitedValueDomain' makes # NilValueDomain. ValueDomain.of_nil(logical_shr?) end def _narrow_less_than_by_ne(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `!= UnlimitedValueDomain' makes # NilValueDomain. ValueDomain.of_nil(logical_shr?) end def _narrow_greater_than_by_ne(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `!= UnlimitedValueDomain' makes # NilValueDomain. ValueDomain.of_nil(logical_shr?) end def _narrow_by_lt(rhs_dom, lhs_dom = self) rhs_dom._narrow_unlimited_by_lt(lhs_dom) end def _narrow_nil_by_lt(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `< UnlimitedValueDomain' makes # NilValueDomain. lhs_dom end def _narrow_unlimited_by_lt(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `< UnlimitedValueDomain' makes # NilValueDomain. # NOTE: NaN is a subclass of UnlimitedValueDomain. # UnlimitedValueDomain should be narrowed to be # UnlimitedValueDomain, and NaN should be narrowed to be NaN. ValueDomain.of_nil(logical_shr?) end def _narrow_equal_to_by_lt(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `< UnlimitedValueDomain' makes # NilValueDomain. ValueDomain.of_nil(logical_shr?) end def _narrow_less_than_by_lt(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `< UnlimitedValueDomain' makes # NilValueDomain. ValueDomain.of_nil(logical_shr?) end def _narrow_greater_than_by_lt(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `< UnlimitedValueDomain' makes # NilValueDomain. ValueDomain.of_nil(logical_shr?) end def _narrow_by_gt(rhs_dom, lhs_dom = self) rhs_dom._narrow_unlimited_by_gt(lhs_dom) end def _narrow_nil_by_gt(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `> UnlimitedValueDomain' makes # NilValueDomain. lhs_dom end def _narrow_unlimited_by_gt(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `> UnlimitedValueDomain' makes # NilValueDomain. # NOTE: NaN is a subclass of UnlimitedValueDomain. # UnlimitedValueDomain should be narrowed to be # UnlimitedValueDomain, and NaN should be narrowed to be NaN. ValueDomain.of_nil(logical_shr?) end def _narrow_equal_to_by_gt(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `> UnlimitedValueDomain' makes # NilValueDomain. ValueDomain.of_nil(logical_shr?) end def _narrow_less_than_by_gt(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `> UnlimitedValueDomain' makes # NilValueDomain. ValueDomain.of_nil(logical_shr?) end def _narrow_greater_than_by_gt(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, narrowing any value-domain by `> UnlimitedValueDomain' makes # NilValueDomain. ValueDomain.of_nil(logical_shr?) end def inversion ValueDomain.of_nil(logical_shr?) end def ~ # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. self end def +@ # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. self end def -@ # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. self end def +(rhs_dom) rhs_dom._add_unlimited(self) end def _add_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes NilValueDomain#_add_unlimited. rhs_dom + lhs_dom end def _add_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom.nan? ? lhs_dom : rhs_dom end def _add_equal_to(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def _add_less_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def _add_greater_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def *(rhs_dom) rhs_dom._mul_unlimited(self) end def _mul_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes NilValueDomain#_mul_unlimited. rhs_dom * lhs_dom end def _mul_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom.nan? ? lhs_dom : rhs_dom end def _mul_equal_to(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def _mul_less_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def _mul_greater_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def /(rhs_dom) rhs_dom._div_unlimited(self) end def _div_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _div_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom.nan? ? lhs_dom : rhs_dom end def _div_equal_to(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def _div_less_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def _div_greater_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def &(rhs_dom) rhs_dom.coerce_to_integer._and_unlimited(coerce_to_integer) end def _and_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes NilValueDomain#_and_unlimited. rhs_dom & lhs_dom end def _and_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom.nan? ? lhs_dom : rhs_dom end def _and_equal_to(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def _and_less_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def _and_greater_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def |(rhs_dom) rhs_dom.coerce_to_integer._or_unlimited(coerce_to_integer) end def _or_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes NilValueDomain#_or_unlimited. rhs_dom | lhs_dom end def _or_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom.nan? ? lhs_dom : rhs_dom end def _or_equal_to(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def _or_less_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def _or_greater_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def ^(rhs_dom) rhs_dom.coerce_to_integer._xor_unlimited(coerce_to_integer) end def _xor_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes NilValueDomain#_or_unlimited. rhs_dom ^ lhs_dom end def _xor_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom.nan? ? lhs_dom : rhs_dom end def _xor_equal_to(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def _xor_less_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def _xor_greater_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. rhs_dom end def <<(rhs_dom) rhs_dom.coerce_to_integer._shl_unlimited(coerce_to_integer) end def _shl_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _shl_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-overflow. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom.nan? ? lhs_dom : rhs_dom end def _shl_equal_to(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-overflow. rhs_dom end def _shl_less_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-overflow. rhs_dom end def _shl_greater_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-overflow. rhs_dom end def >>(rhs_dom) rhs_dom.coerce_to_integer._shr_unlimited(coerce_to_integer) end def _shr_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _shr_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-underflow. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom.nan? ? lhs_dom : rhs_dom end def _shr_equal_to(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-underflow. rhs_dom end def _shr_less_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-underflow. rhs_dom end def _shr_greater_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-underflow. rhs_dom end def ! # NOTE: UnlimitedValueDomain contains everything. # So, logical negation of UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def <(rhs_dom) rhs_dom._less_unlimited(self) end def _less_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _less_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def _less_equal_to(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def _less_less_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def _less_greater_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def ==(rhs_dom) rhs_dom._equal_unlimited(self) end def _equal_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes NilValueDomain#_equal_unlimited. rhs_dom == lhs_dom end def _equal_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def _equal_equal_to(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def _equal_less_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def _equal_greater_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def !=(rhs_dom) rhs_dom._not_equal_unlimited(self) end def _not_equal_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes NilValueDomain#_not_equal_nil. rhs_dom != lhs_dom end def _not_equal_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def _not_equal_equal_to(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def _not_equal_less_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def _not_equal_greater_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def logical_and(rhs_dom) rhs_dom._logical_and_unlimited(self) end def _logical_and_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes NilValueDomain#_logical_and_unlimited. rhs_dom.logical_and(lhs_dom) end def _logical_and_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # If the value-domain of the other side of UnlimitedValueDomain # contains only zero value, the logical AND makes false. ValueDomain.of_unlimited(logical_shr?) end def _logical_and_equal_to(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # If the value-domain of the other side of UnlimitedValueDomain # contains only zero value, the logical AND makes false. if lhs_dom.value == 0 ValueDomain.of_false(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def _logical_and_less_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # If the value-domain of the other side of UnlimitedValueDomain # contains only zero value, the logical AND makes false. ValueDomain.of_unlimited(logical_shr?) end def _logical_and_greater_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # If the value-domain of the other side of UnlimitedValueDomain # contains only zero value, the logical AND makes false. ValueDomain.of_unlimited(logical_shr?) end def logical_or(rhs_dom) rhs_dom._logical_or_unlimited(self) end def _logical_or_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes NilValueDomain#_logical_or_unlimited. rhs_dom.logical_or(lhs_dom) end def _logical_or_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # If the value-domain of the other side of UnlimitedValueDomain # contains only non-zero values, the logical OR makes true. ValueDomain.of_unlimited(logical_shr?) end def _logical_or_equal_to(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # If the value-domain of the other side of UnlimitedValueDomain # contains only non-zero values, the logical OR makes true. if lhs_dom.value == 0 ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_true(logical_shr?) end end def _logical_or_less_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # If the value-domain of the other side of UnlimitedValueDomain # contains only non-zero values, the logical OR makes true. if lhs_dom.max_value >= 0 ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_true(logical_shr?) end end def _logical_or_greater_than(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # If the value-domain of the other side of UnlimitedValueDomain # contains only non-zero values, the logical OR makes true. if lhs_dom.min_value <= 0 ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_true(logical_shr?) end end def intersection(rhs_dom) rhs_dom._intersection_unlimited(self) end def _intersection_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes NilValueDomain#_intersection_unlimited. rhs_dom.intersection(lhs_dom) end def _intersection_unlimited(lhs_dom, rhs_dom = self) lhs_dom end def _intersection_equal_to(lhs_dom, rhs_dom = self) lhs_dom end def _intersection_less_than(lhs_dom, rhs_dom = self) lhs_dom end def _intersection_greater_than(lhs_dom, rhs_dom = self) lhs_dom end def union(rhs_dom) rhs_dom._union_unlimited(self) end def _union_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes NilValueDomain#_union_unlimited. rhs_dom.union(lhs_dom) end def _union_unlimited(lhs_dom, rhs_dom = self) rhs_dom end def _union_equal_to(lhs_dom, rhs_dom = self) rhs_dom end def _union_less_than(lhs_dom, rhs_dom = self) rhs_dom end def _union_greater_than(lhs_dom, rhs_dom = self) rhs_dom end def coerce_to_integer self end def coerce_to_real self end def min_value nil end def max_value nil end def each_sample if block_given? yield(0) self else to_enum(:each_sample) end end def to_defined_domain self end def to_s "(== Unlimited)" end memoize :to_s def complexity 1 end end # NOTE: To increase the coverage of the analysis, NaN should not be derived # from NilValueDomain but UnlimitedValueDomain. class NaN < UnlimitedValueDomain def nan? true end def to_s "(== NaN)" end memoize :to_s end class EqualToValueDomain < ValueDomain def initialize(val, logical_shr) super(logical_shr) if val @value = val else raise ArgumentError, "equal to nil?" end end attr_reader :value def empty? false end def nan? false end def undefined? false end def ambiguous? false end def contain_value_domain?(rhs_dom) rhs_dom._contain_equal_to?(self) end def _contain_nil?(lhs_dom, rhs_dom = self) false end def _contain_unlimited?(lhs_dom, rhs_dom = self) true end def _contain_equal_to?(lhs_dom, rhs_dom = self) lhs_dom.value == rhs_dom.value end def _contain_less_than?(lhs_dom, rhs_dom = self) lhs_dom.max_value >= rhs_dom.value end def _contain_greater_than?(lhs_dom, rhs_dom = self) lhs_dom.min_value <= rhs_dom.value end def _contain_intersection?(lhs_dom, rhs_dom = self) lhs_dom.domain_pair.all? { |lhs| lhs.contain_value_domain?(rhs_dom) } end def _contain_union?(lhs_dom, rhs_dom = self) lhs_dom.domain_pair.any? { |lhs| lhs.contain_value_domain?(rhs_dom) } end def intersect?(rhs_dom) rhs_dom._intersect_equal_to?(self) end def _intersect_nil?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes NilValueDomain#_intersect_equal_to?. rhs_dom.intersect?(lhs_dom) end def _intersect_unlimited?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes # UnlimitedValueDomain#_intersect_equal_to?. rhs_dom.intersect?(lhs_dom) end def _intersect_equal_to?(lhs_dom, rhs_dom = self) lhs_dom.value == rhs_dom.value end def _intersect_less_than?(lhs_dom, rhs_dom = self) lhs_dom.max_value >= rhs_dom.value end def _intersect_greater_than?(lhs_dom, rhs_dom = self) lhs_dom.min_value <= rhs_dom.value end def _narrow_by_eq(rhs_dom, lhs_dom = self) rhs_dom._narrow_equal_to_by_eq(lhs_dom) end def _narrow_nil_by_eq(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_eq(lhs_dom, rhs_dom = self) rhs_dom end def _narrow_equal_to_by_eq(lhs_dom, rhs_dom = self) if lhs_dom.value == rhs_dom.value # NOTE: Narrowing `------|------' by `== ------|-----' makes # `------|------'. lhs_dom else # NOTE: Narrowing `---|---------' by `== --------|---' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end def _narrow_less_than_by_eq(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= rhs_dom.value # NOTE: Narrowing `=========>---' by `== ---|--------' makes # `---|---------'. rhs_dom else # NOTE: Narrowing `===>---------' by `== --------|---' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end def _narrow_greater_than_by_eq(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.value # NOTE: Narrowing `---<=========' by `== --------|---' makes # `---------|---'. rhs_dom else # NOTE: Narrowing `---------<===' by `== ---|--------' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end def _narrow_by_ne(rhs_dom, lhs_dom = self) rhs_dom._narrow_equal_to_by_ne(lhs_dom) end def _narrow_nil_by_ne(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_ne(lhs_dom, rhs_dom = self) rhs_dom.inversion end def _narrow_equal_to_by_ne(lhs_dom, rhs_dom = self) if lhs_dom.value == rhs_dom.value # NOTE: Narrowing `------|------' by `!= ------|-----' makes # `-------------'. ValueDomain.of_nil(logical_shr?) else # NOTE: Narrowing `---|---------' by `!= --------|---' makes # `---|---------'. lhs_dom end end def _narrow_less_than_by_ne(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= rhs_dom.value # NOTE: Narrowing `=========>---' by `!= ------|------' makes # `=====>-<=>---'. lhs_dom.intersection(rhs_dom.inversion) else # NOTE: Narrowing `===>---------' by `!= ------|------' makes # `===>---------'. lhs_dom end end def _narrow_greater_than_by_ne(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.value # NOTE: Narrowing `---<=========' by `!= ------|------' makes # `---<=>-<====='. lhs_dom.intersection(rhs_dom.inversion) else lhs_dom end end def _narrow_by_lt(rhs_dom, lhs_dom = self) rhs_dom._narrow_equal_to_by_lt(lhs_dom) end def _narrow_nil_by_lt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_lt(lhs_dom, rhs_dom = self) ValueDomain.less_than(rhs_dom.value, logical_shr?) end def _narrow_equal_to_by_lt(lhs_dom, rhs_dom = self) if lhs_dom.value < rhs_dom.value lhs_dom else ValueDomain.of_nil(logical_shr?) end end def _narrow_less_than_by_lt(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= rhs_dom.value # NOTE: Narrowing `=========>---' by `< ------|------' makes # `=====>-------'. ValueDomain.less_than(rhs_dom.value, logical_shr?) else lhs_dom end end def _narrow_greater_than_by_lt(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.value # NOTE: Narrowing `---<=========' by `< ------|------' makes # `---<=>-------'. lhs_dom.intersection( ValueDomain.less_than(rhs_dom.value, logical_shr?)) else ValueDomain.of_nil(logical_shr?) end end def _narrow_by_gt(rhs_dom, lhs_dom = self) rhs_dom._narrow_equal_to_by_gt(lhs_dom) end def _narrow_nil_by_gt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_gt(lhs_dom, rhs_dom = self) ValueDomain.greater_than(rhs_dom.value, logical_shr?) end def _narrow_equal_to_by_gt(lhs_dom, rhs_dom = self) if lhs_dom.value > rhs_dom.value # NOTE: Narrowing `---------|---' by `> ---|---------' makes # `---------|---'. lhs_dom else # NOTE: Narrowing `---|---------' by `> ---------|---' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end def _narrow_less_than_by_gt(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= rhs_dom.value # NOTE: Narrowing `=========>---' by `> ---|---------' makes # `---<=====>---'. ValueDomain.greater_than(rhs_dom.value, logical_shr?).intersection(lhs_dom) else # NOTE: Narrowing `===>---------' by `> ------|------' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end def _narrow_greater_than_by_gt(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.value # NOTE: Narrowing `---<=========' by `> ------|------' makes # `------<======'. ValueDomain.greater_than(rhs_dom.value, logical_shr?) else # NOTE: Narrowing `---------<===' by `> ---|---------' makes # `---------<==='. lhs_dom end end def inversion ValueDomain.less_than(@value, logical_shr?).union( ValueDomain.greater_than(@value, logical_shr?)) end def ~ ValueDomain.equal_to(~coerce_to_integer.value, logical_shr?) end def +@ self end def -@ ValueDomain.equal_to(-@value, logical_shr?) end def +(rhs_dom) rhs_dom._add_equal_to(self) end def _add_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes NilValueDomain#_add_equal_to. rhs_dom + lhs_dom end def _add_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes UnlimitedValueDomain#_add_equal_to. rhs_dom + lhs_dom end def _add_equal_to(lhs_dom, rhs_dom = self) ValueDomain.equal_to(lhs_dom.value + rhs_dom.value, logical_shr?) end def _add_less_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(lhs_dom.value + rhs_dom.value, logical_shr?) end def _add_greater_than(lhs_dom, rhs_dom = self) ValueDomain.greater_than(lhs_dom.value + rhs_dom.value, logical_shr?) end def *(rhs_dom) rhs_dom._mul_equal_to(self) end def _mul_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes NilValueDomain#_mul_equal_to. rhs_dom * lhs_dom end def _mul_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes UnlimitedValueDomain#_mul_equal_to. rhs_dom * lhs_dom end def _mul_equal_to(lhs_dom, rhs_dom = self) ValueDomain.equal_to(lhs_dom.value * rhs_dom.value, logical_shr?) end def _mul_less_than(lhs_dom, rhs_dom = self) return ValueDomain.equal_to(0, logical_shr?) if rhs_dom.value == 0 if lhs_dom.value <= 0 if rhs_dom.value < 0 ValueDomain.greater_than(lhs_dom.value * rhs_dom.value, logical_shr?) else ValueDomain.less_than(lhs_dom.value * rhs_dom.value, logical_shr?) end else if rhs_dom.value < 0 ValueDomain.greater_than(lhs_dom.value * rhs_dom.value, logical_shr?) else ValueDomain.less_than(lhs_dom.value * rhs_dom.value, logical_shr?) end end end def _mul_greater_than(lhs_dom, rhs_dom = self) return ValueDomain.equal_to(0, logical_shr?) if rhs_dom.value == 0 if lhs_dom.value >= 0 if rhs_dom.value < 0 ValueDomain.less_than(lhs_dom.value * rhs_dom.value, logical_shr?) else ValueDomain.greater_than(lhs_dom.value * rhs_dom.value, logical_shr?) end else if rhs_dom.value < 0 ValueDomain.less_than(lhs_dom.value * rhs_dom.value, logical_shr?) else ValueDomain.greater_than(lhs_dom.value * rhs_dom.value, logical_shr?) end end end def /(rhs_dom) rhs_dom._div_equal_to(self) end def _div_nil(lhs_dom, rhs_dom = self) if rhs_dom.value == 0 ValueDomain.of_nan(logical_shr?) else lhs_dom end end def _div_unlimited(lhs_dom, rhs_dom = self) if rhs_dom.value == 0 ValueDomain.of_nan(logical_shr?) else lhs_dom end end def _div_equal_to(lhs_dom, rhs_dom = self) if rhs_dom.value == 0 ValueDomain.of_nan(logical_shr?) else ValueDomain.equal_to(lhs_dom.value / rhs_dom.value, logical_shr?) end end def _div_less_than(lhs_dom, rhs_dom = self) case when rhs_dom.value < 0 ValueDomain.greater_than(lhs_dom.value / rhs_dom.value, logical_shr?) when rhs_dom.value == 0 ValueDomain.of_nan(logical_shr?) when rhs_dom.value > 0 ValueDomain.less_than(lhs_dom.value / rhs_dom.value, logical_shr?) end end def _div_greater_than(lhs_dom, rhs_dom = self) case when rhs_dom.value < 0 ValueDomain.less_than(lhs_dom.value / rhs_dom.value, logical_shr?) when rhs_dom.value == 0 ValueDomain.of_nan(logical_shr?) when rhs_dom.value > 0 ValueDomain.greater_than(lhs_dom.value / rhs_dom.value, logical_shr?) end end def &(rhs_dom) rhs_dom.coerce_to_integer._and_equal_to(coerce_to_integer) end def _and_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes NilValueDomain#_and_equal_to. rhs_dom & lhs_dom end def _and_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes UnlimitedValueDomain#_and_equal_to. rhs_dom & lhs_dom end def _and_equal_to(lhs_dom, rhs_dom = self) ValueDomain.equal_to(lhs_dom.value & rhs_dom.value, logical_shr?) end def _and_less_than(lhs_dom, rhs_dom = self) case when rhs_dom.value < 0 ValueDomain.less_than(0, logical_shr?) when rhs_dom.value == 0 ValueDomain.equal_to(0, logical_shr?) when rhs_dom.value > 0 ValueDomain.greater_than(0, logical_shr?) end end def _and_greater_than(lhs_dom, rhs_dom = self) case when rhs_dom.value < 0 ValueDomain.less_than(0, logical_shr?) when rhs_dom.value == 0 ValueDomain.equal_to(0, logical_shr?) when rhs_dom.value > 0 ValueDomain.greater_than(0, logical_shr?) end end def |(rhs_dom) rhs_dom.coerce_to_integer._or_equal_to(coerce_to_integer) end def _or_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes NilValueDomain#_or_equal_to. rhs_dom | lhs_dom end def _or_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes UnlimitedValueDomain#_or_equal_to. rhs_dom | lhs_dom end def _or_equal_to(lhs_dom, rhs_dom = self) ValueDomain.equal_to(lhs_dom.value | rhs_dom.value, logical_shr?) end def _or_less_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(lhs_dom.value | rhs_dom.value, logical_shr?) end def _or_greater_than(lhs_dom, rhs_dom = self) ValueDomain.greater_than(lhs_dom.value | rhs_dom.value, logical_shr?) end def ^(rhs_dom) rhs_dom.coerce_to_integer._xor_equal_to(coerce_to_integer) end def _xor_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes NilValueDomain#_xor_equal_to. rhs_dom ^ lhs_dom end def _xor_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes UnlimitedValueDomain#_xor_equal_to. rhs_dom ^ lhs_dom end def _xor_equal_to(lhs_dom, rhs_dom = self) ValueDomain.equal_to(lhs_dom.value ^ rhs_dom.value, logical_shr?) end def _xor_less_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(lhs_dom.value ^ rhs_dom.value, logical_shr?) end def _xor_greater_than(lhs_dom, rhs_dom = self) ValueDomain.greater_than(lhs_dom.value ^ rhs_dom.value, logical_shr?) end def <<(rhs_dom) rhs_dom.coerce_to_integer._shl_equal_to(coerce_to_integer) end def _shl_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _shl_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-overflow. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom end def _shl_equal_to(lhs_dom, rhs_dom = self) ValueDomain.equal_to(left_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def _shl_less_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(left_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def _shl_greater_than(lhs_dom, rhs_dom = self) ValueDomain.greater_than(left_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def >>(rhs_dom) rhs_dom.coerce_to_integer._shr_equal_to(coerce_to_integer) end def _shr_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _shr_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-overflow. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom end def _shr_equal_to(lhs_dom, rhs_dom = self) ValueDomain.equal_to(right_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def _shr_less_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(right_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def _shr_greater_than(lhs_dom, rhs_dom = self) ValueDomain.greater_than(right_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def ! if @value == 0 ValueDomain.of_true(logical_shr?) else ValueDomain.of_false(logical_shr?) end end def <(rhs_dom) rhs_dom._less_equal_to(self) end def _less_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _less_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def _less_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value < rhs_dom.value ValueDomain.of_true(logical_shr?) else ValueDomain.of_false(logical_shr?) end end def _less_less_than(lhs_dom, rhs_dom = self) if lhs_dom.max_value < rhs_dom.value ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def _less_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value > rhs_dom.value ValueDomain.of_false(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def ==(rhs_dom) rhs_dom._equal_equal_to(self) end def _equal_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes NilValueDomain#_equal_equal_to. rhs_dom == lhs_dom end def _equal_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes UnlimitedValueDomain#_equal_equal_to. rhs_dom == lhs_dom end def _equal_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value == rhs_dom.value ValueDomain.of_true(logical_shr?) else ValueDomain.of_false(logical_shr?) end end def _equal_less_than(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= rhs_dom.value ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_false(logical_shr?) end end def _equal_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.value ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_false(logical_shr?) end end def !=(rhs_dom) rhs_dom._not_equal_equal_to(self) end def _not_equal_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes NilValueDomain#_not_equal_equal_to. rhs_dom != lhs_dom end def _not_equal_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes UnlimitedValueDomain#_not_equal_equal_to. rhs_dom != lhs_dom end def _not_equal_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value != rhs_dom.value ValueDomain.of_true(logical_shr?) else ValueDomain.of_false(logical_shr?) end end def _not_equal_less_than(lhs_dom, rhs_dom = self) if lhs_dom.max_value < rhs_dom.value ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def _not_equal_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value > rhs_dom.value ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def logical_and(rhs_dom) rhs_dom._logical_and_equal_to(self) end def _logical_and_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes NilValueDomain#_logical_and_equal_to. rhs_dom.logical_and(lhs_dom) end def _logical_and_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes UnlimitedValueDomain#_logical_and_equal_to. rhs_dom.logical_and(lhs_dom) end def _logical_and_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value == 0 || rhs_dom.value == 0 ValueDomain.of_false(logical_shr?) else ValueDomain.of_true(logical_shr?) end end def _logical_and_less_than(lhs_dom, rhs_dom = self) if rhs_dom.value == 0 ValueDomain.of_false(logical_shr?) else if lhs_dom.value < 0 ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end end def _logical_and_greater_than(lhs_dom, rhs_dom = self) if rhs_dom.value == 0 ValueDomain.of_false(logical_shr?) else if lhs_dom.value > 0 ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end end def logical_or(rhs_dom) rhs_dom._logical_or_equal_to(self) end def _logical_or_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes NilValueDomain#_logical_or_equal_to. rhs_dom.logical_or(lhs_dom) end def _logical_or_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes UnlimitedValueDomain#_logical_or_equal_to. rhs_dom.logical_or(lhs_dom) end def _logical_or_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value == 0 && rhs_dom.value == 0 ValueDomain.of_false(logical_shr?) else ValueDomain.of_true(logical_shr?) end end def _logical_or_less_than(lhs_dom, rhs_dom = self) if rhs_dom.value == 0 if lhs_dom.value < 0 ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end else ValueDomain.of_true(logical_shr?) end end def _logical_or_greater_than(lhs_dom, rhs_dom = self) if rhs_dom.value == 0 if lhs_dom.value > 0 ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end else ValueDomain.of_true(logical_shr?) end end def intersection(rhs_dom) rhs_dom._intersection_equal_to(self) end def _intersection_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes NilValueDomain#_intersection_equal_to. rhs_dom.intersection(lhs_dom) end def _intersection_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes UnlimitedValueDomain#_intersection_equal_to. rhs_dom.intersection(lhs_dom) end def _intersection_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value == rhs_dom.value lhs_dom else ValueDomain.of_nil(logical_shr?) end end def _intersection_less_than(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= rhs_dom.value rhs_dom else ValueDomain.of_nil(logical_shr?) end end def _intersection_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.value rhs_dom else ValueDomain.of_nil(logical_shr?) end end def union(rhs_dom) rhs_dom._union_equal_to(self) end def _union_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes NilValueDomain#_union_equal_to. rhs_dom.union(lhs_dom) end def _union_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes UnlimitedValueDomain#_union_equal_to. rhs_dom.union(lhs_dom) end def _union_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value == rhs_dom.value lhs_dom else ValueDomain._create_union(lhs_dom, rhs_dom) end end def _union_less_than(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= rhs_dom.value lhs_dom else ValueDomain._create_union(lhs_dom, rhs_dom) end end def _union_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.value lhs_dom else ValueDomain._create_union(lhs_dom, rhs_dom) end end def coerce_to_integer if @value.integer? self else ValueDomain.equal_to(@value.to_i, logical_shr?) end end def coerce_to_real if @value.real? self else ValueDomain.equal_to(@value.to_f, logical_shr?) end end def min_value @value end def max_value @value end def each_sample if block_given? yield(@value) self else to_enum(:each_sample) end end def to_defined_domain self end def to_s "(== #{@value})" end memoize :to_s def complexity 1 end end class LessThanValueDomain < ValueDomain def initialize(val, logical_shr) super(logical_shr) if val @value = val else raise ArgumentError, "less than nil?" end end attr_reader :value def empty? false end def nan? false end def undefined? false end def ambiguous? false end def contain_value_domain?(rhs_dom) rhs_dom._contain_less_than?(self) end def _contain_nil?(lhs_dom, rhs_dom = self) false end def _contain_unlimited?(lhs_dom, rhs_dom = self) true end def _contain_equal_to?(lhs_dom, rhs_dom = self) false end def _contain_less_than?(lhs_dom, rhs_dom = self) lhs_dom.value >= rhs_dom.value end def _contain_greater_than?(lhs_dom, rhs_dom = self) false end def _contain_intersection?(lhs_dom, rhs_dom = self) lhs_dom.domain_pair.all? { |lhs| lhs.contain_value_domain?(rhs_dom) } end def _contain_union?(lhs_dom, rhs_dom = self) lhs_dom.domain_pair.any? { |lhs| lhs.contain_value_domain?(rhs_dom) } end def intersect?(rhs_dom) rhs_dom._intersect_less_than?(self) end def _intersect_nil?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes NilValueDomain#_intersect_less_than?. rhs_dom.intersect?(lhs_dom) end def _intersect_unlimited?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes # UnlimitedValueDomain#_intersect_less_than?. rhs_dom.intersect?(lhs_dom) end def _intersect_equal_to?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes EqualToValueDomain#_intersect_less_than?. rhs_dom.intersect?(lhs_dom) end def _intersect_less_than?(lhs_dom, rhs_dom = self) true end def _intersect_greater_than?(lhs_dom, rhs_dom = self) lhs_dom.min_value <= rhs_dom.max_value end def _narrow_by_eq(rhs_dom, lhs_dom = self) rhs_dom._narrow_less_than_by_eq(lhs_dom) end def _narrow_nil_by_eq(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_eq(lhs_dom, rhs_dom = self) rhs_dom end def _narrow_equal_to_by_eq(lhs_dom, rhs_dom = self) if lhs_dom.value < rhs_dom.value # NOTE: Narrowing `------|------' by `== =========>---' makes # `------|------'. lhs_dom else # NOTE: Narrowing `---------|---' by `== ===>---------' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end def _narrow_less_than_by_eq(lhs_dom, rhs_dom = self) if lhs_dom.value < rhs_dom.value # NOTE: Narrowing `===>---------' by `== =========>---' makes # `===>---------'. lhs_dom else # NOTE: Narrowing `=========>---' by `== ===>---------' makes # `===>---------'. rhs_dom end end def _narrow_greater_than_by_eq(lhs_dom, rhs_dom = self) if lhs_dom.min_value > rhs_dom.max_value ValueDomain.of_nil(logical_shr?) else # NOTE: Narrowing `---<=========' by `== =========>---' makes # `---<=====>---'. lhs_dom.intersection(rhs_dom) end end def _narrow_by_ne(rhs_dom, lhs_dom = self) rhs_dom._narrow_less_than_by_ne(lhs_dom) end def _narrow_nil_by_ne(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_ne(lhs_dom, rhs_dom = self) rhs_dom.inversion end def _narrow_equal_to_by_ne(lhs_dom, rhs_dom = self) if lhs_dom.value <= rhs_dom.max_value # NOTE: Narrowing `---|---------' by `!= =========>---' makes # `-------------'. ValueDomain.of_nil(logical_shr?) else # NOTE: Narrowing `---------|---' by `!= ===>---------' makes # `---------|---'. lhs_dom end end def _narrow_less_than_by_ne(lhs_dom, rhs_dom = self) if lhs_dom.max_value <= rhs_dom.max_value # NOTE: Narrowing `===>---------' by `!= =========>---' makes # `-------------'. ValueDomain.of_nil(logical_shr?) else # NOTE: Narrowing `=========>---' by `!= ===>---------' makes # `---<=====>---'. lhs_dom.intersection(rhs_dom.inversion) end end def _narrow_greater_than_by_ne(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.max_value # NOTE: Narrowing `---<=========' by `!= =========>---' makes # `---------<==='. rhs_dom.inversion else # NOTE: Narrowing `---------<===' by `!= ===>---------' makes # `---------<==='. lhs_dom end end def _narrow_by_lt(rhs_dom, lhs_dom = self) rhs_dom._narrow_less_than_by_lt(lhs_dom) end def _narrow_nil_by_lt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_lt(lhs_dom, rhs_dom = self) # NOTE: Narrowing `=============' by `< ======>------' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end def _narrow_equal_to_by_lt(lhs_dom, rhs_dom = self) # NOTE: Narrowing `------|------' by `< ======>------' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end def _narrow_less_than_by_lt(lhs_dom, rhs_dom = self) # NOTE: Narrowing `=========>---' by `< =======>-----' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end def _narrow_greater_than_by_lt(lhs_dom, rhs_dom = self) # NOTE: Narrowing `---<=========' by `< =========>---' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end def _narrow_by_gt(rhs_dom, lhs_dom = self) rhs_dom._narrow_less_than_by_gt(lhs_dom) end def _narrow_nil_by_gt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_gt(lhs_dom, rhs_dom = self) # NOTE: Narrowing `=============' by `> ======>------' makes # `------<======'. rhs_dom.inversion end def _narrow_equal_to_by_gt(lhs_dom, rhs_dom = self) if lhs_dom.value > rhs_dom.max_value # NOTE: Narrowing `---------|---' by `> ===>---------' makes # `---------|---'. lhs_dom else # NOTE: Narrowing `---|---------' by `> =========>---' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end def _narrow_less_than_by_gt(lhs_dom, rhs_dom = self) if lhs_dom.max_value > rhs_dom.max_value # NOTE: Narrowing `=========>---' by `> ===>---------' makes # `---<=====>---'. rhs_dom.inversion.intersection(lhs_dom) else # NOTE: Narrowing `===>---------' by `> =========>---' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end def _narrow_greater_than_by_gt(lhs_dom, rhs_dom = self) if lhs_dom.min_value < rhs_dom.max_value # NOTE: Narrowing `---<=========' by `> =========>---' makes # `---------<==='. rhs_dom.inversion else # NOTE: Narrowing `---------<===' by `> ===>---------' makes # `---------<==='. lhs_dom end end def inversion ValueDomain.greater_than_or_equal_to(@value, logical_shr?) end def ~ ValueDomain.less_than(~coerce_to_integer.value, logical_shr?) end def +@ self end def -@ ValueDomain.greater_than(-@value, logical_shr?) end def +(rhs_dom) rhs_dom._add_less_than(self) end def _add_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes NilValueDomain#_add_less_than. rhs_dom + lhs_dom end def _add_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes UnlimitedValueDomain#_add_less_than. rhs_dom + lhs_dom end def _add_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes EqualToValueDomain#_add_less_than. rhs_dom + lhs_dom end def _add_less_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(lhs_dom.value + rhs_dom.value, logical_shr?) end def _add_greater_than(lhs_dom, rhs_dom = self) ValueDomain.of_unlimited(logical_shr?) end def *(rhs_dom) rhs_dom._mul_less_than(self) end def _mul_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes NilValueDomain#_mul_less_than. rhs_dom * lhs_dom end def _mul_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes UnlimitedValueDomain#_mul_less_than. rhs_dom * lhs_dom end def _mul_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes EqualToValueDomain#_mul_less_than. rhs_dom * lhs_dom end def _mul_less_than(lhs_dom, rhs_dom = self) if lhs_dom.value <= 0 if rhs_dom.value <= 0 ValueDomain.greater_than(lhs_dom.value * rhs_dom.value, logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end else if rhs_dom.value <= 0 ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end end def _mul_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.value >= 0 if rhs_dom.value <= 0 ValueDomain.less_than(lhs_dom.value * rhs_dom.value, logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end else if rhs_dom.value <= 0 ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end end def /(rhs_dom) rhs_dom._div_less_than(self) end def _div_nil(lhs_dom, rhs_dom = self) if rhs_dom.max_value >= 0 ValueDomain.of_nan(logical_shr?) else lhs_dom end end def _div_unlimited(lhs_dom, rhs_dom = self) if rhs_dom.max_value >= 0 ValueDomain.of_nan(logical_shr?) else lhs_dom end end def _div_equal_to(lhs_dom, rhs_dom = self) if rhs_dom.value >= 0 ValueDomain.of_nan(logical_shr?) else case when lhs_dom.value < 0 ValueDomain.greater_than(0, logical_shr?).intersection( ValueDomain.less_than(lhs_dom.value / rhs_dom.value, logical_shr?)) when lhs_dom.value == 0 ValueDomain.equal_to(0, logical_shr?) when lhs_dom.value > 0 ValueDomain.greater_than( lhs_dom.value / rhs_dom.value, logical_shr? ).intersection(ValueDomain.less_than(0, logical_shr?)) end end end def _div_less_than(lhs_dom, rhs_dom = self) if rhs_dom.value > 0 ValueDomain.of_nan(logical_shr?) else case when lhs_dom.value <= 0 ValueDomain.greater_than(0, logical_shr?) when lhs_dom.value > 0 ValueDomain.less_than(0, logical_shr?) end end end def _div_greater_than(lhs_dom, rhs_dom = self) if rhs_dom.value > 0 ValueDomain.of_nan(logical_shr?) else case when lhs_dom.value >= 0 ValueDomain.less_than(0, logical_shr?) when lhs_dom.value < 0 ValueDomain.greater_than(0, logical_shr?) end end end def &(rhs_dom) rhs_dom.coerce_to_integer._and_less_than(coerce_to_integer) end def _and_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes NilValueDomain#_and_less_than. rhs_dom & lhs_dom end def _and_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes UnlimitedValueDomain#_and_less_than. rhs_dom & lhs_dom end def _and_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes EqualToValueDomain#_and_less_than. rhs_dom & lhs_dom end def _and_less_than(lhs_dom, rhs_dom = self) if lhs_dom.value < 0 && rhs_dom.value < 0 ValueDomain.less_than(lhs_dom.value & rhs_dom.value, logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def _and_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.value > 0 && rhs_dom.value < 0 ValueDomain.less_than(lhs_dom.value & rhs_dom.value, logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def |(rhs_dom) rhs_dom.coerce_to_integer._or_less_than(coerce_to_integer) end def _or_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes NilValueDomain#_or_less_than. rhs_dom | lhs_dom end def _or_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes UnlimitedValueDomain#_or_less_than. rhs_dom | lhs_dom end def _or_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes EqualToValueDomain#_or_less_than. rhs_dom | lhs_dom end def _or_less_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(lhs_dom.value | rhs_dom.value, logical_shr?) end def _or_greater_than(lhs_dom, rhs_dom = self) ValueDomain.of_unlimited(logical_shr?) end def ^(rhs_dom) rhs_dom.coerce_to_integer._xor_less_than(coerce_to_integer) end def _xor_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes NilValueDomain#_xor_less_than. rhs_dom ^ lhs_dom end def _xor_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes UnlimitedValueDomain#_xor_less_than. rhs_dom ^ lhs_dom end def _xor_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes EqualToValueDomain#_xor_less_than. rhs_dom ^ lhs_dom end def _xor_less_than(lhs_dom, rhs_dom = self) case when lhs_dom.value < 0 && rhs_dom.value < 0 ValueDomain.greater_than(0, logical_shr?) when lhs_dom.value < 0 || rhs_dom.value < 0 ValueDomain.less_than(0, logical_shr?) else ValueDomain.greater_than(0, logical_shr?) end end def _xor_greater_than(lhs_dom, rhs_dom = self) case when lhs_dom.value < 0 && rhs_dom.value < 0 ValueDomain.greater_than(0, logical_shr?) when lhs_dom.value < 0 || rhs_dom.value < 0 ValueDomain.less_than(0, logical_shr?) else ValueDomain.greater_than(0, logical_shr?) end end def <<(rhs_dom) rhs_dom.coerce_to_integer._shl_less_than(coerce_to_integer) end def _shl_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _shl_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-overflow. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom end def _shl_equal_to(lhs_dom, rhs_dom = self) ValueDomain.less_than(left_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def _shl_less_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(left_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def _shl_greater_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(left_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def >>(rhs_dom) rhs_dom.coerce_to_integer._shr_less_than(coerce_to_integer) end def _shr_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _shr_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-overflow. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom end def _shr_equal_to(lhs_dom, rhs_dom = self) ValueDomain.greater_than(right_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def _shr_less_than(lhs_dom, rhs_dom = self) ValueDomain.greater_than(right_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def _shr_greater_than(lhs_dom, rhs_dom = self) ValueDomain.greater_than(right_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def ! if @value < 0 ValueDomain.of_false(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def <(rhs_dom) rhs_dom._less_less_than(self) end def _less_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _less_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def _less_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value >= rhs_dom.max_value ValueDomain.of_false(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def _less_less_than(lhs_dom, rhs_dom = self) ValueDomain.of_unlimited(logical_shr?) end def _less_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value >= rhs_dom.max_value ValueDomain.of_false(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def ==(rhs_dom) rhs_dom._equal_less_than(self) end def _equal_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes NilValueDomain#_equal_less_than. rhs_dom == lhs_dom end def _equal_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes UnlimitedValueDomain#_equal_less_than. rhs_dom == lhs_dom end def _equal_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes EqualToValueDomain#_equal_less_than. rhs_dom == lhs_dom end def _equal_less_than(lhs_dom, rhs_dom = self) ValueDomain.of_unlimited(logical_shr?) end def _equal_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.max_value ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_false(logical_shr?) end end def !=(rhs_dom) rhs_dom._not_equal_less_than(self) end def _not_equal_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes NilValueDomain#_not_equal_less_than. rhs_dom != lhs_dom end def _not_equal_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes UnlimitedValueDomain#_not_equal_less_than. rhs_dom != lhs_dom end def _not_equal_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes EqualToValueDomain#_not_equal_less_than. rhs_dom != lhs_dom end def _not_equal_less_than(lhs_dom, rhs_dom = self) ValueDomain.of_unlimited(logical_shr?) end def _not_equal_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.max_value ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_true(logical_shr?) end end def logical_and(rhs_dom) rhs_dom._logical_and_less_than(self) end def _logical_and_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes NilValueDomain#_logical_and_less_than. rhs_dom.logical_and(lhs_dom) end def _logical_and_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes UnlimitedValueDomain#_logical_and_less_than. rhs_dom.logical_and(lhs_dom) end def _logical_and_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes EqualToValueDomain#_logical_and_less_than. rhs_dom.logical_and(lhs_dom) end def _logical_and_less_than(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= 0 || rhs_dom.max_value >= 0 ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_true(logical_shr?) end end def _logical_and_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= 0 || rhs_dom.max_value >= 0 ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_true(logical_shr?) end end def logical_or(rhs_dom) rhs_dom._logical_or_less_than(self) end def _logical_or_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes NilValueDomain#_logical_or_less_than. rhs_dom.logical_or(lhs_dom) end def _logical_or_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes UnlimitedValueDomain#_logical_or_less_than. rhs_dom.logical_or(lhs_dom) end def _logical_or_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes EqualToValueDomain#_logical_or_less_than. rhs_dom.logical_or(lhs_dom) end def _logical_or_less_than(lhs_dom, rhs_dom = self) if lhs_dom.value < 0 || rhs_dom.value < 0 ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def _logical_or_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.value > 0 || rhs_dom.value < 0 ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def intersection(rhs_dom) rhs_dom._intersection_less_than(self) end def _intersection_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes NilValueDomain#_intersection_less_than. rhs_dom.intersection(lhs_dom) end def _intersection_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes UnlimitedValueDomain#_intersection_less_than. rhs_dom.intersection(lhs_dom) end def _intersection_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes EqualToValueDomain#_intersection_less_than. rhs_dom.intersection(lhs_dom) end def _intersection_less_than(lhs_dom, rhs_dom = self) if lhs_dom.max_value <= rhs_dom.max_value lhs_dom else rhs_dom end end def _intersection_greater_than(lhs_dom, rhs_dom = self) case when lhs_dom.min_value < rhs_dom.max_value ValueDomain._create_intersection(lhs_dom, rhs_dom) when lhs_dom.min_value == rhs_dom.max_value ValueDomain.equal_to(lhs_dom.min_value, logical_shr?) when lhs_dom.min_value > rhs_dom.max_value ValueDomain.of_nil(logical_shr?) end end def union(rhs_dom) rhs_dom._union_less_than(self) end def _union_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes NilValueDomain#_union_less_than. rhs_dom.union(lhs_dom) end def _union_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes UnlimitedValueDomain#_union_less_than. rhs_dom.union(lhs_dom) end def _union_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes EqualToValueDomain#_union_less_than. rhs_dom.union(lhs_dom) end def _union_less_than(lhs_dom, rhs_dom = self) if lhs_dom.max_value <= rhs_dom.max_value rhs_dom else lhs_dom end end def _union_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.max_value ValueDomain.of_unlimited(logical_shr?) else ValueDomain._create_union(lhs_dom, rhs_dom) end end def coerce_to_integer if @value.integer? self else ValueDomain.less_than(@value.to_i, logical_shr?) end end def coerce_to_real if @value.real? self else ValueDomain.less_than(@value.to_f, logical_shr?) end end def min_value nil end def max_value if @value.integer? @value - 1 else @value - Float::EPSILON end end def each_sample if block_given? yield(max_value) self else to_enum(:each_sample) end end def to_defined_domain self end def to_s "(< #{@value})" end memoize :to_s def complexity 1 end end class GreaterThanValueDomain < ValueDomain def initialize(val, logical_shr) super(logical_shr) if val @value = val else raise ArgumentError, "greater than nil?" end end attr_reader :value def empty? false end def nan? false end def undefined? false end def ambiguous? false end def contain_value_domain?(rhs_dom) rhs_dom._contain_greater_than?(self) end def _contain_nil?(lhs_dom, rhs_dom = self) false end def _contain_unlimited?(lhs_dom, rhs_dom = self) true end def _contain_equal_to?(lhs_dom, rhs_dom = self) false end def _contain_less_than?(lhs_dom, rhs_dom = self) false end def _contain_greater_than?(lhs_dom, rhs_dom = self) lhs_dom.value <= rhs_dom.value end def _contain_intersection?(lhs_dom, rhs_dom = self) lhs_dom.domain_pair.all? { |lhs| lhs.contain_value_domain?(rhs_dom) } end def _contain_union?(lhs_dom, rhs_dom = self) lhs_dom.domain_pair.any? { |lhs| lhs.contain_value_domain?(rhs_dom) } end def intersect?(rhs_dom) rhs_dom._intersect_greater_than?(self) end def _intersect_nil?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes NilValueDomain#_intersect_greater_than?. rhs_dom.intersect?(lhs_dom) end def _intersect_unlimited?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes # UnlimitedValueDomain#_intersect_greater_than?. rhs_dom.intersect?(lhs_dom) end def _intersect_equal_to?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes # EqualToValueDomain#_intersect_greater_than?. rhs_dom.intersect?(lhs_dom) end def _intersect_less_than?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes # LessThanValueDomain#_intersect_greater_than?. rhs_dom.intersect?(lhs_dom) end def _intersect_greater_than?(lhs_dom, rhs_dom = self) true end def _narrow_by_eq(rhs_dom, lhs_dom = self) rhs_dom._narrow_greater_than_by_eq(lhs_dom) end def _narrow_nil_by_eq(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_eq(lhs_dom, rhs_dom = self) rhs_dom end def _narrow_equal_to_by_eq(lhs_dom, rhs_dom = self) if lhs_dom.value > rhs_dom.value # NOTE: Narrowing `---------|---' by `== ---<=========' makes # `---------|---'. lhs_dom else # NOTE: Narrowing `---|---------' by `== ---------<===' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end def _narrow_less_than_by_eq(lhs_dom, rhs_dom = self) if lhs_dom.value > rhs_dom.value # NOTE: Narrowing `=========>---' by `== ---<=========' makes # `---<=====>---'. lhs_dom.intersection(rhs_dom) else # NOTE: Narrowing `===>---------' by `== ---------<===' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end def _narrow_greater_than_by_eq(lhs_dom, rhs_dom = self) if lhs_dom.min_value >= rhs_dom.min_value # NOTE: Narrowing `---------<===' by `== ---<=========' makes # `---------<==='. lhs_dom else # NOTE: Narrowing `---<=========' by `== ---------<===' makes # `---------<==='. rhs_dom end end def _narrow_by_ne(rhs_dom, lhs_dom = self) rhs_dom._narrow_greater_than_by_ne(lhs_dom) end def _narrow_nil_by_ne(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_ne(lhs_dom, rhs_dom = self) rhs_dom.inversion end def _narrow_equal_to_by_ne(lhs_dom, rhs_dom = self) if lhs_dom.value >= rhs_dom.min_value # NOTE: Narrowing `---|---------' by `!= ---<=========' makes # `-------------'. ValueDomain.of_nil(logical_shr?) else # NOTE: Narrowing `---|---------' by `!= ---------<===' makes # `---|---------'. lhs_dom end end def _narrow_less_than_by_ne(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= rhs_dom.min_value # NOTE: Narrowing `=========>---' by `!= ---<=========' makes # `===>---------'. rhs_dom.inversion else # NOTE: Narrowing `===>---------' by `!= ---------<===' makes # `===>---------'. lhs_dom end end def _narrow_greater_than_by_ne(lhs_dom, rhs_dom = self) if lhs_dom.min_value >= rhs_dom.min_value # NOTE: Narrowing `---------<===' by `!= ---<=========' makes # `-------------'. ValueDomain.of_nil(logical_shr?) else # NOTE: Narrowing `---<=========' by `!= ---------<===' makes # `---<=====>---'. lhs_dom.intersection(rhs_dom.inversion) end end def _narrow_by_lt(rhs_dom, lhs_dom = self) rhs_dom._narrow_greater_than_by_lt(lhs_dom) end def _narrow_nil_by_lt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_lt(lhs_dom, rhs_dom = self) # NOTE: Narrowing `=============' by `< ------<======' makes # `======>------'. rhs_dom.inversion end def _narrow_equal_to_by_lt(lhs_dom, rhs_dom = self) if lhs_dom.value >= rhs_dom.min_value # NOTE: Narrowing `---------|---' by `< ---<=========' makes # `-------------'. ValueDomain.of_nil(logical_shr?) else # NOTE: Narrowing `---|---------' by `< ---------<===' makes # `---|---------'. lhs_dom end end def _narrow_less_than_by_lt(lhs_dom, rhs_dom = self) if lhs_dom.value > rhs_dom.value # NOTE: Narrowing `=========>---' by `< ---<=========' makes # `===>---------'. rhs_dom.inversion else # NOTE: Narrowing `===>---------' by `< ---------<===' makes # `===>---------'. lhs_dom end end def _narrow_greater_than_by_lt(lhs_dom, rhs_dom = self) if lhs_dom.value < rhs_dom.value # NOTE: Narrowing `---<=========' by `< ---------<===' makes # `---<=====>---'. lhs_dom.intersect(rhs_dom.inversion) else # NOTE: Narrowing `---------<===' by `< ---<=========' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end def _narrow_by_gt(rhs_dom, lhs_dom = self) rhs_dom._narrow_greater_than_by_gt(lhs_dom) end def _narrow_nil_by_gt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_gt(lhs_dom, rhs_dom = self) # NOTE: Narrowing `=============' by `> ------<======' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end def _narrow_equal_to_by_gt(lhs_dom, rhs_dom = self) # NOTE: Narrowing `------|------' by `> ------<======' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end def _narrow_less_than_by_gt(lhs_dom, rhs_dom = self) # NOTE: Narrowing `======>------' by `> ------<======' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end def _narrow_greater_than_by_gt(lhs_dom, rhs_dom = self) # NOTE: Narrowing `------<======' by `> ------<======' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end def inversion ValueDomain.less_than_or_equal_to(@value, logical_shr?) end def ~ ValueDomain.greater_than(~coerce_to_integer.value, logical_shr?) end def +@ self end def -@ ValueDomain.less_than(-@value, logical_shr?) end def +(rhs_dom) rhs_dom._add_greater_than(self) end def _add_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes NilValueDomain#_add_greater_than. rhs_dom + lhs_dom end def _add_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes UnlimitedValueDomain#_add_greater_than. rhs_dom + lhs_dom end def _add_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes EqualToValueDomain#_add_greater_than. rhs_dom + lhs_dom end def _add_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes LessThanValueDomain#_add_greater_than. rhs_dom + lhs_dom end def _add_greater_than(lhs_dom, rhs_dom = self) ValueDomain.greater_than(lhs_dom.value + rhs_dom.value, logical_shr?) end def *(rhs_dom) rhs_dom._mul_greater_than(self) end def _mul_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes NilValueDomain#_mul_greater_than. rhs_dom * lhs_dom end def _mul_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes UnlimitedValueDomain#_mul_greater_than. rhs_dom * lhs_dom end def _mul_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes EqualToValueDomain#_mul_greater_than. rhs_dom * lhs_dom end def _mul_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes LessThanValueDomain#_mul_greater_than. rhs_dom * lhs_dom end def _mul_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.value >= 0 if rhs_dom.value >= 0 ValueDomain.greater_than(lhs_dom.value * rhs_dom.value, logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end else if rhs_dom.value >= 0 ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end end def /(rhs_dom) rhs_dom._div_greater_than(self) end def _div_nil(lhs_dom, rhs_dom = self) if rhs_dom.min_value <= 0 ValueDomain.of_nan(logical_shr?) else lhs_dom end end def _div_unlimited(lhs_dom, rhs_dom = self) if rhs_dom.min_value <= 0 ValueDomain.of_nan(logical_shr?) else lhs_dom end end def _div_equal_to(lhs_dom, rhs_dom = self) if rhs_dom.value <= 0 ValueDomain.of_nan(logical_shr?) else case when lhs_dom.value < 0 ValueDomain.greater_than( lhs_dom.value / rhs_dom.value, logical_shr? ).intersection(ValueDomain.less_than( 0, logical_shr? )) when lhs_dom.value == 0 ValueDomain.equal_to(0, logical_shr?) when lhs_dom.value > 0 ValueDomain.greater_than( 0, logical_shr? ).intersection(ValueDomain.less_than( lhs_dom.value / rhs_dom.value, logical_shr? )) end end end def _div_less_than(lhs_dom, rhs_dom = self) if rhs_dom.value < 0 ValueDomain.of_nan(logical_shr?) else case when lhs_dom.value >= 0 ValueDomain.greater_than(0, logical_shr?) when lhs_dom.value < 0 ValueDomain.less_than(0, logical_shr?) end end end def _div_greater_than(lhs_dom, rhs_dom = self) if rhs_dom.value < 0 ValueDomain.of_nan(logical_shr?) else case when lhs_dom.value <= 0 ValueDomain.less_than(0, logical_shr?) when lhs_dom.value > 0 ValueDomain.greater_than(0, logical_shr?) end end end def &(rhs_dom) rhs_dom.coerce_to_integer._and_greater_than(coerce_to_integer) end def _and_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes NilValueDomain#_and_greater_than. rhs_dom & lhs_dom end def _and_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes UnlimitedValueDomain#_and_greater_than. rhs_dom & lhs_dom end def _and_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes EqualToValueDomain#_and_greater_than. rhs_dom & lhs_dom end def _and_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes LessThanValueDomain#_and_greater_than. rhs_dom & lhs_dom end def _and_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.value > 0 && rhs_dom.value > 0 ValueDomain.greater_than(lhs_dom.value & rhs_dom.value, logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def |(rhs_dom) rhs_dom.coerce_to_integer._or_greater_than(coerce_to_integer) end def _or_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes NilValueDomain#_or_greater_than. rhs_dom | lhs_dom end def _or_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes UnlimitedValueDomain#_or_greater_than. rhs_dom | lhs_dom end def _or_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes EqualToValueDomain#_or_greater_than. rhs_dom | lhs_dom end def _or_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes LessThanValueDomain#_or_greater_than. rhs_dom | lhs_dom end def _or_greater_than(lhs_dom, rhs_dom = self) ValueDomain.of_unlimited(logical_shr?) end def ^(rhs_dom) rhs_dom.coerce_to_integer._xor_greater_than(coerce_to_integer) end def _xor_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes NilValueDomain#_xor_greater_than. rhs_dom ^ lhs_dom end def _xor_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes UnlimitedValueDomain#_xor_greater_than. rhs_dom ^ lhs_dom end def _xor_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes EqualToValueDomain#_xor_greater_than. rhs_dom ^ lhs_dom end def _xor_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes LessThanValueDomain#_xor_greater_than. rhs_dom ^ lhs_dom end def _xor_greater_than(lhs_dom, rhs_dom = self) case when lhs_dom.value > 0 && rhs_dom.value > 0 ValueDomain.greater_than(0, logical_shr?) when lhs_dom.value > 0 || rhs_dom.value > 0 ValueDomain.less_than(0, logical_shr?) else ValueDomain.greater_than(0, logical_shr?) end end def <<(rhs_dom) rhs_dom.coerce_to_integer._shl_greater_than(coerce_to_integer) end def _shl_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _shl_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-overflow. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom end def _shl_equal_to(lhs_dom, rhs_dom = self) ValueDomain.greater_than(left_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def _shl_less_than(lhs_dom, rhs_dom = self) ValueDomain.greater_than(left_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def _shl_greater_than(lhs_dom, rhs_dom = self) ValueDomain.greater_than(left_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def >>(rhs_dom) rhs_dom.coerce_to_integer._shr_greater_than(coerce_to_integer) end def _shr_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _shr_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-overflow. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom end def _shr_equal_to(lhs_dom, rhs_dom = self) ValueDomain.less_than(right_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def _shr_less_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(right_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def _shr_greater_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(right_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end def ! if @value > 0 ValueDomain.of_false(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def <(rhs_dom) rhs_dom._less_greater_than(self) end def _less_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end def _less_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end def _less_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value < rhs_dom.min_value ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def _less_less_than(lhs_dom, rhs_dom = self) if lhs_dom.max_value < rhs_dom.min_value ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def _less_greater_than(lhs_dom, rhs_dom = self) ValueDomain.of_unlimited(logical_shr?) end def ==(rhs_dom) rhs_dom._equal_greater_than(self) end def _equal_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes NilValueDomain#_equal_greater_than. rhs_dom == lhs_dom end def _equal_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes UnlimitedValueDomain#_equal_greater_than. rhs_dom == lhs_dom end def _equal_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes EqualToValueDomain#_equal_greater_than. rhs_dom == lhs_dom end def _equal_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes LessThanValueDomain#_equal_greater_than. rhs_dom == lhs_dom end def _equal_greater_than(lhs_dom, rhs_dom = self) ValueDomain.of_unlimited(logical_shr?) end def !=(rhs_dom) rhs_dom._not_equal_greater_than(self) end def _not_equal_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes NilValueDomain#_not_equal_greater_than. rhs_dom != lhs_dom end def _not_equal_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes UnlimitedValueDomain#_not_equal_greater_than. rhs_dom != lhs_dom end def _not_equal_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes EqualToValueDomain#_not_equal_greater_than. rhs_dom != lhs_dom end def _not_equal_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes LessThanValueDomain#_not_equal_greater_than. rhs_dom != lhs_dom end def _not_equal_greater_than(lhs_dom, rhs_dom = self) ValueDomain.of_unlimited(logical_shr?) end def logical_and(rhs_dom) rhs_dom._logical_and_greater_than(self) end def _logical_and_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes NilValueDomain#_logical_and_greater_than. rhs_dom.logical_and(lhs_dom) end def _logical_and_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes # UnlimitedValueDomain#_logical_and_greater_than. rhs_dom.logical_and(lhs_dom) end def _logical_and_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes EqualToValueDomain#_logical_and_greater_than. rhs_dom.logical_and(lhs_dom) end def _logical_and_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes # LessThanValueDomain#_logical_and_greater_than. rhs_dom.logical_and(lhs_dom) end def _logical_and_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= 0 || rhs_dom.min_value <= 0 ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_true(logical_shr?) end end def logical_or(rhs_dom) rhs_dom._logical_or_greater_than(self) end def _logical_or_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes NilValueDomain#_logical_or_greater_than. rhs_dom.logical_or(lhs_dom) end def _logical_or_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes # UnlimitedValueDomain#_logical_or_greater_than. rhs_dom.logical_or(lhs_dom) end def _logical_or_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes EqualToValueDomain#_logical_or_greater_than. rhs_dom.logical_or(lhs_dom) end def _logical_or_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes LessThanValueDomain#_logical_or_greater_than. rhs_dom.logical_or(lhs_dom) end def _logical_or_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.value > 0 || rhs_dom.value > 0 ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end def intersection(rhs_dom) rhs_dom._intersection_greater_than(self) end def _intersection_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes NilValueDomain#_intersection_greater_than. rhs_dom.intersection(lhs_dom) end def _intersection_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes # UnlimitedValueDomain#_intersection_greater_than. rhs_dom.intersection(lhs_dom) end def _intersection_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes # EqualToValueDomain#_intersection_greater_than. rhs_dom.intersection(lhs_dom) end def _intersection_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes # LessThanValueDomain#_intersection_greater_than. rhs_dom.intersection(lhs_dom) end def _intersection_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.min_value rhs_dom else lhs_dom end end def union(rhs_dom) rhs_dom._union_greater_than(self) end def _union_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes NilValueDomain#_union_greater_than. rhs_dom.union(lhs_dom) end def _union_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes UnlimitedValueDomain#_union_greater_than. rhs_dom.union(lhs_dom) end def _union_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes EqualToValueDomain#_union_greater_than. rhs_dom.union(lhs_dom) end def _union_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes LessThanValueDomain#_union_greater_than. rhs_dom.union(lhs_dom) end def _union_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.min_value lhs_dom else rhs_dom end end def coerce_to_integer if @value.integer? self else ValueDomain.greater_than(@value.to_i, logical_shr?) end end def coerce_to_real if @value.real? self else ValueDomain.greater_than(@value.to_f, logical_shr?) end end def min_value if @value.integer? @value + 1 else @value + Float::EPSILON end end def max_value nil end def each_sample if block_given? yield(min_value) self else to_enum(:each_sample) end end def to_defined_domain self end def to_s "(> #{@value})" end memoize :to_s def complexity 1 end end class CompositeValueDomain < ValueDomain def initialize(lhs_dom, rhs_dom) super(lhs_dom.logical_shr? && rhs_dom.logical_shr?) @domain_pair = [lhs_dom, rhs_dom].sort end attr_reader :domain_pair def empty? false end def nan? false end def undefined? false end def ambiguous? false end def _intersect_nil?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes CompositeValueDomain#intersect?. rhs_dom.intersect?(lhs_dom) end def _intersect_unlimited?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes CompositeValueDomain#intersect?. rhs_dom.intersect?(lhs_dom) end def _intersect_equal_to?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes CompositeValueDomain#intersect?. rhs_dom.intersect?(lhs_dom) end def _intersect_less_than?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes CompositeValueDomain#intersect?. rhs_dom.intersect?(lhs_dom) end def _intersect_greater_than?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes CompositeValueDomain#intersect?. rhs_dom.intersect?(lhs_dom) end def _narrow_by_eq(rhs_dom, lhs_dom = self) lhs_dom.intersection(rhs_dom) end def _narrow_nil_by_eq(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_eq(lhs_dom, rhs_dom = self) rhs_dom end def _narrow_equal_to_by_eq(lhs_dom, rhs_dom = self) lhs_dom.intersection(rhs_dom) end def _narrow_less_than_by_eq(lhs_dom, rhs_dom = self) lhs_dom.intersection(rhs_dom) end def _narrow_greater_than_by_eq(lhs_dom, rhs_dom = self) lhs_dom.intersection(rhs_dom) end def _narrow_by_ne(rhs_dom, lhs_dom = self) lhs_dom.intersection(rhs_dom.inversion) end def _narrow_nil_by_ne(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_ne(lhs_dom, rhs_dom = self) rhs_dom.inversion end def _narrow_equal_to_by_ne(lhs_dom, rhs_dom = self) lhs_dom.intersection(rhs_dom.inversion) end def _narrow_less_than_by_ne(lhs_dom, rhs_dom = self) lhs_dom.intersection(rhs_dom.inversion) end def _narrow_greater_than_by_ne(lhs_dom, rhs_dom = self) lhs_dom.intersection(rhs_dom.inversion) end def _narrow_by_lt(rhs_dom, lhs_dom = self) lhs_dom.intersection( ValueDomain.of_unlimited(logical_shr?).narrow(Operator::LT, rhs_dom)) end def _narrow_nil_by_lt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_lt(lhs_dom, rhs_dom = self) if rhs_max = rhs_dom.max_value ValueDomain.less_than(rhs_max, logical_shr?) else lhs_dom end end def _narrow_equal_to_by_lt(lhs_dom, rhs_dom = self) if rhs_max = rhs_dom.max_value and lhs_dom.value > rhs_max ValueDomain.of_nil(logical_shr?) else lhs_dom end end def _narrow_less_than_by_lt(lhs_dom, rhs_dom = self) if rhs_max = rhs_dom.max_value and lhs_dom.max_value > rhs_max ValueDomain.less_than(rhs_max, logical_shr?) else lhs_dom end end def _narrow_greater_than_by_lt(lhs_dom, rhs_dom = self) if rhs_max = rhs_dom.max_value and lhs_dom.min_value > rhs_max ValueDomain.of_nil(logical_shr?) else lhs_dom end end def _narrow_by_gt(rhs_dom, lhs_dom = self) lhs_dom.intersection( ValueDomain.of_unlimited(logical_shr?).narrow(Operator::GT, rhs_dom)) end def _narrow_nil_by_gt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end def _narrow_unlimited_by_gt(lhs_dom, rhs_dom = self) if rhs_min = rhs_dom.min_value ValueDomain.greater_than(rhs_min, logical_shr?) else lhs_dom end end def _narrow_equal_to_by_gt(lhs_dom, rhs_dom = self) if rhs_min = rhs_dom.min_value and lhs_dom.value < rhs_min ValueDomain.of_nil(logical_shr?) else lhs_dom end end def _narrow_less_than_by_gt(lhs_dom, rhs_dom = self) if rhs_min = rhs_dom.min_value and lhs_dom.max_value < rhs_min ValueDomain.of_nil(logical_shr?) else lhs_dom end end def _narrow_greater_than_by_gt(lhs_dom, rhs_dom = self) if rhs_min = rhs_dom.min_value and lhs_dom.min_value < rhs_min ValueDomain.greater_than(rhs_min, logical_shr?) else lhs_dom end end def _add_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes CompositeValueDomain#+. rhs_dom + lhs_dom end def _add_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes CompositeValueDomain#+. rhs_dom + lhs_dom end def _add_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes CompositeValueDomain#+. rhs_dom + lhs_dom end def _add_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes CompositeValueDomain#+. rhs_dom + lhs_dom end def _add_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes CompositeValueDomain#+. rhs_dom + lhs_dom end def _div_nil(lhs_dom, rhs_dom = self) _div(lhs_dom, rhs_dom) end def _div_unlimited(lhs_dom, rhs_dom = self) _div(lhs_dom, rhs_dom) end def _div_equal_to(lhs_dom, rhs_dom = self) _div(lhs_dom, rhs_dom) end def _div_less_than(lhs_dom, rhs_dom = self) _div(lhs_dom, rhs_dom) end def _div_greater_than(lhs_dom, rhs_dom = self) _div(lhs_dom, rhs_dom) end def _and_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes CompositeValueDomain#&. rhs_dom & lhs_dom end def _and_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes CompositeValueDomain#&. rhs_dom & lhs_dom end def _and_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes CompositeValueDomain#&. rhs_dom & lhs_dom end def _and_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes CompositeValueDomain#&. rhs_dom & lhs_dom end def _and_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes CompositeValueDomain#&. rhs_dom & lhs_dom end def _or_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes CompositeValueDomain#|. rhs_dom | lhs_dom end def _or_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes CompositeValueDomain#|. rhs_dom | lhs_dom end def _or_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes CompositeValueDomain#|. rhs_dom | lhs_dom end def _or_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes CompositeValueDomain#|. rhs_dom | lhs_dom end def _or_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes CompositeValueDomain#|. rhs_dom | lhs_dom end def _xor_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes CompositeValueDomain#^. rhs_dom ^ lhs_dom end def _xor_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes CompositeValueDomain#^. rhs_dom ^ lhs_dom end def _xor_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes CompositeValueDomain#^. rhs_dom ^ lhs_dom end def _xor_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes CompositeValueDomain#^. rhs_dom ^ lhs_dom end def _xor_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes CompositeValueDomain#^. rhs_dom ^ lhs_dom end def _shl_nil(lhs_dom, rhs_dom = self) _shl(lhs_dom, rhs_dom) end def _shl_unlimited(lhs_dom, rhs_dom = self) _shl(lhs_dom, rhs_dom) end def _shl_equal_to(lhs_dom, rhs_dom = self) _shl(lhs_dom, rhs_dom) end def _shl_less_than(lhs_dom, rhs_dom = self) _shl(lhs_dom, rhs_dom) end def _shl_greater_than(lhs_dom, rhs_dom = self) _shl(lhs_dom, rhs_dom) end def _shr_nil(lhs_dom, rhs_dom = self) _shr(lhs_dom, rhs_dom) end def _shr_unlimited(lhs_dom, rhs_dom = self) _shr(lhs_dom, rhs_dom) end def _shr_equal_to(lhs_dom, rhs_dom = self) _shr(lhs_dom, rhs_dom) end def _shr_less_than(lhs_dom, rhs_dom = self) _shr(lhs_dom, rhs_dom) end def _shr_greater_than(lhs_dom, rhs_dom = self) _shr(lhs_dom, rhs_dom) end def _less_nil(lhs_dom, rhs_dom = self) _less(lhs_dom, rhs_dom) end def _less_unlimited(lhs_dom, rhs_dom = self) _less(lhs_dom, rhs_dom) end def _less_equal_to(lhs_dom, rhs_dom = self) _less(lhs_dom, rhs_dom) end def _less_less_than(lhs_dom, rhs_dom = self) _less(lhs_dom, rhs_dom) end def _less_greater_than(lhs_dom, rhs_dom = self) _less(lhs_dom, rhs_dom) end def ==(rhs_dom) _equal(rhs_dom, self) end def _equal_nil(lhs_dom, rhs_dom = self) _equal(lhs_dom, rhs_dom) end def _equal_unlimited(lhs_dom, rhs_dom = self) _equal(lhs_dom, rhs_dom) end def _equal_equal_to(lhs_dom, rhs_dom = self) _equal(lhs_dom, rhs_dom) end def _equal_less_than(lhs_dom, rhs_dom = self) _equal(lhs_dom, rhs_dom) end def _equal_greater_than(lhs_dom, rhs_dom = self) _equal(lhs_dom, rhs_dom) end def !=(rhs_dom) _not_equal(rhs_dom, self) end def _not_equal_nil(lhs_dom, rhs_dom = self) _not_equal(lhs_dom, rhs_dom) end def _not_equal_unlimited(lhs_dom, rhs_dom = self) _not_equal(lhs_dom, rhs_dom) end def _not_equal_equal_to(lhs_dom, rhs_dom = self) _not_equal(lhs_dom, rhs_dom) end def _not_equal_less_than(lhs_dom, rhs_dom = self) _not_equal(lhs_dom, rhs_dom) end def _not_equal_greater_than(lhs_dom, rhs_dom = self) _not_equal(lhs_dom, rhs_dom) end def _logical_and_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes CompositeValueDomain#logical_and. rhs_dom.logical_and(lhs_dom) end def _logical_and_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes CompositeValueDomain#logical_and. rhs_dom.logical_and(lhs_dom) end def _logical_and_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes CompositeValueDomain#logical_and. rhs_dom.logical_and(lhs_dom) end def _logical_and_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes CompositeValueDomain#logical_and. rhs_dom.logical_and(lhs_dom) end def _logical_and_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes CompositeValueDomain#logical_and. rhs_dom.logical_and(lhs_dom) end def _logical_or_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes CompositeValueDomain#logical_or. rhs_dom.logical_or(lhs_dom) end def _logical_or_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes CompositeValueDomain#logical_or. rhs_dom.logical_or(lhs_dom) end def _logical_or_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes CompositeValueDomain#logical_or. rhs_dom.logical_or(lhs_dom) end def _logical_or_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes CompositeValueDomain#logical_or. rhs_dom.logical_or(lhs_dom) end def _logical_or_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes CompositeValueDomain#logical_or. rhs_dom.logical_or(lhs_dom) end def _intersection_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes CompositeValueDomain#intersection which # should be overriden by IntersectionValueDomain and # UnionValueDomain. rhs_dom.intersection(lhs_dom) end def _intersection_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes CompositeValueDomain#intersection which # should be overriden by IntersectionValueDomain and # UnionValueDomain. rhs_dom.intersection(lhs_dom) end def _intersection_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes CompositeValueDomain#intersection which # should be overriden by IntersectionValueDomain and # UnionValueDomain. rhs_dom.intersection(lhs_dom) end def _intersection_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes CompositeValueDomain#intersection which # should be overriden by IntersectionValueDomain and # UnionValueDomain. rhs_dom.intersection(lhs_dom) end def _intersection_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes CompositeValueDomain#intersection which # should be overriden by IntersectionValueDomain and # UnionValueDomain. rhs_dom.intersection(lhs_dom) end def _union_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes CompositeValueDomain#union which should be # overriden by IntersectionValueDomain and UnionValueDomain. rhs_dom.union(lhs_dom) end def _union_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes CompositeValueDomain#union which should be # overriden by IntersectionValueDomain and UnionValueDomain. rhs_dom.union(lhs_dom) end def _union_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes CompositeValueDomain#union which should be # overriden by IntersectionValueDomain and UnionValueDomain. rhs_dom.union(lhs_dom) end def _union_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes CompositeValueDomain#union which should be # overriden by IntersectionValueDomain and UnionValueDomain. rhs_dom.union(lhs_dom) end def _union_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes CompositeValueDomain#union which should be # overriden by IntersectionValueDomain and UnionValueDomain. rhs_dom.union(lhs_dom) end def to_defined_domain self end def complexity domain_pair.map { |dom| dom.complexity + 1 }.max end private def _div(lhs_dom, rhs_dom = self) subclass_responsibility end def _shl(lhs_dom, rhs_dom = self) subclass_responsibility end def _shr(lhs_dom, rhs_dom = self) subclass_responsibility end def _less(lhs_dom, rhs_dom = self) subclass_responsibility end def _equal(lhs_dom, rhs_dom = self) subclass_responsibility end def _not_equal(lhs_dom, rhs_dom = self) subclass_responsibility end end class IntersectionValueDomain < CompositeValueDomain def contain_value_domain?(rhs_dom) rhs_dom._contain_intersection?(self) end def _contain_nil?(lhs_dom, rhs_dom = self) false end def _contain_unlimited?(lhs_dom, rhs_dom = self) true end def _contain_equal_to?(lhs_dom, rhs_dom = self) rhs_dom.domain_pair.any? { |rhs| lhs_dom.contain_value_domain?(rhs) } end def _contain_less_than?(lhs_dom, rhs_dom = self) rhs_dom.domain_pair.any? { |rhs| lhs_dom.contain_value_domain?(rhs) } end def _contain_greater_than?(lhs_dom, rhs_dom = self) rhs_dom.domain_pair.any? { |rhs| lhs_dom.contain_value_domain?(rhs) } end def _contain_intersection?(lhs_dom, rhs_dom = self) lhs_fst, lhs_snd = lhs_dom.domain_pair rhs_fst, rhs_snd = rhs_dom.domain_pair case when lhs_fst.contain_value_domain?(rhs_fst) && lhs_snd.contain_value_domain?(rhs_snd) true when lhs_fst.contain_value_domain?(rhs_snd) && lhs_snd.contain_value_domain?(rhs_fst) true else false end end def _contain_union?(lhs_dom, rhs_dom = self) lhs_dom.domain_pair.any? { |lhs| lhs.contain_value_domain?(rhs_dom) } end def intersect?(rhs_dom) domain_pair.all? { |lhs| lhs.intersect?(rhs_dom) } end def inversion new_sub_doms = domain_pair.map { |dom| dom.inversion } new_sub_doms.first.union(new_sub_doms.last) end def ~ new_sub_doms = domain_pair.map { |dom| ~dom } new_sub_doms.first.intersection(new_sub_doms.last) end def +@ new_sub_doms = domain_pair.map { |dom| +dom } new_sub_doms.first.intersection(new_sub_doms.last) end def -@ new_sub_doms = domain_pair.map { |dom| -dom } new_sub_doms.first.intersection(new_sub_doms.last) end def +(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs + rhs_dom } new_sub_doms.first.intersection(new_sub_doms.last) end def *(rhs_dom) # NOTE: Multiplication of LessThanValueDomain or GreaterThanValueDomain # always makes UnlimitedValueDomain when the domain contains both # positive and negative values. # So, multiplication of IntersectionValueDomain cannot be defined # in the same manner as other arithmetics. if rhs_dom.kind_of?(IntersectionValueDomain) lhs_dom = self lval = [ (n = lhs_dom.min_value).integer? ? n - 1 : n - Float::EPSILON, (n = lhs_dom.max_value).integer? ? n + 1 : n + Float::EPSILON ] labs = lval.map { |val| val.abs }.sort rval = [ (n = rhs_dom.min_value).integer? ? n - 1 : n - Float::EPSILON, (n = rhs_dom.max_value).integer? ? n + 1 : n + Float::EPSILON ] rabs = rval.map { |val| val.abs }.sort comp = lambda { |op, nums| nums.all? { |num| num.__send__(op, 0) } } only_negative, only_positive = comp.curry[:<], comp.curry[:>=] case lval when only_positive case rval when only_positive _mul_only_positive_and_only_positive(lval, labs, rval, rabs) when only_negative _mul_only_positive_and_only_negative(lval, labs, rval, rabs) else _mul_only_positive_and_positive_negative(lval, labs, rval, rabs) end when only_negative case rval when only_positive _mul_only_positive_and_only_negative(rval, rabs, lval, labs) when only_negative _mul_only_negative_and_only_negative(lval, labs, rval, rabs) else _mul_only_negative_and_positive_negative(lval, labs, rval, rabs) end else _mul_positive_negative_and_positive_negative(lval, labs, rval, rabs) end else rhs_dom * self end end def _mul_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end def _mul_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain. lhs_dom end def _mul_equal_to(lhs_dom, rhs_dom = self) new_sub_doms = rhs_dom.domain_pair.map { |rhs| lhs_dom * rhs } new_sub_doms.first.intersection(new_sub_doms.last) end def _mul_less_than(lhs_dom, rhs_dom = self) new_sub_doms = rhs_dom.domain_pair.map { |rhs| lhs_dom * rhs } new_sub_doms.first.intersection(new_sub_doms.last) end def _mul_greater_than(lhs_dom, rhs_dom = self) new_sub_doms = rhs_dom.domain_pair.map { |rhs| lhs_dom * rhs } new_sub_doms.first.intersection(new_sub_doms.last) end def /(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs / rhs_dom } new_sub_doms.first.intersection(new_sub_doms.last) end def &(rhs_dom) if rhs_max = rhs_dom.max_value ValueDomain.greater_than_or_equal_to(0, logical_shr?).intersection( ValueDomain.less_than_or_equal_to(rhs_max, logical_shr?)) else ValueDomain.greater_than_or_equal_to(0, logical_shr?) end end def |(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs | rhs_dom } new_sub_doms.first.intersection(new_sub_doms.last) end def ^(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs ^ rhs_dom } new_sub_doms.first.intersection(new_sub_doms.last) end def <<(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs << rhs_dom } new_sub_doms.first.intersection(new_sub_doms.last) end def >>(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs >> rhs_dom } new_sub_doms.first.intersection(new_sub_doms.last) end def ! new_sub_doms = domain_pair.map { |dom| !dom } new_sub_doms.first.intersection(new_sub_doms.last) end def <(rhs_dom) # NOTE: The intersection value domain must be a close-domain (--<===>--). if intersect?(rhs_dom) if rhs_dom.max_value && rhs_dom.max_value == min_value ValueDomain.of_false(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end else # NOTE: When value domains are not intersected, the RHS value domain is # in the left or right of the LHS intersection value domain. if rhs_dom.min_value && max_value < rhs_dom.min_value # NOTE: The RHS value domain is in the right of the LHS intersection # value domain. ValueDomain.of_true(logical_shr?) else # NOTE: The RHS value domain is in the left of the LHS intersection # value domain. ValueDomain.of_false(logical_shr?) end end end def logical_and(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs.logical_and(rhs_dom) } new_sub_doms.first.intersection(new_sub_doms.last) end def logical_or(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs.logical_or(rhs_dom) } new_sub_doms.first.intersection(new_sub_doms.last) end def intersection(rhs_dom) if rhs_dom.kind_of?(UnionValueDomain) return rhs_dom.intersection(self) end case when contain_value_domain?(rhs_dom) rhs_dom when rhs_dom.contain_value_domain?(self) self else new_sub_doms = domain_pair.map { |lhs| lhs.intersection(rhs_dom) } ValueDomain.of_intersection(*new_sub_doms) end end def union(rhs_dom) case when contain_value_domain?(rhs_dom) self when rhs_dom.contain_value_domain?(self) rhs_dom else ValueDomain.of_union(self, rhs_dom) end end def coerce_to_integer new_sub_doms = domain_pair.map { |dom| dom.coerce_to_integer } new_sub_doms.first.intersection(new_sub_doms.last) end def coerce_to_real new_sub_doms = domain_pair.map { |dom| dom.coerce_to_real } new_sub_doms.first.intersection(new_sub_doms.last) end def min_value # NOTE: Intersection-value-domain must be a close-domain (---<=====>---). # So, min-value is defined by the lower greater-than value domain. domain_pair.map { |dom| dom.min_value }.compact.min end memoize :min_value def max_value # NOTE: Intersection-value-domain must be a close-domain (---<=====>---). # So, max-value is defined by the higher lower-than value domain. domain_pair.map { |dom| dom.max_value }.compact.max end memoize :max_value def each_sample return to_enum(:each_sample) unless block_given? domain_pair.map { |d| d.each_sample.to_a }.flatten.uniq.each do |sample| yield(sample) if contain?(sample) end end def to_s "(#{domain_pair.first.to_s} && #{domain_pair.last.to_s})" end memoize :to_s private def _mul_only_positive_and_only_positive(lval, labs, rval, rabs) # NOTE: (++) * (++) makes a new IntersectionValueDomain; # lower bound: (labs.min * rabs.min) # upper bound: (labs.max * rabs.max) ValueDomain.greater_than( labs.first * rabs.first, logical_shr? ).intersection(ValueDomain.less_than( labs.last * rabs.last, logical_shr? )) end def _mul_only_positive_and_only_negative(lval, labs, rval, rabs) # NOTE: (++) * (--) makes a new IntersectionValueDomain; # lower bound: -(labs.max * rabs.max) # upper bound: -(labs.min * rabs.min) ValueDomain.greater_than( -(labs.last * rabs.last), logical_shr? ).intersection(ValueDomain.less_than( -(labs.first * rabs.first), logical_shr? )) end def _mul_only_positive_and_positive_negative(lval, labs, rval, rabs) # NOTE: (++) * (-+) makes a new IntersectionValueDomain; # lower bound: (labs.max * rval.min) # upper bound: (labs.max * rval.max) ValueDomain.greater_than( labs.last * rval.first, logical_shr? ).intersection(ValueDomain.less_than( labs.last * rval.last, logical_shr? )) end def _mul_only_negative_and_only_negative(lval, labs, rval, rabs) # NOTE: (--) * (--) makes a new IntersectionValueDomain; # upper bound: (labs.min * rabs.min) # lower bound: (labs.max * rabs.max) ValueDomain.greater_than( labs.first * rabs.first, logical_shr? ).intersection(ValueDomain.less_than( labs.last * rabs.last, logical_shr? )) end def _mul_only_negative_and_positive_negative(lval, labs, rval, rabs) # NOTE: (--) * (-+) makes a new IntersectionValueDomain; # lower bound: -(labs.max * rval.max) # upper_bound: -(labs.max * rval.min) ValueDomain.greater_than( -(labs.last * rval.last), logical_shr? ).intersection(ValueDomain.less_than( -(labs.last * rval.first), logical_shr? )) end def _mul_positive_negative_and_positive_negative(lval, labs, rval, rabs) # NOTE: (-+) * (-+) makes a new IntersectionValueDomain; # lower bound: ([lval.min * rval.max, lval.max * rval.min].min) # upper bound: ([lval.min * rval.min, lval.max * rval.max].max) ValueDomain.greater_than( [lval.first * rval.last, lval.last * rval.first].min, logical_shr? ).intersection(ValueDomain.less_than( [lval.first * rval.first, lval.last, rval.last].max, logical_shr? )) end def _div(lhs_dom, rhs_dom = self) new_sub_doms = rhs_dom.domain_pair.map { |rhs| lhs_dom / rhs } new_sub_doms.first.intersection(new_sub_doms.last) end def _shl(lhs_dom, rhs_dom = self) new_sub_doms = rhs_dom.domain_pair.map { |rhs| lhs_dom << rhs } new_sub_doms.first.intersection(new_sub_doms.last) end def _shr(lhs_dom, rhs_dom = self) new_sub_doms = rhs_dom.domain_pair.map { |rhs| lhs_dom >> rhs } new_sub_doms.first.intersection(new_sub_doms.last) end def _less(lhs_dom, rhs_dom = self) comp_dom = rhs_dom.domain_pair.map { |rhs| lhs_dom < rhs } if comp_dom.any? { |dom| dom.eql?(ValueDomain.of_false(logical_shr?)) } ValueDomain.of_false(logical_shr?) else comp_dom.first.intersection(comp_dom.last) end end def _equal(lhs_dom, rhs_dom = self) # NOTE: The intersection value domain must be a close-domain (--<===>--). # If one of the sub domains is not equal to LHS, result should be # false. comp_dom = rhs_dom.domain_pair.map { |rhs| lhs_dom == rhs } if comp_dom.any? { |dom| dom.eql?(ValueDomain.of_false(logical_shr?)) } ValueDomain.of_false(logical_shr?) else comp_dom.first.intersection(comp_dom.last) end end def _not_equal(lhs_dom, rhs_dom = self) # NOTE: The intersection value domain must be a close-domain (--<===>--). # If one of the sub domains is not equal to LHS, result should be # true. comp_dom = rhs_dom.domain_pair.map { |rhs| lhs_dom != rhs } if comp_dom.any? { |dom| dom.eql?(ValueDomain.of_false(logical_shr?)) } ValueDomain.of_false(logical_shr?) else comp_dom.first.intersection(comp_dom.last) end end end class UnionValueDomain < CompositeValueDomain def contain_value_domain?(rhs_dom) rhs_dom._contain_union?(self) end def _contain_nil?(lhs_dom, rhs_dom = self) false end def _contain_unlimited?(lhs_dom, rhs_dom = self) true end def _contain_equal_to?(lhs_dom, rhs_dom = self) rhs_dom.domain_pair.all? { |rhs| lhs_dom.contain_value_domain?(rhs) } end def _contain_less_than?(lhs_dom, rhs_dom = self) rhs_dom.domain_pair.all? { |rhs| lhs_dom.contain_value_domain?(rhs) } end def _contain_greater_than?(lhs_dom, rhs_dom = self) rhs_dom.domain_pair.all? { |rhs| lhs_dom.contain_value_domain?(rhs) } end def _contain_intersection?(lhs_dom, rhs_dom = self) rhs_dom.domain_pair.all? { |rhs| lhs_dom.contain_value_domain?(rhs) } end def _contain_union?(lhs_dom, rhs_dom = self) lhs_fst, lhs_snd = lhs_dom.domain_pair rhs_dom_pair = rhs_dom.domain_pair case when rhs_dom_pair.all? { |rhs| lhs_fst.contain_value_domain?(rhs) } true when rhs_dom_pair.all? { |rhs| lhs_snd.contain_value_domain?(rhs) } true else rhs_fst, rhs_snd = rhs_dom.domain_pair case when lhs_fst.contain_value_domain?(rhs_fst) && lhs_snd.contain_value_domain?(rhs_snd) true when lhs_fst.contain_value_domain?(rhs_snd) && lhs_snd.contain_value_domain?(rhs_fst) true else false end end end def intersect?(rhs_dom) domain_pair.any? { |lhs| lhs.intersect?(rhs_dom) } end def inversion new_sub_doms = domain_pair.map { |dom| dom.inversion } new_sub_doms.first.intersection(new_sub_doms.last) end def ~ new_sub_doms = domain_pair.map { |dom| ~dom } new_sub_doms.first.union(new_sub_doms.last) end def +@ new_sub_doms = domain_pair.map { |dom| +dom } new_sub_doms.first.union(new_sub_doms.last) end def -@ new_sub_doms = domain_pair.map { |dom| -dom } new_sub_doms.first.union(new_sub_doms.last) end def +(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs + rhs_dom } new_sub_doms.first.union(new_sub_doms.last) end def *(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs * rhs_dom } new_sub_doms.first.union(new_sub_doms.last) end def _mul_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes CompositeValueDomain#*. rhs_dom * lhs_dom end def _mul_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes CompositeValueDomain#*. rhs_dom * lhs_dom end def _mul_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes CompositeValueDomain#*. rhs_dom * lhs_dom end def _mul_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes CompositeValueDomain#*. rhs_dom * lhs_dom end def _mul_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes CompositeValueDomain#*. rhs_dom * lhs_dom end def /(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs / rhs_dom } new_sub_doms.first.union(new_sub_doms.last) end def &(rhs_dom) if rhs_max = rhs_dom.max_value ValueDomain.greater_than_or_equal_to(0, logical_shr?).intersection( ValueDomain.less_than_or_equal_to(rhs_max, logical_shr?)) else ValueDomain.greater_than_or_equal_to(0, logical_shr?) end end def |(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs | rhs_dom } new_sub_doms.first.union(new_sub_doms.last) end def ^(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs ^ rhs_dom } new_sub_doms.first.union(new_sub_doms.last) end def <<(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs << rhs_dom } new_sub_doms.first.union(new_sub_doms.last) end def >>(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs >> rhs_dom } new_sub_doms.first.union(new_sub_doms.last) end def ! new_sub_doms = domain_pair.map { |dom| !dom } new_sub_doms.first.union(new_sub_doms.last) end def <(rhs_dom) comp_dom = domain_pair.map { |lhs| lhs < rhs_dom } comp_dom.first.union(comp_dom.last) end def logical_and(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs.logical_and(rhs_dom) } new_sub_doms.first.union(new_sub_doms.last) end def logical_or(rhs_dom) new_sub_doms = domain_pair.map { |lhs| lhs.logical_or(rhs_dom) } new_sub_doms.first.union(new_sub_doms.last) end def intersection(rhs_dom) case when contain_value_domain?(rhs_dom) rhs_dom when rhs_dom.contain_value_domain?(self) self else new_sub_doms = domain_pair.map { |lhs| lhs.intersection(rhs_dom) } ValueDomain.of_union(*new_sub_doms) end end def union(rhs_dom) case when contain_value_domain?(rhs_dom) self when rhs_dom.contain_value_domain?(self) rhs_dom else new_sub_doms = domain_pair.map { |lhs| lhs.union(rhs_dom) } ValueDomain.of_union(*new_sub_doms) end end def coerce_to_integer new_sub_doms = domain_pair.map { |dom| dom.coerce_to_integer } new_sub_doms.first.union(new_sub_doms.last) end def coerce_to_real new_sub_doms = domain_pair.map { |dom| dom.coerce_to_real } new_sub_doms.first.union(new_sub_doms.last) end def min_value # NOTE: The union value domain may be a open-domain (==>---<==), # a half-open-domain (==>--<==>-) or (-<==>--<==), or # a close-domain (-<==>-<==>-). # When the union value domain is a open-domain, the min-value is # -infinite. # When the union value domain is a half-open-domain and lower sub # domain is less-than value domain, the min-value is -infinite. # When the union value domain is a half-open-domain and higher sub # domain is greater-than value domain, the min-value is defined by # the lower value domain. # When the union value domain is a close-domain, the min-value is # defined by the lower value domain. min_vals = domain_pair.map { |dom| dom.min_value } min_vals.include?(nil) ? nil : min_vals.min end memoize :min_value def max_value # NOTE: If this is an "open-domain" (===>---<===), max-value is # undefined. # But, when the domain is (===>--<===>--), max-value is defined. max_vals = domain_pair.map { |dom| dom.max_value } max_vals.include?(nil) ? nil : max_vals.max end memoize :max_value def each_sample return to_enum(:each_sample) unless block_given? domain_pair.map { |d| d.each_sample.to_a }.flatten.uniq.each do |sample| yield(sample) end end def to_s "(#{domain_pair.first.to_s} || #{domain_pair.last.to_s})" end memoize :to_s private def _div(lhs_dom, rhs_dom = self) new_sub_doms = rhs_dom.domain_pair.map { |rhs| lhs_dom / rhs } new_sub_doms.first.union(new_sub_doms.last) end def _shl(lhs_dom, rhs_dom = self) new_sub_doms = rhs_dom.domain_pair.map { |rhs| lhs_dom << rhs } new_sub_doms.first.union(new_sub_doms.last) end def _shr(lhs_dom, rhs_dom = self) new_sub_doms = rhs_dom.domain_pair.map { |rhs| lhs_dom >> rhs } new_sub_doms.first.union(new_sub_doms.last) end def _less(lhs_dom, rhs_dom = self) comp_dom = rhs_dom.domain_pair.map { |rhs| lhs_dom < rhs } comp_dom.first.union(comp_dom.last) end def _equal(lhs_dom, rhs_dom = self) # NOTE: The union value domain may be a open-domain (==>---<==), # a half-open-domain (==>--<==>-) or (-<==>--<==), or # a close-domain (-<==>-<==>-). # If one of the sub domains is equal to LHS, result should be true. comp_dom = rhs_dom.domain_pair.map { |rhs| lhs_dom == rhs } comp_dom.first.union(comp_dom.last) end def _not_equal(lhs_dom, rhs_dom = self) # NOTE: The union value domain may be a open-domain (==>---<==), # a half-open-domain (==>--<==>-) or (-<==>--<==), or # a close-domain (-<==>-<==>-). # If one of the sub domains is equal to LHS, result should be # false. comp_dom = rhs_dom.domain_pair.map { |rhs| lhs_dom != rhs } comp_dom.first.union(comp_dom.last) end end class UndefinedValueDomain < ValueDomain extend Forwardable def initialize(dom) super(dom.logical_shr?) @domain = dom end attr_reader :domain def_delegator :@domain, :empty? def nan? false end def undefined? true end def ambiguous? false end def_delegator :@domain, :contain? def_delegator :@domain, :contain_value_domain? def_delegator :@domain, :_contain_nil? def_delegator :@domain, :_contain_unlimited? def_delegator :@domain, :_contain_equal_to? def_delegator :@domain, :_contain_less_than? def_delegator :@domain, :_contain_greater_than? def_delegator :@domain, :_contain_intersection? def_delegator :@domain, :_contain_union? def_delegator :@domain, :intersect? def_delegator :@domain, :_intersect_nil? def_delegator :@domain, :_intersect_unlimited? def_delegator :@domain, :_intersect_equal_to? def_delegator :@domain, :_intersect_less_than? def_delegator :@domain, :_intersect_greater_than? def _narrow_by_eq(rhs_dom, lhs_dom = self) ValueDomain.of_undefined(lhs_dom.domain._narrow_by_eq(rhs_dom)) end def_delegator :@domain, :_narrow_nil_by_eq def_delegator :@domain, :_narrow_unlimited_by_eq def_delegator :@domain, :_narrow_equal_to_by_eq def_delegator :@domain, :_narrow_less_than_by_eq def_delegator :@domain, :_narrow_greater_than_by_eq def _narrow_by_ne(rhs_dom, lhs_dom = self) ValueDomain.of_undefined(lhs_dom.domain._narrow_by_ne(rhs_dom)) end def_delegator :@domain, :_narrow_nil_by_ne def_delegator :@domain, :_narrow_unlimited_by_ne def_delegator :@domain, :_narrow_equal_to_by_ne def_delegator :@domain, :_narrow_less_than_by_ne def_delegator :@domain, :_narrow_greater_than_by_ne def _narrow_by_lt(rhs_dom, lhs_dom = self) ValueDomain.of_undefined(lhs_dom.domain._narrow_by_lt(rhs_dom)) end def_delegator :@domain, :_narrow_nil_by_lt def_delegator :@domain, :_narrow_unlimited_by_lt def_delegator :@domain, :_narrow_equal_to_by_lt def_delegator :@domain, :_narrow_less_than_by_lt def_delegator :@domain, :_narrow_greater_than_by_lt def _narrow_by_gt(rhs_dom, lhs_dom = self) ValueDomain.of_undefined(lhs_dom.domain._narrow_by_gt(rhs_dom)) end def_delegator :@domain, :_narrow_nil_by_gt def_delegator :@domain, :_narrow_unlimited_by_gt def_delegator :@domain, :_narrow_equal_to_by_gt def_delegator :@domain, :_narrow_less_than_by_gt def_delegator :@domain, :_narrow_greater_than_by_gt def_delegator :@domain, :_widen_by_eq def_delegator :@domain, :_widen_by_ne def_delegator :@domain, :_widen_by_lt def_delegator :@domain, :_widen_by_gt def_delegator :@domain, :_widen_by_le def_delegator :@domain, :_widen_by_ge def inversion ValueDomain.of_undefined(@domain.inversion) end def ~ ValueDomain.of_undefined(~@domain) end def +@ ValueDomain.of_undefined(+@domain) end def -@ ValueDomain.of_undefined(-@domain) end def +(rhs_dom) ValueDomain.of_undefined(@domain + rhs_dom) end def _add_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes UndefinedValueDomain#+. rhs_dom + lhs_dom end def _add_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes UndefinedValueDomain#+. rhs_dom + lhs_dom end def _add_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes UndefinedValueDomain#+. rhs_dom + lhs_dom end def _add_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes UndefinedValueDomain#+. rhs_dom + lhs_dom end def _add_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes UndefinedValueDomain#+. rhs_dom + lhs_dom end def *(rhs_dom) ValueDomain.of_undefined(@domain * rhs_dom) end def _mul_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes UndefinedValueDomain#*. rhs_dom * lhs_dom end def _mul_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes UndefinedValueDomain#*. rhs_dom * lhs_dom end def _mul_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes UndefinedValueDomain#*. rhs_dom * lhs_dom end def _mul_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes UndefinedValueDomain#*. rhs_dom * lhs_dom end def _mul_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes UndefinedValueDomain#*. rhs_dom * lhs_dom end def /(rhs_dom) ValueDomain.of_undefined(@domain / rhs_dom) end def _div_nil(lhs_dom, rhs_dom = self) ValueDomain.of_undefined(rhs_dom.domain._div_nil(lhs_dom)) end def _div_unlimited(lhs_dom, rhs_dom = self) ValueDomain.of_undefined(rhs_dom.domain._div_unlimited(lhs_dom)) end def _div_equal_to(lhs_dom, rhs_dom = self) ValueDomain.of_undefined(rhs_dom.domain._div_equal_to(lhs_dom)) end def _div_less_than(lhs_dom, rhs_dom = self) ValueDomain.of_undefined(rhs_dom.domain._div_less_than(lhs_dom)) end def _div_greater_than(lhs_dom, rhs_dom = self) ValueDomain.of_undefined(rhs_dom.domain._div_greater_than(lhs_dom)) end def &(rhs_dom) ValueDomain.of_undefined(@domain & rhs_dom) end def _and_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes UndefinedValueDomain#&. rhs_dom & lhs_dom end def _and_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes UndefinedValueDomain#&. rhs_dom & lhs_dom end def _and_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes UndefinedValueDomain#&. rhs_dom & lhs_dom end def _and_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes UndefinedValueDomain#&. rhs_dom & lhs_dom end def _and_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes UndefinedValueDomain#&. rhs_dom & lhs_dom end def |(rhs_dom) ValueDomain.of_undefined(@domain | rhs_dom) end def _or_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes UndefinedValueDomain#|. rhs_dom | lhs_dom end def _or_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes UndefinedValueDomain#|. rhs_dom | lhs_dom end def _or_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes UndefinedValueDomain#|. rhs_dom | lhs_dom end def _or_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes UndefinedValueDomain#|. rhs_dom | lhs_dom end def _or_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes UndefinedValueDomain#|. rhs_dom | lhs_dom end def ^(rhs_dom) ValueDomain.of_undefined(@domain ^ rhs_dom) end def _xor_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes UndefinedValueDomain#^. rhs_dom ^ lhs_dom end def _xor_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes UndefinedValueDomain#^. rhs_dom ^ lhs_dom end def _xor_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes UndefinedValueDomain#^. rhs_dom ^ lhs_dom end def _xor_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes UndefinedValueDomain#^. rhs_dom ^ lhs_dom end def _xor_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes UndefinedValueDomain#^. rhs_dom ^ lhs_dom end def <<(rhs_dom) ValueDomain.of_undefined(@domain << rhs_dom) end def _shl_nil(lhs_dom, rhs_dom = self) ValueDomain.of_undefined(rhs_dom.domain._shl_nil(lhs_dom)) end def _shl_unlimited(lhs_dom, rhs_dom = self) ValueDomain.of_undefined(rhs_dom.domain._shl_unlimited(lhs_dom)) end def _shl_equal_to(lhs_dom, rhs_dom = self) ValueDomain.of_undefined(rhs_dom.domain._shl_equal_to(lhs_dom)) end def _shl_less_than(lhs_dom, rhs_dom = self) ValueDomain.of_undefined(rhs_dom.domain._shl_less_than(lhs_dom)) end def _shl_greater_than(lhs_dom, rhs_dom = self) ValueDomain.of_undefined(rhs_dom.domain._shl_greater_than(lhs_dom)) end def >>(rhs_dom) ValueDomain.of_undefined(@domain >> rhs_dom) end def _shr_nil(lhs_dom, rhs_dom = self) ValueDomain.of_undefined(rhs_dom.domain._shr_nil(lhs_dom)) end def _shr_unlimited(lhs_dom, rhs_dom = self) ValueDomain.of_undefined(rhs_dom.domain._shr_unlimited(lhs_dom)) end def _shr_equal_to(lhs_dom, rhs_dom = self) ValueDomain.of_undefined(rhs_dom.domain._shr_equal_to(lhs_dom)) end def _shr_less_than(lhs_dom, rhs_dom = self) ValueDomain.of_undefined(rhs_dom.domain._shr_less_than(lhs_dom)) end def _shr_greater_than(lhs_dom, rhs_dom = self) ValueDomain.of_undefined(rhs_dom.domain._shr_greater_than(lhs_dom)) end def_delegator :@domain, :! def_delegator :@domain, :< def_delegator :@domain, :_less_nil def_delegator :@domain, :_less_unlimited def_delegator :@domain, :_less_equal_to def_delegator :@domain, :_less_less_than def_delegator :@domain, :_less_greater_than def_delegator :@domain, :== def_delegator :@domain, :_equal_nil def_delegator :@domain, :_equal_unlimited def_delegator :@domain, :_equal_equal_to def_delegator :@domain, :_equal_less_than def_delegator :@domain, :_equal_greater_than def_delegator :@domain, :!= def_delegator :@domain, :_not_equal_nil def_delegator :@domain, :_not_equal_unlimited def_delegator :@domain, :_not_equal_equal_to def_delegator :@domain, :_not_equal_less_than def_delegator :@domain, :_not_equal_greater_than def_delegator :@domain, :logical_and def_delegator :@domain, :_logical_and_nil def_delegator :@domain, :_logical_and_unlimited def_delegator :@domain, :_logical_and_equal_to def_delegator :@domain, :_logical_and_less_than def_delegator :@domain, :_logical_and_greater_than def_delegator :@domain, :logical_or def_delegator :@domain, :_logical_or_nil def_delegator :@domain, :_logical_or_unlimited def_delegator :@domain, :_logical_or_equal_to def_delegator :@domain, :_logical_or_less_than def_delegator :@domain, :_logical_or_greater_than def intersection(rhs_dom) ValueDomain.of_undefined(@domain.intersection(rhs_dom)) end def _intersection_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes UndefinedValueDomain#intersection. rhs_dom.intersection(lhs_dom) end def _intersection_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes UndefinedValueDomain#intersection. rhs_dom.intersection(lhs_dom) end def _intersection_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes UndefinedValueDomain#intersection. rhs_dom.intersection(lhs_dom) end def _intersection_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes UndefinedValueDomain#intersection. rhs_dom.intersection(lhs_dom) end def _intersection_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes UndefinedValueDomain#intersection. rhs_dom.intersection(lhs_dom) end def union(rhs_dom) ValueDomain.of_undefined(@domain.union(rhs_dom)) end def _union_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes UndefinedValueDomain#union. rhs_dom.union(lhs_dom) end def _union_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes UndefinedValueDomain#union. rhs_dom.union(lhs_dom) end def _union_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes UndefinedValueDomain#union. rhs_dom.union(lhs_dom) end def _union_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes UndefinedValueDomain#union. rhs_dom.union(lhs_dom) end def _union_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes UndefinedValueDomain#union. rhs_dom.union(lhs_dom) end def coerce_to_integer ValueDomain.of_undefined(@domain.coerce_to_integer) end def coerce_to_real ValueDomain.of_undefined(@domain.coerce_to_real) end def_delegator :@domain, :min_value def_delegator :@domain, :max_value def_delegator :@domain, :each_sample def to_defined_domain @domain end def to_s "(== Undefined[#{@domain.to_s}])" end memoize :to_s def_delegator :@domain, :complexity end class AmbiguousValueDomain < ValueDomain def initialize(undefined, logical_shr) super(logical_shr) @undefined = undefined end def empty? false end def nan? false end def undefined? @undefined end def ambiguous? true end def contain_value_domain?(rhs_dom) true end def _contain_nil?(lhs_dom, rhs_dom = self) false end def _contain_unlimited?(lhs_dom, rhs_dom = self) true end def _contain_equal_to?(lhs_dom, rhs_dom = self) false end def _contain_less_than?(lhs_dom, rhs_dom = self) false end def _contain_greater_than?(lhs_dom, rhs_dom = self) false end def _contain_intersection?(lhs_dom, rhs_dom = self) false end def _contain_union?(lhs_dom, rhs_dom = self) false end def intersect?(rhs_dom) true end def _intersect_nil?(lhs_dom, rhs_dom = self) false end def _intersect_unlimited?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes AmbiguousValueDomain#intersect?. rhs_dom.intersect?(lhs_dom) end def _intersect_equal_to?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes AmbiguousValueDomain#intersect?. rhs_dom.intersect?(lhs_dom) end def _intersect_less_than?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes AmbiguousValueDomain#intersect?. rhs_dom.intersect?(lhs_dom) end def _intersect_greater_than?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes AmbiguousValueDomain#intersect?. rhs_dom.intersect?(lhs_dom) end def narrow(op, ope_dom) self end def _narrow_by_eq(rhs_dom, lhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_nil_by_eq(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_unlimited_by_eq(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_equal_to_by_eq(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_less_than_by_eq(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_greater_than_by_eq(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_by_ne(rhs_dom, lhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_nil_by_ne(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_unlimited_by_ne(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_equal_to_by_ne(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_less_than_by_ne(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_greater_than_by_ne(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_by_lt(rhs_dom, lhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_nil_by_lt(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_unlimited_by_lt(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_equal_to_by_lt(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_less_than_by_lt(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_greater_than_by_lt(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_by_gt(rhs_dom, lhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_nil_by_gt(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_unlimited_by_gt(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_equal_to_by_gt(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_less_than_by_gt(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _narrow_greater_than_by_gt(lhs_dom, rhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def widen(op, ope_dom) self end def _widen_by_eq(rhs_dom, lhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _widen_by_ne(rhs_dom, lhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _widen_by_lt(rhs_dom, lhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _widen_by_gt(rhs_dom, lhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _widen_by_le(rhs_dom, lhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def _widen_by_ge(rhs_dom, lhs_dom = self) ValueDomain.of_ambiguous(@undefined, logical_shr?) end def inversion self end def ~ self end def +@ self end def -@ self end def +(rhs_dom) self end def _add_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes AmbiguousValueDomain#+. rhs_dom + lhs_dom end def _add_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes AmbiguousValueDomain#+. rhs_dom + lhs_dom end def _add_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes AmbiguousValueDomain#+. rhs_dom + lhs_dom end def _add_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes AmbiguousValueDomain#+. rhs_dom + lhs_dom end def _add_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes AmbiguousValueDomain#+. rhs_dom + lhs_dom end def *(rhs_dom) self end def _mul_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes AmbiguousValueDomain#*. rhs_dom * lhs_dom end def _mul_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes AmbiguousValueDomain#*. rhs_dom * lhs_dom end def _mul_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes AmbiguousValueDomain#*. rhs_dom * lhs_dom end def _mul_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes AmbiguousValueDomain#*. rhs_dom * lhs_dom end def _mul_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes AmbiguousValueDomain#*. rhs_dom * lhs_dom end def /(rhs_dom) self end def _div_nil(lhs_dom, rhs_dom = self) rhs_dom end def _div_unlimited(lhs_dom, rhs_dom = self) rhs_dom end def _div_equal_to(lhs_dom, rhs_dom = self) rhs_dom end def _div_less_than(lhs_dom, rhs_dom = self) rhs_dom end def _div_greater_than(lhs_dom, rhs_dom = self) rhs_dom end def &(rhs_dom) self end def _and_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes AmbiguousValueDomain#&. rhs_dom & lhs_dom end def _and_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes AmbiguousValueDomain#&. rhs_dom & lhs_dom end def _and_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes AmbiguousValueDomain#&. rhs_dom & lhs_dom end def _and_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes AmbiguousValueDomain#&. rhs_dom & lhs_dom end def _and_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes AmbiguousValueDomain#&. rhs_dom & lhs_dom end def |(rhs_dom) self end def _or_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes AmbiguousValueDomain#|. rhs_dom | lhs_dom end def _or_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes AmbiguousValueDomain#|. rhs_dom | lhs_dom end def _or_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes AmbiguousValueDomain#|. rhs_dom | lhs_dom end def _or_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes AmbiguousValueDomain#|. rhs_dom | lhs_dom end def _or_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes AmbiguousValueDomain#|. rhs_dom | lhs_dom end def ^(rhs_dom) self end def _xor_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes AmbiguousValueDomain#^. rhs_dom ^ lhs_dom end def _xor_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes AmbiguousValueDomain#^. rhs_dom ^ lhs_dom end def _xor_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes AmbiguousValueDomain#^. rhs_dom ^ lhs_dom end def _xor_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes AmbiguousValueDomain#^. rhs_dom ^ lhs_dom end def _xor_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes AmbiguousValueDomain#^. rhs_dom ^ lhs_dom end def <<(rhs_dom) self end def _shl_nil(lhs_dom, rhs_dom = self) rhs_dom end def _shl_unlimited(lhs_dom, rhs_dom = self) rhs_dom end def _shl_equal_to(lhs_dom, rhs_dom = self) rhs_dom end def _shl_less_than(lhs_dom, rhs_dom = self) rhs_dom end def _shl_greater_than(lhs_dom, rhs_dom = self) rhs_dom end def >>(rhs_dom) self end def _shr_nil(lhs_dom, rhs_dom = self) rhs_dom end def _shr_unlimited(lhs_dom, rhs_dom = self) rhs_dom end def _shr_equal_to(lhs_dom, rhs_dom = self) rhs_dom end def _shr_less_than(lhs_dom, rhs_dom = self) rhs_dom end def _shr_greater_than(lhs_dom, rhs_dom = self) rhs_dom end def ! ValueDomain.of_unlimited(logical_shr?) end def <(rhs_dom) ValueDomain.of_unlimited(logical_shr?) end def _less_nil(lhs_dom, rhs_dom = self) ValueDomain.of_nil(logical_shr?) end def _less_unlimited(lhs_dom, rhs_dom = self) ValueDomain.of_unlimited(logical_shr?) end def _less_equal_to(lhs_dom, rhs_dom = self) ValueDomain.of_unlimited(logical_shr?) end def _less_less_than(lhs_dom, rhs_dom = self) ValueDomain.of_unlimited(logical_shr?) end def _less_greater_than(lhs_dom, rhs_dom = self) ValueDomain.of_unlimited(logical_shr?) end def ==(rhs_dom) ValueDomain.of_unlimited(logical_shr?) end def _equal_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes AmbiguousValueDomain#==. rhs_dom == lhs_dom end def _equal_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes AmbiguousValueDomain#==. rhs_dom == lhs_dom end def _equal_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes AmbiguousValueDomain#==. rhs_dom == lhs_dom end def _equal_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes AmbiguousValueDomain#==. rhs_dom == lhs_dom end def _equal_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes AmbiguousValueDomain#==. rhs_dom == lhs_dom end def !=(rhs_dom) ValueDomain.of_unlimited(logical_shr?) end def _not_equal_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes AmbiguousValueDomain#!=. rhs_dom != lhs_dom end def _not_equal_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes AmbiguousValueDomain#!=. rhs_dom != lhs_dom end def _not_equal_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes AmbiguousValueDomain#!=. rhs_dom != lhs_dom end def _not_equal_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes AmbiguousValueDomain#!=. rhs_dom != lhs_dom end def _not_equal_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes AmbiguousValueDomain#!=. rhs_dom != lhs_dom end def logical_and(rhs_dom) ValueDomain.of_unlimited(logical_shr?) end def _logical_and_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes AmbiguousValueDomain#logical_and. rhs_dom.logical_and(lhs_dom) end def _logical_and_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes AmbiguousValueDomain#logical_and. rhs_dom.logical_and(lhs_dom) end def _logical_and_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes AmbiguousValueDomain#logical_and. rhs_dom.logical_and(lhs_dom) end def _logical_and_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes AmbiguousValueDomain#logical_and. rhs_dom.logical_and(lhs_dom) end def _logical_and_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes AmbiguousValueDomain#logical_and. rhs_dom.logical_and(lhs_dom) end def logical_or(rhs_dom) ValueDomain.of_unlimited(logical_shr?) end def _logical_or_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes AmbiguousValueDomain#logical_or. rhs_dom.logical_or(lhs_dom) end def _logical_or_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes AmbiguousValueDomain#logical_or. rhs_dom.logical_or(lhs_dom) end def _logical_or_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes AmbiguousValueDomain#logical_or. rhs_dom.logical_or(lhs_dom) end def _logical_or_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes AmbiguousValueDomain#logical_or. rhs_dom.logical_or(lhs_dom) end def _logical_or_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes AmbiguousValueDomain#logical_or. rhs_dom.logical_or(lhs_dom) end def intersection(rhs_dom) self end def _intersection_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes AmbiguousValueDomain#intersection. rhs_dom.intersection(lhs_dom) end def _intersection_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes AmbiguousValueDomain#intersection. rhs_dom.intersection(lhs_dom) end def _intersection_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes AmbiguousValueDomain#intersection. rhs_dom.intersection(lhs_dom) end def _intersection_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes AmbiguousValueDomain#intersection. rhs_dom.intersection(lhs_dom) end def _intersection_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes AmbiguousValueDomain#intersection. rhs_dom.intersection(lhs_dom) end def union(rhs_dom) self end def _union_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes AmbiguousValueDomain#union. rhs_dom.union(lhs_dom) end def _union_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes AmbiguousValueDomain#union. rhs_dom.union(lhs_dom) end def _union_equal_to(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes AmbiguousValueDomain#union. rhs_dom.union(lhs_dom) end def _union_less_than(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes AmbiguousValueDomain#union. rhs_dom.union(lhs_dom) end def _union_greater_than(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes AmbiguousValueDomain#union. rhs_dom.union(lhs_dom) end def coerce_to_integer self end def coerce_to_real self end def min_value nil end def max_value nil end def each_sample if block_given? yield(0) self else to_enum(:each_sample) end end def to_defined_domain ValueDomain.of_ambiguous(false, logical_shr?) end def to_s "(== Ambiguous)" end memoize :to_s def complexity 1 end end end end adlint-3.2.14/lib/adlint/cc1/seqp.rb0000644000004100000410000000544612340630463017102 0ustar www-datawww-data# Sequence points of C language evaluation. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/location" module AdLint #:nodoc: module Cc1 #:nodoc: # NOTE: The ISO C99 standard says; # # Annex C (informative) Sequence points # # 1 The following are the sequence points described in 5.1.2.3: # # -- The call to a function, after the arguments have been evaluated # (6.5.2.2). # -- The end of the first operand of the following operators: logical AND # && (6.5.13); logical OR || (6.5.14); conditional ? (6.5.15); comma , # (6.5.17). # -- The end of a full declarator: declarators (6.7.5). # -- The end of a full expression: an initializer (6.7.8); the expression # in an expression statement (6.8.3); the controlling expression of a # while or do statement (6.8.5); each of the expressions of a for # statement (6.8.5.3); the expression in a return statement (6.8.6.4). # -- Immediately before a library function returns (7.1.4). # -- After the actions associated with each formatted input/output function # conversion specifier (7.19.6, 7.24.2). # -- Immediately before and immediately after each call to a comparison # function, and also between any call to a comparison function and any # movement of the objects passed as arguments to that call (7.20.5). class SequencePoint include LocationHolder def initialize(lst_node, obvious = true) @last_node = lst_node @obvious = obvious end attr_reader :last_node def location @last_node.location end def obvious? @obvious end end end end adlint-3.2.14/lib/adlint/cc1/conv.rb0000644000004100000410000002217712340630463017077 0ustar www-datawww-data# C conversion semantics. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: module Cc1 #:nodoc: module Conversion # NOTE: Host class of this module must include InterpreterMediator. def do_conversion(orig_var, to_type) if orig_var.type.coercible?(to_type) # NOTE: Value will be coerced into the destination type in # VariableTableMediator#create_tmpvar. create_tmpvar(to_type, wrap_around_value(orig_var, to_type)) else nil end end def do_integer_promotion(orig_var) return orig_var unless orig_var.type.integer? promoted_type = orig_var.type.integer_promoted_type if orig_var.type.same_as?(promoted_type) orig_var else do_conversion(orig_var, promoted_type) || orig_var end end def do_usual_arithmetic_conversion(lhs_orig, rhs_orig) if lhs_orig.type.pointer? && rhs_orig.type.pointer? return lhs_orig, rhs_orig end arith_type = lhs_orig.type.arithmetic_type_with(rhs_orig.type) if lhs_orig.type.same_as?(arith_type) lhs_conved = lhs_orig else lhs_conved = do_conversion(lhs_orig, arith_type) || lhs_orig end if rhs_orig.type.same_as?(arith_type) rhs_conved = rhs_orig else rhs_conved = do_conversion(rhs_orig, arith_type) || rhs_orig end return lhs_conved, rhs_conved end def do_default_argument_promotion(orig_var) promoted_type = orig_var.type.argument_promoted_type if orig_var.type.same_as?(promoted_type) orig_var else do_conversion(orig_var, promoted_type) || orig_var end end def untyped_pointer_conversion?(from_type, to_type, from_val) return false unless to_type.pointer? # NOTE: Untyped pointer conversion is defined as below; # # from_type | to_type | result # ------------------+------------------+----------------- # void pointer | void pointer | true # void pointer | non-void pointer | true # non-void pointer | void pointer | true # non-void pointer | non-void pointer | false # non-enum integer | void pointer | from_val == 0 # non-enum integer | non-void pointer | from_val == 0 # enum | void pointer | false # enum | non-void pointer | false # other | void pointer | true # other | non-void pointer | false case when from_type.pointer? void_pointer?(from_type) || void_pointer?(to_type) when from_type.integer? !from_type.enum? && from_val.test_must_be_null.true? else void_pointer?(to_type) end end private def wrap_around_value(orig_var, to_type) return orig_var.value unless orig_var.type.scalar? && to_type.scalar? case when orig_var.type.signed? && to_type.unsigned? min_val = scalar_value_of(to_type.min) if (orig_var.value < min_val).test_may_be_true.true? return min_val - orig_var.value + scalar_value_of(1) end when orig_var.type.unsigned? && to_type.signed? max_val = scalar_value_of(to_type.max) if (orig_var.value > max_val).test_may_be_true.true? return max_val - orig_var.value + scalar_value_of(1) end end orig_var.value end def void_pointer?(type) unqual_type = type.unqualify unqual_type.pointer? && unqual_type.base_type.void? end end # Host class of this module must include StandardTypeCatalogAccessor. module UsualArithmeticTypeConversion def do_usual_arithmetic_type_conversion(lhs, rhs) # NOTE: The ISO C99 standard says; # # 6.3.1.8 Usual arithmetic conversions # # 1 Many operators that except operands of arithmetic type cause # conversions and yield result types in a similar way. The purpose is # to determine a common real type for the operands and result. For the # specified operands, each operand is converted, without change of type # domain, to a type whose corresponding real type is the common real # type. Unless explicitly stated otherwise, the common real type is # also the corresponding real type of the result, whose type domain is # the type domain of the operands if they are the same, and complex # otherwise. This pattern is called the usual arithmetic conversions: # # First, if the corresponding real type of either operand is long # double, the other operand is converted, without change of type # domain, to a type whose corresponding real type is long double. # # Otherwise, if the corresponding real type of either operand is # double, the other operand is converted, without change of type # domain, to a type whose corresponding real type is double. # # Otherwise, if the corresponding real type of either operand is # float, the other operand is converted, without change of type # domain, to a type whose corresponding real type is float. # # Otherwise, the integer promotions are performed on both operands. # Then the following rules are applied to the promoted operands: # # If both operands have the same type, then no further conversion # is needed. # # Otherwise, if both operands have signed integer types or both # have unsigned integer types, the operand with the type of lesser # integer conversion rank is converted to the type of the operand # with greater rank. # # Otherwise, if the operand that has unsigned integer type has rank # greater or equal to the rank of the type of the other operand, # then the operand with signed integer type is converted to the # type of the operand with unsigned integer type. # # Otherwise, if the type of the operand with signed integer type # can represent all of the values of the type of the operand with # unsigned integer type, then the operand with unsigned integer # type is converted to the type of the operand with signed integer # type. # # Otherwise, both operands are converted to the unsigned integer # type corresponding to the type of the operand with signed integer # type. if lhs.same_as?(long_double_t) || rhs.same_as?(long_double_t) return long_double_t end if lhs.same_as?(double_t) || rhs.same_as?(double_t) return double_t end if lhs.same_as?(float_t) || rhs.same_as?(float_t) return float_t end lhs_promoted = lhs.integer_promoted_type rhs_promoted = rhs.integer_promoted_type return lhs_promoted if lhs_promoted.same_as?(rhs_promoted) lhs_rank = lhs_promoted.integer_conversion_rank rhs_rank = rhs_promoted.integer_conversion_rank case when lhs_promoted.signed? && rhs_promoted.signed? return lhs_rank < rhs_rank ? rhs_promoted : lhs_promoted when lhs_promoted.unsigned? && rhs_promoted.unsigned? return lhs_rank < rhs_rank ? rhs_promoted : lhs_promoted when lhs_promoted.unsigned? && lhs_rank >= rhs_rank return lhs_promoted when rhs_promoted.unsigned? && lhs_rank <= rhs_rank return rhs_promoted when lhs_promoted.signed? && rhs_promoted.compatible?(lhs_promoted) return lhs_promoted when rhs_promoted.signed? && lhs_promoted.compatible?(rhs_promoted) return rhs_promoted when lhs_promoted.signed? return lhs_promoted.corresponding_unsigned_type when rhs_promoted.signed? return rhs_promoted.corresponding_unsigned_type end raise TypeError, "cannot do usual arithmetic conversion." end end end end adlint-3.2.14/lib/adlint/cc1/builtin.rb0000644000004100000410000000472612340630463017600 0ustar www-datawww-data# Builtin functions actually called by the interpreter. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/cc1/type" require "adlint/cc1/object" module AdLint #:nodoc: module Cc1 #:nodoc: class BuiltinFunction < NamedFunction def initialize(type_tbl, name) super(nil, type_tbl.builtin_function_type, name) end def explicit? true end def builtin? true end def call(interp, funcall_expr, args) interp.create_tmpvar(type.return_type) end end class InspectFunction < BuiltinFunction def initialize(type_tbl) super(type_tbl, "__adlint__inspect") end def call(*, args) puts "__adlint__inspect" args.each { |arg, expr| pp arg } puts "EOM" super end end class EvalFunction < BuiltinFunction def initialize(type_tbl) super(type_tbl, "__adlint__eval") end def call(interp, *, args) puts "__adlint__eval" char_ary = args.first.first if char_ary.type.array? without_nil = char_ary.value.to_single_value.values[0..-2] prog_text = without_nil.map { |char| char.unique_sample.chr }.join if prog_text.empty? puts "no program text" else eval prog_text end puts "EOM" end super end end end end adlint-3.2.14/lib/adlint/cc1/interp.rb0000644000004100000410000016566412340630463017444 0ustar www-datawww-data# Kernel of the abstract interpreter of C language. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/monitor" require "adlint/util" require "adlint/cc1/environ" require "adlint/cc1/resolver" require "adlint/cc1/mediator" require "adlint/cc1/syntax" require "adlint/cc1/expr" require "adlint/cc1/conv" require "adlint/cc1/option" require "adlint/cc1/operator" require "adlint/cc1/util" module AdLint #:nodoc: module Cc1 #:nodoc: class Program def initialize(interp, tunit) @interpreter = interp @translation_unit = tunit end def execute @interpreter.notify_translation_unit_started(@translation_unit) @translation_unit.accept(ExecutionDriver.new(@interpreter)) @interpreter.notify_translation_unit_ended(@translation_unit) end class ExecutionDriver < SyntaxTreeVisitor def initialize(interp) @interpreter = interp end def visit_declaration(node) @interpreter.execute(node) end def visit_ansi_function_definition(node) @interpreter.execute(node) end def visit_kandr_function_definition(node) @interpreter.execute(node) end end private_constant :ExecutionDriver end class Interpreter include InterpreterMediator include Conversion include InterpreterOptions include BranchOptions def initialize(type_tbl, env = nil) @type_table = type_tbl @environment = env || Environment.new(type_tbl) @type_resolver = DynamicTypeResolver.new(type_tbl, self) @sub_interpreters = [ DeclarationInterpreter.new(self), ParameterDefinitionInterpreter.new(self), FunctionInterpreter.new(self), SwitchStatementInterpreter.new(self), StatementInterpreter.new(self), ExpressionInterpreter.new(self) ] @options_stack = [] # NOTE: Active (executing) function may be nested if the nested # function-definition of the GCC extension is used. @active_function_stack = [] end attr_reader :environment attr_reader :type_resolver extend Forwardable def_delegator :@type_table, :traits def_delegator :@type_table, :monitor def_delegator :@type_table, :logger extend Pluggable def self.def_plugin_and_notifier(event_name, *arg_names) class_eval <<-EOS def_plugin :on_#{event_name} def notify_#{event_name}(#{arg_names.join(",")}) unless quiet? on_#{event_name}.invoke(#{arg_names.join(",")}) end end EOS end private_class_method :def_plugin_and_notifier # NOTE: Notified when the interpreter evaluates a variable-declaration. def_plugin_and_notifier :variable_declared, :var_dcl, :var # NOTE: Notified when the interpreter evaluates a variable-definition. def_plugin_and_notifier :variable_defined, :var_def, :var # NOTE: Notified when the interpreter evaluates an initializer of # variable-definition. def_plugin_and_notifier :variable_initialized, :var_def, :var, :init_var # NOTE: Notified when the interpreter evaluates a function-declaration. def_plugin_and_notifier :explicit_function_declared, :fun_dcl, :fun # NOTE: Notified when the interpreter evaluates a function-definition. def_plugin_and_notifier :explicit_function_defined, :fun_def, :fun # NOTE: Notified when the interpreter evaluates a struct-type-declaration. def_plugin_and_notifier :struct_declared, :struct_type_dcl # NOTE: Notified when the interpreter evaluates a union-type-declaration. def_plugin_and_notifier :union_declared, :union_type_dcl # NOTE: Notified when the interpreter evaluates a enum-type-declaration. def_plugin_and_notifier :enum_declared, :enum_type_dcl # NOTE: Notified when the interpreter evaluates a typedef-declaration. def_plugin_and_notifier :typedef_declared, :typedef_dcl # NOTE: Notified when the interpreter starts execution of a # function-definition. def_plugin_and_notifier :function_started, :fun_def, :fun # NOTE: Notified when the interpreter ends execution of a # function-definition. def_plugin_and_notifier :function_ended, :fun_def, :fun # NOTE: Notified when the interpreter evaluates a parameter-definition at # beginning of execution of a function-definition. def_plugin_and_notifier :parameter_defined, :param_def, :var # NOTE: Notified when the interpreter evaluates an expression which results # a named variable. def_plugin_and_notifier :variable_referred, :expr, :var # NOTE: Notified when the interpreter evaluates an expression which results # a constant temporary variable. def_plugin_and_notifier :constant_referred, :const_spec, :var # NOTE: Notified when the interpreter refers to a value of a variable while # evaluating an expression. def_plugin_and_notifier :variable_value_referred, :expr, :var # NOTE: Notified when the interpreter overwrites a value of a variable # while evaluating an expression. def_plugin_and_notifier :variable_value_updated, :expr, :var # NOTE: Notified when the interpreter refers to a function object while # evaluating an expression. def_plugin_and_notifier :function_referred, :expr, :fun # NOTE: Notified when the interpreter creates function-declaration of an # implicit function. def_plugin_and_notifier :implicit_function_declared, :obj_spec, :fun # NOTE: Notified when the interpreter evaluates an error-expression. def_plugin_and_notifier :error_expr_evaled, :expr, :rslt_var # NOTE: Notified when the interpreter evaluates an object-specifier. def_plugin_and_notifier :object_specifier_evaled, :expr, :rslt_obj # NOTE: Notified when the interpreter evaluates a constant-specifier. def_plugin_and_notifier :constant_specifier_evaled, :expr, :rslt_var # NOTE: Notified when the interpreter evaluates a string-literal-specifier. def_plugin_and_notifier :string_literal_specifier_evaled, :expr, :rslt_var # NOTE: Notified when the interpreter evaluates a null-constant-specifier. def_plugin_and_notifier :null_constant_specifier_evaled, :expr, :rslt_var # NOTE: Notified when the interpreter evaluates a sizeof-expression. def_plugin_and_notifier :sizeof_expr_evaled, :expr, :ope_var, :rslt_var # NOTE: Notified when the interpreter evaluates a sizeof-type-expression. def_plugin_and_notifier :sizeof_type_expr_evaled, :expr, :type, :rslt_var # NOTE: Notified when the interpreter evaluates an alignof-expression. def_plugin_and_notifier :alignof_expr_evaled, :expr, :ope_var, :rslt_var # NOTE: Notified when the interpreter evaluates an alignof-type-expression. def_plugin_and_notifier :alignof_type_expr_evaled, :expr, :type, :rslt_var # NOTE: Notified when the interpreter evaluates a cast-expression. def_plugin_and_notifier :cast_expr_evaled, :expr, :ope_var, :rslt_var # NOTE: Notified when the interpreter evaluates a cast-expression. def_plugin_and_notifier :explicit_conv_performed, :expr, :orig_var, :rslt_var # NOTE: Notified when the interpreter performs an implicit conversion while # evaluating an expression. def_plugin_and_notifier :implicit_conv_performed, :init_or_expr, :orig_var, :rslt_var # NOTE: Notified when the interpreter performs an address derivation while # address-expression evaluation and array or function address # derivation. def_plugin_and_notifier :address_derivation_performed, :init_or_expr, :obj, :ptr # NOTE: Notified when the interpreter evaluates an # array-subscript-expression. def_plugin_and_notifier :array_subscript_expr_evaled, :expr, :ary_or_ptr, :subs, :ary_var, :rslt_var # NOTE: Notified when the interpreter evaluates a function-call-expression. def_plugin_and_notifier :function_call_expr_evaled, :expr, :fun, :arg_vars, :rslt_var # NOTE: Notified when the interpreter evaluates an # unary-arithmetic-expression. def_plugin_and_notifier :unary_arithmetic_expr_evaled, :expr, :ope_var, :rslt_var # NOTE: Notified when the interpreter evaluates a # multiplicative-expression. def_plugin_and_notifier :multiplicative_expr_evaled, :expr, :lhs_var, :rhs_var, :rslt_var # NOTE: Notified when the interpreter evaluates an additive-expression. def_plugin_and_notifier :additive_expr_evaled, :expr, :lhs_var, :rhs_var, :rslt_var # NOTE: Notified when the interpreter evaluates a shift-expression. def_plugin_and_notifier :shift_expr_evaled, :expr, :lhs_var, :rhs_var, :rslt_var # NOTE: Notified when the interpreter evaluates a relational-expression. def_plugin_and_notifier :relational_expr_evaled, :expr, :lhs_var, :rhs_var, :rslt_var # NOTE: Notified when the interpreter evaluates an equality-expression. def_plugin_and_notifier :equality_expr_evaled, :expr, :lhs_var, :rhs_var, :rslt_var # NOTE: Notified when the interpreter evaluates a bitwise and-expression. def_plugin_and_notifier :and_expr_evaled, :expr, :lhs_var, :rhs_var, :rslt_var # NOTE: Notified when the interpreter evaluates an exclusive-or-expression. def_plugin_and_notifier :exclusive_or_expr_evaled, :expr, :lhs_var, :rhs_var, :rslt_var # NOTE: Notified when the interpreter evaluates a bitwise # inclusive-or-expression. def_plugin_and_notifier :inclusive_or_expr_evaled, :expr, :lhs_var, :rhs_var, :rslt_var # NOTE: Notified when the interpreter evaluates a logical-and-expression. def_plugin_and_notifier :logical_and_expr_evaled, :expr, :lhs_var, :rhs_var, :rslt_var # NOTE: Notified when the interpreter evaluates a logical-or-expression. def_plugin_and_notifier :logical_or_expr_evaled, :expr, :lhs_var, :rhs_var, :rslt_var # NOTE: Notified when the interpreter evaluates a conditional-expression. def_plugin_and_notifier :conditional_expr_evaled, :expr, :ctrlexpr_var, :rslt_var # NOTE: Notified when the interpreter evaluates an address-expression. def_plugin_and_notifier :address_expr_evaled, :expr, :obj, :ptr_var # NOTE: Notified when the interpreter evaluates an indirection-expression. def_plugin_and_notifier :indirection_expr_evaled, :expr, :ptr_var, :derefed_var # NOTE: Notified when the interpreter evaluates a # member-access-by-value-expression or a # member-access-by-pointer-expression. def_plugin_and_notifier :member_access_expr_evaled, :expr, :outer_var, :inner_var # NOTE: Notified when the interpreter evaluates a # bit-access-by-value-expression or a # bit-access-by-pointer-expression. def_plugin_and_notifier :bit_access_expr_evaled, :expr, :outer_var, :inner_var # NOTE: Notified when the interpreter evaluates a # prefix-increment-expression. def_plugin_and_notifier :prefix_increment_expr_evaled, :expr, :ope_var, :orig_val # NOTE: Notified when the interpreter evaluates a # postfix-increment-expression. def_plugin_and_notifier :postfix_increment_expr_evaled, :expr, :ope_var, :rslt_var # NOTE: Notified when the interpreter evaluates a # prefix-decrement-expression. def_plugin_and_notifier :prefix_decrement_expr_evaled, :expr, :ope_var, :orig_val # NOTE: Notified when the interpreter evaluates a # postfix-decrement-expression. def_plugin_and_notifier :postfix_decrement_expr_evaled, :expr, :ope_var, :rslt_var # NOTE: Notified when the interpreter evaluates a # compound-literal-expression. def_plugin_and_notifier :compound_literal_expr_evaled, :expr, :rslt_var # NOTE: Notified when the interpreter evaluates a # simple-assignment-expression or a compound-assignment-expression. def_plugin_and_notifier :assignment_expr_evaled, :expr, :lhs_var, :rhs_var # NOTE: Notified when the interpreter starts execution of a # expression-statement. def_plugin_and_notifier :expression_stmt_started, :stmt # NOTE: Notified when the interpreter ends execution of a # expression-statement. def_plugin_and_notifier :expression_stmt_ended, :stmt # NOTE: Notified when the interpreter starts execution of a # switch-statement. def_plugin_and_notifier :switch_stmt_started, :stmt # NOTE: Notified when the interpreter ends execution of a switch-statement. def_plugin_and_notifier :switch_stmt_ended, :stmt # NOTE: Notified when the interpreter starts execution of a # while-statement. def_plugin_and_notifier :while_stmt_started, :stmt # NOTE: Notified when the interpreter ends execution of a while-statement. def_plugin_and_notifier :while_stmt_ended, :stmt # NOTE: Notified when the interpreter starts execution of a do-statement. def_plugin_and_notifier :do_stmt_started, :stmt # NOTE: Notified when the interpreter ends execution of a do-statement. def_plugin_and_notifier :do_stmt_ended, :stmt # NOTE: Notified when the interpreter starts execution of a for-statement. def_plugin_and_notifier :for_stmt_started, :stmt # NOTE: Notified when the interpreter ends execution of a for-statement. def_plugin_and_notifier :for_stmt_ended, :stmt # NOTE: Notified when the interpreter starts execution of a # c99-for-statement. def_plugin_and_notifier :c99_for_stmt_started, :stmt # NOTE: Notified when the interpreter ends execution of a # c99-for-statement. def_plugin_and_notifier :c99_for_stmt_ended, :stmt # NOTE: Notified when the interpreter evaluates a goto-statement. def_plugin_and_notifier :goto_stmt_evaled, :stmt, :label_name # NOTE: Notified when the interpreter evaluates a return-statement. def_plugin_and_notifier :return_stmt_evaled, :stmt, :ret_var # NOTE: Notified when the interpreter evaluates an implicit return. def_plugin_and_notifier :implicit_return_evaled, :loc # NOTE: Notified when the interpreter evaluates a controlling expression of # the if-statement. def_plugin_and_notifier :if_ctrlexpr_evaled, :if_stmt, :ctrlexpr_val # NOTE: Notified when the interpreter evaluates a controlling expression of # the if-else-statement. def_plugin_and_notifier :if_else_ctrlexpr_evaled, :if_else_stmt, :ctrlexpr_val # NOTE: Notified when the interpreter evaluates a controlling expression of # the switch-statement. def_plugin_and_notifier :switch_ctrlexpr_evaled, :switch_stmt, :ctrlexpr_var # NOTE: Notified when the interpreter evaluates a controlling expression of # the case-labeled-statement. def_plugin_and_notifier :case_ctrlexpr_evaled, :case_labeled_stmt, :ctrlexpr_var # NOTE: Notified when the interpreter evaluates a controlling expression of # the while-statement. def_plugin_and_notifier :while_ctrlexpr_evaled, :while_statement, :ctrlexpr_val # NOTE: Notified when the interpreter evaluates a controlling expression of # the do-statement. def_plugin_and_notifier :do_ctrlexpr_evaled, :do_stmt, :ctrlexpr_val # NOTE: Notified when the interpreter evaluates a controlling expression of # the for-statement. def_plugin_and_notifier :for_ctrlexpr_evaled, :for_stmt, :ctrlexpr_val # NOTE: Notified when the interpreter evaluates a controlling expression of # the c99-for-statement. def_plugin_and_notifier :c99_for_ctrlexpr_evaled, :c99_for_stmt, :ctrlexpr_val # NOTE: Notified when the interpreter defines a generic-label. def_plugin_and_notifier :label_defined, :generic_labeled_stmt # NOTE: Notified when the interpreter starts execution of a # compound-statement. def_plugin_and_notifier :block_started, :compound_stmt # NOTE: Notified when the interpreter ends execution of a # compound-statement. def_plugin_and_notifier :block_ended, :compound_stmt # NOTE: Notified when the interpreter forks execution paths of a # function-definition. def_plugin_and_notifier :branch_started, :branch # NOTE: Notified when the interpreter joins execution paths of a # function-definition. def_plugin_and_notifier :branch_ended, :branch # NOTE: Notified when the interpreter starts execution of a # translation-unit. def_plugin_and_notifier :translation_unit_started, :tunit # NOTE: Notified when the interpreter ends execution of a translation-unit. def_plugin_and_notifier :translation_unit_ended, :tunit # NOTE: Notified when the control reaches to a sequence-point. def_plugin_and_notifier :sequence_point_reached, :seqp def execute(node, *opts) @options_stack.push(cur_opts + opts) if without_side_effects? rslt = nil branched_eval(nil, FINAL) do rslt = node.accept(interpreter_for(node)) # NOTE: To rollback latest variable value versions. BreakEvent.of_return.throw end else rslt = node.accept(interpreter_for(node)) end rslt ensure @options_stack.pop end def quiet? cur_opts.include?(QUIET) end def _quiet=(quiet) # NOTE: This method is called only from ControllingExpression. if quiet cur_opts.add(QUIET) else cur_opts.delete(QUIET) end end def without_side_effects? cur_opts.include?(WITHOUT_SIDE_EFFECTS) end def _without_side_effects=(without_side_effects) # NOTE: This method is called only from ExpressionEvaluator. if without_side_effects cur_opts.add(WITHOUT_SIDE_EFFECTS) else cur_opts.delete(WITHOUT_SIDE_EFFECTS) end end def _active_function # NOTE: This method is called only from # StatementInterpreter#visit_return_statement. # NOTE: To convert returning object, StatementInterpreter must have # knowledge about conversion destination type. @active_function_stack.last end def _enter_function(fun_def) # NOTE: This method is called only from FunctionInterpreter. @active_function_stack.push(fun_def) end def _leave_function(*) # NOTE: This method is called only from FunctionInterpreter. @active_function_stack.pop end private def interpreter_for(node) @sub_interpreters.find do |interp| node.kind_of?(interp.target_node_class) end end def cur_opts @options_stack.last || Set.new end def interpreter # NOTE: This method is of the requirement for including # InterpreterMediator. self end end class SubInterpreter < SyntaxTreeVisitor include InterpreterOptions include InterpreterMediator include NotifierMediator include Conversion include MonitorUtil include LogUtil def initialize(owner, target_node_class) @owner = owner @target_node_class = target_node_class end attr_reader :target_node_class private def interpreter # NOTE: This is private attr_reader for InterpreterMediator. # This attribute is read via a normal method to suppress # `private attribute?' warning. @owner end extend Forwardable def_delegator :interpreter, :monitor private :monitor def_delegator :interpreter, :logger private :logger end class DeclarationInterpreter < SubInterpreter def initialize(owner) super(owner, Declaration) end def visit_function_declaration(node) checkpoint(node.location) resolve_unresolved_type(node) node.type.declarations.each do |dcl| dcl.mark_as_referred_by(node.identifier) end fun = declare_explicit_function(node) notify_explicit_function_declared(node, fun) evaluate_sequence_point(node.init_declarator.declarator) end def visit_variable_declaration(node) checkpoint(node.location) resolve_unresolved_type(node) node.type.declarations.each do |dcl| dcl.mark_as_referred_by(node.identifier) end var = declare_variable(node, current_branch) notify_variable_declared(node, var) evaluate_sequence_point(node.declarator) end def visit_variable_definition(node) checkpoint(node.location) resolve_unresolved_type(node) node.type.declarations.each do |dcl| dcl.mark_as_referred_by(node.identifier) end if node.initializer if node.type.incomplete? # NOTE: Unable to define variable of incomplete type such as an array # without length. init_var, init_conved = evaluate_initializer(node) var = define_variable(node, current_branch, init_conved.value.to_defined_value) else # NOTE: Declare variable first in order to correctly evaluate # sizeof-expression that refers to the defining variable in the # initializer. declare_variable(node, current_branch) init_var, init_conved = evaluate_initializer(node) var = define_variable(node, current_branch, init_conved.value.to_defined_value) end notify_variable_value_referred(node, init_var) notify_variable_defined(node, var) notify_variable_initialized(node, var, init_var) else notify_variable_defined(node, define_variable(node, current_branch)) end evaluate_sequence_point(node.init_declarator.declarator) end def visit_struct_type_declaration(node) checkpoint(node.location) resolve_unresolved_type(node) notify_struct_declared(node) end def visit_union_type_declaration(node) checkpoint(node.location) resolve_unresolved_type(node) notify_union_declared(node) end def visit_enum_type_declaration(node) checkpoint(node) if enums = node.enum_specifier.enumerators seq = 0 enums.each do |enum| if expr = enum.expression obj = interpret(expr) if obj.variable? && obj.value.scalar? enum.value = obj.value.unique_sample end end enum.value ||= seq define_enumerator(enum) seq = enum.value + 1 end end notify_enum_declared(node) end def visit_typedef_declaration(node) checkpoint(node.location) resolve_unresolved_type(node) node.type.real_type.declarations.each do |dcl| dcl.mark_as_referred_by(node.identifier) end notify_typedef_declared(node) evaluate_sequence_point(node.init_declarator.declarator) LOG_I("user-type `#{node.identifier.value}' " + "defined at #{node.location.to_s}.") end private def evaluate_initializer(var_def) init_interp = InitializerInterpreter.new(interpreter) var, conved = init_interp.execute(var_def) # NOTE: An implicit conversion and size deduction of an incomplete array # have been done by InitializerInterpreter. # NOTE: For the case of array variable definition with a # string-literal-specifier as the initializer. if var_def.type.array? && var.type.pointer? unless ary = pointee_of(var) and ary.type.array? ary = create_tmpvar(var_def.type) end deduct_array_length_from_array_variable(var_def, ary) var = conved = ary end return var, conved end def deduct_array_length_from_array_variable(var_def, ary) unless var_def.type.length if var_def.type.user? var_def.type = var_def.type.dup end var_def.type.length = ary.type.length end end def evaluate_sequence_point(full_dcr) if seqp = full_dcr.subsequent_sequence_point notify_sequence_point_reached(seqp) end end end class InitializerInterpreter include InterpreterMediator include NotifierMediator include Conversion include MonitorUtil def initialize(interp) @interpreter = interp end def execute(var_def) checkpoint(var_def.initializer.location) case when expr = var_def.initializer.expression # NOTE: An implicit conversion is already notified in # #evaluate_expression. return evaluate_expression(expr, var_def.type) when inits = var_def.initializer.initializers var = evaluate_initializers(inits, var_def.type) # NOTE: Size deduction of an incomplete array type have been done by # #evaluate_initializers. if var_def.type.array? && var.type.array? var_def.type = var.type unless var_def.type.length end if var.type.same_as?(var_def.type) conved = var else conved = do_conversion(var, var_def.type) || create_tmpvar(var_def.type) notify_implicit_conv_performed(inits, var, conved) end else var = conved = create_tmpvar(var_def.type) end return var, conved end private def evaluate_expression(expr, type) checkpoint(expr.location) var = object_to_variable(interpret(expr), expr) if var.type.same_as?(type) conved = var else conved = do_conversion(var, type) || create_tmpvar(type) notify_implicit_conv_performed(expr, var, conved) end return var, conved end def evaluate_initializers(inits, type) case when type.union? # NOTE: The ISO C99 standard says; # # 6.7.8 Initialization # # Semantics # # 10 If an object that has automatic storage duration is not # initialized explicitly, its value is indeterminate. If an object # that has static storage duration is not initialized explicitly, # then: # -- if it has pointer type, it is initialized to a null pointer; # -- if it has arithmetic type, it is initialized to (positive or # unsigned) zero; # -- if it is an aggregate, every member is initialized # (recursively) according to these rules; # -- if it is a union, the first named member is initialized # (recursively) according to these rules. if fst_memb = type.members.first fst_obj = evaluate_initializers(inits, fst_memb.type) return create_tmpvar(type, value_of(fst_obj)) else return create_tmpvar(type) end when type.array? # NOTE: The ISO C99 standard says; # # 6.7.2.1 Structure and union specifiers # # Constraints # # 2 A structure or union shall not contain a member with incomplete # or function type (hence, a structure shall not contain an # instance of itself, but may contain a pointer to an instance of # itself), except that the last member of a structure with more # than one named member may have incomplete array type; such a # structure (and any union containing, possibly recursively, a # member that is such a structure) shall not be a member of a # structure or an element of an array. # # NOTE: Size of the last incomplete array member should not be # deducted in initialization. It is treated as a pointer. # # NOTE: ISO C90 does not support flexible array members. type = deduct_array_length_from_initializers(type, inits) memb_types = [type.unqualify.base_type] * type.impl_length when type.struct? memb_types = type.members.map { |memb| memb.type } else memb_types = [type] end vals = memb_types.zip(inits).map { |memb_type, init| if init checkpoint(init.location) case when expr = init.expression value_of(evaluate_expression(expr, memb_type).last) when inits = init.initializers value_of(evaluate_initializers(inits, memb_type)) else memb_type.undefined_value end else memb_type.undefined_value end } case when type.array? create_tmpvar(type, ArrayValue.new(vals)) when type.composite? create_tmpvar(type, CompositeValue.new(vals)) else create_tmpvar(type, vals.first) end end def deduct_array_length_from_initializers(orig_ary_type, inits) unless orig_ary_type.length if orig_ary_type.user? orig_ary_type = orig_ary_type.dup end orig_ary_type.length = inits.size end orig_ary_type end def interpreter # NOTE: This is private attr_reader for InterpreterMediator. # This attribute is read via a normal method to suppress # `private attribute?' warning. @interpreter end extend Forwardable def_delegator :interpreter, :monitor private :monitor end class ParameterDefinitionInterpreter < SubInterpreter def initialize(owner) super(owner, ParameterDefinition) end def visit_parameter_definition(node) checkpoint(node.location) resolve_unresolved_type(node) id = node.identifier node.type.declarations.each do |dcl| if id dcl.mark_as_referred_by(id) else dcl.mark_as_referred_by(node.head_token) end end if id var = define_variable(node.to_variable_definition, nil, node.type.parameter_value) notify_parameter_defined(node, var) end end end class FunctionInterpreter < SubInterpreter def initialize(owner) super(owner, FunctionDefinition) end def visit_ansi_function_definition(node) interpret_function(node) end def visit_kandr_function_definition(node) interpret_function(node) end private def interpret_function(fun_def) checkpoint(fun_def.location) reset_environment resolve_unresolved_type(fun_def) fun = lookup_or_define_function(fun_def) notify_explicit_function_defined(fun_def, fun) interpret_function_body(fun_def, fun) if fun_def.analysis_target?(traits) end def interpret_function_body(fun_def, fun) interpreter._enter_function(fun_def) scoped_eval do notify_function_started(fun_def, fun) notify_block_started(fun_def.function_body) fun_def.parameter_definitions.each { |param_def| interpret(param_def) } BreakEvent.catch do fun_def.function_body.block_items.each { |item| interpret(item) } notify_implicit_return_evaled(fun_def.function_body.tail_location) end notify_block_ended(fun_def.function_body) notify_function_ended(fun_def, fun) end ensure interpreter._leave_function(fun_def) end def lookup_or_define_function(fun_def) fun_def.type.declarations.each do |dcl| dcl.mark_as_referred_by(fun_def.identifier) end if fun = function_named(fun_def.identifier.value) and fun.explicit? fun.declarations_and_definitions.each do |dcl_or_def| dcl_or_def.mark_as_referred_by(fun_def.identifier) end fun.declarations_and_definitions.push(fun_def) fun else define_explicit_function(fun_def) end end end class StatementInterpreter < SubInterpreter include BranchOptions include BranchGroupOptions include SyntaxNodeCollector def initialize(owner) super(owner, Statement) # NOTE: All effective controlling expressions in the executing # iteration-statements. @effective_ctrlexpr_stack = [] end def visit_generic_labeled_statement(node) checkpoint(node.location) node.executed = true notify_label_defined(node) uninitialize_block_local_variables(node) interpret(node.statement) end def visit_case_labeled_statement(node) checkpoint(node.location) node.executed = true ctrlexpr = node.expression ctrlexpr_var = object_to_variable(interpret(ctrlexpr, QUIET), ctrlexpr) notify_case_ctrlexpr_evaled(node, ctrlexpr_var) interpret(node.statement) end def visit_default_labeled_statement(node) checkpoint(node.location) node.executed = true interpret(node.statement) end def visit_compound_statement(node) checkpoint(node.location) node.executed = true scoped_eval do begin notify_block_started(node) node.block_items.each { |item| interpret(item) } ensure notify_block_ended(node) end end end def visit_expression_statement(node) checkpoint(node.location) node.executed = true notify_expression_stmt_started(node) interpret(node.expression) if node.expression ensure notify_expression_stmt_ended(node) end def visit_if_statement(node) checkpoint(node.location) node.executed = true orig_ctrlexpr = node.expression if orig_ctrlexpr == effective_ctrlexpr ctrlexpr_val = scalar_value_of_arbitrary ctrlexpr = nil else ctrlexpr_obj = interpret(orig_ctrlexpr) ctrlexpr_var = object_to_variable(ctrlexpr_obj, orig_ctrlexpr) ctrlexpr_val = value_of(ctrlexpr_var) notify_variable_value_referred(orig_ctrlexpr, ctrlexpr_var) notify_sequence_point_reached(SequencePoint.new(orig_ctrlexpr)) ctrlexpr = orig_ctrlexpr.to_normalized_logical end notify_if_ctrlexpr_evaled(node, ctrlexpr_val) case when ctrlexpr_val.test_must_be_true.true? branched_eval(ctrlexpr, NARROWING, FINAL, IMPLICIT_COND, COMPLETE) do interpret(node.statement) end when ctrlexpr_val.test_may_be_true.true? branched_eval(ctrlexpr, NARROWING, FINAL, IMPLICIT_COND) do interpret(node.statement) end else # NOTE: To end the current branch group of else-if sequence. branched_eval(nil, NARROWING, FINAL) {} end end def visit_if_else_statement(node) checkpoint(node.location) node.executed = true orig_ctrlexpr = node.expression if orig_ctrlexpr == effective_ctrlexpr ctrlexpr_val = scalar_value_of_arbitrary ctrlexpr = nil else ctrlexpr_obj = interpret(orig_ctrlexpr) ctrlexpr_var = object_to_variable(ctrlexpr_obj, orig_ctrlexpr) ctrlexpr_val = value_of(ctrlexpr_var) notify_variable_value_referred(orig_ctrlexpr, ctrlexpr_var) notify_sequence_point_reached(SequencePoint.new(orig_ctrlexpr)) ctrlexpr = orig_ctrlexpr.to_normalized_logical end notify_if_else_ctrlexpr_evaled(node, ctrlexpr_val) case when ctrlexpr_val.test_must_be_true.true? branched_eval(ctrlexpr, NARROWING, FINAL, IMPLICIT_COND, COMPLETE) do interpret(node.then_statement) end return when ctrlexpr_val.test_may_be_true.true? branched_eval(ctrlexpr, NARROWING, IMPLICIT_COND) do interpret(node.then_statement) end end case node.else_statement when IfStatement, IfElseStatement interpret(node.else_statement) else branched_eval(nil, NARROWING, COMPLEMENTAL, FINAL, COMPLETE) do interpret(node.else_statement) end end end def visit_while_statement(node) checkpoint(node.location) node.executed = true notify_while_stmt_started(node) ctrlexpr_obj = interpret_iteration_ctrlexpr(node, node.expression) ctrlexpr_var = object_to_variable(ctrlexpr_obj, node.expression) ctrlexpr_val = value_of(ctrlexpr_var) notify_variable_value_referred(node.expression, ctrlexpr_var) notify_sequence_point_reached(SequencePoint.new(node.expression)) notify_while_ctrlexpr_evaled(node, ctrlexpr_val) orig_ctrlexpr, ctrlexpr = node.deduct_controlling_expression case when ctrlexpr_val.test_must_be_true.true? begin enter_iteration_statement(orig_ctrlexpr) branch_opts = [ITERATION, NARROWING, FINAL, IMPLICIT_COND, COMPLETE] branched_eval(ctrlexpr, *branch_opts) { interpret(node.statement) } ensure leave_iteration_statement(orig_ctrlexpr) end when ctrlexpr_val.test_may_be_true.true? begin enter_iteration_statement(orig_ctrlexpr) branch_opts = [ITERATION, NARROWING, FINAL, IMPLICIT_COND] branched_eval(ctrlexpr, *branch_opts) { interpret(node.statement) } ensure leave_iteration_statement(orig_ctrlexpr) end end ensure notify_while_stmt_ended(node) end def visit_do_statement(node) checkpoint(node.location) node.executed = true notify_do_stmt_started(node) widen_varying_variable_value_domain(node) orig_ctrlexpr, * = node.deduct_controlling_expression begin enter_iteration_statement(orig_ctrlexpr) branch_opts = [ITERATION, NARROWING, FINAL, IMPLICIT_COND, COMPLETE] branched_eval(nil, *branch_opts) { interpret(node.statement) } ensure leave_iteration_statement(orig_ctrlexpr) end ctrlexpr_obj = interpret(node.expression) ctrlexpr_var = object_to_variable(ctrlexpr_obj, node.expression) ctrlexpr_val = value_of(ctrlexpr_var) notify_variable_value_referred(node.expression, ctrlexpr_var) notify_sequence_point_reached(SequencePoint.new(node.expression)) notify_do_ctrlexpr_evaled(node, ctrlexpr_val) ensure notify_do_stmt_ended(node) end def visit_for_statement(node) checkpoint(node.location) node.executed = true notify_for_stmt_started(node) node.initial_statement.accept(self) if ctrlexpr_val = interpret_for_ctrlexpr(node) notify_for_ctrlexpr_evaled(node, ctrlexpr_val) else ctrlexpr_val = scalar_value_of_true end case when ctrlexpr_val.test_must_be_true.true? interpret_for_body_statement(node, true) when ctrlexpr_val.test_may_be_true.true? interpret_for_body_statement(node, false) end ensure notify_for_stmt_ended(node) end def visit_c99_for_statement(node) checkpoint(node.location) scoped_eval do interpret(node.declaration) node.executed = true notify_c99_for_stmt_started(node) if ctrlexpr_val = interpret_for_ctrlexpr(node) notify_c99_for_ctrlexpr_evaled(node, ctrlexpr_val) else ctrlexpr_val = scalar_value_of_true end case when ctrlexpr_val.test_must_be_true.true? interpret_for_body_statement(node, true) when ctrlexpr_val.test_may_be_true.true? interpret_for_body_statement(node, false) end end ensure notify_c99_for_stmt_ended(node) end def visit_goto_statement(node) checkpoint(node.location) # TODO: Must implement goto semantics. node.executed = true notify_goto_stmt_evaled(node, node.identifier.value) end def visit_continue_statement(node) checkpoint(node.location) node.executed = true BreakEvent.of_continue.throw end def visit_break_statement(node) checkpoint(node.location) node.executed = true BreakEvent.of_break.throw end def visit_return_statement(node) checkpoint(node.location) node.executed = true unless node.expression notify_return_stmt_evaled(node, nil) BreakEvent.of_return.throw end var = object_to_variable(interpret(node.expression), node.expression) notify_variable_value_referred(node.expression, var) if active_fun = interpreter._active_function and ret_type = active_fun.type.return_type if var.type.same_as?(ret_type) conved = var else conved = do_conversion(var, ret_type) || create_tmpvar(ret_type) notify_implicit_conv_performed(node.expression, var, conved) end else conved = var end notify_sequence_point_reached(SequencePoint.new(node)) notify_return_stmt_evaled(node, var) BreakEvent.of_return.throw end private def interpret_for_ctrlexpr(node) node.condition_statement.executed = true if ctrlexpr = node.condition_statement.expression ctrlexpr_obj = interpret(ctrlexpr, QUIET) ctrlexpr_var = object_to_variable(ctrlexpr_obj, ctrlexpr) ctrlexpr_val = value_of(ctrlexpr_var) ctrlexpr_obj = interpret_iteration_ctrlexpr(node, ctrlexpr) ctrlexpr_var = object_to_variable(ctrlexpr_obj, ctrlexpr) notify_variable_value_referred(ctrlexpr, ctrlexpr_var) notify_sequence_point_reached(SequencePoint.new(ctrlexpr)) else widen_varying_variable_value_domain(node) end ctrlexpr_val end def interpret_for_body_statement(node, complete) if complete branch_opts = [ITERATION, NARROWING, FINAL, IMPLICIT_COND, COMPLETE] else branch_opts = [ITERATION, NARROWING, FINAL, IMPLICIT_COND] end orig_ctrlexpr, ctrlexpr = node.deduct_controlling_expression enter_iteration_statement(orig_ctrlexpr) branched_eval(ctrlexpr, *branch_opts) do interpret(node.body_statement) interpret(node.expression) if node.expression if explicit_ctrlexpr = node.condition_statement.expression # NOTE: To avoid that value of the controlling variable is marked # as updated at end of the for-statement. Value of the # controlling variable is referred by the controlling # expression at the last iteration. # FIXME: This re-interpretation of the controlling expression may # cause duplicative warning messages. # FIXME: This re-interpretation of the controlling expression always # causes "logical-expression must be false" warnings about a # one-time-for-loop. To avoid this, now, workarounds are in # builtin code checks W0609 and W0610. var = object_to_variable(interpret(explicit_ctrlexpr), explicit_ctrlexpr) notify_variable_value_referred(explicit_ctrlexpr, var) notify_sequence_point_reached(SequencePoint.new(explicit_ctrlexpr)) end end ensure leave_iteration_statement(orig_ctrlexpr) end def uninitialize_block_local_variables(generic_labeled_stmt) related_goto_stmts = generic_labeled_stmt.referrers return if related_goto_stmts.empty? local_variables.each do |var| var_def = var.declarations_and_definitions.first anterior_goto_stmts = related_goto_stmts.select { |goto_stmt| goto_stmt.location.line_no < var_def.location.line_no } unless anterior_goto_stmts.empty? var.value.enter_versioning_group var.value.begin_versioning var.uninitialize! var.value.end_versioning var.value.leave_versioning_group(true) end end end def interpret_iteration_ctrlexpr(iter_stmt, ctrlexpr) environment.enter_branch(FINAL).execute(interpreter, nil) do widen_varying_variable_value_domain(iter_stmt) end interpret(ctrlexpr) ensure environment.leave_branch_group environment.leave_branch end def widen_varying_variable_value_domain(iter_stmt) iter_stmt.varying_variable_names.each do |name| if var = variable_named(name) widened_sval = var.type.arbitrary_value case deduct_variable_varying_path(var, iter_stmt) when :increase widened_sval.narrow_domain!(Operator::GE, var.value) when :decrease widened_sval.narrow_domain!(Operator::LE, var.value) end var.widen_value_domain!(Operator::EQ, widened_sval) end end end def deduct_variable_varying_path(var, iter_stmt) histogram = iter_stmt.varying_expressions.map { |expr| case expr when SimpleAssignmentExpression deduct_ctrl_var_path_by_simple_assignment_expr(var, expr) when CompoundAssignmentExpression deduct_ctrl_var_path_by_compound_assignment_expr(var, expr) when PrefixIncrementExpression, PostfixIncrementExpression expr.operand.identifier.value == var.name ? :increase : nil when PrefixDecrementExpression, PostfixDecrementExpression expr.operand.identifier.value == var.name ? :decrease : nil else nil end }.compact.each_with_object(Hash.new(0)) { |dir, hash| hash[dir] += 1 } if histogram.empty? nil else histogram[:decrease] <= histogram[:increase] ? :increase : :decrease end end def deduct_ctrl_var_path_by_simple_assignment_expr(var, expr) return nil unless expr.lhs_operand.identifier.value == var.name additive_exprs = collect_additive_expressions(expr.rhs_operand) histogram = additive_exprs.map { |additive_expr| if additive_expr.lhs_operand.kind_of?(ObjectSpecifier) lhs_name = additive_expr.lhs_operand.identifier.value end if additive_expr.rhs_operand.kind_of?(ObjectSpecifier) rhs_name = additive_expr.rhs_operand.identifier.value end next nil unless lhs_name == var.name || rhs_name == var.name case additive_expr.operator.type when "+" :increase when "-" :decrease else nil end }.compact.each_with_object(Hash.new(0)) { |dir, hash| hash[dir] += 1 } if histogram.empty? nil else histogram[:decrease] <= histogram[:increase] ? :increase : :decrease end end def deduct_ctrl_var_path_by_compound_assignment_expr(var, expr) return nil unless expr.lhs_operand.identifier.value == var.name case expr.operator.type when "+=" :increase when "-=" :decrease else nil end end def effective_ctrlexpr @effective_ctrlexpr_stack.last end def enter_iteration_statement(effective_ctrlexpr) @effective_ctrlexpr_stack.push(effective_ctrlexpr) end def leave_iteration_statement(effective_ctrlexpr) @effective_ctrlexpr_stack.pop end end class SwitchStatementInterpreter < SubInterpreter include BranchOptions include BranchGroupOptions def initialize(owner) super(owner, SwitchStatement) end def visit_switch_statement(node) checkpoint(node.location) node.executed = true notify_switch_stmt_started(node) ctrlexpr = node.expression ctrlexpr_var = object_to_variable(interpret(ctrlexpr), ctrlexpr) notify_switch_ctrlexpr_evaled(node, ctrlexpr_var) notify_variable_value_referred(ctrlexpr, ctrlexpr_var) execute_switch_body(ctrlexpr_var, node.statement) notify_switch_stmt_ended(node) end private def execute_switch_body(var, node) checkpoint(node.location) node.executed = true scoped_eval do begin notify_block_started(node) execute_switch_branches(var, node.block_items) ensure notify_block_ended(node) end end end def execute_switch_branches(var, block_items) if complete?(block_items) base_opts = [SMOTHER_BREAK, IMPLICIT_COND, NARROWING, COMPLETE] else base_opts = [SMOTHER_BREAK, IMPLICIT_COND, NARROWING] end idx = 0 while block_item = block_items[idx] case block_item when GenericLabeledStatement block_item.executed = true notify_label_defined(block_item) block_item = block_item.statement redo when CaseLabeledStatement, DefaultLabeledStatement if final_branch?(block_items, idx) opts = base_opts + [FINAL] else opts = base_opts.dup end idx = execute_branch(block_item, block_items, idx, opts) break unless idx else interpret(block_item) idx += 1 end end end def execute_branch(labeled_stmt, block_items, idx, branch_opts) ctrlexpr = labeled_stmt.normalized_expression ctrlexpr_val = value_of(interpret(ctrlexpr, QUIET)) case labeled_stmt when DefaultLabeledStatement branch_opts.push(COMPLEMENTAL) end case when ctrlexpr_val.test_must_be_true.true? branch_opts.push(FINAL, COMPLETE) when ctrlexpr_val.test_must_be_false.true? # NOTE: To end the current branch group of switch-statement if this # case-clause is the final one. branched_eval(ctrlexpr, *branch_opts) {} return seek_next_branch(block_items, idx) end branched_eval(ctrlexpr, *branch_opts) do |branch| case stmt = labeled_stmt.statement when CaseLabeledStatement, DefaultLabeledStatement # NOTE: Consecutive label appears! enter_next_clause(stmt, block_items, idx, branch, branch_opts) end interpret(labeled_stmt) idx += 1 while item = block_items[idx] case item when GenericLabeledStatement item.executed = true notify_label_defined(item) item = item.statement redo when CaseLabeledStatement, DefaultLabeledStatement # NOTE: Fall through! enter_next_clause(item, block_items, idx, branch, branch_opts) end interpret(item) idx += 1 end # NOTE: To simulate implicit breaking of the last case-clause. BreakEvent.of_break.throw end branch_opts.include?(FINAL) ? nil : seek_next_branch(block_items, idx) end def enter_next_clause(labeled_stmt, block_items, idx, branch, branch_opts) prepare_fall_through(branch, branch_opts, labeled_stmt) case labeled_stmt when DefaultLabeledStatement branch_opts.push(COMPLEMENTAL) end branch_opts.push(FINAL) if final_branch?(block_items, idx) branch.add_options(*branch_opts) case stmt = labeled_stmt.statement when CaseLabeledStatement, DefaultLabeledStatement enter_next_clause(stmt, block_items, idx, branch, branch_opts) end end def prepare_fall_through(branch, branch_opts, labeled_stmt) value_domain_manip = nil branch.restart_versioning do ctrlexpr = labeled_stmt.normalized_expression ctrlexpr_val = value_of(interpret(ctrlexpr, QUIET)) case when ctrlexpr_val.test_must_be_true.true? branch_opts.push(FINAL, COMPLETE) when ctrlexpr_val.test_must_be_false.true? return end value_domain_manip = branch.ctrlexpr.ensure_true_by_widening(ctrlexpr) end value_domain_manip.commit! end def final_branch?(block_items, idx) idx += 1 while block_item = block_items[idx] case block_item when GenericLabeledStatement block_item = block_item.statement redo when CaseLabeledStatement, DefaultLabeledStatement return false else idx += 1 end end true end def complete?(block_items) block_items.any? do |block_item| case block_item when GenericLabeledStatement, CaseLabeledStatement block_item = block_item.statement redo when DefaultLabeledStatement true else false end end end def seek_next_branch(block_items, idx) idx += 1 while block_item = block_items[idx] case block_item when GenericLabeledStatement notify_label_defined(block_item) block_item = block_item.statement redo when CaseLabeledStatement, DefaultLabeledStatement return idx else idx += 1 end end nil end end class ExpressionInterpreter < SubInterpreter include ExpressionEvaluator include BranchOptions include BranchGroupOptions def initialize(owner) super(owner, Expression) end def self.def_eval_with_sequence_point(method_name) class_eval <<-EOS def #{method_name}(node) super ensure if seqp = node.subsequent_sequence_point notify_sequence_point_reached(seqp) end end EOS end private_class_method :def_eval_with_sequence_point def_eval_with_sequence_point :visit_error_expression def_eval_with_sequence_point :visit_object_specifier def_eval_with_sequence_point :visit_constant_specifier def_eval_with_sequence_point :visit_string_literal_specifier def_eval_with_sequence_point :visit_null_constant_specifier def_eval_with_sequence_point :visit_grouped_expression def_eval_with_sequence_point :visit_array_subscript_expression def_eval_with_sequence_point :visit_function_call_expression def_eval_with_sequence_point :visit_member_access_by_value_expression def_eval_with_sequence_point :visit_member_access_by_pointer_expression def_eval_with_sequence_point :visit_bit_access_by_value_expression def_eval_with_sequence_point :visit_bit_access_by_pointer_expression def_eval_with_sequence_point :visit_postfix_increment_expression def_eval_with_sequence_point :visit_postfix_decrement_expression def_eval_with_sequence_point :visit_compound_literal_expression def_eval_with_sequence_point :visit_prefix_increment_expression def_eval_with_sequence_point :visit_prefix_decrement_expression def_eval_with_sequence_point :visit_address_expression def_eval_with_sequence_point :visit_indirection_expression def_eval_with_sequence_point :visit_unary_arithmetic_expression def_eval_with_sequence_point :visit_sizeof_expression def_eval_with_sequence_point :visit_sizeof_type_expression def_eval_with_sequence_point :visit_alignof_expression def_eval_with_sequence_point :visit_alignof_type_expression def_eval_with_sequence_point :visit_cast_expression def_eval_with_sequence_point :visit_multiplicative_expression def_eval_with_sequence_point :visit_additive_expression def_eval_with_sequence_point :visit_shift_expression def_eval_with_sequence_point :visit_relational_expression def_eval_with_sequence_point :visit_equality_expression def_eval_with_sequence_point :visit_and_expression def_eval_with_sequence_point :visit_exclusive_or_expression def_eval_with_sequence_point :visit_inclusive_or_expression def_eval_with_sequence_point :visit_logical_and_expression def_eval_with_sequence_point :visit_logical_or_expression def_eval_with_sequence_point :visit_simple_assignment_expression def_eval_with_sequence_point :visit_compound_assignment_expression def_eval_with_sequence_point :visit_comma_separated_expression def visit_conditional_expression(node) checkpoint(node.location) ctrlexpr = node.condition ctrlexpr_obj = interpret(ctrlexpr) ctrlexpr_var = object_to_variable(ctrlexpr_obj, ctrlexpr) ctrlexpr_val = value_of(ctrlexpr_var) notify_variable_value_referred(ctrlexpr, ctrlexpr_var) notify_sequence_point_reached(ctrlexpr.subsequent_sequence_point) ctrlexpr = ctrlexpr.to_normalized_logical then_var = nil if ctrlexpr_val.test_may_be_true.true? branched_eval(ctrlexpr, NARROWING, IMPLICIT_COND) do then_var = object_to_variable(interpret(node.then_expression), node.then_expression) end end else_var = nil if ctrlexpr_val.test_may_be_false.true? branched_eval(nil, NARROWING, FINAL, COMPLETE) do else_var = object_to_variable(interpret(node.else_expression), node.else_expression) end else branched_eval(nil, NARROWING, FINAL, COMPLETE) {} end case when then_var && else_var rslt_var = unify_then_and_else_var(then_var, else_var) # FIXME: Not to over-warn about discarding a function return value. # Because the unified result is a new temporary variable, it is # impossible to relate a reference of the unified result and a # reference of the 2nd or 3rd expression's value. notify_variable_value_referred(node, then_var) notify_variable_value_referred(node, else_var) when then_var rslt_var = then_var when else_var rslt_var = else_var else # FIXME: Nevertheless, the then-expression is not reachable, the branch # execution check may fail in evaluation of the else branch. rslt_var = create_tmpvar end notify_conditional_expr_evaled(node, ctrlexpr_var, rslt_var) rslt_var ensure if seqp = node.subsequent_sequence_point notify_sequence_point_reached(seqp) end end def unify_then_and_else_var(then_var, else_var) if then_var.type.pointer? || else_var.type.pointer? case when pointee_of(then_var) return then_var when pointee_of(else_var) return else_var end end create_tmpvar(then_var.type, then_var.value.single_value_unified_with(else_var.value)) end end end end adlint-3.2.14/lib/adlint/cc1/environ.rb0000644000004100000410000001016512340630463017604 0ustar www-datawww-data# C runtime environment. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/cc1/enum" require "adlint/cc1/object" require "adlint/cc1/builtin" require "adlint/cc1/branch" require "adlint/cc1/mediator" module AdLint #:nodoc: module Cc1 #:nodoc: class Environment include TypeTableMediator include MemoryPoolMediator include VariableTableMediator include FunctionTableMediator include EnumeratorTableMediator def initialize(type_tbl) @type_table = type_tbl @memory_pool = MemoryPool.new @variable_table = VariableTable.new(@memory_pool) @function_table = FunctionTable.new(@memory_pool) @enumerator_table = EnumeratorTable.new install_builtin_functions reset end attr_reader :type_table attr_reader :memory_pool attr_reader :variable_table attr_reader :function_table attr_reader :enumerator_table attr_reader :current_scope def reset @current_scope = GlobalScope.new @branch_depth = 0 @branch_groups = {} end def enter_scope @current_scope = current_scope.inner_scope @variable_table.enter_scope @function_table.enter_scope end def leave_scope @current_scope = current_scope.outer_scope @variable_table.leave_scope @function_table.leave_scope end def enter_branch_group(*opts) if trunk_group = @branch_groups[@branch_depth - 1] trunk = trunk_group.current_branch end @branch_groups[@branch_depth] = BranchGroup.new(self, trunk, *opts) end def current_branch_group @branch_groups[@branch_depth] end def leave_branch_group @branch_groups.delete(@branch_depth) end def enter_branch(*opts) @branch_depth += 1 if group = current_branch_group group.add_options(*opts) group.create_trailing_branch(*opts) else group = enter_branch_group(*opts) group.create_first_branch(*opts) end end def current_branch if cur_group = current_branch_group cur_group.current_branch else nil end end def leave_branch # NOTE: Don't delete current branch! @branch_depth -= 1 end def enter_versioning_group @variable_table.enter_variables_value_versioning_group end def leave_versioning_group(raise_complement) @variable_table.leave_variables_value_versioning_group(raise_complement) end def begin_versioning @variable_table.begin_variables_value_versioning end def end_versioning(thin_this_version, with_rollback = thin_this_version) if thin_this_version @variable_table.thin_latest_variables_value_version!(with_rollback) end @variable_table.end_variables_value_versioning end private def install_builtin_functions @function_table.define(InspectFunction.new(@type_table)) @function_table.define(EvalFunction.new(@type_table)) end end end end adlint-3.2.14/lib/adlint/cc1/mediator.rb0000644000004100000410000003132312340630463017727 0ustar www-datawww-data# C interpreter mediator. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/traits" require "adlint/cc1/type" require "adlint/cc1/object" require "adlint/cc1/enum" require "adlint/cc1/syntax" module AdLint #:nodoc: module Cc1 #:nodoc: module TypeTableMediator # NOTE: Host class must respond to #type_table. include StandardTypeCatalogAccessor extend Forwardable def_delegator :type_table, :lookup, :type_of def_delegator :type_table, :undeclared_type def_delegator :type_table, :wchar_t def_delegator :type_table, :array_type def_delegator :type_table, :function_type def_delegator :type_table, :bitfield_type def_delegator :type_table, :pointer_type def_delegator :type_table, :qualified_type private def standard_type_catalog type_table.standard_type_catalog end end module MemoryPoolMediator # NOTE: Host class must respond to #memory_pool. extend Forwardable def_delegator :memory_pool, :lookup, :memory_at def pointee_of(ptr) # FIXME: This method should return multiple objects, because domain of # the pointer_value may have multiple address values. # # ptr.value.to_enum.map { |addr| # mem = memory_at(addr) ? mem.binding.object : nil # }.compact if ptr.value.definite? if addr = ptr.value.to_enum.first and mem = memory_at(addr) obj = mem.binding.object if obj.variable? or obj.function? && ptr.type.unqualify.base_type.function? return obj end end end nil end end module VariableTableMediator # NOTE: Host class must respond to #variable_table. extend Forwardable def_delegator :variable_table, :lookup, :variable_named def_delegator :variable_table, :declare, :declare_variable def_delegator :variable_table, :define, :define_variable def_delegator :variable_table, :storage_duration_of def_delegator :variable_table, :designators, :variable_designators def local_variables variable_table.all_named_variables.select { |var| var.scope.local? } end def create_tmpvar(type = undeclared_type, val = type.undefined_value) variable_table.define_temporary(type, val) end end module FunctionTableMediator # NOTE: The host class of this module must include TypeTableMediator. # NOTE: Host class must respond to #function_table. extend Forwardable def_delegator :function_table, :lookup, :function_named def_delegator :function_table, :designators, :function_designators def declare_explicit_function(fun_dcl) function_table.declare_explicitly(fun_dcl) end def declare_implicit_function(name) function_table.declare_implicitly( ImplicitFunction.new(default_function_type, name)) end def define_explicit_function(fun_dcl_or_def) function_table.define(ExplicitFunction.new(fun_dcl_or_def)) end def define_anonymous_function(type) function_table.define(AnonymousFunction.new(type)) end private def default_function_type function_type(int_t, []) end end module EnumeratorTableMediator # NOTE: Host class must respond to #enumerator_table. extend Forwardable def_delegator :enumerator_table, :lookup, :enumerator_named def_delegator :enumerator_table, :define, :define_enumerator def_delegator :enumerator_table, :designators, :enumerator_designators end module NotifierMediator # NOTE: Host class must respond to #interpreter. extend Forwardable def_delegator :interpreter, :notify_variable_declared def_delegator :interpreter, :notify_variable_defined def_delegator :interpreter, :notify_variable_initialized def_delegator :interpreter, :notify_explicit_function_declared def_delegator :interpreter, :notify_explicit_function_defined def_delegator :interpreter, :notify_struct_declared def_delegator :interpreter, :notify_union_declared def_delegator :interpreter, :notify_enum_declared def_delegator :interpreter, :notify_typedef_declared def_delegator :interpreter, :notify_function_started def_delegator :interpreter, :notify_function_ended def_delegator :interpreter, :notify_parameter_defined def_delegator :interpreter, :notify_variable_referred def_delegator :interpreter, :notify_constant_referred def_delegator :interpreter, :notify_variable_value_referred def_delegator :interpreter, :notify_variable_value_updated def_delegator :interpreter, :notify_function_referred def_delegator :interpreter, :notify_implicit_function_declared def_delegator :interpreter, :notify_error_expr_evaled def_delegator :interpreter, :notify_object_specifier_evaled def_delegator :interpreter, :notify_constant_specifier_evaled def_delegator :interpreter, :notify_string_literal_specifier_evaled def_delegator :interpreter, :notify_null_constant_specifier_evaled def_delegator :interpreter, :notify_sizeof_expr_evaled def_delegator :interpreter, :notify_sizeof_type_expr_evaled def_delegator :interpreter, :notify_alignof_expr_evaled def_delegator :interpreter, :notify_alignof_type_expr_evaled def_delegator :interpreter, :notify_cast_expr_evaled def_delegator :interpreter, :notify_explicit_conv_performed def_delegator :interpreter, :notify_implicit_conv_performed def_delegator :interpreter, :notify_address_derivation_performed def_delegator :interpreter, :notify_array_subscript_expr_evaled def_delegator :interpreter, :notify_function_call_expr_evaled def_delegator :interpreter, :notify_unary_arithmetic_expr_evaled def_delegator :interpreter, :notify_multiplicative_expr_evaled def_delegator :interpreter, :notify_additive_expr_evaled def_delegator :interpreter, :notify_shift_expr_evaled def_delegator :interpreter, :notify_relational_expr_evaled def_delegator :interpreter, :notify_equality_expr_evaled def_delegator :interpreter, :notify_and_expr_evaled def_delegator :interpreter, :notify_exclusive_or_expr_evaled def_delegator :interpreter, :notify_inclusive_or_expr_evaled def_delegator :interpreter, :notify_logical_and_expr_evaled def_delegator :interpreter, :notify_logical_or_expr_evaled def_delegator :interpreter, :notify_conditional_expr_evaled def_delegator :interpreter, :notify_address_expr_evaled def_delegator :interpreter, :notify_indirection_expr_evaled def_delegator :interpreter, :notify_member_access_expr_evaled def_delegator :interpreter, :notify_bit_access_expr_evaled def_delegator :interpreter, :notify_prefix_increment_expr_evaled def_delegator :interpreter, :notify_postfix_increment_expr_evaled def_delegator :interpreter, :notify_prefix_decrement_expr_evaled def_delegator :interpreter, :notify_postfix_decrement_expr_evaled def_delegator :interpreter, :notify_compound_literal_expr_evaled def_delegator :interpreter, :notify_assignment_expr_evaled def_delegator :interpreter, :notify_expression_stmt_started def_delegator :interpreter, :notify_expression_stmt_ended def_delegator :interpreter, :notify_switch_stmt_started def_delegator :interpreter, :notify_switch_stmt_ended def_delegator :interpreter, :notify_while_stmt_started def_delegator :interpreter, :notify_while_stmt_ended def_delegator :interpreter, :notify_do_stmt_started def_delegator :interpreter, :notify_do_stmt_ended def_delegator :interpreter, :notify_for_stmt_started def_delegator :interpreter, :notify_for_stmt_ended def_delegator :interpreter, :notify_c99_for_stmt_started def_delegator :interpreter, :notify_c99_for_stmt_ended def_delegator :interpreter, :notify_goto_stmt_evaled def_delegator :interpreter, :notify_return_stmt_evaled def_delegator :interpreter, :notify_implicit_return_evaled def_delegator :interpreter, :notify_if_ctrlexpr_evaled def_delegator :interpreter, :notify_if_else_ctrlexpr_evaled def_delegator :interpreter, :notify_switch_ctrlexpr_evaled def_delegator :interpreter, :notify_case_ctrlexpr_evaled def_delegator :interpreter, :notify_while_ctrlexpr_evaled def_delegator :interpreter, :notify_do_ctrlexpr_evaled def_delegator :interpreter, :notify_for_ctrlexpr_evaled def_delegator :interpreter, :notify_c99_for_ctrlexpr_evaled def_delegator :interpreter, :notify_label_defined def_delegator :interpreter, :notify_block_started def_delegator :interpreter, :notify_block_ended def_delegator :interpreter, :notify_branch_started def_delegator :interpreter, :notify_branch_ended def_delegator :interpreter, :notify_translation_unit_started def_delegator :interpreter, :notify_translation_unit_ended def_delegator :interpreter, :notify_sequence_point_reached end module InterpreterMediator # NOTE: Host class must respond to #interpreter. include TypeTableMediator include MemoryPoolMediator include VariableTableMediator include FunctionTableMediator include EnumeratorTableMediator include ArithmeticAccessor include InterpObjectBridge include InterpSyntaxBridge def interpret(node, *opts) interpreter.execute(node, *opts) end def reset_environment environment.reset end def current_branch environment.current_branch end def scalar_value_of(numeric) ScalarValue.of(numeric, logical_right_shift?) end def scalar_value_of_true ScalarValue.of_true(logical_right_shift?) end def scalar_value_of_false ScalarValue.of_false(logical_right_shift?) end def scalar_value_of_null ScalarValue.of_null(logical_right_shift?) end def scalar_value_of_arbitrary ScalarValue.of_arbitrary(logical_right_shift?) end def constant_expression?(expr) expr.constant?(_interp_syntax_bridge_) end def object_to_variable(obj, init_or_expr = nil) obj.to_variable(_interp_object_bridge_).tap do |var| if init_or_expr && !obj.type.pointer? && var.type.pointer? notify_address_derivation_performed(init_or_expr, obj, var) end end end def object_to_pointer(obj, init_or_expr = nil) obj.to_pointer(_interp_object_bridge_).tap do |ptr| if init_or_expr notify_address_derivation_performed(init_or_expr, obj, ptr) end end end def value_of(obj) obj.to_value(_interp_object_bridge_) end def pointer_value_of(obj) obj.to_pointer_value(_interp_object_bridge_) end private def scoped_eval(&block) environment.enter_scope yield ensure environment.leave_scope end def branched_eval(expr = nil, *opts, &block) cur_branch = environment.enter_branch(*opts) interpreter.notify_branch_started(cur_branch) cur_branch.execute(interpreter, expr, &block) ensure interpreter.notify_branch_ended(cur_branch) environment.leave_branch_group if cur_branch.final? environment.leave_branch end def resolve_unresolved_type(node) interpreter.type_resolver.resolve(node) if node.type.unresolved? end extend Forwardable def_delegator :environment, :type_table private :type_table def_delegator :environment, :memory_pool private :memory_pool def_delegator :environment, :variable_table private :variable_table def_delegator :environment, :function_table private :function_table def_delegator :environment, :enumerator_table private :enumerator_table def_delegator :interpreter, :environment private :environment def_delegator :interpreter, :traits private :traits end end end adlint-3.2.14/lib/adlint/cc1/lexer.rb0000644000004100000410000002177612340630463017255 0ustar www-datawww-data# Lexical analyzer which retokenizes pp-tokens into c-tokens. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/lexer" require "adlint/util" require "adlint/cc1/scanner" require "adlint/cc1/scope" module AdLint #:nodoc: module Cc1 #:nodoc: class Lexer < TokensRelexer def initialize(pp_src) super(pp_src.pp_tokens) @lst_toks = [] @nxt_tok = nil @ordinary_identifiers = OrdinaryIdentifiers.new @identifier_translation = true end extend Pluggable def_plugin :on_string_literals_concatenated extend Forwardable def_delegator :@ordinary_identifiers, :add_typedef_name def_delegator :@ordinary_identifiers, :add_object_name def_delegator :@ordinary_identifiers, :add_enumerator_name def_delegator :@ordinary_identifiers, :enter_scope def_delegator :@ordinary_identifiers, :leave_scope def enable_identifier_translation @identifier_translation = true end def disable_identifier_translation @identifier_translation = false end private def create_lexer_context(tok_ary) LexerContext.new(TokensContent.new(tok_ary)) end def tokenize(lexer_ctxt) if @nxt_tok tok = @nxt_tok @nxt_tok = nil else until lexer_ctxt.content.empty? pp_tok = lexer_ctxt.content.next_token if type_hint = pp_tok.type_hint tok = pp_tok.class.new(type_hint, pp_tok.value, pp_tok.location) else tok = retokenize_keyword(pp_tok, lexer_ctxt) || retokenize_constant(pp_tok, lexer_ctxt) || retokenize_string_literal(pp_tok, lexer_ctxt) || retokenize_null_constant(pp_tok, lexer_ctxt) || retokenize_identifier(pp_tok, lexer_ctxt) || retokenize_punctuator(pp_tok, lexer_ctxt) end break if tok end end if tok case tok.type when :IDENTIFIER tok = translate_identifier(tok, lexer_ctxt) when :STRING_LITERAL tok = concat_contiguous_string_literals(tok, lexer_ctxt) end @lst_toks.shift if @lst_toks.size == 3 @lst_toks.push(tok) patch_identifier_translation_mode! end tok end def translate_identifier(tok, lexer_ctxt) # NOTE: To translate given IDENTIFIER into TYPEDEF_NAME if needed. # NOTE: The ISO C99 standard says; # # 6.2.3 Name spaces of identifiers # # 1 If more than one declaration of a particular identifier is visible at # any point in a translation unit, the syntactic context disambiguates # uses that refer to different entities. Thus, there are separate name # spaces for various categories of identifiers, as follows: # -- label names (disambiguated by the syntax of the label declaration # and use); # -- the tags of structures, unions, and enumerations (disambiguated by # following any of the keywords struct, union, or enum); # -- the members of structures or unions; each structure or union has a # separate name space for its members (disambiguated by the type of # the expression used to access the member via the . or -> # operator); # -- all other identifiers, called ordinary identifiers (declared in # ordinary declarators or as enumeration constants). if @identifier_translation if tok.type == :IDENTIFIER id_type = @ordinary_identifiers.find(tok.value) if id_type == :typedef unless lst_tok = @lst_toks.last and lst_tok.type == :STRUCT || lst_tok.type == :UNION || lst_tok.type == :ENUM || lst_tok.type == "->" || lst_tok.type == "." tok = tok.class.new(:TYPEDEF_NAME, tok.value, tok.location) end end end end tok end def concat_contiguous_string_literals(tok, lexer_ctxt) until lexer_ctxt.content.empty? nxt_tok = tokenize(lexer_ctxt) if nxt_tok.type == :STRING_LITERAL rslt_tok = tok.class.new(tok.type, tok.value.sub(/"\z/, "") + nxt_tok.value.sub(/\AL?"/, ""), tok.location) notify_string_literals_concatenated(tok, nxt_tok, rslt_tok) return rslt_tok else @nxt_tok = nxt_tok break end end tok end def patch_identifier_translation_mode! keys = [:STRUCT, :UNION, :ENUM] head_idx = @lst_toks.rindex { |tok| keys.include?(tok.type) } if head_idx toks = @lst_toks.drop(head_idx + 1) case toks.size when 1 patch_identifier_translation_mode1(*toks) when 2 patch_identifier_translation_mode2(*toks) end end end def patch_identifier_translation_mode1(lst_tok1) case lst_tok1.type when :IDENTIFIER @identifier_translation = false when "{" @identifier_translation = true end end def patch_identifier_translation_mode2(lst_tok1, lst_tok2) if lst_tok1.type == :IDENTIFIER && lst_tok2.type == "{" @identifier_translation = true end end def retokenize_keyword(pp_tok, lexer_ctxt) if keyword = Scanner::KEYWORDS[pp_tok.value] pp_tok.class.new(keyword, pp_tok.value, pp_tok.location) else nil end end def retokenize_constant(pp_tok, lexer_ctxt) # NOTE: For extended bit-access operators. return nil if lst_tok = @lst_toks.last and lst_tok.type == :IDENTIFIER case pp_tok.value when /\AL?'.*'\z/, /\A(?:[0-9]*\.[0-9]+|[0-9]+\.)[FL]*\z/i, /\A(?:[0-9]*\.[0-9]*E[+-]?[0-9]+|[0-9]+\.?E[+-]?[0-9]+)[FL]*\z/i, /\A(?:0x[0-9a-f]+|0b[01]+|[0-9]+)[UL]*\z/i pp_tok.class.new(:CONSTANT, pp_tok.value, pp_tok.location) else nil end end def retokenize_string_literal(pp_tok, lexer_ctxt) if pp_tok.value =~ /\AL?".*"\z/ pp_tok.class.new(:STRING_LITERAL, pp_tok.value, pp_tok.location) else nil end end def retokenize_null_constant(pp_tok, lexer_ctxt) if pp_tok.value == "NULL" pp_tok.class.new(:NULL, pp_tok.value, pp_tok.location) else nil end end def retokenize_identifier(pp_tok, lexer_ctxt) if pp_tok.value =~ /\A[a-z_][a-z_0-9]*\z/i pp_tok.class.new(:IDENTIFIER, pp_tok.value, pp_tok.location) else nil end end def retokenize_punctuator(pp_tok, lexer_ctxt) case pp_tok.value when "{", "}", "(", ")", "[", "]", ";", ",", "::", ":", "?", "||", "|=", "|", "&&", "&=", "&", "^=", "^", "==", "=", "!=", "!", "<<=", "<=", "<<", "<", ">>=", ">=", ">>", ">", "+=", "++", "+", "->*", "->", "-=", "--", "-", "*=", "*", "/=", "/", "%=", "%", "...", ".*", ".", "~" pp_tok.class.new(pp_tok.value, pp_tok.value, pp_tok.location) else nil end end def notify_string_literals_concatenated(former, latter, rslt_tok) on_string_literals_concatenated.invoke(former, latter, rslt_tok) end end class OrdinaryIdentifiers def initialize @id_stack = [[]] end def enter_scope @id_stack.unshift([]) end def leave_scope @id_stack.shift end def add_typedef_name(tok) add(tok.value, :typedef) end def add_object_name(tok) add(tok.value, :object) end def add_enumerator_name(tok) add(tok.value, :enumerator) end def find(id_str) @id_stack.each do |id_ary| if pair = id_ary.assoc(id_str) return pair.last end end nil end private def add(id_str, tag) @id_stack.first.unshift([id_str, tag]) end end end end adlint-3.2.14/lib/adlint/cc1/value.rb0000644000004100000410000022506612340630463017250 0ustar www-datawww-data# Values associated with memory blocks. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/cc1/domain" require "adlint/cc1/operator" module AdLint #:nodoc: module Cc1 #:nodoc: module BuggyValueSampler def unique_sample # NOTE: A value may have multiple sample values. # So, callers of this method have potential bugs! to_enum.to_a.min end end # == DESCRIPTION # === TestEvidence class hierarchy # TestEvidence # <-- TrivialTestEvidence # <-- NontrivialTestEvidence # <-- UndefinableTestEvidence # <-- NullabilityTestEvidence # <-- DefinableTestEvidence class TestEvidence def fulfilled? subclass_responsibility end def emit_context_messages(report, loc) subclass_responsibility end end # == DESCRIPTION # === ValueTest class hierarchy # ValueTest # <-- TrivialValueTest # <-- NontrivialValueTest class ValueTest def initialize(evid) @evidence = evid end attr_reader :evidence def result subclass_responsibility end def true? !!result end def false? !true? end end # == DESCRIPTION # === Value class hierarchy # Value # <-- SingleValue # <-- ScalarValue # <-- ArrayValue # <-- CompositeValue # <-- MultipleValue # <-- VersionedValue class Value include BuggyValueSampler def scalar? subclass_responsibility end def array? subclass_responsibility end def composite? subclass_responsibility end def undefined? subclass_responsibility end def ambiguous? subclass_responsibility end def exist? subclass_responsibility end def definite? subclass_responsibility end def contain?(val) subclass_responsibility end def multiple? subclass_responsibility end def overwrite!(val, tag) subclass_responsibility end def narrow_domain!(op, ope_val) subclass_responsibility end def widen_domain!(op, ope_val) subclass_responsibility end def invert_domain! subclass_responsibility end def single_value_unified_with(rhs_val) subclass_responsibility end def ~ subclass_responsibility end def +@ subclass_responsibility end def -@ subclass_responsibility end def +(rhs_val) subclass_responsibility end def -(rhs_val) subclass_responsibility end def *(rhs_val) subclass_responsibility end def /(rhs_val) subclass_responsibility end def %(rhs_val) subclass_responsibility end def &(rhs_val) subclass_responsibility end def |(rhs_val) subclass_responsibility end def ^(rhs_val) subclass_responsibility end def <<(rhs_val) subclass_responsibility end def >>(rhs_val) subclass_responsibility end def ! subclass_responsibility end def <(rhs_val) subclass_responsibility end def >(rhs_val) subclass_responsibility end def ==(rhs_val) subclass_responsibility end def !=(rhs_val) subclass_responsibility end def <=(rhs_val) subclass_responsibility end def >=(rhs_val) subclass_responsibility end def logical_and(rhs_val) # NOTE: Operator && cannot be defined as a method in Ruby. subclass_responsibility end def logical_or(rhs_val) # NOTE: Operator || cannot be defined as a method in Ruby. subclass_responsibility end def test_must_be_undefined subclass_responsibility end def test_may_be_undefined subclass_responsibility end def test_must_be_equal_to(val) subclass_responsibility end def test_may_be_equal_to(val) subclass_responsibility end def test_must_not_be_equal_to(val) subclass_responsibility end def test_may_not_be_equal_to(val) subclass_responsibility end def test_must_be_less_than(val) subclass_responsibility end def test_may_be_less_than(val) subclass_responsibility end def test_must_be_greater_than(val) subclass_responsibility end def test_may_be_greater_than(val) subclass_responsibility end def test_must_be_null subclass_responsibility end def test_may_be_null subclass_responsibility end def test_must_be_true subclass_responsibility end def test_may_be_true subclass_responsibility end def test_must_be_false subclass_responsibility end def test_may_be_false subclass_responsibility end def coerce_to(type) subclass_responsibility end def to_enum subclass_responsibility end def to_single_value subclass_responsibility end def to_defined_value subclass_responsibility end def eql?(rhs_val) subclass_responsibility end def hash subclass_responsibility end def dup subclass_responsibility end end class TrivialTestEvidence < TestEvidence def fulfilled? true end def emit_context_messages(report, loc) # NOTE: Evidence of the test result about SingleValue is trivial. # So, nothing to be complemented. [] end end class TrivialValueTest < ValueTest def initialize(rslt) super(TrivialTestEvidence.new) @result = rslt end attr_reader :result end class SingleValue < Value def multiple? false end def test_must_be_undefined TrivialValueTest.new(self.undefined?) end def test_may_be_undefined # NOTE: SingleValue has exactly one value domain. # So, the value of SingleValue may be undefined when the value # must be undefined. self.test_must_be_undefined end def to_single_value self end private def scalar_value_of_null ScalarValue.of_null(logical_shr?) end def scalar_value_of_true ScalarValue.of_true(logical_shr?) end def scalar_value_of_false ScalarValue.of_false(logical_shr?) end def scalar_value_of_nil ScalarValue.of_nil(logical_shr?) end def logical_shr? subclass_responsibility end end module ScalarValueFactory def of(numeric_or_range, logical_shr) case numeric_or_range when Numeric new(ValueDomain.equal_to(numeric_or_range, logical_shr)) when Range new(ValueDomain.greater_than_or_equal_to( numeric_or_range.first, logical_shr ).intersection(ValueDomain.less_than_or_equal_to( numeric_or_range.last, logical_shr ))) else raise TypeError, "argument must be a Numeric or a Range." end end def not_of(numeric_or_range, logical_shr) case numeric_or_range when Numeric new(ValueDomain.not_equal_to(numeric_or_range, logical_shr)) when Range new(ValueDomain.less_than( numeric_or_range.first, logical_shr ).union(ValueDomain.greater_than( numeric_or_range.last, logical_shr ))) else raise TypeError, "argument must be a Numeric or a Range." end end def of_true(logical_shr) not_of(0, logical_shr) end def of_false(logical_shr) of(0, logical_shr) end def of_null(logical_shr) # TODO: NULL may not be 0 on some environments. Representation of NULL # should be configurable? of(0, logical_shr) end def of_arbitrary(logical_shr) new(ValueDomain.of_unlimited(logical_shr)) end def of_undefined(range, logical_shr) new(ValueDomain.of_undefined(ValueDomain.greater_than_or_equal_to( range.first, logical_shr ).intersection(ValueDomain.less_than_or_equal_to( range.last, logical_shr )))) end def of_nil(logical_shr) new(ValueDomain.of_nil(logical_shr)) end def of_nan(logical_shr) new(ValueDomain.of_nan(logical_shr)) end end class ScalarValue < SingleValue extend ScalarValueFactory def initialize(domain) @domain = domain end def scalar? true end def array? false end def composite? false end def exist? !@domain.empty? end def definite? @domain.kind_of?(EqualToValueDomain) end def contain?(val) case sval = val.to_single_value when ScalarValue @domain.contain?(sval.domain) else false end end def undefined? @domain.undefined? end def ambiguous? @domain.ambiguous? end def overwrite!(val, *) case sval = val.to_single_value when ScalarValue @domain = sval.domain else raise TypeError, "cannot overwrite scalar with non-scalar." end end def narrow_domain!(op, ope_val) case ope_sval = ope_val.to_single_value when ScalarValue @domain = @domain.narrow(op, ope_sval.domain) else raise TypeError, "cannot narrow scalar value domain with non-scalar." end end def widen_domain!(op, ope_val) case ope_sval = ope_val.to_single_value when ScalarValue @domain = @domain.widen(op, ope_sval.domain) else raise TypeError, "cannot widen scalar value domain with non-scalar." end end def invert_domain! @domain = @domain.inversion end def single_value_unified_with(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain.union(rhs_sval.domain)) else raise TypeError, "cannot unify scalar value with non-scalar." end end def ~ ScalarValue.new(~@domain) end def +@ ScalarValue.new(+@domain) end def -@ ScalarValue.new(-@domain) end def +(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain + rhs_sval.domain) else raise TypeError, "binary operation between scalar and non-scalar." end end def -(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain - rhs_sval.domain) else raise TypeError, "binary operation between scalar and non-scalar." end end def *(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain * rhs_sval.domain) else raise TypeError, "binary operation between scalar and non-scalar." end end def /(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain / rhs_sval.domain) else raise TypeError, "binary operation between scalar and non-scalar." end end def %(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain % rhs_sval.domain) else raise TypeError, "binary operation between scalar and non-scalar." end end def &(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain & rhs_sval.domain) else raise TypeError, "binary operation between scalar and non-scalar." end end def |(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain | rhs_sval.domain) else raise TypeError, "binary operation between scalar and non-scalar." end end def ^(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain ^ rhs_sval.domain) else raise TypeError, "binary operation between scalar and non-scalar." end end def <<(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain << rhs_sval.domain) else raise TypeError, "binary operation between scalar and non-scalar." end end def >>(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain >> rhs_sval.domain) else raise TypeError, "binary operation between scalar and non-scalar." end end def ! ScalarValue.new(!@domain) end def <(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain < rhs_sval.domain) else raise TypeError, "comparison between scalar and non-scalar." end end def >(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain > rhs_sval.domain) else raise TypeError, "comparison between scalar and non-scalar." end end def ==(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain == rhs_sval.domain) else raise TypeError, "comparison between scalar and non-scalar." end end def !=(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain != rhs_sval.domain) else raise TypeError, "comparison between scalar and non-scalar." end end def <=(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain <= rhs_sval.domain) else raise TypeError, "comparison between scalar and non-scalar." end end def >=(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain >= rhs_sval.domain) else raise TypeError, "comparison between scalar and non-scalar." end end def logical_and(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain.logical_and(rhs_sval.domain)) else raise TypeError, "comparison between scalar and non-scalar." end end def logical_or(rhs_val) case rhs_sval = rhs_val.to_single_value when ScalarValue ScalarValue.new(@domain.logical_or(rhs_sval.domain)) else raise TypeError, "comparison between scalar and non-scalar." end end def test_must_be_equal_to(val) case sval = val.to_single_value.dup when ScalarValue comp_val = (self == sval) sval.invert_domain! sval.narrow_domain!(Operator::EQ, self) TrivialValueTest.new( comp_val.domain.intersect?(scalar_value_of_true.domain) && !comp_val.domain.contain?(scalar_value_of_false.domain) && !@domain.intersect?(sval.domain)) else raise TypeError, "comparison between scalar and non-scalar." end end def test_may_be_equal_to(val) case sval = val.to_single_value when ScalarValue TrivialValueTest.new( (self == sval).domain.intersect?(scalar_value_of_true.domain)) else raise TypeError, "comparison between scalar and non-scalar." end end def test_must_not_be_equal_to(val) case sval = val.to_single_value when ScalarValue comp_val = (self != sval) TrivialValueTest.new( comp_val.domain.intersect?(scalar_value_of_true.domain) && !comp_val.domain.contain?(scalar_value_of_false.domain) && !@domain.intersect?(sval.domain)) else raise TypeError, "comparison between scalar and non-scalar." end end def test_may_not_be_equal_to(val) case sval = val.to_single_value when ScalarValue TrivialValueTest.new( (self != sval).domain.intersect?(scalar_value_of_true.domain)) else raise TypeError, "comparison between scalar and non-scalar." end end def test_must_be_less_than(val) case sval = val.to_single_value when ScalarValue comp_val = (self < sval) TrivialValueTest.new( comp_val.domain.intersect?(scalar_value_of_true.domain) && !comp_val.domain.contain?(scalar_value_of_false.domain)) else raise TypeError, "comparison between scalar and non-scalar." end end def test_may_be_less_than(val) case sval = val.to_single_value when ScalarValue TrivialValueTest.new( (self < sval).domain.intersect?(scalar_value_of_true.domain)) else raise TypeError, "comparison between scalar and non-scalar." end end def test_must_be_greater_than(val) case sval = val.to_single_value when ScalarValue comp_val = (self > sval) TrivialValueTest.new( comp_val.domain.intersect?(scalar_value_of_true.domain) && !comp_val.domain.contain?(scalar_value_of_false.domain)) else raise TypeError, "comparison between scalar and non-scalar." end end def test_may_be_greater_than(val) case sval = val.to_single_value when ScalarValue TrivialValueTest.new( (self > sval).domain.intersect?(scalar_value_of_true.domain)) else raise TypeError, "comparison between scalar and non-scalar." end end def test_must_be_null test_must_be_equal_to(scalar_value_of_null) end def test_may_be_null test_may_be_equal_to(scalar_value_of_null) end def test_must_be_true TrivialValueTest.new( test_may_be_equal_to(scalar_value_of_true).true? && test_must_not_be_equal_to(scalar_value_of_false).true?) end def test_may_be_true test_may_be_equal_to(scalar_value_of_true) end def test_must_be_false test_must_be_equal_to(scalar_value_of_false) end def test_may_be_false test_may_be_equal_to(scalar_value_of_false) end def coerce_to(type) type.coerce_scalar_value(self) end def to_enum @domain.each_sample end def to_defined_value ScalarValue.new(@domain.to_defined_domain) end def eql?(rhs_val) rhs_val.kind_of?(ScalarValue) && @domain.eql?(rhs_val.domain) end def hash @domain.hash end def dup ScalarValue.new(@domain) end protected attr_reader :domain private def logical_shr? @domain.logical_shr? end end class ArrayValue < SingleValue def initialize(vals) @values = vals end attr_reader :values def scalar? false end def array? true end def composite? false end def exist? @values.empty? ? true : @values.all? { |val| val.exist? } end def definite? @values.empty? ? true : @values.all? { |val| val.definite? } end def contain?(val) case sval = val.to_single_value when ArrayValue if @values.size == sval.values.size @values.zip(sval.values).all? { |lhs, rhs| lhs.contain?(rhs) } else false end else false end end def undefined? @values.empty? ? false : @values.all? { |val| val.undefined? } end def ambiguous? @values.empty? ? false : @values.all? { |val| val.ambiguous? } end def overwrite!(val, tag) case sval = val.to_single_value when ArrayValue @values.zip(sval.values).each do |lhs, rhs| rhs && lhs.overwrite!(rhs, tag) end else raise TypeError, "cannot overwrite array with non-array." end end def narrow_domain!(op, ope_val) case ope_sval = ope_val.to_single_value when ArrayValue @values.zip(ope_sval.values).each do |lhs, rhs| if rhs lhs.narrow_domain!(op, rhs) else next end end else raise TypeError, "cannot narrow array value domain with non-array." end end def widen_domain!(op, ope_val) case ope_sval = ope_val.to_single_value when ArrayValue @values.zip(ope_sval.values).each do |lhs, rhs| if rhs lhs.widen_domain!(op, rhs) else next end end else raise TypeError, "cannot widen array value domain with non-array." end end def invert_domain! @values.each { |val| val.invert_domain! } end def single_value_unified_with(rhs_val) case rhs_sval = rhs_val.to_single_value when ArrayValue ArrayValue.new(@values.zip(rhs_sval.values).map { |lhs, rhs| lhs.single_value_unified_with(rhs) }) else raise TypeError, "cannot unify array value with non-array." end end def ~ # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. dup # NOTREACHED end def +@ # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. dup # NOTREACHED end def -@ # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. dup # NOTREACHED end def +(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. dup # NOTREACHED end def -(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. dup # NOTREACHED end def *(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. dup # NOTREACHED end def /(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. dup # NOTREACHED end def %(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. dup # NOTREACHED end def &(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. dup # NOTREACHED end def |(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. dup # NOTREACHED end def ^(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. dup # NOTREACHED end def <<(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. dup # NOTREACHED end def >>(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. dup # NOTREACHED end def ! # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. scalar_value_of_false # NOTREACHED end def <(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. # So, this comparison operator should not be reached. case rhs_sval = rhs_val.to_single_value when ArrayValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs < rhs) end else scalar_value_of_false end else raise TypeError, "comparison between array and non-array." end end def >(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. # So, this comparison operator should not be reached. case rhs_sval = rhs_val.to_single_value when ArrayValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs > rhs) end else scalar_value_of_false end else raise TypeError, "comparison between array and non-array." end end def ==(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. # So, this comparison operator should not be reached. case rhs_sval = rhs_val.to_single_value when ArrayValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs == rhs) end else scalar_value_of_false end else raise TypeError, "comparison between array and non-array." end end def !=(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. # So, this comparison operator should not be reached. case rhs_sval = rhs_val.to_single_value when ArrayValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs != rhs) end else scalar_value_of_false end else raise TypeError, "comparison between array and non-array." end end def <=(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. # So, this comparison operator should not be reached. case rhs_sval = rhs_val.to_single_value when ArrayValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs <= rhs) end else scalar_value_of_false end else raise TypeError, "comparison between array and non-array." end end def >=(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. # So, this comparison operator should not be reached. case rhs_sval = rhs_val.to_single_value when ArrayValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs >= rhs) end else scalar_value_of_false end else raise TypeError, "comparison between array and non-array." end end def logical_and(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. # So, this comparison operator should not be reached. case rhs_sval = rhs_val.to_single_value when ArrayValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs.logical_and(rhs)) end else scalar_value_of_false end else raise TypeError, "comparison between array and non-array." end end def logical_or(rhs_val) # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. # So, this comparison operator should not be reached. case rhs_sval = rhs_val.to_single_value when ArrayValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs.logical_or(rhs)) end else scalar_value_of_false end else raise TypeError, "comparison between array and non-array." end end def test_must_be_equal_to(val) case sval = val.to_single_value when ArrayValue TrivialValueTest.new((self == sval).test_must_be_true.result) else raise TypeError, "comparison between array and non-array." end end def test_may_be_equal_to(val) case sval = val.to_single_value when ArrayValue TrivialValueTest.new((self == sval).test_may_be_true.result) else raise TypeError, "comparison between array and non-array." end end def test_must_not_be_equal_to(val) case sval = val.to_single_value when ArrayValue TrivialValueTest.new((self != sval).test_must_be_true.result) else raise TypeError, "comparison between array and non-array." end end def test_may_not_be_equal_to(val) case sval = val.to_single_value when ArrayValue TrivialValueTest.new((self != sval).test_may_be_true.result) else raise TypeError, "comparison between array and non-array." end end def test_must_be_less_than(val) case sval = value.to_single_value when ArrayValue TrivialValueTest.new((self < sval).test_must_be_true.result) else raise TypeError, "comparison between array and non-array." end end def test_may_be_less_than(val) case sval = val.to_single_value when ArrayValue TrivialValueTest.new((self < sval).test_may_be_true.result) else raise TypeError, "comparison between array and non-array." end end def test_must_be_greater_than(val) case sval = val.to_single_value when ArrayValue TrivialValueTest.new((self > sval).test_must_be_true.result) else raise TypeError, "comparison between array and non-array." end end def test_may_be_greater_than(val) case sval = val.to_single_value when ArrayValue TrivialValueTest.new((self > sval).test_may_be_true.result) else raise TypeError, "comparison between array and non-array." end end def test_must_be_null TrivialValueTest.new(@values.all? { |val| val.test_must_be_null.result }) end def test_may_be_null TrivialValueTest.new(@values.all? { |val| val.test_may_be_null.result }) end def test_must_be_true # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. # So, this method should not be reached. TrivialValueTest.new(@values.all? { |val| val.test_must_be_true.result }) end def test_may_be_true # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. # So, this method should not be reached. TrivialValueTest.new(@values.all? { |val| val.test_may_be_true.result }) end def test_must_be_false # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. # So, this method should not be reached. TrivialValueTest.new( @values.all? { |val| val.test_must_be_false.result }) end def test_may_be_false # NOTE: When an array variable appears in expressions, object-specifier # of an array variable should be evaluated into a pointer to the # array body. # So, this method should not be reached. TrivialValueTest.new(@values.all? { |val| val.test_may_be_false.result }) end def coerce_to(type) type.coerce_array_value(self) end def to_enum # FIXME: This method generates only one of sample values. @values.map { |val| val.to_enum.first } end def to_defined_value ArrayValue.new(@values.map { |val| val.to_defined_value }) end def eql?(rhs_val) rhs_val.kind_of?(ArrayValue) && @values.eql?(rhs_val.values) end def hash @values.hash end def dup ArrayValue.new(@values.map { |val| val.dup }) end private def logical_shr? @values.all? { |val| val.logical_shr? } end memoize :logical_shr? end class CompositeValue < SingleValue def initialize(vals) @values = vals end attr_reader :values def scalar? false end def array? false end def composite? true end def exist? @values.empty? ? true : @values.all? { |val| val.exist? } end def definite? @values.empty? ? true : @values.all? { |val| val.definite? } end def contain?(val) case sval = val.to_single_value when CompositeValue if @values.size == sval.values.size @values.zip(sval.values).all? { |lhs, rhs| lhs.contain?(rhs) } else false end else false end end def undefined? @values.empty? ? false : @values.all? { |val| val.undefined? } end def ambiguous? @values.empty? ? false : @values.all? { |val| val.ambiguous? } end def overwrite!(val, tag) case sval = val.to_single_value when CompositeValue @values.zip(sval.values).each do |lhs, rhs| rhs && lhs.overwrite!(rhs, tag) end else raise TypeError, "cannot overwrite composite with non-composite." end end def narrow_domain!(op, ope_val) case ope_sval = ope_val.to_single_value when CompositeValue @values.zip(ope_sval.values).each do |lhs, rhs| if rhs lhs.narrow_domain!(op, rhs) else next end end else raise TypeError, "cannot narrow composite value domain with non-composite." end end def widen_domain!(op, ope_val) case ope_sval = ope_val.to_single_value when CompositeValue @values.zip(ope_sval.values).each do |lhs, rhs| if rhs lhs.widen_domain!(op, rhs) else next end end else raise TypeError, "cannot widen composite value domain with non-composite." end end def invert_domain! @values.each { |val| val.invert_domain! } end def single_value_unified_with(rhs_val) case rhs_sval = rhs_val.to_single_value when CompositeValue CompositeValue.new( @values.zip(rhs_sval.values).map { |lhs, rhs| lhs.single_value_unified_with(rhs) }) else raise TypeError, "cannot unify composite value with non-composite." end end def ~ # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). dup # NOTREACHED end def +@ # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). dup # NOTREACHED end def -@ # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). dup # NOTREACHED end def +(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). dup # NOTREACHED end def -(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). dup # NOTREACHED end def *(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). dup # NOTREACHED end def /(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). dup # NOTREACHED end def %(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). dup # NOTREACHED end def &(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). dup # NOTREACHED end def |(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). dup # NOTREACHED end def ^(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). dup # NOTREACHED end def <<(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). dup # NOTREACHED end def >>(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). dup # NOTREACHED end def ! # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). scalar_value_of_false # NOTREACHED end def <(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). case rhs_sval = rhs_val.to_single_value when CompositeValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs < rhs) end else scalar_value_of_false end else raise TypeError, "comparison between composite and non-composite." end end def >(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). case rhs_sval = rhs_val.to_single_value when CompositeValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs > rhs) end else scalar_value_of_false end else raise TypeError, "comparison between composite and non-composite." end end def ==(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). case rhs_sval = rhs_val.to_single_value when CompositeValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs == rhs) end else scalar_value_of_false end else raise TypeError, "comparison between composite and non-composite." end end def !=(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). case rhs_sval = rhs_val.to_single_value when CompositeValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs != rhs) end else scalar_value_of_false end else raise TypeError, "comparison between composite and non-composite." end end def <=(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). case rhs_sval = rhs_val.to_single_value when CompositeValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs <= rhs) end else scalar_value_of_false end else raise TypeError, "comparison between composite and non-composite." end end def >=(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). case rhs_sval = rhs_val.to_single_value when CompositeValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs >= rhs) end else scalar_value_of_false end else raise TypeError, "comparison between composite and non-composite." end end def logical_and(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). case rhs_sval = rhs_val.to_single_value when CompositeValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs.logical_and(rhs)) end else scalar_value_of_false end else raise TypeError, "comparison between composite and non-composite." end end def logical_or(rhs_val) # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). case rhs_sval = rhs_val.to_single_value when CompositeValue if @values.size == rhs_sval.values.size zipped = @values.zip(rhs_sval.values) zipped.reduce(scalar_value_of_nil) do |rslt_val, (lhs, rhs)| rslt_val.single_value_unified_with(lhs.logical_or(rhs)) end else scalar_value_of_false end else raise TypeError, "comparison between composite and non-composite." end end def test_must_be_equal_to(val) case sval = val.to_single_value when CompositeValue TrivialValueTest.new((self == sval).test_must_be_true.result) else raise TypeError, "comparison between composite and non-composite." end end def test_may_be_equal_to(val) case sval = val.to_single_value when CompositeValue TrivialValueTest.new((self == sval).test_may_be_true.result) else raise TypeError, "comparison between composite and non-composite." end end def test_must_not_be_equal_to(val) case sval = val.to_single_value when CompositeValue TrivialValueTest.new((self != sval).test_must_be_true.result) else raise TypeError, "comparison between composite and non-composite." end end def test_may_not_be_equal_to(val) case sval = val.to_single_value when CompositeValue TrivialValueTest.new((self != sval).test_may_be_true.result) else raise TypeError, "comparison between composite and non-composite." end end def test_must_be_less_than(val) case sval = val.to_single_value when CompositeValue TrivialValueTest.new((self < sval).test_must_be_true.result) else raise TypeError, "comparison between composite and non-composite." end end def test_may_be_less_than(val) case sval = val.to_single_value when CompositeValue TrivialValueTest.new((self < sval).test_may_be_true.result) else raise TypeError, "comparison between composite and non-composite." end end def test_must_be_greater_than(val) case sval = val.to_single_value when CompositeValue TrivialValueTest.new((self > sval).test_must_be_true.result) else raise TypeError, "comparison between composite and non-composite." end end def test_may_be_greater_than(val) case sval = val.to_single_value when CompositeValue TrivialValueTest.new((self > sval).test_may_be_true.result) else raise TypeError, "comparison between composite and non-composite." end end def test_must_be_null TrivialValueTest.new(@values.all? { |val| val.test_must_be_null.result }) end def test_may_be_null TrivialValueTest.new(@values.all? { |val| val.test_may_be_null.result }) end def test_must_be_true # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). TrivialValueTest.new(@values.all? { |val| val.test_must_be_true.result }) end def test_may_be_true # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). TrivialValueTest.new(@values.all? { |val| val.test_may_be_true.result }) end def test_must_be_false # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). TrivialValueTest.new( @values.all? { |val| val.test_must_be_false.result }) end def test_may_be_false # NOTE: A composite variable cannot appear in expressions except the # primary-expression(object-specifier followed by `.'). TrivialValueTest.new(@values.all? { |val| val.test_may_be_false.result }) end def coerce_to(type) type.coerce_composite_value(self) end def to_enum # FIXME: This method generates only one of sample values. @values.map { |val| val.to_enum.first } end def to_defined_value CompositeValue.new(@values.map { |val| val.to_defined_value }) end def eql?(rhs_val) rhs_val.kind_of?(CompositeValue) && @values.eql?(rhs_val.values) end def hash @values.hash end def dup CompositeValue.new(@values.map { |val| val.dup }) end private def logical_shr? @values.all? { |val| val.logical_shr? } end memoize :logical_shr? end class NontrivialTestEvidence < TestEvidence def initialize(exact) @exact = exact @positive_contribs = [] @negative_contribs = [] end attr_reader :positive_contribs attr_reader :negative_contribs def fulfilled? if @exact @negative_contribs.any? { |mval| mval._base.tag.traceable? } else @positive_contribs.any? { |mval| mval._base.tag.traceable? } && @negative_contribs.any? { |mval| mval._base.tag.traceable? } end end def add_positive_contributor(mval) @positive_contribs.push(mval) end def add_negative_contributor(mval) @negative_contribs.push(mval) end end class UndefinableTestEvidence < NontrivialTestEvidence # NOTE: Context tracing feature will be mixed-in at trace.rb later. end class NullabilityTestEvidence < NontrivialTestEvidence # NOTE: Context tracing feature will be mixed-in at trace.rb later. end class DefinableTestEvidence < NontrivialTestEvidence # NOTE: Context tracing feature will be mixed-in at trace.rb later. def initialize(pred, exact) super(exact) @predicate = pred end end class NontrivialValueTest < ValueTest def initialize(evid, exact) super(evid) @exact = exact end def result # NOTE: TestEvidence of an NontrivialValueTest must be a kind of # NontrivialTestEvidence. if @exact !evidence.positive_contribs.empty? && evidence.negative_contribs.empty? else !evidence.positive_contribs.empty? end end end class TransitionTag def initialize(by = nil, at = nil) self.by = by self.at = at end # NOTE: This value is generated by `by' points to AST nodes. attr_reader :by def by=(by) @by = by ? by.dup.compact.uniq : [] end # NOTE: This value is generated in `at' points to branch trees. attr_reader :at def at=(at) @at = at ? at.dup.compact.uniq : [] end def traceable? !@by.empty? end def merge!(tag) if tag if at == tag.at self.by = tag.by + by self.at = tag.at + at else self.by = tag.by self.at = tag.at end end end def pretty_print(pp) { by: @by.map(&:location), at: @at.map { |br| br.ctrlexpr.to_expr }.compact.map(&:location) }.pretty_print(pp) end end class ValueTransition include Enumerable Snapshot = Struct.new(:value, :tag) private_constant :Snapshot def initialize(mval) @ordered_snapshots = create_ordered_snapshots(mval) end def first @ordered_snapshots.first end def last @ordered_snapshots.last end def each(&block) if block_given? @ordered_snapshots.each(&block) else to_enum(:each) end end private def create_ordered_snapshots(mval) if mval.ancestor older = create_ordered_snapshots(mval.ancestor) else older = [] end older.push(Snapshot.new(mval._base.value, mval._base.tag)) end end class MultipleValue < Value Base = Struct.new(:value, :tag) private_constant :Base def initialize(val, ancestor, tag) @base = Base.new(val.to_single_value, tag) @ancestor = ancestor @descendants = [] end attr_reader :ancestor def scalar? _base.value.scalar? end def array? _base.value.array? end def composite? _base.value.composite? end def undefined? effective_values.all? { |mval| mval._base.value.undefined? } end def ambiguous? effective_values.all? { |mval| mval._base.value.ambiguous? } end def exist? effective_values.any? { |mval| mval._base.value.exist? } end def definite? effective_values.all? { |mval| mval._base.value.definite? } end def contain?(val) sval = val.to_single_value effective_values.any? { |mval| mval._base.value.contain?(sval) } end def multiple? true end def overwrite!(val, tag) sval = val.to_single_value effective_values.each do |mval| mval._base.value.overwrite!(sval, nil) mval._base.tag.merge!(tag) end end def narrow_domain!(op, ope_val) ope_sval = ope_val.to_single_value effective_values.each do |mval| if anc = mval.ancestor anc._base.value.narrow_domain!(op.for_complement, ope_sval) end mval._base.value.narrow_domain!(op, ope_sval) end end def widen_domain!(op, ope_val) ope_sval = ope_val.to_single_value effective_values.each do |mval| # NOTE: Value domain widening is used to widen the controlling # variables's value only when the interpreter simulates an # iteration statement. # So, domain complementing is unnecessary for this purpose. # # if anc = mval.ancestor # anc._base.value.narrow_domain!(op.for_complement, ope_sval) # end mval._base.value.widen_domain!(op, ope_sval) # NOTE: No code is corresponding to the controlling variable's value # widenning. mval._base.tag.by = nil mval._base.tag.at = nil end end def invert_domain! effective_values.each do |mval| mval._base.value.invert_domain! end end def single_value_unified_with(rhs_val) to_single_value.single_value_unified_with(rhs_val) end def fork same_val = @descendants.find { |desc| desc.eql?(_base.value) } if same_val same_val._base.tag.by = _base.tag.by + same_val._base.tag.by same_val._base.tag.at = _base.tag.at + same_val._base.tag.at same_val else MultipleValue.new(_base.value.dup, self, _base.tag.dup).tap do |desc| @descendants.push(desc) end end end def rollback! @descendants.pop end def delete_descendants! @descendants.clear end def ~ ~to_single_value end def +@ +to_single_value end def -@ -to_single_value end def +(rhs_val) to_single_value + rhs_val.to_single_value end def -(rhs_val) to_single_value - rhs_val.to_single_value end def *(rhs_val) to_single_value * rhs_val.to_single_value end def /(rhs_val) to_single_value / rhs_val.to_single_value end def %(rhs_val) to_single_value % rhs_val.to_single_value end def &(rhs_val) to_single_value & rhs_val.to_single_value end def |(rhs_val) to_single_value | rhs_val.to_single_value end def ^(rhs_val) to_single_value ^ rhs_val.to_single_value end def <<(rhs_val) to_single_value << rhs_val.to_single_value end def >>(rhs_val) to_single_value >> rhs_val.to_single_value end def ! !to_single_value end def <(rhs_val) to_single_value < rhs_val.to_single_value end def >(rhs_val) to_single_value > rhs_val.to_single_value end def ==(rhs_val) to_single_value == rhs_val.to_single_value end def !=(rhs_val) to_single_value != rhs_val.to_single_value end def <=(rhs_val) to_single_value <= rhs_val.to_single_value end def >=(rhs_val) to_single_value >= rhs_val.to_single_value end def logical_and(rhs_val) to_single_value.logical_and(rhs_val.to_single_value) end def logical_or(rhs_val) to_single_value.logical_or(rhs_val.to_single_value) end def test_must_be_undefined evid = UndefinableTestEvidence.new(true) effective_values.each do |mval| if mval._base.value.test_must_be_undefined.true? evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, true) end def test_may_be_undefined evid = UndefinableTestEvidence.new(false) effective_values.each do |mval| if mval._base.value.test_may_be_undefined.true? evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, false) end def test_must_be_equal_to(val) sval = val.to_single_value non_nil_vals = effective_values.select { |mval| mval._base.value.exist? } if non_nil_vals.empty? TrivialValueTest.new(false) else pred = lambda { |v| v.test_must_be_equal_to(sval).true? } evid = DefinableTestEvidence.new(pred, true) non_nil_vals.each do |mval| if pred.call(mval._base.value) evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, true) end end def test_may_be_equal_to(val) sval = val.to_single_value pred = lambda { |v| v.test_may_be_equal_to(sval).true? } evid = DefinableTestEvidence.new(pred, false) effective_values.each do |mval| if pred.call(mval._base.value) evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, false) end def test_must_not_be_equal_to(val) sval = val.to_single_value non_nil_vals = effective_values.select { |mval| mval._base.value.exist? } if non_nil_vals.empty? TrivialValueTest.new(false) else pred = lambda { |v| v.test_must_not_be_equal_to(sval).true? } evid = DefinableTestEvidence.new(pred, true) non_nil_vals.each do |mval| if pred.call(mval._base.value) evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, true) end end def test_may_not_be_equal_to(val) sval = val.to_single_value pred = lambda { |v| v.test_may_not_be_equal_to(sval).true? } evid = DefinableTestEvidence.new(pred, false) effective_values.each do |mval| if pred.call(mval._base.value) evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, false) end def test_must_be_less_than(val) sval = val.to_single_value non_nil_vals = effective_values.select { |mval| mval._base.value.exist? } if non_nil_vals.empty? TrivialValueTest.new(false) else pred = lambda { |v| v.test_must_be_less_than(sval).true? } evid = DefinableTestEvidence.new(pred, true) non_nil_vals.each do |mval| if pred.call(mval._base.value) evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, true) end end def test_may_be_less_than(val) sval = val.to_single_value pred = lambda { |v| v.test_may_be_less_than(sval).true? } evid = DefinableTestEvidence.new(pred, false) effective_values.each do |mval| if pred.call(mval._base.value) evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, false) end def test_must_be_greater_than(val) sval = val.to_single_value non_nil_vals = effective_values.select { |mval| mval._base.value.exist? } if non_nil_vals.empty? TrivialValueTest.new(false) else pred = lambda { |v| v.test_must_be_greater_than(sval).true? } evid = DefinableTestEvidence.new(pred, true) non_nil_vals.each do |mval| if pred.call(mval._base.value) evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, true) end end def test_may_be_greater_than(val) sval = val.to_single_value pred = lambda { |v| v.test_may_be_greater_than(sval).true? } evid = DefinableTestEvidence.new(pred, false) effective_values.any? do |mval| if pred.call(mval._base.value) evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, false) end def test_must_be_null non_nil_vals = effective_values.select { |mval| mval._base.value.exist? } if non_nil_vals.empty? TrivialValueTest.new(false) else evid = NullabilityTestEvidence.new(true) non_nil_vals.each do |mval| if mval._base.value.test_must_be_null.true? evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, true) end end def test_may_be_null evid = NullabilityTestEvidence.new(false) effective_values.each do |mval| if mval._base.value.test_may_be_null.true? evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, false) end def test_must_be_true non_nil_vals = effective_values.select { |mval| mval._base.value.exist? } if non_nil_vals.empty? TrivialValueTest.new(false) else pred = lambda { |val| val.test_must_be_true.true? } evid = DefinableTestEvidence.new(pred, true) non_nil_vals.each do |mval| if pred.call(mval._base.value) evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, true) end end def test_may_be_true pred = lambda { |val| val.test_may_be_true.true? } evid = DefinableTestEvidence.new(pred, false) effective_values.each do |mval| if pred.call(mval._base.value) evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, false) end def test_must_be_false non_nil_vals = effective_values.select { |mval| mval._base.value.exist? } if non_nil_vals.empty? TrivialValueTest.new(false) else pred = lambda { |val| val.test_must_be_false.true? } evid = DefinableTestEvidence.new(pred, true) non_nil_vals.each do |mval| if pred.call(mval._base.value) evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, true) end end def test_may_be_false pred = lambda { |val| val.test_may_be_false.true? } evid = DefinableTestEvidence.new(pred, false) effective_values.each do |mval| if pred.call(mval._base.value) evid.add_positive_contributor(mval) else evid.add_negative_contributor(mval) end break if evid.fulfilled? end NontrivialValueTest.new(evid, false) end def transition ValueTransition.new(self) end def coerce_to(type) sval = to_single_value.coerce_to(type) MultipleValue.new(sval, nil, _base.tag.dup) end def to_enum to_single_value.to_enum end def to_single_value # NOTE: The _base.value of the MultipleValue object must be a # SingleValue. effective_values.map { |mval| mval._base.value }.reduce { |unified, sval| unified.single_value_unified_with(sval) } end def to_defined_value to_single_value.to_defined_value end def eql?(rhs_val) to_single_value.eql?(rhs_val.to_single_value) end def hash to_single_value.hash end def dup MultipleValue.new(to_single_value.dup, nil, _base.tag.dup) end def effective_values @descendants.empty? ? [self] : @descendants end def descendants if @descendants.empty? [self] else @descendants.map { |mval| mval.descendants }.flatten end end def _base # NOTE: This method will be invoked only from this file. @base end end class VersionedValue < MultipleValue def initialize(orig_val, tag) # NOTE: `orig_val.to_single_value' will be done in # MultipleValue#initialize. super(orig_val, nil, tag) @version_controller = ValueVersionController.new(self) end def enter_versioning_group @version_controller.enter_new_versioning_group end def leave_versioning_group(raise_complement) @version_controller.copy_current_version if raise_complement @version_controller.merge_forked_versions @version_controller.leave_current_versioning_group invalidate_memo! end def begin_versioning @version_controller.begin_forking end def end_versioning @version_controller.end_forking invalidate_memo! end def thin_latest_version!(with_rollback) @version_controller.thin_current_version(with_rollback) invalidate_memo! end def rollback_all_versions! delete_descendants! orig_val = @version_controller.original_value @version_controller = nil _orig_overwrite!(orig_val, TransitionTag.new) @version_controller = ValueVersionController.new(self) invalidate_memo! end alias :_orig_overwrite! :overwrite! def overwrite!(val, tag) @version_controller.fork_current_version super @version_controller.mark_current_versioning_group_as_sticky invalidate_memo! end def force_overwrite!(val) # NOTE: This method will be invoked only from VariableTable#define. sval = val.to_single_value @version_controller.original_value.overwrite!(sval, nil) _orig_overwrite!(sval, nil) invalidate_memo! end def narrow_domain!(op, ope_val) @version_controller.fork_current_version super invalidate_memo! end def widen_domain!(op, ope_val) @version_controller.fork_current_version super @version_controller.mark_current_versioning_group_as_sticky invalidate_memo! end def invert_domain! @version_controller.fork_current_version super invalidate_memo! end def coerce_to(type) VersionedValue.new(to_single_value.coerce_to(type), _base.tag.dup) end def effective_values @version_controller ? @version_controller.current_values : [self] end memoize :to_single_value def invalidate_memo! forget_memo_of__to_single_value end private def compact_descendants! @descendants = @version_controller.current_values.reject { |mval| mval.equal?(self) }.uniq end end class ValueVersionController def initialize(orig_val) @versioning_group_stack = [RootVersioningGroup.new(orig_val)] end def original_value root_versioning_group.initial_values.first end def current_values current_versioning_group.current_values end def enter_new_versioning_group new_group = VersioningGroup.new(current_versioning_group.current_version) @versioning_group_stack.push(new_group) end def leave_current_versioning_group @versioning_group_stack.pop end def begin_forking current_versioning_group.begin_new_version end def end_forking current_versioning_group.end_current_version end def fork_current_version fork_all_versions end def thin_current_version(with_rollback) # NOTE: This method must be called in the forking section. forked = current_version.forked? if with_rollback initial_vals = current_version.initial_values current_versioning_group.delete_current_version_completely base_vals = current_versioning_group.base_values base_vals.zip(initial_vals).each do |mval, init_val| mval.rollback! if forked mval.overwrite!(init_val, TransitionTag.new) if init_val end begin_forking else current_versioning_group.delete_current_version if forked current_versioning_group.base_values.each { |mval| mval.rollback! } end end mark_current_versioning_group_as_sticky end def mark_current_versioning_group_as_sticky @versioning_group_stack.reverse_each do |group| if group.sticky? break else group.sticky = true end end end def copy_current_version # NOTE: This method must be called between ending of the forking section # and ending of the versioning group. if current_versioning_group.sticky? current_values.each { |mval| mval.fork } end end def merge_forked_versions # NOTE: This method must be called between ending of the forking section # and ending of the versioning group. base_ver = current_versioning_group.base_version case when current_versioning_group.sticky? fork_all_versions base_vals = base_ver.values.map { |mval| mval.descendants }.flatten base_ver.values = base_vals.each_with_object({}) { |mval, hash| if eql_mval = hash[mval] eql_mval._base.tag.by = mval._base.tag.by + eql_mval._base.tag.by eql_mval._base.tag.at = mval._base.tag.at + eql_mval._base.tag.at else hash[mval] = mval end }.keys when current_versioning_group.versions_forked? # NOTE: When versions in the current versioning group have been forked, # base_version of the current versioning group has already been # forked. So, it is safe to overwrite the base_version's values # with the current versioning group's initial snapshot values. init_vals = current_versioning_group.initial_values vals = base_ver.values.zip(init_vals) vals.each do |base_mval, init_sval| base_mval.delete_descendants! if base_mval.kind_of?(VersionedValue) base_mval._orig_overwrite!(init_sval, TransitionTag.new) else base_mval.overwrite!(init_sval, TransitionTag.new) end end else # NOTE: Nothing to be done when base_version of the current versioning # group has not been forked. end end private def fork_all_versions parent_group = root_versioning_group active_versioning_groups.each do |active_group| active_group.base_version = parent_group.current_version active_group.fork_all_versions parent_group = active_group end end def root_versioning_group @versioning_group_stack.first end def active_versioning_groups @versioning_group_stack.drop(1) end def current_versioning_group @versioning_group_stack.last end def current_version current_versioning_group.current_version end class VersioningGroup def initialize(base_ver, sticky = false) @base_version = base_ver @sticky = sticky @initial_values = base_ver.values.map { |mval| mval._base.value.dup } @current_version = nil @all_versions = [] end attr_accessor :base_version attr_writer :sticky attr_reader :initial_values def sticky? @sticky end def versions_forked? @all_versions.any? { |ver| ver.forked? } end def base_values @base_version.values end def current_version @current_version || @base_version end def current_values current_version.values end def begin_new_version @current_version = Version.new(base_values) @all_versions.push(@current_version) end def end_current_version @current_version = nil end def delete_current_version_completely end_current_version delete_current_version end def delete_current_version @all_versions.pop end def fork_all_versions @all_versions.each { |ver| ver.fork_from(@base_version) } end end private_constant :VersioningGroup class RootVersioningGroup < VersioningGroup def initialize(orig_val) super(Version.new([orig_val], true), true) end end private_constant :RootVersioningGroup class Version def initialize(vals, original = false) @values = vals @initial_values = [] @state = original ? :original : :forking end attr_accessor :values attr_reader :initial_values def original? @state == :original end def forking? @state == :forking end def forked? @state == :forked end def fork_from(base_ver) if forking? @values = base_ver.values.map { |mval| mval.fork } @initial_values = @values.each_with_object([]) { |val, ary| ary.push(val.to_single_value.dup) } @state = :forked end end end private_constant :Version end end end adlint-3.2.14/lib/adlint/cc1/parser.rb0000644000004100000410000034017412340630463017426 0ustar www-datawww-data# # DO NOT MODIFY!!!! # This file is automatically generated by Racc 1.4.11 # from Racc grammer file "". # require 'racc/parser.rb' require "adlint/error" require "adlint/symbol" require "adlint/monitor" require "adlint/util" require "adlint/cc1/lexer" require "adlint/cc1/syntax" module AdLint module Cc1 class Parser < Racc::Parser module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1856) include ReportUtil include MonitorUtil def initialize(phase_ctxt) @phase_ctxt = phase_ctxt @lexer = create_lexer(phase_ctxt[:cc1_source]) @sym_tbl = phase_ctxt[:symbol_table] @token_array = [] @anon_tag_no = 0 end attr_reader :token_array def execute do_parse end extend Pluggable def_plugin :on_string_literals_concatenated private def create_lexer(pp_src) Lexer.new(pp_src).tap { |lexer| attach_lexer_plugin(lexer) } end def attach_lexer_plugin(lexer) lexer.on_string_literals_concatenated += lambda { |*args| on_string_literals_concatenated.invoke(*args) } end def next_token if tok = @lexer.next_token @token_array.push(tok) [tok.type, tok] else nil end end def on_error(err_tok, err_val, *) if fst_tok = @token_array[-2] and snd_tok = @token_array[-1] E(:E0008, loc_of(fst_tok), "#{val_of(fst_tok)} #{val_of(snd_tok)}") raise ParseError.new(loc_of(fst_tok), @phase_ctxt.msg_fpath, @phase_ctxt.log_fpath) else E(:E0008, loc_of(err_val), val_of(err_val)) raise ParseError.new(loc_of(err_val), @phase_ctxt.msg_fpath, @phase_ctxt.log_fpath) end end def loc_of(val) val == "$" ? Location.new : val.location end def val_of(tok) tok == "$" ? "EOF" : tok.value end def create_anon_tag_name(base_tok) Token.new(:IDENTIFIER, "__adlint__anon_#{@anon_tag_no += 1}", base_tok.location) end extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def_delegator :@phase_ctxt, :monitor private :monitor # vim:ft=racc:sw=2:ts=2:sts=2:et: ...end parser.y/module_eval... ##### State transition tables begin ### clist = [ '2,43,43,30,43,43,43,13,14,15,16,17,40,39,19,20,21,22,25,26,23,24,37', '38,18,27,28,29,34,35,36,141,142,339,336,380,217,336,85,86,96,43,284', '204,33,44,44,66,44,44,371,350,253,141,142,71,68,45,45,43,45,45,45,400', '152,228,229,236,58,237,238,239,240,241,242,243,244,87,284,97,88,262', '58,357,417,44,91,92,61,341,6,93,94,98,99,100,101,102,-232,67,284,39', '79,371,39,253,361,70,69,151,37,38,326,37,38,403,57,356,284,284,43,30', '386,275,235,13,14,15,16,17,40,39,19,20,21,22,25,26,23,24,37,38,18,27', '28,29,34,35,36,45,430,39,434,405,217,336,85,86,96,284,37,38,33,381,44', '252,350,253,215,452,216,453,382,281,319,320,45,45,284,348,284,347,282', '228,229,236,-233,237,238,239,240,241,242,243,244,87,45,97,88,322,197', '198,199,200,91,92,61,325,50,93,94,98,99,100,101,102,217,336,85,86,96', '178,180,181,182,183,184,185,186,187,188,189,455,396,283,428,74,409,73', '429,411,284,235,284,284,228,229,236,284,237,238,239,240,241,242,243', '244,87,190,97,88,195,196,190,191,192,91,92,61,191,192,93,94,98,99,100', '101,102,217,336,85,86,96,162,328,161,190,163,164,165,166,268,191,192', '197,198,199,200,197,198,199,200,414,74,235,73,374,228,229,236,130,237', '238,239,240,241,242,243,244,87,246,97,88,252,348,253,347,418,91,92,61', '201,202,93,94,98,99,100,101,102,217,336,85,86,96,293,291,294,292,141', '142,439,440,193,194,193,194,193,194,195,196,195,196,195,196,419,235', '201,202,228,229,236,245,237,238,239,240,241,242,243,244,87,394,97,88', '207,208,266,267,206,91,92,61,141,142,93,94,98,99,100,101,102,217,336', '85,86,96,195,196,364,365,205,367,378,378,378,203,285,286,390,375,330', '333,431,206,358,334,205,235,436,335,228,229,236,438,237,238,239,240', '241,242,243,244,87,204,97,88,385,384,60,153,135,91,92,61,383,449,93', '94,98,99,100,101,102,217,336,85,86,96,143,451,376,119,65,343,203,342', '458,49,338,,,,,,84,,85,86,96,235,,,228,229,236,,237,238,239,240,241', '242,243,244,87,,97,88,,,,,,91,92,61,,,93,94,98,99,100,101,102,87,,97', '88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,235,,,,,,,,,,', ',,,,,,,,,,235,,,,,,,,217,336,85,86,96,,,87,,97,88,,,,,,91,92,,,,93,94', '98,99,100,101,102,,228,229,236,,237,238,239,240,241,242,243,244,87,', '97,88,,,,,,91,92,61,,235,93,94,98,99,100,101,102,,,,,,,,,,,,,,,,,,,', ',,,,30,,,235,13,14,15,16,17,40,39,19,20,21,22,25,26,23,24,37,38,18,27', '28,29,34,35,36,,,,,,,,,,,,,,33,84,30,85,86,96,13,14,15,16,17,40,39,19', '20,21,22,25,26,23,24,37,38,18,27,28,29,34,35,36,,,,,,217,336,85,86,96', ',,87,33,97,88,,420,,,,91,92,,,,93,94,98,99,100,101,102,,228,229,236', ',237,238,239,240,241,242,243,244,87,,97,88,,,,,,91,92,61,,235,93,94', '98,99,100,101,102,217,336,85,86,96,,,,,,,,,,,,,,,,,,,,,,235,,,228,229', '236,,237,238,239,240,241,242,243,244,87,,97,88,,,,,,91,92,61,,,93,94', '98,99,100,101,102,,,,,,,,,,,,,84,,85,86,96,,,,,,43,30,,,235,13,14,15', '16,17,40,39,19,20,21,22,25,26,23,24,37,38,18,27,28,29,34,35,36,,,87', ',97,88,,,,,,91,92,33,,44,93,94,98,99,100,101,102,,,,,45,,,,217,336,85', '86,96,,,,,,,,,,,,,,345,,,84,,85,86,96,,,50,228,229,236,,237,238,239', '240,241,242,243,244,87,,97,88,,,,,,91,92,61,,,93,94,98,99,100,101,102', '87,,97,88,288,,,,,91,92,,,,93,94,98,99,100,101,102,,,,,,235,217,220', '85,86,96,13,14,15,16,17,40,39,19,20,21,22,25,26,23,24,37,38,18,27,28', '29,34,35,36,228,229,236,,237,238,239,240,241,242,243,244,87,33,97,88', ',,,,,91,92,61,,,93,94,98,99,100,101,102,,,,,,,,,,,,,,,,,,,,,,,43,30', ',,235,13,14,15,16,17,40,39,19,20,21,22,25,26,23,24,37,38,18,27,28,29', '34,35,36,,,,,,,,,,,,,,33,,44,,,43,30,84,,85,86,96,,,45,,39,19,20,21', '22,25,26,23,24,37,38,18,27,28,29,34,35,36,,,,,,,,,,,,,50,33,87,44,97', '88,446,,,,,91,92,,,45,93,94,98,99,100,101,102,,,,,,,,,,,,,262,,,,,,', ',,,,,258,217,220,85,86,96,13,14,15,16,17,40,39,19,20,21,22,25,26,23', '24,37,38,18,27,28,29,34,35,36,228,229,236,,237,238,239,240,241,242,243', '244,87,33,97,88,,,,,,91,92,61,,,93,94,98,99,100,101,102,217,336,85,86', '96,,,,,,,,,,,,,,,,,84,,85,86,96,235,,,228,229,236,,237,238,239,240,241', '242,243,244,87,,97,88,,,,,,91,92,61,,,93,94,98,99,100,101,102,87,,97', '88,,,,,,91,92,,,,93,94,98,99,100,101,102,,,30,,,235,13,14,15,16,17,40', '39,19,20,21,22,25,26,23,24,37,38,18,27,28,29,34,35,36,,,,,,,,,,,,,,33', ',,,,,,30,,,61,13,14,15,16,17,40,39,19,20,21,22,25,26,23,24,37,38,18', '27,28,29,34,35,36,60,,,,,,,,84,,85,86,96,33,,,,,,,30,,,61,13,14,15,16', '17,40,39,19,20,21,22,25,26,23,24,37,38,18,27,28,29,34,35,36,60,87,,97', '88,,,353,,,91,92,,33,,93,352,98,99,100,101,102,84,61,85,86,96,,,,,,', ',,,,,,,,,,84,,85,86,96,60,,,,,,,,,,,,,,,87,,97,88,,,,,,91,92,,,,93,94', '98,99,100,101,102,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84', '30,85,86,96,,,,,,,39,19,20,21,22,25,26,23,24,37,38,18,27,28,29,34,35', '36,84,,85,86,96,,,,,,,,87,33,97,88,,,,,,91,92,61,,,93,94,98,99,100,101', '102,84,,85,86,96,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102', '84,,85,86,96,,,,,,,,87,,97,167,,,,,,91,92,,,,93,94,98,99,100,101,102', '84,,85,86,96,,,,87,,97,167,,,,,,91,92,,,,93,94,98,99,100,101,102,84', ',85,86,96,,,,,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84', ',85,86,96,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85', '86,96,,,,,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85', '86,96,,,,87,,97,173,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86', '96,,,,,,,,87,,97,175,,,,,,91,92,,,,93,94,98,99,100,101,102,,,,,,,,,87', ',97,167,,,,,,91,92,,,,93,94,98,99,100,101,102,84,30,85,86,96,,,,,,,39', '19,20,21,22,25,26,23,24,37,38,18,27,28,29,34,35,36,84,,85,86,96,,,,', ',,,87,33,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,', ',87,,97,88,,,435,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,', ',,,,87,,97,88,,,366,,,91,92,,,,93,94,98,99,100,101,102,,84,,85,86,96', ',,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,,,', ',39,,87,,97,88,,,,37,38,91,92,118,,,93,94,98,99,100,101,102,84,,85,86', '96,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,', ',,,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,', ',87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,,,,', ',,87,,97,88,,215,,216,,91,92,118,,,93,94,98,99,100,101,102,84,,85,86', '96,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,', ',,,,,,87,,97,88,,,,,,91,92,118,,,93,94,98,99,100,101,102,84,,85,86,96', ',,87,,97,88,,215,,216,,91,92,118,209,,93,94,98,99,100,101,102,84,,85', '86,96,,,,,,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85', '86,96,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96', ',,,,,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96', ',,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,,,', ',,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,87', ',97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,,,,,,,87', ',97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,87,,97,88', ',,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,,,,,,,87,,97,88', ',,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,87,,97,88,448,', ',,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,,,,,,,87,,97,88,', ',413,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,87,,97,88,,,407', ',,91,92,,,,93,406,98,99,100,101,102,84,,85,86,96,,,274,,,,39,,87,,97', '88,,,270,37,38,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,87,,97', '88,,,273,,,91,92,,,,93,271,98,99,100,101,102,84,,85,86,96,,,,,,,,,87', ',97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,87,,97,88', ',,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,,,,,,,87,,97,88', ',,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,87,,97,88,,,,,', '91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,,,,,,,87,,97,88,,215', ',216,,91,92,118,450,,93,94,98,99,100,101,102,84,,85,86,96,,,87,,97,88', ',,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,,,,,,,,,87,,97,88', ',,,,,91,92,118,,,93,94,98,99,100,101,102,,,,,,,,87,,97,88,,,,,,91,92', ',,,93,94,98,99,100,101,102,84,,85,86,96,,,147,,,,39,,,,,,,,,37,38,84', ',85,86,96,,,,,,,,,,,,,,,87,,97,88,,,148,,,91,92,,,,93,144,98,99,100', '101,102,,87,,97,88,,215,,216,,91,92,118,387,,93,94,98,99,100,101,102', '84,30,85,86,96,,,,,,,39,19,20,21,22,25,26,23,24,37,38,18,27,28,29,34', '35,36,,,,,,,,,,,,,87,33,97,88,,,,,,91,92,378,132,,93,94,98,99,100,101', '102,84,30,85,86,96,,,,,,,39,19,20,21,22,25,26,23,24,37,38,18,27,28,29', '34,35,36,,,,,,,,,,,,,87,33,97,88,,,,,,91,92,61,,,93,94,98,99,100,101', '102,84,30,85,86,96,,,,,,,39,19,20,21,22,25,26,23,24,37,38,18,27,28,29', '34,35,36,,,,,,,,,,,,,87,33,97,88,,,,,,91,92,61,,,93,94,98,99,100,101', '102,84,30,85,86,96,,,,,,,39,19,20,21,22,25,26,23,24,37,38,18,27,28,29', '34,35,36,84,,85,86,96,,,,,,,,87,33,97,88,,,,,,91,92,61,,,93,94,98,99', '100,101,102,84,,85,86,96,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100', '101,102,84,,85,86,96,,,,,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100', '101,102,84,,85,86,96,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101', '102,84,,85,86,96,,,,,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101', '102,84,,85,86,96,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102', '84,,85,86,96,,,,,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102', '84,,85,86,96,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,', '85,86,96,,,,,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,', '85,86,96,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86', '96,,,,,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86', '96,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,84,,85,86,96,', ',,,,,,87,,97,88,,,,,,91,92,,,,93,94,98,99,100,101,102,,,,,,,,,87,,97', '88,,,,,,91,92,,,,93,94,98,99,100,101,102,43,30,,,,13,14,15,16,17,40', '39,19,20,21,22,25,26,23,24,37,38,18,27,28,29,34,35,36,,,,,,,,,,,,,,33', ',371,,253,30,,,,,,,,,45,39,19,20,21,22,25,26,23,24,37,38,18,27,28,29', '34,35,36,,,,,,,,,,,,,,33,,252,,253,30,,,,,,,,,45,39,19,20,21,22,25,26', '23,24,37,38,18,27,28,29,34,35,36,,,,,,,,,,,,,,33,,30,,,,,,,,,255,39', '19,20,21,22,25,26,23,24,37,38,18,27,28,29,34,35,36,,,,,,,,,,,,,,33,', '30,,,,,,,,,256,39,19,20,21,22,25,26,23,24,37,38,18,27,28,29,34,35,36', ',,,,,,,,,,,,,33,,30,,,,,,,,,355,39,19,20,21,22,25,26,23,24,37,38,18', '27,28,29,34,35,36,,,,,,,,,,,,,,33,,30,,,,,,,,,264,39,19,20,21,22,25', '26,23,24,37,38,18,27,28,29,34,35,36,,,,,,,,,,,,,,33,,30,,,,,,,,,265', '39,19,20,21,22,25,26,23,24,37,38,18,27,28,29,34,35,36,,,,,,,,,,,,,,33', ',30,,,,,,,,,360,39,19,20,21,22,25,26,23,24,37,38,18,27,28,29,34,35,36', ',,,,,,,,,,,,,33,,,,,,,,30,,,137,13,14,15,16,17,40,39,19,20,21,22,25', '26,23,24,37,38,18,27,28,29,34,35,36,,,,,,,,,,,,,,33,,,,,,,30,,,61,13', '14,15,16,17,40,39,19,20,21,22,25,26,23,24,37,38,18,27,28,29,34,35,36', ',,,,,,,,,,,,,33,,,,,,,30,,,61,13,14,15,16,17,40,39,19,20,21,22,25,26', '23,24,37,38,18,27,28,29,34,35,36,,,,,,,,,,,,,,33,,,,,,,30,,,61,13,14', '15,16,17,40,39,19,20,21,22,25,26,23,24,37,38,18,27,28,29,34,35,36,,', ',,,,,,,,30,,,33,13,14,15,16,17,40,39,19,20,21,22,25,26,23,24,37,38,18', '27,28,29,34,35,36,,,,,,,,,,,30,,,33,13,14,15,16,17,40,39,19,20,21,22', '25,26,23,24,37,38,18,27,28,29,34,35,36,,,,,,,,,,,,,,33' ] racc_action_table = arr = ::Array.new(4450, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| arr[idx] = i.to_i unless i.empty? idx += 1 end end clist = [ '1,58,1,1,44,357,371,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1', '365,365,241,241,287,453,453,453,453,453,41,287,111,1,58,1,34,44,357', '371,371,371,267,267,36,35,58,1,370,44,357,371,337,74,453,453,453,51', '453,453,453,453,453,453,453,453,453,218,453,453,357,5,259,365,41,453', '453,453,241,1,453,453,453,453,453,453,453,217,34,318,147,51,370,76,370', '267,36,35,74,147,147,218,76,76,340,5,259,404,344,3,3,318,146,453,3,3', '3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,76,399,45,404,344,451,451', '451,451,451,399,45,45,3,289,3,252,252,252,213,444,213,445,289,150,210', '210,3,252,444,251,445,251,150,451,451,451,220,451,451,451,451,451,451', '451,451,451,45,451,451,213,312,312,312,312,451,451,451,216,3,451,451', '451,451,451,451,451,448,448,448,448,448,104,104,104,104,104,104,104', '104,104,104,104,447,331,157,397,72,348,72,398,349,447,451,157,397,448', '448,448,398,448,448,448,448,448,448,448,448,448,303,448,448,309,309', '105,303,303,448,448,448,105,105,448,448,448,448,448,448,448,446,446', '446,446,446,90,227,90,304,90,90,90,90,140,304,304,108,108,108,108,311', '311,311,311,354,42,448,42,278,446,446,446,66,446,446,446,446,446,446', '446,446,446,126,446,446,250,346,250,346,368,446,446,446,313,313,446', '446,446,446,446,446,446,430,430,430,430,430,164,163,164,163,70,70,422', '422,305,305,306,306,106,106,310,310,107,107,307,307,369,446,109,109', '430,430,430,125,430,430,430,430,430,430,430,430,430,329,430,430,114', '114,138,138,113,430,430,430,143,143,430,430,430,430,430,430,430,429', '429,429,429,429,308,308,269,269,112,272,383,384,385,110,158,159,324', '279,229,236,400,317,261,237,316,430,408,238,429,429,429,412,429,429', '429,429,429,429,429,429,429,315,429,429,297,296,83,75,68,429,429,429', '295,437,429,429,429,429,429,429,429,428,428,428,428,428,71,441,282,61', '33,243,314,242,452,2,240,,,,,,402,,402,402,402,429,,,428,428,428,,428', '428,428,428,428,428,428,428,428,,428,428,,,,,,428,428,428,,,428,428', '428,428,428,428,428,402,,402,402,,,,,,402,402,,,,402,402,402,402,402', '402,402,401,,401,401,401,428,,,,,,,,,,,,,,,,,,,,,402,,,,,,,,394,394', '394,394,394,,,401,,401,401,,,,,,401,401,,,,401,401,401,401,401,401,401', ',394,394,394,,394,394,394,394,394,394,394,394,394,,394,394,,,,,,394', '394,394,,401,394,394,394,394,394,394,394,,,,,,,,,,,,,,,,,,,,,,,,375', ',,394,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375', '375,375,375,375,375,375,375,375,,,,,,,,,,,,,,375,338,338,338,338,338', '338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338', '338,338,338,338,338,338,338,,,,,,330,330,330,330,330,,,338,338,338,338', ',375,,,,338,338,,,,338,338,338,338,338,338,338,,330,330,330,,330,330', '330,330,330,330,330,330,330,,330,330,,,,,,330,330,330,,338,330,330,330', '330,330,330,330,328,328,328,328,328,,,,,,,,,,,,,,,,,,,,,,330,,,328,328', '328,,328,328,328,328,328,328,328,328,328,,328,328,,,,,,328,328,328,', ',328,328,328,328,328,328,328,,,,,,,,,,,,,244,,244,244,244,,,,,,59,59', ',,328,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59', '59,59,59,,,244,,244,244,,,,,,244,244,59,,59,244,244,244,244,244,244', '244,,,,,59,,,,239,239,239,239,239,,,,,,,,,,,,,,244,,,162,,162,162,162', ',,59,239,239,239,,239,239,239,239,239,239,239,239,239,,239,239,,,,,', '239,239,239,,,239,239,239,239,239,239,239,162,,162,162,162,,,,,162,162', ',,,162,162,162,162,162,162,162,,,,,,239,230,230,230,230,230,230,230', '230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230', '230,230,230,230,230,230,230,230,,230,230,230,230,230,230,230,230,230', '230,230,230,,,,,,230,230,230,,,230,230,230,230,230,230,230,,,,,,,,,', ',,,,,,,,,,,,,219,219,,,230,219,219,219,219,219,219,219,219,219,219,219', '219,219,219,219,219,219,219,219,219,219,219,219,219,,,,,,,,,,,,,,219', ',219,,,134,134,432,,432,432,432,,,219,,134,134,134,134,134,134,134,134', '134,134,134,134,134,134,134,134,134,134,,,,,,,,,,,,,219,134,432,134', '432,432,432,,,,,432,432,,,134,432,432,432,432,432,432,432,,,,,,,,,,', ',,134,,,,,,,,,,,,134,120,120,120,120,120,120,120,120,120,120,120,120', '120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120', '120,120,120,,120,120,120,120,120,120,120,120,120,120,120,120,,,,,,120', '120,120,,,120,120,120,120,120,120,120,455,455,455,455,455,,,,,,,,,,', ',,,,,,431,,431,431,431,120,,,455,455,455,,455,455,455,455,455,455,455', '455,455,,455,455,,,,,,455,455,455,,,455,455,455,455,455,455,455,431', ',431,431,,,,,,431,431,,,,431,431,431,431,431,431,431,,,12,,,455,12,12', '12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,,', ',,,,,,,,,,,12,,,,,,,327,,,12,327,327,327,327,327,327,327,327,327,327', '327,327,327,327,327,327,327,327,327,327,327,327,327,327,12,,,,,,,,253', ',253,253,253,327,,,,,,,56,,,327,56,56,56,56,56,56,56,56,56,56,56,56', '56,56,56,56,56,56,56,56,56,56,56,56,327,253,,253,253,,,253,,,253,253', ',56,,253,253,253,253,253,253,253,262,56,262,262,262,,,,,,,,,,,,,,,,', '228,,228,228,228,56,,,,,,,,,,,,,,,262,,262,262,,,,,,262,262,,,,262,262', '262,262,262,262,262,228,,228,228,,,,,,228,228,,,,228,228,228,228,228', '228,228,88,88,88,88,88,,,,,,,88,88,88,88,88,88,88,88,88,88,88,88,88', '88,88,88,88,88,268,,268,268,268,,,,,,,,88,88,88,88,,,,,,88,88,88,,,88', '88,88,88,88,88,88,91,,91,91,91,,,,268,,268,268,,,,,,268,268,,,,268,268', '268,268,268,268,268,92,,92,92,92,,,,,,,,91,,91,91,,,,,,91,91,,,,91,91', '91,91,91,91,91,93,,93,93,93,,,,92,,92,92,,,,,,92,92,,,,92,92,92,92,92', '92,92,94,,94,94,94,,,,,,,,93,,93,93,,,,,,93,93,,,,93,93,93,93,93,93', '93,95,,95,95,95,,,,94,,94,94,,,,,,94,94,,,,94,94,94,94,94,94,94,96,', '96,96,96,,,,,,,,95,,95,95,,,,,,95,95,,,,95,95,95,95,95,95,95,97,,97', '97,97,,,,96,,96,96,,,,,,96,96,,,,96,96,96,96,96,96,96,98,,98,98,98,', ',,,,,,97,,97,97,,,,,,97,97,,,,97,97,97,97,97,97,97,,,,,,,,,98,,98,98', ',,,,,98,98,,,,98,98,98,98,98,98,98,65,65,65,65,65,,,,,,,65,65,65,65', '65,65,65,65,65,65,65,65,65,65,65,65,65,65,406,,406,406,406,,,,,,,,65', '65,65,65,,,,,,65,65,,,,65,65,65,65,65,65,65,271,,271,271,271,,,,406', ',406,406,,,406,,,406,406,,,,406,406,406,406,406,406,406,274,,274,274', '274,,,,,,,,271,,271,271,,,271,,,271,271,,,,271,271,271,271,271,271,271', ',389,,389,389,389,,,274,,274,274,,,,,,274,274,,,,274,274,274,274,274', '274,274,276,,276,276,276,,,,,,,276,,389,,389,389,,,,276,276,389,389', '389,,,389,389,389,389,389,389,389,386,,386,386,386,,,276,,276,276,,', ',,,276,276,,,,276,276,276,276,276,276,276,382,,382,382,382,,,,,,,,,386', ',386,386,,,,,,386,386,,,,386,386,386,386,386,386,386,378,,378,378,378', ',,382,,382,382,,,,,,382,382,,,,382,382,382,382,382,382,382,215,,215', '215,215,,,,,,,,,378,,378,378,,378,,378,,378,378,378,,,378,378,378,378', '378,378,378,212,,212,212,212,,,215,,215,215,,,,,,215,215,,,,215,215', '215,215,215,215,215,118,,118,118,118,,,,,,,,,212,,212,212,,,,,,212,212', '212,,,212,212,212,212,212,212,212,284,,284,284,284,,,118,,118,118,,118', ',118,,118,118,118,118,,118,118,118,118,118,118,118,208,,208,208,208', ',,,,,,,,284,,284,284,,,,,,284,284,,,,284,284,284,284,284,284,284,207', ',207,207,207,,,208,,208,208,,,,,,208,208,,,,208,208,208,208,208,208', '208,206,,206,206,206,,,,,,,,,207,,207,207,,,,,,207,207,,,,207,207,207', '207,207,207,207,205,,205,205,205,,,206,,206,206,,,,,,206,206,,,,206', '206,206,206,206,206,206,204,,204,204,204,,,,,,,,,205,,205,205,,,,,,205', '205,,,,205,205,205,205,205,205,205,358,,358,358,358,,,204,,204,204,', ',,,,204,204,,,,204,204,204,204,204,204,204,203,,203,203,203,,,,,,,,', '358,,358,358,,,,,,358,358,,,,358,358,358,358,358,358,358,202,,202,202', '202,,,203,,203,203,,,,,,203,203,,,,203,203,203,203,203,203,203,433,', '433,433,433,,,,,,,,,202,,202,202,,,,,,202,202,,,,202,202,202,202,202', '202,202,352,,352,352,352,,,433,,433,433,433,,,,,433,433,,,,433,433,433', '433,433,433,433,347,,347,347,347,,,,,,,,,352,,352,352,,,352,,,352,352', ',,,352,352,352,352,352,352,352,144,,144,144,144,,,347,,347,347,,,347', ',,347,347,,,,347,347,347,347,347,347,347,145,,145,145,145,,,145,,,,145', ',144,,144,144,,,144,145,145,144,144,,,,144,144,144,144,144,144,144,341', ',341,341,341,,,145,,145,145,,,145,,,145,145,,,,145,145,145,145,145,145', '145,335,,335,335,335,,,,,,,,,341,,341,341,,,,,,341,341,,,,341,341,341', '341,341,341,341,334,,334,334,334,,,335,,335,335,,,,,,335,335,,,,335', '335,335,335,335,335,335,333,,333,333,333,,,,,,,,,334,,334,334,,,,,,334', '334,,,,334,334,334,334,334,334,334,440,,440,440,440,,,333,,333,333,', ',,,,333,333,,,,333,333,333,333,333,333,333,200,,200,200,200,,,,,,,,', '440,,440,440,,440,,440,,440,440,440,440,,440,440,440,440,440,440,440', '60,,60,60,60,,,200,,200,200,,,,,,200,200,,,,200,200,200,200,200,200', '200,161,,161,161,161,,,,,,,,,60,,60,60,,,,,,60,60,60,,,60,60,60,60,60', '60,60,,,,,,,,161,,161,161,,,,,,161,161,,,,161,161,161,161,161,161,161', '73,,73,73,73,,,73,,,,73,,,,,,,,,73,73,320,,320,320,320,,,,,,,,,,,,,', ',73,,73,73,,,73,,,73,73,,,,73,73,73,73,73,73,73,,320,,320,320,,320,', '320,,320,320,320,320,,320,320,320,320,320,320,320,286,67,286,286,286', ',,,,,,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,,,,,,,,', ',,,,286,67,286,286,,,,,,286,286,286,67,,286,286,286,286,286,286,286', '167,167,167,167,167,,,,,,,167,167,167,167,167,167,167,167,167,167,167', '167,167,167,167,167,167,167,,,,,,,,,,,,,167,167,167,167,,,,,,167,167', '167,,,167,167,167,167,167,167,167,173,173,173,173,173,,,,,,,173,173', '173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,,,,', ',,,,,,,,173,173,173,173,,,,,,173,173,173,,,173,173,173,173,173,173,173', '175,175,175,175,175,,,,,,,175,175,175,175,175,175,175,175,175,175,175', '175,175,175,175,175,175,175,178,,178,178,178,,,,,,,,175,175,175,175', ',,,,,175,175,175,,,175,175,175,175,175,175,175,179,,179,179,179,,,,178', ',178,178,,,,,,178,178,,,,178,178,178,178,178,178,178,190,,190,190,190', ',,,,,,,179,,179,179,,,,,,179,179,,,,179,179,179,179,179,179,179,191', ',191,191,191,,,,190,,190,190,,,,,,190,190,,,,190,190,190,190,190,190', '190,192,,192,192,192,,,,,,,,191,,191,191,,,,,,191,191,,,,191,191,191', '191,191,191,191,193,,193,193,193,,,,192,,192,192,,,,,,192,192,,,,192', '192,192,192,192,192,192,194,,194,194,194,,,,,,,,193,,193,193,,,,,,193', '193,,,,193,193,193,193,193,193,193,195,,195,195,195,,,,194,,194,194', ',,,,,194,194,,,,194,194,194,194,194,194,194,196,,196,196,196,,,,,,,', '195,,195,195,,,,,,195,195,,,,195,195,195,195,195,195,195,197,,197,197', '197,,,,196,,196,196,,,,,,196,196,,,,196,196,196,196,196,196,196,198', ',198,198,198,,,,,,,,197,,197,197,,,,,,197,197,,,,197,197,197,197,197', '197,197,199,,199,199,199,,,,198,,198,198,,,,,,198,198,,,,198,198,198', '198,198,198,198,201,,201,201,201,,,,,,,,199,,199,199,,,,,,199,199,,', ',199,199,199,199,199,199,199,,,,,,,,,201,,201,201,,,,,,201,201,,,,201', '201,201,201,201,201,201,277,277,,,,277,277,277,277,277,277,277,277,277', '277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,,,,,,,,', ',,,,,277,,277,,277,127,,,,,,,,,277,127,127,127,127,127,127,127,127,127', '127,127,127,127,127,127,127,127,127,,,,,,,,,,,,,,127,,127,,127,130,', ',,,,,,,127,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130', '130,130,130,,,,,,,,,,,,,,130,,131,,,,,,,,,130,131,131,131,131,131,131', '131,131,131,131,131,131,131,131,131,131,131,131,,,,,,,,,,,,,,131,,254', ',,,,,,,,131,254,254,254,254,254,254,254,254,254,254,254,254,254,254', '254,254,254,254,,,,,,,,,,,,,,254,,135,,,,,,,,,254,135,135,135,135,135', '135,135,135,135,135,135,135,135,135,135,135,135,135,,,,,,,,,,,,,,135', ',136,,,,,,,,,135,136,136,136,136,136,136,136,136,136,136,136,136,136', '136,136,136,136,136,,,,,,,,,,,,,,136,,263,,,,,,,,,136,263,263,263,263', '263,263,263,263,263,263,263,263,263,263,263,263,263,263,,,,,,,,,,,,', ',263,,69,,,,,,,,,263,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69', '69,69,,,,,,,,,,,,,,69,,,,,,,,391,,,69,391,391,391,391,391,391,391,391', '391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,,,,', ',,,,,,,,,391,,,,,,,62,,,391,62,62,62,62,62,62,62,62,62,62,62,62,62,62', '62,62,62,62,62,62,62,62,62,62,,,,,,,,,,,,,,62,,,,,,,80,,,62,80,80,80', '80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,,,,,', ',,,,,,,,80,,,,,,,351,,,80,351,351,351,351,351,351,351,351,351,351,351', '351,351,351,351,351,351,351,351,351,351,351,351,351,,,,,,,,,,,410,,', '351,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410', '410,410,410,410,410,410,410,410,,,,,,,,,,,149,,,410,149,149,149,149', '149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149', '149,149,149,,,,,,,,,,,,,,149' ] racc_action_check = arr = ::Array.new(4450, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| arr[idx] = i.to_i unless i.empty? idx += 1 end end racc_action_pointer = [ nil, 0, 478, 118, nil, 26, nil, nil, nil, nil, nil, nil, 1401, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 427, 45, 54, 53, nil, nil, nil, nil, 39, 257, nil, 2, 138, nil, nil, nil, nil, nil, 12, nil, nil, nil, nil, 1497, nil, -1, 886, 2963, 417, 4233, nil, nil, 1970, 256, 3137, 397, 4136, 347, 415, 190, 3053, 62, 403, 91, nil, nil, nil, 4281, nil, nil, 370, nil, nil, nil, nil, 1631, nil, 237, 1693, 1722, 1755, 1784, 1817, 1846, 1879, 1908, nil, nil, nil, nil, nil, 142, 205, 297, 295, 226, 295, 359, -31, 336, 330, 309, nil, nil, nil, 2309, nil, 1255, nil, nil, nil, nil, 325, 273, 3832, nil, nil, 3878, 3921, nil, nil, 1166, 4007, 4050, nil, 332, nil, 212, nil, nil, 391, 2715, 2743, 74, 88, nil, 4405, 126, nil, nil, nil, nil, nil, nil, 187, 370, 371, nil, 2991, 967, 344, 343, nil, nil, 3199, nil, nil, nil, nil, nil, 3261, nil, 3323, nil, nil, 3352, 3385, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 3414, 3447, 3476, 3509, 3538, 3571, 3600, 3633, 3662, 3695, 2929, 3724, 2591, 2557, 2495, 2467, 2433, 2405, 2371, nil, 119, nil, 2281, 120, nil, 2247, 205, 20, 22, 1119, 108, nil, nil, nil, nil, nil, nil, 206, 1569, 343, 1035, nil, nil, nil, nil, nil, 376, 380, 384, 946, 433, 31, 386, 384, 876, nil, nil, nil, nil, nil, 277, 133, 119, 1486, 3964, nil, nil, nil, nil, 27, nil, 347, 1548, 4093, nil, nil, nil, 51, 1660, 354, nil, 2032, 363, nil, 2061, nil, 2123, 3786, 259, 364, nil, nil, 469, nil, 2343, nil, 3137, -14, nil, 116, nil, nil, nil, nil, nil, 408, 401, 400, nil, nil, nil, nil, nil, 200, 228, 293, 295, 297, 341, 195, 293, 230, 132, 259, 418, 370, 352, 365, 44, nil, 3075, nil, nil, nil, 370, nil, nil, 1449, 802, 304, 740, 178, nil, 2867, 2839, 2805, nil, 27, 706, nil, 25, 2777, nil, nil, 63, nil, 278, 2681, 190, 193, nil, 4329, 2653, nil, 253, nil, nil, 3, 2529, nil, nil, nil, nil, nil, nil, 29, nil, nil, 278, 316, 57, 4, nil, nil, nil, 663, nil, nil, 2219, nil, nil, nil, 2185, 359, 360, 361, 2157, nil, nil, 2095, nil, 4185, nil, nil, 579, nil, nil, 188, 192, 103, 377, 545, 483, nil, 62, nil, 1999, nil, 380, nil, 4367, nil, 387, nil, nil, nil, nil, nil, nil, nil, nil, nil, 296, nil, nil, nil, nil, nil, 462, 400, 338, 1338, 1168, 2619, nil, nil, nil, 409, nil, nil, 2901, 436, nil, nil, 122, 124, 276, 185, 214, nil, nil, 152, 387, 34, nil, 1317, nil, nil, nil, nil, nil ] racc_action_default = [ -260, -272, -272, -272, -86, -272, -88, -89, -91, -93, -95, -97, -99, -101, -102, -103, -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -114, -115, -116, -117, -118, -119, -120, -272, -272, -272, -272, -157, -158, -159, -160, -272, -162, -163, -272, -177, -261, -262, -263, 461, -84, -272, -90, -92, -94, -96, -99, -87, -272, -272, -272, -235, -272, -267, -270, -272, -131, -272, -132, -272, -272, -150, -161, -272, -173, -272, -178, -179, -181, -85, -272, -265, -98, -99, -1, -2, -3, -4, -272, -7, -21, -272, -272, -272, -272, -272, -272, -272, -272, -32, -33, -34, -35, -36, -38, -42, -45, -48, -53, -56, -58, -60, -62, -64, -66, -68, -100, -210, -272, -234, -272, -266, -271, -38, -83, -272, -272, -192, -138, -140, -272, -272, -128, -133, -272, -272, -272, -130, -272, -151, -153, -155, -156, -272, -272, -272, -272, -272, -172, -272, -272, -176, -190, -164, -180, -182, -264, -272, -272, -272, -81, -272, -272, -272, -272, -15, -16, -272, -22, -23, -24, -25, -26, -272, -27, -272, -29, -31, -272, -272, -71, -72, -73, -74, -75, -76, -77, -78, -79, -80, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -211, -272, -214, -272, -272, -219, -272, -272, -1, -272, -272, -118, -223, -224, -225, -226, -227, -228, -272, -272, -272, -236, -238, -240, -241, -242, -243, -272, -272, -272, -272, -272, -272, -272, -272, -272, -121, -122, -137, -139, -193, -194, -196, -205, -272, -272, -124, -127, -134, -135, -272, -141, -143, -272, -272, -126, -129, -146, -272, -272, -272, -171, -272, -272, -166, -272, -167, -272, -189, -272, -183, -185, -175, -272, -5, -272, -6, -272, -272, -9, -272, -19, -11, -13, -12, -14, -272, -272, -272, -69, -70, -39, -40, -41, -43, -44, -46, -47, -49, -50, -51, -52, -54, -55, -57, -59, -61, -63, -65, -272, -212, -272, -215, -218, -220, -272, -222, -244, -99, -272, -272, -272, -272, -239, -272, -272, -272, -233, -272, -272, -232, -272, -272, -256, -257, -272, -258, -195, -272, -208, -272, -204, -272, -272, -198, -272, -123, -136, -272, -272, -144, -125, -148, -152, -154, -147, -272, -170, -165, -272, -272, -194, -205, -187, -188, -174, -272, -191, -82, -272, -37, -8, -10, -272, -272, -28, -30, -272, -213, -216, -272, -221, -272, -269, -229, -272, -231, -237, -272, -272, -272, -272, -272, -272, -254, -272, -259, -272, -200, -272, -207, -272, -197, -272, -202, -199, -142, -145, -149, -169, -168, -184, -186, -272, -20, -67, -217, -268, -230, -272, -272, -272, -272, -272, -272, -255, -203, -201, -272, -206, -17, -272, -245, -247, -248, -272, -272, -272, -272, -272, -209, -18, -272, -272, -272, -250, -272, -252, -246, -249, -251, -253 ] racc_goto_table = [ 3, 4, 116, 117, 72, 63, 12, 62, 56, 77, 55, 157, 278, 260, 249, 52, 146, 210, 257, 362, 389, 138, 346, 257, 231, 76, 421, 127, 82, 131, 48, 136, 307, 308, 309, 310, 126, 401, 311, 312, 154, 305, 306, 124, 303, 304, 5, 123, 125, 81, 127, 80, 179, 145, 150, 121, 149, 259, 317, 159, 316, 117, 122, 83, 83, 410, 55, 315, 323, 314, 313, 52, 340, 156, 230, 170, 171, 172, 120, 331, 122, 158, 289, 46, 287, 47, 1, nil, 272, nil, 157, 250, 254, nil, 269, nil, 157, 263, 157, nil, 432, 433, 168, 169, nil, 290, nil, 174, 176, 177, nil, nil, nil, nil, nil, nil, nil, 362, nil, 219, 232, 298, 299, nil, nil, nil, 171, 276, nil, 127, nil, 318, nil, nil, 332, 127, nil, 127, 295, 261, 389, 257, 346, 53, 296, nil, 297, nil, 277, nil, 257, nil, nil, nil, 321, 117, nil, nil, nil, nil, 158, nil, nil, nil, 373, nil, 158, 344, 158, nil, nil, nil, 300, 301, 302, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 337, nil, nil, 124, nil, nil, 354, 123, 324, 53, nil, nil, nil, nil, nil, 128, 124, 128, nil, 128, 123, 329, nil, nil, 412, nil, 250, 368, nil, 369, nil, nil, nil, nil, 327, nil, 55, 377, 128, 219, 232, 52, nil, nil, nil, nil, 415, nil, nil, nil, 124, 370, nil, nil, 123, 359, 124, nil, nil, nil, 123, 363, nil, 171, nil, nil, 397, 398, 399, nil, nil, nil, 388, 117, 404, nil, nil, 247, 379, nil, 128, 128, nil, 437, 247, 128, 128, 422, nil, 393, nil, 395, 372, nil, 55, nil, nil, 54, nil, 52, 408, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 128, nil, nil, nil, nil, nil, 128, nil, 128, nil, nil, nil, nil, 392, 117, 391, nil, nil, 423, nil, nil, nil, 78, nil, 425, 117, 72, 171, 370, 124, nil, 402, nil, 123, 416, nil, 54, nil, 427, nil, nil, nil, 129, 277, 129, nil, 129, 444, 445, 447, 78, nil, 53, 155, nil, 261, nil, 424, nil, nil, nil, 123, nil, nil, nil, 129, nil, 277, nil, nil, nil, nil, 441, 442, 443, 388, 117, 426, nil, nil, nil, 171, nil, nil, 122, nil, nil, 128, nil, nil, 454, nil, 456, nil, nil, 457, 128, 459, nil, 460, nil, nil, 277, nil, 248, nil, nil, 129, 129, nil, 53, 248, 129, 129, nil, nil, nil, nil, nil, nil, nil, nil, 155, nil, 78, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 129, nil, nil, nil, nil, nil, 129, nil, 129, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 54, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 129, nil, nil, nil, nil, nil, nil, nil, nil, 129, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 155, 54 ] racc_goto_check = [ 27, 26, 36, 9, 48, 4, 35, 76, 35, 47, 33, 3, 50, 43, 55, 30, 9, 8, 40, 45, 59, 44, 56, 40, 72, 49, 54, 41, 34, 39, 29, 39, 15, 15, 15, 15, 7, 64, 16, 16, 47, 14, 14, 23, 13, 13, 28, 11, 25, 4, 41, 76, 24, 49, 51, 4, 52, 42, 21, 7, 20, 9, 26, 35, 35, 58, 33, 19, 61, 18, 17, 30, 68, 4, 69, 11, 11, 11, 70, 71, 26, 4, 6, 74, 3, 75, 1, nil, 9, nil, 3, 47, 39, nil, 44, nil, 3, 39, 3, nil, 64, 64, 10, 10, nil, 9, nil, 10, 10, 10, nil, nil, nil, nil, nil, nil, nil, 45, nil, 27, 26, 9, 9, nil, nil, nil, 11, 49, nil, 41, nil, 3, nil, nil, 72, 41, nil, 41, 7, 35, 59, 40, 56, 31, 7, nil, 7, nil, 27, nil, 40, nil, nil, nil, 36, 9, nil, nil, nil, nil, 4, nil, nil, nil, 55, nil, 4, 3, 4, nil, nil, nil, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 62, nil, nil, 23, nil, nil, 9, 11, 25, 31, nil, nil, nil, nil, nil, 31, 23, 31, nil, 31, 11, 25, nil, nil, 50, nil, 47, 9, nil, 9, nil, nil, nil, nil, 35, nil, 33, 9, 31, 27, 26, 30, nil, nil, nil, nil, 43, nil, nil, nil, 23, 47, nil, nil, 11, 25, 23, nil, nil, nil, 11, 25, nil, 11, nil, nil, 3, 3, 3, nil, nil, nil, 36, 9, 3, nil, nil, 31, 11, nil, 31, 31, nil, 50, 31, 31, 31, 8, nil, 62, nil, 62, 35, nil, 33, nil, nil, 32, nil, 30, 9, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 31, nil, nil, nil, nil, nil, 31, nil, 31, nil, nil, nil, nil, 4, 9, 76, nil, nil, 9, nil, nil, nil, 32, nil, 36, 9, 48, 11, 47, 23, nil, 26, nil, 11, 25, nil, 32, nil, 62, nil, nil, nil, 32, 27, 32, nil, 32, 3, 3, 3, 32, nil, 31, 32, nil, 35, nil, 23, nil, nil, nil, 11, nil, nil, nil, 32, nil, 27, nil, nil, nil, nil, 62, 62, 62, 36, 9, 4, nil, nil, nil, 11, nil, nil, 26, nil, nil, 31, nil, nil, 62, nil, 62, nil, nil, 62, 31, 62, nil, 62, nil, nil, 27, nil, 32, nil, nil, 32, 32, nil, 31, 32, 32, 32, nil, nil, nil, nil, nil, nil, nil, nil, 32, nil, 32, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 32, nil, nil, nil, nil, nil, 32, nil, 32, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 32, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 32, nil, nil, nil, nil, nil, nil, nil, nil, 32, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 32, 32 ] racc_goto_pointer = [ nil, 86, nil, -77, -7, nil, -80, -29, -101, -57, 11, -18, nil, -149, -154, -165, -163, -133, -135, -138, -146, -149, nil, -22, -52, -17, 0, -1, 45, 29, 12, 140, 284, 7, -30, 5, -58, nil, nil, -38, -113, -38, -77, -121, -49, -248, nil, -36, -37, -20, -137, -20, -18, nil, -349, -113, -228, nil, -283, -300, nil, -145, -49, nil, -301, nil, nil, nil, -169, -46, 17, -151, -96, nil, 82, 84, -5 ] racc_goto_default = [ nil, nil, 89, 218, 222, 90, nil, nil, nil, 160, 103, 104, 95, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, nil, nil, 64, 59, 51, nil, 7, 8, 9, 10, 11, 75, 211, 31, 32, nil, 133, 134, nil, nil, nil, 139, 140, 41, 42, nil, nil, nil, nil, 279, 280, 349, 251, 351, nil, 212, 213, 214, 233, 221, 223, 224, 225, 226, 227, nil, nil, nil, nil, 234, nil, nil, nil ] racc_reduce_table = [ 0, 0, :racc_error, 1, 94, :_reduce_1, 1, 94, :_reduce_2, 1, 94, :_reduce_3, 1, 94, :_reduce_4, 3, 94, :_reduce_5, 3, 94, :_reduce_6, 1, 97, :_reduce_none, 4, 97, :_reduce_8, 3, 97, :_reduce_9, 4, 97, :_reduce_10, 3, 97, :_reduce_11, 3, 97, :_reduce_12, 3, 97, :_reduce_13, 3, 97, :_reduce_14, 2, 97, :_reduce_15, 2, 97, :_reduce_16, 6, 97, :_reduce_17, 7, 97, :_reduce_18, 1, 98, :_reduce_19, 3, 98, :_reduce_20, 1, 102, :_reduce_none, 2, 102, :_reduce_22, 2, 102, :_reduce_23, 2, 102, :_reduce_24, 2, 102, :_reduce_25, 2, 102, :_reduce_26, 2, 102, :_reduce_27, 4, 102, :_reduce_28, 2, 102, :_reduce_29, 4, 102, :_reduce_30, 2, 102, :_reduce_31, 1, 104, :_reduce_none, 1, 104, :_reduce_none, 1, 104, :_reduce_none, 1, 104, :_reduce_none, 1, 103, :_reduce_none, 4, 103, :_reduce_37, 1, 105, :_reduce_none, 3, 105, :_reduce_39, 3, 105, :_reduce_40, 3, 105, :_reduce_41, 1, 106, :_reduce_none, 3, 106, :_reduce_43, 3, 106, :_reduce_44, 1, 107, :_reduce_none, 3, 107, :_reduce_46, 3, 107, :_reduce_47, 1, 108, :_reduce_none, 3, 108, :_reduce_49, 3, 108, :_reduce_50, 3, 108, :_reduce_51, 3, 108, :_reduce_52, 1, 109, :_reduce_none, 3, 109, :_reduce_54, 3, 109, :_reduce_55, 1, 110, :_reduce_none, 3, 110, :_reduce_57, 1, 111, :_reduce_none, 3, 111, :_reduce_59, 1, 112, :_reduce_none, 3, 112, :_reduce_61, 1, 113, :_reduce_none, 3, 113, :_reduce_63, 1, 114, :_reduce_none, 3, 114, :_reduce_65, 1, 115, :_reduce_none, 5, 115, :_reduce_67, 1, 101, :_reduce_none, 3, 101, :_reduce_69, 3, 101, :_reduce_70, 1, 116, :_reduce_none, 1, 116, :_reduce_none, 1, 116, :_reduce_none, 1, 116, :_reduce_none, 1, 116, :_reduce_none, 1, 116, :_reduce_none, 1, 116, :_reduce_none, 1, 116, :_reduce_none, 1, 116, :_reduce_none, 1, 116, :_reduce_none, 1, 95, :_reduce_none, 3, 95, :_reduce_82, 1, 117, :_reduce_none, 2, 118, :_reduce_84, 3, 118, :_reduce_85, 1, 121, :_reduce_none, 2, 121, :_reduce_87, 1, 121, :_reduce_88, 1, 119, :_reduce_89, 2, 119, :_reduce_90, 1, 119, :_reduce_91, 2, 119, :_reduce_92, 1, 119, :_reduce_93, 2, 119, :_reduce_94, 1, 119, :_reduce_95, 2, 119, :_reduce_96, 1, 120, :_reduce_97, 3, 120, :_reduce_98, 1, 126, :_reduce_99, 3, 126, :_reduce_100, 1, 122, :_reduce_none, 1, 122, :_reduce_none, 1, 122, :_reduce_none, 1, 122, :_reduce_none, 1, 122, :_reduce_none, 1, 123, :_reduce_106, 1, 123, :_reduce_107, 1, 123, :_reduce_108, 1, 123, :_reduce_109, 1, 123, :_reduce_110, 1, 123, :_reduce_111, 1, 123, :_reduce_112, 1, 123, :_reduce_113, 1, 123, :_reduce_114, 1, 123, :_reduce_115, 1, 123, :_reduce_116, 1, 123, :_reduce_117, 1, 123, :_reduce_118, 1, 123, :_reduce_119, 1, 123, :_reduce_120, 4, 123, :_reduce_121, 4, 123, :_reduce_122, 5, 129, :_reduce_123, 4, 129, :_reduce_124, 5, 129, :_reduce_125, 4, 129, :_reduce_126, 4, 129, :_reduce_127, 3, 129, :_reduce_128, 4, 129, :_reduce_129, 3, 129, :_reduce_130, 2, 129, :_reduce_131, 2, 129, :_reduce_132, 1, 131, :_reduce_133, 2, 131, :_reduce_134, 2, 132, :_reduce_135, 3, 132, :_reduce_136, 2, 133, :_reduce_137, 1, 133, :_reduce_138, 2, 133, :_reduce_139, 1, 133, :_reduce_140, 1, 134, :_reduce_141, 3, 134, :_reduce_142, 1, 135, :_reduce_143, 2, 135, :_reduce_144, 3, 135, :_reduce_145, 4, 130, :_reduce_146, 5, 130, :_reduce_147, 5, 130, :_reduce_148, 6, 130, :_reduce_149, 2, 130, :_reduce_150, 1, 136, :_reduce_151, 3, 136, :_reduce_152, 1, 137, :_reduce_153, 3, 137, :_reduce_154, 1, 138, :_reduce_none, 1, 138, :_reduce_156, 1, 124, :_reduce_none, 1, 124, :_reduce_none, 1, 124, :_reduce_none, 1, 125, :_reduce_none, 2, 127, :_reduce_161, 1, 127, :_reduce_162, 1, 140, :_reduce_163, 3, 140, :_reduce_164, 5, 140, :_reduce_165, 4, 140, :_reduce_166, 4, 140, :_reduce_167, 6, 140, :_reduce_168, 6, 140, :_reduce_169, 5, 140, :_reduce_170, 4, 140, :_reduce_171, 3, 140, :_reduce_172, 0, 144, :_reduce_173, 5, 140, :_reduce_174, 4, 140, :_reduce_175, 3, 140, :_reduce_176, 1, 139, :_reduce_177, 2, 139, :_reduce_178, 2, 139, :_reduce_179, 3, 139, :_reduce_180, 1, 141, :_reduce_181, 2, 141, :_reduce_182, 1, 142, :_reduce_183, 3, 142, :_reduce_184, 1, 145, :_reduce_185, 3, 145, :_reduce_186, 2, 146, :_reduce_187, 2, 146, :_reduce_188, 1, 146, :_reduce_189, 1, 143, :_reduce_190, 3, 143, :_reduce_191, 1, 99, :_reduce_192, 2, 99, :_reduce_193, 1, 147, :_reduce_194, 2, 147, :_reduce_195, 1, 147, :_reduce_196, 3, 148, :_reduce_197, 2, 148, :_reduce_198, 3, 148, :_reduce_199, 3, 148, :_reduce_200, 4, 148, :_reduce_201, 3, 148, :_reduce_202, 4, 148, :_reduce_203, 2, 148, :_reduce_204, 0, 149, :_reduce_205, 4, 148, :_reduce_206, 3, 148, :_reduce_207, 0, 150, :_reduce_208, 5, 148, :_reduce_209, 1, 128, :_reduce_210, 2, 128, :_reduce_211, 3, 128, :_reduce_212, 4, 128, :_reduce_213, 1, 100, :_reduce_214, 2, 100, :_reduce_215, 3, 100, :_reduce_216, 4, 100, :_reduce_217, 2, 151, :_reduce_none, 1, 152, :_reduce_none, 2, 152, :_reduce_none, 3, 153, :_reduce_none, 2, 153, :_reduce_none, 1, 154, :_reduce_none, 1, 154, :_reduce_none, 1, 154, :_reduce_none, 1, 154, :_reduce_none, 1, 154, :_reduce_none, 1, 154, :_reduce_none, 3, 155, :_reduce_229, 4, 155, :_reduce_230, 3, 155, :_reduce_231, 1, 160, :_reduce_none, 1, 160, :_reduce_233, 2, 96, :_reduce_234, 0, 162, :_reduce_235, 0, 163, :_reduce_236, 5, 96, :_reduce_237, 1, 161, :_reduce_238, 2, 161, :_reduce_239, 1, 164, :_reduce_none, 1, 164, :_reduce_none, 1, 164, :_reduce_none, 1, 156, :_reduce_243, 2, 156, :_reduce_244, 5, 157, :_reduce_245, 7, 157, :_reduce_246, 5, 157, :_reduce_247, 5, 158, :_reduce_248, 7, 158, :_reduce_249, 6, 158, :_reduce_250, 7, 158, :_reduce_251, 6, 158, :_reduce_252, 7, 158, :_reduce_253, 3, 159, :_reduce_254, 4, 159, :_reduce_255, 2, 159, :_reduce_256, 2, 159, :_reduce_257, 2, 159, :_reduce_258, 3, 159, :_reduce_259, 0, 93, :_reduce_260, 2, 93, :_reduce_261, 1, 166, :_reduce_none, 1, 166, :_reduce_none, 4, 167, :_reduce_264, 3, 167, :_reduce_265, 3, 167, :_reduce_266, 2, 167, :_reduce_267, 4, 165, :_reduce_268, 3, 165, :_reduce_269, 1, 168, :_reduce_270, 2, 168, :_reduce_271 ] racc_reduce_n = 272 racc_shift_n = 461 racc_token_table = { false => 0, :error => 1, :IDENTIFIER => 2, :TYPEDEF_NAME => 3, :CONSTANT => 4, :STRING_LITERAL => 5, :SIZEOF => 6, :TYPEDEF => 7, :EXTERN => 8, :STATIC => 9, :AUTO => 10, :REGISTER => 11, :INLINE => 12, :RESTRICT => 13, :CHAR => 14, :SHORT => 15, :INT => 16, :LONG => 17, :SIGNED => 18, :UNSIGNED => 19, :FLOAT => 20, :DOUBLE => 21, :CONST => 22, :VOLATILE => 23, :VOID => 24, :BOOL => 25, :COMPLEX => 26, :IMAGINARY => 27, :STRUCT => 28, :UNION => 29, :ENUM => 30, :CASE => 31, :DEFAULT => 32, :IF => 33, :ELSE => 34, :SWITCH => 35, :WHILE => 36, :DO => 37, :FOR => 38, :GOTO => 39, :CONTINUE => 40, :BREAK => 41, :RETURN => 42, :NULL => 43, :TYPEOF => 44, :ALIGNOF => 45, "(" => 46, ")" => 47, "[" => 48, "]" => 49, "." => 50, "->" => 51, "++" => 52, "--" => 53, "{" => 54, "}" => 55, "," => 56, "&" => 57, "*" => 58, "&&" => 59, "+" => 60, "-" => 61, "~" => 62, "!" => 63, "/" => 64, "%" => 65, "<<" => 66, ">>" => 67, "<" => 68, ">" => 69, "<=" => 70, ">=" => 71, "==" => 72, "!=" => 73, "^" => 74, "|" => 75, "||" => 76, "?" => 77, ":" => 78, "=" => 79, "*=" => 80, "/=" => 81, "%=" => 82, "+=" => 83, "-=" => 84, "<<=" => 85, ">>=" => 86, "&=" => 87, "^=" => 88, "|=" => 89, ";" => 90, "..." => 91 } racc_nt_base = 92 racc_use_result_var = true Racc_arg = [ racc_action_table, racc_action_check, racc_action_default, racc_action_pointer, racc_goto_table, racc_goto_check, racc_goto_default, racc_goto_pointer, racc_nt_base, racc_reduce_table, racc_token_table, racc_shift_n, racc_reduce_n, racc_use_result_var ] Racc_token_to_s_table = [ "$end", "error", "IDENTIFIER", "TYPEDEF_NAME", "CONSTANT", "STRING_LITERAL", "SIZEOF", "TYPEDEF", "EXTERN", "STATIC", "AUTO", "REGISTER", "INLINE", "RESTRICT", "CHAR", "SHORT", "INT", "LONG", "SIGNED", "UNSIGNED", "FLOAT", "DOUBLE", "CONST", "VOLATILE", "VOID", "BOOL", "COMPLEX", "IMAGINARY", "STRUCT", "UNION", "ENUM", "CASE", "DEFAULT", "IF", "ELSE", "SWITCH", "WHILE", "DO", "FOR", "GOTO", "CONTINUE", "BREAK", "RETURN", "NULL", "TYPEOF", "ALIGNOF", "\"(\"", "\")\"", "\"[\"", "\"]\"", "\".\"", "\"->\"", "\"++\"", "\"--\"", "\"{\"", "\"}\"", "\",\"", "\"&\"", "\"*\"", "\"&&\"", "\"+\"", "\"-\"", "\"~\"", "\"!\"", "\"/\"", "\"%\"", "\"<<\"", "\">>\"", "\"<\"", "\">\"", "\"<=\"", "\">=\"", "\"==\"", "\"!=\"", "\"^\"", "\"|\"", "\"||\"", "\"?\"", "\":\"", "\"=\"", "\"*=\"", "\"/=\"", "\"%=\"", "\"+=\"", "\"-=\"", "\"<<=\"", "\">>=\"", "\"&=\"", "\"^=\"", "\"|=\"", "\";\"", "\"...\"", "$start", "translation_unit", "primary_expression", "expression", "compound_statement", "postfix_expression", "argument_expression_list", "type_name", "initializer_list", "assignment_expression", "unary_expression", "cast_expression", "unary_arithmetic_operator", "multiplicative_expression", "additive_expression", "shift_expression", "relational_expression", "equality_expression", "and_expression", "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression", "logical_or_expression", "conditional_expression", "compound_assignment_operator", "constant_expression", "declaration", "declaration_specifiers", "init_declarator_list", "global_declaration", "storage_class_specifier", "type_specifier", "type_qualifier", "function_specifier", "init_declarator", "declarator", "initializer", "struct_or_union_specifier", "enum_specifier", "struct_declaration_list", "struct_declaration", "specifier_qualifier_list", "struct_declarator_list", "struct_declarator", "enumerator_list", "enumerator", "enumerator_name", "pointer", "direct_declarator", "type_qualifier_list", "parameter_type_list", "identifier_list", "@1", "parameter_list", "parameter_declaration", "abstract_declarator", "direct_abstract_declarator", "@2", "@3", "designation", "designator_list", "designator", "statement", "labeled_statement", "expression_statement", "selection_statement", "iteration_statement", "jump_statement", "label_name", "block_item_list", "@4", "@5", "block_item", "local_function_definition", "external_declaration", "function_definition", "declaration_list" ] Racc_debug_parser = false ##### State transition tables end ##### # reduce 0 omitted module_eval(<<'.,.,', 'parser.y', 90) def _reduce_1(val, _values, result) checkpoint(val[0].location) result = ObjectSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 96) def _reduce_2(val, _values, result) checkpoint(val[0].location) result = ConstantSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 102) def _reduce_3(val, _values, result) checkpoint(val[0].location) result = StringLiteralSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 108) def _reduce_4(val, _values, result) checkpoint(val[0].location) result = NullConstantSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 114) def _reduce_5(val, _values, result) checkpoint(val[0].location) result = GroupedExpression.new(val[1]) result.head_token = val[0] result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 121) def _reduce_6(val, _values, result) checkpoint(val[0].location) E(:E0013, val[0].location) result = ErrorExpression.new(val[0]) result.head_token = val[0] result.tail_token = val[2] result end .,., # reduce 7 omitted module_eval(<<'.,.,', 'parser.y', 133) def _reduce_8(val, _values, result) checkpoint(val[0].location) result = ArraySubscriptExpression.new(val[0], val[2], val[1]) result.head_token = val[0].head_token result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 140) def _reduce_9(val, _values, result) checkpoint(val[0].location) result = FunctionCallExpression.new(val[0], [], val[1]) result.head_token = val[0].head_token result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 147) def _reduce_10(val, _values, result) checkpoint(val[0].location) result = FunctionCallExpression.new(val[0], val[2], val [1]) result.head_token = val[0].head_token result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 154) def _reduce_11(val, _values, result) checkpoint(val[0].location) result = MemberAccessByValueExpression.new(val[0], val[2], val[1]) result.head_token = val[0].head_token result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 161) def _reduce_12(val, _values, result) checkpoint(val[0].location) result = MemberAccessByPointerExpression.new(val[0], val[2], val[1]) result.head_token = val[0].head_token result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 168) def _reduce_13(val, _values, result) checkpoint(val[0].location) result = BitAccessByValueExpression.new(val[0], val[2], val[1]) result.head_token = val[0].head_token result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 175) def _reduce_14(val, _values, result) checkpoint(val[0].location) result = BitAccessByPointerExpression.new(val[0], val[2], val[1]) result.head_token = val[0].head_token result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 182) def _reduce_15(val, _values, result) checkpoint(val[0].location) result = PostfixIncrementExpression.new(val[1], val[0]) result.head_token = val[0].head_token result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 189) def _reduce_16(val, _values, result) checkpoint(val[0].location) result = PostfixDecrementExpression.new(val[1], val[0]) result.head_token = val[0].head_token result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 196) def _reduce_17(val, _values, result) checkpoint(val[0].location) result = CompoundLiteralExpression.new(val[1], val[4], val[0]) result.head_token = val[0] result.tail_token = val[5] result end .,., module_eval(<<'.,.,', 'parser.y', 203) def _reduce_18(val, _values, result) checkpoint(val[0].location) result = CompoundLiteralExpression.new(val[1], val[4], val[0]) result.head_token = val[0] result.tail_token = val[6] result end .,., module_eval(<<'.,.,', 'parser.y', 213) def _reduce_19(val, _values, result) checkpoint(val[0].location) result = val result end .,., module_eval(<<'.,.,', 'parser.y', 218) def _reduce_20(val, _values, result) checkpoint(val[0].first.location) result = val[0].push(val[2]) result end .,., # reduce 21 omitted module_eval(<<'.,.,', 'parser.y', 227) def _reduce_22(val, _values, result) checkpoint(val[0].location) result = PrefixIncrementExpression.new(val[0], val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 234) def _reduce_23(val, _values, result) checkpoint(val[0].location) result = PrefixDecrementExpression.new(val[0], val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 241) def _reduce_24(val, _values, result) checkpoint(val[0].location) result = AddressExpression.new(val[0], val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 248) def _reduce_25(val, _values, result) checkpoint(val[0].location) result = IndirectionExpression.new(val[0], val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 255) def _reduce_26(val, _values, result) checkpoint(val[0].location) result = UnaryArithmeticExpression.new(val[0], val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 262) def _reduce_27(val, _values, result) checkpoint(val[0].location) result = SizeofExpression.new(val[0], val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 269) def _reduce_28(val, _values, result) checkpoint(val[0].location) result = SizeofTypeExpression.new(val[0], val[2]) result.head_token = val[0] result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 276) def _reduce_29(val, _values, result) checkpoint(val[0].location) result = AlignofExpression.new(val[0], val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 283) def _reduce_30(val, _values, result) checkpoint(val[0].location) result = AlignofTypeExpression.new(val[0], val[2]) result.head_token = val[0] result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 290) def _reduce_31(val, _values, result) checkpoint(val[0].location) E(:E0014, val[0].location, val[0].value) result = ErrorExpression.new(val[0]) result.head_token = val[0] result.tail_token = val[1].tail_token result end .,., # reduce 32 omitted # reduce 33 omitted # reduce 34 omitted # reduce 35 omitted # reduce 36 omitted module_eval(<<'.,.,', 'parser.y', 309) def _reduce_37(val, _values, result) checkpoint(val[0].location) result = CastExpression.new(val[1], val[3]) result.head_token = val[0] result.tail_token = val[3].tail_token result end .,., # reduce 38 omitted module_eval(<<'.,.,', 'parser.y', 320) def _reduce_39(val, _values, result) checkpoint(val[0].location) result = MultiplicativeExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 327) def _reduce_40(val, _values, result) checkpoint(val[0].location) result = MultiplicativeExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 334) def _reduce_41(val, _values, result) checkpoint(val[0].location) result = MultiplicativeExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., # reduce 42 omitted module_eval(<<'.,.,', 'parser.y', 345) def _reduce_43(val, _values, result) checkpoint(val[0].location) result = AdditiveExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 352) def _reduce_44(val, _values, result) checkpoint(val[0].location) result = AdditiveExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., # reduce 45 omitted module_eval(<<'.,.,', 'parser.y', 363) def _reduce_46(val, _values, result) checkpoint(val[0].location) result = ShiftExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 370) def _reduce_47(val, _values, result) checkpoint(val[0].location) result = ShiftExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., # reduce 48 omitted module_eval(<<'.,.,', 'parser.y', 381) def _reduce_49(val, _values, result) checkpoint(val[0].location) result = RelationalExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 388) def _reduce_50(val, _values, result) checkpoint(val[0].location) result = RelationalExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 395) def _reduce_51(val, _values, result) checkpoint(val[0].location) result = RelationalExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 402) def _reduce_52(val, _values, result) checkpoint(val[0].location) result = RelationalExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., # reduce 53 omitted module_eval(<<'.,.,', 'parser.y', 413) def _reduce_54(val, _values, result) checkpoint(val[0].location) result = EqualityExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 420) def _reduce_55(val, _values, result) checkpoint(val[0].location) result = EqualityExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., # reduce 56 omitted module_eval(<<'.,.,', 'parser.y', 431) def _reduce_57(val, _values, result) checkpoint(val[0].location) result = AndExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., # reduce 58 omitted module_eval(<<'.,.,', 'parser.y', 442) def _reduce_59(val, _values, result) checkpoint(val[0].location) result = ExclusiveOrExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., # reduce 60 omitted module_eval(<<'.,.,', 'parser.y', 453) def _reduce_61(val, _values, result) checkpoint(val[0].location) result = InclusiveOrExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., # reduce 62 omitted module_eval(<<'.,.,', 'parser.y', 464) def _reduce_63(val, _values, result) checkpoint(val[0].location) result = LogicalAndExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., # reduce 64 omitted module_eval(<<'.,.,', 'parser.y', 475) def _reduce_65(val, _values, result) checkpoint(val[0].location) result = LogicalOrExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., # reduce 66 omitted module_eval(<<'.,.,', 'parser.y', 486) def _reduce_67(val, _values, result) checkpoint(val[0].location) result = ConditionalExpression.new(val[0], val[2], val[4], val[1]) result.head_token = val[0].head_token result.tail_token = val[4].tail_token result end .,., # reduce 68 omitted module_eval(<<'.,.,', 'parser.y', 497) def _reduce_69(val, _values, result) checkpoint(val[0].location) result = SimpleAssignmentExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 504) def _reduce_70(val, _values, result) checkpoint(val[0].location) result = CompoundAssignmentExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., # reduce 71 omitted # reduce 72 omitted # reduce 73 omitted # reduce 74 omitted # reduce 75 omitted # reduce 76 omitted # reduce 77 omitted # reduce 78 omitted # reduce 79 omitted # reduce 80 omitted # reduce 81 omitted module_eval(<<'.,.,', 'parser.y', 528) def _reduce_82(val, _values, result) checkpoint(val[0].location) case val[0] when CommaSeparatedExpression result = val[0].push(val[2]) else result = CommaSeparatedExpression.new(val[0]).push(val[2]) end result end .,., # reduce 83 omitted module_eval(<<'.,.,', 'parser.y', 548) def _reduce_84(val, _values, result) checkpoint(val[0].location) @lexer.enable_identifier_translation result = Declaration.new(val[0], [], @sym_tbl) result.head_token = val[0].head_token result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 556) def _reduce_85(val, _values, result) checkpoint(val[0].location) @lexer.enable_identifier_translation result = Declaration.new(val[0], val[1], @sym_tbl) result.head_token = val[0].head_token result.tail_token = val[2] result.items.each do |item| case item when TypedefDeclaration @lexer.add_typedef_name(item.identifier) when FunctionDeclaration, VariableDeclaration, VariableDefinition @lexer.add_object_name(item.identifier) end end result end .,., # reduce 86 omitted module_eval(<<'.,.,', 'parser.y', 576) def _reduce_87(val, _values, result) checkpoint(val[0].first.location) result = Declaration.new(nil, val[0], @sym_tbl) result.head_token = val[0].first.head_token result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 583) def _reduce_88(val, _values, result) # NOTE: To accept extra semicolons in the global scope. E(:E0018, val[0].location) result = nil result end .,., module_eval(<<'.,.,', 'parser.y', 592) def _reduce_89(val, _values, result) checkpoint(val[0].location) result = DeclarationSpecifiers.new result.storage_class_specifier = val[0] result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 599) def _reduce_90(val, _values, result) checkpoint(val[0].location) result = val[0] result.storage_class_specifier = val[1] result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 606) def _reduce_91(val, _values, result) checkpoint(val[0].location) result = DeclarationSpecifiers.new result.type_specifiers.push(val[0]) result.head_token = val[0].head_token result.tail_token = val[0].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 614) def _reduce_92(val, _values, result) checkpoint(val[0].location) result = val[0] result.type_specifiers.push(val[1]) result.tail_token = val[1].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 621) def _reduce_93(val, _values, result) checkpoint(val[0].location) result = DeclarationSpecifiers.new result.type_qualifiers.push(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 628) def _reduce_94(val, _values, result) checkpoint(val[0].location) result = val[0] result.type_qualifiers.push(val[1]) result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 635) def _reduce_95(val, _values, result) checkpoint(val[0].location) result = DeclarationSpecifiers.new result.function_specifier = val[0] result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 642) def _reduce_96(val, _values, result) checkpoint(val[0].location) result = val[0] result.function_specifier = val[1] result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 652) def _reduce_97(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = val result end .,., module_eval(<<'.,.,', 'parser.y', 658) def _reduce_98(val, _values, result) checkpoint(val[0].first.location) @lexer.disable_identifier_translation result = val[0].push(val[2]) result end .,., module_eval(<<'.,.,', 'parser.y', 667) def _reduce_99(val, _values, result) checkpoint(val[0].location) result = InitDeclarator.new(val[0], nil, nil) result.head_token = val[0].head_token result.tail_token = val[0].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 674) def _reduce_100(val, _values, result) checkpoint(val[0].location) result = InitDeclarator.new(val[0], val[2], val[1]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., # reduce 101 omitted # reduce 102 omitted # reduce 103 omitted # reduce 104 omitted # reduce 105 omitted module_eval(<<'.,.,', 'parser.y', 692) def _reduce_106(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 699) def _reduce_107(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 706) def _reduce_108(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 713) def _reduce_109(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 720) def _reduce_110(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 727) def _reduce_111(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 734) def _reduce_112(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 741) def _reduce_113(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 748) def _reduce_114(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 755) def _reduce_115(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 762) def _reduce_116(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 769) def _reduce_117(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 776) def _reduce_118(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = TypedefTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 783) def _reduce_119(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 789) def _reduce_120(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 795) def _reduce_121(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation val[2].full = true result = TypeofTypeSpecifier.new(val[2], nil) result.head_token = val[0] result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 804) def _reduce_122(val, _values, result) checkpoint(val[0].location) @lexer.disable_identifier_translation result = TypeofTypeSpecifier.new(nil, val[2]) result.head_token = val[0] result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 815) def _reduce_123(val, _values, result) checkpoint(val[0].location) result = StructSpecifier.new(val[1], val[3]) result.head_token = val[0] result.tail_token = val[4] result end .,., module_eval(<<'.,.,', 'parser.y', 822) def _reduce_124(val, _values, result) checkpoint(val[0].location) result = StructSpecifier.new(val[1], []) result.head_token = val[0] result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 829) def _reduce_125(val, _values, result) checkpoint(val[0].location) result = UnionSpecifier.new(val[1], val[3]) result.head_token = val[0] result.tail_token = val[4] result end .,., module_eval(<<'.,.,', 'parser.y', 836) def _reduce_126(val, _values, result) checkpoint(val[0].location) result = UnionSpecifier.new(val[1], []) result.head_token = val[0] result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 843) def _reduce_127(val, _values, result) checkpoint(val[0].location) result = StructSpecifier.new(create_anon_tag_name(val[0]), val[2], true) result.head_token = val[0] result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 850) def _reduce_128(val, _values, result) checkpoint(val[0].location) result = StructSpecifier.new(create_anon_tag_name(val[0]), [], true) result.head_token = val[0] result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 857) def _reduce_129(val, _values, result) checkpoint(val[0].location) result = UnionSpecifier.new(create_anon_tag_name(val[0]), val[2], true) result.head_token = val[0] result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 864) def _reduce_130(val, _values, result) checkpoint(val[0].location) result = UnionSpecifier.new(create_anon_tag_name(val[0]), [], true) result.head_token = val[0] result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 871) def _reduce_131(val, _values, result) checkpoint(val[0].location) result = StructSpecifier.new(val[1], nil) result.head_token = val[0] result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 878) def _reduce_132(val, _values, result) checkpoint(val[0].location) result = UnionSpecifier.new(val[1], nil) result.head_token = val[0] result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 888) def _reduce_133(val, _values, result) checkpoint(val[0].location) @lexer.enable_identifier_translation result = val result end .,., module_eval(<<'.,.,', 'parser.y', 894) def _reduce_134(val, _values, result) checkpoint(val[0].first.location) @lexer.enable_identifier_translation result = val[0].push(val[1]) result end .,., module_eval(<<'.,.,', 'parser.y', 903) def _reduce_135(val, _values, result) checkpoint(val[0].location) result = StructDeclaration.new(val[0], []) result.head_token = val[0].head_token result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 910) def _reduce_136(val, _values, result) checkpoint(val[0].location) result = StructDeclaration.new(val[0], val[1]) result.head_token = val[0].head_token result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 920) def _reduce_137(val, _values, result) checkpoint(val[0].location) result = val[0] result.type_specifiers.push(val[1]) result.tail_token = val[1].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 927) def _reduce_138(val, _values, result) checkpoint(val[0].location) result = SpecifierQualifierList.new result.type_specifiers.push(val[0]) result.head_token = val[0].head_token result.tail_token = val[0].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 935) def _reduce_139(val, _values, result) checkpoint(val[0].location) result = val[0] result.type_qualifiers.push(val[1]) result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 942) def _reduce_140(val, _values, result) checkpoint(val[0].location) result = SpecifierQualifierList.new result.type_qualifiers.push(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 952) def _reduce_141(val, _values, result) checkpoint(val[0].location) result = val result end .,., module_eval(<<'.,.,', 'parser.y', 957) def _reduce_142(val, _values, result) checkpoint(val[0].first.location) result = val[0].push(val[2]) result end .,., module_eval(<<'.,.,', 'parser.y', 965) def _reduce_143(val, _values, result) checkpoint(val[0].location) result = StructDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[0].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 972) def _reduce_144(val, _values, result) checkpoint(val[0].location) val[1].full = true result = StructDeclarator.new(nil, val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 980) def _reduce_145(val, _values, result) checkpoint(val[0].location) val[2].full = true result = StructDeclarator.new(val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 991) def _reduce_146(val, _values, result) checkpoint(val[0].location) result = EnumSpecifier.new(create_anon_tag_name(val[0]), val[2], nil, true) result.head_token = val[0] result.tail_token = val[3] result.enumerators.each do |enum| @lexer.add_enumerator_name(enum.identifier) end result end .,., module_eval(<<'.,.,', 'parser.y', 1002) def _reduce_147(val, _values, result) checkpoint(val[0].location) result = EnumSpecifier.new(val[1], val[3]) result.head_token = val[0] result.tail_token = val[4] result.enumerators.each do |enum| @lexer.add_enumerator_name(enum.identifier) end result end .,., module_eval(<<'.,.,', 'parser.y', 1012) def _reduce_148(val, _values, result) checkpoint(val[0].location) result = EnumSpecifier.new(create_anon_tag_name(val[0]), val[2], val[3], true) result.head_token = val[0] result.tail_token = val[4] result.enumerators.each do |enum| @lexer.add_enumerator_name(enum.identifier) end result end .,., module_eval(<<'.,.,', 'parser.y', 1023) def _reduce_149(val, _values, result) checkpoint(val[0].location) result = EnumSpecifier.new(val[1], val[3], val[4]) result.head_token = val[0] result.tail_token = val[5] result.enumerators.each do |enum| @lexer.add_enumerator_name(enum.identifier) end result end .,., module_eval(<<'.,.,', 'parser.y', 1033) def _reduce_150(val, _values, result) checkpoint(val[0].location) result = EnumSpecifier.new(val[1], nil) result.head_token = val[0] result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 1043) def _reduce_151(val, _values, result) checkpoint(val[0].location) result = val result end .,., module_eval(<<'.,.,', 'parser.y', 1048) def _reduce_152(val, _values, result) checkpoint(val[0].first.location) result = val[0].push(val[2]) result end .,., module_eval(<<'.,.,', 'parser.y', 1056) def _reduce_153(val, _values, result) checkpoint(val[0].location) sym = @sym_tbl.create_new_symbol(EnumeratorName, val[0]) result = Enumerator.new(val[0], nil, sym) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 1063) def _reduce_154(val, _values, result) checkpoint(val[0].location) val[2].full = true sym = @sym_tbl.create_new_symbol(EnumeratorName, val[0]) result = Enumerator.new(val[0], val[2], sym) result.head_token = val[0] result.tail_token = val[2].tail_token result end .,., # reduce 155 omitted module_eval(<<'.,.,', 'parser.y', 1076) def _reduce_156(val, _values, result) result = val[0].class.new(:IDENTIFIER, val[0].value, val[0].location) result end .,., # reduce 157 omitted # reduce 158 omitted # reduce 159 omitted # reduce 160 omitted module_eval(<<'.,.,', 'parser.y', 1093) def _reduce_161(val, _values, result) checkpoint(val[0].first.location) result = val[1] result.pointer = val[0] result.head_token = val[0].first result.full = true result end .,., module_eval(<<'.,.,', 'parser.y', 1101) def _reduce_162(val, _values, result) checkpoint(val[0].location) result = val[0] result.full = true result end .,., module_eval(<<'.,.,', 'parser.y', 1110) def _reduce_163(val, _values, result) checkpoint(val[0].location) @lexer.enable_identifier_translation result = IdentifierDeclarator.new(val[0]) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 1117) def _reduce_164(val, _values, result) checkpoint(val[0].location) result = GroupedDeclarator.new(val[1]) result.head_token = val[0] result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 1124) def _reduce_165(val, _values, result) checkpoint(val[0].location) val[3].full = true result = ArrayDeclarator.new(val[0], val[3]) result.head_token = val[0].head_token result.tail_token = val[4] result end .,., module_eval(<<'.,.,', 'parser.y', 1132) def _reduce_166(val, _values, result) checkpoint(val[0].location) result = ArrayDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 1139) def _reduce_167(val, _values, result) checkpoint(val[0].location) val[2].full = true result = ArrayDeclarator.new(val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 1148) def _reduce_168(val, _values, result) checkpoint(val[0].location) val[4].full = true result = ArrayDeclarator.new(val[0], val[4]) result.head_token = val[0].head_token result.tail_token = val[5] result end .,., module_eval(<<'.,.,', 'parser.y', 1157) def _reduce_169(val, _values, result) checkpoint(val[0].location) val[4].full = true result = ArrayDeclarator.new(val[0], val[4]) result.head_token = val[0].head_token result.tail_token = val[5] result end .,., module_eval(<<'.,.,', 'parser.y', 1165) def _reduce_170(val, _values, result) checkpoint(val[0].location) result = ArrayDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[4] result end .,., module_eval(<<'.,.,', 'parser.y', 1172) def _reduce_171(val, _values, result) checkpoint(val[0].location) result = ArrayDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 1179) def _reduce_172(val, _values, result) checkpoint(val[0].location) result = ArrayDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 1184) def _reduce_173(val, _values, result) @lexer.enable_identifier_translation result end .,., module_eval(<<'.,.,', 'parser.y', 1187) def _reduce_174(val, _values, result) checkpoint(val[0].location) result = AnsiFunctionDeclarator.new(val[0], val[3]) result.head_token = val[0].head_token result.tail_token = val[4] result end .,., module_eval(<<'.,.,', 'parser.y', 1194) def _reduce_175(val, _values, result) checkpoint(val[0].location) result = KandRFunctionDeclarator.new(val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 1201) def _reduce_176(val, _values, result) checkpoint(val[0].location) result = AbbreviatedFunctionDeclarator.new(val[0]) result.head_token = val[0].head_token result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 1211) def _reduce_177(val, _values, result) checkpoint(val[0].location) result = val result end .,., module_eval(<<'.,.,', 'parser.y', 1216) def _reduce_178(val, _values, result) checkpoint(val[0].location) result = val[1].unshift(val[0]) result end .,., module_eval(<<'.,.,', 'parser.y', 1221) def _reduce_179(val, _values, result) checkpoint(val[0].location) result = val[1].unshift(val[0]) result end .,., module_eval(<<'.,.,', 'parser.y', 1226) def _reduce_180(val, _values, result) checkpoint(val[0].location) result = val[1].unshift(val[0]).concat(val[2]) result end .,., module_eval(<<'.,.,', 'parser.y', 1234) def _reduce_181(val, _values, result) checkpoint(val[0].location) result = val result end .,., module_eval(<<'.,.,', 'parser.y', 1239) def _reduce_182(val, _values, result) checkpoint(val[0].first.location) result = val[0].push(val[1]) result end .,., module_eval(<<'.,.,', 'parser.y', 1247) def _reduce_183(val, _values, result) checkpoint(val[0].first.location) result = ParameterTypeList.new(val[0], false) result.head_token = val[0].first.head_token result.tail_token = val[0].last.tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1254) def _reduce_184(val, _values, result) checkpoint(val[0].first.location) result = ParameterTypeList.new(val[0], true) result.head_token = val[0].first.head_token result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 1264) def _reduce_185(val, _values, result) checkpoint(val[0].location) result = val result end .,., module_eval(<<'.,.,', 'parser.y', 1269) def _reduce_186(val, _values, result) checkpoint(val[0].first.location) result = val[0].push(val[2]) result end .,., module_eval(<<'.,.,', 'parser.y', 1277) def _reduce_187(val, _values, result) checkpoint(val[0].location) @lexer.enable_identifier_translation result = ParameterDeclaration.new(val[0], val[1]) result.head_token = val[0].head_token result.tail_token = val[1].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1285) def _reduce_188(val, _values, result) checkpoint(val[0].location) @lexer.enable_identifier_translation result = ParameterDeclaration.new(val[0], val[1]) result.head_token = val[0].head_token result.tail_token = val[1].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1293) def _reduce_189(val, _values, result) checkpoint(val[0].location) @lexer.enable_identifier_translation result = ParameterDeclaration.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[0].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1304) def _reduce_190(val, _values, result) checkpoint(val[0].location) result = val result end .,., module_eval(<<'.,.,', 'parser.y', 1309) def _reduce_191(val, _values, result) checkpoint(val[0].first.location) result = val[0].push(val[2]) result end .,., module_eval(<<'.,.,', 'parser.y', 1317) def _reduce_192(val, _values, result) checkpoint(val[0].location) @lexer.enable_identifier_translation result = TypeName.new(val[0], nil, @sym_tbl) result.head_token = val[0].head_token result.tail_token = val[0].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1325) def _reduce_193(val, _values, result) checkpoint(val[0].location) @lexer.enable_identifier_translation result = TypeName.new(val[0], val[1], @sym_tbl) result.head_token = val[0].head_token result.tail_token = val[1].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1336) def _reduce_194(val, _values, result) checkpoint(val[0].first.location) @lexer.enable_identifier_translation result = PointerAbstractDeclarator.new(nil, val[0]) result.head_token = val[0].first result.tail_token = val[0].last result.full = true result end .,., module_eval(<<'.,.,', 'parser.y', 1345) def _reduce_195(val, _values, result) checkpoint(val[0].first.location) @lexer.enable_identifier_translation result = PointerAbstractDeclarator.new(val[1], val[0]) result.head_token = val[0].first result.tail_token = val[1].tail_token result.full = true result end .,., module_eval(<<'.,.,', 'parser.y', 1354) def _reduce_196(val, _values, result) checkpoint(val[0].location) result = val[0] result.full = true result end .,., module_eval(<<'.,.,', 'parser.y', 1363) def _reduce_197(val, _values, result) checkpoint(val[0].location) result = GroupedAbstractDeclarator.new(val[1]) result.head_token = val[0] result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 1370) def _reduce_198(val, _values, result) checkpoint(val[0].location) result = ArrayAbstractDeclarator.new(nil, nil) result.head_token = val[0] result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 1377) def _reduce_199(val, _values, result) checkpoint(val[0].location) val[1].full = true result = ArrayAbstractDeclarator.new(nil, val[1]) result.head_token = val[0] result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 1385) def _reduce_200(val, _values, result) checkpoint(val[0].location) result = ArrayAbstractDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 1392) def _reduce_201(val, _values, result) checkpoint(val[0].location) val[2].full = true result = ArrayAbstractDeclarator.new(val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 1400) def _reduce_202(val, _values, result) checkpoint(val[0].location) result = ArrayAbstractDeclarator.new(nil, nil) result.head_token = val[0] result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 1407) def _reduce_203(val, _values, result) checkpoint(val[0].location) result = ArrayAbstractDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 1414) def _reduce_204(val, _values, result) checkpoint(val[0].location) result = FunctionAbstractDeclarator.new(nil, nil) result.head_token = val[0] result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 1419) def _reduce_205(val, _values, result) @lexer.enable_identifier_translation result end .,., module_eval(<<'.,.,', 'parser.y', 1421) def _reduce_206(val, _values, result) checkpoint(val[0].location) result = FunctionAbstractDeclarator.new(nil, val[2]) result.head_token = val[0] result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 1428) def _reduce_207(val, _values, result) checkpoint(val[0].location) result = FunctionAbstractDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 1433) def _reduce_208(val, _values, result) @lexer.enable_identifier_translation result end .,., module_eval(<<'.,.,', 'parser.y', 1436) def _reduce_209(val, _values, result) checkpoint(val[0].location) result = FunctionAbstractDeclarator.new(val[0], val[3]) result.head_token = val[0].head_token result.tail_token = val[4] result end .,., module_eval(<<'.,.,', 'parser.y', 1446) def _reduce_210(val, _values, result) checkpoint(val[0].location) val[0].full = true result = Initializer.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[0].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1454) def _reduce_211(val, _values, result) checkpoint(val[0].location) result = Initializer.new(nil, nil) result.head_token = val[0] result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 1461) def _reduce_212(val, _values, result) checkpoint(val[0].location) result = Initializer.new(nil, val[1]) result.head_token = val[0] result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 1468) def _reduce_213(val, _values, result) checkpoint(val[0].location) result = Initializer.new(nil, val[1]) result.head_token = val[0] result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 1478) def _reduce_214(val, _values, result) checkpoint(val[0].location) result = val result end .,., module_eval(<<'.,.,', 'parser.y', 1483) def _reduce_215(val, _values, result) checkpoint(val[1].location) result = [val[1]] result end .,., module_eval(<<'.,.,', 'parser.y', 1488) def _reduce_216(val, _values, result) checkpoint(val[0].first.location) result = val[0].push(val[2]) result end .,., module_eval(<<'.,.,', 'parser.y', 1493) def _reduce_217(val, _values, result) checkpoint(val[0].first.location) result = val[0].push(val[3]) result end .,., # reduce 218 omitted # reduce 219 omitted # reduce 220 omitted # reduce 221 omitted # reduce 222 omitted # reduce 223 omitted # reduce 224 omitted # reduce 225 omitted # reduce 226 omitted # reduce 227 omitted # reduce 228 omitted module_eval(<<'.,.,', 'parser.y', 1527) def _reduce_229(val, _values, result) checkpoint(val[0].location) result = GenericLabeledStatement.new(val[0], val[2]) result.head_token = val[0] result.tail_token = val[2].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1534) def _reduce_230(val, _values, result) checkpoint(val[0].location) val[1].full = true result = CaseLabeledStatement.new(val[1], val[3]) result.head_token = val[0] result.tail_token = val[3].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1542) def _reduce_231(val, _values, result) checkpoint(val[0].location) result = DefaultLabeledStatement.new(val[2]) result.head_token = val[0] result.tail_token = val[2].tail_token result end .,., # reduce 232 omitted module_eval(<<'.,.,', 'parser.y', 1553) def _reduce_233(val, _values, result) result = val[0].class.new(:IDENTIFIER, val[0].value, val[0].location) result end .,., module_eval(<<'.,.,', 'parser.y', 1560) def _reduce_234(val, _values, result) checkpoint(val[0].location) result = CompoundStatement.new([]) result.head_token = val[0] result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 1565) def _reduce_235(val, _values, result) @lexer.enter_scope result end .,., module_eval(<<'.,.,', 'parser.y', 1565) def _reduce_236(val, _values, result) @lexer.leave_scope result end .,., module_eval(<<'.,.,', 'parser.y', 1567) def _reduce_237(val, _values, result) checkpoint(val[0].location) result = CompoundStatement.new(val[2]) result.head_token = val[0] result.tail_token = val[4] result end .,., module_eval(<<'.,.,', 'parser.y', 1577) def _reduce_238(val, _values, result) checkpoint(val[0].location) result = val result end .,., module_eval(<<'.,.,', 'parser.y', 1582) def _reduce_239(val, _values, result) checkpoint(val[0].first.location) result = val[0].push(val[1]) result end .,., # reduce 240 omitted # reduce 241 omitted # reduce 242 omitted module_eval(<<'.,.,', 'parser.y', 1596) def _reduce_243(val, _values, result) checkpoint(val[0].location) result = ExpressionStatement.new(nil) result.head_token = result.tail_token = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 1602) def _reduce_244(val, _values, result) checkpoint(val[0].location) val[0].full = true result = ExpressionStatement.new(val[0]) result.head_token = val[0].head_token result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 1613) def _reduce_245(val, _values, result) checkpoint(val[0].location) val[2].full = true result = IfStatement.new(val[2], val[4], val[3]) result.head_token = val[0] result.tail_token = val[4].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1621) def _reduce_246(val, _values, result) checkpoint(val[0].location) val[2].full = true result = IfElseStatement.new(val[2], val[4], val[6], val[3], val[5]) result.head_token = val[0] result.tail_token = val[6].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1629) def _reduce_247(val, _values, result) checkpoint(val[0].location) val[2].full = true result = SwitchStatement.new(val[2], val[4]) result.head_token = val[0] result.tail_token = val[4].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1640) def _reduce_248(val, _values, result) checkpoint(val[0].location) val[2].full = true result = WhileStatement.new(val[2], val[4], val[3]) result.head_token = val[0] result.tail_token = val[4].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1648) def _reduce_249(val, _values, result) checkpoint(val[0].location) val[4].full = true result = DoStatement.new(val[1], val[4], val[0], val[2]) result.head_token = val[0] result.tail_token = val[6] result end .,., module_eval(<<'.,.,', 'parser.y', 1656) def _reduce_250(val, _values, result) checkpoint(val[0].location) result = ForStatement.new(val[2], val[3], nil, val[5], val[4]) result.head_token = val[0] result.tail_token = val[5].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1664) def _reduce_251(val, _values, result) checkpoint(val[0].location) val[4].full = true result = ForStatement.new(val[2], val[3], val[4], val[6], val[5]) result.head_token = val[0] result.tail_token = val[6].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1672) def _reduce_252(val, _values, result) checkpoint(val[0].location) result = C99ForStatement.new(val[2], val[3], nil, val[5], val[4]) result.head_token = val[0] result.tail_token = val[5].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1679) def _reduce_253(val, _values, result) checkpoint(val[0].location) val[4].full = true result = C99ForStatement.new(val[2], val[3], val[4], val[6], val[5]) result.head_token = val[0] result.tail_token = val[6].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1690) def _reduce_254(val, _values, result) checkpoint(val[0].location) result = GotoStatement.new(val[1]) result.head_token = val[0] result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 1697) def _reduce_255(val, _values, result) checkpoint(val[0].location) E(:E0015, val[1].location, val[1].value) result = ErrorStatement.new(val[1]) result.head_token = val[0] result.tail_token = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 1705) def _reduce_256(val, _values, result) checkpoint(val[0].location) result = ContinueStatement.new result.head_token = val[0] result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 1712) def _reduce_257(val, _values, result) checkpoint(val[0].location) result = BreakStatement.new result.head_token = val[0] result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 1719) def _reduce_258(val, _values, result) checkpoint(val[0].location) result = ReturnStatement.new(nil) result.head_token = val[0] result.tail_token = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 1726) def _reduce_259(val, _values, result) checkpoint(val[0].location) val[1].full = true result = ReturnStatement.new(val[1]) result.head_token = val[0] result.tail_token = val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 1740) def _reduce_260(val, _values, result) result = TranslationUnit.new result end .,., module_eval(<<'.,.,', 'parser.y', 1744) def _reduce_261(val, _values, result) checkpoint(val[0].location) result = val[0] val[1] and result.push(val[1]) result end .,., # reduce 262 omitted # reduce 263 omitted module_eval(<<'.,.,', 'parser.y', 1758) def _reduce_264(val, _values, result) checkpoint(val[0].location) result = KandRFunctionDefinition.new(val[0], val[1], val[2], val[3], @sym_tbl) result.head_token = val[0].head_token result.tail_token = val[3].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1766) def _reduce_265(val, _values, result) checkpoint(val[0].location) case val[1] when AnsiFunctionDeclarator result = AnsiFunctionDefinition.new(val[0], val[1], val[2], @sym_tbl) when KandRFunctionDeclarator result = KandRFunctionDefinition.new(val[0], val[1], [], val[2], @sym_tbl) when AbbreviatedFunctionDeclarator result = AnsiFunctionDefinition.new(val[0], val[1], val[2], @sym_tbl) end result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1781) def _reduce_266(val, _values, result) checkpoint(val[0].location) result = KandRFunctionDefinition.new(nil, val[0], val[1], val[2], @sym_tbl) result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1789) def _reduce_267(val, _values, result) checkpoint(val[0].location) case val[0] when AnsiFunctionDeclarator result = AnsiFunctionDefinition.new(nil, val[0], val[1], @sym_tbl) when KandRFunctionDeclarator result = KandRFunctionDefinition.new(nil, val[0], [], val[1], @sym_tbl) when AbbreviatedFunctionDeclarator result = AnsiFunctionDefinition.new(nil, val[0], val[1], @sym_tbl) end result.head_token = val[0].head_token result.tail_token = val[1].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1807) def _reduce_268(val, _values, result) checkpoint(val[0].location) result = KandRFunctionDefinition.new(val[0], val[1], val[2], val[3], @sym_tbl) result.head_token = val[0].head_token result.tail_token = val[3].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1815) def _reduce_269(val, _values, result) checkpoint(val[0].location) case val[1] when AnsiFunctionDeclarator result = AnsiFunctionDefinition.new(val[0], val[1], val[2], @sym_tbl) when KandRFunctionDeclarator result = KandRFunctionDefinition.new(val[0], val[1], [], val[2], @sym_tbl) when AbbreviatedFunctionDeclarator result = AnsiFunctionDefinition.new(val[0], val[1], val[2], @sym_tbl) end result.head_token = val[0].head_token result.tail_token = val[2].tail_token result end .,., module_eval(<<'.,.,', 'parser.y', 1833) def _reduce_270(val, _values, result) checkpoint(val[0].location) result = val result end .,., module_eval(<<'.,.,', 'parser.y', 1838) def _reduce_271(val, _values, result) checkpoint(val[0].first.location) result = val[0].push(val[1]) result end .,., def _reduce_none(val, _values, result) val[0] end end # class Parser end # module Cc1 end # module AdLint adlint-3.2.14/lib/adlint/cc1/parser.y0000644000004100000410000015155112340630463017272 0ustar www-datawww-data# The ISO C99 parser. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ class AdLint::Cc1::Parser token IDENTIFIER TYPEDEF_NAME CONSTANT STRING_LITERAL SIZEOF TYPEDEF EXTERN STATIC AUTO REGISTER INLINE RESTRICT CHAR SHORT INT LONG SIGNED UNSIGNED FLOAT DOUBLE CONST VOLATILE VOID BOOL COMPLEX IMAGINARY STRUCT UNION ENUM CASE DEFAULT IF ELSE SWITCH WHILE DO FOR GOTO CONTINUE BREAK RETURN NULL TYPEOF ALIGNOF start translation_unit expect 1 # NOTE: To ignore dangling-else shift/reduce conflict. rule # # Expressions # primary_expression : IDENTIFIER { checkpoint(val[0].location) result = ObjectSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | CONSTANT { checkpoint(val[0].location) result = ConstantSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | STRING_LITERAL { checkpoint(val[0].location) result = StringLiteralSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | NULL { checkpoint(val[0].location) result = NullConstantSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | "(" expression ")" { checkpoint(val[0].location) result = GroupedExpression.new(val[1]) result.head_token = val[0] result.tail_token = val[2] } | "(" compound_statement ")" { checkpoint(val[0].location) E(:E0013, val[0].location) result = ErrorExpression.new(val[0]) result.head_token = val[0] result.tail_token = val[2] } ; postfix_expression : primary_expression | postfix_expression "[" expression "]" { checkpoint(val[0].location) result = ArraySubscriptExpression.new(val[0], val[2], val[1]) result.head_token = val[0].head_token result.tail_token = val[3] } | postfix_expression "(" ")" { checkpoint(val[0].location) result = FunctionCallExpression.new(val[0], [], val[1]) result.head_token = val[0].head_token result.tail_token = val[2] } | postfix_expression "(" argument_expression_list ")" { checkpoint(val[0].location) result = FunctionCallExpression.new(val[0], val[2], val [1]) result.head_token = val[0].head_token result.tail_token = val[3] } | postfix_expression "." IDENTIFIER { checkpoint(val[0].location) result = MemberAccessByValueExpression.new(val[0], val[2], val[1]) result.head_token = val[0].head_token result.tail_token = val[2] } | postfix_expression "->" IDENTIFIER { checkpoint(val[0].location) result = MemberAccessByPointerExpression.new(val[0], val[2], val[1]) result.head_token = val[0].head_token result.tail_token = val[2] } | postfix_expression "." CONSTANT { checkpoint(val[0].location) result = BitAccessByValueExpression.new(val[0], val[2], val[1]) result.head_token = val[0].head_token result.tail_token = val[2] } | postfix_expression "->" CONSTANT { checkpoint(val[0].location) result = BitAccessByPointerExpression.new(val[0], val[2], val[1]) result.head_token = val[0].head_token result.tail_token = val[2] } | postfix_expression "++" { checkpoint(val[0].location) result = PostfixIncrementExpression.new(val[1], val[0]) result.head_token = val[0].head_token result.tail_token = val[1] } | postfix_expression "--" { checkpoint(val[0].location) result = PostfixDecrementExpression.new(val[1], val[0]) result.head_token = val[0].head_token result.tail_token = val[1] } | "(" type_name ")" "{" initializer_list "}" { checkpoint(val[0].location) result = CompoundLiteralExpression.new(val[1], val[4], val[0]) result.head_token = val[0] result.tail_token = val[5] } | "(" type_name ")" "{" initializer_list "," "}" { checkpoint(val[0].location) result = CompoundLiteralExpression.new(val[1], val[4], val[0]) result.head_token = val[0] result.tail_token = val[6] } ; argument_expression_list : assignment_expression { checkpoint(val[0].location) result = val } | argument_expression_list "," assignment_expression { checkpoint(val[0].first.location) result = val[0].push(val[2]) } ; unary_expression : postfix_expression | "++" unary_expression { checkpoint(val[0].location) result = PrefixIncrementExpression.new(val[0], val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token } | "--" unary_expression { checkpoint(val[0].location) result = PrefixDecrementExpression.new(val[0], val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token } | "&" cast_expression { checkpoint(val[0].location) result = AddressExpression.new(val[0], val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token } | "*" cast_expression { checkpoint(val[0].location) result = IndirectionExpression.new(val[0], val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token } | unary_arithmetic_operator cast_expression { checkpoint(val[0].location) result = UnaryArithmeticExpression.new(val[0], val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token } | SIZEOF unary_expression { checkpoint(val[0].location) result = SizeofExpression.new(val[0], val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token } | SIZEOF "(" type_name ")" { checkpoint(val[0].location) result = SizeofTypeExpression.new(val[0], val[2]) result.head_token = val[0] result.tail_token = val[3] } | ALIGNOF unary_expression { checkpoint(val[0].location) result = AlignofExpression.new(val[0], val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token } | ALIGNOF "(" type_name ")" { checkpoint(val[0].location) result = AlignofTypeExpression.new(val[0], val[2]) result.head_token = val[0] result.tail_token = val[3] } | "&&" unary_expression { checkpoint(val[0].location) E(:E0014, val[0].location, val[0].value) result = ErrorExpression.new(val[0]) result.head_token = val[0] result.tail_token = val[1].tail_token } ; unary_arithmetic_operator : "+" | "-" | "~" | "!" ; cast_expression : unary_expression | "(" type_name ")" cast_expression { checkpoint(val[0].location) result = CastExpression.new(val[1], val[3]) result.head_token = val[0] result.tail_token = val[3].tail_token } ; multiplicative_expression : cast_expression | multiplicative_expression "*" cast_expression { checkpoint(val[0].location) result = MultiplicativeExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } | multiplicative_expression "/" cast_expression { checkpoint(val[0].location) result = MultiplicativeExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } | multiplicative_expression "%" cast_expression { checkpoint(val[0].location) result = MultiplicativeExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } ; additive_expression : multiplicative_expression | additive_expression "+" multiplicative_expression { checkpoint(val[0].location) result = AdditiveExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } | additive_expression "-" multiplicative_expression { checkpoint(val[0].location) result = AdditiveExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } ; shift_expression : additive_expression | shift_expression "<<" additive_expression { checkpoint(val[0].location) result = ShiftExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } | shift_expression ">>" additive_expression { checkpoint(val[0].location) result = ShiftExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } ; relational_expression : shift_expression | relational_expression "<" shift_expression { checkpoint(val[0].location) result = RelationalExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } | relational_expression ">" shift_expression { checkpoint(val[0].location) result = RelationalExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } | relational_expression "<=" shift_expression { checkpoint(val[0].location) result = RelationalExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } | relational_expression ">=" shift_expression { checkpoint(val[0].location) result = RelationalExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } ; equality_expression : relational_expression | equality_expression "==" relational_expression { checkpoint(val[0].location) result = EqualityExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } | equality_expression "!=" relational_expression { checkpoint(val[0].location) result = EqualityExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } ; and_expression : equality_expression | and_expression "&" equality_expression { checkpoint(val[0].location) result = AndExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } ; exclusive_or_expression : and_expression | exclusive_or_expression "^" and_expression { checkpoint(val[0].location) result = ExclusiveOrExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } ; inclusive_or_expression : exclusive_or_expression | inclusive_or_expression "|" exclusive_or_expression { checkpoint(val[0].location) result = InclusiveOrExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } ; logical_and_expression : inclusive_or_expression | logical_and_expression "&&" inclusive_or_expression { checkpoint(val[0].location) result = LogicalAndExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } ; logical_or_expression : logical_and_expression | logical_or_expression "||" logical_and_expression { checkpoint(val[0].location) result = LogicalOrExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } ; conditional_expression : logical_or_expression | logical_or_expression "?" expression ":" conditional_expression { checkpoint(val[0].location) result = ConditionalExpression.new(val[0], val[2], val[4], val[1]) result.head_token = val[0].head_token result.tail_token = val[4].tail_token } ; assignment_expression : conditional_expression | cast_expression "=" assignment_expression { checkpoint(val[0].location) result = SimpleAssignmentExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } | cast_expression compound_assignment_operator assignment_expression { checkpoint(val[0].location) result = CompoundAssignmentExpression.new(val[1], val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } ; compound_assignment_operator : "*=" | "/=" | "%=" | "+=" | "-=" | "<<=" | ">>=" | "&=" | "^=" | "|=" ; expression : assignment_expression | expression "," assignment_expression { checkpoint(val[0].location) case val[0] when CommaSeparatedExpression result = val[0].push(val[2]) else result = CommaSeparatedExpression.new(val[0]).push(val[2]) end } ; constant_expression : conditional_expression ; # # Declarations # declaration : declaration_specifiers ";" { checkpoint(val[0].location) @lexer.enable_identifier_translation result = Declaration.new(val[0], [], @sym_tbl) result.head_token = val[0].head_token result.tail_token = val[1] } | declaration_specifiers init_declarator_list ";" { checkpoint(val[0].location) @lexer.enable_identifier_translation result = Declaration.new(val[0], val[1], @sym_tbl) result.head_token = val[0].head_token result.tail_token = val[2] result.items.each do |item| case item when TypedefDeclaration @lexer.add_typedef_name(item.identifier) when FunctionDeclaration, VariableDeclaration, VariableDefinition @lexer.add_object_name(item.identifier) end end } ; global_declaration : declaration | init_declarator_list ";" { checkpoint(val[0].first.location) result = Declaration.new(nil, val[0], @sym_tbl) result.head_token = val[0].first.head_token result.tail_token = val[1] } | ";" { # NOTE: To accept extra semicolons in the global scope. E(:E0018, val[0].location) result = nil } ; declaration_specifiers : storage_class_specifier { checkpoint(val[0].location) result = DeclarationSpecifiers.new result.storage_class_specifier = val[0] result.head_token = result.tail_token = val[0] } | declaration_specifiers storage_class_specifier { checkpoint(val[0].location) result = val[0] result.storage_class_specifier = val[1] result.tail_token = val[1] } | type_specifier { checkpoint(val[0].location) result = DeclarationSpecifiers.new result.type_specifiers.push(val[0]) result.head_token = val[0].head_token result.tail_token = val[0].tail_token } | declaration_specifiers type_specifier { checkpoint(val[0].location) result = val[0] result.type_specifiers.push(val[1]) result.tail_token = val[1].tail_token } | type_qualifier { checkpoint(val[0].location) result = DeclarationSpecifiers.new result.type_qualifiers.push(val[0]) result.head_token = result.tail_token = val[0] } | declaration_specifiers type_qualifier { checkpoint(val[0].location) result = val[0] result.type_qualifiers.push(val[1]) result.tail_token = val[1] } | function_specifier { checkpoint(val[0].location) result = DeclarationSpecifiers.new result.function_specifier = val[0] result.head_token = result.tail_token = val[0] } | declaration_specifiers function_specifier { checkpoint(val[0].location) result = val[0] result.function_specifier = val[1] result.tail_token = val[1] } ; init_declarator_list : init_declarator { checkpoint(val[0].location) @lexer.disable_identifier_translation result = val } | init_declarator_list "," init_declarator { checkpoint(val[0].first.location) @lexer.disable_identifier_translation result = val[0].push(val[2]) } ; init_declarator : declarator { checkpoint(val[0].location) result = InitDeclarator.new(val[0], nil, nil) result.head_token = val[0].head_token result.tail_token = val[0].tail_token } | declarator "=" initializer { checkpoint(val[0].location) result = InitDeclarator.new(val[0], val[2], val[1]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } ; storage_class_specifier : TYPEDEF | EXTERN | STATIC | AUTO | REGISTER ; type_specifier : VOID { checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | CHAR { checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | SHORT { checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | INT { checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | LONG { checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | FLOAT { checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | DOUBLE { checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | SIGNED { checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | UNSIGNED { checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | BOOL { checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | COMPLEX { checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | IMAGINARY { checkpoint(val[0].location) @lexer.disable_identifier_translation result = StandardTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | TYPEDEF_NAME { checkpoint(val[0].location) @lexer.disable_identifier_translation result = TypedefTypeSpecifier.new(val[0]) result.head_token = result.tail_token = val[0] } | struct_or_union_specifier { checkpoint(val[0].location) @lexer.disable_identifier_translation result = val[0] } | enum_specifier { checkpoint(val[0].location) @lexer.disable_identifier_translation result = val[0] } | TYPEOF "(" constant_expression ")" { checkpoint(val[0].location) @lexer.disable_identifier_translation val[2].full = true result = TypeofTypeSpecifier.new(val[2], nil) result.head_token = val[0] result.tail_token = val[3] } | TYPEOF "(" type_name ")" { checkpoint(val[0].location) @lexer.disable_identifier_translation result = TypeofTypeSpecifier.new(nil, val[2]) result.head_token = val[0] result.tail_token = val[3] } ; struct_or_union_specifier : STRUCT IDENTIFIER "{" struct_declaration_list "}" { checkpoint(val[0].location) result = StructSpecifier.new(val[1], val[3]) result.head_token = val[0] result.tail_token = val[4] } | STRUCT IDENTIFIER "{" "}" { checkpoint(val[0].location) result = StructSpecifier.new(val[1], []) result.head_token = val[0] result.tail_token = val[3] } | UNION IDENTIFIER "{" struct_declaration_list "}" { checkpoint(val[0].location) result = UnionSpecifier.new(val[1], val[3]) result.head_token = val[0] result.tail_token = val[4] } | UNION IDENTIFIER "{" "}" { checkpoint(val[0].location) result = UnionSpecifier.new(val[1], []) result.head_token = val[0] result.tail_token = val[3] } | STRUCT "{" struct_declaration_list "}" { checkpoint(val[0].location) result = StructSpecifier.new(create_anon_tag_name(val[0]), val[2], true) result.head_token = val[0] result.tail_token = val[3] } | STRUCT "{" "}" { checkpoint(val[0].location) result = StructSpecifier.new(create_anon_tag_name(val[0]), [], true) result.head_token = val[0] result.tail_token = val[2] } | UNION "{" struct_declaration_list "}" { checkpoint(val[0].location) result = UnionSpecifier.new(create_anon_tag_name(val[0]), val[2], true) result.head_token = val[0] result.tail_token = val[3] } | UNION "{" "}" { checkpoint(val[0].location) result = UnionSpecifier.new(create_anon_tag_name(val[0]), [], true) result.head_token = val[0] result.tail_token = val[2] } | STRUCT IDENTIFIER { checkpoint(val[0].location) result = StructSpecifier.new(val[1], nil) result.head_token = val[0] result.tail_token = val[1] } | UNION IDENTIFIER { checkpoint(val[0].location) result = UnionSpecifier.new(val[1], nil) result.head_token = val[0] result.tail_token = val[1] } ; struct_declaration_list : struct_declaration { checkpoint(val[0].location) @lexer.enable_identifier_translation result = val } | struct_declaration_list struct_declaration { checkpoint(val[0].first.location) @lexer.enable_identifier_translation result = val[0].push(val[1]) } ; struct_declaration : specifier_qualifier_list ";" { checkpoint(val[0].location) result = StructDeclaration.new(val[0], []) result.head_token = val[0].head_token result.tail_token = val[1] } | specifier_qualifier_list struct_declarator_list ";" { checkpoint(val[0].location) result = StructDeclaration.new(val[0], val[1]) result.head_token = val[0].head_token result.tail_token = val[2] } ; specifier_qualifier_list : specifier_qualifier_list type_specifier { checkpoint(val[0].location) result = val[0] result.type_specifiers.push(val[1]) result.tail_token = val[1].tail_token } | type_specifier { checkpoint(val[0].location) result = SpecifierQualifierList.new result.type_specifiers.push(val[0]) result.head_token = val[0].head_token result.tail_token = val[0].tail_token } | specifier_qualifier_list type_qualifier { checkpoint(val[0].location) result = val[0] result.type_qualifiers.push(val[1]) result.tail_token = val[1] } | type_qualifier { checkpoint(val[0].location) result = SpecifierQualifierList.new result.type_qualifiers.push(val[0]) result.head_token = result.tail_token = val[0] } ; struct_declarator_list : struct_declarator { checkpoint(val[0].location) result = val } | struct_declarator_list "," struct_declarator { checkpoint(val[0].first.location) result = val[0].push(val[2]) } ; struct_declarator : declarator { checkpoint(val[0].location) result = StructDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[0].tail_token } | ":" constant_expression { checkpoint(val[0].location) val[1].full = true result = StructDeclarator.new(nil, val[1]) result.head_token = val[0] result.tail_token = val[1].tail_token } | declarator ":" constant_expression { checkpoint(val[0].location) val[2].full = true result = StructDeclarator.new(val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } ; enum_specifier : ENUM "{" enumerator_list "}" { checkpoint(val[0].location) result = EnumSpecifier.new(create_anon_tag_name(val[0]), val[2], nil, true) result.head_token = val[0] result.tail_token = val[3] result.enumerators.each do |enum| @lexer.add_enumerator_name(enum.identifier) end } | ENUM IDENTIFIER "{" enumerator_list "}" { checkpoint(val[0].location) result = EnumSpecifier.new(val[1], val[3]) result.head_token = val[0] result.tail_token = val[4] result.enumerators.each do |enum| @lexer.add_enumerator_name(enum.identifier) end } | ENUM "{" enumerator_list "," "}" { checkpoint(val[0].location) result = EnumSpecifier.new(create_anon_tag_name(val[0]), val[2], val[3], true) result.head_token = val[0] result.tail_token = val[4] result.enumerators.each do |enum| @lexer.add_enumerator_name(enum.identifier) end } | ENUM IDENTIFIER "{" enumerator_list "," "}" { checkpoint(val[0].location) result = EnumSpecifier.new(val[1], val[3], val[4]) result.head_token = val[0] result.tail_token = val[5] result.enumerators.each do |enum| @lexer.add_enumerator_name(enum.identifier) end } | ENUM IDENTIFIER { checkpoint(val[0].location) result = EnumSpecifier.new(val[1], nil) result.head_token = val[0] result.tail_token = val[1] } ; enumerator_list : enumerator { checkpoint(val[0].location) result = val } | enumerator_list "," enumerator { checkpoint(val[0].first.location) result = val[0].push(val[2]) } ; enumerator : enumerator_name { checkpoint(val[0].location) sym = @sym_tbl.create_new_symbol(EnumeratorName, val[0]) result = Enumerator.new(val[0], nil, sym) result.head_token = result.tail_token = val[0] } | enumerator_name "=" constant_expression { checkpoint(val[0].location) val[2].full = true sym = @sym_tbl.create_new_symbol(EnumeratorName, val[0]) result = Enumerator.new(val[0], val[2], sym) result.head_token = val[0] result.tail_token = val[2].tail_token } ; enumerator_name : IDENTIFIER | TYPEDEF_NAME { result = val[0].class.new(:IDENTIFIER, val[0].value, val[0].location) } ; type_qualifier : CONST | VOLATILE | RESTRICT ; function_specifier : INLINE ; declarator : pointer direct_declarator { checkpoint(val[0].first.location) result = val[1] result.pointer = val[0] result.head_token = val[0].first result.full = true } | direct_declarator { checkpoint(val[0].location) result = val[0] result.full = true } ; direct_declarator : IDENTIFIER { checkpoint(val[0].location) @lexer.enable_identifier_translation result = IdentifierDeclarator.new(val[0]) result.head_token = result.tail_token = val[0] } | "(" declarator ")" { checkpoint(val[0].location) result = GroupedDeclarator.new(val[1]) result.head_token = val[0] result.tail_token = val[2] } | direct_declarator "[" type_qualifier_list assignment_expression "]" { checkpoint(val[0].location) val[3].full = true result = ArrayDeclarator.new(val[0], val[3]) result.head_token = val[0].head_token result.tail_token = val[4] } | direct_declarator "[" type_qualifier_list "]" { checkpoint(val[0].location) result = ArrayDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[3] } | direct_declarator "[" assignment_expression "]" { checkpoint(val[0].location) val[2].full = true result = ArrayDeclarator.new(val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[3] } | direct_declarator "[" STATIC type_qualifier_list assignment_expression "]" { checkpoint(val[0].location) val[4].full = true result = ArrayDeclarator.new(val[0], val[4]) result.head_token = val[0].head_token result.tail_token = val[5] } | direct_declarator "[" type_qualifier_list STATIC assignment_expression "]" { checkpoint(val[0].location) val[4].full = true result = ArrayDeclarator.new(val[0], val[4]) result.head_token = val[0].head_token result.tail_token = val[5] } | direct_declarator "[" type_qualifier_list "*" "]" { checkpoint(val[0].location) result = ArrayDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[4] } | direct_declarator "[" "*" "]" { checkpoint(val[0].location) result = ArrayDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[3] } | direct_declarator "[" "]" { checkpoint(val[0].location) result = ArrayDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[2] } | direct_declarator "(" { @lexer.enable_identifier_translation } parameter_type_list ")" { checkpoint(val[0].location) result = AnsiFunctionDeclarator.new(val[0], val[3]) result.head_token = val[0].head_token result.tail_token = val[4] } | direct_declarator "(" identifier_list ")" { checkpoint(val[0].location) result = KandRFunctionDeclarator.new(val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[3] } | direct_declarator "(" ")" { checkpoint(val[0].location) result = AbbreviatedFunctionDeclarator.new(val[0]) result.head_token = val[0].head_token result.tail_token = val[2] } ; pointer : "*" { checkpoint(val[0].location) result = val } | "*" type_qualifier_list { checkpoint(val[0].location) result = val[1].unshift(val[0]) } | "*" pointer { checkpoint(val[0].location) result = val[1].unshift(val[0]) } | "*" type_qualifier_list pointer { checkpoint(val[0].location) result = val[1].unshift(val[0]).concat(val[2]) } ; type_qualifier_list : type_qualifier { checkpoint(val[0].location) result = val } | type_qualifier_list type_qualifier { checkpoint(val[0].first.location) result = val[0].push(val[1]) } ; parameter_type_list : parameter_list { checkpoint(val[0].first.location) result = ParameterTypeList.new(val[0], false) result.head_token = val[0].first.head_token result.tail_token = val[0].last.tail_token } | parameter_list "," "..." { checkpoint(val[0].first.location) result = ParameterTypeList.new(val[0], true) result.head_token = val[0].first.head_token result.tail_token = val[2] } ; parameter_list : parameter_declaration { checkpoint(val[0].location) result = val } | parameter_list "," parameter_declaration { checkpoint(val[0].first.location) result = val[0].push(val[2]) } ; parameter_declaration : declaration_specifiers declarator { checkpoint(val[0].location) @lexer.enable_identifier_translation result = ParameterDeclaration.new(val[0], val[1]) result.head_token = val[0].head_token result.tail_token = val[1].tail_token } | declaration_specifiers abstract_declarator { checkpoint(val[0].location) @lexer.enable_identifier_translation result = ParameterDeclaration.new(val[0], val[1]) result.head_token = val[0].head_token result.tail_token = val[1].tail_token } | declaration_specifiers { checkpoint(val[0].location) @lexer.enable_identifier_translation result = ParameterDeclaration.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[0].tail_token } ; identifier_list : IDENTIFIER { checkpoint(val[0].location) result = val } | identifier_list "," IDENTIFIER { checkpoint(val[0].first.location) result = val[0].push(val[2]) } ; type_name : specifier_qualifier_list { checkpoint(val[0].location) @lexer.enable_identifier_translation result = TypeName.new(val[0], nil, @sym_tbl) result.head_token = val[0].head_token result.tail_token = val[0].tail_token } | specifier_qualifier_list abstract_declarator { checkpoint(val[0].location) @lexer.enable_identifier_translation result = TypeName.new(val[0], val[1], @sym_tbl) result.head_token = val[0].head_token result.tail_token = val[1].tail_token } ; abstract_declarator : pointer { checkpoint(val[0].first.location) @lexer.enable_identifier_translation result = PointerAbstractDeclarator.new(nil, val[0]) result.head_token = val[0].first result.tail_token = val[0].last result.full = true } | pointer direct_abstract_declarator { checkpoint(val[0].first.location) @lexer.enable_identifier_translation result = PointerAbstractDeclarator.new(val[1], val[0]) result.head_token = val[0].first result.tail_token = val[1].tail_token result.full = true } | direct_abstract_declarator { checkpoint(val[0].location) result = val[0] result.full = true } ; direct_abstract_declarator : "(" abstract_declarator ")" { checkpoint(val[0].location) result = GroupedAbstractDeclarator.new(val[1]) result.head_token = val[0] result.tail_token = val[2] } | "[" "]" { checkpoint(val[0].location) result = ArrayAbstractDeclarator.new(nil, nil) result.head_token = val[0] result.tail_token = val[1] } | "[" assignment_expression "]" { checkpoint(val[0].location) val[1].full = true result = ArrayAbstractDeclarator.new(nil, val[1]) result.head_token = val[0] result.tail_token = val[2] } | direct_abstract_declarator "[" "]" { checkpoint(val[0].location) result = ArrayAbstractDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[2] } | direct_abstract_declarator "[" assignment_expression "]" { checkpoint(val[0].location) val[2].full = true result = ArrayAbstractDeclarator.new(val[0], val[2]) result.head_token = val[0].head_token result.tail_token = val[3] } | "[" "*" "]" { checkpoint(val[0].location) result = ArrayAbstractDeclarator.new(nil, nil) result.head_token = val[0] result.tail_token = val[2] } | direct_abstract_declarator "[" "*" "]" { checkpoint(val[0].location) result = ArrayAbstractDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[3] } | "(" ")" { checkpoint(val[0].location) result = FunctionAbstractDeclarator.new(nil, nil) result.head_token = val[0] result.tail_token = val[1] } | "(" { @lexer.enable_identifier_translation } parameter_type_list ")" { checkpoint(val[0].location) result = FunctionAbstractDeclarator.new(nil, val[2]) result.head_token = val[0] result.tail_token = val[3] } | direct_abstract_declarator "(" ")" { checkpoint(val[0].location) result = FunctionAbstractDeclarator.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[2] } | direct_abstract_declarator "(" { @lexer.enable_identifier_translation } parameter_type_list ")" { checkpoint(val[0].location) result = FunctionAbstractDeclarator.new(val[0], val[3]) result.head_token = val[0].head_token result.tail_token = val[4] } ; initializer : assignment_expression { checkpoint(val[0].location) val[0].full = true result = Initializer.new(val[0], nil) result.head_token = val[0].head_token result.tail_token = val[0].tail_token } | "{" "}" { checkpoint(val[0].location) result = Initializer.new(nil, nil) result.head_token = val[0] result.tail_token = val[1] } | "{" initializer_list "}" { checkpoint(val[0].location) result = Initializer.new(nil, val[1]) result.head_token = val[0] result.tail_token = val[2] } | "{" initializer_list "," "}" { checkpoint(val[0].location) result = Initializer.new(nil, val[1]) result.head_token = val[0] result.tail_token = val[3] } ; initializer_list : initializer { checkpoint(val[0].location) result = val } | designation initializer { checkpoint(val[1].location) result = [val[1]] } | initializer_list "," initializer { checkpoint(val[0].first.location) result = val[0].push(val[2]) } | initializer_list "," designation initializer { checkpoint(val[0].first.location) result = val[0].push(val[3]) } ; designation : designator_list "=" ; designator_list : designator | designator_list designator ; designator : "[" constant_expression "]" | "." IDENTIFIER ; # # Statements # statement : labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement ; labeled_statement : label_name ":" statement { checkpoint(val[0].location) result = GenericLabeledStatement.new(val[0], val[2]) result.head_token = val[0] result.tail_token = val[2].tail_token } | CASE constant_expression ":" statement { checkpoint(val[0].location) val[1].full = true result = CaseLabeledStatement.new(val[1], val[3]) result.head_token = val[0] result.tail_token = val[3].tail_token } | DEFAULT ":" statement { checkpoint(val[0].location) result = DefaultLabeledStatement.new(val[2]) result.head_token = val[0] result.tail_token = val[2].tail_token } ; label_name : IDENTIFIER | TYPEDEF_NAME { result = val[0].class.new(:IDENTIFIER, val[0].value, val[0].location) } ; compound_statement : "{" "}" { checkpoint(val[0].location) result = CompoundStatement.new([]) result.head_token = val[0] result.tail_token = val[1] } | "{" { @lexer.enter_scope } block_item_list { @lexer.leave_scope } "}" { checkpoint(val[0].location) result = CompoundStatement.new(val[2]) result.head_token = val[0] result.tail_token = val[4] } ; block_item_list : block_item { checkpoint(val[0].location) result = val } | block_item_list block_item { checkpoint(val[0].first.location) result = val[0].push(val[1]) } ; block_item : declaration | statement | local_function_definition ; expression_statement : ";" { checkpoint(val[0].location) result = ExpressionStatement.new(nil) result.head_token = result.tail_token = val[0] } | expression ";" { checkpoint(val[0].location) val[0].full = true result = ExpressionStatement.new(val[0]) result.head_token = val[0].head_token result.tail_token = val[1] } ; selection_statement : IF "(" expression ")" statement { checkpoint(val[0].location) val[2].full = true result = IfStatement.new(val[2], val[4], val[3]) result.head_token = val[0] result.tail_token = val[4].tail_token } | IF "(" expression ")" statement ELSE statement { checkpoint(val[0].location) val[2].full = true result = IfElseStatement.new(val[2], val[4], val[6], val[3], val[5]) result.head_token = val[0] result.tail_token = val[6].tail_token } | SWITCH "(" expression ")" statement { checkpoint(val[0].location) val[2].full = true result = SwitchStatement.new(val[2], val[4]) result.head_token = val[0] result.tail_token = val[4].tail_token } ; iteration_statement : WHILE "(" expression ")" statement { checkpoint(val[0].location) val[2].full = true result = WhileStatement.new(val[2], val[4], val[3]) result.head_token = val[0] result.tail_token = val[4].tail_token } | DO statement WHILE "(" expression ")" ";" { checkpoint(val[0].location) val[4].full = true result = DoStatement.new(val[1], val[4], val[0], val[2]) result.head_token = val[0] result.tail_token = val[6] } | FOR "(" expression_statement expression_statement ")" statement { checkpoint(val[0].location) result = ForStatement.new(val[2], val[3], nil, val[5], val[4]) result.head_token = val[0] result.tail_token = val[5].tail_token } | FOR "(" expression_statement expression_statement expression ")" statement { checkpoint(val[0].location) val[4].full = true result = ForStatement.new(val[2], val[3], val[4], val[6], val[5]) result.head_token = val[0] result.tail_token = val[6].tail_token } | FOR "(" declaration expression_statement ")" statement { checkpoint(val[0].location) result = C99ForStatement.new(val[2], val[3], nil, val[5], val[4]) result.head_token = val[0] result.tail_token = val[5].tail_token } | FOR "(" declaration expression_statement expression ")" statement { checkpoint(val[0].location) val[4].full = true result = C99ForStatement.new(val[2], val[3], val[4], val[6], val[5]) result.head_token = val[0] result.tail_token = val[6].tail_token } ; jump_statement : GOTO label_name ";" { checkpoint(val[0].location) result = GotoStatement.new(val[1]) result.head_token = val[0] result.tail_token = val[2] } | GOTO "*" expression ";" { checkpoint(val[0].location) E(:E0015, val[1].location, val[1].value) result = ErrorStatement.new(val[1]) result.head_token = val[0] result.tail_token = val[3] } | CONTINUE ";" { checkpoint(val[0].location) result = ContinueStatement.new result.head_token = val[0] result.tail_token = val[1] } | BREAK ";" { checkpoint(val[0].location) result = BreakStatement.new result.head_token = val[0] result.tail_token = val[1] } | RETURN ";" { checkpoint(val[0].location) result = ReturnStatement.new(nil) result.head_token = val[0] result.tail_token = val[1] } | RETURN expression ";" { checkpoint(val[0].location) val[1].full = true result = ReturnStatement.new(val[1]) result.head_token = val[0] result.tail_token = val[2] } ; # # External definitions # translation_unit : { result = TranslationUnit.new } | translation_unit external_declaration { checkpoint(val[0].location) result = val[0] val[1] and result.push(val[1]) } ; external_declaration : function_definition | global_declaration ; function_definition : declaration_specifiers declarator declaration_list compound_statement { checkpoint(val[0].location) result = KandRFunctionDefinition.new(val[0], val[1], val[2], val[3], @sym_tbl) result.head_token = val[0].head_token result.tail_token = val[3].tail_token } | declaration_specifiers declarator compound_statement { checkpoint(val[0].location) case val[1] when AnsiFunctionDeclarator result = AnsiFunctionDefinition.new(val[0], val[1], val[2], @sym_tbl) when KandRFunctionDeclarator result = KandRFunctionDefinition.new(val[0], val[1], [], val[2], @sym_tbl) when AbbreviatedFunctionDeclarator result = AnsiFunctionDefinition.new(val[0], val[1], val[2], @sym_tbl) end result.head_token = val[0].head_token result.tail_token = val[2].tail_token } | declarator declaration_list compound_statement { checkpoint(val[0].location) result = KandRFunctionDefinition.new(nil, val[0], val[1], val[2], @sym_tbl) result.head_token = val[0].head_token result.tail_token = val[2].tail_token } | declarator compound_statement { checkpoint(val[0].location) case val[0] when AnsiFunctionDeclarator result = AnsiFunctionDefinition.new(nil, val[0], val[1], @sym_tbl) when KandRFunctionDeclarator result = KandRFunctionDefinition.new(nil, val[0], [], val[1], @sym_tbl) when AbbreviatedFunctionDeclarator result = AnsiFunctionDefinition.new(nil, val[0], val[1], @sym_tbl) end result.head_token = val[0].head_token result.tail_token = val[1].tail_token } ; local_function_definition : declaration_specifiers declarator declaration_list compound_statement { checkpoint(val[0].location) result = KandRFunctionDefinition.new(val[0], val[1], val[2], val[3], @sym_tbl) result.head_token = val[0].head_token result.tail_token = val[3].tail_token } | declaration_specifiers declarator compound_statement { checkpoint(val[0].location) case val[1] when AnsiFunctionDeclarator result = AnsiFunctionDefinition.new(val[0], val[1], val[2], @sym_tbl) when KandRFunctionDeclarator result = KandRFunctionDefinition.new(val[0], val[1], [], val[2], @sym_tbl) when AbbreviatedFunctionDeclarator result = AnsiFunctionDefinition.new(val[0], val[1], val[2], @sym_tbl) end result.head_token = val[0].head_token result.tail_token = val[2].tail_token } ; declaration_list : declaration { checkpoint(val[0].location) result = val } | declaration_list declaration { checkpoint(val[0].first.location) result = val[0].push(val[1]) } ; end ---- header require "adlint/error" require "adlint/symbol" require "adlint/monitor" require "adlint/util" require "adlint/cc1/lexer" require "adlint/cc1/syntax" ---- inner include ReportUtil include MonitorUtil def initialize(phase_ctxt) @phase_ctxt = phase_ctxt @lexer = create_lexer(phase_ctxt[:cc1_source]) @sym_tbl = phase_ctxt[:symbol_table] @token_array = [] @anon_tag_no = 0 end attr_reader :token_array def execute do_parse end extend Pluggable def_plugin :on_string_literals_concatenated private def create_lexer(pp_src) Lexer.new(pp_src).tap { |lexer| attach_lexer_plugin(lexer) } end def attach_lexer_plugin(lexer) lexer.on_string_literals_concatenated += lambda { |*args| on_string_literals_concatenated.invoke(*args) } end def next_token if tok = @lexer.next_token @token_array.push(tok) [tok.type, tok] else nil end end def on_error(err_tok, err_val, *) if fst_tok = @token_array[-2] and snd_tok = @token_array[-1] E(:E0008, loc_of(fst_tok), "#{val_of(fst_tok)} #{val_of(snd_tok)}") raise ParseError.new(loc_of(fst_tok), @phase_ctxt.msg_fpath, @phase_ctxt.log_fpath) else E(:E0008, loc_of(err_val), val_of(err_val)) raise ParseError.new(loc_of(err_val), @phase_ctxt.msg_fpath, @phase_ctxt.log_fpath) end end def loc_of(val) val == "$" ? Location.new : val.location end def val_of(tok) tok == "$" ? "EOF" : tok.value end def create_anon_tag_name(base_tok) Token.new(:IDENTIFIER, "__adlint__anon_#{@anon_tag_no += 1}", base_tok.location) end extend Forwardable def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def_delegator :@phase_ctxt, :monitor private :monitor # vim:ft=racc:sw=2:ts=2:sts=2:et: adlint-3.2.14/lib/adlint/cc1/enum.rb0000644000004100000410000000310412340630463017063 0ustar www-datawww-data# C Enumerators. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: module Cc1 #:nodoc: class EnumeratorTable def initialize @enumerators = {} end def define(enumerator) @enumerators[enumerator.identifier.value] = enumerator end def lookup(name_str) @enumerators[name_str] end def designators @enumerators.keys.to_set end end end end adlint-3.2.14/lib/adlint/cc1/operator.rb0000644000004100000410000000512412340630463017756 0ustar www-datawww-data# Comparison operator of controlling expressions. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: module Cc1 #:nodoc: class Operator def initialize(tok_or_sym) case tok_or_sym when Token @sym = tok_or_sym.type.to_sym when ::Symbol @sym = tok_or_sym end end def to_sym @sym end def to_s @sym.to_s end def eql?(rhs) case rhs when Operator @sym == rhs.to_sym else super end end alias :== :eql? def hash @sym.hash end end class ComparisonOperator < Operator def for_complement case self when Operator::EQ then Operator::NE when Operator::NE then Operator::EQ when Operator::LT then Operator::GE when Operator::GT then Operator::LE when Operator::LE then Operator::GT when Operator::GE then Operator::LT else self end end def for_commutation case self when Operator::LT then Operator::GT when Operator::GT then Operator::LT when Operator::LE then Operator::GE when Operator::GE then Operator::LE else self end end end class Operator EQ = ComparisonOperator.new(:==) NE = ComparisonOperator.new(:!=) LT = ComparisonOperator.new(:<) GT = ComparisonOperator.new(:>) LE = ComparisonOperator.new(:<=) GE = ComparisonOperator.new(:>=) end end end adlint-3.2.14/lib/adlint/cc1/resolver.rb0000644000004100000410000001762412340630463017774 0ustar www-datawww-data# C type resolver. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/monitor" require "adlint/cc1/type" require "adlint/cc1/syntax" module AdLint #:nodoc: module Cc1 #:nodoc: class TypeResolver < SyntaxTreeVisitor include MonitorUtil def initialize(type_tbl) @type_table = type_tbl end attr_reader :type_table def resolve(ast) ast.accept(self) @type_table end def visit_struct_type_declaration(node) checkpoint(node.location) node.struct_declarations.each { |dcl| dcl.accept(self) } node.type = @type_table.install_struct_type(node) end def visit_union_type_declaration(node) checkpoint(node.location) node.struct_declarations.each { |dcl| dcl.accept(self) } node.type = @type_table.install_union_type(node) end def visit_struct_declaration(node) node.items.each { |item| item.accept(self) } end def visit_member_declaration(node) checkpoint(node.location) node.specifier_qualifier_list.accept(self) node.struct_declarator.accept(self) if node.struct_declarator type_quals = node.specifier_qualifier_list.type_qualifiers type_specs = node.specifier_qualifier_list.type_specifiers struct_dcr = node.struct_declarator type = lookup_variable_type(type_quals, type_specs, struct_dcr ? struct_dcr.declarator : nil) type = @type_table.pointer_type(type) if type.function? if struct_dcr and struct_dcr.bitfield? if bit_width = compute_bitfield_width(struct_dcr) type = @type_table.bitfield_type(type, bit_width) else type = fallback_type end end node.type = type end def visit_enum_type_declaration(node) checkpoint(node.location) node.type = @type_table.install_enum_type(node) node.enumerators.each { |enum| enum.type = node.type } end def visit_typedef_declaration(node) checkpoint(node.location) node.declaration_specifiers.accept(self) node.init_declarator.accept(self) node.type = @type_table.install_user_type(node) end def visit_function_declaration(node) checkpoint(node.location) node.declaration_specifiers.accept(self) if node.declaration_specifiers node.init_declarator.accept(self) if dcl_specs = node.declaration_specifiers type_quals = dcl_specs.type_qualifiers type_specs = dcl_specs.type_specifiers else type_quals = [] type_specs = [] end node.type = lookup_variable_type(type_quals, type_specs, node.init_declarator.declarator) end def visit_parameter_declaration(node) checkpoint(node.location) node.declaration_specifiers.accept(self) if node.declaration_specifiers node.declarator.accept(self) if node.declarator if dcl_specs = node.declaration_specifiers type_quals = dcl_specs.type_qualifiers type_specs = dcl_specs.type_specifiers else type_quals = [] type_specs = [] end type = lookup_variable_type(type_quals, type_specs, node.declarator) if type.function? node.type = @type_table.pointer_type(type) else node.type = type end end def visit_variable_declaration(node) checkpoint(node.location) node.declaration_specifiers.accept(self) if node.declaration_specifiers node.declarator.accept(self) if dcl_specs = node.declaration_specifiers type_quals = dcl_specs.type_qualifiers type_specs = dcl_specs.type_specifiers else type_quals = [] type_specs = [] end type = lookup_variable_type(type_quals, type_specs, node.declarator) if type.function? node.type = @type_table.pointer_type(type) else node.type = type end end def visit_variable_definition(node) checkpoint(node.location) node.declaration_specifiers.accept(self) if node.declaration_specifiers node.init_declarator.accept(self) if dcl_specs = node.declaration_specifiers type_quals = dcl_specs.type_qualifiers type_specs = dcl_specs.type_specifiers else type_quals = [] type_specs = [] end type = lookup_variable_type(type_quals, type_specs, node.init_declarator.declarator) if type.function? node.type = @type_table.pointer_type(type) else node.type = type end end def visit_ansi_function_definition(node) checkpoint(node.location) super node.type = lookup_function_type(node) end def visit_kandr_function_definition(node) checkpoint(node.location) super node.type = lookup_function_type(node) end def visit_parameter_definition(node) checkpoint(node.location) node.declaration_specifiers.accept(self) if node.declaration_specifiers node.declarator.accept(self) if node.declarator type = @type_table.lookup_parameter_type(node, interpreter) type = @type_table.pointer_type(type) if type.function? node.type = type end def visit_type_name(node) checkpoint(node.location) super type_quals = node.specifier_qualifier_list.type_qualifiers type_specs = node.specifier_qualifier_list.type_specifiers node.type = lookup_variable_type(type_quals, type_specs, node.abstract_declarator) end def visit_compound_statement(node) @type_table.enter_scope super @type_table.leave_scope end private def lookup_variable_type(type_quals, type_specs, dcl) @type_table.lookup_or_install_type( type_quals, type_specs, dcl, interpreter) || fallback_type end def lookup_function_type(fun_def) @type_table.lookup_function_type(fun_def) || fallback_type end def compute_bitfield_width(struct_dcl) if expr = struct_dcl.expression if interpreter obj = interpreter.execute(expr) else obj = Interpreter.new(@type_table).execute(expr) end if obj.variable? && obj.value.scalar? return obj.value.unique_sample end end nil end extend Forwardable def_delegator :@type_table, :monitor private :monitor end class StaticTypeResolver < TypeResolver private def interpreter nil end def fallback_type type_table.unresolved_type end end class DynamicTypeResolver < TypeResolver def initialize(type_tbl, interp) super(type_tbl) @interpreter = interp end attr_reader :interpreter private def fallback_type type_table.undeclared_type end end end end adlint-3.2.14/lib/adlint/cc1/object.rb0000644000004100000410000010335112340630463017372 0ustar www-datawww-data# C runtime object model. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/util" require "adlint/cc1/syntax" require "adlint/cc1/value" require "adlint/cc1/scope" require "adlint/cc1/seqp" require "adlint/cc1/operator" module AdLint #:nodoc: module Cc1 #:nodoc: module Bindable attr_accessor :binding def bind_to(target) case target when Memory Binding.bind(self, target) when Object Binding.bind(target, self) end end def be_alias_to(mem) case mem when Memory Binding.create_alias(self, mem) else raise TypeError, "an object cannot be an alias to other objects." end end end class Binding def self.bind(obj, mem) binding = new(obj, mem) obj.binding = binding mem.binding = binding binding end def self.create_alias(obj, mem) binding = new(obj, mem) obj.binding = binding binding end def initialize(obj, mem) @object = obj @memory = mem end private_class_method :new attr_reader :object attr_reader :memory end class Object include Bindable def initialize(dcl_or_def = nil) @declarations_and_definitions = [dcl_or_def].compact end attr_reader :declarations_and_definitions def storage_class_specifiers @declarations_and_definitions.map { |dcl_or_def| dcl_or_def.storage_class_specifier }.compact end def declared_as_extern? sc_spec = first_storage_class_specifier sc_spec.nil? || sc_spec.type == :EXTERN end def declared_as_static? sc_spec = first_storage_class_specifier and sc_spec.type == :STATIC end def declared_as_auto? sc_spec = first_storage_class_specifier and sc_spec.type == :AUTO end def declared_as_register? sc_spec = first_storage_class_specifier and sc_spec.type == :REGISTER end def designated_by_lvalue? subclass_responsibility end def named? subclass_responsibility end def temporary? subclass_responsibility end def function? subclass_responsibility end def variable? subclass_responsibility end private def first_storage_class_specifier if @declarations_and_definitions.empty? nil else @declarations_and_definitions.first.storage_class_specifier end end end module InterpObjectBridge # NOTE: InterpreterMediator includes this module to bridge runtime object # creator to this layer. def _interp_object_bridge_ { create_tmpvar: method(:create_tmpvar), scalar_value_of: method(:scalar_value_of) } end end class TypedObject < Object def initialize(type, dcl_or_def = nil) super(dcl_or_def) @type = type end attr_reader :type def to_variable(interp_bridge) if function? or variable? && @type.array? to_pointer(interp_bridge) else self end end def to_pointer(interp_bridge) if @type.array? ptr_type = @type.type_table.pointer_type(@type.base_type) else ptr_type = @type.type_table.pointer_type(@type) end interp_bridge[:create_tmpvar][ptr_type, to_pointer_value(interp_bridge)] end def to_value(interp_bridge) if @type.array? || @type.function? to_pointer_value(interp_bridge) else value.to_single_value end end def to_pointer_value(interp_bridge) interp_bridge[:scalar_value_of][binding.memory.address] end end # == DESCRIPTION # === Variable class hierarchy # Variable # <-- ScopedVariable # <-- OuterVariable # <-- NamedVariable --------> Nameable <> # <-- AliasVariable ^ # <-- TemporaryVariable | # <-- InnerVariable -------------+ # <-- ArrayElementVariable # <-- CompositeMemberVariable class Variable < TypedObject def initialize(mem, dcl_or_def, type) super(type, dcl_or_def) relate_to_memory(mem) end def function? false end def variable? true end def name subclass_responsibility end def named? false end def inner? subclass_responsibility end def outer? !inner? end def value binding.memory.read end def assign!(val, src = nil, br = nil) # NOTE: Length of the incomplete array type should be deducted while # initializer evaluation. So, adjustment of the assigning value # can be done at this point by Value#coerce_to(type). # NOTE: Domain of the assigning value must be narrowed before writing to # the memory by Value#coerce_to(type). binding.memory.write(val.coerce_to(type), src, br) end def uninitialize! assign!(self.type.undefined_value) end def narrow_value_domain!(op, val) assign!(type.arbitrary_value) unless self.value self.value.narrow_domain!(op, val.coerce_to(type)) # NOTE: Write via memory to correctly propagate inner variable's # mutation to its outer variable. binding.memory._cascade_update(nil, nil) self.value.exist? end def widen_value_domain!(op, val) assign!(type.nil_value) unless self.value self.value.widen_domain!(op, val.coerce_to(type)) # NOTE: Write via memory to correctly propagate inner variable's # mutation to its outer variable. binding.memory._cascade_update(nil, nil) self.value.exist? end def enter_value_versioning_group value.enter_versioning_group end def leave_value_versioning_group(raise_complement) value.leave_versioning_group(raise_complement) end def begin_value_versioning value.begin_versioning end def end_value_versioning value.end_versioning end def thin_latest_value_version!(with_rollback) value.thin_latest_version!(with_rollback) end def rollback_all_value_versions! value.rollback_all_versions! end private def relate_to_memory(mem) bind_to(mem) end end class ScopedVariable < Variable def initialize(mem, dcl_or_def, type, scope) super(mem, dcl_or_def, type) @scope = scope end attr_accessor :scope def declared_as_extern? if @scope.global? super else sc_spec = first_storage_class_specifier and sc_spec.type == :EXTERN end end def declared_as_auto? if @scope.global? super else sc_spec = first_storage_class_specifier sc_spec.nil? || sc_spec.type == :AUTO end end end class OuterVariable < ScopedVariable def initialize(mem, dcl_or_def, type, scope) super(mem, dcl_or_def, type, scope) # TODO: If too slow, make an index of inner variables. @inner_variables = create_inner_variables(type.unqualify, scope) @representative_element = create_representative_element(type.unqualify) end attr_reader :representative_element def assign!(val, src = nil, br = nil) super if @representative_element if val.undefined? repr_val = @representative_element.type.undefined_value else repr_val = @representative_element.type.arbitrary_value end @representative_element.assign!(repr_val, src, br) end end def enter_value_versioning_group if @inner_variables @inner_variables.each do |inner| inner.enter_value_versioning_group end end super if @representative_element @representative_element.enter_value_versioning_group end end def leave_value_versioning_group(raise_complement) if @inner_variables @inner_variables.each do |inner| inner.leave_value_versioning_group(raise_complement) end end super if @representative_element @representative_element.leave_value_versioning_group(raise_complement) end end def begin_value_versioning if @inner_variables @inner_variables.each do |inner| inner.begin_value_versioning end end super if @representative_element @representative_element.begin_value_versioning end end def end_value_versioning if @inner_variables @inner_variables.each do |inner| inner.end_value_versioning end end super if @representative_element @representative_element.end_value_versioning end end def thin_latest_value_version!(with_rollback) if @inner_variables @inner_variables.each do |inner| inner.thin_latest_value_version!(with_rollback) end end super if @representative_element @representative_element.thin_latest_value_version!(with_rollback) end end def rollback_all_value_versions! if @inner_variables @inner_variables.each do |inner| inner.rollback_all_value_versions! end end super if @representative_element @representative_element.rollback_all_value_versions! end end def inner? false end def inner_variable_at(idx) if @type.array? # TODO: If linear searching is too slow, use an index of inner # variables. target_name = ArrayElementVariable.component_name_of(idx) @inner_variables.find { |inner| inner.component_name == target_name } else nil end end def inner_variable_named(name) if @type.composite? # TODO: If linear searching is too slow, use an index of inner # variables. target_name = CompositeMemberVariable.component_name_of(name) @inner_variables.each do |inner| case when inner.component_name.nil? if var = inner.inner_variable_named(name) return var end when inner.component_name == target_name return inner end end end nil end private def create_inner_variables(type, scope) case when type.array? create_array_elements(type, scope, binding.memory) when type.composite? create_composite_members(type, scope, binding.memory) else nil end end def create_array_elements(type, scope, mem) offset = 0 type.impl_length.times.map do |idx| win = mem.create_window(offset, type.base_type.aligned_byte_size) offset += win.byte_size ArrayElementVariable.new(win, self, type.base_type, idx) end end def create_composite_members(type, scope, mem) offset = 0 type.members.map do |memb| win = mem.create_window(offset, memb.type.aligned_byte_size) offset += win.byte_size CompositeMemberVariable.new(win, self, memb.type, memb.name) end end def create_representative_element(type) if type.array? mem = binding.memory.create_unmapped_window ArrayElementVariable.new(mem, self, type.base_type, 0).tap do |var| var.assign!(type.base_type.undefined_value) end else nil end end end module Nameable attr_reader :name def named? true end private def name=(name) # NOTE: Private attr_writer to suppress `private attribute?' warning. @name = name end end class NamedVariable < OuterVariable include Nameable def initialize(mem, dcl_or_def, scope) self.name = dcl_or_def.identifier.value super(mem, dcl_or_def, dcl_or_def.type, scope) end def temporary? false end def designated_by_lvalue? true end # NOTE: This method should be overridden by PhantomVariable. def to_named_variable self end def pretty_print(pp) Summary.new(object_id, name, type, binding.memory).pretty_print(pp) end Summary = Struct.new(:object_id, :name, :type, :memory) private_constant :Summary end class TemporaryVariable < OuterVariable def initialize(mem, type, scope) super(mem, nil, type, scope) end def temporary? true end def designated_by_lvalue? false end def named? false end def pretty_print(pp) Summary.new(object_id, type, binding.memory).pretty_print(pp) end Summary = Struct.new(:object_id, :type, :memory) private_constant :Summary end class InnerVariable < OuterVariable include Nameable def initialize(mem, outer_var, type, component_name) @owner = outer_var @component_name = component_name self.name = create_qualified_name(outer_var, component_name) super(mem, nil, type, outer_var.scope) end attr_reader :owner attr_reader :component_name def storage_class_specifiers @owner.storage_class_specifiers end def declared_as_extern? @owner.declared_as_extern? end def declared_as_static? @owner.declared_as_static? end def declared_as_auto? @owner.declared_as_auto? end def declared_as_register? @owner.declared_as_register? end def named? @owner.named? end def temporary? @owner.temporary? end def inner? true end def designated_by_lvalue? true end def to_named_variable self end private def create_qualified_name(outer_var, component_name) if outer_var.named? prefix = outer_var.name else prefix = "__adlint__tempvar" end component_name ? "#{prefix}#{component_name}" : prefix end end class ArrayElementVariable < InnerVariable def self.component_name_of(idx) "[#{idx}]" end def initialize(mem, outer_var, type, idx) super(mem, outer_var, type, self.class.component_name_of(idx)) end end class CompositeMemberVariable < InnerVariable def self.component_name_of(name) name ? ".#{name}" : nil end def initialize(mem, outer_var, type, name) super(mem, outer_var, type, self.class.component_name_of(name)) end end class AliasVariable < NamedVariable def initialize(var) super(var.binding.memory, var.declarations_and_definitions.first, var.scope) end private def relate_to_memory(mem) be_alias_to(mem) end end class VariableTable def initialize(mem_pool) @memory_pool = mem_pool @named_variables = [{}] @temp_variables = [[]] @scope_stack = [GlobalScope.new] end def all_named_variables @named_variables.map { |hash| hash.values }.flatten end def enter_scope @named_variables.push({}) @temp_variables.push([]) @scope_stack.push(Scope.new(@scope_stack.size)) end def leave_scope @named_variables.pop.each_value do |var| @memory_pool.free(var.binding.memory) end @temp_variables.pop.each do |var| @memory_pool.free(var.binding.memory) end @scope_stack.pop rollback_all_global_variables_value! if current_scope.global? end def declare(dcl, br) if var = lookup(dcl.identifier.value) var.declarations_and_definitions.push(dcl) return var end # NOTE: External variable may have undefined values. define_variable(dcl, br, dcl.type, allocate_memory(dcl), dcl.type.undefined_value) end def define(dcl_or_def, br, init_val = nil) if storage_duration_of(dcl_or_def) == :static && !dcl_or_def.type.const? # NOTE: Value of the inconstant static duration variable should be # arbitrary because execution of its accessors are out of order. # So, a value of the initializer should be ignored. init_val = dcl_or_def.type.arbitrary_value else init_val ||= dcl_or_def.type.undefined_value end if var = lookup(dcl_or_def.identifier.value) if var.scope == current_scope var.declarations_and_definitions.push(dcl_or_def) var.value.force_overwrite!(init_val.coerce_to(var.type)) if repr_elem = var.representative_element repr_elem.value.force_overwrite!(repr_elem.type.arbitrary_value) end return var end end # NOTE: Domain of the init-value will be restricted by type's min-max in # define_variable. define_variable(dcl_or_def, br, dcl_or_def.type, allocate_memory(dcl_or_def), init_val) end def define_temporary(type, init_val) mem = @memory_pool.allocate_dynamic(type.aligned_byte_size) # NOTE: Domain of the init-value will be restricted by type's min-max in # define_variable. define_variable(nil, nil, type, mem, init_val) end def lookup(name_str) @named_variables.reverse_each do |hash| if var = hash[name_str] return var end end nil end def designators @named_variables.map { |hash| hash.keys }.flatten.to_set end def enter_variables_value_versioning_group @named_variables.each do |hash| hash.each_value { |var| var.enter_value_versioning_group } end end def leave_variables_value_versioning_group(raise_complement) @named_variables.each do |hash| hash.each_value do |var| var.leave_value_versioning_group(raise_complement) end end end def begin_variables_value_versioning @named_variables.each do |hash| hash.each_value { |var| var.begin_value_versioning } end end def end_variables_value_versioning @named_variables.each do |hash| hash.each_value { |var| var.end_value_versioning } end end def thin_latest_variables_value_version!(with_rollback) @named_variables.each do |hash| hash.each_value { |var| var.thin_latest_value_version!(with_rollback) } end end def storage_duration_of(dcl_or_def) # NOTE: The ISO C99 standard says; # # 6.2.2 Linkages of identifiers # # 1 An identifier declared in different scopes or in the same scope more # than once can be made to refer to the same object or function by a # process called linkage. There are three kinds of linkage: external, # internal, and none. # # 3 If the declaration of a file scope identifier for an object or a # function contains the storage-class specifier static, the identifier # has internal linkage. # # 4 For an identifier declared with the storage-class specifier extern in # a scope in which a prior declaration of that identifier is visible, # if the prior declaration specifies internal or external linkage, the # linkage of the identifier at the later declaration is the same as the # linkage specified at the prior declaration. If no prior declaration # is visible, or if the prior declaration specifies no linkage, then # the identifier has external linkage. # # 5 If the declaration of an identifier for a function has no # storage-class specifier, its linkage is determined exactly as if it # were declared with the storage-class specifier extern. If the # declaration of an identifier for an object has file scope and no # storage-class specifier, its linkage is external. # # 6 The following identifiers have no linkage: an identifier declared to # be anything other than an object or a function; an identifier # declared to be a function parameter; a block scope identifier for an # object declared without the storage-class specifier extern. # # 6.2.4 Storage durations of objects # # 1 An object has a storage duration that determines its lifetime. There # are three storage durations: static, automatic, and allocated. # Allocated storage is described in 7.20.3. # # 3 An object whose identifier is declared with external or internal # linkage, or with the storage-class specifier static has static # storage duration. Its lifetime is the entire execution of the program # and its stored value is initialized only once, prior to program # startup. # # 4 An object whose identifier is declared with no linkage and without # the storage-class specifier static has automatic storage duration. if sc_spec = dcl_or_def.storage_class_specifier and sc_spec.type == :EXTERN || sc_spec.type == :STATIC :static else current_scope.global? ? :static : :automatic end end private def define_variable(dcl_or_def, br, type, mem, init_val) var = create_variable(dcl_or_def, type, mem) var.assign!(init_val, dcl_or_def, br) if var.named? @named_variables.last[var.name] = var else @temp_variables.last.push(var) end var end def allocate_memory(dcl_or_def) byte_size = dcl_or_def.type.aligned_byte_size if storage_duration_of(dcl_or_def) == :static @memory_pool.allocate_static(byte_size) else @memory_pool.allocate_dynamic(byte_size) end end def create_variable(dcl_or_def, type, mem) if dcl_or_def NamedVariable.new(mem, dcl_or_def, current_scope) else TemporaryVariable.new(mem, type, current_scope) end end def current_scope @scope_stack.last end def rollback_all_global_variables_value! @named_variables.first.each_value do |var| # NOTE: Rollback effects recorded to global variables because execution # of its accessors are out of order. var.rollback_all_value_versions! end end end # == DESCRIPTION # === Function class hierarchy # Function # <-- NamedFunction ------> Nameable <> # <-- ExplicitFunction # <-- ImplicitFunction # <-- BuiltinFunction # <-- AnonymousFunction class Function < TypedObject def initialize(dcl_or_def, type) super(type, dcl_or_def) end def name subclass_responsibility end def named? false end def temporary? false end def variable? false end def function? true end def explicit? subclass_responsibility end def implicit? !explicit? end def builtin? subclass_responsibility end def call(interp, funcall_expr, args) assign_arguments_to_parameters(interp, args) return_values_via_pointer_arguments(interp, funcall_expr, args) if type.return_type.function? interp.create_tmpvar else ret_type = type.return_type interp.create_tmpvar(ret_type, ret_type.return_value) end end def signature subclass_responsibility end private def assign_arguments_to_parameters(interp, args) args.zip(type.parameter_types).each do |(arg, expr), param_type| arg_var = interp.object_to_variable(arg, expr) if param_type case when arg_var.type.pointer? && param_type.array? conved = interp.pointee_of(arg_var) when !arg_var.type.same_as?(param_type) conved = interp.do_conversion(arg_var, param_type) || interp.create_tmpvar(param_type) interp.notify_implicit_conv_performed(expr, arg_var, conved) else conved = arg_var end else conved = interp.do_default_argument_promotion(arg_var) if arg_var != conved interp.notify_implicit_conv_performed(expr, arg_var, conved) end end # NOTE: Value of the argument is referred when the assignment to the # parameter is performed. interp.notify_variable_value_referred(expr, arg_var) end end def return_values_via_pointer_arguments(interp, funcall_expr, args) args.zip(type.parameter_types).each do |(arg, expr), param_type| next if param_type && param_type.void? next unless arg.variable? and arg.type.pointer? || arg.type.array? param_type = param_type.unqualify if param_type case when param_type.nil? && (arg.type.pointer? || arg.type.array?), param_type && param_type.pointer? && !param_type.base_type.const?, param_type && param_type.array? && !param_type.base_type.const? else next end case when arg.type.pointer? pointee = interp.pointee_of(arg) if pointee && pointee.designated_by_lvalue? && pointee.variable? sink = pointee else next end when arg.type.array? sink = arg end ret_val = sink.type.return_value sink.assign!(ret_val, funcall_expr, interp.current_branch) interp.notify_variable_value_updated(expr, sink) # NOTE: Returning a value via a pointer parameter can be considered as # an evaluation of a statement-expression with a # simple-assignment-expression. # Control will reach to a sequence-point at the end of a full # expression. interp.notify_sequence_point_reached( SequencePoint.new(funcall_expr, false)) end end end class NamedFunction < Function include Nameable def initialize(dcl_or_def, type, name) super(dcl_or_def, type) self.name = name end def designated_by_lvalue? true end def call(*) case name when "exit", "_exit", "abort" BreakEvent.of_return.throw when "longjmp", "siglongjmp" BreakEvent.of_return.throw else super end end def signature FunctionSignature.new(name, type) end end class ExplicitFunction < NamedFunction def initialize(dcl_or_def) super(dcl_or_def, dcl_or_def.type, dcl_or_def.identifier.value) end def explicit? true end def builtin? false end end class ImplicitFunction < NamedFunction def initialize(type, name) super(nil, type, name) end def explicit? false end def builtin? false end end class AnonymousFunction < Function def initialize(type) super(nil, type) end def designated_by_lvalue? false end def explicit? false end def builtin? false end def signature FunctionSignature.new("__adlint__anon_func", type) end end class FunctionTable def initialize(mem_pool) @memory_pool = mem_pool @functions = [{}] @scope_stack = [GlobalScope.new] end def enter_scope @functions.push({}) @scope_stack.push(Scope.new(@scope_stack.size)) end def leave_scope @functions.pop.each_value do |fun| @memory_pool.free(fun.binding.memory) end @scope_stack.pop end def declare_explicitly(dcl) if fun = lookup(dcl.identifier.value) and fun.explicit? fun.declarations_and_definitions.push(dcl) return fun end define(ExplicitFunction.new(dcl)) end def declare_implicitly(fun) if fun.named? && fun.implicit? define(fun, true) end fun end def define(fun, in_global_scope = false) # NOTE: A function has a starting address in the TEXT segment. # This is ad-hoc implementation, but it's enough for analysis. fun.bind_to(@memory_pool.allocate_static(0)) if in_global_scope @functions.first[fun.name] = fun else @functions.last[fun.name] = fun if fun.named? end fun end def lookup(name_str) @functions.reverse_each do |hash| if fun = hash[name_str] return fun end end nil end def designators @functions.map { |hash| hash.keys }.flatten.to_set end end class Memory include Bindable def initialize(addr, byte_size) @address = addr @byte_size = byte_size @value = nil end attr_reader :address attr_reader :byte_size def static? subclass_responsibility end def dynamic? subclass_responsibility end def read @value end def write(val, src, br) if @value @value.overwrite!(val, TransitionTag.new([src], [br])) else @value = VersionedValue.new(val, TransitionTag.new([src], [br])) end end def _cascade_update(src, br) # NOTE: This method will be called only from # #narrow_value_domain! and # #widen_value_domain! of Variable to propagate memory mutation to # the upper MemoryBlock from MemoryWindow. end end class MemoryBlock < Memory def initialize(addr, byte_size) super @windows = [] end attr_reader :windows def create_window(offset, byte_size) MemoryWindow.new(self, @address + offset, byte_size).tap do |win| win.on_written += method(:handle_written_through_window) @windows.push(win) end end def create_unmapped_window UnmappedMemoryWindow.new(self).tap do |win| win.on_written += method(:handle_written_through_window) end end alias :_orig_write :write def write(val, src, br) super if !@windows.empty? and @value.array? && val.array? or @value.composite? && val.composite? @windows.zip(val.to_single_value.values).each do |win, inner_val| win.write(inner_val, src, br, false) end end end protected def create_value_from_windows if @value case when @value.scalar? @value when @value.array? ArrayValue.new(@windows.map { |w| w.create_value_from_windows }) when @value.composite? CompositeValue.new(@windows.map { |w| w.create_value_from_windows }) else __NOTREACHED__ end else nil end end private def handle_written_through_window(win, src, br) if val = create_value_from_windows unless win.read.test_must_be_undefined.true? val = val.to_defined_value end _orig_write(val, src, br) end end end class MemoryWindow < MemoryBlock def initialize(owner, addr, byte_size) super(addr, byte_size) @owner = owner end extend Pluggable def_plugin :on_written def static? @owner.static? end def dynamic? @owner.dynamic? end def write(val, src, br, cascade = true) super(val, src, br) _cascade_update(src, br) if cascade end def _cascade_update(src, br) on_written.invoke(self, src, br) end private def handle_written_through_window(win, src, br) super _cascade_update(src, br) end end class UnmappedMemoryWindow < MemoryWindow def initialize(owner) super(owner, owner.address, owner.byte_size) end end class StaticMemoryBlock < MemoryBlock def static? true end def dynamic? false end end class DynamicMemoryBlock < MemoryBlock def static? false end def dynamic? true end end class MemoryPool def initialize @memory_blocks = {} @address_ranges = [] # NOTE: To make room for NULL and controlling expressions. @free_address = 10 end def allocate_static(byte_size) mem_block = StaticMemoryBlock.new(@free_address, byte_size) @free_address += allocating_byte_size(byte_size) @memory_blocks[mem_block.address] = mem_block @address_ranges.push(mem_block.address...@free_address) mem_block end def allocate_dynamic(byte_size) mem_block = DynamicMemoryBlock.new(@free_address, byte_size) @free_address += allocating_byte_size(byte_size) @memory_blocks[mem_block.address] = mem_block @address_ranges.push(mem_block.address...@free_address) mem_block end def free(mem_block) @memory_blocks.delete(mem_block.address) @address_ranges.reject! { |range| range.include?(mem_block.address) } end def lookup(addr) if mem_block = @memory_blocks[addr] return mem_block else if addr_range = @address_ranges.find { |r| r.include?(addr) } mem_block = @memory_blocks[addr_range.first] return mem_block.windows.find { |w| w.address == addr } end end nil end private def allocating_byte_size(byte_size) byte_size == 0 ? 1 : byte_size end end end end adlint-3.2.14/lib/adlint/cc1/scanner.rb0000644000004100000410000001540112340630463017553 0ustar www-datawww-data# Scanner for C language. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: module Cc1 #:nodoc: # == DESCRIPTION # Constants for scanning the C source code. module ScannerConstants # === DESCRIPTION # C keywords table. KEYWORDS = { "sizeof" => :SIZEOF, "typedef" => :TYPEDEF, "extern" => :EXTERN, "static" => :STATIC, "auto" => :AUTO, "register" => :REGISTER, "inline" => :INLINE, "restrict" => :RESTRICT, "char" => :CHAR, "short" => :SHORT, "int" => :INT, "long" => :LONG, "signed" => :SIGNED, "unsigned" => :UNSIGNED, "float" => :FLOAT, "double" => :DOUBLE, "const" => :CONST, "volatile" => :VOLATILE, "void" => :VOID, "_Bool" => :BOOL, "_Complex" => :COMPLEX, "_Imaginary" => :IMAGINARY, "struct" => :STRUCT, "union" => :UNION, "enum" => :ENUM, "case" => :CASE, "default" => :DEFAULT, "if" => :IF, "else" => :ELSE, "switch" => :SWITCH, "while" => :WHILE, "do" => :DO, "for" => :FOR, "goto" => :GOTO, "continue" => :CONTINUE, "break" => :BREAK, "return" => :RETURN, "__typeof__" => :TYPEOF, "__alignof__" => :ALIGNOF }.freeze KEYWORD_VALUES = KEYWORDS.keys.to_set.freeze # === DESCRIPTION # C punctuators table. PUNCTUATORS = [ "{", "}", "(", ")", "[", "]", ";", ",", "::", ":", "?", "||", "|=", "|", "&&", "&=", "&", "^=", "^", "==", "=", "!=", "!", "<<=", "<=", "<<", "<", ">>=", ">=", ">>", ">", "+=", "++", "+", "->*", "->", "-=", "--", "-", "*=", "*", "/=", "/", "%=", "%", "...", ".*", ".", "~", ].to_set.freeze end # == DESCRIPTION # Utility module for scanning the C source code. module Scanner include ScannerConstants # === DESCRIPTION # Scans C identifier. # # === PARAMETER # _cont_:: StringContent -- Scanning source. # # === RETURN VALUE # String -- Returns C identifier string if found at head of the content. def scan_identifier(cont) cont.scan(/[a-z_][a-z_0-9]*\b/i) end KEYWORDS_RE = Regexp.new(KEYWORD_VALUES.map { |keyword| "#{keyword}\\b" }.join("|")).freeze private_constant :KEYWORDS_RE # === DESCRIPTION # Scans C keyword. # # === PARAMETER # _cont_:: StringContent -- Scanning source. # # === RETURN VALUE # String -- Returns C keyword string if found at head of the content. def scan_keyword(cont) cont.scan(KEYWORDS_RE) end PUNCTUATORS_RE = Regexp.new(PUNCTUATORS.sort { |a, b| b.length <=> a.length }.map { |punct| punct.each_char.map { |ch| '\\' + ch }.join }.join("|")).freeze private_constant :PUNCTUATORS_RE # === DESCRIPTION # Scans C punctuator. # # === PARAMETER # _cont_:: StringContent -- Scanning source. # # === RETURN VALUE # String -- Returns C punctuator string if found at head of the content. def scan_punctuator(cont) cont.scan(PUNCTUATORS_RE) end # === DESCRIPTION # Scans C integer constant. # # === PARAMETER # _cont_:: StringContent -- Scanning source. # # === RETURN VALUE # String -- Returns C integer constant string if found at head of the # content. def scan_integer_constant(cont) cont.scan(/(?:0x[0-9a-f]*|0b[01]*|[0-9]+)[UL]*/i) end FLOATING1_RE = /(?:[0-9]*\.[0-9]*E[+-]?[0-9]+|[0-9]+\.?E[+-]?[0-9]+)[FL]*/i FLOATING2_RE = /(?:[0-9]*\.[0-9]+|[0-9]+\.)[FL]*/i private_constant :FLOATING1_RE, :FLOATING2_RE # === DESCRIPTION # Scans C floating constant. # # === PARAMETER # _cont_:: StringContent -- Scanning source. # # === RETURN VALUE # String -- Returns C floating constant string if found at head of the # content. def scan_floating_constant(cont) cont.scan(FLOATING1_RE) || cont.scan(FLOATING2_RE) end # === DESCRIPTION # Scans C character constant. # # === PARAMETER # _cont_:: StringContent -- Scanning source. # # === RETURN VALUE # String -- Returns C character constant string if found at head of the # content. def scan_char_constant(cont) unless scanned = cont.scan(/L?'/i) return nil end until cont.empty? if str = cont.scan(/.*?(?=\\|')/m) scanned << str end next if cont.scan(/\\[ \t]*\n/) case when cont.check(/\\/) scanned << cont.eat!(2) when quote = cont.scan(/'/) scanned << quote break end end scanned end # === DESCRIPTION # Scans C string literal. # # === PARAMETER # _cont_:: StringContent -- Scanning source. # # === RETURN VALUE # String -- Returns C string literal string if found at head of the # content. def scan_string_literal(cont) unless scanned = cont.scan(/L?"/i) return nil end until cont.empty? if str = cont.scan(/.*?(?=\\|")/m) scanned << str end next if cont.scan(/\\[ \t]*\n/) case when cont.check(/\\/) scanned << cont.eat!(2) when quote = cont.scan(/"/) scanned << quote break end end scanned end # === DESCRIPTION # Scans C NULL constant. # # === PARAMETER # _cont_:: StringContent -- Scanning source. # # === RETURN VALUE # String -- Returns C NULL constant string if found at head of the content. def scan_null_constant(cont) cont.scan(/NULL\b/) end end end end adlint-3.2.14/lib/adlint/cc1/trace.rb0000644000004100000410000002156312340630463017226 0ustar www-datawww-data# Context tracer. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/cc1/branch" require "adlint/cc1/value" module AdLint #:nodoc: module Cc1 #:nodoc: module ContextTracing # NOTE: Host class of this module must respond to #positive_contribs and # #negative_contribs. def traceable_positive_contribs positive_contribs.select { |mval| mval.transition.last.tag.traceable? } end def traceable_negative_contribs negative_contribs.select { |mval| mval.transition.last.tag.traceable? } end def sample_positive_transition if contrib = traceable_positive_contribs.first contrib.transition else nil end end end module NegativePathsTracing include ContextTracing def trace_negative_paths(report, loc, traced) trans = traceable_negative_contribs.map { |mval| mval.transition } branches = trans.map { |tr| tr.last.tag.at }.flatten sorted_branches = sort_branches_by_groups(branches) branches = branches.to_set rch_groups = [] unr_groups = [] sorted_branches.each_key.with_object([]) { |gr, msgs| case when gr.branches_to_trunk.any? { |upper| branches.include?(upper) } next when gr.complete? && gr.branches.size == sorted_branches[gr].size unr_groups.push(gr) else rch_groups.push(gr) sorted_branches[gr].each do |br| emit_negative_ctrlexpr(msgs, report, loc, traced, br.ctrlexpr) end end } + emit_remaining_paths(report, loc, traced, rch_groups, unr_groups) end private def emit_remaining_paths(report, loc, traced, rch_groups, unr_groups) traced_groups = Set.new rch_groups.each_with_object([]) { |gr, msgs| cur_br = gr.trunk while cur_br emit_positive_ctrlexpr(msgs, report, loc, traced, cur_br.ctrlexpr) traced_groups.add(cur_br.group) cur_br = cur_br.trunk end } + unr_groups.each_with_object([]) { |gr, msgs| cur_br = gr.trunk while cur_br unless traced_groups.include?(cur_br.group) emit_negative_ctrlexpr(msgs, report, loc, traced, cur_br.ctrlexpr) break end cur_br = cur_br.trunk end } end def sort_branches_by_groups(branches) branches.each_with_object(Hash.new { |h, k| h[k] = [] }) do |br, groups| groups[br.group].push(br) end end def emit_positive_ctrlexpr(msgs, report, loc, traced, ctrlexpr) if ctrlexpr and expr = ctrlexpr.to_expr if expr.location && expr.location < loc && !traced.include?(expr) msgs.push(report.C(:C1001, expr.location)) traced.add(expr) end end end def emit_negative_ctrlexpr(msgs, report, loc, traced, ctrlexpr) if ctrlexpr and expr = ctrlexpr.to_expr if expr.location && expr.location < loc && !traced.include?(expr) msgs.push(report.C(:C1002, expr.location)) traced.add(expr) end end end end module UndefinableContextTracing include ContextTracing include NegativePathsTracing def emit_context_messages(report, loc) traced = Set.new msgs = trace_positive_paths(report, loc, traced) + trace_negative_paths(report, loc, traced) unless msgs.empty? [report.C(:C1000, Location.new)] + msgs.sort { |a, b| a.location <=> b.location } else [] end end private def trace_positive_paths(report, loc, traced) # TODO: Evidence of the test result might have two or more contributors. # All the evidences should be complemented by context messages? unless pos_trans = sample_positive_transition return [] end pos_trans.each_with_object([]) do |ss, msgs| if src = ss.tag.by.find { |node| node.kind_of?(VariableDefinition) } if src.location && src.location < loc && !traced.include?(src) if ss.value.test_may_be_undefined.true? msgs.push(report.C(:C1003, src.location)) traced.add(src) end end end end end # NOTE: Mix-in this module to AdLint::Cc1::UndefinableTestEvidence. UndefinableTestEvidence.class_eval { include UndefinableContextTracing } end module NullabilityContextTracing include ContextTracing include NegativePathsTracing def emit_context_messages(report, loc) traced = Set.new msgs = trace_positive_paths(report, loc, traced) + trace_negative_paths(report, loc, traced) unless msgs.empty? [report.C(:C1000, Location.new)] + msgs.sort { |a, b| a.location <=> b.location } else [] end end private def trace_positive_paths(report, loc, traced) # TODO: Evidence of the test result might have two or more contributors. # All the evidences should be complemented by context messages? unless pos_trans = sample_positive_transition return [] end pos_trans.each_with_object([]) do |ss, msgs| branch = ss.tag.at.find { |br| br.ctrlexpr.to_expr } while branch if expr = branch.ctrlexpr.to_expr and expr.location && expr.location < loc unless traced.include?(expr) msgs.push(report.C(:C1001, expr.location)) traced.add(expr) end end branch = branch.trunk end src = ss.tag.by.find { |node| node.location && node.location < loc && !traced.include?(node) } if src case when ss.value.test_must_be_null.true? msgs.push(report.C(:C1004, src.location)) traced.add(src) when ss.value.test_may_be_null.true? msgs.push(report.C(:C1005, src.location)) traced.add(src) end end end end # NOTE: Mix-in this module to AdLint::Cc1::NullabilityTestEvidence. NullabilityTestEvidence.class_eval { include NullabilityContextTracing } end module DefinableContextTracing # NOTE: Host class must have instance variable named @predicate. attr_reader :predicate include ContextTracing include NegativePathsTracing def emit_context_messages(report, loc) traced = Set.new msgs = trace_positive_paths(report, loc, traced) + trace_negative_paths(report, loc, traced) unless msgs.empty? [report.C(:C1000, Location.new)] + msgs.sort { |a, b| a.location <=> b.location } else [] end end private def trace_positive_paths(report, loc, traced) # TODO: Evidence of the test result might have two or more contributors. # All the evidences should be complemented by context messages? unless pos_trans = sample_positive_transition return [] end pos_trans.each_with_object([]) do |ss, msgs| branch = ss.tag.at.find { |br| br.ctrlexpr.to_expr } while branch if expr = branch.ctrlexpr.to_expr and expr.location && expr.location < loc unless traced.include?(expr) msgs.push(report.C(:C1001, expr.location)) traced.add(expr) end end branch = branch.trunk end src = ss.tag.by.find { |node| node.location && node.location < loc && !traced.include?(node) } if src && predicate.call(ss.value) msgs.push(report.C(:C1006, src.location)) traced.add(src) end end end # NOTE: Mix-in this module to AdLint::Cc1::DefinableTestEvidence. DefinableTestEvidence.class_eval { include DefinableContextTracing } end end end adlint-3.2.14/lib/adlint/cc1/branch.rb0000644000004100000410000001613612340630463017365 0ustar www-datawww-data# C runtime branch of execution path. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/cc1/ctrlexpr" require "adlint/cc1/option" module AdLint #:nodoc: module Cc1 #:nodoc: class Branch include BranchOptions def initialize(branch_group, *opts) @group = branch_group @options = opts @break_event = nil @ctrlexpr = nil end attr_reader :group attr_reader :break_event attr_reader :ctrlexpr def trunk @group.trunk end def add_options(*new_opts) @options = (@options + new_opts).uniq @group.add_options(*new_opts) end def narrowing? @options.include?(NARROWING) end def widening? @options.include?(WIDENING) end def first? @options.include?(FIRST) end def final? @options.include?(FINAL) end def smother_break? @options.include?(SMOTHER_BREAK) end def implicit_condition? @options.include?(IMPLICIT_COND) end def complemental? @options.include?(COMPLEMENTAL) end def execute(interp, expr = nil, &block) env.enter_versioning_group if first? env.begin_versioning @ctrlexpr = ControllingExpression.new(interp, self, expr) if ensure_condition(@ctrlexpr) @break_event = BreakEvent.catch { yield(self) } else unless final? && @group.branches.size == 1 @break_event = BreakEvent.of_return end end ensure if @ctrlexpr.complexly_compounded? && !complemental? # NOTE: Give up value domain thinning of the controlling variables, # because the controlling expression is too complex to manage # value domains correctly. # TODO: Study about introducing inter-value-constraints to correctly # manage value domains of controlling variables related with each # other. if @group.in_iteration? && !smother_break? env.end_versioning(break_with_return? || break_with_break?, true) else env.end_versioning(break_with_return?, true) end else if @group.in_iteration? && !smother_break? env.end_versioning(break_with_return? || break_with_break?, false) else env.end_versioning(break_with_return?, false) end end if final? env.leave_versioning_group(!@group.complete?) if @group.complete? rethrow_break_event end end end def restart_versioning(&block) @ctrlexpr.save_affected_variables env.end_versioning(false) env.leave_versioning_group(true) env.enter_versioning_group env.begin_versioning yield @ctrlexpr.restore_affected_variables end def break_with_break? @break_event && @break_event.break? end def break_with_continue? @break_event && @break_event.continue? end def break_with_return? @break_event && @break_event.return? end private def ensure_condition(ctrlexpr) case when narrowing? ctrlexpr.ensure_true_by_narrowing.commit! when widening? ctrlexpr.ensure_true_by_widening.commit! end @group.all_controlling_variables_value_exist? end def rethrow_break_event case when @group.all_branches_break_with_break? BreakEvent.of_break.throw unless smother_break? when @group.all_branches_break_with_return? BreakEvent.of_return.throw end end def env @group.environment end end class BranchGroup include BranchOptions include BranchGroupOptions def initialize(env, trunk, *opts) @environment = env @trunk = trunk @options = opts @branches = [] end attr_reader :environment attr_reader :trunk attr_reader :branches def trunk_group @trunk ? @trunk.group : nil end def branches_to_trunk(acc = []) if @trunk acc.push(@trunk) @trunk.group.branches_to_trunk(acc) else acc end end def add_options(*new_opts) @options = (@options + new_opts).uniq end def complete? @options.include?(COMPLETE) end def iteration? @options.include?(ITERATION) end def in_iteration? branch_group = trunk_group while branch_group return true if branch_group.iteration? branch_group = branch_group.trunk_group end false end def create_first_branch(*opts) @branches.push(new_branch = Branch.new(self, FIRST, *opts)) new_branch end def create_trailing_branch(*opts) @branches.push(new_branch = Branch.new(self, *opts)) new_branch end def all_controlling_variables @branches.map { |br| ctrlexpr = br.ctrlexpr and ctrlexpr.affected_variables }.compact.flatten.uniq end def all_controlling_variables_value_exist? all_controlling_variables.all? { |var| var.value.exist? } end def all_branches_break_with_break? @branches.all? { |br| br.break_with_break? } end def all_branches_break_with_continue? @branches.all? { |br| br.break_with_continue? } end def all_branches_break_with_return? @branches.all? { |br| br.break_with_return? } end def current_branch @branches.last end end class BreakEvent class << self def catch(&block) Kernel.catch(:break) { yield; nil } end def of_break new(:break) end memoize :of_break def of_continue new(:continue) end memoize :of_continue def of_return new(:return) end memoize :of_return end def initialize(type) @type = type end private_class_method :new def break? @type == :break end def continue? @type == :continue end def return? @type == :return end def throw Kernel.throw(:break, self) end end end end adlint-3.2.14/lib/adlint/cc1/type.rb0000644000004100000410000063372312340630463017120 0ustar www-datawww-data# C type models. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/traits" require "adlint/token" require "adlint/util" require "adlint/cc1/syntax" require "adlint/cc1/scope" require "adlint/cc1/object" require "adlint/cc1/conv" require "adlint/cc1/option" require "adlint/cc1/operator" module AdLint #:nodoc: module Cc1 #:nodoc: module StandardTypeCatalogAccessor # NOTE: Host class must respond to #standard_type_catalog. extend Forwardable def_delegator :standard_type_catalog, :void_t def_delegator :standard_type_catalog, :char_t def_delegator :standard_type_catalog, :signed_char_t def_delegator :standard_type_catalog, :unsigned_char_t def_delegator :standard_type_catalog, :short_t def_delegator :standard_type_catalog, :signed_short_t def_delegator :standard_type_catalog, :unsigned_short_t def_delegator :standard_type_catalog, :short_int_t def_delegator :standard_type_catalog, :signed_short_int_t def_delegator :standard_type_catalog, :unsigned_short_int_t def_delegator :standard_type_catalog, :int_t def_delegator :standard_type_catalog, :signed_t def_delegator :standard_type_catalog, :signed_int_t def_delegator :standard_type_catalog, :unsigned_t def_delegator :standard_type_catalog, :unsigned_int_t def_delegator :standard_type_catalog, :long_t def_delegator :standard_type_catalog, :signed_long_t def_delegator :standard_type_catalog, :unsigned_long_t def_delegator :standard_type_catalog, :long_int_t def_delegator :standard_type_catalog, :signed_long_int_t def_delegator :standard_type_catalog, :unsigned_long_int_t def_delegator :standard_type_catalog, :long_long_t def_delegator :standard_type_catalog, :signed_long_long_t def_delegator :standard_type_catalog, :unsigned_long_long_t def_delegator :standard_type_catalog, :long_long_int_t def_delegator :standard_type_catalog, :signed_long_long_int_t def_delegator :standard_type_catalog, :unsigned_long_long_int_t def_delegator :standard_type_catalog, :extended_big_int_t def_delegator :standard_type_catalog, :float_t def_delegator :standard_type_catalog, :double_t def_delegator :standard_type_catalog, :long_double_t end # == DESCRIPTION # === Type class hierarchy # Type # <-- UndeclaredType # <-- UnresolvedType # <-- QualifiedType # <-- VoidType # <-- FunctionType # <-- ScalarDataType --------> UsualArithmeticTypeConversion <> # <-- IntegerType # <-- StandardIntegerType # <-- CharType # <-- SignedCharType # <-- UnsignedCharType # <-- ShortType # <-- SignedShortType # <-- UnsignedShortType # <-- ShortIntType # <-- SignedShortIntType # <-- UnsignedShortIntType # <-- IntType # <-- SignedType # <-- SignedIntType # <-- UnsignedType # <-- UnsignedIntType # <-- LongType # <-- SignedLongType # <-- UnsignedLongType # <-- LongIntType # <-- SignedLongIntType # <-- UnsignedLongIntType # <-- LongLongType # <-- SignedLongLongType # <-- UnsignedLongLongType # <-- LongLongIntType # <-- SignedLongLongIntType # <-- UnsignedLongLongIntType # <-- ExtendedBigIntType # <-- BitfieldType # <-- EnumType ----------------------> Scopeable <> # <-- PointerType ^ # <-- FloatingType | # <-- StandardFloatingType | # <-- FloatType | # <-- DoubleType | # <-- LongDoubleType | # <-- ArrayType | # <-- CompositeDataType -------------------------------+ # <-- StructType | # <-- UnionType | # <-- UserType ----------------------------------------+ # <-- ParameterType -----------------------------------+ class Type include Visitable include StandardTypeCatalogAccessor include ArithmeticAccessor include StandardTypesAccessor def initialize(type_tbl, name, type_dcls = []) @type_table = type_tbl @name = name @declarations = type_dcls end attr_reader :type_table attr_reader :name attr_reader :declarations def id subclass_responsibility end def image subclass_responsibility end def brief_image subclass_responsibility end def location subclass_responsibility end def named? subclass_responsibility end def bit_size subclass_responsibility end def byte_size (bit_size / 8.0).ceil end def bit_alignment subclass_responsibility end def byte_alignment (bit_alignment / 8.0).ceil end def aligned_bit_size bit_size + (bit_alignment - bit_size) end def aligned_byte_size (aligned_bit_size / 8.0).ceil end def real_type subclass_responsibility end def base_type subclass_responsibility end def unqualify subclass_responsibility end def incomplete? subclass_responsibility end def compatible?(to_type) subclass_responsibility end def coercible?(to_type) subclass_responsibility end def convertible?(to_type) self.same_as?(to_type) end def more_cv_qualified?(than_type) false end def same_as?(type) self.real_type.unqualify == type.real_type.unqualify end def parameter? false end def scalar? subclass_responsibility end def integer? subclass_responsibility end def floating? subclass_responsibility end def array? subclass_responsibility end def composite? struct? || union? end def struct? subclass_responsibility end def union? subclass_responsibility end def pointer? subclass_responsibility end def qualified? subclass_responsibility end def function? subclass_responsibility end def enum? subclass_responsibility end def user? subclass_responsibility end def void? subclass_responsibility end def standard? subclass_responsibility end def undeclared? subclass_responsibility end def unresolved? subclass_responsibility end def const? subclass_responsibility end def volatile? subclass_responsibility end def restrict? subclass_responsibility end def bitfield? subclass_responsibility end def signed? subclass_responsibility end def unsigned? !signed? end def explicitly_signed? subclass_responsibility end def have_va_list? subclass_responsibility end def return_type subclass_responsibility end def parameter_types subclass_responsibility end def enumerators subclass_responsibility end def length subclass_responsibility end def length=(len) subclass_responsibility end def impl_length subclass_responsibility end def members subclass_responsibility end def member_named(name) subclass_responsibility end def min subclass_responsibility end def max subclass_responsibility end def nil_value subclass_responsibility end def zero_value subclass_responsibility end def arbitrary_value subclass_responsibility end def undefined_value subclass_responsibility end def parameter_value subclass_responsibility end def return_value subclass_responsibility end def coerce_scalar_value(val) subclass_responsibility end def coerce_array_value(val) subclass_responsibility end def coerce_composite_value(val) subclass_responsibility end def integer_conversion_rank subclass_responsibility end def integer_promoted_type subclass_responsibility end def argument_promoted_type subclass_responsibility end def arithmetic_type_with(type) subclass_responsibility end def _arithmetic_type_with_undeclared(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_unresolved(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_void(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_function(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_char(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_signed_char(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_unsigned_char(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_short(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_signed_short(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_unsigned_short(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_short_int(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_signed_short_int(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_unsigned_short_int(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_int(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_signed(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_signed_int(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_unsigned(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_unsigned_int(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_long(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_signed_long(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_unsigned_long(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_long_int(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_signed_long_int(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_unsigned_long_int(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_long_long(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_signed_long_long(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_unsigned_long_long(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_long_long_int(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_signed_long_long_int(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_unsigned_long_long_int(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_float(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_double(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_long_double(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_bitfield(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_enum(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_pointer(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_array(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_struct(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_union(lhs_type, rhs_type = self) subclass_responsibility end def _arithmetic_type_with_extended_big_int(lhs_type, rhs_type = self) subclass_responsibility end def corresponding_signed_type subclass_responsibility end def corresponding_unsigned_type subclass_responsibility end def ==(rhs_type) case rhs_type when Type id == rhs_type.id else super end end def dup subclass_responsibility end def inspect if @name == image if location "#{@name} (#{location.inspect})" else @name end else if location "#{@name}=>#{image} (#{location.inspect})" else "#{@name}=>#{image}" end end end extend Forwardable def_delegator :@type_table, :traits private :traits def_delegator :@type_table, :standard_type_catalog private :standard_type_catalog end class TypeId def initialize(val) @value = val end def ==(rhs_id) @value == rhs_id.value end def eql?(rhs_id) self == rhs_id end def hash @value.hash end protected attr_reader :value end class StandardTypeId < TypeId def initialize(name) super(name.split(" ").sort.join(" ")) end end class UndeclaredType < Type def initialize(type_tbl) super(type_tbl, "__adlint__undeclared_type") end def id @id ||= TypeId.new(name) end def image name end def brief_image name end def location nil end def named? false end def bit_size 0 end def bit_alignment 0 end def real_type self end def base_type self end def unqualify self end def incomplete? true end def compatible?(to_type) false end def coercible?(to_type) false end def convertible?(to_type) false end def same_as?(type) false end def scalar? false end def integer? false end def floating? false end def array? false end def struct? false end def union? false end def pointer? false end def qualified? false end def function? false end def enum? false end def user? false end def void? false end def standard? false end def undeclared? true end def unresolved? false end def const? false end def volatile? false end def restrict? false end def bitfield? false end def signed? false end def explicitly_signed? false end def have_va_list? false end def return_type self end def parameter_types [] end def enumerators [] end def length 0 end def impl_length 0 end def members [] end def member_named(name) nil end def min 0 end def max 0 end def nil_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def zero_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def arbitrary_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def undefined_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def parameter_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def return_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def coerce_scalar_value(val) ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def coerce_array_value(val) ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def coerce_composite_value(val) ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def integer_conversion_rank 0 # NOTREACHED end def integer_promoted_type self # NOTREACHED end def argument_promoted_type self # NOTREACHED end def arithmetic_type_with(type) # NOTE: An arithmetic operation with UndeclaredType must not be executed! type._arithmetic_type_with_undeclared(self) end def _arithmetic_type_with_undeclared(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_unresolved(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_void(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_function(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `char' and UndeclaredType # makes integer-promoted type of `char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `signed char' and UndeclaredType # makes integer-promoted type of `signed char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `unsigned char' and UndeclaredType # makes integer-promoted type of `unsigned char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `short' and UndeclaredType # makes integer-promoted type of `short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `signed short' and UndeclaredType # makes integer-promoted type of `signed short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `unsigned short' and UndeclaredType # makes integer-promoted type of `unsigned short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `short int' and UndeclaredType # makes integer-promoted type of `short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `signed short int' and UndeclaredType # makes integer-promoted type of `signed short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `unsigned short int' and UndeclaredType # makes integer-promoted type of `unsigned short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `int' and UndeclaredType makes `int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `signed' and UndeclaredType makes `signed'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `signed int' and UndeclaredType # makes `signed int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `unsigned' and UndeclaredType # makes `unsigned'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `unsigned int' and UndeclaredType # makes `unsigned int'. lhs_type # NOTREACHED end def _arithmetic_type_with_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `long' and UndeclaredType makes `long'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `signed long' and UndeclaredType # makes `signed long'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `unsigned long' and UndeclaredType # makes `unsigned long'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `long int' and UndeclaredType # makes `long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `signed long int' and UndeclaredType # makes `signed long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `unsigned long int' and UndeclaredType # makes `unsigned long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `long long' and UndeclaredType # makes `long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `signed long long' and UndeclaredType # makes `signed long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `unsigned long long' and UndeclaredType # makes `unsigned long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `long long int' and UndeclaredType # makes `long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `signed long long int' and UndeclaredType # makes `signed long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `unsigned long long int' and UndeclaredType # makes `unsigned long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_float(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `float' and UndeclaredType makes `float'. lhs_type # NOTREACHED end def _arithmetic_type_with_double(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `double' and UndeclaredType makes `double'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_double(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with `long double' and UndeclaredType # makes `long double'. lhs_type # NOTREACHED end def _arithmetic_type_with_bitfield(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with BitfieldType and UndeclaredType # makes integer-promoted type of BitfieldType. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_enum(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with EnumType and UndeclaredType makes EnumType. lhs_type # NOTREACHED end def _arithmetic_type_with_pointer(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with PointerType and UndeclaredType # makes PointerType. lhs_type # NOTREACHED end def _arithmetic_type_with_array(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_struct(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_union(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_extended_big_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UndeclaredType must not be executed! # NOTE: Binary operation with ExtendedBigIntType and UndeclaredType # makes ExtendedBigIntType. lhs_type # NOTREACHED end def corresponding_signed_type self # NOTREACHED end def corresponding_unsigned_type self # NOTREACHED end def dup UndeclaredType.new(type_table) end end class UnresolvedType < Type def initialize(type_tbl) super(type_tbl, "__adlint__unresolved_type") end def id @id ||= TypeId.new(name) end def image name end def brief_image name end def location nil end def named? false end def bit_size 0 end def bit_alignment 0 end def real_type self end def base_type self end def unqualify self end def incomplete? true end def compatible?(to_type) false end def coercible?(to_type) false end def convertible?(to_type) false end def same_as?(type) false end def scalar? false end def integer? false end def floating? false end def array? false end def struct? false end def union? false end def pointer? false end def qualified? false end def function? false end def enum? false end def user? false end def void? false end def standard? false end def undeclared? false end def unresolved? true end def const? false end def volatile? false end def restrict? false end def bitfield? false end def signed? false end def explicitly_signed? false end def have_va_list? false end def return_type self end def parameter_types [] end def enumerators [] end def length 0 end def impl_length 0 end def members [] end def member_named(name) nil end def min 0 end def max 0 end def nil_value ScalarValue.of_nil(logical_right_shift?) end def zero_value ScalarValue.of_nil(logical_right_shift?) end def arbitrary_value ScalarValue.of_nil(logical_right_shift?) end def undefined_value ScalarValue.of_nil(logical_right_shift?) end def parameter_value ScalarValue.of_nil(logical_right_shift?) end def return_value ScalarValue.of_nil(logical_right_shift?) end def coerce_scalar_value(val) ScalarValue.of_nil(logical_right_shift?) end def coerce_array_value(val) ScalarValue.of_nil(logical_right_shift?) end def coerce_composite_value(val) ScalarValue.of_nil(logical_right_shift?) end def integer_conversion_rank 0 # NOTREACHED end def integer_promoted_type self # NOTREACHED end def argument_promoted_type self # NOTREACHED end def arithmetic_type_with(type) # NOTE: An arithmetic operation with UnresolvedType must not be executed! type._arithmetic_type_with_unresolved(self) end def _arithmetic_type_with_undeclared(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_unresolved(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_void(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_function(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `char' and UnresolvedType # makes integer-promoted type of `char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `signed char' and UnresolvedType # makes integer-promoted type of `signed char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `unsigned char' and UnresolvedType # makes integer-promoted type of `unsigned char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `short' and UnresolvedType # makes integer-promoted type of `short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `signed short' and UnresolvedType # makes integer-promoted type of `signed short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `unsigned short' and UnresolvedType # makes integer-promoted type of `unsigned short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `short int' and UnresolvedType # makes integer-promoted type of `short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `signed short int' and UnresolvedType # makes integer-promoted type of `signed short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `unsigned short int' and UnresolvedType # makes integer-promoted type of `unsigned short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `int' and UnresolvedType makes `int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `signed' and UnresolvedType makes `signed'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `signed int' and UnresolvedType # makes `signed int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `unsigned' and UnresolvedType # makes `unsigned'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `unsigned int' and UnresolvedType # makes `unsigned int'. lhs_type # NOTREACHED end def _arithmetic_type_with_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `long' and UnresolvedType makes `long'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `signed long' and UnresolvedType # makes `signed long'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `unsigned long' and UnresolvedType # makes `unsigned long'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `long int' and UnresolvedType # makes `long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `signed long int' and UnresolvedType # makes `signed long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `unsigned long int' and UnresolvedType # makes `unsigned long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `long long' and UnresolvedType # makes `long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `signed long long' and UnresolvedType # makes `signed long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `unsigned long long' and UnresolvedType # makes `unsigned long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `long long int' and UnresolvedType # makes `long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `signed long long int' and UnresolvedType # makes `signed long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `unsigned long long int' and UnresolvedType # makes `unsigned long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_float(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `float' and UnresolvedType makes `float'. lhs_type # NOTREACHED end def _arithmetic_type_with_double(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `double' and UnresolvedType makes `double'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_double(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with `long double' and UnresolvedType # makes `long double'. lhs_type # NOTREACHED end def _arithmetic_type_with_bitfield(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with BitfieldType and UnresolvedType # makes integer-promoted type of BitfieldType. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_enum(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with EnumType and UnresolvedType makes EnumType. lhs_type # NOTREACHED end def _arithmetic_type_with_pointer(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with PointerType and UnresolvedType # makes PointerType. lhs_type # NOTREACHED end def _arithmetic_type_with_array(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_struct(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_union(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_extended_big_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with UnresolvedType must not be executed! # NOTE: Binary operation with ExtendedBigIntType and UnresolvedType # makes ExtendedBigIntType. lhs_type # NOTREACHED end def corresponding_signed_type self # NOTREACHED end def corresponding_unsigned_type self # NOTREACHED end def dup UnresolvedType.new(type_table) end end class QualifiedType < Type def initialize(type_tbl, base_type, *cvr_quals) super(type_tbl, create_name(base_type, cvr_quals)) @base_type = base_type @cvr_qualifiers = cvr_quals end attr_reader :base_type def id @id ||= QualifiedTypeId.new(@base_type, @cvr_qualifiers) end def image @image ||= create_image(@base_type, @cvr_qualifiers) end def brief_image @brief_image ||= create_brief_image(@base_type, @cvr_qualifiers) end extend Forwardable def_delegator :@base_type, :declarations def_delegator :@base_type, :location def_delegator :@base_type, :named? def_delegator :@base_type, :bit_size def_delegator :@base_type, :bit_alignment def real_type type_table.qualified_type(@base_type.real_type, *@cvr_qualifiers) end def_delegator :@base_type, :unqualify def_delegator :@base_type, :incomplete? def_delegator :@base_type, :compatible? def_delegator :@base_type, :coercible? def convertible?(to_type) real_type.unqualify.convertible?(to_type.real_type.unqualify) end def more_cv_qualified?(than_type) # NOTE: The term `more cv-qualified' means: # const > none # volatile > none # const volatile > none # const volatile > const # const volatile > volatile if than_type.qualified? if than_type.const? && than_type.volatile? false else if self.const? && self.volatile? true else false end end else true end end def_delegator :@base_type, :scalar? def_delegator :@base_type, :integer? def_delegator :@base_type, :floating? def_delegator :@base_type, :array? def_delegator :@base_type, :struct? def_delegator :@base_type, :union? def_delegator :@base_type, :pointer? def qualified? true end def_delegator :@base_type, :function? def_delegator :@base_type, :enum? def_delegator :@base_type, :user? def_delegator :@base_type, :void? def_delegator :@base_type, :standard? def_delegator :@base_type, :undeclared? def_delegator :@base_type, :unresolved? def const? @cvr_qualifiers.include?(:const) end def volatile? @cvr_qualifiers.include?(:volatile) end def restrict? @cvr_qualifiers.include?(:restrict) end def_delegator :@base_type, :bitfield? def_delegator :@base_type, :signed? def_delegator :@base_type, :explicitly_signed? def_delegator :@base_type, :have_va_list? def_delegator :@base_type, :return_type def_delegator :@base_type, :parameter_types def_delegator :@base_type, :enumerators def_delegator :@base_type, :length def_delegator :@base_type, :length= def_delegator :@base_type, :impl_length def_delegator :@base_type, :members def_delegator :@base_type, :member_named def_delegator :@base_type, :min def_delegator :@base_type, :max def_delegator :@base_type, :nil_value def_delegator :@base_type, :zero_value def_delegator :@base_type, :arbitrary_value def_delegator :@base_type, :undefined_value def_delegator :@base_type, :parameter_value def_delegator :@base_type, :return_value def_delegator :@base_type, :coerce_scalar_value def_delegator :@base_type, :coerce_array_value def_delegator :@base_type, :coerce_composite_value def_delegator :@base_type, :integer_conversion_rank def_delegator :@base_type, :integer_promoted_type def_delegator :@base_type, :argument_promoted_type def_delegator :@base_type, :arithmetic_type_with def_delegator :@base_type, :_arithmetic_type_with_undeclared def_delegator :@base_type, :_arithmetic_type_with_unresolved def_delegator :@base_type, :_arithmetic_type_with_void def_delegator :@base_type, :_arithmetic_type_with_function def_delegator :@base_type, :_arithmetic_type_with_char def_delegator :@base_type, :_arithmetic_type_with_signed_char def_delegator :@base_type, :_arithmetic_type_with_unsigned_char def_delegator :@base_type, :_arithmetic_type_with_short def_delegator :@base_type, :_arithmetic_type_with_signed_short def_delegator :@base_type, :_arithmetic_type_with_unsigned_short def_delegator :@base_type, :_arithmetic_type_with_short_int def_delegator :@base_type, :_arithmetic_type_with_signed_short_int def_delegator :@base_type, :_arithmetic_type_with_unsigned_short_int def_delegator :@base_type, :_arithmetic_type_with_int def_delegator :@base_type, :_arithmetic_type_with_signed def_delegator :@base_type, :_arithmetic_type_with_signed_int def_delegator :@base_type, :_arithmetic_type_with_unsigned def_delegator :@base_type, :_arithmetic_type_with_unsigned_int def_delegator :@base_type, :_arithmetic_type_with_long def_delegator :@base_type, :_arithmetic_type_with_signed_long def_delegator :@base_type, :_arithmetic_type_with_unsigned_long def_delegator :@base_type, :_arithmetic_type_with_long_int def_delegator :@base_type, :_arithmetic_type_with_signed_long_int def_delegator :@base_type, :_arithmetic_type_with_unsigned_long_int def_delegator :@base_type, :_arithmetic_type_with_long_long def_delegator :@base_type, :_arithmetic_type_with_signed_long_long def_delegator :@base_type, :_arithmetic_type_with_unsigned_long_long def_delegator :@base_type, :_arithmetic_type_with_long_long_int def_delegator :@base_type, :_arithmetic_type_with_signed_long_long_int def_delegator :@base_type, :_arithmetic_type_with_unsigned_long_long_int def_delegator :@base_type, :_arithmetic_type_with_float def_delegator :@base_type, :_arithmetic_type_with_double def_delegator :@base_type, :_arithmetic_type_with_long_double def_delegator :@base_type, :_arithmetic_type_with_bitfield def_delegator :@base_type, :_arithmetic_type_with_enum def_delegator :@base_type, :_arithmetic_type_with_pointer def_delegator :@base_type, :_arithmetic_type_with_array def_delegator :@base_type, :_arithmetic_type_with_struct def_delegator :@base_type, :_arithmetic_type_with_union def_delegator :@base_type, :_arithmetic_type_with_extended_big_int def_delegator :@base_type, :corresponding_signed_type def_delegator :@base_type, :corresponding_unsigned_type def dup QualifiedType.new(type_table, @base_type.dup, *@cvr_qualifiers) end private def create_name(base_type, cvr_quals) append_cvr_qualifiers(base_type.name, cvr_quals) end def create_image(base_type, cvr_quals) append_cvr_qualifiers(base_type.image, cvr_quals) end def create_brief_image(base_type, cvr_quals) append_cvr_qualifiers(base_type.brief_image, cvr_quals) end def append_cvr_qualifiers(type_str, cvr_quals) qualed_str = type_str qualed_str = "#{qualed_str} const" if cvr_quals.include?(:const) qualed_str = "#{qualed_str} volatile" if cvr_quals.include?(:volatile) qualed_str = "#{qualed_str} restrict" if cvr_quals.include?(:restrict) qualed_str end end class QualifiedTypeId < TypeId def initialize(base_type, cvr_quals) super(create_value(base_type, cvr_quals)) @base_type = base_type @cvr_qualifiers = cvr_quals.sort end def ==(rhs_id) case rhs_id when QualifiedTypeId @cvr_qualifiers == rhs_id.cvr_qualifiers && @base_type == rhs_id.base_type else false end end protected attr_reader :base_type attr_reader :cvr_qualifiers private def create_value(base_type, cvr_quals) value = base_type.real_type.brief_image value = "#{value} const" if cvr_quals.include?(:const) value = "#{value} volatile" if cvr_quals.include?(:volatile) value = "#{value} restrict" if cvr_quals.include?(:restrict) value end end class VoidType < Type def initialize(type_tbl) super(type_tbl, "void") end def id @id ||= StandardTypeId.new("void") end def image name end def brief_image name end def location nil end def named? true end def bit_size 0 end def bit_alignment 0 end def real_type self end def base_type nil end def unqualify self end def incomplete? true end def compatible?(to_type) false end def coercible?(to_type) false end def convertible?(to_type) to_type.void? end def same_as?(type) false end def scalar? false end def integer? false end def floating? false end def array? false end def struct? false end def union? false end def pointer? false end def qualified? false end def function? false end def enum? false end def user? false end def void? true end def standard? true end def undeclared? false end def unresolved? false end def const? false end def volatile? false end def restrict? false end def bitfield? false end def signed? false end def explicitly_signed? false end def have_va_list? false end def return_type self end def parameter_types [] end def enumerators [] end def length 0 end def impl_length 0 end def members [] end def member_named(name) nil end def min 0 end def max 0 end def nil_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def zero_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def arbitrary_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def undefined_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def parameter_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def return_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def coerce_scalar_value(val) ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def coerce_array_value(val) ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def coerce_composite_value(val) ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def integer_conversion_rank 0 # NOTREACHED end def integer_promoted_type self # NOTREACHED end def argument_promoted_type self # NOTREACHED end def arithmetic_type_with(type) # NOTE: An arithmetic operation with `void' must not be executed! type._arithmetic_type_with_void(self) end def _arithmetic_type_with_undeclared(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_unresolved(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_void(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_function(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `char' and `void' # makes integer-promoted type of `char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `signed char' and `void' # makes integer-promoted type of `signed char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `unsigned char' and `void' # makes integer-promoted type of `unsigned char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `short' and `void' # makes integer-promoted type of `short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `signed short' and `void' # makes integer-promoted type of `signed short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `unsigned short' and `void' # makes integer-promoted type of `unsigned short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `short int' and `void' # makes integer-promoted type of `short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `signed short int' and `void' # makes integer-promoted type of `signed short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `unsigned short int' and `void' # makes integer-promoted type of `unsigned short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `int' and `void' makes `int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `signed' and `void' makes `signed'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `signed int' and `void' makes `signed int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `unsigned' and `void' makes `unsigned'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `unsigned int' and `void' # makes `unsigned int'. lhs_type # NOTREACHED end def _arithmetic_type_with_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `long' and `void' makes `long'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `signed long' and `void' # makes `signed long'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `unsigned long' and `void' # makes `unsigned long'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `long int' and `void' makes `long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `signed long int' and `void' # makes `signed long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `unsigned long int' and `void' # makes `unsigned long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `long long' and `void' makes `long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `signed long long' and `void' # makes `signed long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `unsigned long long' and `void' # makes `unsigned long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `long long int' and `void' # makes `long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `signed long long int' and `void' # makes `signed long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `unsigned long long int' and `void' # makes `unsigned long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_float(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `float' and `void' makes `float'. lhs_type # NOTREACHED end def _arithmetic_type_with_double(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `double' and `void' makes `double'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_double(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with `long double' and `void' # makes `long double'. lhs_type # NOTREACHED end def _arithmetic_type_with_bitfield(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with BitfieldType and `void' # makes integer-promoted type of BitfieldType. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_enum(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with EnumType and `void' makes EnumType. lhs_type # NOTREACHED end def _arithmetic_type_with_pointer(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with PointerType and `void' makes PointerType. lhs_type # NOTREACHED end def _arithmetic_type_with_array(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_struct(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_union(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_extended_big_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with `void' must not be executed! # NOTE: Binary operation with ExtendedBigIntType and `void' # makes ExtendedBigIntType. lhs_type # NOTREACHED end def corresponding_signed_type self # NOTREACHED end def corresponding_unsigned_type self # NOTREACHED end def dup VoidType.new(type_table) end end class FunctionType < Type def initialize(type_tbl, ret_type, param_types, have_va_list = false) super(type_tbl, create_name(ret_type, param_types, have_va_list)) @return_type = ret_type @parameter_types = param_types @have_va_list = have_va_list end attr_reader :return_type attr_reader :parameter_types def declarations @return_type.declarations + @parameter_types.reduce([]) { |dcls, type| dcls + type.declarations } end def id @id ||= FunctionTypeId.new(@return_type, @parameter_types, @have_va_list) end def image @image ||= create_image(@return_type, @parameter_types, @have_va_list) end def brief_image @brief_image ||= create_brief_image(@return_type, @parameter_types, @have_va_list) end def location nil end def named? true end def bit_size 0 end def bit_alignment 0 end def real_type type_table.function_type(@return_type.real_type, @parameter_types.map { |type| type.real_type }, @have_va_list) end def base_type nil end def unqualify self end def incomplete? @return_type.incomplete? && !@return_type.void? or @parameter_types.empty? || @parameter_types.any? { |type| type.incomplete? && !type.void? } end def compatible?(to_type) return false unless to_type.function? lhs_params = @parameter_types rhs_params = to_type.parameter_types @return_type.compatible?(to_type.return_type) && lhs_params.size == rhs_params.size && lhs_params.zip(rhs_params).all? { |lhs, rhs| lhs.compatible?(rhs) } && @have_va_list == to_type.have_va_list? end def coercible?(to_type) false end def scalar? false end def integer? false end def floating? false end def array? false end def struct? false end def union? false end def pointer? false end def qualified? false end def function? true end def enum? false end def user? false end def void? false end def standard? false end def undeclared? false end def unresolved? @return_type.unresolved? || @parameter_types.any? { |type| type.unresolved? } end def const? false end def volatile? false end def restrict? false end def bitfield? false end def signed? false end def explicitly_signed? false end def have_va_list? @have_va_list end def enumerators [] end def length 0 end def impl_length 0 end def members [] end def member_named(name) nil end def min 0 end def max 0 end def nil_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def zero_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def arbitrary_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def undefined_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def parameter_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def return_value ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def coerce_scalar_value(val) ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def coerce_array_value(val) ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def coerce_composite_value(val) ScalarValue.of_nil(logical_right_shift?) # NOTREACHED end def integer_conversion_rank 0 # NOTREACHED end def integer_promoted_type self # NOTREACHED end def argument_promoted_type self # NOTREACHED end def arithmetic_type_with(type) # NOTE: An arithmetic operation with FunctionType must not be executed! type._arithmetic_type_with_function(self) end def _arithmetic_type_with_undeclared(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_unresolved(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_void(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_function(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `char' and FunctionType # makes integer-promoted type of `char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `signed char' and FunctionType # makes integer-promoted type of `signed char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `unsigned char' and FunctionType # makes integer-promoted type of `unsigned char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `short' and FunctionType # makes integer-promoted type of `short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `signed short' and FunctionType # makes integer-promoted type of `signed short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `unsigned short' and FunctionType # makes integer-promoted type of `unsigned short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `short int' and FunctionType # makes integer-promoted type of `short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `signed short int' and FunctionType # makes integer-promoted type of `signed short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `unsigned short int' and FunctionType # makes integer-promoted type of `unsigned short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `int' and FunctionType makes `int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `signed' and FunctionType makes `signed'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `signed int' and FunctionType # makes `signed int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `unsigned' and FunctionType # makes `unsigned'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `unsigned int' and FunctionType # makes `unsigned int'. lhs_type # NOTREACHED end def _arithmetic_type_with_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `long' and FunctionType makes `long'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `signed long' and FunctionType # makes `signed long'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `unsigned long' and FunctionType # makes `unsigned long'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `long int' and FunctionType # makes `long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `signed long int' and FunctionType # makes `signed long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `unsigned long int' and FunctionType # makes `unsigned long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `long long' and FunctionType # makes `long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `signed long long' and FunctionType # makes `signed long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `unsigned long long' and FunctionType # makes `unsigned long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `long long int' and FunctionType # makes `long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `signed long long int' and FunctionType # makes `signed long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `unsigned long long int' and FunctionType # makes `unsigned long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_float(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `float' and FunctionType makes `float'. lhs_type # NOTREACHED end def _arithmetic_type_with_double(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `double' and FunctionType makes `double'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_double(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with `long double' and FunctionType # makes `long double'. lhs_type # NOTREACHED end def _arithmetic_type_with_bitfield(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with BitfieldType and FunctionType # makes integer-promoted type of BitfieldType. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_enum(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with EnumType and FunctionType makes EnumType. lhs_type # NOTREACHED end def _arithmetic_type_with_pointer(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with PointerType and FunctionType # makes PointerType. lhs_type # NOTREACHED end def _arithmetic_type_with_array(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_struct(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_union(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_extended_big_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with FunctionType must not be executed! # NOTE: Binary operation with ExtendedBigIntType and FunctionType # makes ExtendedBigIntType. lhs_type # NOTREACHED end def corresponding_signed_type self # NOTREACHED end def corresponding_unsigned_type self # NOTREACHED end def ==(rhs_type) case rhs_type when FunctionType if parameter_types.empty? || rhs_type.parameter_types.empty? return_type == rhs_type.return_type else return_type == rhs_type.return_type && parameter_types == rhs_type.parameter_types && have_va_list? == rhs_type.have_va_list? end else false end end def dup FunctionType.new(type_table, @return_type.dup, @parameter_types.map { |t| t.dup }, @have_va_list) end private def create_name(ret_type, param_types, have_va_list) "#{ret_type.name}(" + param_types.map { |type| type.name }.join(", ") + (have_va_list ? ",...)" : ")") end def create_image(ret_type, param_types, have_va_list) "#{ret_type.image}(" + param_types.map { |type| type.image }.join(", ") + (have_va_list ? ",...)" : ")") end def create_brief_image(ret_type, param_types, have_va_list) "#{ret_type.brief_image}(" + param_types.map { |type| type.brief_image }.join(", ") + (have_va_list ? ",...)" : ")") end end class FunctionTypeId < TypeId def initialize(ret_type, param_types, have_va_list) super(create_value(ret_type, param_types, have_va_list)) end private def create_value(ret_type, param_types, have_va_list) "#{ret_type.brief_image}(" + param_types.map { |type| type.brief_image }.join(",") + (have_va_list ? ",...)" : ")") end end class ScalarDataType < Type include UsualArithmeticTypeConversion def initialize(type_tbl, name, bit_size, bit_align, type_dcls = []) super(type_tbl, name, type_dcls) @bit_size = bit_size @bit_alignment = bit_align end attr_reader :bit_size attr_reader :bit_alignment def id subclass_responsibility end def image subclass_responsibility end def brief_image subclass_responsibility end def location subclass_responsibility end def named? subclass_responsibility end def real_type self end def base_type nil end def unqualify self end def compatible?(to_type) subclass_responsibility end def coercible?(to_type) to_type.scalar? end def scalar? true end def integer? subclass_responsibility end def floating? subclass_responsibility end def array? false end def struct? false end def union? false end def pointer? subclass_responsibility end def qualified? false end def function? false end def enum? subclass_responsibility end def user? false end def void? false end def standard? subclass_responsibility end def undeclared? false end def unresolved? false end def const? false end def volatile? false end def restrict? false end def bitfield? subclass_responsibility end def signed? subclass_responsibility end def explicitly_signed? subclass_responsibility end def have_va_list? false end def return_type nil end def parameter_types [] end def enumerators subclass_responsibility end def length 0 end def impl_length 0 end def members [] end def member_named(name) nil end def min subclass_responsibility end def max subclass_responsibility end def nil_value ScalarValue.of_nil(logical_right_shift?) end def zero_value ScalarValue.of(0, logical_right_shift?) end def arbitrary_value ScalarValue.of_arbitrary(logical_right_shift?) end def undefined_value ScalarValue.of_undefined(min..max, logical_right_shift?) end def parameter_value ScalarValue.of(min..max, logical_right_shift?) end def return_value ScalarValue.of(min..max, logical_right_shift?) end def coerce_scalar_value(val) val.dup.tap do |v| v.narrow_domain!(Operator::EQ, ScalarValue.of(min..max, logical_right_shift?)) end end def coerce_array_value(val) fst_val = val.values.first fst_val = fst_val.values.first until fst_val && fst_val.scalar? if fst_val && fst_val.scalar? coerce_scalar_value(fst_val) else undefined_value end end def coerce_composite_value(val) fst_val = val.values.first fst_val = fst_val.values.first until fst_val && fst_val.scalar? if fst_val && fst_val.scalar? coerce_scalar_value(fst_val) else undefined_value end end def integer_conversion_rank subclass_responsibility end def integer_promoted_type subclass_responsibility end def argument_promoted_type subclass_responsibility end def arithmetic_type_with(type) subclass_responsibility end def _arithmetic_type_with_undeclared(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_unresolved(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_void(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_function(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_char(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_signed_char(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_unsigned_char(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_short(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_signed_short(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_unsigned_short(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_short_int(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_signed_short_int(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_unsigned_short_int(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_int(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_signed(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_signed_int(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_unsigned(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_unsigned_int(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_long(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_signed_long(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_unsigned_long(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_long_int(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_signed_long_int(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_unsigned_long_int(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_long_long(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_signed_long_long(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_unsigned_long_long(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_long_long_int(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_signed_long_long_int(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_unsigned_long_long_int(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_float(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_double(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_long_double(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_bitfield(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_enum(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_pointer(lhs_type, rhs_type = self) do_usual_arithmetic_type_conversion(lhs_type, rhs_type) end def _arithmetic_type_with_array(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_struct(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_union(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_extended_big_int(lhs_type, rhs_type = self) # NOTE: Binary operation with ExtendedBigIntType and any scalar type # makes ExtendedBigIntType. lhs_type end def corresponding_signed_type subclass_responsibility end def corresponding_unsigned_type subclass_responsibility end def dup subclass_responsibility end end class IntegerType < ScalarDataType def initialize(type_tbl, name, bit_size, bit_align, signed, explicitly_signed, type_dcls = []) super(type_tbl, name, bit_size, bit_align, type_dcls) @signed = signed @explicitly_signed = explicitly_signed end def id subclass_responsibility end def image name end def brief_image name end def location nil end def compatible?(to_type) to_type.integer? && to_type.min <= min && max <= to_type.max end def integer? true end def floating? false end def pointer? subclass_responsibility end def enum? subclass_responsibility end def standard? subclass_responsibility end def bitfield? subclass_responsibility end def signed? @signed end def explicitly_signed? @explicitly_signed end def enumerators subclass_responsibility end def min if @signed -2**(@bit_size - 1) else 0 end end def max if @signed 2**(@bit_size - 1) - 1 else 2**@bit_size - 1 end end def integer_conversion_rank subclass_responsibility end def integer_promoted_type # NOTE: The ISO C99 standard says; # # 6.3.1 Arithmetic operands # 6.3.1.1 Boolean, characters, and integers # # 2 The following may be used in an expression wherever an int or # unsigned int may be used: # # -- An object or expression with an integer type whose integer # conversion rank is less than or equal to the rank of int and # unsigned int. # -- A bit-field of type _Bool, int, signed int, or unsigned int. # # If an int can represent all values of the original type, the value is # converted to an int; otherwise, it is converted to an unsigned int. # These are called the integer promotions. All other types are # unchanged by the integer promotions. if self.integer_conversion_rank <= int_t.integer_conversion_rank self.compatible?(int_t) ? int_t : unsigned_int_t else self end end def argument_promoted_type # NOTE: The ISO C99 standard says; # # 6.5.2.2 Function calls # # 6 If the expression that denotes the called function has a type that # does not include a prototype, the integer promotions are performed on # each argument, and arguments that have type float are promoted to # double. These are called the default argument promotions. If the # number of arguments does not equal the number of parameters, the # behavior is undefined. If the function is defined with a type that # includes a prototype, and either the prototype ends with an ellipsis # (, ...) or the types of the arguments after promotion are not # compatible with the types of the parameters, the behavior is # undefined. If the function is defined with a type that does not # include a prototype, and the types of the arguments after promotion # are not compatible with those of the parameters after promotion, the # behavior is undefined, except for the following cases: # # -- one promoted type is a signed integer type, the other promoted # type is the corresponding unsigned integer type, and the value # is representable in both types; # -- both types are pointers to qualified or unqualified versions of # a character type or void. self.integer_promoted_type end def arithmetic_type_with(type) subclass_responsibility end def corresponding_signed_type subclass_responsibility end def corresponding_unsigned_type subclass_responsibility end def dup subclass_responsibility end end class StandardIntegerType < IntegerType def id subclass_responsibility end def named? true end def incomplete? false end def pointer? false end def enum? false end def standard? true end def bitfield? false end def enumerators [] end def integer_conversion_rank subclass_responsibility end def arithmetic_type_with(type) subclass_responsibility end def corresponding_signed_type subclass_responsibility end def corresponding_unsigned_type subclass_responsibility end def dup self.class.new(type_table) end end class CharType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "char", char_size, char_alignment, !char_as_unsigned_char?, false) end def id # NOTE: `char' type may be treated as `unsigned char'. # Specialized type comparison is implemented in CharTypeId, # SignedCharTypeId and UnsignedCharTypeId. @id ||= CharTypeId.new(char_as_unsigned_char?) end def integer_conversion_rank # NOTE: The ISO C99 standard says; # # 6.3.1 Arithmetic operands # 6.3.1.1 Boolean, characters, and integers # # 1 Every integer type has an integer conversion rank defined as follows: # # -- No two signed integer types shall have the same rank, even if # they have the same representation. # -- The rank of a signed integer type shall be greater than the rank # of any signed integer type with less precision. # -- The rank of long long int shall be greater than the rank of long # int, which shall be greater than the rank of int, which shall be # greater than the rank of short int, which shall be greater than # the rank of signed char. # -- The rank of any unsigned integer type shall equal the rank of # the corresponding signed integer type, if any. # -- The rank of any standard integer type shall be greater than the # rank of any extended integer type with the same width. # -- The rank of char shall equal the rank of signed char and # unsigned char. # -- The rank of _Bool shall be less than the rank of all other # standard integer types. # -- The rank of any enumerated type shall equal the rank of the # compatible integer type. # -- The rank of any extended signed integer type relative to another # extended signed integer type with the same precision is # implementation-defined, but still subject to the other rules for # determining the integer conversion rank. # -- For all integer types T1, T2, and T3, if T1 has greater rank # than T2 and T2 has greater rank than T3, then T1 has greater # rank than T3. # # NOTE: char = 1, short int = 2, int = 3, long int = 4, long long int = 5 1 end def arithmetic_type_with(type) type._arithmetic_type_with_char(self) end def corresponding_signed_type signed_char_t end def corresponding_unsigned_type unsigned_char_t end end class CharTypeId < StandardTypeId def initialize(char_as_unsigned_char) super("char") @char_as_unsigned_char = char_as_unsigned_char end def ==(rhs_id) if @char_as_unsigned_char case rhs_id when CharTypeId, UnsignedCharTypeId return true end else case rhs_id when CharTypeId, SignedCharTypeId return true end end false end end class SignedCharType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "signed char", char_size, char_alignment, true, true) end def id # NOTE: `char' type may be treated as `unsigned char'. # Specialized type comparison is implemented in CharTypeId, # SignedCharTypeId and UnsignedCharTypeId. @id ||= SignedCharTypeId.new(char_as_unsigned_char?) end def integer_conversion_rank 1 end def arithmetic_type_with(type) type._arithmetic_type_with_signed_char(self) end def corresponding_signed_type self end def corresponding_unsigned_type unsigned_char_t end end class SignedCharTypeId < StandardTypeId def initialize(char_as_unsigned_char) super("signed char") @char_as_unsigned_char = char_as_unsigned_char end def ==(rhs_id) if @char_as_unsigned_char case rhs_id when SignedCharTypeId return true end else case rhs_id when SignedCharTypeId, CharTypeId return true end end false end end class UnsignedCharType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "unsigned char", char_size, char_alignment, false, true) end def id # NOTE: `char' type may be treated as `unsigned char'. # Specialized type comparison is implemented in CharTypeId, # SignedCharTypeId and UnsignedCharTypeId. @id ||= UnsignedCharTypeId.new(char_as_unsigned_char?) end def integer_conversion_rank 1 end def arithmetic_type_with(type) type._arithmetic_type_with_unsigned_char(self) end def corresponding_signed_type signed_char end def corresponding_unsigned_type self end end class UnsignedCharTypeId < StandardTypeId def initialize(char_as_unsigned_char) super("unsigned char") @char_as_unsigned_char = char_as_unsigned_char end def ==(rhs_id) if @char_as_unsigned_char case rhs_id when UnsignedCharTypeId, CharTypeId return true end else case rhs_id when UnsignedCharTypeId return true end end false end end class ShortType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "short", short_size, short_alignment, true, false) end def id @id ||= ShortTypeId.new end def integer_conversion_rank 2 end def arithmetic_type_with(type) type._arithmetic_type_with_short(self) end def corresponding_signed_type signed_short_t end def corresponding_unsigned_type unsigned_short_t end end class ShortTypeId < StandardTypeId def initialize super("short") end def ==(rhs_id) case rhs_id when ShortTypeId, SignedShortTypeId, ShortIntTypeId, SignedShortIntTypeId true else false end end end class SignedShortType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "signed short", short_size, short_alignment, true, true) end def id @id ||= SignedShortTypeId.new end def integer_conversion_rank 2 end def arithmetic_type_with(type) type._arithmetic_type_with_signed_short(self) end def corresponding_signed_type self end def corresponding_unsigned_type unsigned_short_t end end class SignedShortTypeId < StandardTypeId def initialize super("signed short") end def ==(rhs_id) case rhs_id when SignedShortTypeId, ShortTypeId, ShortIntTypeId, SignedShortIntTypeId true else false end end end class UnsignedShortType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "unsigned short", short_size, short_alignment, false, true) end def id @id ||= UnsignedShortTypeId.new end def integer_conversion_rank 2 end def arithmetic_type_with(type) type._arithmetic_type_with_unsigned_short(self) end def corresponding_signed_type signed_short_t end def corresponding_unsigned_type self end end class UnsignedShortTypeId < StandardTypeId def initialize super("unsigned short") end def ==(rhs_id) case rhs_id when UnsignedShortTypeId, UnsignedShortIntTypeId true else false end end end class ShortIntType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "short int", short_size, short_alignment, true, false) end def id @id ||= ShortIntTypeId.new end def integer_conversion_rank 2 end def arithmetic_type_with(type) type._arithmetic_type_with_short_int(self) end def corresponding_signed_type signed_short_int_t end def corresponding_unsigned_type unsigned_short_int_t end end class ShortIntTypeId < StandardTypeId def initialize super("short int") end def ==(rhs_id) case rhs_id when ShortIntTypeId, ShortTypeId, SignedShortTypeId, SignedShortIntTypeId true else false end end end class SignedShortIntType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "signed short int", short_size, short_alignment, true, true) end def id @id ||= SignedShortIntTypeId.new end def integer_conversion_rank 2 end def arithmetic_type_with(type) type._arithmetic_type_with_signed_short_int(self) end def corresponding_signed_type self end def corresponding_unsigned_type unsigned_short_int_t end end class SignedShortIntTypeId < StandardTypeId def initialize super("signed short int") end def ==(rhs_id) case rhs_id when SignedShortIntTypeId, ShortTypeId, ShortIntTypeId, SignedShortTypeId true else false end end end class UnsignedShortIntType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "unsigned short int", short_size, short_alignment, false, true) end def id @id ||= UnsignedShortIntTypeId.new end def integer_conversion_rank 2 end def arithmetic_type_with(type) type._arithmetic_type_with_unsigned_short_int(self) end def corresponding_signed_type signed_short_int_t end def corresponding_unsigned_type self end end class UnsignedShortIntTypeId < StandardTypeId def initialize super("unsigned short int") end def ==(rhs_id) case rhs_id when UnsignedShortIntTypeId, UnsignedShortTypeId true else false end end end class IntType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "int", int_size, int_alignment, true, false) end def id @id ||= IntTypeId.new end def integer_conversion_rank 3 end def arithmetic_type_with(type) type._arithmetic_type_with_int(self) end def corresponding_signed_type signed_int_t end def corresponding_unsigned_type unsigned_int_t end end class IntTypeId < StandardTypeId def initialize super("int") end def ==(rhs_id) case rhs_id when IntTypeId, SignedTypeId, SignedIntTypeId true else false end end end class SignedType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "signed", int_size, int_alignment, true, true) end def id @id ||= SignedTypeId.new end def integer_conversion_rank 3 end def arithmetic_type_with(type) type._arithmetic_type_with_signed(self) end def corresponding_signed_type self end def corresponding_unsigned_type unsigned_t end end class SignedTypeId < StandardTypeId def initialize super("signed") end def ==(rhs_id) case rhs_id when SignedTypeId, IntTypeId, SignedIntTypeId true else false end end end class SignedIntType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "signed int", int_size, int_alignment, true, true) end def id @id ||= SignedIntTypeId.new end def integer_conversion_rank 3 end def arithmetic_type_with(type) type._arithmetic_type_with_signed_int(self) end def corresponding_signed_type self end def corresponding_unsigned_type unsigned_int_t end end class SignedIntTypeId < StandardTypeId def initialize super("signed int") end def ==(rhs_id) case rhs_id when SignedIntTypeId, IntTypeId, SignedTypeId true else false end end end class UnsignedType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "unsigned", int_size, int_alignment, false, true) end def id @id ||= UnsignedTypeId.new end def integer_conversion_rank 3 end def arithmetic_type_with(type) type._arithmetic_type_with_unsigned(self) end def corresponding_signed_type signed_t end def corresponding_unsigned_type self end end class UnsignedTypeId < StandardTypeId def initialize super("unsigned") end def ==(rhs_id) case rhs_id when UnsignedTypeId, UnsignedIntTypeId true else false end end end class UnsignedIntType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "unsigned int", int_size, int_alignment, false, true) end def id @id ||= UnsignedIntTypeId.new end def integer_conversion_rank 3 end def arithmetic_type_with(type) type._arithmetic_type_with_unsigned_int(self) end def corresponding_signed_type signed_int_t end def corresponding_unsigned_type self end end class UnsignedIntTypeId < StandardTypeId def initialize super("unsigned int") end def ==(rhs_id) case rhs_id when UnsignedIntTypeId, UnsignedTypeId true else false end end end class LongType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "long", long_size, long_alignment, true, false) end def id @id ||= LongTypeId.new end def integer_conversion_rank 4 end def arithmetic_type_with(type) type._arithmetic_type_with_long(self) end def corresponding_signed_type signed_long_t end def corresponding_unsigned_type unsigned_long_t end end class LongTypeId < StandardTypeId def initialize super("long") end def ==(rhs_id) case rhs_id when LongTypeId, SignedLongTypeId, LongIntTypeId, SignedLongIntTypeId true else false end end end class SignedLongType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "signed long", long_size, long_alignment, true, true) end def id @id ||= SignedLongTypeId.new end def integer_conversion_rank 4 end def arithmetic_type_with(type) type._arithmetic_type_with_signed_long(self) end def corresponding_signed_type self end def corresponding_unsigned_type unsigned_long_t end end class SignedLongTypeId < StandardTypeId def initialize super("signed long") end def ==(rhs_id) case rhs_id when SignedLongTypeId, LongTypeId, LongIntTypeId, SignedLongIntTypeId true else false end end end class UnsignedLongType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "unsigned long", long_size, long_alignment, false, true) end def id @id ||= UnsignedLongTypeId.new end def integer_conversion_rank 4 end def arithmetic_type_with(type) type._arithmetic_type_with_unsigned_long(self) end def corresponding_signed_type signed_long_t end def corresponding_unsigned_type self end end class UnsignedLongTypeId < StandardTypeId def initialize super("unsigned long") end def ==(rhs_id) case rhs_id when UnsignedLongTypeId, UnsignedLongIntTypeId true else false end end end class LongIntType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "long int", long_size, long_alignment, true, false) end def id @id ||= LongIntTypeId.new end def integer_conversion_rank 4 end def arithmetic_type_with(type) type._arithmetic_type_with_long_int(self) end def corresponding_signed_type signed_long_int_t end def corresponding_unsigned_type unsigned_long_int_t end end class LongIntTypeId < StandardTypeId def initialize super("long int") end def ==(rhs_id) case rhs_id when LongIntTypeId, LongTypeId, SignedLongTypeId, SignedLongIntTypeId true else false end end end class SignedLongIntType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "signed long int", long_size, long_alignment, true, true) end def id @id ||= SignedLongIntTypeId.new end def integer_conversion_rank 4 end def arithmetic_type_with(type) type._arithmetic_type_with_signed_long_int(self) end def corresponding_signed_type self end def corresponding_unsigned_type unsigned_long_int_t end end class SignedLongIntTypeId < StandardTypeId def initialize super("signed long int") end def ==(rhs_id) case rhs_id when SignedLongIntTypeId, LongTypeId, LongIntTypeId, SignedLongTypeId true else false end end end class UnsignedLongIntType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "unsigned long int", long_size, long_alignment, false, true) end def id @id ||= UnsignedLongIntTypeId.new end def integer_conversion_rank 4 end def arithmetic_type_with(type) type._arithmetic_type_with_unsigned_long_int(self) end def corresponding_signed_type signed_long_int_t end def corresponding_unsigned_type self end end class UnsignedLongIntTypeId < StandardTypeId def initialize super("unsigned long int") end def ==(rhs_id) case rhs_id when UnsignedLongIntTypeId, UnsignedLongTypeId true else false end end end class LongLongType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "long long", long_long_size, long_long_alignment, true, false) end def id @id ||= LongLongTypeId.new end def integer_conversion_rank 5 end def arithmetic_type_with(type) type._arithmetic_type_with_long_long(self) end def corresponding_signed_type signed_long_long_t end def corresponding_unsigned_type unsigned_long_long_t end end class LongLongTypeId < StandardTypeId def initialize super("long long") end def ==(rhs_id) case rhs_id when LongLongTypeId, SignedLongLongTypeId, LongLongIntTypeId, SignedLongLongIntTypeId true else false end end end class SignedLongLongType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "signed long long", long_long_size, long_long_alignment, true, true) end def id @id ||= SignedLongLongTypeId.new end def integer_conversion_rank 5 end def arithmetic_type_with(type) type._arithmetic_type_with_signed_long_long(self) end def corresponding_signed_type self end def corresponding_unsigned_type unsigned_long_long_t end end class SignedLongLongTypeId < StandardTypeId def initialize super("signed long long") end def ==(rhs_id) case rhs_id when SignedLongLongTypeId, LongLongTypeId, LongLongIntTypeId, SignedLongLongIntTypeId true else false end end end class UnsignedLongLongType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "unsigned long long", long_long_size, long_long_alignment, false, true) end def id @id ||= UnsignedLongLongTypeId.new end def integer_conversion_rank 5 end def arithmetic_type_with(type) type._arithmetic_type_with_unsigned_long_long(self) end def corresponding_signed_type signed_long_long_t end def corresponding_unsigned_type self end end class UnsignedLongLongTypeId < StandardTypeId def initialize super("unsigned long long") end def ==(rhs_id) case rhs_id when UnsignedLongLongTypeId, UnsignedLongLongIntTypeId true else false end end end class LongLongIntType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "long long int", long_long_size, long_long_alignment, true, false) end def id @id ||= LongLongIntTypeId.new end def integer_conversion_rank 5 end def arithmetic_type_with(type) type._arithmetic_type_with_long_long_int(self) end def corresponding_signed_type signed_long_long_int_t end def corresponding_unsigned_type unsigned_long_long_int_t end end class LongLongIntTypeId < StandardTypeId def initialize super("long long int") end def ==(rhs_id) case rhs_id when LongLongIntTypeId, LongLongTypeId, SignedLongLongTypeId, SignedLongLongIntTypeId true else false end end end class SignedLongLongIntType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "signed long long int", long_long_size, long_long_alignment, true, true) end def id @id ||= SignedLongLongIntTypeId.new end def integer_conversion_rank 5 end def arithmetic_type_with(type) type._arithmetic_type_with_signed_long_long_int(self) end def corresponding_signed_type self end def corresponding_unsigned_type unsigned_long_long_int_t end end class SignedLongLongIntTypeId < StandardTypeId def initialize super("signed long long int") end def ==(rhs_id) case rhs_id when SignedLongLongIntTypeId, LongLongTypeId, LongLongIntTypeId, SignedLongLongType true else false end end end class UnsignedLongLongIntType < StandardIntegerType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "unsigned long long int", long_long_size, long_long_alignment, false, true) end def id @id ||= UnsignedLongLongIntTypeId.new end def integer_conversion_rank 5 end def arithmetic_type_with(type) type._arithmetic_type_with_unsigned_long_long_int(self) end def corresponding_signed_type signed_long_long_int_t end def corresponding_unsigned_type self end end class UnsignedLongLongIntTypeId < StandardTypeId def initialize super("unsigned long long int") end def ==(rhs_id) case rhs_id when UnsignedLongLongIntTypeId, UnsignedLongLongTypeId true else false end end end class BitfieldType < IntegerType def initialize(type_tbl, base_type, field_width) super(type_tbl, "#{base_type.real_type.name}:#{field_width}", field_width, base_type.bit_alignment, base_type.signed?, base_type.explicitly_signed?) @base_type = base_type end attr_reader :base_type def id @id ||= BitfieldTypeId.new(@base_type, bit_size) end def named? true end def incomplete? @base_type.incomplete? end def pointer? false end def enum? false end def standard? false end def bitfield? true end def undeclared? @base_type.undeclared? end def unresolved? @base_type.unresolved? end def enumerators [] end def integer_conversion_rank -1 end def integer_promoted_type # TODO: Should support the C99 _Bool type. # NOTE: The ISO C99 standard says; # # 6.3.1 Arithmetic operands # 6.3.1.1 Boolean, characters, and integers # # 2 The following may be used in an expression wherever an int or # unsigned int may be used: # # -- An object or expression with an integer type whose integer # conversion rank is less than or equal to the rank of int and # unsigned int. # -- A bit-field of type _Bool, int, signed int, or unsigned int. # # If an int can represent all values of the original type, the value is # converted to an int; otherwise, it is converted to an unsigned int. # These are called the integer promotions. All other types are # unchanged by the integer promotions. if self.undeclared? || self.unresolved? self else if @base_type.same_as?(int_t) || @base_type.same_as?(unsigned_int_t) self.compatible?(int_t) ? int_t : unsigned_int_t else self end end end def arithmetic_type_with(type) type._arithmetic_type_with_bitfield(self) end def corresponding_signed_type self # NOTREACHED end def corresponding_unsigned_type self # NOTREACHED end def dup BitfieldType.new(type_table, @base_type.dup, bit_size) end end class BitfieldTypeId < TypeId def initialize(base_type, field_width) super(create_value(base_type, field_width)) end private def create_value(base_type, field_width) "#{base_type.real_type.name.split(" ").sort.join(" ")}:#{field_width}" end end module Scopeable attr_accessor :scope end class EnumType < IntegerType include Scopeable def initialize(type_tbl, type_dcl) # FIXME: StandardTypeCatalogAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, type_dcl.identifier.value, int_size, int_alignment, true, true, [type_dcl]) @image = type_dcl.enum_specifier.to_s @location = type_dcl.location end attr_accessor :image attr_accessor :location def id @id ||= EnumTypeId.new(name) end def named? declarations.all? { |dcl| !dcl.enum_specifier.anonymous? } end def incomplete? declarations.all? { |dcl| dcl.enumerators.nil? } end def pointer? false end def enum? true end def standard? false end def bitfield? false end def brief_image "enum #{name}" end def enumerators declarations.map { |dcl| dcl.enumerators }.compact.flatten.uniq end def integer_conversion_rank # NOTE: The ISO C99 standard says; # # 6.3.1 Arithmetic operands # 6.3.1.1 Boolean, characters, and integers # # 1 Every integer type has an integer conversion rank defined as follows: # # -- No two signed integer types shall have the same rank, even if # they have the same representation. # -- The rank of a signed integer type shall be greater than the rank # of any signed integer type with less precision. # -- The rank of long long int shall be greater than the rank of long # int, which shall be greater than the rank of int, which shall be # greater than the rank of short int, which shall be greater than # the rank of signed char. # -- The rank of any unsigned integer type shall equal the rank of # the corresponding signed integer type, if any. # -- The rank of any standard integer type shall be greater than the # rank of any extended integer type with the same width. # -- The rank of char shall equal the rank of signed char and # unsigned char. # -- The rank of _Bool shall be less than the rank of all other # standard integer types. # -- The rank of any enumerated type shall equal the rank of the # compatible integer type. # -- The rank of any extended signed integer type relative to another # extended signed integer type with the same precision is # implementation-defined, but still subject to the other rules for # determining the integer conversion rank. # -- For all integer types T1, T2, and T3, if T1 has greater rank # than T2 and T2 has greater rank than T3, then T1 has greater # rank than T3. # # NOTE: The integer conversion rank of any enumerated type is equal to # the rank of int. int_t.integer_conversion_rank end def integer_promoted_type # NOTE: Any enumerated type should be treated as `int'. # But AdLint internally treats enumerated type as itself, and omits # integer-promotion of any enumerated type in order not to # over-warn about enum-enum expressions like below; # # static void foo(enum Color c) # { # if (c == RED) { /* No usual-arithmetic-conversion of # enumerated types and no W9003 warning */ # ... # } # } self end def arithmetic_type_with(type) type._arithmetic_type_with_enum(self) end def corresponding_signed_type signed_int_t end def corresponding_unsigned_type unsigned_int_t end def dup EnumType.new(type_table, declarations.first) end end class EnumTypeId < TypeId def initialize(name) super("enum #{name}") end end class PointerType < IntegerType def initialize(type_tbl, base_type) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, create_name(base_type), base_type.function? ? code_ptr_size : data_ptr_size, base_type.function? ? code_ptr_alignment : data_ptr_alignment, false, true, base_type.declarations) @base_type = base_type end attr_reader :base_type def id @id ||= PointerTypeId.new(@base_type) end def image create_image(@base_type) end def brief_image create_brief_image(@base_type) end def named? true end def real_type type_table.pointer_type(@base_type.real_type) end def incomplete? false end def convertible?(to_type) lhs_unqualified = self.real_type.unqualify rhs_unqualified = to_type.real_type.unqualify if rhs_unqualified.pointer? || rhs_unqualified.array? lhs_base = lhs_unqualified.base_type rhs_base = rhs_unqualified.base_type unless lhs_base.more_cv_qualified?(rhs_base) rhs_base.void? || lhs_base.convertible?(rhs_base) else false end else false end end def pointer? true end def enum? false end def standard? false end def undeclared? # NOTE: To avoid the infinite recursive call of #undeclared? when the # composite type contains the pointer to it's owner type. @base_type.kind_of?(UndeclaredType) end def unresolved? # NOTE: To avoid the infinite recursive call of #unresolved? when the # composite type contains the pointer to it's owner type. @base_type.kind_of?(UnresolvedType) end def bitfield? false end def enumerators [] end def integer_conversion_rank # NOTE: Pointer variables must not be converted implicitly. 100 end def integer_promoted_type # NOTE: Pointer variables must not be converted implicitly. self end def arithmetic_type_with(type) type._arithmetic_type_with_pointer(self) end def corresponding_signed_type self # NOTREACHED end def corresponding_unsigned_type self # NOTREACHED end def dup PointerType.new(type_table, @base_type.dup) end private def create_name(base_type) if base_type.function? "#{base_type.return_type.name}(*)(" + base_type.parameter_types.map { |type| type.name }.join(",") + (base_type.have_va_list? ? ",...)" : ")") else "#{base_type.name} *" end end def create_image(base_type) if base_type.function? "#{base_type.return_type.image}(*)(" + base_type.parameter_types.map { |type| type.image }.join(",") + (base_type.have_va_list? ? ",...)" : ")") else "#{base_type.image} *" end end def create_brief_image(base_type) if base_type.function? "#{base_type.return_type.brief_image}(*)(" + base_type.parameter_types.map { |type| type.brief_image }.join(",") + (base_type.have_va_list? ? ",...)" : ")") else "#{base_type.brief_image} *" end end end class PointerTypeId < TypeId def initialize(base_type) super(create_value(base_type)) @base_type = base_type end def ==(rhs_id) case rhs_id when PointerTypeId @base_type == rhs_id.base_type else false end end def hash "#{@base_type.id.hash}*".hash end protected attr_reader :base_type private def create_value(base_type) real_type = base_type.real_type if real_type.function? "#{real_type.return_type.brief_image}(*)(" + real_type.parameter_types.map { |type| type.brief_image }.join(",") + (real_type.have_va_list? ? ",...)" : ")") else "#{real_type.brief_image} *" end end end class FloatingType < ScalarDataType def id subclass_responsibility end def image name end def brief_image name end def location nil end def incomplete? false end def compatible?(to_type) type.floating? && to_type.min <= min && max <= to_type.max end def integer? false end def floating? true end def pointer? false end def enum? false end def bitfield? false end def signed? true end def explicitly_signed? true end def enumerators [] end def min (-2**fraction_bit_size * 10**(exponent_bit_size - 1)).to_f end def max (2**fraction_bit_size * 10**(exponent_bit_size - 1)).to_f end def integer_conversion_rank 0 # NOTREACHED end def integer_promoted_type self # NOTREACHED end def argument_promoted_type subclass_responsibility end def arithmetic_type_with(type) subclass_responsibility end def corresponding_signed_type self # NOTREACHED end def corresponding_unsigned_type self # NOTREACHED end def dup subclass_responsibility end private def fraction_bit_size subclass_responsibility end def exponent_bit_size subclass_responsibility end end class StandardFloatingType < FloatingType def standard? true end def dup self.class.new(type_table) end end class FloatType < StandardFloatingType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "float", float_size, float_alignment) end def id @id ||= FloatTypeId.new end def named? true end def argument_promoted_type # NOTE: The ISO C99 standard says; # # 6.5.2.2 Function calls # # 6 If the expression that denotes the called function has a type that # does not include a prototype, the integer promotions are performed on # each argument, and arguments that have type float are promoted to # double. These are called the default argument promotions. If the # number of arguments does not equal the number of parameters, the # behavior is undefined. If the function is defined with a type that # includes a prototype, and either the prototype ends with an ellipsis # (, ...) or the types of the arguments after promotion are not # compatible with the types of the parameters, the behavior is # undefined. If the function is defined with a type that does not # include a prototype, and the types of the arguments after promotion # are not compatible with those of the parameters after promotion, the # behavior is undefined, except for the following cases: # # -- one promoted type is a signed integer type, the other promoted # type is the corresponding unsigned integer type, and the value # is representable in both types; # -- both types are pointers to qualified or unqualified versions of # a character type or void. double_t end def arithmetic_type_with(type) type._arithmetic_type_with_float(self) end private def fraction_bit_size # TODO: Bit size of the fraction part of `float' should be configurable. 23 end def exponent_bit_size # TODO: Bit size of the exponent part of `float' should be configurable. 8 end end class FloatTypeId < StandardTypeId def initialize super("float") end end class DoubleType < StandardFloatingType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "double", double_size, double_alignment) end def id @id ||= DoubleTypeId.new end def argument_promoted_type self end def arithmetic_type_with(type) type._arithmetic_type_with_double(self) end private def fraction_bit_size # TODO: Bit size of the fraction part of `double' should be configurable. 52 end def exponent_bit_size # TODO: Bit size of the exponent part of `double' should be configurable. 11 end end class DoubleTypeId < StandardTypeId def initialize super("double") end end class LongDoubleType < StandardFloatingType def initialize(type_tbl) # FIXME: StandardTypesAccessor is not ready until @type_table is # initialized. @type_table = type_tbl super(type_tbl, "long double", long_double_size, long_double_alignment) end def id @id ||= LongDoubleTypeId.new end def argument_promoted_type self end def arithmetic_type_with(type) type._arithmetic_type_with_long_double(self) end private def fraction_bit_size # TODO: Bit size of the fraction part of `long double' should be # configurable. 52 end def exponent_bit_size # TODO: Bit size of the exponent part of `long double' should be # configurable. 11 end end class LongDoubleTypeId < StandardTypeId def initialize super("long double") end end class ArrayType < Type # NOTE: To avoid huge array allocation in interpreting phase. MAX_LENGTH = 256 private_constant :MAX_LENGTH def initialize(type_tbl, base_type, len = nil) super(type_tbl, create_name(base_type, len)) @base_type = base_type @length = len end attr_reader :base_type # NOTE: Length of the array type may be deducted by the size of the # initializer in interpret phase. attr_accessor :length def impl_length # NOTE: Implementation defined length of this array. @length ? [[0, @length].max, MAX_LENGTH].min : 0 end def id # NOTE: ID of the array type cannot be cached. # Length of the variable length array will be deducted in the # interpret phase. ArrayTypeId.new(@base_type, @length) end def image create_image(@base_type, @length) end def brief_image create_brief_image(@base_type, @length) end def location nil end def named? true end def bit_size @length ? @base_type.bit_size * @length : 0 end def bit_alignment aligned_bit_size end def aligned_bit_size @length ? @base_type.aligned_bit_size * @length : 0 end def real_type type_table.array_type(@base_type.real_type, @length) end def unqualify self end def incomplete? @base_type.incomplete? || @length.nil? end def compatible?(to_type) to_type.array? && @length == to_type.length && @base_type.compatible?(to_type.base_type) end def coercible?(to_type) to_type.array? && @base_type.coercible?(to_type.base_type) end def convertible?(to_type) lhs_unqualified = self.real_type.unqualify rhs_unqualified = to_type.real_type.unqualify if rhs_unqualified.pointer? || rhs_unqualified.array? lhs_base = lhs_unqualified.base_type rhs_base = rhs_unqualified.base_type unless lhs_base.more_cv_qualified?(rhs_base) rhs_base.void? || lhs_base.convertible?(rhs_base) else false end else false end end def same_as?(type) lhs_unqualified = self.real_type.unqualify rhs_unqualified = type.real_type.unqualify case when rhs_unqualified.array? if lhs_unqualified.length lhs_unqualified.length == rhs_unqualified.length else lhs_unqualified.base_type.same_as?(rhs_unqualified.base_type) end when rhs_unqualified.pointer? lhs_unqualified.base_type.same_as?(rhs_unqualified.base_type) else false end end def scalar? false end def integer? false end def floating? false end def array? true end def struct? false end def union? false end def pointer? false end def qualified? false end def function? false end def enum? false end def user? false end def void? false end def standard? false end def undeclared? @base_type.undeclared? end def unresolved? @base_type.unresolved? end def const? @base_type.const? end def volatile? @base_type.volatile? end def restrict? @base_type.restrict? end def bitfield? false end def signed? false end def explicitly_signed? false end def have_va_list? false end def return_type nil end def parameter_types [] end def enumerators [] end def members [] end def member_named(name) nil end def min 0 end def max 0 end def nil_value ArrayValue.new(impl_length.times.map { @base_type.nil_value }) end def zero_value ArrayValue.new(impl_length.times.map { @base_type.zero_value }) end def arbitrary_value ArrayValue.new(impl_length.times.map { @base_type.arbitrary_value }) end def undefined_value ArrayValue.new(impl_length.times.map { @base_type.undefined_value }) end def parameter_value ArrayValue.new(impl_length.times.map { @base_type.parameter_value }) end def return_value ArrayValue.new(impl_length.times.map { @base_type.return_value }) end def coerce_scalar_value(val) # NOTE: Cannot coerce scalar value into array in C language. undefined_value # NOTREACHED end def coerce_array_value(val) # NOTE: The ISO C99 standard says; # # 6.7.8 Initialization # # Semantics # # 10 If an object that has automatic storage duration is not initialized # explicitly, its value is indeterminate. If an object that has # static storage duration is not initialized explicitly, then: # # -- if it has pointer type, it is initialized to a null pointer; # -- if it has arithmetic type, it is initialized to (positive or # unsigned) zero; # -- if it is an aggregate, every member is initialized (recursively) # according to these rules; # -- if it is a union, the first named member is initialized # (recursively) according to these rules. # # 21 If there are fewer initializers in a brace-enclosed list than there # are elements or members of an aggregate, or fewer characters in a # string literal used to initialize an array of known size that there # are elements in the array, the remainder of the aggregate shall be # initialized implicitly the same as objects that have static storage # duration. vals = ([@base_type] * impl_length).zip(val.values).map { |type, v| v ? v.coerce_to(type) : type.arbitrary_value } ArrayValue.new(vals) end def coerce_composite_value(val) # NOTE: Cannot coerce composite value into array in C language. undefined_value # NOTREACHED end def integer_conversion_rank 0 # NOTREACHED end def integer_promoted_type self # NOTREACHED end def argument_promoted_type self # NOTREACHED end def arithmetic_type_with(type) # NOTE: An arithmetic operation with ArrayType must not be executed! type._arithmetic_type_with_array(self) # NOTREACHED end def _arithmetic_type_with_undeclared(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_unresolved(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_void(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_function(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `char' and ArrayType # makes integer-promoted type of `char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `signed char' and ArrayType # makes integer-promoted type of `signed char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `unsigned char' and ArrayType # makes integer-promoted type of `unsigned char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `short' and ArrayType # makes integer-promoted type of `short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `signed short' and ArrayType # makes integer-promoted type of `signed short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `unsigned short' and ArrayType # makes integer-promoted type of `unsigned short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `short int' and ArrayType # makes integer-promoted type of `short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `signed short int' and ArrayType # makes integer-promoted type of `signed short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `unsigned short int' and ArrayType # makes integer-promoted type of `unsigned short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `int' and ArrayType makes `int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `signed' and ArrayType makes `signed'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `signed int' and ArrayType # makes `signed int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `unsigned' and ArrayType makes `unsigned'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `unsigned int' and ArrayType # makes `unsigned int'. lhs_type # NOTREACHED end def _arithmetic_type_with_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `long' and ArrayType makes `long'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `signed long' and ArrayType # makes `signed long'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `unsigned long' and ArrayType # makes `unsigned long'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `long int' and ArrayType makes `long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `signed long int' and ArrayType # makes `signed long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `unsigned long int' and ArrayType # makes `unsigned long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `long long' and ArrayType makes # `long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `signed long long' and ArrayType # makes `signed long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `unsigned long long' and ArrayType # makes `unsigned long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `long long int' and ArrayType # makes `long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `signed long long int' and ArrayType # makes `signed long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `unsigned long long int' and ArrayType # makes `unsigned long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_float(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `float' and ArrayType makes `float'. lhs_type # NOTREACHED end def _arithmetic_type_with_double(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `double' and ArrayType makes `double'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_double(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with `long double' and ArrayType # makes `long double'. lhs_type # NOTREACHED end def _arithmetic_type_with_bitfield(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with BitfieldType and ArrayType # makes integer-promoted type of BitfieldType. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_enum(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with EnumType and ArrayType makes EnumType. lhs_type # NOTREACHED end def _arithmetic_type_with_pointer(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with PointerType and ArrayType makes # PointerType. lhs_type # NOTREACHED end def _arithmetic_type_with_array(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_struct(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_union(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! lhs_type # NOTREACHED end def _arithmetic_type_with_extended_big_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with ArrayType must not be executed! # NOTE: Binary operation with ExtendedBigIntType and ArrayType # makes ExtendedBigIntType. lhs_type # NOTREACHED end def corresponding_signed_type self # NOTREACHED end def corresponding_unsigned_type self # NOTREACHED end def dup ArrayType.new(type_table, @base_type.dup, @length) end private def create_name(base_type, len) "(#{base_type.name})[#{len ? len : ""}]" end def create_image(base_type, len) "(#{base_type.image})[#{len ? len : ""}]" end def create_brief_image(base_type, len) "(#{base_type.brief_image})[#{len ? len : ""}]" end end class ArrayTypeId < TypeId def initialize(base_type, len) super(create_value(base_type, len)) end private def create_value(base_type, len) if len "#{base_type.brief_image}[#{len}]" else "#{base_type.brief_image}[]" end end end # == DESCRIPTION # Type of the `struct' or `union' data type. # # The ISO C99 standard specifies that the `struct' and array data type is an # aggregate type. # But the CompositeDataType is not an array type. class CompositeDataType < Type include Scopeable def initialize(type_tbl, name, type_dcls, membs) super(type_tbl, name, type_dcls) @members = membs end attr_reader :members def id subclass_responsibility end def image subclass_responsibility end def brief_image subclass_responsibility end def location subclass_responsibility end def named? subclass_responsibility end def bit_size @members.reduce(0) { |sum, memb| sum + memb.type.bit_size } end def bit_alignment bit_size end def aligned_bit_size @members.reduce(0) { |sum, memb| sum + memb.type.aligned_bit_size } end def real_type self end def base_type nil end def unqualify self end def incomplete? declarations.all? { |dcl| dcl.struct_declarations.nil? } end def compatible?(to_type) to_type.composite? && @members.size == to_type.members.size && @members.zip(to_type.members).all? { |lhs, rhs| lhs.compatible?(rhs) } end def coercible?(to_type) to_type.composite? && @members.zip(to_type.members).all? { |lhs_memb, rhs_memb| rhs_memb && lhs_memb.type.coercible?(rhs_memb.type) } end def scalar? false end def integer? false end def floating? false end def array? false end def pointer? false end def qualified? false end def function? false end def enum? false end def user? false end def void? false end def standard? false end def undeclared? @members.any? { |memb| memb.type.undeclared? } end def unresolved? @members.any? { |memb| memb.type.unresolved? } end def const? false end def volatile? false end def restrict? false end def bitfield? false end def signed? false end def explicitly_signed? false end def have_va_list? false end def return_type nil end def parameter_types [] end def enumerators [] end def length 0 end def impl_length 0 end def member_named(name) # FIXME: Should use the member name index. @members.each do |memb| case when memb.name.nil? && memb.type.composite? if inner_memb = memb.type.member_named(name) return inner_memb end when memb.name == name return memb end end nil end def min 0 end def max 0 end def nil_value CompositeValue.new(@members.map { |memb| memb.type.nil_value }) end def zero_value CompositeValue.new(@members.map { |memb| memb.type.zero_value }) end def arbitrary_value CompositeValue.new(@members.map { |memb| memb.type.arbitrary_value }) end def undefined_value CompositeValue.new(@members.map { |memb| memb.type.undefined_value }) end def parameter_value CompositeValue.new(@members.map { |memb| memb.type.parameter_value }) end def return_value CompositeValue.new(@members.map { |memb| memb.type.return_value }) end def coerce_scalar_value(val) # NOTE: Cannot coerce scalar value into composite in C language. undefined_value # NOTREACHED end def coerce_array_value(val) # NOTE: Cannot coerce array value into composite in C language. undefined_value # NOTREACHED end def coerce_composite_value(val) vals = @members.zip(val.values).map { |memb, v| v ? v.coerce_to(memb.type) : memb.type.undefined_value } CompositeValue.new(vals) end def integer_conversion_rank 0 # NOTREACHED end def integer_promoted_type self # NOTREACHED end def argument_promoted_type self end def arithmetic_type_with(type) subclass_responsibility end def _arithmetic_type_with_undeclared(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_unresolved(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_void(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_function(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `char' and CompositeDataType makes # integer-promoted type of `char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed char' and CompositeDataType makes # integer-promoted type of `signed char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned char' and CompositeDataType makes # integer-promoted type of `unsigned char'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `short' and CompositeDataType makes # integer-promoted type of `short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed short' and CompositeDataType makes # integer-promoted type of `signed short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned short' and CompositeDataType # makes integer-promoted type of `unsigned short'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `short int' and CompositeDataType makes # integer-promoted type of `short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_signed_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed short int' and CompositeDataType # makes integer-promoted type of `signed short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_unsigned_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned short int' and CompositeDataType # makes integer-promoted type of `unsigned short int'. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `int' and CompositeDataType makes `int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed' and CompositeDataType makes # `signed'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed int' and CompositeDataType makes # `signed int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned' and CompositeDataType makes # `unsigned'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned int' and CompositeDataType makes # `unsigned int'. lhs_type # NOTREACHED end def _arithmetic_type_with_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `long' and CompositeDataType makes `long'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed long' and CompositeDataType makes # `signed long'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned long' and CompositeDataType makes # `unsigned long'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `long int' and CompositeDataType makes # `long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed long int' and CompositeDataType # makes `signed long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned long int' and CompositeDataType # makes `unsigned long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `long long' and CompositeDataType makes # `long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed long long' and CompositeDataType # makes `signed long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned long long' and CompositeDataType # makes `unsigned long long'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `long long int' and CompositeDataType makes # `long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_signed_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed long long int' and # CompositeDataType makes `signed long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_unsigned_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned long long int' and # CompositeDataType makes `unsigned long long int'. lhs_type # NOTREACHED end def _arithmetic_type_with_float(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `float' and CompositeDataType makes # `float'. lhs_type # NOTREACHED end def _arithmetic_type_with_double(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `double' and CompositeDataType makes # `double'. lhs_type # NOTREACHED end def _arithmetic_type_with_long_double(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `long double' and CompositeDataType makes # `long double'. lhs_type # NOTREACHED end def _arithmetic_type_with_bitfield(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with BitfieldType and CompositeDataType makes # integer-promoted type of BitfieldType. lhs_type.integer_promoted_type # NOTREACHED end def _arithmetic_type_with_enum(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with EnumType and CompositeDataType makes # EnumType. lhs_type # NOTREACHED end def _arithmetic_type_with_pointer(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with PointerType and CompositeDataType makes # PointerType. lhs_type # NOTREACHED end def _arithmetic_type_with_array(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end def _arithmetic_type_with_struct(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! lhs_type # NOTREACHED end def _arithmetic_type_with_union(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! lhs_type # NOTREACHED end def _arithmetic_type_with_extended_big_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with ExtendedBigIntType and CompositeDataType # makes ExtendedBigIntType. lhs_type # NOTREACHED end def corresponding_signed_type self # NOTREACHED end def corresponding_unsigned_type self # NOTREACHED end def dup self.class.new(type_table, declarations.first, @members.map { |memb| memb.dup }) end end class Member def initialize(name, type) @name = name @type = type end attr_reader :name attr_reader :type def named? !@name.nil? end def dup Member.new(@name, @type.dup) end end class StructType < CompositeDataType def initialize(type_tbl, type_dcl, membs) super(type_tbl, type_dcl.identifier.value, [type_dcl], membs) @image = type_dcl.struct_specifier.to_s @location = type_dcl.location end attr_accessor :image attr_accessor :location def id @id ||= StructTypeId.new(name) end def brief_image "struct #{name}" end def named? declarations.all? { |dcl| !dcl.struct_specifier.anonymous? } end def struct? true end def union? false end def arithmetic_type_with(type) type._arithmetic_type_with_struct(self) end end class StructTypeId < TypeId def initialize(name) super("struct #{name}") end end class UnionType < CompositeDataType # TODO: Must implement member overlapping semantics. def initialize(type_tbl, type_dcl, membs) super(type_tbl, type_dcl.identifier.value, [type_dcl], membs) @image = type_dcl.union_specifier.to_s @location = type_dcl.location end attr_accessor :image attr_accessor :location def id @id ||= UnionTypeId.new(name) end def brief_image "union #{name}" end def named? declarations.all? { |dcl| !dcl.union_specifier.anonymous? } end def struct? false end def union? true end def arithmetic_type_with(type) type._arithmetic_type_with_union(self) end end class UnionTypeId < TypeId def initialize(name) super("union #{name}") end end class UserType < Type include Scopeable def initialize(type_tbl, typedef_dcl, base_type) super(type_tbl, typedef_dcl.identifier.value, [typedef_dcl]) @location = typedef_dcl.location @base_type = base_type end attr_reader :location def id @id ||= UserTypeId.new(name) end extend Forwardable def_delegator :@base_type, :image def brief_image name end def named? true end def_delegator :@base_type, :bit_size def_delegator :@base_type, :bit_alignment def_delegator :@base_type, :real_type def_delegator :@base_type, :base_type def unqualify self end def_delegator :@base_type, :incomplete? def_delegator :@base_type, :compatible? def_delegator :@base_type, :coercible? def_delegator :@base_type, :scalar? def_delegator :@base_type, :integer? def_delegator :@base_type, :floating? def_delegator :@base_type, :array? def_delegator :@base_type, :struct? def_delegator :@base_type, :union? def_delegator :@base_type, :pointer? def_delegator :@base_type, :qualified? def_delegator :@base_type, :function? def_delegator :@base_type, :enum? def user? true end def_delegator :@base_type, :void? def standard? false end def_delegator :@base_type, :undeclared? def_delegator :@base_type, :unresolved? def_delegator :@base_type, :const? def_delegator :@base_type, :volatile? def_delegator :@base_type, :restrict? def_delegator :@base_type, :bitfield? def_delegator :@base_type, :signed? def_delegator :@base_type, :explicitly_signed? def_delegator :@base_type, :have_va_list? def_delegator :@base_type, :return_type def_delegator :@base_type, :parameter_types def_delegator :@base_type, :enumerators def_delegator :@base_type, :length def_delegator :@base_type, :length= def_delegator :@base_type, :impl_length def_delegator :@base_type, :members def_delegator :@base_type, :member_named def_delegator :@base_type, :min def_delegator :@base_type, :max def_delegator :@base_type, :nil_value def_delegator :@base_type, :zero_value def_delegator :@base_type, :arbitrary_value def_delegator :@base_type, :undefined_value def_delegator :@base_type, :parameter_value def_delegator :@base_type, :return_value def_delegator :@base_type, :coerce_scalar_value def_delegator :@base_type, :coerce_array_value def_delegator :@base_type, :coerce_composite_value def_delegator :@base_type, :integer_conversion_rank def_delegator :@base_type, :integer_promoted_type def_delegator :@base_type, :argument_promoted_type def_delegator :@base_type, :arithmetic_type_with def_delegator :@base_type, :_arithmetic_type_with_undeclared def_delegator :@base_type, :_arithmetic_type_with_unresolved def_delegator :@base_type, :_arithmetic_type_with_void def_delegator :@base_type, :_arithmetic_type_with_function def_delegator :@base_type, :_arithmetic_type_with_char def_delegator :@base_type, :_arithmetic_type_with_signed_char def_delegator :@base_type, :_arithmetic_type_with_unsigned_char def_delegator :@base_type, :_arithmetic_type_with_short def_delegator :@base_type, :_arithmetic_type_with_signed_short def_delegator :@base_type, :_arithmetic_type_with_unsigned_short def_delegator :@base_type, :_arithmetic_type_with_short_int def_delegator :@base_type, :_arithmetic_type_with_signed_short_int def_delegator :@base_type, :_arithmetic_type_with_unsigned_short_int def_delegator :@base_type, :_arithmetic_type_with_int def_delegator :@base_type, :_arithmetic_type_with_signed def_delegator :@base_type, :_arithmetic_type_with_signed_int def_delegator :@base_type, :_arithmetic_type_with_unsigned def_delegator :@base_type, :_arithmetic_type_with_unsigned_int def_delegator :@base_type, :_arithmetic_type_with_long def_delegator :@base_type, :_arithmetic_type_with_signed_long def_delegator :@base_type, :_arithmetic_type_with_unsigned_long def_delegator :@base_type, :_arithmetic_type_with_long_int def_delegator :@base_type, :_arithmetic_type_with_signed_long_int def_delegator :@base_type, :_arithmetic_type_with_unsigned_long_int def_delegator :@base_type, :_arithmetic_type_with_long_long def_delegator :@base_type, :_arithmetic_type_with_signed_long_long def_delegator :@base_type, :_arithmetic_type_with_unsigned_long_long def_delegator :@base_type, :_arithmetic_type_with_long_long_int def_delegator :@base_type, :_arithmetic_type_with_signed_long_long_int def_delegator :@base_type, :_arithmetic_type_with_unsigned_long_long_int def_delegator :@base_type, :_arithmetic_type_with_float def_delegator :@base_type, :_arithmetic_type_with_double def_delegator :@base_type, :_arithmetic_type_with_long_double def_delegator :@base_type, :_arithmetic_type_with_bitfield def_delegator :@base_type, :_arithmetic_type_with_enum def_delegator :@base_type, :_arithmetic_type_with_pointer def_delegator :@base_type, :_arithmetic_type_with_array def_delegator :@base_type, :_arithmetic_type_with_struct def_delegator :@base_type, :_arithmetic_type_with_union def_delegator :@base_type, :_arithmetic_type_with_extended_big_int def_delegator :@base_type, :corresponding_signed_type def_delegator :@base_type, :corresponding_unsigned_type def dup UserType.new(type_table, declarations.first, @base_type.dup) end end class UserTypeId < TypeId def initialize(name) super("typedef #{name}") end end # NOTE: ParameterType is a decorator which attaches a parameter name to other # types. class ParameterType < Type include Scopeable def initialize(type_tbl, type, dcl_or_def = nil) super(type_tbl, type.name, type.declarations) @type = type if dcl_or_def and dcr = dcl_or_def.declarator identifier = dcr.identifier end @param_name = identifier ? identifier.value : "" @declaration_or_definition = dcl_or_def end attr_reader :type attr_reader :param_name extend Forwardable def_delegator :@type, :id def location @declaration_or_definition ? @declaration_or_definition.location : @type.location end def_delegator :@type, :image def_delegator :@type, :brief_image def_delegator :@type, :named? def_delegator :@type, :bit_size def_delegator :@type, :bit_alignment def real_type ParameterType.new(type_table, @type.real_type, @declaration_or_definition) end def_delegator :@type, :base_type def_delegator :@type, :unqualify def_delegator :@type, :incomplete? def_delegator :@type, :compatible? def_delegator :@type, :coercible? def_delegator :@type, :convertible? def_delegator :@type, :more_cv_qualified? def parameter? true end def_delegator :@type, :scalar? def_delegator :@type, :integer? def_delegator :@type, :floating? def_delegator :@type, :array? def_delegator :@type, :struct? def_delegator :@type, :union? def_delegator :@type, :pointer? def_delegator :@type, :qualified? def_delegator :@type, :function? def_delegator :@type, :enum? def_delegator :@type, :user? def_delegator :@type, :void? def_delegator :@type, :standard? def_delegator :@type, :undeclared? def_delegator :@type, :unresolved? def_delegator :@type, :const? def_delegator :@type, :volatile? def_delegator :@type, :restrict? def_delegator :@type, :bitfield? def_delegator :@type, :signed? def_delegator :@type, :explicitly_signed? def_delegator :@type, :have_va_list? def_delegator :@type, :return_type def_delegator :@type, :parameter_types def_delegator :@type, :enumerators def_delegator :@type, :length def_delegator :@type, :length= def_delegator :@type, :impl_length def_delegator :@type, :members def_delegator :@type, :member_named def_delegator :@type, :min def_delegator :@type, :max def_delegator :@type, :nil_value def_delegator :@type, :zero_value def_delegator :@type, :arbitrary_value def_delegator :@type, :undefined_value def_delegator :@type, :parameter_value def_delegator :@type, :return_value def_delegator :@type, :coerce_scalar_value def_delegator :@type, :coerce_array_value def_delegator :@type, :coerce_composite_value def_delegator :@type, :integer_conversion_rank def_delegator :@type, :integer_promoted_type def_delegator :@type, :argument_promoted_type def_delegator :@type, :arithmetic_type_with def_delegator :@type, :_arithmetic_type_with_undeclared def_delegator :@type, :_arithmetic_type_with_unresolved def_delegator :@type, :_arithmetic_type_with_void def_delegator :@type, :_arithmetic_type_with_function def_delegator :@type, :_arithmetic_type_with_char def_delegator :@type, :_arithmetic_type_with_signed_char def_delegator :@type, :_arithmetic_type_with_unsigned_char def_delegator :@type, :_arithmetic_type_with_short def_delegator :@type, :_arithmetic_type_with_signed_short def_delegator :@type, :_arithmetic_type_with_unsigned_short def_delegator :@type, :_arithmetic_type_with_short_int def_delegator :@type, :_arithmetic_type_with_signed_short_int def_delegator :@type, :_arithmetic_type_with_unsigned_short_int def_delegator :@type, :_arithmetic_type_with_int def_delegator :@type, :_arithmetic_type_with_signed def_delegator :@type, :_arithmetic_type_with_signed_int def_delegator :@type, :_arithmetic_type_with_unsigned def_delegator :@type, :_arithmetic_type_with_unsigned_int def_delegator :@type, :_arithmetic_type_with_long def_delegator :@type, :_arithmetic_type_with_signed_long def_delegator :@type, :_arithmetic_type_with_unsigned_long def_delegator :@type, :_arithmetic_type_with_long_int def_delegator :@type, :_arithmetic_type_with_signed_long_int def_delegator :@type, :_arithmetic_type_with_unsigned_long_int def_delegator :@type, :_arithmetic_type_with_long_long def_delegator :@type, :_arithmetic_type_with_signed_long_long def_delegator :@type, :_arithmetic_type_with_unsigned_long_long def_delegator :@type, :_arithmetic_type_with_long_long_int def_delegator :@type, :_arithmetic_type_with_signed_long_long_int def_delegator :@type, :_arithmetic_type_with_unsigned_long_long_int def_delegator :@type, :_arithmetic_type_with_float def_delegator :@type, :_arithmetic_type_with_double def_delegator :@type, :_arithmetic_type_with_long_double def_delegator :@type, :_arithmetic_type_with_bitfield def_delegator :@type, :_arithmetic_type_with_enum def_delegator :@type, :_arithmetic_type_with_pointer def_delegator :@type, :_arithmetic_type_with_array def_delegator :@type, :_arithmetic_type_with_struct def_delegator :@type, :_arithmetic_type_with_union def_delegator :@type, :_arithmetic_type_with_extended_big_int def_delegator :@type, :corresponding_signed_type def_delegator :@type, :corresponding_unsigned_type def dup ParameterType.new(type_table, @type.dup, @declaration_or_definition) end end class ExtendedBigIntType < IntegerType def initialize(type_tbl) super(type_tbl, "__adlint__extended_bigint_t", 256, 256, true, true) end def id @id ||= TypeId.new(name) end def named? true end def incomplete? false end def pointer? false end def enum? false end def standard? false end def bitfield? false end def enumerators [] end def integer_conversion_rank # NOTE: The ISO C99 standard says; # # 6.3.1 Arithmetic operands # 6.3.1.1 Boolean, characters, and integers # # 1 Every integer type has an integer conversion rank defined as follows: # # -- No two signed integer types shall have the same rank, even if # they have the same representation. # -- The rank of a signed integer type shall be greater than the rank # of any signed integer type with less precision. # -- The rank of long long int shall be greater than the rank of long # int, which shall be greater than the rank of int, which shall be # greater than the rank of short int, which shall be greater than # the rank of signed char. # -- The rank of any unsigned integer type shall equal the rank of # the corresponding signed integer type, if any. # -- The rank of any standard integer type shall be greater than the # rank of any extended integer type with the same width. # -- The rank of char shall equal the rank of signed char and # unsigned char. # -- The rank of _Bool shall be less than the rank of all other # standard integer types. # -- The rank of any enumerated type shall equal the rank of the # compatible integer type. # -- The rank of any extended signed integer type relative to another # extended signed integer type with the same precision is # implementation-defined, but still subject to the other rules for # determining the integer conversion rank. # -- For all integer types T1, T2, and T3, if T1 has greater rank # than T2 and T2 has greater rank than T3, then T1 has greater # rank than T3. -2 end def integer_promoted_type # NOTE: ExtendedBigIntType is very big integer. # So, it is not compatible with int or unsigned int. self end def arithmetic_type_with(type) type._arithmetic_type_with_extended_big_int(self) end def corresponding_signed_type self end def corresponding_unsigned_type self end def dup ExtendedBigIntType.new(type_table) end end class StandardTypeCatalog def initialize(type_tbl) @types = {} install_char_t_family(type_tbl) install_short_t_family(type_tbl) install_int_t_family(type_tbl) install_long_t_family(type_tbl) install_long_long_t_family(type_tbl) install_float_t(type_tbl) install_double_t(type_tbl) install_long_double_t(type_tbl) install_void_t(type_tbl) install_extended_bit_int_t(type_tbl) end attr_reader :char_t attr_reader :signed_char_t attr_reader :unsigned_char_t attr_reader :short_t attr_reader :signed_short_t attr_reader :unsigned_short_t attr_reader :short_int_t attr_reader :signed_short_int_t attr_reader :unsigned_short_int_t attr_reader :int_t attr_reader :signed_t attr_reader :signed_int_t attr_reader :unsigned_t attr_reader :unsigned_int_t attr_reader :long_t attr_reader :signed_long_t attr_reader :unsigned_long_t attr_reader :long_int_t attr_reader :signed_long_int_t attr_reader :unsigned_long_int_t attr_reader :long_long_t attr_reader :signed_long_long_t attr_reader :unsigned_long_long_t attr_reader :long_long_int_t attr_reader :signed_long_long_int_t attr_reader :unsigned_long_long_int_t attr_reader :float_t attr_reader :double_t attr_reader :long_double_t attr_reader :void_t attr_reader :extended_big_int_t def lookup_by_type_specifiers(type_specs) type_name = type_specs.map { |ts| ts.to_s }.sort.join(" ") @types[type_name] end def all_types @types.each_value end private def install_char_t_family(type_tbl) install @char_t = CharType.new(type_tbl) install @signed_char_t = SignedCharType.new(type_tbl) install @unsigned_char_t = UnsignedCharType.new(type_tbl) end def install_short_t_family(type_tbl) install @short_t = ShortType.new(type_tbl) install @signed_short_t = SignedShortType.new(type_tbl) install @unsigned_short_t = UnsignedShortType.new(type_tbl) install @short_int_t = ShortIntType.new(type_tbl) install @signed_short_int_t = SignedShortIntType.new(type_tbl) install @unsigned_short_int_t = UnsignedShortIntType.new(type_tbl) end def install_int_t_family(type_tbl) install @int_t = IntType.new(type_tbl) install @signed_t = SignedType.new(type_tbl) install @signed_int_t = SignedIntType.new(type_tbl) install @unsigned_t = UnsignedType.new(type_tbl) install @unsigned_int_t = UnsignedIntType.new(type_tbl) end def install_long_t_family(type_tbl) install @long_t = LongType.new(type_tbl) install @signed_long_t = SignedLongType.new(type_tbl) install @unsigned_long_t = UnsignedLongType.new(type_tbl) install @long_int_t = LongIntType.new(type_tbl) install @signed_long_int_t = SignedLongIntType.new(type_tbl) install @unsigned_long_int_t = UnsignedLongIntType.new(type_tbl) end def install_long_long_t_family(type_tbl) install @long_long_t = LongLongType.new(type_tbl) install @signed_long_long_t = SignedLongLongType.new(type_tbl) install @unsigned_long_long_t = UnsignedLongLongType.new(type_tbl) install @long_long_int_t = LongLongIntType.new(type_tbl) install @signed_long_long_int_t = SignedLongLongIntType.new(type_tbl) install @unsigned_long_long_int_t = UnsignedLongLongIntType.new(type_tbl) end def install_float_t(type_tbl) install @float_t = FloatType.new(type_tbl) end def install_double_t(type_tbl) install @double_t = DoubleType.new(type_tbl) end def install_long_double_t(type_tbl) install @long_double_t = LongDoubleType.new(type_tbl) end def install_void_t(type_tbl) install @void_t = VoidType.new(type_tbl) end def install_extended_bit_int_t(type_tbl) install @extended_big_int_t = ExtendedBigIntType.new(type_tbl) end def install(type) @types[type.name.split(" ").sort.join(" ")] = type end end class TypeTable include StandardTypeCatalogAccessor include InterpreterOptions def initialize(traits, monitor, logger) @traits = traits @monitor = monitor @logger = logger @types_stack = [{}] @scope_stack = [GlobalScope.new] @all_type_names = Set.new @standard_type_catalog = StandardTypeCatalog.new(self) install_standard_types end attr_reader :traits attr_reader :monitor attr_reader :logger attr_reader :standard_type_catalog attr_reader :all_type_names def undeclared_type @undeclared_type ||= UndeclaredType.new(self) end def unresolved_type @unresolved_type ||= UnresolvedType.new(self) end def wchar_t lookup(UserTypeId.new("wchar_t")) or int_t end def array_type(base_type, len = nil) ArrayType.new(self, base_type, len) end def function_type(ret_type, param_types, have_va_list = false) FunctionType.new(self, ret_type, param_types, have_va_list) end def builtin_function_type function_type(undeclared_type, [undeclared_type]) end def bitfield_type(base_type, field_width) BitfieldType.new(self, base_type, field_width) end def pointer_type(base_type) PointerType.new(self, base_type) end def qualified_type(base_type, *cvr_quals) QualifiedType.new(self, base_type, *cvr_quals) end def lookup(type_id) @types_stack.reverse_each { |hash| type = hash[type_id] and return type } nil end def lookup_standard_type(name_str) @standard_type_catalog.lookup_by_name(name_str) end def install(type) @types_stack.last[type.id] = type @all_type_names.add(type.name) type end def enter_scope @types_stack.push({}) @scope_stack.push(Scope.new(@scope_stack.size)) end def leave_scope @types_stack.pop @scope_stack.pop end def lookup_or_install_type(type_quals, type_specs, dcr, interp = nil) case fst_type_spec = type_specs.first when TypeofTypeSpecifier if type_name = fst_type_spec.type_name return type_name.type else if interp return interp.execute(fst_type_spec.expression, QUIET).type else return nil end end else unless base_type = lookup_type(type_specs, interp) case fst_type_spec when StructSpecifier base_type = install_struct_type( PseudoStructTypeDeclaration.new(fst_type_spec)) when UnionSpecifier base_type = install_union_type( PseudoUnionTypeDeclaration.new(fst_type_spec)) when EnumSpecifier base_type = install_enum_type( PseudoEnumTypeDeclaration.new(fst_type_spec)) else return nil end end qualify_type(base_type, type_quals, dcr, interp) end end def lookup_type(type_specs, interp = nil) lookup(create_type_id(type_specs, interp)) end def lookup_function_type(fun_def, interp = nil) if dcl_specs = fun_def.declaration_specifiers type = lookup_or_install_type(dcl_specs.type_qualifiers, dcl_specs.type_specifiers, fun_def.declarator, interp) else type = lookup_or_install_type([], [], fun_def.declarator, interp) end return nil unless type param_types = fun_def.parameter_definitions.map { |pdef| pdef.type } function_type(type.return_type, param_types, type.have_va_list?) end def lookup_parameter_type(dcl_or_def, interp = nil) dcr = dcl_or_def.declarator dcl_specs = dcl_or_def.declaration_specifiers if dcl_specs type_quals = dcl_specs.type_qualifiers type_specs = dcl_specs.type_specifiers else type_quals = [] type_specs = [] end if type = lookup_or_install_type(type_quals, type_specs, dcr, interp) type = pointer_type(type) if type.function? else return nil end ParameterType.new(self, type, dcl_or_def) end def install_struct_type(type_dcl) type_id = StructTypeId.new(type_dcl.identifier.value) if type = lookup(type_id) and type.scope == current_scope if type_dcl.struct_declarations rewrite_struct_type(type, type_dcl) return type end end type = StructType.new(self, type_dcl, []) type.scope = current_scope install(type) if type_dcl.struct_declarations rewrite_struct_type(type, type_dcl) end type end def install_union_type(type_dcl) type_id = UnionTypeId.new(type_dcl.identifier.value) if type = lookup(type_id) and type.scope == current_scope if type_dcl.struct_declarations rewrite_union_type(type, type_dcl) return type end end type = UnionType.new(self, type_dcl, []) type.scope = current_scope install(type) if type_dcl.struct_declarations rewrite_union_type(type, type_dcl) end type end def install_enum_type(type_dcl) type_id = EnumTypeId.new(type_dcl.identifier.value) if type = lookup(type_id) and type.scope == current_scope if type_dcl.enumerators rewrite_enum_type(type, type_dcl) return type end end type = EnumType.new(self, type_dcl) type.scope = current_scope install(type) if type_dcl.enumerators rewrite_enum_type(type, type_dcl) end type end def install_user_type(type_dcl) base_type = lookup_or_install_type(type_dcl.type_qualifiers, type_dcl.type_specifiers, type_dcl.declarator) type = UserType.new(self, type_dcl, base_type) type.scope = current_scope install(type) type end private def create_type_id(type_specs, interp) case type_specs.first when StandardTypeSpecifier type_id = create_standard_type_id(type_specs) when TypedefTypeSpecifier type_id = create_user_type_id(type_specs) when StructSpecifier type_id = create_struct_type_id(type_specs) when UnionSpecifier type_id = create_union_type_id(type_specs) when EnumSpecifier type_id = create_enum_type_id(type_specs) when nil type_id = int_t.id else raise TypeError end type_id end def create_standard_type_id(type_specs) if type = @standard_type_catalog.lookup_by_type_specifiers(type_specs) type.id else int_t.id end end def create_user_type_id(type_specs) UserTypeId.new(type_specs.first.identifier.value) end def create_struct_type_id(type_specs) StructTypeId.new(type_specs.first.identifier.value) end def create_union_type_id(type_specs) UnionTypeId.new(type_specs.first.identifier.value) end def create_enum_type_id(type_specs) EnumTypeId.new(type_specs.first.identifier.value) end def qualify_type(type, type_quals, dcr, interp = nil) cvr_quals = type_quals.map { |tok| case tok.type when :CONST then :const when :VOLATILE then :volatile else # TODO: Should support C99 `restrict' qualifier. end }.compact type = qualified_type(type, *cvr_quals) unless cvr_quals.empty? if dcr dcr_interp = DeclaratorInterpreter.new(self, interp, type) dcr.accept(dcr_interp) else type end end def rewrite_struct_type(struct_type, type_dcl) struct_type.declarations.push(type_dcl) struct_type.image = type_dcl.struct_specifier.to_s struct_type.location = type_dcl.location struct_type.members.replace(create_members(type_dcl.struct_declarations)) end def rewrite_union_type(union_type, type_dcl) union_type.declarations.push(type_dcl) union_type.image = type_dcl.union_specifier.to_s union_type.location = type_dcl.location union_type.members.replace(create_members(type_dcl.struct_declarations)) end def create_members(struct_dcls) struct_dcls.map { |struct_dcl| struct_dcl.items.map do |item| Member.new(item.identifier ? item.identifier.value : nil, item.type) end }.flatten end def rewrite_enum_type(enum_type, type_dcl) enum_type.declarations.push(type_dcl) enum_type.image = type_dcl.enum_specifier.to_s enum_type.location = type_dcl.location end def current_scope @scope_stack.last end def install_standard_types @standard_type_catalog.all_types.each { |type| install(type) } end end class DeclaratorInterpreter def initialize(type_tbl, interp, type) @type_table = type_tbl @interpreter = interp @type = type end def visit_identifier_declarator(node) @type = qualify_by_pointer(@type, node) end def visit_grouped_declarator(node) @type = qualify_by_pointer(@type, node) @type = node.base.accept(self) end def visit_array_declarator(node) @type = qualify_by_pointer(@type, node) if size_expr = node.size_expression if ary_size = evaluate_size_expression(size_expr) @type = @type_table.array_type(@type, ary_size) else return @type_table.unresolved_type end else @type = @type_table.array_type(@type) end @type = node.base.accept(self) end def visit_ansi_function_declarator(node) @type = qualify_by_pointer(@type, node) param_types = lookup_parameter_types(node) if param_types.include?(nil) return @type_table.unresolved_type else have_va_list = node.parameter_type_list.have_va_list? @type = @type_table.function_type(@type, param_types, have_va_list) @type = node.base.accept(self) end @type end def visit_kandr_function_declarator(node) @type = qualify_by_pointer(@type, node) @type = @type_table.function_type(@type, []) @type = node.base.accept(self) end def visit_abbreviated_function_declarator(node) @type = qualify_by_pointer(@type, node) @type = @type_table.function_type(@type, []) @type = node.base.accept(self) end def visit_pointer_abstract_declarator(node) @type = qualify_by_pointer(@type, node) @type = node.base.accept(self) if node.base @type end def visit_grouped_abstract_declarator(node) @type = qualify_by_pointer(@type, node) @type = node.base.accept(self) end def visit_array_abstract_declarator(node) @type = qualify_by_pointer(@type, node) if size_expr = node.size_expression if ary_size = evaluate_size_expression(size_expr) @type = @type_table.array_type(@type, ary_size) else return @type_table.unresolved_type end else @type = @type_table.array_type(@type) end @type = node.base.accept(self) if node.base @type end def visit_function_abstract_declarator(node) @type = qualify_by_pointer(@type, node) param_types = lookup_parameter_types(node) if param_types.include?(nil) return @type_table.unresolved_type else @type = @type_table.function_type(@type, param_types) @type = node.base.accept(self) if node.base end @type end private def qualify_by_pointer(type, dcr) if dcr.pointer dcr.pointer.each do |tok| case tok.type when "*" type = @type_table.pointer_type(type) when :CONST type = @type_table.qualified_type(type, :const) when :VOLATILE type = @type_table.qualified_type(type, :volatile) when :RESTRICT # TODO: Should support C99 features. end end end type end def lookup_parameter_types(dcr, interp = nil) if param_type_list = dcr.parameter_type_list param_type_list.parameters.map do |param_dcl| @type_table.lookup_parameter_type(param_dcl, @interpreter) end else [] end end def evaluate_size_expression(size_expr) if @interpreter obj = @interpreter.execute(size_expr) if obj.variable? && obj.value.scalar? size = obj.value.unique_sample end # NOTE: Size of an array should be greater than 0. size = 1 if size.nil? || size <= 0 else if size_expr.object_specifiers.empty? obj = Interpreter.new(@type_table).execute(size_expr) if obj.variable? && obj.value.scalar? size = obj.value.unique_sample end # NOTE: Size of an array should be greater than 0. size = 1 if size.nil? || size <= 0 else size = nil end end size ? size.to_i : nil end end class TypeVisitor def visit_undeclared_type(type) end def visit_unresolved_type(type) end def visit_qualified_type(type) type.base_type.accept(self) end def visit_void_type(type) end def visit_function_type(type) type.return_type.accept(self) type.parameter_types.each { |param_type| param_type.accept(self) } end def visit_char_type(type) end def visit_signed_char_type(type) end def visit_unsigned_char_type(type) end def visit_short_type(type) end def visit_signed_short_type(type) end def visit_unsigned_short_type(type) end def visit_short_int_type(type) end def visit_signed_short_int_type(type) end def visit_unsigned_short_int_type(type) end def visit_int_type(type) end def visit_signed_type(type) end def visit_signed_int_type(type) end def visit_unsigned_type(type) end def visit_unsigned_int_type(type) end def visit_long_type(type) end def visit_signed_long_type(type) end def visit_unsigned_long_type(type) end def visit_long_int_type(type) end def visit_signed_long_int_type(type) end def visit_unsigned_long_int_type(type) end def visit_long_long_type(type) end def visit_signed_long_long_type(type) end def visit_unsigned_long_long_type(type) end def visit_long_long_int_type(type) end def visit_signed_long_long_int_type(type) end def visit_unsigned_long_long_int_type(type) end def visit_extended_big_int_type(type) end def visit_bitfield_type(type) type.base_type.accept(self) end def visit_enum_type(type) end def visit_pointer_type(type) type.base_type.accept(self) end def visit_float_type(type) end def visit_double_type(type) end def visit_long_double_type(type) end def visit_array_type(type) type.base_type.accept(self) end def visit_struct_type(type) type.members.each { |memb| memb.type.accept(self) } end def visit_union_type(type) type.members.each { |memb| memb.type.accept(self) } end def visit_user_type(type) type.real_type.accept(self) end def visit_parameter_type(type) type.type.accept(self) end end end end adlint-3.2.14/lib/adlint/cc1/phase.rb0000644000004100000410000000701512340630463017224 0ustar www-datawww-data# Analysis phases for C language. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/phase" require "adlint/error" require "adlint/cc1/lexer" require "adlint/cc1/parser" require "adlint/cc1/syntax" require "adlint/cc1/interp" require "adlint/cc1/util" module AdLint #:nodoc: module Cc1 #:nodoc: class CPhase < Phase def initialize(phase_ctxt, phase_name) super(phase_ctxt, "cc1", phase_name) end end class Prepare1Phase < CPhase def initialize(phase_ctxt) super(phase_ctxt, "pr3") end private def do_execute(phase_ctxt, *) phase_ctxt[:cc1_ast_traversal] = SyntaxTreeMulticastVisitor.new phase_ctxt[:cc1_parser] = Parser.new(phase_ctxt) end end class ParsePhase < CPhase def initialize(phase_ctxt) super(phase_ctxt, "prs") end private def do_execute(phase_ctxt, *) phase_ctxt[:cc1_ast] = phase_ctxt[:cc1_parser].execute ensure phase_ctxt[:cc1_tokens] = phase_ctxt[:cc1_parser].token_array DebugUtil.dump_token_array(phase_ctxt) end end class ResolvePhase < CPhase def initialize(phase_ctxt) super(phase_ctxt, "typ") end private def do_execute(phase_ctxt, *) resolver = StaticTypeResolver.new(TypeTable.new(traits, monitor, logger)) phase_ctxt[:cc1_type_table] = resolver.resolve(phase_ctxt[:cc1_ast]) end end class Prepare2Phase < CPhase def initialize(phase_ctxt) super(phase_ctxt, "pr4") end private def do_execute(phase_ctxt, *) phase_ctxt[:cc1_interpreter] = Interpreter.new(phase_ctxt[:cc1_type_table]) end end class InterpPhase < CPhase def initialize(phase_ctxt) super(phase_ctxt, "int") end private def do_execute(phase_ctxt, *) Program.new(phase_ctxt[:cc1_interpreter], phase_ctxt[:cc1_ast]).execute ValueDomain.clear_memos ensure DebugUtil.dump_syntax_tree(phase_ctxt) end end class ReviewPhase < CPhase def initialize(phase_ctxt) super(phase_ctxt, "rv2") end private def do_execute(phase_ctxt, *) phase_ctxt[:cc1_ast].accept(phase_ctxt[:cc1_ast_traversal]) end end class ExaminationPhase < CPhase def initialize(phase_ctxt) super(phase_ctxt, "ex2") end private def do_execute(phase_ctxt, *) examinations.each { |exam| exam.execute } end end end end adlint-3.2.14/lib/adlint/cc1/option.rb0000644000004100000410000000330412340630463017431 0ustar www-datawww-data# Miscellaneous option constants. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: module Cc1 #:nodoc: module InterpreterOptions QUIET = :quiet WITHOUT_SIDE_EFFECTS = :without_side_effects end module BranchOptions NARROWING = :narrowing WIDENING = :widening FIRST = :first FINAL = :final SMOTHER_BREAK = :smother_break IMPLICIT_COND = :implicit_cond COMPLEMENTAL = :complemental end module BranchGroupOptions COMPLETE = :complete ITERATION = :iteration end end end adlint-3.2.14/lib/adlint/cc1/format.rb0000644000004100000410000033016312340630463017417 0ustar www-datawww-data# Format of the formatted input/output functions. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/cc1/mediator" module AdLint #:nodoc: module Cc1 #:nodoc: class PrintfFormat def initialize(fmt_str, loc, trailing_args, env) @location = loc @directives = create_directives(fmt_str, trailing_args, env) @extra_arguments = trailing_args end attr_reader :location attr_reader :directives attr_reader :extra_arguments def conversion_specifiers @directives.select { |dire| dire.conversion_specifier? } end def min_length @directives.reduce(0) { |len, dire| len + dire.min_length } end def max_length @directives.reduce(0) { |len, dire| len + dire.max_length } end private def create_directives(fmt_str, trailing_args, env) dires = [] str = fmt_str.dup until str.empty? dires.push(Directive.guess(str, trailing_args, env)) end dires end # == DESCRIPTION # === Directive class hierarchy # Directive # <-- Ordinary # <-- ConversionSpecifier # <-- CompleteConversionSpecifier # <-- NumberConversionSpecifier # <-- Conversion_d # <-- Conversion_i # <-- Conversion_o # <-- Conversion_u # <-- Conversion_x # <-- Conversion_X # <-- Conversion_f # <-- Conversion_F # <-- Conversion_e # <-- Conversion_E # <-- Conversion_g # <-- Conversion_G # <-- Conversion_a # <-- Conversion_A # <-- Conversion_p # <-- CharacterConversionSpecifier # <-- Conversion_c # <-- StringConversionSpecifier # <-- Conversion_s # <-- Conversion_n # <-- Conversion_percent # <-- UndefinedConversionSpecifier # <-- IncompleteConversionSpecifier class Directive def self.guess(fmt_str, trailing_args, env) try_to_create_ordinary(fmt_str) or try_to_create_conversion_specifier(fmt_str, trailing_args, env) end def initialize(fmt, consume_args) @format = fmt @consume_arguments = consume_args end attr_reader :format def ordinary? !conversion_specifier? end def conversion_specifier? subclass_responsibility end def consume_arguments? @consume_arguments end # === DESCRIPTION # Checks whether types of arguments match this directive. # # === RETURN VALUE # Boolean -- True if types of arguments match this directive. def acceptable? subclass_responsibility end # === DESCRIPTION # Checks whether the format string of this directive is the ISO C99 # compliant. # # === RETURN VALUE # Boolean -- True if the format string is wellformed. def wellformed? subclass_responsibility end def illformed? !wellformed? end def complete? subclass_responsibility end def incomplete? !complete? end def undefined? subclass_responsibility end def valid_flags? subclass_responsibility end def valid_field_width? subclass_responsibility end def valid_precision? subclass_responsibility end def valid_length_modifier? subclass_responsibility end def valid_conversion_specifier_character? subclass_responsibility end def min_length subclass_responsibility end def max_length subclass_responsibility end def flags subclass_responsibility end def field_width subclass_responsibility end def precision subclass_responsibility end def length_modifier subclass_responsibility end def conversion_specifier_character subclass_responsibility end def self.try_to_create_ordinary(fmt_str) (fmt = Ordinary.scan(fmt_str)) ? Ordinary.new(fmt) : nil end private_class_method :try_to_create_ordinary def self.try_to_create_conversion_specifier(fmt_str, trailing_args, env) fmt, flags, field_width, prec, len_mod, cs_char = ConversionSpecifier.scan(fmt_str) case when cs_char.nil? IncompleteConversionSpecifier.new(fmt, flags, field_width, prec, len_mod) when cs_class = CONVERSION_SPECIFIER_TBL[cs_char] cs_class.new(fmt, trailing_args, env, flags, field_width, prec, len_mod, cs_char) else UndefinedConversionSpecifier.new(fmt, flags, field_width, prec, len_mod, cs_char) end end private_class_method :try_to_create_conversion_specifier end private_constant :Directive class Ordinary < Directive def self.scan(fmt_str) # NOTE: The ISO C99 standard says; # # 7.19.6.1 The fprintf function # # 3 The format shall be a multibyte character sequence, beginning and # ending in its initial shift state. The format is composed of zero # or more directives: ordinary multibyte characters (not %), which # are copied unchanged to the output stream; and conversion # specifiers, each of which results in fetching zero or more # subsequent arguments, converting them, if applicable, according to # the corresponding conversion specifier, and then writing the result # to the output stream. fmt_str.slice!(/\A[^%]+/) end def initialize(fmt) super(fmt, false) end def conversion_specifier? false end # === DESCRIPTION # Checks whether types of arguments match this directive. # # === RETURN VALUE # Boolean -- True if types of arguments match this directive. def acceptable? true end # === DESCRIPTION # Checks whether the format string of this directive is the ISO C99 # compliant. # # === RETURN VALUE # Boolean -- True if the format string is wellformed. def wellformed? true end def complete? true end def undefined? false end def valid_flags? false end def valid_field_width? false end def valid_precision? false end def valid_length_modifier? false end def valid_conversion_specifier_character? false end def min_length format.bytes.count end def max_length min_length end def flags nil end def field_width nil end def precision nil end def length_modifier nil end def conversion_specifier_character nil end end private_constant :Ordinary class ConversionSpecifier < Directive include TypeTableMediator include MemoryPoolMediator def self.scan(fmt_str) # NOTE: The ISO C99 standard says; # # 7.19.6.1 The fprintf function # # 4 Each conversion specification is introduced by the character %. # After the %, the following appear in sequence: # # -- Zero or more flags (in any order) that modify the meaning of the # conversion specification. # -- An optional minimum field width. If the converted value has # fewer characters than the field width, it is padded with spaces # (by default) on the left (or right, if the left adjustment flag, # described later, has been given) to the field width. The field # width takes the form of an asterisk * (described later) or a # nonnegative decimal integer. # -- An optional precision that gives the minimum number of digits to # appear for the d, i, o, u, x, and X conversions, the number of # digits to appear after the decimal-point character for a, A, e, # E, f, and F conversions, the maximum number of significant # digits for the g and G conversions, or the maximum number of # bytes to be written for s conversions. The precision takes the # form of a period (.) followed either by an asterisk * (described # later) or by an optional decimal interger; if only the period is # specified, the precision is taken as zero. If a precision # appears with any other conversion specifier, the behavior is # undefined. # -- An optional length modifier that specifies the size of the # argument. # -- A conversion specifier character that specifies the type of # conversion to be applied. if header = fmt_str.slice!(/\A%/) scanned = header else return nil, nil, nil, nil, nil, nil end if flags = fmt_str.slice!(/\A#{flags_re}/) scanned += flags end if field_width = fmt_str.slice!(/\A#{field_width_re}/) scanned += field_width end if prec = fmt_str.slice!(/\A#{precision_re}/) scanned += prec end if len_mod = fmt_str.slice!(/\A#{length_modifier_re}/) scanned += len_mod end if cs_char = fmt_str.slice!(/\A#{cs_char_re}/) scanned += cs_char else # NOTE: If no valid conversion specifier character, force to scan # the heading 1 character as a conversion specifier character. if cs_char = fmt_str.slice!(/\A[a-z]/i) scanned += cs_char end end return scanned, flags, field_width, prec, len_mod, cs_char end def initialize(fmt, trailing_args, env, consume_args, flags, field_width, prec, len_mod, cs_char) super(fmt, consume_args) @flags = flags @field_width = field_width @precision = prec @length_modifier = len_mod @conversion_specifier_character = cs_char if consume_arguments? && @field_width == "*" @field_width_argument = trailing_args.shift else @field_width_argument = nil end if consume_arguments? && @precision == ".*" @precision_argument = trailing_args.shift else @precision_argument = nil end if consume_arguments? @conversion_argument = trailing_args.shift else @conversion_argument = nil end @environment = env end def conversion_specifier? true end def undefined? false end attr_reader :flags attr_reader :field_width attr_reader :precision attr_reader :length_modifier attr_reader :conversion_specifier_character attr_reader :field_width_argument attr_reader :precision_argument attr_reader :conversion_argument def field_width_value case @field_width when "*" # TODO: Should support the parameterized field width. 1 when /\A[1-9][0-9]*\z/ @field_width.to_i else 1 end end def precision_value # NOTE: The ISO C99 standard says; # # 7.19.6.1 The fprintf function # # 4 Each conversion specification is introduced by the character %. # After the %, the following appear in sequence: # # -- An optional precision that gives the minimum number of digits to # appear for the d, i, o, u, x, and X conversions, the number of # digits to appear after the decimal-point character for a, A, e, # E, f, and F conversions, the maximum number of significant # digits for the g and G conversions, or the maximum number of # bytes to be written for s conversions. The precision takes the # form of a period (.) followed either by an asterisk * (described # later) or by an optional decimal interger; if only the period is # specified, the precision is taken as zero. If a precision # appears with any other conversion specifier, the behavior is # undefined. case @precision when "." 0 when ".*" # TODO: Should support the parameterized precision. default_precision_value when /\A\.([1-9][0-9]*)\z/ $1.to_i else default_precision_value end end def self.flags_re # NOTE: The ISO C99 standard says; # # 7.19.6.1 The fprintf function # # 6 The flag characters and their meaning are: # # - The result of the conversion is left-justified within the # field. (It is right-justified if this flag is not specified.) # + The result of a signed conversion always begins with a plus # or minus sign. (It begins with a sign only when a negative # value is converted if this flag is not specified.) # space If the first character of a signed conversion is not a sign, # or if a signed conversion results in no characters, a space # is prefixed to the result. If the space and + flags both # appear, the space flag is ignored. # # The result is converted to an "alternative form". For o # conversion, it increases the precision, if an only if # necessary, to force the first digit of the result to be a # zero (if the value and precision are both 0, a single 0 is # printed). For x (or X) conversion, a nonzero result has 0x # (or 0X) prefixed to it. For a, A, e, E, f, F, g, and G # conversions, the result of converting a floating-point number # always contains a decimal-point character, even if no digits # follow it. (Normally, a decimal-point character appears in # the result of these conversions only if a digit follows it.) # For g and G conversions, trailing zeros are not removed from # the result. For other conversions, the behavior is # undefined. # 0 For d, i, o, u, x, X, a, A, e, E, f, F, g, and G conversions, # leading zeros (following any indication of sign or base) are # used to pad to the field width rather than performing space # padding, except when converting an infinity or NaN. If the 0 # and - flags both appear, the 0 flag is ignored. For d, i, o, # u, x, and X conversions, if a precision is specified, the 0 # flag is ignored. For other conversions, the behavior is # undefined. /[-+ #0]*/ end private_class_method :flags_re def self.field_width_re /(?:\*|[1-9][0-9]*)?/ end private_class_method :field_width_re def self.precision_re /(?:\.\*|\.[1-9][0-9]*)?/ end private_class_method :precision_re def self.length_modifier_re # NOTE: The ISO C99 standard says; # # 7.19.6.1 The fprintf function # # 7 The length modifiers and their meanings are: # # hh Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a signed char or unsigned char argument # (the argument will have been promoted according to the integer # promotions, but its value shall be converted to signed char or # unsigned char before printing); or that a following n # conversion specifier applies to a pointer to a signed char # argument. # h Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a short int or unsigned short int # argument (the argument will have been promoted according to # the integer promotions, but its value shall be converted to # short int or unsigned short int before printing); or that a # following n conversion specifier applies to a pointer to a # short int argument. # l Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a long int or unsigned long int argument; # that a following n conversion specifier applies to a pointer # to a long int argument; that a following c conversion # specifier applies to a wint_t argument; that a following s # conversion specifier applies to a pointer to a wchar_t # argument; or has no effect on a following a, A, e, E, f, F, g, # or G conversion specifier. # ll Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a long long int or unsigned long long int # argument; or that a following n conversion specifier applies # to a pointer to a long long int argument. # j Specifies that a following d, i, o, u, x, or X conversion # specifier applies to an intmax_t or uintmax_t argument; or # that a following n conversion specifier applies to a pointer # to an intmax_t argument. # z Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a size_t or the corresponding signed # integer type argument; or that a following n conversion # specifier applies to a pointer to a signed integer type # corresponding to size_t argument. # t Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a ptrdiff_t or the corresponding unsigned # integer type argument; or that a following n conversion # specifier applies to a pointer to a ptrdiff_t argument. # L Specifies that a following a, A, e, E, f, F, g, or G # conversion specifier applies to a long double argument. /(?:h+|l+|j|z|t|L)?/ end private_class_method :length_modifier_re def self.cs_char_re # NOTE: The ISO C99 standard says; # # 7.19.6.1 The fprintf function # # 8 The conversion specifiers and their meanings are: # # d,i The int argument is converted to signed decimal in the # style [-]dddd. The precision specifies the minimum number # of digits to appear; if the value being converted can be # represented in fewer digits, it is expanded with leading # zeros. The default precision is 1. The result of # converting a zero value with a precision of zero is no # characters. # o,u,x,X The unsigned int argument is converted to unsigned octal # (o), unsigned decimal (u), or unsigned hexadecimal notation # (x or X) in the style dddd; the letters abcdef are used for # x conversion and the letters ABCDEF for X conversion. The # precision specifies the minimum number of digits to appear; # if the value being converted can be represented in fewer # digits, it is expanded with leading zeros. The default # precision in 1. The result of converting a zero value with # a precision of zero is no characters. # f,F A double argument representing a floating-point number is # converted to decimal notation in the style [-]ddd.ddd, # where the number of digits after the decimal-point # character is equal to the precision specification. If the # precision is missing, it is taken as 6; if the precision is # zero and the # flag is not specified, no decimal-point # character appears. If a decimal-point character appears, # at least one digit appears before it. The value is rounded # to the appropriate number of digits. # A double argument representing an infinity is converted in # one of the styles [-]inf or [-]infinity -- which style is # implementation-defined. A double argument representing a # NaN is converted in one of the styles [-]nan or # [-]nan(n-char-sequence) -- which style, and the meaning of # any n-char-sequence, is implementation-defined. The F # conversion specifier produces INF, INFINITY, or NAN instead # of inf, infinity, or nan, respectively. # e,E A double argument representing a floating-point number is # converted in the style [-]d.ddde[+-]dd, where there is one # digit (which is nonzero if the argument is nonzero) before # the decimal-point character and the number of digits after # it is equal to the precision; if the precision is missing, # it is taken as 6; if the precision is zero and the # flag # is not specified, no decimal-point character appears. The # value is rounded to the appropriate number of digits. The # E conversion specifier produces a number with E instead of # e introducing the exponent. The exponent always contains # at least two digits, and only as many more digits as # necessary to represent the exponent. If the value is zero, # the exponent is zero. # g,G A double argument representing a floating-point number is # converted in style f or e (or in style F or E in the case # of a G conversion specifier), depending on the value # converted and the precision. Let P equal the precision if # nonzero, 6 if the precision is omitted, or 1 if the # precision is zero. Then, if a conversion with style E # would have an exponent of X: # -- if P > X >= -4, the conversion is which style f (or F) # and precision P - (X + 1). # -- otherwise, the conversion is with style e (or E) and # precision P - 1. # Finally, unless the # flag is used, any trailing zeros are # removed from the fractional portion of the result and the # decimal-point character is removed if there is no # fractional portion remaining. # A double argument representing an infinity or NaN is # converted in the style of an f or F conversion specifier. # a,A A double argument representing a floating-point number is # converted in the style [-]0xh.hhhhp[+-]d, where there is # one hexadecimal digit (which is nonzero if the argument is # a normalized floating-point number and is otherwise # unspecified) before the decimal-point character and the # number of hexadecimal digits after it is equal to the # precision; if the precision is missing and FLT_RADIX is a # power of 2, then the precision is sufficient for an exact # representation of the value; if the precision is missing # and FLT_RADIX is not a power of 2, then the precision is # sufficient to distinguish values of type double, except # that trailing zeros may be omitted; if the precision is # zero and the # flag is not specified, no decimal-point # character appears. The letters abcdef are used for a # conversion and the letters ABCDEF for A conversion. The A # conversion specifier produces a number with X and P instead # of x and p. The exponent always contains at least one # digit, and only as many more digits as necessary to # represent the decimal exponent of 2. If the value is zero, # the exponent is zero. # c If no l length modifier is present, the int argument is # converted to an unsigned char, and the resulting character # is written. # s If no l length modifier is present, the argument shall be a # pointer to the initial element of an array of character # type. Characters from the array are written up to (but not # including) the terminating null character. If the # precision is specified, no more than that many bytes are # written. If the precision is not specified or is greater # than the size of the array, the array shall contain a null # character. # If an l length modifier is present, the argument shall be a # pointer to the initial element of an array of wchar_t type. # Wide characters from the array are converted to multibyte # characters (each as if by a call to the wcrtomb function, # with the conversion state described by an mbstate_t object # initialized to zero before the first wide character is # converted) up to and including a terminating null wide # character. The resulting multibyte characters are written # up to (but not including) the terminating null character # (byte). If no precision is specified, the array shall # contain a null wide character. If a precision is # specified, no more than that many bytes are written # (including shift sequence, if any), and the array shall # contain a null wide character if, to equal the multibyte # character sequence length given by the precision, the # function would need to access a wide character one past the # end of the array. In no case is a partial multibyte # character written. # p The argument shall be a pointer to void. The value of the # pointer is converted to a sequence of printing characters, # in an implementation-defined manner. # n The argument shall be a pointer to signed integer into # which is written the number of characters written to the # output stream so far by this call to fprintf. No argument # is converted, but one is consumed. If the conversion # specification includes any flags, a field width, or a # precision, the behavior is undefined. # % A % character is written. No argument is converted. The # complete conversion specification shall be %%. /[diouxXfFeEgGaAcspn%]/ end private_class_method :cs_char_re private def default_precision_value subclass_responsibility end def ruby_sprintf_format # TODO: Should support the parameterized field width and the # parameterized precision. fw = @field_width == "*" ? "1" : @field_width pr = @precision == ".*" ? ".1" : @precision "%#{flags}#{fw}#{pr}#{conversion_specifier_character}" end extend Forwardable def_delegator :@environment, :type_table private :type_table def_delegator :@environment, :memory_pool private :memory_pool end private_constant :ConversionSpecifier class CompleteConversionSpecifier < ConversionSpecifier # === DESCRIPTION # Checks whether types of arguments match this directive. # # === RETURN VALUE # Boolean -- True if types of arguments match this directive. def acceptable? if @field_width_argument unless @field_width_argument.type.convertible?(signed_int_t) || @field_width_argument.type.convertible?(unsigned_int_t) return false end end if @precision_argument unless @precision_argument.type.convertible?(signed_int_t) || @precision_argument.type.convertible?(unsigned_int_t) return false end end if @conversion_argument if argument_types argument_types.any? do |arg_type| @conversion_argument.type.convertible?(arg_type) end else true end else false end end # === DESCRIPTION # Checks whether the format string of this directive is the ISO C99 # compliant. # # === RETURN VALUE # Boolean -- True if the format string is wellformed. def wellformed? valid_flags? && valid_field_width? && valid_precision? && valid_length_modifier? && valid_conversion_specifier_character? end def complete? true end def valid_flags? true end def valid_field_width? true end def valid_precision? true end def valid_length_modifier? if length_modifier.empty? true else suitable_length_modifiers.include?(length_modifier) end end private def argument_types subclass_responsibility end def suitable_length_modifiers subclass_responsibility end end private_constant :CompleteConversionSpecifier class NumberConversionSpecifier < CompleteConversionSpecifier def initialize(fmt, trailing_args, env, flags, field_width, prec, len_mod, cs_char) super(fmt, trailing_args, env, true, flags, field_width, prec, len_mod, cs_char) end def valid_conversion_specifier_character? true end def min_length # NOTE: Ruby has the buitin mostly C compliant sprintf. (ruby_sprintf_format % 0).length end def max_length # NOTE: Ruby has the buitin mostly C compliant sprintf. if conversion_type.signed? (ruby_sprintf_format % conversion_type.min).length else (ruby_sprintf_format % conversion_type.max).length end end private def conversion_type subclass_responsibility end end private_constant :NumberConversionSpecifier class Conversion_d < NumberConversionSpecifier def self.suitable_conversion_specifier_character "d" end private def default_precision_value # NOTE: The ISO C99 standard says; # # 7.19.6.1 The fprintf function # # 8 The conversion specifiers and their meanings are: # # d,i The int argument is converted to signed decimal in the # style [-]dddd. The precision specifies the minimum number # of digits to appear; if the value being converted can be # represented in fewer digits, it is expanded with leading # zeros. The default precision is 1. The result of # converting a zero value with a precision of zero is no # characters. # o,u,x,X The unsigned int argument is converted to unsigned octal # (o), unsigned decimal (u), or unsigned hexadecimal notation # (x or X) in the style dddd; the letters abcdef are used for # x conversion and the letters ABCDEF for X conversion. The # precision specifies the minimum number of digits to appear; # if the value being converted can be represented in fewer # digits, it is expanded with leading zeros. The default # precision in 1. The result of converting a zero value with # a precision of zero is no characters. 1 end def argument_types # NOTE: The ISO C99 standard says; # # 7.19.6.1 The fprintf function # # 7 The length modifiers and their meanings are: # # hh Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a signed char or unsigned char argument # (the argument will have been promoted according to the integer # promotions, but its value shall be converted to signed char or # unsigned char before printing); or that a following n # conversion specifier applies to a pointer to a signed char # argument. # h Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a short int or unsigned short int # argument (the argument will have been promoted according to # the integer promotions, but its value shall be converted to # short int or unsigned short int before printing); or that a # following n conversion specifier applies to a pointer to a # short int argument. # l Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a long int or unsigned long int argument; # that a following n conversion specifier applies to a pointer # to a long int argument; that a following c conversion # specifier applies to a wint_t argument; that a following s # conversion specifier applies to a pointer to a wchar_t # argument; or has no effect on a following a, A, e, E, f, F, g, # or G conversion specifier. # ll Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a long long int or unsigned long long int # argument; or that a following n conversion specifier applies # to a pointer to a long long int argument. # j Specifies that a following d, i, o, u, x, or X conversion # specifier applies to an intmax_t or uintmax_t argument; or # that a following n conversion specifier applies to a pointer # to an intmax_t argument. # z Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a size_t or the corresponding signed # integer type argument; or that a following n conversion # specifier applies to a pointer to a signed integer type # corresponding to size_t argument. # t Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a ptrdiff_t or the corresponding unsigned # integer type argument; or that a following n conversion # specifier applies to a pointer to a ptrdiff_t argument. case length_modifier when "hh" [signed_char_t, unsigned_char_t] when "h" [signed_short_t, unsigned_short_t] when "l" [signed_long_t, unsigned_long_t] when "ll" [signed_long_long_t, unsigned_long_long_t] when "j" # FIXME: `intmax_t' and `uintmax_t' are not supported yet. [signed_long_long_t, unsigned_long_long_t] when "z" # FIXME: `size_t' is not supported yet. [unsigned_long_t] when "t" # FIXME: `ptrdiff_t' is not supported yet. [signed_int_t] else [signed_int_t, unsigned_int_t] end end def suitable_length_modifiers ["hh", "h", "l", "ll", "j", "z", "t"] end def conversion_type case length_modifier when "hh" if conversion_argument && conversion_argument.type.signed? signed_char_t else unsigned_char_t end when "h" if conversion_argument && conversion_argument.type.signed? signed_short_t else unsigned_short_t end when "l" if conversion_argument && conversion_argument.type.signed? signed_long_t else unsigned_long_t end when "ll" if conversion_argument && conversion_argument.type.signed? signed_long_long_t else unsigned_long_long_t end when "j" # FIXME: `intmax_t' and `uintmax_t' are not supported yet. if conversion_argument && conversion_argument.type.signed? signed_long_long_t else unsigned_long_long_t end when "z" # FIXME: `size_t' is not supported yet. unsigned_long_t when "t" # FIXME: `ptrdiff_t' is not supported yet. signed_int_t else default_conversion_type end end def default_conversion_type signed_int_t end end private_constant :Conversion_d class Conversion_i < Conversion_d def self.suitable_conversion_specifier_character "i" end end private_constant :Conversion_i class Conversion_o < Conversion_d def self.suitable_conversion_specifier_character "o" end private def default_conversion_type unsigned_int_t end end private_constant :Conversion_o class Conversion_u < Conversion_o def self.suitable_conversion_specifier_character "u" end end private_constant :Conversion_u class Conversion_x < Conversion_o def self.suitable_conversion_specifier_character "x" end end private_constant :Conversion_x class Conversion_X < Conversion_o def self.suitable_conversion_specifier_character "X" end end private_constant :Conversion_X class Conversion_f < NumberConversionSpecifier def self.suitable_conversion_specifier_character "f" end private def default_precision_value # NOTE: The ISO C99 standard says; # # 7.19.6.1 The fprintf function # # 8 The conversion specifiers and their meanings are: # # f,F A double argument representing a floating-point number is # converted to decimal notation in the style [-]ddd.ddd, # where the number of digits after the decimal-point # character is equal to the precision specification. If the # precision is missing, it is taken as 6; if the precision is # zero and the # flag is not specified, no decimal-point # character appears. If a decimal-point character appears, # at least one digit appears before it. The value is rounded # to the appropriate number of digits. # A double argument representing an infinity is converted in # one of the styles [-]inf or [-]infinity -- which style is # implementation-defined. A double argument representing a # NaN is converted in one of the styles [-]nan or # [-]nan(n-char-sequence) -- which style, and the meaning of # any n-char-sequence, is implementation-defined. The F # conversion specifier produces INF, INFINITY, or NAN instead # of inf, infinity, or nan, respectively. # e,E A double argument representing a floating-point number is # converted in the style [-]d.ddde[+-]dd, where there is one # digit (which is nonzero if the argument is nonzero) before # the decimal-point character and the number of digits after # it is equal to the precision; if the precision is missing, # it is taken as 6; if the precision is zero and the # flag # is not specified, no decimal-point character appears. The # value is rounded to the appropriate number of digits. The # E conversion specifier produces a number with E instead of # e introducing the exponent. The exponent always contains # at least two digits, and only as many more digits as # necessary to represent the exponent. If the value is zero, # the exponent is zero. # g,G A double argument representing a floating-point number is # converted in style f or e (or in style F or E in the case # of a G conversion specifier), depending on the value # converted and the precision. Let P equal the precision if # nonzero, 6 if the precision is omitted, or 1 if the # precision is zero. Then, if a conversion with style E # would have an exponent of X: # -- if P > X >= -4, the conversion is which style f (or F) # and precision P - (X + 1). # -- otherwise, the conversion is with style e (or E) and # precision P - 1. # Finally, unless the # flag is used, any trailing zeros are # removed from the fractional portion of the result and the # decimal-point character is removed if there is no # fractional portion remaining. # A double argument representing an infinity or NaN is # converted in the style of an f or F conversion specifier. 6 end def argument_types # NOTE: The ISO C99 standard says; # # 7.19.6.1 The fprintf function # # 7 The length modifiers and their meanings are: # # L Specifies that a following a, A, e, E, f, F, g, or G # conversion specifier applies to a long double argument. case length_modifier when "L" [long_double_t] else # NOTE: The argument will be argument promoted, so float type should # be acceptable, too. [float_t, double_t] end end def suitable_length_modifiers ["L"] end def conversion_type case length_modifier when "L" long_double_t else double_t end end end private_constant :Conversion_f class Conversion_F < Conversion_f def self.suitable_conversion_specifier_character "F" end end private_constant :Conversion_F class Conversion_e < Conversion_f def self.suitable_conversion_specifier_character "e" end end private_constant :Conversion_e class Conversion_E < Conversion_f def self.suitable_conversion_specifier_character "E" end end private_constant :Conversion_E class Conversion_g < Conversion_f def self.suitable_conversion_specifier_character "g" end end private_constant :Conversion_g class Conversion_G < Conversion_f def self.suitable_conversion_specifier_character "G" end end private_constant :Conversion_G class Conversion_a < Conversion_f def self.suitable_conversion_specifier_character "a" end private def default_precision_value # NOTE: The ISO C99 standard says; # # 7.19.6.1 The fprintf function # # 8 The conversion specifiers and their meanings are: # # a,A A double argument representing a floating-point number is # converted in the style [-]0xh.hhhhp[+-]d, where there is # one hexadecimal digit (which is nonzero if the argument is # a normalized floating-point number and is otherwise # unspecified) before the decimal-point character and the # number of hexadecimal digits after it is equal to the # precision; if the precision is missing and FLT_RADIX is a # power of 2, then the precision is sufficient for an exact # representation of the value; if the precision is missing # and FLT_RADIX is not a power of 2, then the precision is # sufficient to distinguish values of type double, except # that trailing zeros may be omitted; if the precision is # zero and the # flag is not specified, no decimal-point # character appears. The letters abcdef are used for a # conversion and the letters ABCDEF for A conversion. The A # conversion specifier produces a number with X and P instead # of x and p. The exponent always contains at least one # digit, and only as many more digits as necessary to # represent the decimal exponent of 2. If the value is zero, # the exponent is zero. # FIXME: This is not the ISO C99 compliant. 6 end end private_constant :Conversion_a class Conversion_A < Conversion_f def self.suitable_conversion_specifier_character "A" end end private_constant :Conversion_A class CharacterConversionSpecifier < CompleteConversionSpecifier def initialize(fmt, trailing_args, env, flags, field_width, prec, len_mod, cs_char) super(fmt, trailing_args, env, true, flags, field_width, prec, len_mod, cs_char) end def valid_conversion_specifier_character? true end def min_length # NOTE: Ruby has the buitin mostly C compliant sprintf. (ruby_sprintf_format % " ").length end def max_length min_length end end private_constant :CharacterConversionSpecifier class Conversion_c < CharacterConversionSpecifier def self.suitable_conversion_specifier_character "c" end private def default_precision_value 0 end def argument_types # NOTE: The ISO C99 standard says; # # 7.19.6.1 The fprintf function # # 7 The length modifiers and their meanings are: # # l Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a long int or unsigned long int argument; # that a following n conversion specifier applies to a pointer # to a long int argument; that a following c conversion # specifier applies to a wint_t argument; that a following s # conversion specifier applies to a pointer to a wchar_t # argument; or has no effect on a following a, A, e, E, f, F, g, # or G conversion specifier. case length_modifier when "l" # FIXME: `wint_t' is not supported yet. [wchar_t] else # NOTE: The argument will be integer promoted, so the argument type # whose conversion-rank is less than one of the int should be # acceptable, too. [signed_char_t, unsigned_char_t, signed_short_t, unsigned_short_t, signed_int_t, unsigned_int_t] end end def suitable_length_modifiers ["l"] end end private_constant :Conversion_c class StringConversionSpecifier < CompleteConversionSpecifier def initialize(fmt, trailing_args, env, flags, field_width, prec, len_mod, cs_char) super(fmt, trailing_args, env, true, flags, field_width, prec, len_mod, cs_char) end def valid_conversion_specifier_character? true end def min_length # NOTE: Ruby has the buitin mostly C compliant sprintf. (ruby_sprintf_format % "").length end def max_length # NOTE: Ruby has the buitin mostly C compliant sprintf. if conversion_argument && conversion_argument.type.pointer? and pointee = pointee_of(conversion_argument) and pointee.type.array? len = pointee.type.length ? pointee.type.length - 1 : 0 (ruby_sprintf_format % (" " * len)).length else min_length end end end private_constant :StringConversionSpecifier class Conversion_s < StringConversionSpecifier def self.suitable_conversion_specifier_character "s" end private def default_precision_value 0 end def argument_types # NOTE: The ISO C99 standard says; # # 7.19.6.1 The fprintf function # # 7 The length modifiers and their meanings are: # # l Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a long int or unsigned long int argument; # that a following n conversion specifier applies to a pointer # to a long int argument; that a following c conversion # specifier applies to a wint_t argument; that a following s # conversion specifier applies to a pointer to a wchar_t # argument; or has no effect on a following a, A, e, E, f, F, g, # or G conversion specifier. case length_modifier when "l" [pointer_type(qualified_type(wchar_t, :const))] else [pointer_type(qualified_type(signed_char_t, :const)), pointer_type(qualified_type(unsigned_char_t, :const))] end end def suitable_length_modifiers ["l"] end end private_constant :Conversion_s class Conversion_p < NumberConversionSpecifier def self.suitable_conversion_specifier_character "p" end def min_length # NOTE: `%p' conversion specifier of the Ruby's builtin sprintf does # not convert the argument. ("%##{flags}#{field_width}#{precision}x" % 0).length end def max_length # NOTE: `%p' conversion specifier of the Ruby's builtin sprintf does # not convert the argument. ("%##{flags}#{field_width}#{precision}x" % conversion_type.max).length end private def default_precision_value 0 end def argument_types if conversion_argument && conversion_argument.type.pointer? [conversion_argument.type.unqualify] else [pointer_type(qualified_type(void_t, :const))] end end def suitable_length_modifiers [] end def conversion_type pointer_type(void_t) end end private_constant :Conversion_p class Conversion_n < CompleteConversionSpecifier def self.suitable_conversion_specifier_character "n" end def initialize(fmt, trailing_args, env, flags, field_width, prec, len_mod, cs_char) super(fmt, trailing_args, env, true, flags, field_width, prec, len_mod, cs_char) end def valid_conversion_specifier_character? true end def min_length 0 end def max_length 0 end private def default_precision_value 0 end def argument_types # NOTE: The ISO C99 standard says; # # 7.19.6.1 The fprintf function # # 7 The length modifiers and their meanings are: # # hh Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a signed char or unsigned char argument # (the argument will have been promoted according to the integer # promotions, but its value shall be converted to signed char or # unsigned char before printing); or that a following n # conversion specifier applies to a pointer to a signed char # argument. # h Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a short int or unsigned short int # argument (the argument will have been promoted according to # the integer promotions, but its value shall be converted to # short int or unsigned short int before printing); or that a # following n conversion specifier applies to a pointer to a # short int argument. # l Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a long int or unsigned long int argument; # that a following n conversion specifier applies to a pointer # to a long int argument; that a following c conversion # specifier applies to a wint_t argument; that a following s # conversion specifier applies to a pointer to a wchar_t # argument; or has no effect on a following a, A, e, E, f, F, g, # or G conversion specifier. # ll Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a long long int or unsigned long long int # argument; or that a following n conversion specifier applies # to a pointer to a long long int argument. # j Specifies that a following d, i, o, u, x, or X conversion # specifier applies to an intmax_t or uintmax_t argument; or # that a following n conversion specifier applies to a pointer # to an intmax_t argument. # z Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a size_t or the corresponding signed # integer type argument; or that a following n conversion # specifier applies to a pointer to a signed integer type # corresponding to size_t argument. # t Specifies that a following d, i, o, u, x, or X conversion # specifier applies to a ptrdiff_t or the corresponding unsigned # integer type argument; or that a following n conversion # specifier applies to a pointer to a ptrdiff_t argument. case length_modifier when "hh" [pointer_type(qualified_type(signed_char_t, :const))] when "h" [pointer_type(qualified_type(signed_short_t, :const))] when "l" [pointer_type(qualified_type(signed_long_t, :const))] when "ll" [pointer_type(qualified_type(signed_long_long_t, :const))] when "j" # FIXME: `intmax_t' is not supported yet. [pointer_type(qualified_type(signed_long_long_t, :const))] when "z" # FIXME: `size_t' is not supported yet. [pointer_type(qualified_type(signed_long_t, :const))] when "t" # FIXME: `ptrdiff_t' is not supported yet. [pointer_type(qualified_type(signed_int_t, :const))] else [pointer_type(qualified_type(signed_int_t, :const))] end end def suitable_length_modifiers ["hh", "h", "l", "ll", "j", "z", "t"] end end private_constant :Conversion_n class Conversion_percent < CompleteConversionSpecifier def self.suitable_conversion_specifier_character "%" end def initialize(fmt, trailing_args, env, flags, field_width, prec, len_mod, cs_char) super(fmt, trailing_args, env, false, flags, field_width, prec, len_mod, cs_char) end def valid_flags? flags.empty? end def valid_field_width? field_width.empty? end def valid_precision? precision.empty? end def valid_length_modifier? length_modifier.empty? end def valid_conversion_specifier_character? true end def min_length 1 end def max_length 1 end private def default_precision_value 0 end def argument_types nil end def suitable_length_modifiers [] end end private_constant :Conversion_percent class UndefinedConversionSpecifier < CompleteConversionSpecifier def initialize(fmt, flags, field_width, prec, len_mod, cs_char) super(fmt, [], nil, false, flags, field_width, prec, len_mod, cs_char) end def undefined? true end def valid_conversion_specifier_character? false end def min_length 0 end def max_length 0 end private def default_precision_value 0 end def argument_types nil end def suitable_length_modifiers [] end end private_constant :UndefinedConversionSpecifier class IncompleteConversionSpecifier < ConversionSpecifier def initialize(fmt, flags, field_width, prec, len_mod) super(fmt, [], nil, false, flags, field_width, prec, len_mod, nil) end # === DESCRIPTION # Checks whether types of arguments match this directive. # # === RETURN VALUE # Boolean -- True if types of arguments match this directive. def acceptable? false end # === DESCRIPTION # Checks whether the format string of this directive is the ISO C99 # compliant. # # === RETURN VALUE # Boolean -- True if the format string is wellformed. def wellformed? false end def complete? false end def undefined? true end def valid_flags? false end def valid_field_width? false end def valid_precision? false end def valid_length_modifier? false end def valid_conversion_specifier_character? false end def min_length 0 end def max_length 0 end private def default_precision_value 0 end end private_constant :IncompleteConversionSpecifier CONVERSION_SPECIFIERS = [ Conversion_d, Conversion_i, Conversion_o, Conversion_u, Conversion_x, Conversion_X, Conversion_f, Conversion_F, Conversion_e, Conversion_E, Conversion_g, Conversion_G, Conversion_a, Conversion_A, Conversion_p, Conversion_c, Conversion_s, Conversion_n, Conversion_percent ] private_constant :CONVERSION_SPECIFIERS CONVERSION_SPECIFIER_TBL = CONVERSION_SPECIFIERS.each_with_object({}) { |cs_class, hash| hash[cs_class.suitable_conversion_specifier_character] = cs_class }.freeze private_constant :CONVERSION_SPECIFIER_TBL end class ScanfFormat def initialize(fmt_str, loc, trailing_args, env) @location = loc @directives = create_directives(fmt_str, trailing_args, env) @extra_arguments = trailing_args end attr_reader :location attr_reader :directives attr_reader :extra_arguments def conversion_specifiers @directives.select { |dire| dire.conversion_specifier? } end private def create_directives(fmt_str, trailing_args, env) dires = [] str = fmt_str.dup until str.empty? dires.push(Directive.guess(str, trailing_args, env)) end dires end # == DESCRIPTION # === Directive class hierarchy # Directive # <-- Whitespace # <-- Ordinary # <-- ConversionSpecifier # <-- CompleteConversionSpecifier # <-- Conversion_d # <-- Conversion_i # <-- Conversion_o # <-- Conversion_u # <-- Conversion_x # <-- Conversion_X # <-- Conversion_a # <-- Conversion_A # <-- Conversion_e # <-- Conversion_E # <-- Conversion_f # <-- Conversion_F # <-- Conversion_g # <-- Conversion_G # <-- Conversion_c # <-- Conversion_s # <-- Conversion_bracket # <-- Conversion_p # <-- Conversion_n # <-- Conversion_percent # <-- UndefinedConversionSpecifier # <-- IncompleteConversionSpecifier class Directive def self.guess(fmt_str, trailing_args, env) try_to_create_whitespace(fmt_str) or try_to_create_ordinary(fmt_str) or try_to_create_conversion_specifier(fmt_str, trailing_args, env) end def initialize(fmt) @format = fmt end attr_reader :format def whitespace? subclass_responsibility end def ordinary? subclass_responsibility end def conversion_specifier? subclass_responsibility end def consume_arguments? subclass_responsibility end # === DESCRIPTION # Checks whether types of arguments match this directive. # # === RETURN VALUE # Boolean -- True if types of arguments match this directive. def acceptable? subclass_responsibility end # === DESCRIPTION # Checks whether the format string of this directive is the ISO C99 # compliant. # # === RETURN VALUE # Boolean -- True if the format string is wellformed. def wellformed? subclass_responsibility end def illformed? !wellformed? end def complete? subclass_responsibility end def incomplete? !complete? end def undefined? subclass_responsibility end def valid_assignment_suppressing_character? subclass_responsibility end def valid_field_width? subclass_responsibility end def valid_length_modifier? subclass_responsibility end def valid_conversion_specifier_character? subclass_responsibility end def valid_scanset? subclass_responsibility end def assignment_suppressing_character subclass_responsibility end def field_width subclass_responsibility end def length_modifier subclass_responsibility end def conversion_specifier_character subclass_responsibility end def scanset subclass_responsibility end def self.try_to_create_whitespace(fmt_str) (fmt = Whitespace.scan(fmt_str)) ? Whitespace.new(fmt) : nil end private_class_method :try_to_create_whitespace def self.try_to_create_ordinary(fmt_str) (fmt = Ordinary.scan(fmt_str)) ? Ordinary.new(fmt) : nil end private_class_method :try_to_create_ordinary def self.try_to_create_conversion_specifier(fmt_str, trailing_args, env) fmt, as_char, field_width, len_mod, cs_char, scanset = ConversionSpecifier.scan(fmt_str) case when cs_char.nil? IncompleteConversionSpecifier.new(fmt, as_char, field_width, len_mod, nil) when cs_char == "[" && scanset.nil? IncompleteConversionSpecifier.new(fmt, as_char, field_width, len_mod, cs_char) when cs_class = CONVERSION_SPECIFIER_TBL[cs_char] cs_class.new(fmt, trailing_args, env, as_char, field_width, len_mod, cs_char, scanset) else UndefinedConversionSpecifier.new(fmt, as_char, field_width, len_mod, cs_char) end end private_class_method :try_to_create_conversion_specifier end private_constant :Directive class Whitespace < Directive def self.scan(fmt_str) # NOTE: The ISO C99 standard says; # # 7.19.6.2 The fscanf function # # 3 The format shall be a multibyte character sequence, beginning and # ending in its initial shift state. The format is composed of zero # or more directives: one or more white-space characters, an ordinary # multibyte character (neither % nor a white-space character), or a # conversion specification. Each conversion specification is # introduced by the character %. After the %, the following appear # in sequence: # # -- An optional assignment-suppressing character *. # -- An optional decimal integer greater than zero that specifies the # maximum field width (in characters). # -- An optional length modifier that specifies the size of the # receiving object. # -- A conversion specifier character that specifies the type of # conversion to be applied. fmt_str.slice!(/\A\s+/) end def whitespace? true end def ordinary? false end def conversion_specifier? false end def consume_arguments? false end # === DESCRIPTION # Checks whether types of arguments match this directive. # # === RETURN VALUE # Boolean -- True if types of arguments match this directive. def acceptable? true end # === DESCRIPTION # Checks whether the format string of this directive is the ISO C99 # compliant. # # === RETURN VALUE # Boolean -- True if the format string is wellformed. def wellformed? true end def complete? true end def undefined? false end def valid_assignment_suppressing_character? false end def valid_field_width? false end def valid_length_modifier? false end def valid_conversion_specifier_character? false end def valid_scanset? false end def assignment_suppressing_character nil end def field_width nil end def length_modifier nil end def conversion_specifier_character nil end def scanset nil end end private_constant :Whitespace class Ordinary < Directive def self.scan(fmt_str) # NOTE: The ISO C99 standard says; # # 7.19.6.2 The fscanf function # # 3 The format shall be a multibyte character sequence, beginning and # ending in its initial shift state. The format is composed of zero # or more directives: one or more white-space characters, an ordinary # multibyte character (neither % nor a white-space character), or a # conversion specification. Each conversion specification is # introduced by the character %. After the %, the following appear # in sequence: # # -- An optional assignment-suppressing character *. # -- An optional decimal integer greater than zero that specifies the # maximum field width (in characters). # -- An optional length modifier that specifies the size of the # receiving object. # -- A conversion specifier character that specifies the type of # conversion to be applied. fmt_str.slice!(/\A[^%\s]+/) end def whitespace? false end def ordinary? true end def conversion_specifier? false end def consume_arguments? false end # === DESCRIPTION # Checks whether types of arguments match this directive. # # === RETURN VALUE # Boolean -- True if types of arguments match this directive. def acceptable? true end # === DESCRIPTION # Checks whether the format string of this directive is the ISO C99 # compliant. # # === RETURN VALUE # Boolean -- True if the format string is wellformed. def wellformed? true end def complete? true end def undefined? false end def valid_assignment_suppressing_character? false end def valid_field_width? false end def valid_length_modifier? false end def valid_conversion_specifier_character? false end def valid_scanset? false end def assignment_suppressing_character nil end def field_width nil end def length_modifier nil end def conversion_specifier_character nil end def scanset nil end end private_constant :Ordinary class ConversionSpecifier < Directive include TypeTableMediator def self.scan(fmt_str) # NOTE: The ISO C99 standard says; # # 7.19.6.2 The fscanf function # # 3 The format shall be a multibyte character sequence, beginning and # ending in its initial shift state. The format is composed of zero # or more directives: one or more white-space characters, an ordinary # multibyte character (neither % nor a white-space character), or a # conversion specification. Each conversion specification is # introduced by the character %. After the %, the following appear # in sequence: # # -- An optional assignment-suppressing character *. # -- An optional decimal integer greater than zero that specifies the # maximum field width (in characters). # -- An optional length modifier that specifies the size of the # receiving object. # -- A conversion specifier character that specifies the type of # conversion to be applied. if header = fmt_str.slice!(/\A%/) scanned = header else return nil, nil, nil, nil, nil, nil end if as_char = fmt_str.slice!(/\A#{as_char_re}/) scanned += as_char end if field_width = fmt_str.slice!(/\A#{field_width_re}/) scanned += field_width end if len_mod = fmt_str.slice!(/\A#{length_modifier_re}/) scanned += len_mod end if cs_char = fmt_str.slice!(/\A#{cs_char_re}/) scanned += cs_char else # NOTE: If no valid conversion specifier character, force to scan # the heading 1 character as a conversion specifier character. if cs_char = fmt_str.slice!(/\A[a-z]/i) scanned += cs_char end end if cs_char == "[" if scanset = fmt_str.slice!(/\A#{scanset_re}/) scanned += scanset end else scanset = nil end return scanned, as_char, field_width, len_mod, cs_char, scanset end def initialize(fmt, trailing_args, env, consume_args, as_char, field_width, len_mod, cs_char, scanset) super(fmt) if as_char == "*" @consume_arguments = false else @consume_arguments = consume_args end @assignment_suppressing_character = as_char @field_width = field_width @length_modifier = len_mod @conversion_specifier_character = cs_char @scanset = scanset if consume_arguments? @conversion_argument = trailing_args.shift else @conversion_argument = nil end @environment = env end def whitespace? false end def ordinary? false end def conversion_specifier? true end def consume_arguments? @consume_arguments end def undefined? false end attr_reader :assignment_suppressing_character attr_reader :field_width attr_reader :length_modifier attr_reader :conversion_specifier_character attr_reader :scanset attr_reader :conversion_argument def field_width_value case @field_width when /\A[1-9][0-9]*\z/ @field_width.to_i else 1 end end def self.as_char_re /\*?/ end private_class_method :as_char_re def self.field_width_re /(?:[1-9][0-9]*)?/ end private_class_method :field_width_re def self.length_modifier_re # NOTE: The ISO C99 standard says; # # 7.19.6.2 The fscanf function # # 11 The length modifiers and their meanings are: # # hh Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to signed # char or unsigned char. # h Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to short int # or unsigned short int. # l Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to long int # or unsigned long int; that a following a, A, e, E, f, F, g, or # G conversion specifier applies to an argument with type pointer # to double; or that a following c, s, or [ conversion specifier # applies to an argument with type pointer to wchar_t. # ll Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to long long # int or unsigned long long int. # j Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to intmax_t # or uintmax_t. # z Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to size_t or # the corresponding signed integer type. # t Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to ptrdiff_t # or the corresponding unsigned integer type. # L Specifies that a following a, A, e, E, f, F, g, or G conversion # specifier applies to an argument with type pointer to long # double. /(?:h+|l+|j|z|t|L)?/ end private_class_method :length_modifier_re def self.cs_char_re # NOTE: The ISO C99 standard says; # # 7.19.6.2 The fscanf function # # 12 The conversion specifiers and their meanings are: # # d Matches an optionally signed decimal integer, whose format # is the same as expected for the subject sequence of the # strtol function with the value 10 for the base argument. # The corresponding argument shall be a pointer to signed # integer. # i Matches an optionally signed integer, whose format is the # same as expected for the subject sequence of the strtol # function with the value 0 for the base argument. The # corresponding argument shall be a pointer to signed # integer. # o Matches an optionally signed octal integer, whose format # is the same as expected for the subject sequence of the # strtoul function with the value 8 for the base argument. # The corresponding argument shall be a pointer to unsigned # integer. # u Matches an optionally signed decimal integer, whose format # is the same as expected for the subject sequence of the # strtoul function with the value 10 for the base argument. # The corresponding argument shall be a pointer to unsigned # integer. # x Matches an optionally signed hexadecimal integer, whose # format is the same as expected for the subject sequence of # the strtoul function with the value 16 for the base # argument. The corresponding argument shall be a pointer # to unsigned integer. # a,e,f,g Matches an optionally signed floating-point number, # infinity, or NaN, whose format is the same as expected for # the subject sequence of the strtod function. The # corresponding argument shall be a pointer to floating. # c Matches a sequence of characters of exactly the number # specified by the field width (1 if no field width is # present in the directive). # If no l length modifier is present, the corresponding # argument shall be a pointer to the initial element of # character array large enough to accept the sequence. No # null character is added. # If an l length modifier is present, the input shall be a # sequence of multibyte characters that begins in the # initial shift state. Each multibyte character in the # sequence is converted to a wide character as if by a call # to the mbrtowc function, with the conversion state # described by an mbstate_t object initialized to zero # before the first multibyte character is converted. The # corresponding argument shall be a pointer to the initial # element of an array of wchar_t large enough to accept the # resulting sequence of wide characters. No null wide # character is added. # s Matches a sequence of non-white-space characters. # If no l length modifier is present, the corresponding # argument shall be a pointer to the initial element of a # character array large enough to accept the sequence and a # terminating null character, which will be added # automatically. # If an l length modifier is present, the input shall be a # sequence of multibyte characters that begins in the # initial shift state. Each multibyte character is # converted to a wide character as if by a call to the # mbrtowc function, with the conversion state described by # an mbstate_t object initialized to zero before the first # multibyte character is converted. The corresponding # argument shall be a pointer to the initial element of an # array of wchar_t large enough to accept the sequence and # the terminating null wide character, which will be added # automatically. # [ Matches a nonempty sequence of characters from a set of # expected characters (the scanset). # If no l length modifier is present, the corresponding # argument shall be a pointer to the initial element of a # character array large enough to accept the sequence and a # terminating null character, which will be added # automatically. # If an l length modifier is present, the input shall be a # sequence of multibyte characters that begins in the # initial shift state. Each multibyte character is # converted to a wide character as if by a call to the # mbrtowc function, with the conversion state described by # an mbstate_t object initialized to zero before the first # multibyte character is converted. The corresponding # argument shall be a pointer to the initial element of an # array of wchar_t large enough to accept the sequence and # the terminating null wide character, which will be added # automatically. # The conversion specifier includes all subsequent # characters in the format string, up to and including the # matching right bracket (]). The characters between the # brackets (the scanlist) compose the scanset, unless the # character after the left bracket is a circumflex (^), in # which case the scanset contains all characters that do not # appear in the scanlist between the circumflex and the # right bracket. If the conversion specifier begins with [] # or [^], the right bracket character is in the scanlist and # the next following right bracket character is the matching # right bracket that ends the specification; otherwise the # first following right bracket character is the one that # ends the specification. If a - character is in the # scanlist and is not the first, nor the second where the # first character is a ^, nor the last character, the # behavior is implementation-defined. # p Matches an implementation-defined set of sequences, which # should be the same as the set of sequence that may be # produced by the %p conversion of the fprintf function. # The corresponding argument shall be a pointer to a pointer # to void. The input item is converted to a pointer value # in an implementation-defined manner. If the input item is # a value converted earlier during the same program # execution, the pointer that results shall compare equal to # the value; otherwise the behavior of the %p conversion is # undefined. # n No input is consumed. The corresponding argument shall be # a pointer to signed integer into which is to be written # the number of characters read from the input stream so far # by this call to the fscanf function. Execution of a %n # directive does not increment the assignment count returned # at the completion of execution of the fscanf function. No # argument is converted, but one is consumed. If the # conversion specification includes an # assignment-suppressing character or a field width, the # behavior is undefined. # % Matches a single % character; no conversion or assignment # occurs. The complete conversion specification shall be # %%. # # 14 The conversion specifiers A, E, F, G, and X are also valid and # behave the same as, respectively, a, e, f, g, and x. /[diouxXaAeEfFgGcs\[pn%]/ end private_class_method :cs_char_re def self.scanset_re # NOTE: The ISO C99 standard says; # # 7.19.6.2 The fscanf function # # 12 The conversion specifiers and their meanings are: # # [ Matches a nonempty sequence of characters from a set of # expected characters (the scanset). # If no l length modifier is present, the corresponding # argument shall be a pointer to the initial element of a # character array large enough to accept the sequence and a # terminating null character, which will be added # automatically. # If an l length modifier is present, the input shall be a # sequence of multibyte characters that begins in the # initial shift state. Each multibyte character is # converted to a wide character as if by a call to the # mbrtowc function, with the conversion state described by # an mbstate_t object initialized to zero before the first # multibyte character is converted. The corresponding # argument shall be a pointer to the initial element of an # array of wchar_t large enough to accept the sequence and # the terminating null wide character, which will be added # automatically. # The conversion specifier includes all subsequent # characters in the format string, up to and including the # matching right bracket (]). The characters between the # brackets (the scanlist) compose the scanset, unless the # character after the left bracket is a circumflex (^), in # which case the scanset contains all characters that do not # appear in the scanlist between the circumflex and the # right bracket. If the conversion specifier begins with [] # or [^], the right bracket character is in the scanlist and # the next following right bracket character is the matching # right bracket that ends the specification; otherwise the # first following right bracket character is the one that # ends the specification. If a - character is in the # scanlist and is not the first, nor the second where the # first character is a ^, nor the last character, the # behavior is implementation-defined. /\].*?\]|\^\].*?\]|.*?\]/ end private_class_method :scanset_re extend Forwardable def_delegator :@environment, :type_table private :type_table end private_constant :ConversionSpecifier class CompleteConversionSpecifier < ConversionSpecifier # === DESCRIPTION # Checks whether types of arguments match this directive. # # === RETURN VALUE # Boolean -- True if types of arguments match this directive. def acceptable? if @conversion_argument if argument_types argument_types.any? do |arg_type| @conversion_argument.type.convertible?(arg_type) end else true end else false end end # === DESCRIPTION # Checks whether the format string of this directive is the ISO C99 # compliant. # # === RETURN VALUE # Boolean -- True if the format string is wellformed. def wellformed? valid_assignment_suppressing_character? && valid_field_width? && valid_length_modifier? && valid_conversion_specifier_character? end def complete? true end def valid_length_modifier? if length_modifier.empty? true else suitable_length_modifiers.include?(length_modifier) end end private def argument_types if consume_arguments? subclass_responsibility else nil end end def suitable_length_modifiers subclass_responsibility end end private_constant :CompleteConversionSpecifier class Conversion_d < CompleteConversionSpecifier def self.suitable_conversion_specifier_character "d" end def initialize(fmt, trailing_args, env, as_char, field_width, len_mod, cs_char, scanset) super(fmt, trailing_args, env, true, as_char, field_width, len_mod, cs_char, scanset) end def valid_assignment_suppressing_character? true end def valid_field_width? true end def valid_conversion_specifier_character? true end def valid_scanset? true end private def argument_types # NOTE: The ISO C99 standard says; # # 7.19.6.2 The fscanf function # # 11 The length modifiers and their meanings are: # # hh Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to signed # char or unsigned char. # h Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to short int # or unsigned short int. # l Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to long int # or unsigned long int; that a following a, A, e, E, f, F, g, or # G conversion specifier applies to an argument with type pointer # to double; or that a following c, s, or [ conversion specifier # applies to an argument with type pointer to wchar_t. # ll Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to long long # int or unsigned long long int. # j Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to intmax_t # or uintmax_t. # z Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to size_t or # the corresponding signed integer type. # t Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to ptrdiff_t # or the corresponding unsigned integer type. case length_modifier when "hh" [pointer_type(signed_char_t), pointer_type(unsigned_char_t)] when "h" [pointer_type(signed_short_t), pointer_type(unsigned_short_t)] when "l" [pointer_type(signed_long_t), pointer_type(unsigned_long_t)] when "ll" [pointer_type(signed_long_long_t), pointer_type(unsigned_long_long_t)] when "j" # FIXME: `intmax_t' and `uintmax_t' are not supported yet. [pointer_type(signed_long_long_t), pointer_type(unsigned_long_long_t)] when "z" # FIXME: `size_t' is not supported yet. [pointer_type(signed_long_t), pointer_type(unsigned_long_t)] when "t" # FIXME: `ptrdiff_t' is not supported yet. [pointer_type(signed_int_t), pointer_type(unsigned_int_t)] else default_argument_types end end def suitable_length_modifiers ["hh", "h", "l", "ll", "j", "z", "t"] end def default_argument_types [pointer_type(signed_int_t)] end end private_constant :Conversion_d class Conversion_i < Conversion_d def self.suitable_conversion_specifier_character "i" end end private_constant :Conversion_i class Conversion_o < Conversion_d def self.suitable_conversion_specifier_character "o" end private def default_argument_types [pointer_type(unsigned_int_t)] end end private_constant :Conversion_o class Conversion_u < Conversion_o def self.suitable_conversion_specifier_character "u" end end private_constant :Conversion_u class Conversion_x < Conversion_o def self.suitable_conversion_specifier_character "x" end end private_constant :Conversion_x class Conversion_X < Conversion_o def self.suitable_conversion_specifier_character "X" end end private_constant :Conversion_X class Conversion_a < CompleteConversionSpecifier def self.suitable_conversion_specifier_character "a" end def initialize(fmt, trailing_args, env, as_char, field_width, len_mod, cs_char, scanset) super(fmt, trailing_args, env, true, as_char, field_width, len_mod, cs_char, scanset) end def valid_assignment_suppressing_character? true end def valid_field_width? true end def valid_conversion_specifier_character? true end def valid_scanset? true end private def argument_types # NOTE: The ISO C99 standard says; # # 7.19.6.2 The fscanf function # # 11 The length modifiers and their meanings are: # # l Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to long int # or unsigned long int; that a following a, A, e, E, f, F, g, or # G conversion specifier applies to an argument with type pointer # to double; or that a following c, s, or [ conversion specifier # applies to an argument with type pointer to wchar_t. # L Specifies that a following a, A, e, E, f, F, g, or G conversion # specifier applies to an argument with type pointer to long # double. case length_modifier when "l" [pointer_type(double_t)] when "L" [pointer_type(long_double_t)] else [pointer_type(float_t)] end end def suitable_length_modifiers ["l", "L"] end end private_constant :Conversion_a class Conversion_A < Conversion_a def self.suitable_conversion_specifier_character "A" end end private_constant :Conversion_A class Conversion_e < Conversion_a def self.suitable_conversion_specifier_character "e" end end private_constant :Conversion_e class Conversion_E < Conversion_a def self.suitable_conversion_specifier_character "E" end end private_constant :Conversion_E class Conversion_f < Conversion_a def self.suitable_conversion_specifier_character "f" end end private_constant :Conversion_f class Conversion_F < Conversion_a def self.suitable_conversion_specifier_character "F" end end private_constant :Conversion_F class Conversion_g < Conversion_a def self.suitable_conversion_specifier_character "g" end end private_constant :Conversion_g class Conversion_G < Conversion_a def self.suitable_conversion_specifier_character "G" end end private_constant :Conversion_G class Conversion_c < CompleteConversionSpecifier def self.suitable_conversion_specifier_character "c" end def initialize(fmt, trailing_args, env, as_char, field_width, len_mod, cs_char, scanset) super(fmt, trailing_args, env, true, as_char, field_width, len_mod, cs_char, scanset) end def valid_assignment_suppressing_character? true end def valid_field_width? true end def valid_conversion_specifier_character? true end def valid_scanset? true end private def argument_types # NOTE: The ISO C99 standard says; # # 7.19.6.2 The fscanf function # # 11 The length modifiers and their meanings are: # # l Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to long int # or unsigned long int; that a following a, A, e, E, f, F, g, or # G conversion specifier applies to an argument with type pointer # to double; or that a following c, s, or [ conversion specifier # applies to an argument with type pointer to wchar_t. case length_modifier when "l" [pointer_type(wchar_t)] else [pointer_type(signed_char_t), pointer_type(unsigned_char_t)] end end def suitable_length_modifiers ["l"] end end private_constant :Conversion_c class Conversion_s < Conversion_c def self.suitable_conversion_specifier_character "s" end end private_constant :Conversion_s class Conversion_bracket < Conversion_c def self.suitable_conversion_specifier_character "[" end def valid_scanset? # NOTE: The `-' character in the scanset causes implementation-defined # behavior. So, AdLint treats the `-' character as an ordinary # character in the scanset. orig_set = scanset.chop.chars.to_a uniq_set = orig_set.uniq orig_set.size == uniq_set.size end end private_constant :Conversion_bracket class Conversion_p < CompleteConversionSpecifier def self.suitable_conversion_specifier_character "p" end def initialize(fmt, trailing_args, env, as_char, field_width, len_mod, cs_char, scanset) super(fmt, trailing_args, env, true, as_char, field_width, len_mod, cs_char, scanset) end def valid_assignment_suppressing_character? true end def valid_field_width? true end def valid_conversion_specifier_character? true end def valid_scanset? true end private def argument_types if conversion_argument && conversion_argument.type.pointer? [conversion_argument.type.unqualify] else [pointer_type(void_t)] end end def suitable_length_modifiers [] end end private_constant :Conversion_p class Conversion_n < CompleteConversionSpecifier def self.suitable_conversion_specifier_character "n" end def initialize(fmt, trailing_args, env, as_char, field_width, len_mod, cs_char, scanset) super(fmt, trailing_args, env, true, as_char, field_width, len_mod, cs_char, scanset) end def valid_assignment_suppressing_character? # NOTE: The ISO C99 standard says; # # 7.19.6.2 The fscanf function # # 12 The conversion specifiers and their meanings are: # # n No input is consumed. The corresponding argument shall be # a pointer to signed integer into which is to be written # the number of characters read from the input stream so far # by this call to the fscanf function. Execution of a %n # directive does not increment the assignment count returned # at the completion of execution of the fscanf function. No # argument is converted, but one is consumed. If the # conversion specification includes an # assignment-suppressing character or a field width, the # behavior is undefined. assignment_suppressing_character.empty? end def valid_field_width? field_width.empty? end def valid_conversion_specifier_character? true end def valid_scanset? true end private def argument_types # NOTE: The ISO C99 standard says; # # 7.19.6.2 The fscanf function # # 11 The length modifiers and their meanings are: # # hh Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to signed # char or unsigned char. # h Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to short int # or unsigned short int. # l Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to long int # or unsigned long int; that a following a, A, e, E, f, F, g, or # G conversion specifier applies to an argument with type pointer # to double; or that a following c, s, or [ conversion specifier # applies to an argument with type pointer to wchar_t. # ll Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to long long # int or unsigned long long int. # j Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to intmax_t # or uintmax_t. # z Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to size_t or # the corresponding signed integer type. # t Specifies that a following d, i, o, u, x, X, or n conversion # specifier applies to an argument with type pointer to ptrdiff_t # or the corresponding unsigned integer type. case length_modifier when "hh" [pointer_type(signed_char_t), pointer_type(unsigned_char_t)] when "h" [pointer_type(signed_short_t), pointer_type(unsigned_short_t)] when "l" [pointer_type(signed_long_t), pointer_type(unsigned_long_t)] when "ll" [pointer_type(signed_long_long_t), pointer_type(unsigned_long_long_t)] when "j" # FIXME: `intmax_t' and `uintmax_t' are not supported yet. [pointer_type(signed_long_long_t), pointer_type(unsigned_long_long_t)] when "z" # FIXME: `size_t' is not supported yet. [pointer_type(signed_long_t), pointer_type(unsigned_long_t)] when "t" # FIXME: `ptrdiff_t' is not supported yet. [pointer_type(signed_int_t), pointer_type(unsigned_int_t)] else [pointer_type(signed_int_t)] end end def suitable_length_modifiers ["hh", "h", "l", "ll", "j", "z", "t"] end end private_constant :Conversion_n class Conversion_percent < CompleteConversionSpecifier def self.suitable_conversion_specifier_character "%" end def initialize(fmt, trailing_args, env, as_char, field_width, len_mod, cs_char, scanset) super(fmt, trailing_args, env, false, as_char, field_width, len_mod, cs_char, scanset) end def valid_assignment_suppressing_character? # NOTE: The ISO C99 standard says; # # 7.19.6.2 The fscanf function # # 12 The conversion specifiers and their meanings are: # # % Matches a single % character; no conversion or assignment # occurs. The complete conversion specification shall be # %%. assignment_suppressing_character.empty? end def valid_field_width? field_width.empty? end def valid_conversion_specifier_character? true end def valid_scanset? true end private def argument_types nil end def suitable_length_modifiers [] end end private_constant :Conversion_percent class UndefinedConversionSpecifier < CompleteConversionSpecifier def initialize(fmt, as_char, field_width, len_mod, cs_char) super(fmt, [], nil, false, as_char, field_width, len_mod, cs_char, nil) end def undefined? true end def valid_assignment_suppressing_character? false end def valid_field_width? false end def valid_conversion_specifier_character? false end def valid_scanset? true end private def argument_types nil end def suitable_length_modifiers [] end end private_constant :UndefinedConversionSpecifier class IncompleteConversionSpecifier < ConversionSpecifier def initialize(fmt, as_char, field_width, len_mod, cs_char) super(fmt, [], nil, false, as_char, field_width, len_mod, cs_char, nil) end # === DESCRIPTION # Checks whether types of arguments match this directive. # # === RETURN VALUE # Boolean -- True if types of arguments match this directive. def acceptable? false end # === DESCRIPTION # Checks whether the format string of this directive is the ISO C99 # compliant. # # === RETURN VALUE # Boolean -- True if the format string is wellformed. def wellformed? false end def complete? false end def undefined? true end def valid_assignment_suppressing_character? false end def valid_field_width? false end def valid_length_modifier? false end def valid_conversion_specifier_character? conversion_specifier_character == "[" end def valid_scanset? conversion_specifier_character == "[" ? !scanset.nil? : false end end private_constant :IncompleteConversionSpecifier CONVERSION_SPECIFIERS = [ Conversion_d, Conversion_i, Conversion_o, Conversion_u, Conversion_x, Conversion_X, Conversion_a, Conversion_A, Conversion_e, Conversion_E, Conversion_f, Conversion_F, Conversion_g, Conversion_G, Conversion_c, Conversion_s, Conversion_bracket, Conversion_p, Conversion_n, Conversion_percent ] private_constant :CONVERSION_SPECIFIERS CONVERSION_SPECIFIER_TBL = CONVERSION_SPECIFIERS.each_with_object({}) { |cs_class, hash| hash[cs_class.suitable_conversion_specifier_character] = cs_class }.freeze private_constant :CONVERSION_SPECIFIER_TBL end end end adlint-3.2.14/lib/adlint/cc1/util.rb0000644000004100000410000000553112340630463017102 0ustar www-datawww-data# Miscellaneous utilities for C language. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: module Cc1 #:nodoc: class EscapeSequence def initialize(str) @str = str end def value case @str when "\\'" then "'".ord when "\\\"" then "\"".ord when "\\?" then "?".ord when "\\\\" then "\\".ord when "\\a" then "\a".ord when "\\b" then "\b".ord when "\\f" then "\f".ord when "\\n" then "\n".ord when "\\r" then "\r".ord when "\\t" then "\t".ord when "\\v" then "\v".ord else case @str when /\A\\([0-9]{1,3})\z/ $1.to_i(8) when /\A\\x([0-9A-F]+)\z/i $1.to_i(16) when /\A\\u([0-9A-F]{4,8})\z/i $1.to_i(16) else 0 end end end end module DebugUtil def dump_syntax_tree(phase_ctxt) if $DEBUG ast_fname = phase_ctxt[:sources].first.fpath.basename.add_ext(".ast") ast_fpath = ast_fname.expand_path(phase_ctxt.msg_fpath.dirname) File.open(ast_fpath, "w") do |io| if phase_ctxt[:cc1_ast] PP.pp(phase_ctxt[:cc1_ast], io) end end end end module_function :dump_syntax_tree def dump_token_array(phase_ctxt) if $DEBUG tok_fname = phase_ctxt[:sources].first.fpath.basename.add_ext(".tok") tok_fpath = tok_fname.expand_path(phase_ctxt.msg_fpath.dirname) File.open(tok_fpath, "w") do |io| if phase_ctxt[:cc1_tokens] phase_ctxt[:cc1_tokens].each { |tok| io.puts(tok.inspect) } end end end end module_function :dump_token_array end end end adlint-3.2.14/lib/adlint/cc1/scope.rb0000644000004100000410000000335412340630463017237 0ustar www-datawww-data# C runtime scope. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: module Cc1 #:nodoc: class Scope def initialize(depth) @depth = depth end attr_reader :depth def global? @depth == 0 end def local? @depth > 0 end def inner_scope Scope.new(@depth + 1) end def outer_scope Scope.new(@depth - 1) end def eql?(rhs) @depth == rhs.depth end def hash @depth.hash end end class GlobalScope < Scope def initialize super(0) end end end end adlint-3.2.14/lib/adlint/cc1/expr.rb0000644000004100000410000015454712340630463017117 0ustar www-datawww-data# C expression evaluator. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/cc1/mediator" require "adlint/cc1/const" require "adlint/cc1/conv" require "adlint/cc1/seqp" module AdLint #:nodoc: module Cc1 #:nodoc: module ExpressionEvaluator # NOTE: Host class of this module must include InterpreterMediator and # MonitorUtil. include NotifierMediator include ConstantEvaluator include Conversion def visit_error_expression(node) checkpoint(node.location) create_tmpvar.tap { |rslt_var| notify_error_expr_evaled(node, rslt_var) } end def visit_object_specifier(node) checkpoint(node.location) eval_object_specifier(node) end def visit_constant_specifier(node) checkpoint(node.location) if const_var = eval_constant(node) notify_constant_referred(node, const_var) rslt_var = const_var else rslt_var = create_tmpvar end notify_constant_specifier_evaled(node, rslt_var) rslt_var end def visit_string_literal_specifier(node) checkpoint(node.location) case node.literal.value when /\A"(.*)"\z/ rslt_var = create_tmpvar(array_type(char_t, $1.length + 1), create_array_value_of_string($1)) when /\AL"(.*)"\z/i rslt_var = create_tmpvar(array_type(wchar_t, $1.length + 1), create_array_value_of_string($1)) else rslt_var = create_tmpvar(array_type(char_t)) end notify_string_literal_specifier_evaled(node, rslt_var) rslt_var end def visit_null_constant_specifier(node) checkpoint(node.location) rslt_var = create_tmpvar(pointer_type(void_t), scalar_value_of_null) notify_null_constant_specifier_evaled(node, rslt_var) rslt_var end def visit_grouped_expression(node) checkpoint(node.location) node.expression.accept(self) end def visit_array_subscript_expression(node) checkpoint(node.location) eval_array_subscript_expr(node, node.expression.accept(self), node.array_subscript.accept(self)) end def visit_function_call_expression(node) checkpoint(node.location) args = node.argument_expressions.map { |expr| [expr.accept(self), expr] } eval_function_call_expr(node, node.expression.accept(self), args) end def visit_member_access_by_value_expression(node) checkpoint(node.location) eval_member_access_by_value_expr(node, node.expression.accept(self)) end def visit_member_access_by_pointer_expression(node) checkpoint(node.location) eval_member_access_by_pointer_expr(node,node.expression.accept(self)) end def visit_bit_access_by_value_expression(node) checkpoint(node.location) eval_bit_access_by_value_expr(node, node.expression.accept(self)) end def visit_bit_access_by_pointer_expression(node) checkpoint(node.location) eval_bit_access_by_pointer_expr(node, node.expression.accept(self)) end def visit_postfix_increment_expression(node) checkpoint(node.location) eval_postfix_increment_expr(node, node.operand.accept(self)) end def visit_postfix_decrement_expression(node) checkpoint(node.location) eval_postfix_decrement_expr(node, node.operand.accept(self)) end def visit_compound_literal_expression(node) checkpoint(node.location) eval_compound_literal_expr(node) end def visit_prefix_increment_expression(node) checkpoint(node.location) eval_prefix_increment_expr(node, node.operand.accept(self)) end def visit_prefix_decrement_expression(node) checkpoint(node.location) eval_prefix_decrement_expr(node, node.operand.accept(self)) end def visit_address_expression(node) checkpoint(node.location) eval_address_expr(node, node.operand.accept(self)) end def visit_indirection_expression(node) checkpoint(node.location) eval_indirection_expr(node, node.operand.accept(self)) end def visit_unary_arithmetic_expression(node) checkpoint(node.location) eval_unary_arithmetic_expr(node, node.operand.accept(self)) end def visit_sizeof_expression(node) checkpoint(node.location) ope_obj = rslt_var = nil eval_quietly_without_side_effects do rslt_type = type_of(UserTypeId.new("size_t")) || unsigned_long_t ope_obj = node.operand.accept(self) if ope_obj.variable? size = ope_obj.type.aligned_byte_size rslt_var = create_tmpvar(rslt_type, scalar_value_of(size)) else rslt_var = create_tmpvar(rslt_type) end end notify_sizeof_expr_evaled(node, ope_obj, rslt_var) rslt_var end def visit_sizeof_type_expression(node) checkpoint(node.location) resolve_unresolved_type(node.operand) rslt_var = nil eval_quietly_without_side_effects do rslt_type = type_of(UserTypeId.new("size_t")) || unsigned_long_t size = node.operand.type.aligned_byte_size rslt_var = create_tmpvar(rslt_type, scalar_value_of(size)) end notify_sizeof_type_expr_evaled(node, node.operand.type, rslt_var) rslt_var end def visit_alignof_expression(node) checkpoint(node.location) ope_obj = rslt_var = nil eval_quietly_without_side_effects do rslt_type = type_of(UserTypeId.new("size_t")) || unsigned_long_t ope_obj = node.operand.accept(self) if ope_obj.variable? align = ope_obj.type.byte_alignment rslt_var = create_tmpvar(rslt_type, scalar_value_of(align)) else rslt_var = create_tmpvar(rslt_type) end end notify_alignof_expr_evaled(node, ope_obj, rslt_var) rslt_var end def visit_alignof_type_expression(node) checkpoint(node.location) resolve_unresolved_type(node.operand) rslt_var = nil eval_quietly_without_side_effects do rslt_type = type_of(UserTypeId.new("size_t")) || unsigned_long_t align = node.operand.type.aligned_byte_size rslt_var = create_tmpvar(rslt_type, scalar_value_of(align)) end notify_alignof_type_expr_evaled(node, node.operand.type, rslt_var) rslt_var end def visit_cast_expression(node) checkpoint(node.location) eval_cast_expr(node, node.operand.accept(self)) end def visit_multiplicative_expression(node) checkpoint(node.location) eval_multiplicative_expr(node, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_additive_expression(node) checkpoint(node.location) eval_additive_expr(node, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_shift_expression(node) checkpoint(node.location) eval_shift_expr(node, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_relational_expression(node) checkpoint(node.location) eval_relational_expr(node, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_equality_expression(node) checkpoint(node.location) eval_equality_expr(node, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_and_expression(node) checkpoint(node.location) eval_and_expr(node, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_exclusive_or_expression(node) checkpoint(node.location) eval_exclusive_or_expr(node, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_inclusive_or_expression(node) checkpoint(node.location) eval_inclusive_or_expr(node, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_logical_and_expression(node) checkpoint(node.location) lhs_obj = node.lhs_operand.accept(self) if lhs_obj.variable? lhs_var = lhs_obj else return create_tmpvar(int_t) end # NOTE: The ISO C99 standard says; # # 6.5.13 Logical AND operator # # Semantics # # 4 Unlike the bitwise binary & operator, the && operator guarantees # left-to-right evaluation; there is a sequence point after the # evaluation of the first operand. If the first operand compares equal # to 0, the second operand is not evaluated. notify_sequence_point_reached(SequencePoint.new(node.lhs_operand)) lhs_val = lhs_var.value if lhs_val.scalar? && lhs_val.test_must_be_false.true? # NOTE: Doing the short-circuit evaluation. notify_variable_value_referred(node, lhs_var) return create_tmpvar(int_t, scalar_value_of_false) end rhs_obj = node.rhs_operand.accept(self) if rhs_obj.variable? rhs_var = rhs_obj else return create_tmpvar(int_t) end notify_sequence_point_reached(SequencePoint.new(node.rhs_operand)) rhs_val = rhs_var.value if lhs_val.scalar? && rhs_val.scalar? # NOTE: No usual-arithmetic-conversion. rslt_var = create_tmpvar(int_t, lhs_val.logical_and(rhs_val)) else rslt_var = create_tmpvar(int_t) end notify_variable_value_referred(node, lhs_var) notify_variable_value_referred(node, rhs_var) notify_logical_and_expr_evaled(node, lhs_var, rhs_var, rslt_var) rslt_var end def visit_logical_or_expression(node) checkpoint(node.location) lhs_obj = node.lhs_operand.accept(self) if lhs_obj.variable? lhs_var = lhs_obj else return create_tmpvar(int_t) end # NOTE: The ISO C99 standard says; # # 6.5.14 Logical OR operator # # Semantics # # 4 Unlike the bitwise | operator, the || operator guarantees # left-to-right evaluation; there is a sequence point after the # evaluation of the first operand. If the first operand compares # unequal to 0, the second operand is not evaluated. notify_sequence_point_reached(SequencePoint.new(node.lhs_operand)) lhs_val = lhs_var.value if lhs_val.scalar? && lhs_val.test_must_be_true.true? # NOTE: Doing the short-circuit evaluation. notify_variable_value_referred(node, lhs_var) return create_tmpvar(int_t, scalar_value_of_true) end rhs_obj = node.rhs_operand.accept(self) if rhs_obj.variable? rhs_var = rhs_obj else return create_tmpvar(int_t) end notify_sequence_point_reached(SequencePoint.new(node.rhs_operand)) rhs_val = rhs_var.value if lhs_val.scalar? && rhs_val.scalar? # NOTE: No usual-arithmetic-conversion. rslt_var = create_tmpvar(int_t, lhs_val.logical_or(rhs_val)) else rslt_var = create_tmpvar(int_t) end notify_variable_value_referred(node, lhs_var) notify_variable_value_referred(node, rhs_var) notify_logical_or_expr_evaled(node, lhs_var, rhs_var, rslt_var) rslt_var end def visit_simple_assignment_expression(node) checkpoint(node.location) eval_simple_assignment_expr(node, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_compound_assignment_expression(node) checkpoint(node.location) eval_compound_assignment_expr(node, node.lhs_operand.accept(self), node.rhs_operand.accept(self)) end def visit_comma_separated_expression(node) checkpoint(node.location) node.expressions.map { |expr| expr.accept(self) }.last end private def eval_quietly_without_side_effects(&block) unless orig_quiet = interpreter.quiet? interpreter._quiet = true end unless orig_without_side_effects = interpreter.without_side_effects? interpreter._without_side_effects = true end yield ensure unless orig_quiet interpreter._quiet = false # FIXME: Evaluation of an object-specifier doesn't refer to value # of a variable. Thus, no cross-reference record on a # sizeof-expression because cross-reference extraction # watches variable value reference not variable reference. # collect_object_specifiers(node).each { |os| os.accept(self) } end interpreter._without_side_effects = orig_without_side_effects end def create_array_value_of_string(str) ArrayValue.new(str.chars.map { |ch| scalar_value_of(ch.ord) } + [scalar_value_of("\0".ord)]) end module Impl # NOTE: Host class of this module must include InterpreterMediator, # NotifierMediator and Conversion. def eval_object_specifier(node) case when var = variable_named(node.identifier.value) var.declarations_and_definitions.each do |dcl_or_def| dcl_or_def.mark_as_referred_by(node.identifier) end _notify_object_referred(node, var) # NOTE: Array object will be converted into its start address by the # outer expression. So, it is correct to return an array # object itself. rslt_obj = var when fun = function_named(node.identifier.value) fun.declarations_and_definitions.each do |dcl_or_def| dcl_or_def.mark_as_referred_by(node.identifier) end _notify_object_referred(node, fun) rslt_obj = fun when enum = enumerator_named(node.identifier.value) enum.mark_as_referred_by(node.identifier) rslt_obj = create_tmpvar(enum.type, scalar_value_of(enum.value)) else fun = declare_implicit_function(node.identifier.value) _notify_implicit_function_declared(node, fun) _notify_object_referred(node, fun) rslt_obj = fun end notify_object_specifier_evaled(node, rslt_obj) rslt_obj end def eval_array_subscript_expr(node, obj, subs) unless obj.variable? and obj.type.array? || obj.type.pointer? return create_tmpvar end rslt_type = obj.type.unqualify.base_type case when obj.type.array? ary = obj # NOTE: An array-subscript-expression with an array object only # refers the array object, never refer the value of the array # object. when obj.type.pointer? ptr = obj if pointee = pointee_of(ptr) and pointee.type.array? ary = pointee end # NOTE: An array-subscript-expression with a pointer object do refers # the value of the pointer object. _notify_variable_value_referred(node, ptr) end unless subs.variable? and subs.value.scalar? && subs.value.exist? or subs.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar(rslt_type) end _notify_variable_value_referred(node, subs) # NOTE: An array subscript converted to `int' implicitly. unless subs.type.same_as?(int_t) if int_subs = do_conversion(subs, int_t) notify_implicit_conv_performed(node.array_subscript, subs, int_subs) subs = int_subs else return create_tmpvar(rslt_type) end end rslt_var = _pick_array_element(node, ary, subs, rslt_type) notify_array_subscript_expr_evaled(node, obj, subs, ary, rslt_var) rslt_var end def eval_function_call_expr(node, obj, args) if obj.function? fun = obj else return create_tmpvar unless obj.type.pointer? obj_base_type = obj.type.unqualify.base_type if obj_base_type.function? if pointee = pointee_of(obj) and pointee.function? fun = pointee else fun = define_anonymous_function(obj_base_type) end end end _notify_variable_value_referred(node, obj) # NOTE: The ISO C99 standard says; # # 6.5.2.2 Function calls # # Semantics # # 10 The order of evaluation of the function designator, the actual # arguments, and subexpressions within the actual arguments is # unspecified, but there is a sequence point before the actual call. unless args.empty? notify_sequence_point_reached(SequencePoint.new(node)) end rslt_var = nil break_event = BreakEvent.catch { rslt_var = fun.call(interpreter, node, args) } unless fun.builtin? arg_vars = args.map { |arg_obj, arg_expr| object_to_variable(arg_obj, arg_expr) } notify_function_call_expr_evaled(node, fun, arg_vars, rslt_var) end if break_event break_event.throw else rslt_var end end def eval_member_access_by_value_expr(node, obj) if obj.variable? && obj.type.composite? outer_var = obj else return create_tmpvar end memb_var = outer_var.inner_variable_named(node.identifier.value) # NOTE: A member-access-by-value-expression only refers the composite # object, never refer the value of the composite object. # NOTE: `memb_var' is nil when this expression represents the direct # member access extension. notify_member_access_expr_evaled(node, outer_var, memb_var) if memb_var _notify_object_referred(node, memb_var) memb_var else create_tmpvar end end def eval_member_access_by_pointer_expr(node, obj) obj_type = obj.type.unqualify if obj.variable? && obj_type.pointer? && obj_type.base_type.composite? ptr = obj else return create_tmpvar end if pointee = pointee_of(ptr) if pointee.type.array? if first_elem = pointee.inner_variable_at(0) pointee = first_elem else pointee = create_tmpvar(obj_type.base_type) end end end # NOTE: A member-access-by-pointer-expression do refers the value of # the pointer object. _notify_variable_value_referred(node, ptr) if pointee && pointee.type.composite? outer_var = pointee memb_var = outer_var.inner_variable_named(node.identifier.value) else if memb = obj_type.base_type.member_named(node.identifier.value) memb_var = create_tmpvar(memb.type) end end # NOTE: `memb_var' is nil when this expression represents the direct # member access extension. notify_member_access_expr_evaled(node, ptr, memb_var) if memb_var _notify_object_referred(node, memb_var) memb_var else create_tmpvar end end def eval_bit_access_by_value_expr(node, obj) if obj.variable? && obj.type.composite? outer_var = obj else return create_tmpvar end # TODO: Should support the GCC extension. create_tmpvar.tap do |rslt_var| notify_bit_access_expr_evaled(node, outer_var, rslt_var) end end def eval_bit_access_by_pointer_expr(node, obj) obj_type = obj.type.unqualify if obj.variable? && obj_type.pointer? && obj_type.base_type.composite? ptr = obj else return create_tmpvar end if pointee = pointee_of(ptr) if pointee.type.array? if first_elem = pointee.inner_variable_at(0) pointee = first_elem else pointee = create_tmpvar(obj_type.base_type) end end end # NOTE: A bit-access-by-pointer-expression do refers the value of the # pointer object. _notify_variable_value_referred(node, ptr) # TODO: Should support the GCC extension. create_tmpvar.tap do |rslt_var| notify_bit_access_expr_evaled(node, ptr, rslt_var) end end def eval_postfix_increment_expr(node, obj) var = object_to_variable(obj, node) if !var.type.scalar? && !var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end rslt_var = create_tmpvar(var.type, var.value.dup) # NOTE: Value of the variable is referred at this point. But value # reference should not be notified not to confuse sequence-point # warning detections. # _notify_variable_value_referred(node, var) if var.value.scalar? var.assign!(var.value + scalar_value_of(1), node, current_branch) _notify_variable_value_updated(node, var) end notify_postfix_increment_expr_evaled(node, var, rslt_var) rslt_var end def eval_postfix_decrement_expr(node, obj) var = object_to_variable(obj, node) if !var.type.scalar? && !var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end rslt_var = create_tmpvar(var.type, var.value.dup) # NOTE: Value of the variable is referred at this point. But value # reference should not be notified not to confuse sequence-point # warnings detections. # _notify_variable_value_referred(node, var) if var.value.scalar? var.assign!(var.value - scalar_value_of(1), node, current_branch) _notify_variable_value_updated(node, var) end notify_postfix_decrement_expr_evaled(node, var, rslt_var) rslt_var end def eval_prefix_increment_expr(node, obj) var = object_to_variable(obj, node) if !var.type.scalar? && !var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end orig_val = var.value.dup # NOTE: Value of the variable is referred at this point. But value # reference should not be notified not to confuse sequence-point # warnings detections. # _notify_variable_value_referred(node, var) if var.value.scalar? var.assign!(var.value + scalar_value_of(1), node, current_branch) _notify_variable_value_updated(node, var) end notify_prefix_increment_expr_evaled(node, var, orig_val) create_tmpvar(var.type, var.value) end def eval_prefix_decrement_expr(node, obj) var = object_to_variable(obj, node) if !var.type.scalar? && !var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end orig_val = var.value.dup # NOTE: Value of the variable is referred at this point. But value # reference should not be notified not to confuse sequence-point # warning detections. # _notify_variable_value_referred(node, var) if var.value.scalar? var.assign!(var.value - scalar_value_of(1), node, current_branch) _notify_variable_value_updated(node, var) end notify_prefix_decrement_expr_evaled(node, var, orig_val) create_tmpvar(var.type, var.value) end def eval_compound_literal_expr(node) # TODO: Should support C99 features. create_tmpvar(node.type_name.type).tap do |rslt_var| notify_compound_literal_expr_evaled(node, rslt_var) end end def eval_address_expr(node, obj) # NOTE: An address-expression does not read the value of the object. # But value reference should be notified to emphasize global # variable cross-references. _notify_variable_value_referred(node, obj) ptr = object_to_pointer(obj, node) notify_address_expr_evaled(node, obj, ptr) ptr end def eval_indirection_expr(node, obj) var = object_to_variable(obj, node) if var.type.pointer? ptr = var else return create_tmpvar end pointee = pointee_of(ptr) _notify_variable_value_referred(node, ptr) ptr_base_type = ptr.type.unqualify.base_type case when pointee _notify_object_referred(node, pointee) if pointee.type.array? if first_elem = pointee.inner_variable_at(0) pointee = first_elem else pointee = create_tmpvar(ptr_base_type) end end unless ptr_base_type.same_as?(pointee.type) pointee = do_conversion(pointee, ptr_base_type) || create_tmpvar(ptr_base_type) end when ptr_base_type.function? pointee = define_anonymous_function(ptr_base_type) else pointee = create_tmpvar(ptr_base_type) end notify_indirection_expr_evaled(node, ptr, pointee) pointee end def eval_unary_arithmetic_expr(node, obj) var = object_to_variable(obj, node) if !var.type.scalar? && !var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end case node.operator.type when "+" rslt_var = create_tmpvar(var.type, +var.value) when "-" rslt_var = create_tmpvar(var.type, -var.value) when "~" rslt_var = create_tmpvar(var.type, ~var.value) when "!" rslt_var = create_tmpvar(int_t, !var.value) else __NOTREACHED__ end _notify_variable_value_referred(node, var) notify_unary_arithmetic_expr_evaled(node, var, rslt_var) rslt_var end def eval_cast_expr(node, obj) resolve_unresolved_type(node.type_name) var = object_to_variable(obj, node) rslt_var = do_conversion(var, node.type_name.type) || create_tmpvar(node.type_name.type) notify_explicit_conv_performed(node, var, rslt_var) # NOTE: A cast-expression does not refer a source value essentially. # But, to avoid misunderstand that a return value of a function # is discarded when the return value is casted before assigning # to a variable. _notify_variable_value_referred(node, var) notify_cast_expr_evaled(node, var, rslt_var) rslt_var end def eval_multiplicative_expr(node, lhs_obj, rhs_obj) lhs_var = object_to_variable(lhs_obj, node.lhs_operand) if !lhs_var.type.scalar? && !lhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end rhs_var = object_to_variable(rhs_obj, node.rhs_operand) if !rhs_var.type.scalar? && !rhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end lhs_conved, rhs_conved = do_usual_arithmetic_conversion(lhs_var, rhs_var) unless lhs_conved == lhs_var notify_implicit_conv_performed(node.lhs_operand, lhs_var, lhs_conved) end unless rhs_conved == rhs_var notify_implicit_conv_performed(node.rhs_operand, rhs_var, rhs_conved) end lhs_val = lhs_conved.value rhs_val = rhs_conved.value case node.operator.type when "*" # NOTE: Domain of the arithmetic result value will be restricted by # min-max of the variable type. rslt_var = create_tmpvar(lhs_conved.type, lhs_val * rhs_val) when "/" # NOTE: Domain of the arithmetic result value will be restricted by # min-max of the variable type. # NOTE: "Div by 0" semantics is implemented in value-value # arithmetic. rslt_var = create_tmpvar(lhs_conved.type, lhs_val / rhs_val) when "%" # NOTE: Domain of the arithmetic result value will be restricted by # min-max of the variable type. # NOTE: "Div by 0" semantics is implemented in value-value # arithmetic. rslt_var = create_tmpvar(lhs_conved.type, lhs_val % rhs_val) else __NOTREACHED__ end _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_multiplicative_expr_evaled(node, lhs_var, rhs_var, rslt_var) rslt_var end def eval_additive_expr(node, lhs_obj, rhs_obj) lhs_var = object_to_variable(lhs_obj, node.lhs_operand) if !lhs_var.type.scalar? && !lhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end rhs_var = object_to_variable(rhs_obj, node.rhs_operand) if !rhs_var.type.scalar? && !rhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end lhs_conved, rhs_conved = do_usual_arithmetic_conversion(lhs_var, rhs_var) unless lhs_conved == lhs_var notify_implicit_conv_performed(node.lhs_operand, lhs_var, lhs_conved) end unless rhs_conved == rhs_var notify_implicit_conv_performed(node.rhs_operand, rhs_var, rhs_conved) end lhs_val = lhs_conved.value rhs_val = rhs_conved.value case node.operator.type when "+" # NOTE: Domain of the arithmetic result value will be restricted by # min-max of the variable type. rslt_var = create_tmpvar(lhs_conved.type, lhs_val + rhs_val) when "-" # NOTE: Domain of the arithmetic result value will be restricted by # min-max of the variable type. rslt_var = create_tmpvar(lhs_conved.type, lhs_val - rhs_val) else __NOTREACHED__ end _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_additive_expr_evaled(node, lhs_var, rhs_var, rslt_var) rslt_var end def eval_shift_expr(node, lhs_obj, rhs_obj) lhs_var = object_to_variable(lhs_obj, node.lhs_operand) if !lhs_var.type.scalar? && !lhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end rhs_var = object_to_variable(rhs_obj, node.rhs_operand) if !rhs_var.type.scalar? && !rhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end # NOTE: The ISO C99 standard says; # # 6.5.7 Bitwise shift operators # # 3 The integer promotions are performed on each of the operands. The # type of the result is that of the promoted left operand. If the # value of the right operand is negative or is greater than or equal # to the width of the promoted left operand, the behavior is # undefined. lhs_conved = do_integer_promotion(lhs_var) rhs_conved = do_integer_promotion(rhs_var) unless lhs_conved == lhs_var notify_implicit_conv_performed(node.lhs_operand, lhs_var, lhs_conved) end unless rhs_conved == rhs_var notify_implicit_conv_performed(node.rhs_operand, rhs_var, rhs_conved) end lhs_val = lhs_conved.value rhs_val = rhs_conved.value case node.operator.type when "<<" # NOTE: Domain of the arithmetic result value will be restricted by # min-max of the variable type. rslt_var = create_tmpvar(lhs_conved.type, lhs_val << rhs_val) when ">>" # NOTE: Domain of the arithmetic result value will be restricted by # min-max of the variable type. rslt_var = create_tmpvar(lhs_conved.type, lhs_val >> rhs_val) else __NOTREACHED__ end _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_shift_expr_evaled(node, lhs_var, rhs_var, rslt_var) rslt_var end def eval_relational_expr(node, lhs_obj, rhs_obj) lhs_var = object_to_variable(lhs_obj, node.lhs_operand) if !lhs_var.type.scalar? && !lhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar(int_t, scalar_value_of_arbitrary) end rhs_var = object_to_variable(rhs_obj, node.rhs_operand) if !rhs_var.type.scalar? && !rhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar(int_t, scalar_value_of_arbitrary) end lhs_conved, rhs_conved = do_usual_arithmetic_conversion(lhs_var, rhs_var) unless lhs_conved == lhs_var notify_implicit_conv_performed(node.lhs_operand, lhs_var, lhs_conved) end unless rhs_conved == rhs_var notify_implicit_conv_performed(node.rhs_operand, rhs_var, rhs_conved) end lhs_val = lhs_conved.value rhs_val = rhs_conved.value case node.operator.type when "<" rslt_var = create_tmpvar(int_t, lhs_val < rhs_val) when ">" rslt_var = create_tmpvar(int_t, lhs_val > rhs_val) when "<=" rslt_var = create_tmpvar(int_t, lhs_val <= rhs_val) when ">=" rslt_var = create_tmpvar(int_t, lhs_val >= rhs_val) else __NOTREACHED__ end _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_relational_expr_evaled(node, lhs_var, rhs_var, rslt_var) rslt_var end def eval_equality_expr(node, lhs_obj, rhs_obj) lhs_var = object_to_variable(lhs_obj, node.lhs_operand) if !lhs_var.type.scalar? && !lhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar(int_t, scalar_value_of_arbitrary) end rhs_var = object_to_variable(rhs_obj, node.rhs_operand) if !rhs_var.type.scalar? && !rhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar(int_t, scalar_value_of_arbitrary) end lhs_conved, rhs_conved = do_usual_arithmetic_conversion(lhs_var, rhs_var) unless lhs_conved == lhs_var notify_implicit_conv_performed(node.lhs_operand, lhs_var, lhs_conved) end unless rhs_conved == rhs_var notify_implicit_conv_performed(node.rhs_operand, rhs_var, rhs_conved) end lhs_val = lhs_conved.value rhs_val = rhs_conved.value case node.operator.type when "==" rslt_var = create_tmpvar(int_t, lhs_val == rhs_val) when "!=" rslt_var = create_tmpvar(int_t, lhs_val != rhs_val) else __NOTREACHED__ end _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_equality_expr_evaled(node, lhs_var, rhs_var, rslt_var) rslt_var end def eval_and_expr(node, lhs_obj, rhs_obj) lhs_var = object_to_variable(lhs_obj, node.lhs_operand) if !lhs_var.type.scalar? && !lhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end rhs_var = object_to_variable(rhs_obj, node.rhs_operand) if !rhs_var.type.scalar? && !rhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end lhs_conved, rhs_conved = do_usual_arithmetic_conversion(lhs_var, rhs_var) unless lhs_conved == lhs_var notify_implicit_conv_performed(node.lhs_operand, lhs_var, lhs_conved) end unless rhs_conved == rhs_var notify_implicit_conv_performed(node.rhs_operand, rhs_var, rhs_conved) end lhs_val = lhs_conved.value rhs_val = rhs_conved.value # NOTE: Domain of the arithmetic result value will be restricted by # min-max of the variable type. rslt_var = create_tmpvar(lhs_conved.type, lhs_val & rhs_val) _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_and_expr_evaled(node, lhs_var, rhs_var, rslt_var) rslt_var end def eval_exclusive_or_expr(node, lhs_obj, rhs_obj) lhs_var = object_to_variable(lhs_obj, node.lhs_operand) if !lhs_var.type.scalar? && !lhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end rhs_var = object_to_variable(rhs_obj, node.rhs_operand) if !rhs_var.type.scalar? && !rhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end lhs_conved, rhs_conved = do_usual_arithmetic_conversion(lhs_var, rhs_var) unless lhs_conved == lhs_var notify_implicit_conv_performed(node.lhs_operand, lhs_var, lhs_conved) end unless rhs_conved == rhs_var notify_implicit_conv_performed(node.rhs_operand, rhs_var, rhs_conved) end lhs_val = lhs_conved.value rhs_val = rhs_conved.value # NOTE: Domain of the arithmetic result value will be restricted by # min-max of the variable type. rslt_var = create_tmpvar(lhs_conved.type, lhs_val ^ rhs_val) _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_exclusive_or_expr_evaled(node, lhs_var, rhs_var, rslt_var) rslt_var end def eval_inclusive_or_expr(node, lhs_obj, rhs_obj) lhs_var = object_to_variable(lhs_obj, node.lhs_operand) if !lhs_var.type.scalar? && !lhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end rhs_var = object_to_variable(rhs_obj, node.rhs_operand) if !rhs_var.type.scalar? && !rhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return create_tmpvar end lhs_conved, rhs_conved = do_usual_arithmetic_conversion(lhs_var, rhs_var) unless lhs_conved == lhs_var notify_implicit_conv_performed(node.lhs_operand, lhs_var, lhs_conved) end unless rhs_conved == rhs_var notify_implicit_conv_performed(node.rhs_operand, rhs_var, rhs_conved) end lhs_val = lhs_conved.value rhs_val = rhs_conved.value # NOTE: Domain of the arithmetic result value will be restricted by # min-max of the variable type. rslt_var = create_tmpvar(lhs_conved.type, lhs_val | rhs_val) _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_inclusive_or_expr_evaled(node, lhs_var, rhs_var, rslt_var) rslt_var end def eval_simple_assignment_expr(node, lhs_obj, rhs_obj) lhs_var = object_to_variable(lhs_obj, node.lhs_operand) rhs_var = object_to_variable(rhs_obj, node.rhs_operand) if rhs_var.type.same_as?(lhs_var.type) rhs_conved = rhs_var else rhs_conved = do_conversion(rhs_var, lhs_var.type) || create_tmpvar(lhs_var.type) notify_implicit_conv_performed(node.rhs_operand, rhs_var, rhs_conved) end # NOTE: Domain of the arithmetic result value will be restricted by # min-max of the variable type. # NOTE: Even if rhs_obj is a NamedVariable, new value will be # instantiated in value-coercing. # So, value-aliasing never occurs. defined_val = rhs_conved.value.to_defined_value lhs_var.assign!(defined_val, node, current_branch) _notify_variable_value_referred(node, rhs_var) _notify_variable_value_updated(node, lhs_var) notify_assignment_expr_evaled(node, lhs_var, rhs_var) lhs_var end def eval_compound_assignment_expr(node, lhs_obj, rhs_obj) lhs_var = object_to_variable(lhs_obj, node.lhs_operand) if !lhs_var.type.scalar? && !lhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return lhs_obj end rhs_var = object_to_variable(rhs_obj, node.rhs_operand) if !rhs_var.type.scalar? && !rhs_var.type.void? # NOTE: To detect bad value reference of `void' expressions. return lhs_var end case node.operator.type when "*=" _do_mul_then_assign(node, lhs_var, rhs_var) when "/=" _do_div_then_assign(node, lhs_var, rhs_var) when "%=" _do_mod_then_assign(node, lhs_var, rhs_var) when "+=" _do_add_then_assign(node, lhs_var, rhs_var) when "-=" _do_sub_then_assign(node, lhs_var, rhs_var) when "<<=" _do_shl_then_assign(node, lhs_var, rhs_var) when ">>=" _do_shr_then_assign(node, lhs_var, rhs_var) when "&=" _do_and_then_assign(node, lhs_var, rhs_var) when "^=" _do_xor_then_assign(node, lhs_var, rhs_var) when "|=" _do_ior_then_assign(node, lhs_var, rhs_var) end lhs_var end private def _do_mul_then_assign(node, lhs_var, rhs_var) lhs_conved, rhs_conved = _do_uarith_conversion(node, lhs_var, rhs_var) lhs_val = lhs_conved.value rhs_val = rhs_conved.value rslt_var = create_tmpvar(lhs_conved.type, lhs_val * rhs_val) # NOTE: Value of the lhs_var is referred at this point. But value # reference should not be notified not to confuse sequence-point # warning detections. # _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_multiplicative_expr_evaled(node, lhs_var, rhs_var, rslt_var) _do_assign(node, lhs_var, rslt_var) end def _do_div_then_assign(node, lhs_var, rhs_var) lhs_conved, rhs_conved = _do_uarith_conversion(node, lhs_var, rhs_var) lhs_val = lhs_conved.value rhs_val = rhs_conved.value # NOTE: "Div by 0" semantics is implemented in value-value arithmetic. rslt_var = create_tmpvar(lhs_conved.type, lhs_val / rhs_val) # NOTE: Value of the lhs_var is referred at this point. But value # reference should not be notified not to confuse sequence-point # warning detections. # _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_multiplicative_expr_evaled(node, lhs_var, rhs_var, rslt_var) _do_assign(node, lhs_var, rslt_var) end def _do_mod_then_assign(node, lhs_var, rhs_var) lhs_conved, rhs_conved = _do_uarith_conversion(node, lhs_var, rhs_var) lhs_val = lhs_conved.value rhs_val = rhs_conved.value # NOTE: "Div by 0" semantics is implemented in value-value arithmetic. rslt_var = create_tmpvar(lhs_conved.type, lhs_val % rhs_val) # NOTE: Value of the lhs_var is referred at this point. But value # reference should not be notified not to confuse sequence-point # warning detections. # _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_multiplicative_expr_evaled(node, lhs_var, rhs_var, rslt_var) _do_assign(node, lhs_var, rslt_var) end def _do_add_then_assign(node, lhs_var, rhs_var) lhs_conved, rhs_conved = _do_uarith_conversion(node, lhs_var, rhs_var) lhs_val = lhs_conved.value rhs_val = rhs_conved.value rslt_var = create_tmpvar(lhs_conved.type, lhs_val + rhs_val) # NOTE: Value of the lhs_var is referred at this point. But value # reference should not be notified not to confuse sequence-point # warning detections. # _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_additive_expr_evaled(node, lhs_var, rhs_var, rslt_var) _do_assign(node, lhs_var, rslt_var) end def _do_sub_then_assign(node, lhs_var, rhs_var) lhs_conved, rhs_conved = _do_uarith_conversion(node, lhs_var, rhs_var) lhs_val = lhs_conved.value rhs_val = rhs_conved.value rslt_var = create_tmpvar(lhs_conved.type, lhs_val - rhs_val) # NOTE: Value of the lhs_var is referred at this point. But value # reference should not be notified not to confuse sequence-point # warning detections. # _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_additive_expr_evaled(node, lhs_var, rhs_var, rslt_var) _do_assign(node, lhs_var, rslt_var) end def _do_shl_then_assign(node, lhs_var, rhs_var) # NOTE: The ISO C99 standard says; # # 6.5.7 Bitwise shift operators # # 3 The integer promotions are performed on each of the operands. The # type of the result is that of the promoted left operand. If the # value of the right operand is negative or is greater than or equal # to the width of the promoted left operand, the behavior is # undefined. lhs_conved, rhs_conved = _do_integer_promotions(node, lhs_var, rhs_var) lhs_val = lhs_conved.value rhs_val = rhs_conved.value rslt_var = create_tmpvar(lhs_conved.type, lhs_val << rhs_val) # NOTE: Value of the lhs_var is referred at this point. But value # reference should not be notified not to confuse sequence-point # warning detections. # _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_shift_expr_evaled(node, lhs_var, rhs_var, rslt_var) _do_assign(node, lhs_var, rslt_var) end def _do_shr_then_assign(node, lhs_var, rhs_var) # NOTE: The ISO C99 standard says; # # 6.5.7 Bitwise shift operators # # 3 The integer promotions are performed on each of the operands. The # type of the result is that of the promoted left operand. If the # value of the right operand is negative or is greater than or equal # to the width of the promoted left operand, the behavior is # undefined. lhs_conved, rhs_conved = _do_integer_promotions(node, lhs_var, rhs_var) lhs_val = lhs_conved.value rhs_val = rhs_conved.value rslt_var = create_tmpvar(lhs_conved.type, lhs_val >> rhs_val) # NOTE: Value of the lhs_var is referred at this point. But value # reference should not be notified not to confuse sequence-point # warning detections. # _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_shift_expr_evaled(node, lhs_var, rhs_var, rslt_var) _do_assign(node, lhs_var, rslt_var) end def _do_and_then_assign(node, lhs_var, rhs_var) lhs_conved, rhs_conved = _do_uarith_conversion(node, lhs_var, rhs_var) lhs_val = lhs_conved.value rhs_val = rhs_conved.value rslt_var = create_tmpvar(lhs_conved.type, lhs_val & rhs_val) # NOTE: Value of the lhs_var is referred at this point. But value # reference should not be notified not to confuse sequence-point # warning detections. # _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_and_expr_evaled(node, lhs_var, rhs_var, rslt_var) _do_assign(node, lhs_var, rslt_var) end def _do_xor_then_assign(node, lhs_var, rhs_var) lhs_conved, rhs_conved = _do_uarith_conversion(node, lhs_var, rhs_var) lhs_val = lhs_conved.value rhs_val = rhs_conved.value rslt_var = create_tmpvar(lhs_conved.type, lhs_val ^ rhs_val) # NOTE: Value of the lhs_var is referred at this point. But value # reference should not be notified not to confuse sequence-point # warning detections. # _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_exclusive_or_expr_evaled(node, lhs_var, rhs_var, rslt_var) _do_assign(node, lhs_var, rslt_var) end def _do_ior_then_assign(node, lhs_var, rhs_var) lhs_conved, rhs_conved = _do_uarith_conversion(node, lhs_var, rhs_var) lhs_val = lhs_conved.value rhs_val = rhs_conved.value rslt_var = create_tmpvar(lhs_conved.type, lhs_val | rhs_val) # NOTE: Value of the lhs_var is referred at this point. But value # reference should not be notified not to confuse sequence-point # warning detections. # _notify_variable_value_referred(node, lhs_var) _notify_variable_value_referred(node, rhs_var) notify_inclusive_or_expr_evaled(node, lhs_var, rhs_var, rslt_var) _do_assign(node, lhs_var, rslt_var) end def _do_uarith_conversion(node, lhs_var, rhs_var) lhs_conved, rhs_conved = do_usual_arithmetic_conversion(lhs_var, rhs_var) unless lhs_conved == lhs_var notify_implicit_conv_performed(node.lhs_operand, lhs_var, lhs_conved) end unless rhs_conved == rhs_var notify_implicit_conv_performed(node.rhs_operand, rhs_var, rhs_conved) end return lhs_conved, rhs_conved end def _do_integer_promotions(node, lhs_var, rhs_var) lhs_conved = do_integer_promotion(lhs_var) unless lhs_conved == lhs_var notify_implicit_conv_performed(node.lhs_operand, lhs_var, lhs_conved) end rhs_conved = do_integer_promotion(rhs_var) unless rhs_conved == rhs_var notify_implicit_conv_performed(node.rhs_operand, rhs_var, rhs_conved) end return lhs_conved, rhs_conved end def _do_assign(node, lhs_var, rhs_var) if rhs_var.type.same_as?(lhs_var.type) rhs_conved = rhs_var else rhs_conved = do_conversion(rhs_var, lhs_var.type) || create_tmpvar(lhs_var.type) notify_implicit_conv_performed(node.lhs_operand, rhs_var, rhs_conved) end # NOTE: Domain of the arithmetic result value will be restricted by # min-max of the variable type. defined_val = rhs_conved.value.to_defined_value lhs_var.assign!(defined_val, node, current_branch) _notify_variable_value_updated(node, lhs_var) notify_assignment_expr_evaled(node, lhs_var, rhs_conved) end def _pick_array_element(expr, ary, subs, rslt_type) if ary if subs.value.definite? inner_var = ary.inner_variable_at(subs.value.unique_sample) if inner_var && inner_var.type.same_as?(rslt_type) _notify_object_referred(expr, inner_var) return inner_var end else # NOTE: To improve heuristics of array subscript evaluation with an # indefinite subscript. inner_var = ary.representative_element _notify_object_referred(expr, inner_var) return inner_var end end create_tmpvar(rslt_type) end def _notify_object_referred(node, obj) case obj when Variable interpreter.notify_variable_referred(node, obj) when Function interpreter.notify_function_referred(node, obj) end end def _notify_variable_value_referred(node, obj) if obj.variable? interpreter.notify_variable_value_referred(node, obj) end # NOTE: When a value of the inner-variable of array or composite object # is referred, notification of the outer variable's value has # already been done in sub expressions. end def _notify_variable_value_updated(node, obj) if obj.variable? interpreter.notify_variable_value_updated(node, obj) if obj.inner? # NOTE: When a value of the inner-variable of array or composite # object is updated, the outer variable's value should also # be notified to be updated. _notify_variable_value_updated(node, obj.owner) end end end def _notify_implicit_function_declared(node, obj) if obj.function? && obj.implicit? interpreter.notify_implicit_function_declared(node, obj) end end end include Impl end end end adlint-3.2.14/lib/adlint/cc1/syntax.rb0000644000004100000410000041307512340630463017461 0ustar www-datawww-data# AST of C language. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/symbol" require "adlint/location" require "adlint/exam" require "adlint/util" require "adlint/cc1/seqp" require "adlint/cc1/operator" module AdLint #:nodoc: module Cc1 #:nodoc: # == DESCRIPTION # === SyntaxNode class hierarchy # SyntaxNode # <-- Expression # <-- ErrorExpression # <-- PrimaryExpression # <-- ObjectSpecifier # <-- ConstantSpecifier # <-- StringLiteralSpecifier # <-- NullConstantSpecifier # <-- GroupedExpression # <-- PostfixExpression # <-- ArraySubscriptExpression # <-- FunctionCallExpression # <-- MemberAccessByValueExpression # <-- MemberAccessByPointerExpression # <-- BitAccessByValueExpression # <-- BitAccessByPointerExpression # <-- PostfixIncrementExpression # <-- PostfixDecrementExpression # <-- CompoundLiteralExpression # <-- UnaryExpression # <-- PrefixIncrementExpression # <-- PrefixDecrementExpression # <-- AddressExpression # <-- IndirectionExpression # <-- UnaryArithmeticExpression # <-- SizeofExpression # <-- SizeofTypeExpression # <-- AlignofExpression # <-- AlignofTypeExpression # <-- CastExpression # <-- BinaryExpression # <-- MultiplicativeExpression # <-- AdditiveExpression # <-- ShiftExpression # <-- RelationalExpression # <-- EqualityExpression # <-- AndExpression # <-- ExclusiveOrExpression # <-- InclusiveOrExpression # <-- LogicalAndExpression # <-- LogicalOrExpression # <-- ConditionalExpression # <-- SimpleAssignmentExpression # <-- CompoundAssignmentExpression # <-- CommaSeparatedExpression # <-- Declaration # <-- FunctionDeclaration -------------------- SymbolicElement <> # <-- VariableDeclaration ----------------------+ | | | | # <-- Definition | | | | # <-- VariableDefinition --------------------+ | | | # <-- PseudoVariableDefinition | | | # <-- FunctionDefinition -----------------------+ | | # <-- KandRFunctionDefinition | | # <-- AnsiFunctionDefinition | | # <-- ParameterDefinition | | # <-- TypeDeclaration -----------------------------------+ | # <-- TypedefDeclaration | # <-- StructTypeDeclaration | # <-- PseudoStructTypeDeclaration | # <-- UnionTypeDeclaration | # <-- PseudoUnionTypeDeclaration | # <-- EnumTypeDeclaration | # <-- PseudoEnumTypeDeclaration | # <-- DeclarationSpecifiers | # <-- InitDeclarator | # <-- TypeSpecifier | # <-- StandardTypeSpecifier | # <-- TypedefTypeSpecifier | # <-- StructSpecifier | # <-- UnionSpecifier | # <-- TypeofTypeSpecifier | # <-- StructDeclaration | # <-- MemberDeclaration | # <-- SpecifierQualifierList | # <-- StructDeclarator | # <-- EnumSpecifier | # <-- Enumerator -------------------------------------------+ # <-- Declarator # <-- IdentifierDeclarator # <-- GroupedDeclarator # <-- ArrayDeclarator # <-- FunctionDeclarator # <-- AnsiFunctionDeclarator # <-- KandRFunctionDeclarator # <-- AbbreviatedFunctionDeclarator # <-- AbstractDeclarator # <-- PointerAbstractDeclarator # <-- GroupedAbstractDeclarator # <-- ArrayAbstractDeclarator # <-- FunctionAbstractDeclarator # <-- ParameterTypeList # <-- ParameterDeclaration # <-- Statement # <-- ErrorStatement # <-- LabeledStatement # <-- GenericLabeledStatement # <-- CaseLabeledStatement # <-- DefaultLabeledStatement # <-- CompoundStatement # <-- ExpressionStatement # <-- SelectionStatement # <-- IfStatement # <-- IfElseStatement # <-- SwitchStatement # <-- IterationStatement # <-- WhileStatement # <-- DoStatement # <-- ForStatement # <-- C99ForStatement # <-- JumpStatement # <-- GotoStatement # <-- ContinueStatement # <-- BreakStatement # <-- ReturnStatement # <-- TranslationUnit # <-- TypeName # <-- Initializer class SyntaxNode include Visitable include LocationHolder def initialize @head_token = nil @tail_token = nil @subsequent_sequence_point = nil end attr_accessor :head_token attr_accessor :tail_token attr_reader :subsequent_sequence_point def location subclass_responsibility end def head_location @head_token ? @head_token.location : nil end def tail_location @tail_token ? @tail_token.location : nil end def inspect(indent = 0) subclass_responsibility end def short_class_name self.class.name.sub(/\A.*::/, "") end protected # === DESCRIPTION # Append a subsequent sequence-point of this node. def append_sequence_point! @subsequent_sequence_point = SequencePoint.new(self) end # === DESCRIPTION # Delete a subsequent sequence-point of this node. def delete_sequence_point! @subsequent_sequence_point = nil end end module SyntaxNodeCollector def collect_object_specifiers(node) if node ObjectSpecifierCollector.new.tap { |col| node.accept(col) }.object_specifiers else [] end end module_function :collect_object_specifiers def collect_identifier_declarators(node) if node IdentifierDeclaratorCollector.new.tap { |col| node.accept(col) }.identifier_declarators else [] end end module_function :collect_identifier_declarators def collect_typedef_type_specifiers(node) if node TypedefTypeSpecifierCollector.new.tap { |col| node.accept(col) }.typedef_type_specifiers else [] end end module_function :collect_typedef_type_specifiers def collect_function_declarators(node) if node FunctionDeclaratorCollector.new.tap { |col| node.accept(col) }.function_declarators else [] end end module_function :collect_function_declarators def collect_simple_assignment_expressions(node) if node SimpleAssignmentExpressionCollector.new.tap { |col| node.accept(col) }.simple_assignment_expressions else [] end end module_function :collect_simple_assignment_expressions def collect_compound_assignment_expressions(node) if node CompoundAssignmentExpressionCollector.new.tap { |col| node.accept(col) }.compound_assignment_expressions else [] end end module_function :collect_compound_assignment_expressions def collect_prefix_increment_expressions(node) if node PrefixIncrementExpressionCollector.new.tap { |col| node.accept(col) }.prefix_increment_expressions else [] end end module_function :collect_prefix_increment_expressions def collect_prefix_decrement_expressions(node) if node PrefixDecrementExpressionCollector.new.tap { |col| node.accept(col) }.prefix_decrement_expressions else [] end end module_function :collect_prefix_decrement_expressions def collect_postfix_increment_expressions(node) if node PostfixIncrementExpressionCollector.new.tap { |col| node.accept(col) }.postfix_increment_expressions else [] end end module_function :collect_postfix_increment_expressions def collect_postfix_decrement_expressions(node) if node PostfixDecrementExpressionCollector.new.tap { |col| node.accept(col) }.postfix_decrement_expressions else [] end end module_function :collect_postfix_decrement_expressions def collect_additive_expressions(node) if node AdditiveExpressionCollector.new.tap { |col| node.accept(col) }.additive_expressions else [] end end module_function :collect_additive_expressions def collect_relational_expressions(node) if node RelationalExpressionCollector.new.tap { |col| node.accept(col) }.relational_expressions else [] end end module_function :collect_relational_expressions def collect_equality_expressions(node) if node EqualityExpressionCollector.new.tap { |col| node.accept(col) }.equality_expressions else [] end end module_function :collect_equality_expressions def collect_logical_and_expressions(node) if node LogicalAndExpressionCollector.new.tap { |col| node.accept(col) }.logical_and_expressions else [] end end module_function :collect_logical_and_expressions def collect_logical_or_expressions(node) if node LogicalOrExpressionCollector.new.tap { |col| node.accept(col) }.logical_or_expressions else [] end end module_function :collect_logical_or_expressions def collect_generic_labeled_statements(node) if node GenericLabeledStatementCollector.new.tap { |col| node.accept(col) }.generic_labeled_statements else [] end end module_function :collect_generic_labeled_statements def collect_if_statements(node) if node IfStatementCollector.new.tap { |col| node.accept(col) }.if_statements else [] end end module_function :collect_if_statements def collect_if_else_statements(node) if node IfElseStatementCollector.new.tap { |col| node.accept(col) }.if_else_statements else [] end end module_function :collect_if_else_statements def collect_goto_statements(node) if node GotoStatementCollector.new.tap { |col| node.accept(col) }.goto_statements else [] end end module_function :collect_goto_statements def collect_array_declarators(node) if node ArrayDeclaratorCollector.new.tap { |col| node.accept(col) }.array_declarators else [] end end module_function :collect_array_declarators def collect_constant_specifiers(node) if node ConstantSpecifierCollector.new.tap { |col| node.accept(col) }.constant_specifiers else [] end end module_function :collect_constant_specifiers end module InterpSyntaxBridge # NOTE: InterpreterMediator includes this module to bridge constant # designator collector to this layer. def _interp_syntax_bridge_ { enumerator_designators: method(:enumerator_designators), function_designators: method(:function_designators), variable_designators: method(:variable_designators) } end end class Expression < SyntaxNode def initialize super @full = false end def full=(expr_is_full) @full = expr_is_full # NOTE: The ISO C99 standard says; # # Annex C (informative) Sequence points # # 1 The following are the sequence points described in 5.1.2.3: # # -- The end of a full expression: an initializer (6.7.8); the # expression in an expression statement (6.8.3); the controlling # expression of a while or do statement (6.8.5); each of the # expressions of a for statement (6.8.5.3); the expression in a # return statement (6.8.6.4). if expr_is_full append_sequence_point! else delete_sequence_point! end end def have_side_effect? subclass_responsibility end def constant?(interp_bridge) ExpressionConstancy.new(interp_bridge).check(self) end def logical? subclass_responsibility end def arithmetic? subclass_responsibility end def bitwise? subclass_responsibility end def object_specifiers ObjectSpecifierCollector.new.tap { |col| self.accept(col) }.object_specifiers end def to_normalized_logical(parent_expr = nil) subclass_responsibility end def to_complemental_logical # NOTE: This method must be invoked on a normalized expression. subclass_responsibility end def to_s subclass_responsibility end private def create_normalized_logical_of(expr) EqualityExpression.new(Token.new("!=", "!=", expr.location), GroupedExpression.new(expr), ConstantSpecifier.of_zero(expr.location)) end end class ErrorExpression < Expression def initialize(err_tok) super() @error_token = err_tok end def location head_location end def have_side_effect? true end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) self end def to_complemental_logical self end def to_s @error_token.value end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + "#{@error_token.value}" end end class PrimaryExpression < Expression; end class ObjectSpecifier < PrimaryExpression def initialize(id) super() @identifier = id end attr_reader :identifier def location @identifier.location end def have_side_effect? false end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s @identifier.value end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + "#{@identifier.value}" end end class ConstantSpecifier < PrimaryExpression def self.of_zero(loc = nil) self.new(Token.new(:CONSTANT, "0", loc || Location.new)) end def initialize(const) super() @constant = const end attr_reader :constant def location @constant.location end def prefix @constant.value.scan(/\A(?:0x|0b|0(?=[0-9])|L)/i).first end def suffix @constant.value.scan(/(?:[UL]+|[FL]+)\z/i).first end def character? @constant.value =~ /'.*'/ end def have_side_effect? false end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s @constant.value end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + "#{@constant.value}" end end class StringLiteralSpecifier < PrimaryExpression def initialize(lit) super() @literal = lit end attr_reader :literal def location @literal.location end def prefix @literal.value.scan(/\AL/i).first end def have_side_effect? false end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s @literal.value end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + "#{@literal.value}" end end class NullConstantSpecifier < PrimaryExpression def initialize(tok) super() @token = tok end attr_reader :token def location @token.location end def have_side_effect? false end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s @token.value end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + "#{@token.value}" end end class GroupedExpression < PrimaryExpression def initialize(expr) super() @expression = expr self.head_token = expr.head_token self.tail_token = expr.tail_token end attr_reader :expression def location head_location end def have_side_effect? @expression.have_side_effect? end def logical? @expression.logical? end def arithmetic? @expression.arithmetic? end def bitwise? @expression.bitwise? end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression GroupedExpression.new(@expression.to_normalized_logical(parent_expr)) else self end end def to_complemental_logical GroupedExpression.new(@expression.to_complemental_logical) end def to_s "(#{expression.to_s})" end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect})\n" + @expression.inspect(indent + 1) end end class PostfixExpression < Expression def initialize(op) @operator = op end attr_reader :operator def location @operator.location end end class ArraySubscriptExpression < PostfixExpression def initialize(expr, ary_subs, left_bracket) super(left_bracket) @expression = expr @array_subscript = ary_subs end attr_reader :expression attr_reader :array_subscript def have_side_effect? @expression.have_side_effect? || @array_subscript.have_side_effect? end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s "#{@expression.to_s}[#{@array_subscript.to_s}]" end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect})\n" + @expression.inspect(indent + 1) + "\n" + @array_subscript.inspect(indent + 1) end end class FunctionCallExpression < PostfixExpression def initialize(expr, arg_exprs, left_paren) super(left_paren) @expression = expr @argument_expressions = arg_exprs end attr_reader :expression attr_reader :argument_expressions def have_side_effect? true end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s "#{@expression.to_s}(" + @argument_expressions.map { |expr| expr.to_s }.join(",") + ")" end def inspect(indent = 0) ([" " * indent + "#{short_class_name} (#{location.inspect})"] + [@expression.inspect(indent + 1)] + @argument_expressions.map { |a| a.inspect(indent + 1) }).join("\n") end end class MemberAccessByValueExpression < PostfixExpression def initialize(expr, id, dot) super(dot) @expression = expr @identifier = id end attr_reader :expression attr_reader :identifier def have_side_effect? @expression.have_side_effect? end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s "#{@expression.to_s}.#{@identifier.value}" end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + "#{@expression.inspect}.#{@identifier.value}" end end class MemberAccessByPointerExpression < PostfixExpression def initialize(expr, id, arrow) super(arrow) @expression = expr @identifier = id end attr_reader :expression attr_reader :identifier def have_side_effect? @expression.have_side_effect? end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s "#{@expression.to_s}->#{@identifier.value}" end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + "#{@expression.inspect}->#{@identifier.value}" end end class BitAccessByValueExpression < PostfixExpression def initialize(expr, const, dot) super(dot) @expression = expr @constant = const end attr_reader :expression attr_reader :constant def have_side_effect? @expression.have_side_effect? end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s "#{@expression.to_s}.#{@constant.value}" end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + "#{@expression.inspect}.#{@constant.value}" end end class BitAccessByPointerExpression < PostfixExpression def initialize(expr, const, arrow) super(arrow) @expression = expr @constant = const end attr_reader :expression attr_reader :constant def have_side_effect? @expression.have_side_effect? end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s "#{@expression.to_s}->#{@constant.value}" end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + "#{@expression.inspect}->#{@constant.value}" end end class PostfixIncrementExpression < PostfixExpression def initialize(op, ope) super(op) @operand = ope end attr_reader :operand def have_side_effect? true end def logical? false end def arithmetic? true end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s "#{@operand.to_s}++" end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + @operand.inspect end end class PostfixDecrementExpression < PostfixExpression def initialize(op, ope) super(op) @operand = ope end attr_reader :operand def have_side_effect? true end def logical? false end def arithmetic? true end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s "#{@operand.to_s}--" end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + @operand.inspect end end class CompoundLiteralExpression < PostfixExpression def initialize(type_name, inits, left_paren) super(left_paren) @type_name = type_name @initializers = inits end attr_reader :type_name attr_reader :initializers def have_side_effect? false end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s "(#{@type_name.to_s}){" + @initializers.map { |ini| ini.to_s }.join(",") + "}" end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + @initializers.map { |init| init.inspect }.join(",") end end class UnaryExpression < Expression def initialize(op, ope) super() @operator = op @operand = ope end attr_reader :operator attr_reader :operand def location @operator.location end def to_s @operator.value + @operand.to_s end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + "#{@operator.value} #{@operand.inspect}" end end class PrefixIncrementExpression < UnaryExpression def have_side_effect? true end def logical? false end def arithmetic? true end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end end class PrefixDecrementExpression < UnaryExpression def have_side_effect? true end def logical? false end def arithmetic? true end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end end class AddressExpression < UnaryExpression def have_side_effect? operand.have_side_effect? end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end end class IndirectionExpression < UnaryExpression def have_side_effect? operand.have_side_effect? end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end end class UnaryArithmeticExpression < UnaryExpression def have_side_effect? operand.have_side_effect? end def logical? operator.type == "!" end def arithmetic? false end def bitwise? operator.type == "~" end def to_normalized_logical(parent_expr = nil) if operator.type == "!" normalized_operand = @operand.to_normalized_logical GroupedExpression.new(normalized_operand.to_complemental_logical) else case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end end def to_complemental_logical if operator.type == "!" # NOTE: `!' expression should be normalized into an equality-expression # before invoking #to_complemental_logical. __NOTREACHED__ else self end end end class SizeofExpression < UnaryExpression def have_side_effect? false end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s "sizeof(#{@operand.to_s})" end end class SizeofTypeExpression < UnaryExpression def have_side_effect? false end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s "sizeof(#{@operand.to_s})" end end class AlignofExpression < UnaryExpression def have_side_effect? false end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s "alignof(#{@operand.to_s})" end end class AlignofTypeExpression < UnaryExpression def have_side_effect? false end def logical? false end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s "alignof(#{@operand.to_s})" end end class CastExpression < Expression def initialize(type_name, ope) super() @type_name = type_name @operand = ope end attr_reader :type_name attr_reader :operand def location head_location end def have_side_effect? @operand.have_side_effect? end def logical? @operand.logical? end def arithmetic? @operand.arithmetic? end def bitwise? @operand.bitwise? end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s "(#{@type_name.to_s}) #{@operand.to_s}" end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + "#{@type_name.inspect} #{@operand.inspect}" end end class BinaryExpression < Expression def initialize(op, lhs_operand, rhs_operand) super() @operator = op @lhs_operand = lhs_operand @rhs_operand = rhs_operand end attr_reader :operator attr_reader :lhs_operand attr_reader :rhs_operand def location @operator.location end def to_s "#{@lhs_operand.to_s} #{@operator.value} #{@rhs_operand.to_s}" end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + "#{@operator.value} #{lhs_operand.inspect} #{rhs_operand.inspect}" end end class MultiplicativeExpression < BinaryExpression def have_side_effect? lhs_operand.have_side_effect? || rhs_operand.have_side_effect? end def logical? false end def arithmetic? true end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end end class AdditiveExpression < BinaryExpression def have_side_effect? lhs_operand.have_side_effect? || rhs_operand.have_side_effect? end def logical? false end def arithmetic? true end def bitwise? false end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end end class ShiftExpression < BinaryExpression def have_side_effect? lhs_operand.have_side_effect? || rhs_operand.have_side_effect? end def logical? false end def arithmetic? false end def bitwise? true end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end end class RelationalExpression < BinaryExpression def have_side_effect? lhs_operand.have_side_effect? || rhs_operand.have_side_effect? end def logical? true end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) self end def to_complemental_logical op = ComparisonOperator.new(@operator).for_complement.to_s op_tok = Token.new(op, op, @operator.location) RelationalExpression.new(op_tok, @lhs_operand, @rhs_operand) end end class EqualityExpression < BinaryExpression def have_side_effect? lhs_operand.have_side_effect? || rhs_operand.have_side_effect? end def logical? true end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) self end def to_complemental_logical op = ComparisonOperator.new(@operator).for_complement.to_s op_tok = Token.new(op, op, @operator.location) EqualityExpression.new(op_tok, @lhs_operand, @rhs_operand) end end class AndExpression < BinaryExpression def have_side_effect? lhs_operand.have_side_effect? || rhs_operand.have_side_effect? end def logical? false end def arithmetic? false end def bitwise? true end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end end class ExclusiveOrExpression < BinaryExpression def have_side_effect? lhs_operand.have_side_effect? || rhs_operand.have_side_effect? end def logical? false end def arithmetic? false end def bitwise? true end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end end class InclusiveOrExpression < BinaryExpression def have_side_effect? lhs_operand.have_side_effect? || rhs_operand.have_side_effect? end def logical? false end def arithmetic? false end def bitwise? true end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end end class LogicalAndExpression < BinaryExpression def initialize(op, lhs_operand, rhs_operand) super # NOTE: The ISO C99 standard says; # # 6.5.13 Logical AND operator # # Semantics # # 4 Unlike the bitwise binary & operator, the && operator guarantees # left-to-right evaluation; there is a sequence point after the # evaluation of the first operand. If the first operand compares equal # to 0, the second operand is not evaluated. # # NOTE: Sequence point will be reached after lhs value reference. # So, notification should be done by ExpressionEvaluator manually. # @lhs_operand.append_sequence_point! end def have_side_effect? lhs_operand.have_side_effect? || rhs_operand.have_side_effect? end def logical? true end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) LogicalAndExpression.new(@operator, @lhs_operand.to_normalized_logical(self), @rhs_operand.to_normalized_logical(self)) end def to_complemental_logical LogicalOrExpression.new(Token.new("||", "||", @operator.location), @lhs_operand.to_complemental_logical, @rhs_operand.to_complemental_logical) end end class LogicalOrExpression < BinaryExpression def initialize(op, lhs_operand, rhs_operand) super # NOTE: The ISO C99 standard says; # # 6.5.14 Logical OR operator # # Semantics # # 4 Unlike the bitwise | operator, the || operator guarantees # left-to-right evaluation; there is a sequence point after the # evaluation of the first operand. If the first operand compares # unequal to 0, the second operand is not evaluated. # # NOTE: Sequence point will be reached after lhs value reference. # So, notification should be done by ExpressionEvaluator manually. # @lhs_operand.append_sequence_point! end def have_side_effect? lhs_operand.have_side_effect? || rhs_operand.have_side_effect? end def logical? true end def arithmetic? false end def bitwise? false end def to_normalized_logical(parent_expr = nil) LogicalOrExpression.new(@operator, @lhs_operand.to_normalized_logical(self), @rhs_operand.to_normalized_logical(self)) end def to_complemental_logical LogicalAndExpression.new(Token.new("&&", "&&", @operator.location), @lhs_operand.to_complemental_logical, @rhs_operand.to_complemental_logical) end end class ConditionalExpression < Expression def initialize(cond, then_expr, else_expr, question_mark) super() @condition = cond @then_expression = then_expr @else_expression = else_expr @question_mark = question_mark # NOTE: The ISO C99 standard says; # # 6.5.15 Conditional operator # # Semantics # # 4 The first operand is evaluated; there is a sequence poit after its # evaluation. The second operand is evaluated only if the first # compares unequal to 0; the third operand is evaluated only if the # first compares equal to 0; thre result is the value of the second or # third operand (whichever is evaluated), converted to the type # described below. If an attempt is made to modify the result of a # conditional operator or to access it after the next sequence point, # the behavior is undefined. @condition.append_sequence_point! # NOTE: Add extra sequence points in order not to warn about side-effects # in both the 2nd and 3rd expressions because only one of the 2nd # and 3rd expressions is actually executed. @then_expression.append_sequence_point! @else_expression.append_sequence_point! end attr_reader :condition attr_reader :then_expression attr_reader :else_expression def location @question_mark.location end def have_side_effect? @condition.have_side_effect? || @then_expression.have_side_effect? || @else_expression.have_side_effect? end def logical? @then_expression.logical? || @else_expression.logical? end def arithmetic? @then_expression.arithmetic? || @else_expression.arithmetic? end def bitwise? @then_expression.bitwise? || @else_expression.bitwise? end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end def to_s "#{@condition.to_s} ? " + "#{@then_expression.to_s} : #{@else_expression.to_s}" end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + @condition.inspect(indent + 1) + "\n" + @then_expression.inspect(indent + 1) + "\n" + @else_expression.inspect(indent + 1) end end class SimpleAssignmentExpression < BinaryExpression def have_side_effect? true end def logical? rhs_operand.logical? end def arithmetic? rhs_operand.arithmetic? end def bitwise? rhs_operand.bitwise? end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end end class CompoundAssignmentExpression < BinaryExpression def have_side_effect? true end def logical? false end def arithmetic? ["*=", "/=", "%=", "+=", "-="].include?(operator.type) end def bitwise? ["<<=", ">>=", "&=", "^=", "|="].include?(operator.type) end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(self) else self end end def to_complemental_logical self end end class CommaSeparatedExpression < Expression def initialize(fst_expr) super() @expressions = [] push(fst_expr) end attr_reader :expressions def location head_location end def have_side_effect? @expressions.any? { |expr| expr.have_side_effect? } end def logical? @expressions.last.logical? end def arithmetic? @expressions.last.arithmetic? end def bitwise? @expressions.last.bitwise? end def to_normalized_logical(parent_expr = nil) case parent_expr when nil, LogicalAndExpression, LogicalOrExpression create_normalized_logical_of(@expressions.last) else self end end def to_complemental_logical @expressions.last.to_complemental_logical end def to_s @expressions.map { |expr| expr.to_s }.join(",") end def push(expr) self.head_token = expr.head_token if @expressions.empty? @expressions.push(expr) self.tail_token = expr.tail_token # NOTE: The ISO C99 standard says; # # 6.5.17 Comma operator # # Semantics # # 2 The left operand of a comma operator is evaluated as a void # expression; there is a sequence point after its evaluation. Then the # right operand is evaluated; the result has its type and value. If an # attempt is made to modify the result of a comma operator or to access # it after the next sequence point, the behavior is undefined. @expressions[-2].append_sequence_point! if @expressions.size > 1 self end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + @expressions.map { |expr| expr.inspect(indent + 1) }.join("\n") end end module DeclarationSpecifiersHolder def storage_class_specifier @declaration_specifiers ? @declaration_specifiers.storage_class_specifier : nil end def function_specifier # NOTE: A function-specifier should only be in function-definitions. @declaration_specifiers ? @declaration_specifiers.function_specifier : nil end def type_qualifiers @declaration_specifiers ? @declaration_specifiers.type_qualifiers : [] end def type_specifiers @declaration_specifiers ? @declaration_specifiers.type_specifiers : [] end def explicitly_typed? @declaration_specifiers && @declaration_specifiers.explicitly_typed? end def implicitly_typed? !explicitly_typed? end end class Declaration < SyntaxNode include DeclarationSpecifiersHolder def initialize(dcl_specs, init_dcrs, sym_tbl) super() @declaration_specifiers = dcl_specs @init_declarators = init_dcrs @items = build_items(dcl_specs, init_dcrs, sym_tbl) end attr_reader :declaration_specifiers attr_reader :init_declarators attr_reader :items def location head_location end def inspect(indent = 0) ([" " * indent + "#{short_class_name} (#{location.inspect})"] + @items.map { |item| item.inspect(indent + 1) }).join("\n") end private def build_items(dcl_specs, init_dcrs, sym_tbl) build_type_declaration(dcl_specs, init_dcrs, sym_tbl) + build_function_declaration(dcl_specs, init_dcrs, sym_tbl) + build_variable_declaration(dcl_specs, init_dcrs, sym_tbl) + build_variable_definition(dcl_specs, init_dcrs, sym_tbl) end def build_type_declaration(dcl_specs, init_dcrs, sym_tbl) return [] unless dcl_specs type_dcls = [] dcl_specs.type_specifiers.each do |type_spec| builder = TypeDeclarationBuilder.new(sym_tbl) type_spec.accept(builder) type_dcls.concat(builder.type_declarations) end if sc = dcl_specs.storage_class_specifier and sc.type == :TYPEDEF init_dcrs.each do |init_dcr| id = init_dcr.declarator.identifier sym = sym_tbl.create_new_symbol(TypedefName, id) type_dcls.push(TypedefDeclaration.new(dcl_specs, init_dcr, sym)) end end type_dcls end def build_function_declaration(dcl_specs, init_dcrs, sym_tbl) if dcl_specs && sc_spec = dcl_specs.storage_class_specifier and sc_spec.type == :TYPEDEF return [] end init_dcrs.each_with_object([]) do |init_dcr, fun_dcls| if init_dcr.declarator.function? id = init_dcr.declarator.identifier sym = sym_tbl.create_new_symbol(ObjectName, id) fun_dcls.push(FunctionDeclaration.new(dcl_specs, init_dcr, sym)) end end end def build_variable_declaration(dcl_specs, init_dcrs, sym_tbl) return [] unless dcl_specs unless sc = dcl_specs.storage_class_specifier and sc.type == :EXTERN return [] end init_dcrs.each_with_object([]) do |init_dcr, var_dcls| if init_dcr.declarator.variable? dcr = init_dcr.declarator sym = sym_tbl.create_new_symbol(ObjectName, dcr.identifier) var_dcls.push(VariableDeclaration.new(dcl_specs, dcr, sym)) end end end def build_variable_definition(dcl_specs, init_dcrs, sym_tbl) if dcl_specs && sc = dcl_specs.storage_class_specifier and sc.type == :EXTERN || sc.type == :TYPEDEF return [] end init_dcrs.each_with_object([]) do |init_dcr, var_defs| if init_dcr.declarator.variable? id = init_dcr.declarator.identifier sym = sym_tbl.create_new_symbol(ObjectName, id) var_defs.push(VariableDefinition.new(dcl_specs, init_dcr, sym)) end end end end class FunctionDeclaration < SyntaxNode include SymbolicElement include DeclarationSpecifiersHolder include SyntaxNodeCollector def initialize(dcl_specs, init_dcr, sym) super() @declaration_specifiers = dcl_specs @init_declarator = init_dcr @symbol = sym @type = nil end attr_reader :declaration_specifiers attr_reader :init_declarator attr_reader :symbol attr_accessor :type def identifier @init_declarator.declarator.identifier end def signature FunctionSignature.new(identifier.value, @type) end def function_declarator collect_function_declarators(@init_declarator).first end def location identifier.location end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + identifier.value end end class VariableDeclaration < SyntaxNode include SymbolicElement include DeclarationSpecifiersHolder def initialize(dcl_specs, dcr, sym) super() @declaration_specifiers = dcl_specs @declarator = dcr @symbol = sym @type = nil end attr_reader :declaration_specifiers attr_reader :declarator attr_reader :symbol attr_accessor :type def identifier @declarator.identifier end def location identifier.location end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + identifier.value end end class Definition < SyntaxNode include DeclarationSpecifiersHolder def initialize(dcl_specs) @declaration_specifiers = dcl_specs @type = nil end attr_reader :declaration_specifiers attr_accessor :type end class VariableDefinition < Definition include SymbolicElement def initialize(dcl_specs, init_dcr, sym) super(dcl_specs) @init_declarator = init_dcr @symbol = sym end attr_reader :init_declarator attr_reader :symbol def identifier @init_declarator.declarator.identifier end def initializer @init_declarator.initializer end def location identifier.location end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + identifier.value end end class TypeDeclaration < SyntaxNode include SymbolicElement def initialize(sym) super() @symbol = sym end attr_reader :symbol end class TypedefDeclaration < TypeDeclaration include DeclarationSpecifiersHolder def initialize(dcl_specs, init_dcr, sym) super(sym) @declaration_specifiers = dcl_specs @init_declarator = init_dcr @type = nil end attr_reader :declaration_specifiers attr_reader :init_declarator attr_accessor :type def identifier @init_declarator.declarator.identifier end def declarator @init_declarator.declarator end def location identifier.location end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + identifier.value end end class StructTypeDeclaration < TypeDeclaration def initialize(struct_spec, sym) super(sym) @struct_specifier = struct_spec @struct_declarations = struct_spec.struct_declarations @type = nil end attr_reader :struct_specifier attr_reader :struct_declarations attr_accessor :type def identifier @struct_specifier.identifier end def location identifier.location end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + "#{identifier.value}\n" + @struct_declarations.map { |sd| sd.inspect(indent + 1) }.join("\n") end end class PseudoStructTypeDeclaration < StructTypeDeclaration def initialize(struct_spec) super(struct_spec, nil) end def mark_as_referred_by(tok) end end class UnionTypeDeclaration < TypeDeclaration def initialize(union_spec, sym) super(sym) @union_specifier = union_spec @struct_declarations = union_spec.struct_declarations @type = nil end attr_reader :union_specifier attr_reader :struct_declarations attr_accessor :type def identifier @union_specifier.identifier end def location identifier.location end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + "#{identifier.value}\n" + @struct_declarations.map { |sd| sd.inspect(indent + 1) }.join("\n") end end class PseudoUnionTypeDeclaration < UnionTypeDeclaration def initialize(union_spec) super(union_spec, nil) end def mark_as_referred_by(tok) end end class EnumTypeDeclaration < TypeDeclaration def initialize(enum_spec, sym) super(sym) @enum_specifier = enum_spec @type = nil end attr_reader :enum_specifier attr_accessor :type def identifier @enum_specifier.identifier end def location identifier.location end def enumerators @enum_specifier.enumerators end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + "#{identifier.value}" end end class PseudoEnumTypeDeclaration < EnumTypeDeclaration def initialize(enum_spec) super(enum_spec, nil) end def mark_as_referred_by(tok) end end class DeclarationSpecifiers < SyntaxNode def initialize super @storage_class_specifier = nil @function_specifier = nil @type_qualifiers = [] @type_specifiers = [] end attr_accessor :storage_class_specifier attr_accessor :function_specifier attr_reader :type_qualifiers attr_reader :type_specifiers def location head_location end def explicitly_typed? !implicitly_typed? end def implicitly_typed? @type_specifiers.empty? end def inspect(indent = 0) " " * indent + short_class_name end end class InitDeclarator < SyntaxNode def initialize(dcr, init, equals_sign) super() @declarator = dcr @initializer = init @equals_sign = equals_sign end attr_reader :declarator attr_reader :initializer attr_reader :equals_sign def location @declarator.identifier.location end def inspect(indent = 0) " " * indent + short_class_name end end class TypeSpecifier < SyntaxNode def to_s subclass_responsibility end end class StandardTypeSpecifier < TypeSpecifier def initialize(tok) super() @token = tok end attr_reader :token def location head_location end def to_s @token.value end def inspect(indent = 0) " " * indent + short_class_name end end class TypedefTypeSpecifier < TypeSpecifier def initialize(tok) super() @token = tok end attr_reader :token def location head_location end def identifier @token end def to_s @token.value end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + @token.value end end class StructSpecifier < TypeSpecifier def initialize(id, struct_dcls, anonymous = false) super() @identifier = id @struct_declarations = struct_dcls @anonymous = anonymous end attr_reader :identifier attr_reader :struct_declarations def location @identifier.location end def anonymous? @anonymous end def to_s if @struct_declarations if @struct_declarations.empty? "struct #{identifier.value} {}" else "struct #{identifier.value} { " + @struct_declarations.map { |dcl| dcl.to_s }.join(" ") + " }" end else "struct #{identifier.value}" end end def inspect(indent = 0) " " * indent + short_class_name end end class UnionSpecifier < TypeSpecifier def initialize(id, struct_dcls, anonymous = false) super() @identifier = id @struct_declarations = struct_dcls @anonymous = anonymous end attr_reader :identifier attr_reader :struct_declarations def location @identifier.location end def anonymous? @anonymous end def to_s if @struct_declarations if @struct_declarations.empty? "union #{identifier.value} {}" else "union #{identifier.value} { " + @struct_declarations.map { |dcl| dcl.to_s }.join(" ") + " }" end else "union #{identifier.value}" end end def inspect(indent = 0) " " * indent + short_class_name end end class StructDeclaration < SyntaxNode def initialize(spec_qual_list, struct_dcrs) super() @specifier_qualifier_list = spec_qual_list @struct_declarators = struct_dcrs @items = build_items(spec_qual_list, struct_dcrs) end attr_reader :specifier_qualifier_list attr_reader :struct_declarators attr_reader :items def location @specifier_qualifier_list.location end def to_s @items.map { |item| item.to_s + ";" }.join(" ") end def inspect(indent = 0) ([" " * indent + "#{short_class_name} (#{location.inspect})"] + @items.map { |item| item.inspect(indent + 1) }).join("\n") end private def build_items(spec_qual_list, struct_dcrs) # FIXME: Must support unnamed bit padding. if struct_dcrs.empty? [MemberDeclaration.new(spec_qual_list, nil)] else struct_dcrs.map do |struct_dcr| MemberDeclaration.new(spec_qual_list, struct_dcr) end end end end class MemberDeclaration < SyntaxNode def initialize(spec_qual_list, struct_dcl) super() @specifier_qualifier_list = spec_qual_list @struct_declarator = struct_dcl @type = nil end attr_reader :specifier_qualifier_list attr_reader :struct_declarator attr_accessor :type def identifier if @struct_declarator && @struct_declarator.declarator @struct_declarator.declarator.identifier else nil end end def location case when @struct_declarator && @struct_declarator.declarator @struct_declarator.declarator.identifier.location when @struct_declarator @struct_declarator.head_location else @specifier_qualifier_list.head_location end end def to_s if id = identifier "#{type.brief_image} #{id.value}" else type.brief_image end end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + ((id = identifier) ? id.value : "") end end class SpecifierQualifierList < SyntaxNode def initialize super @type_specifiers = [] @type_qualifiers = [] end attr_reader :type_specifiers attr_reader :type_qualifiers def location head_location end def inspect(indent = 0) " " * indent + short_class_name end end class StructDeclarator < SyntaxNode def initialize(dcr, expr) super() @declarator = dcr @expression = expr end attr_reader :declarator attr_reader :expression def location @declarator ? @declarator.location : @expression.location end def bitfield? @expression != nil end def inspect(indent = 0) " " * indent + short_class_name end end class EnumSpecifier < TypeSpecifier def initialize(id, enums, trailing_comma = nil, anonymous = false) super() @identifier = id @enumerators = enums @trailing_comma = trailing_comma @anonymous = anonymous end attr_reader :identifier attr_reader :enumerators attr_reader :trailing_comma def location @identifier.location end def anonymous? @anonymous end def to_s if @enumerators if @enumerators.empty? "enum #{@identifier.value} {}" else "enum #{@identifier.value} { " + @enumerators.map { |enum| enum.to_s }.join(", ") + " }" end else "enum #{identifier.value}" end end def inspect(indent = 0) " " * indent + short_class_name end end class Enumerator < SyntaxNode include SymbolicElement def initialize(id, expr, sym) super() @identifier = id @expression = expr @symbol = sym end attr_reader :identifier attr_reader :expression attr_reader :symbol attr_accessor :value attr_accessor :type def location @identifier.location end def to_s if @expression "#{@identifier.value} = #{@expression.to_s}" else "#{@identifier.value}" end end def inspect(indent = 0) " " * indent + short_class_name end end class TypeofTypeSpecifier < TypeSpecifier def initialize(expr, type_name) super() @expression = expr @type_name = type_name end attr_reader :expression attr_reader :type_name def location head_location end def to_s if @expression "__typeof__(#{@expression.to_s})" else "__typeof__(#{@type_name.to_s})" end end def inspect(indent = 0) " " * indent + short_class_name end end class Declarator < SyntaxNode def initialize super @pointer = nil @full = false end attr_accessor :pointer def identifier subclass_responsibility end def abstract? false end def full=(dcr_is_full) @full = dcr_is_full # NOTE: The ISO C99 standard says; # # 6.7.5 Declarators # # Semantics # # 3 A full declarator is a declarator that is not part of another # declarator. The end of a full declarator is a sequence point. If, # in the nested sequence of declarators in a full declarator, there is # a declarator specifying a variable length array type, the type # specified by the full declarator is said to be variably modified. # Furthermore, any type derived by declarator type derivation from a # variably modified type is itself variably modified. if dcr_is_full append_sequence_point! else delete_sequence_point! end end def full? @full end def base subclass_responsibility end def function? subclass_responsibility end def variable? !function? end def parameter_type_list subclass_responsibility end def innermost_parameter_type_list subclass_responsibility end def identifier_list subclass_responsibility end end class IdentifierDeclarator < Declarator def initialize(id) super() @identifier = id end attr_reader :identifier def location @identifier.location end def base nil end def parameter_type_list nil end def innermost_parameter_type_list nil end def identifier_list nil end def function?(stack = []) stack.push(:pointer) if pointer stack.last == :function end def inspect(indent = 0) " " * indent + "#{short_class_name} #{@identifier.value}" end end class GroupedDeclarator < Declarator def initialize(base_dcr) super() @base = base_dcr end attr_reader :base def location @base ? @base.location || head_location : head_location end def identifier @base.identifier end def parameter_type_list @base.parameter_type_list end def innermost_parameter_type_list @base.innermost_parameter_type_list end def identifier_list @base.identifier_list end def function?(stack = []) stack.push(:pointer) if pointer @base.function?(stack) stack.last == :function end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + @base.inspect(indent + 1) end end class ArrayDeclarator < Declarator def initialize(base_dcr, size_expr) super() @base = base_dcr @size_expression = size_expr end attr_reader :base attr_reader :size_expression def location @base ? @base.location || head_location : head_location end def identifier @base.identifier end def parameter_type_list @base.parameter_type_list end def innermost_parameter_type_list @base.innermost_parameter_type_list end def identifier_list @base.identifier_list end def function?(stack = []) stack.push(:pointer) if pointer stack.push(:array) @base.function?(stack) stack.last == :function end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + @base.inspect(indent + 1) end end class FunctionDeclarator < Declarator def initialize(base_dcr) super() @base = base_dcr end attr_reader :base def location @base ? @base.location || head_location : head_location end def identifier @base.identifier end def function?(stack = []) stack.push(:pointer) if pointer stack.push(:function) @base.function?(stack) stack.last == :function end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + @base.inspect(indent + 1) end end class AnsiFunctionDeclarator < FunctionDeclarator def initialize(base_dcr, param_type_list) super(base_dcr) @parameter_type_list = param_type_list end attr_accessor :parameter_type_list def innermost_parameter_type_list @base.innermost_parameter_type_list || @parameter_type_list end def identifier_list @base.identifier_list end end class KandRFunctionDeclarator < FunctionDeclarator def initialize(base_dcr, id_list) super(base_dcr) @identifier_list = id_list end attr_reader :identifier_list def parameter_type_list @base.parameter_type_list end def innermost_parameter_type_list @base.innermost_parameter_type_list end end class AbbreviatedFunctionDeclarator < FunctionDeclarator def parameter_type_list @base.parameter_type_list end def innermost_parameter_type_list @base.innermost_parameter_type_list end def identifier_list @base.identifier_list end end class ParameterTypeList < SyntaxNode def initialize(params, have_va_list) super() @parameters = params @have_va_list = have_va_list end attr_reader :parameters def location head_location end def have_va_list? @have_va_list end def inspect(indent = 0) " " * indent + short_class_name end end class ParameterDeclaration < SyntaxNode include DeclarationSpecifiersHolder def initialize(dcl_specs, dcr) super() @declaration_specifiers = dcl_specs @declarator = dcr @type = nil end attr_reader :declaration_specifiers attr_reader :declarator attr_accessor :type def location @declarator ? @declarator.location : @declaration_specifiers.location end def inspect(indent = 0) " " * indent + short_class_name end end class Statement < SyntaxNode def initialize super @executed = false end attr_writer :executed def executed? @executed end end class ErrorStatement < Statement def initialize(err_tok) super() @error_token = err_tok end def location head_location end def inspect(indent = 0) " " * indent + "#{short_class_name}" end end class LabeledStatement < Statement; end class GenericLabeledStatement < LabeledStatement def initialize(label, stmt) super() @label = label @statement = stmt @referrers = [] end attr_reader :label attr_reader :statement attr_reader :referrers def location @label.location end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{@label.inspect})\n" + @statement.inspect(indent + 1) end end class CaseLabeledStatement < LabeledStatement def initialize(expr, stmt) super() @expression = expr @statement = stmt end attr_reader :expression attr_reader :statement attr_accessor :normalized_expression def location head_location end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + @expression.inspect(indent + 1) + "\n" + @statement.inspect(indent + 1) end end class DefaultLabeledStatement < LabeledStatement def initialize(stmt) super() @statement = stmt end attr_reader :statement attr_accessor :normalized_expression def location head_location end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + @statement.inspect(indent + 1) end end class CompoundStatement < Statement def initialize(block_items) super() @block_items = block_items end attr_reader :block_items def location head_location end def inspect(indent = 0) ([" " * indent + short_class_name] + @block_items.map { |item| item.inspect(indent + 1) }).join("\n") end end class ExpressionStatement < Statement def initialize(expr) super() @expression = expr end attr_reader :expression def location head_location end def inspect(indent = 0) " " * indent + "#{short_class_name}" + (@expression ? "\n#{@expression.inspect(indent + 1)}" : "") end end class SelectionStatement < Statement; end class IfStatement < SelectionStatement def initialize(expr, stmt, header_term) super() @expression = expr @statement = stmt @header_terminator = header_term end attr_reader :expression attr_reader :statement attr_reader :header_terminator def location head_location end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + @expression.inspect(indent + 1) + "\n" + @statement.inspect(indent + 1) end end class IfElseStatement < SelectionStatement def initialize(expr, then_stmt, else_stmt, then_term, else_term) super() @expression = expr @then_statement = then_stmt @else_statement = else_stmt @then_header_terminator = then_term @else_header_terminator = else_term end attr_reader :expression attr_reader :then_statement attr_reader :else_statement attr_reader :then_header_terminator attr_reader :else_header_terminator def location head_location end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + @expression.inspect(indent + 1) + "\n" + @then_statement.inspect(indent + 1) + "\n" + @else_statement.inspect(indent + 1) end end class SwitchStatement < SelectionStatement def initialize(expr, stmt) super() @expression = expr @statement = stmt derive_clause_conditions end attr_reader :expression attr_reader :statement def location head_location end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + @expression.inspect(indent + 1) + "\n" + @statement.inspect(indent + 1) end private def derive_clause_conditions case_exprs = [] default_stmt = nil @statement.block_items.each do |item| case item when GenericLabeledStatement item = item.statement redo when CaseLabeledStatement item.normalized_expression = equal_to_expression(@expression, item.expression, item.location) case_exprs.push(item.normalized_expression) item = item.statement redo when DefaultLabeledStatement default_stmt = item item = item.statement redo end end if default_stmt default_stmt.normalized_expression = derive_default_clause_condition(case_exprs, default_stmt.location) end end def derive_default_clause_condition(case_exprs, loc) if case_exprs.empty? equal_to_expression(@expression, @expression, loc) else case_exprs.map { |expr| not_equal_to_expression(expr.lhs_operand, expr.rhs_operand, loc) }.reduce { |cond, expr| logical_and_expression(cond, expr, loc) } end end def equal_to_expression(lhs, rhs, loc) EqualityExpression.new(equal_to_operator(loc), lhs, rhs) end def not_equal_to_expression(lhs, rhs, loc) EqualityExpression.new(not_equal_to_operator(loc), lhs, rhs) end def logical_and_expression(lhs, rhs, loc) LogicalAndExpression.new(logical_and_operator(loc), lhs, rhs) end def equal_to_operator(loc) Token.new("==", "==", loc) end def not_equal_to_operator(loc) Token.new("!=", "!=", loc) end def logical_and_operator(loc) Token.new("&&", "&&", loc) end end class IterationStatement < Statement include SyntaxNodeCollector def deduct_controlling_expression subclass_responsibility end def varying_variable_names collect_varying_variable_names(self).uniq end def varying_expressions collect_varying_binary_expressions(self) + collect_varying_unary_expressions(self) end private def deduct_controlling_expression_candidates(rough_cands) case when rough_cands.empty? [[nil, nil]] when rough_cands.size == 1 rough_cands else varying_var_names = varying_variable_names rough_cands.select do |expr_pair| collect_object_specifiers(expr_pair.first).any? do |os| varying_var_names.include?(os.identifier.value) end end end end def collect_loop_breaking_selection_statements(node) collect_loop_breaking_if_statements(node) + collect_loop_breaking_if_else_statements(node) end def collect_loop_breaking_if_statements(node) collect_if_statements(node).select do |stmt| contain_loop_breaking?(stmt.statement) end end def collect_loop_breaking_if_else_statements(node) collect_if_else_statements(node).select do |stmt| contain_loop_breaking?(stmt.then_statement) || contain_loop_breaking?(stmt.else_statement) end end def contain_loop_breaking?(node) items = node.kind_of?(CompoundStatement) ? node.block_items : [node] items.any? do |item| case item when GenericLabeledStatement item = item.statement redo when GotoStatement # FIXME: Must check whether the goto-statement goes outside of the # loop or not. true when BreakStatement true when ReturnStatement true else false end end end def collect_varying_variable_names(node) collect_varying_variable_names_in_binary_expression(node) + collect_varying_variable_names_in_unary_expression(node) end def collect_varying_variable_names_in_binary_expression(node) collect_varying_binary_expressions(node).map do |expr| expr.lhs_operand.identifier.value end end def collect_varying_binary_expressions(node) all_varying_binary_exprs = collect_simple_assignment_expressions(node) + collect_compound_assignment_expressions(node) all_varying_binary_exprs.select do |expr| expr.lhs_operand.kind_of?(ObjectSpecifier) end end memoize :collect_varying_binary_expressions def collect_varying_variable_names_in_unary_expression(node) collect_varying_unary_expressions(node).map do |expr| expr.operand.identifier.value end end def collect_varying_unary_expressions(node) all_varying_unary_exprs = collect_prefix_increment_expressions(node) + collect_prefix_decrement_expressions(node) + collect_postfix_increment_expressions(node) + collect_postfix_decrement_expressions(node) all_varying_unary_exprs.select do |expr| expr.operand.kind_of?(ObjectSpecifier) end end memoize :collect_varying_unary_expressions end class WhileStatement < IterationStatement def initialize(expr, stmt, header_term) super() @expression = expr @statement = stmt @header_terminator = header_term end attr_reader :expression attr_reader :statement attr_reader :header_terminator def location head_location end def deduct_controlling_expression sels = collect_loop_breaking_selection_statements(@statement) expr = @expression rough_cands = [[expr, expr.to_normalized_logical]] + sels.map { |stmt| [stmt.expression, stmt.expression.to_normalized_logical.to_complemental_logical] } # FIXME: When many loop breaking selection-statements are found, how can # I select one selection-statement? # FIXME: When the loop breaking selection-statement is a # if-else-statement and the loop breaking is in the else branch, # the controlling expression should be inverted. deduct_controlling_expression_candidates(rough_cands).first end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + @expression.inspect(indent + 1) + "\n" + @statement.inspect(indent + 1) end end class DoStatement < IterationStatement def initialize(stmt, expr, header_term, footer_init) super() @statement = stmt @expression = expr @header_terminator = header_term @footer_initiator = footer_init end attr_reader :statement attr_reader :expression attr_reader :header_terminator attr_reader :footer_initiator def location head_location end def deduct_controlling_expression sels = collect_loop_breaking_selection_statements(@statement) expr = @expression rough_cands = [[expr, expr.to_normalized_logical]] + sels.map { |stmt| [stmt.expression, stmt.expression.to_normalized_logical.to_complemental_logical] } # FIXME: When many loop breaking selection-statements are found, how can # I select one selection-statement? # FIXME: When the loop breaking selection-statement is a # if-else-statement and the loop breaking is in the else branch, # the controlling expression should be inverted. deduct_controlling_expression_candidates(rough_cands).first end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + @statement.inspect(indent + 1) + "\n" + @expression.inspect(indent + 1) end end class ForStatement < IterationStatement def initialize(init_stmt, cond_stmt, expr, body_stmt, header_term) super() @initial_statement = init_stmt @condition_statement = cond_stmt @expression = expr @body_statement = body_stmt @header_terminator = header_term end attr_reader :initial_statement attr_reader :condition_statement attr_reader :expression attr_reader :body_statement attr_reader :header_terminator def location head_location end def deduct_controlling_expression sels = collect_loop_breaking_selection_statements(@body_statement) if expr = @condition_statement.expression rough_cands = [[expr, expr.to_normalized_logical]] + sels.map { |stmt| [stmt.expression, stmt.expression.to_normalized_logical.to_complemental_logical] } else rough_cands = sels.map { |stmt| [stmt.expression, stmt.expression.to_normalized_logical.to_complemental_logical] } end # FIXME: When many loop breaking selection-statements are found, how can # I select one selection-statement? # FIXME: When the loop breaking selection-statement is a # if-else-statement and the loop breaking is in the else branch, # the controlling expression should be inverted. deduct_controlling_expression_candidates(rough_cands).first end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + @initial_statement.inspect(indent + 1) + "\n" + @condition_statement.inspect(indent + 1) + (@expression ? "\n#{@expression.inspect(indent + 1)}" : "") + "\n" + @body_statement.inspect(indent + 1) end end class C99ForStatement < IterationStatement def initialize(dcl, cond_stmt, expr, body_stmt, header_term) super() @declaration = dcl @condition_statement = cond_stmt @expression = expr @body_statement = body_stmt @header_terminator = header_term end attr_reader :declaration attr_reader :condition_statement attr_reader :expression attr_reader :body_statement attr_reader :header_terminator def location head_location end def deduct_controlling_expression sels = collect_loop_breaking_selection_statements(@body_statement) if expr = @condition_statement.expression rough_cands = [[expr, expr.to_normalized_logical]] + sels.map { |stmt| [stmt.expression, stmt.expression.to_normalized_logical.to_complemental_logical] } else rough_cands = sels.map { |stmt| [stmt.expression, stmt.expression.to_normalized_logical.to_complemental_logical] } end # FIXME: When many loop breaking selection-statements are found, how can # I select one selection-statement? # FIXME: When the loop breaking selection-statement is a # if-else-statement and the loop breaking is in the else branch, # the controlling expression should be inverted. deduct_controlling_expression_candidates(rough_cands).first end def inspect(indent = 0) " " * indent + "#{short_class_name}\n" + @declaration.inspect(indent + 1) + "\n" + @condition_statement.inspect(indent + 1) + (@expression ? "\n#{@expression.inspect(indent + 1)}" : "") + "\n" + @body_statement.inspect(indent + 1) end end class JumpStatement < Statement def location head_location end end class GotoStatement < JumpStatement def initialize(id) super() @identifier = id end attr_reader :identifier def inspect(indent = 0) " " * indent + "#{short_class_name} (#{@identifier.inspect})" end end class ContinueStatement < JumpStatement def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect})" end end class BreakStatement < JumpStatement def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect})" end end class ReturnStatement < JumpStatement def initialize(expr) super() @expression = expr end attr_reader :expression def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect})" + (@expression ? "\n#{@expression.inspect(indent + 1)}" : "") end end class TranslationUnit < SyntaxNode def initialize super @external_declarations = [] end attr_reader :external_declarations def push(external_dcl) if @external_declarations.empty? self.head_token = external_dcl.head_token end @external_declarations.push(external_dcl) self.tail_token = external_dcl.tail_token self end def location head_location ? head_location : Location.new end def inspect(indent = 0) ([" " * indent + short_class_name] + @external_declarations.map { |d| d.inspect(indent + 1) }).join("\n") end end class FunctionDefinition < Definition include SymbolicElement include SyntaxNodeCollector def initialize(dcl_specs, dcr, param_defs, compound_stmt, sym_tbl) super(dcl_specs) @declarator = dcr @parameter_definitions = param_defs @function_body = compound_stmt @symbol = sym_tbl.create_new_symbol(ObjectName, identifier) @type_declaration = build_type_declaration(dcl_specs, sym_tbl) build_label_references(compound_stmt) end attr_reader :declarator attr_reader :parameter_definitions attr_reader :function_body attr_reader :symbol attr_reader :type_declaration def identifier @declarator.identifier end def signature FunctionSignature.new(identifier.value, @type) end def function_declarator collect_function_declarators(@declarator).first end def lines start_line = identifier.location.line_no end_line = @function_body.tail_location.line_no end_line - start_line + 1 end def location identifier.location end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + (storage_class_specifier ? "#{storage_class_specifier.value} " : "") + (function_specifier ? "#{function_specifier.value} " : "") + "#{identifier.value}\n" + @parameter_definitions.map { |p| p.inspect(indent + 1) }.join("\n") + "\n#{@function_body.inspect(indent + 1)}" end private def build_type_declaration(dcl_specs, sym_tbl) return nil unless dcl_specs dcl_specs.type_specifiers.each do |type_spec| builder = TypeDeclarationBuilder.new(sym_tbl) type_spec.accept(builder) unless builder.type_declarations.empty? return builder.type_declarations.first end end nil end def build_label_references(compound_stmt) labels = collect_generic_labeled_statements(compound_stmt) gotos = collect_goto_statements(compound_stmt) labels.each do |generic_labeled_stmt| label_name = generic_labeled_stmt.label.value gotos.select { |goto_stmt| goto_stmt.identifier.value == label_name }.each do |goto_stmt| generic_labeled_stmt.referrers.push(goto_stmt) end end end end class KandRFunctionDefinition < FunctionDefinition def initialize(dcl_specs, dcr, dcls, compound_stmt, sym_tbl) param_defs = create_parameters(dcr.identifier_list, dcls, sym_tbl) super(dcl_specs, dcr, param_defs, compound_stmt, sym_tbl) end def identifier_list declarator.identifier_list end private def create_parameters(param_names, dcls, sym_tbl) return [] unless param_names param_names.each_with_object([]) do |name, param_defs| var_def = find_variable_definition(dcls, name, sym_tbl) param_defs.push(variable_definition_to_parameter_definition(var_def)) end end def find_variable_definition(dcls, name, sym_tbl) dcls.each do |dcl| dcl.items.select { |item| item.kind_of?(VariableDefinition) }.each do |var_def| if var_def.identifier.value == name.value return var_def end end end dcls.push(dcl = implicit_parameter_definition(name, sym_tbl)) dcl.items.first end def variable_definition_to_parameter_definition(var_def) dcl_specs = var_def.declaration_specifiers dcr = var_def.init_declarator.declarator param_def = ParameterDefinition.new(dcl_specs, dcr) unless dcl_specs param_def.head_token = dcr.head_token param_def.tail_token = dcr.tail_token end unless dcr param_def.head_token = dcl_specs.head_token param_def.tail_token = dcl_specs.tail_token end param_def end def implicit_parameter_definition(id, sym_tbl) init_dcr = InitDeclarator.new(IdentifierDeclarator.new(id), nil, nil) Declaration.new(nil, [init_dcr], sym_tbl) end end class AnsiFunctionDefinition < FunctionDefinition def initialize(dcl_specs, dcr, compound_stmt, sym_tbl) super(dcl_specs, dcr, create_parameters(dcr.innermost_parameter_type_list), compound_stmt, sym_tbl) end def parameter_type_list declarator.parameter_type_list end private def create_parameters(param_type_list) return [] unless param_type_list param_type_list.parameters.map do |param_dcl| dcl_specs = param_dcl.declaration_specifiers dcr = param_dcl.declarator param_def = ParameterDefinition.new(dcl_specs, dcr) unless dcl_specs param_def.head_token = dcr.head_token param_def.tail_token = dcr.tail_token end unless dcr param_def.head_token = dcl_specs.head_token param_def.tail_token = dcl_specs.tail_token end param_def end end end class ParameterDefinition < Definition def initialize(dcl_specs, dcr) super(dcl_specs) @declarator = dcr end attr_reader :declarator def identifier if @declarator if @declarator.abstract? nil else @declarator.identifier end else nil end end def location case when identifier identifier.location when declaration_specifiers declaration_specifiers.location else Location.new end end def to_variable_definition PseudoVariableDefinition.new(declaration_specifiers, InitDeclarator.new(@declarator, nil, nil), type) end def inspect(indent = 0) " " * indent + "#{short_class_name} (#{location.inspect}) " + (storage_class_specifier ? storage_class_specifier.inspect : "") + (identifier ? identifier.value : "") end end class PseudoVariableDefinition < VariableDefinition def initialize(dcl_specs, init_dcr, type) super(dcl_specs, init_dcr, nil) self.type = type end def mark_as_referred_by(token) end end class TypeName < SyntaxNode def initialize(spec_qual_list, abstract_dcr, sym_tbl) super() @specifier_qualifier_list = spec_qual_list @abstract_declarator = abstract_dcr @type = nil @type_declaration = build_type_declaration(spec_qual_list, sym_tbl) end attr_reader :specifier_qualifier_list attr_reader :abstract_declarator attr_accessor :type attr_reader :type_declaration def location @specifier_qualifier_list.location end def to_s @type.image end def inspect(indent = 0) " " * indent + short_class_name + " (#{@type ? @type.image : "nil"})" end private def build_type_declaration(spec_qual_list, sym_tbl) spec_qual_list.type_specifiers.each do |type_spec| builder = TypeDeclarationBuilder.new(sym_tbl) type_spec.accept(builder) unless builder.type_declarations.empty? return builder.type_declarations.first end end nil end end class AbstractDeclarator < Declarator def identifier nil end def abstract? true end end class PointerAbstractDeclarator < AbstractDeclarator def initialize(abstract_dcr, ptr) super() @base = abstract_dcr @pointer = ptr end attr_reader :base def location @base ? @base.location || head_location : head_location end def function?(stack = []) stack.push(:pointer) @base.function?(stack) if @base stack.last == :function end def parameter_type_list @base.parameter_type_list end def innermost_parameter_type_list @base.innermost_parameter_type_list end def identifier_list @base.identifier_list end def inspect(indent = 0) " " * indent + short_class_name end end class GroupedAbstractDeclarator < AbstractDeclarator def initialize(abstract_dcr) super() @base = abstract_dcr end attr_reader :base def location @base ? @base.location || head_location : head_location end def function? @base.function? end def parameter_type_list @base.parameter_type_list end def innermost_parameter_type_list @base.innermost_parameter_type_list end def identifier_list @base.identifier_list end def inspect(indent = 0) " " * indent + short_class_name end end class ArrayAbstractDeclarator < AbstractDeclarator def initialize(abstract_dcr, size_expr) super() @base = abstract_dcr @size_expression = size_expr end attr_reader :base attr_reader :size_expression def location @base ? @base.location || head_location : head_location end def function?(stack = []) stack.push(:array) @base.function?(stack) if @base stack.last == :function end def parameter_type_list @base.parameter_type_list end def innermost_parameter_type_list @base.innermost_parameter_type_list end def identifier_list @base.identifier_list end def inspect(indent = 0) " " * indent + short_class_name end end class FunctionAbstractDeclarator < AbstractDeclarator def initialize(abstract_dcr, param_type_list) super() @base = abstract_dcr @parameter_type_list = param_type_list end attr_reader :base attr_reader :parameter_type_list def location @base ? @base.location || head_location : head_location end def function?(stack = []) stack.push(:function) @base.function?(stack) if @base stack.last == :function end def innermost_parameter_type_list @base.innermost_parameter_type_list || @parameter_type_list end def inspect(indent = 0) " " * indent + short_class_name end end class Initializer < SyntaxNode def initialize(expr, inits) super() @expression = expr @initializers = inits end attr_reader :expression attr_reader :initializers def location head_location end def to_s case when @expression @expression.to_s when @initializers "{#{@initializers.map { |ini| ini.to_s }.join(",")}}" else "{}" end end def inspect(indent = 0) " " * indent + short_class_name end end class FunctionSignature def initialize(name, type) @name = name @type = type end attr_reader :name def ==(rhs) if @type.parameter_types.empty? || rhs.type.parameter_types.empty? @name == rhs.name else @name == rhs.name && @type == rhs.type end end def to_s "#{@type.return_type.brief_image} #{@name}(" + @type.parameter_types.map { |t| t.brief_image }.join(",") + (@type.have_va_list? ? ",...)" : ")") end protected attr_reader :type end class TypeDeclarationBuilder def initialize(sym_tbl) @symbol_table = sym_tbl @type_declarations = [] end attr_reader :type_declarations def visit_standard_type_specifier(node) end def visit_typedef_type_specifier(node) end def visit_struct_specifier(node) if node.struct_declarations node.struct_declarations.each { |child| child.accept(self) } sym = @symbol_table.create_new_symbol(StructTag, node.identifier) @type_declarations.push(StructTypeDeclaration.new(node, sym)) end end def visit_union_specifier(node) if node.struct_declarations node.struct_declarations.each { |child| child.accept(self) } sym = @symbol_table.create_new_symbol(UnionTag, node.identifier) @type_declarations.push(UnionTypeDeclaration.new(node, sym)) end end def visit_enum_specifier(node) if node.enumerators sym = @symbol_table.create_new_symbol(EnumTag, node.identifier) @type_declarations.push(EnumTypeDeclaration.new(node, sym)) end end def visit_typeof_type_specifier(node) end def visit_struct_declaration(node) node.specifier_qualifier_list.accept(self) end def visit_specifier_qualifier_list(node) node.type_specifiers.each { |child| child.accept(self) } end end class SyntaxTreeVisitor def visit_error_expression(node) end def visit_object_specifier(node) end def visit_constant_specifier(node) end def visit_string_literal_specifier(node) end def visit_null_constant_specifier(node) end def visit_grouped_expression(node) node.expression.accept(self) end def visit_array_subscript_expression(node) node.expression.accept(self) node.array_subscript.accept(self) end def visit_function_call_expression(node) node.expression.accept(self) node.argument_expressions.each { |expr| expr.accept(self) } end def visit_member_access_by_value_expression(node) node.expression.accept(self) end def visit_member_access_by_pointer_expression(node) node.expression.accept(self) end def visit_bit_access_by_value_expression(node) node.expression.accept(self) end def visit_bit_access_by_pointer_expression(node) node.expression.accept(self) end def visit_postfix_increment_expression(node) node.operand.accept(self) end def visit_postfix_decrement_expression(node) node.operand.accept(self) end def visit_compound_literal_expression(node) node.type_name.accept(self) if node.type_name node.initializers.each { |init| init.accept(self) } end def visit_prefix_increment_expression(node) node.operand.accept(self) end def visit_prefix_decrement_expression(node) node.operand.accept(self) end def visit_address_expression(node) node.operand.accept(self) end def visit_indirection_expression(node) node.operand.accept(self) end def visit_unary_arithmetic_expression(node) node.operand.accept(self) end def visit_sizeof_expression(node) node.operand.accept(self) end def visit_sizeof_type_expression(node) node.operand.accept(self) end def visit_alignof_expression(node) node.operand.accept(self) end def visit_alignof_type_expression(node) node.operand.accept(self) end def visit_cast_expression(node) node.type_name.accept(self) node.operand.accept(self) end def visit_multiplicative_expression(node) node.lhs_operand.accept(self) node.rhs_operand.accept(self) end def visit_additive_expression(node) node.lhs_operand.accept(self) node.rhs_operand.accept(self) end def visit_shift_expression(node) node.lhs_operand.accept(self) node.rhs_operand.accept(self) end def visit_relational_expression(node) node.lhs_operand.accept(self) node.rhs_operand.accept(self) end def visit_equality_expression(node) node.lhs_operand.accept(self) node.rhs_operand.accept(self) end def visit_and_expression(node) node.lhs_operand.accept(self) node.rhs_operand.accept(self) end def visit_exclusive_or_expression(node) node.lhs_operand.accept(self) node.rhs_operand.accept(self) end def visit_inclusive_or_expression(node) node.lhs_operand.accept(self) node.rhs_operand.accept(self) end def visit_logical_and_expression(node) node.lhs_operand.accept(self) node.rhs_operand.accept(self) end def visit_logical_or_expression(node) node.lhs_operand.accept(self) node.rhs_operand.accept(self) end def visit_conditional_expression(node) node.condition.accept(self) node.then_expression.accept(self) node.else_expression.accept(self) end def visit_simple_assignment_expression(node) node.lhs_operand.accept(self) node.rhs_operand.accept(self) end def visit_compound_assignment_expression(node) node.lhs_operand.accept(self) node.rhs_operand.accept(self) end def visit_comma_separated_expression(node) node.expressions.each { |expr| expr.accept(self) } end def visit_declaration(node) node.declaration_specifiers.accept(self) if node.declaration_specifiers node.init_declarators.each { |dcr| dcr.accept(self) } node.items.each { |item| item.accept(self) } end def visit_function_declaration(node) end def visit_variable_declaration(node) end def visit_variable_definition(node) end def visit_typedef_declaration(node) end def visit_struct_type_declaration(node) end def visit_union_type_declaration(node) end def visit_enum_type_declaration(node) end def visit_declaration_specifiers(node) node.type_specifiers.each { |type_spec| type_spec.accept(self) } end def visit_init_declarator(node) node.declarator.accept(self) node.initializer.accept(self) if node.initializer end def visit_standard_type_specifier(node) end def visit_typedef_type_specifier(node) end def visit_struct_specifier(node) if node.struct_declarations node.struct_declarations.each { |dcl| dcl.accept(self) } end end def visit_union_specifier(node) if node.struct_declarations node.struct_declarations.each { |dcl| dcl.accept(self) } end end def visit_struct_declaration(node) node.specifier_qualifier_list.accept(self) node.struct_declarators.each { |dcr| dcr.accept(self) } node.items.each { |item| item.accept(self) } end def visit_member_declaration(node) end def visit_specifier_qualifier_list(node) node.type_specifiers.each { |type_spec| type_spec.accept(self) } end def visit_struct_declarator(node) node.declarator.accept(self) if node.declarator node.expression.accept(self) if node.expression end def visit_enum_specifier(node) if node.enumerators node.enumerators.each { |enum| enum.accept(self) } end end def visit_enumerator(node) node.expression.accept(self) if node.expression end def visit_typeof_type_specifier(node) node.expression.accept(self) if node.expression node.type_name.accept(self) if node.type_name end def visit_identifier_declarator(node) end def visit_grouped_declarator(node) node.base.accept(self) end def visit_array_declarator(node) node.base.accept(self) node.size_expression.accept(self) if node.size_expression end def visit_ansi_function_declarator(node) node.base.accept(self) node.parameter_type_list.accept(self) end def visit_kandr_function_declarator(node) node.base.accept(self) end def visit_abbreviated_function_declarator(node) node.base.accept(self) end def visit_parameter_type_list(node) node.parameters.each { |param| param.accept(self) } end def visit_parameter_declaration(node) node.declaration_specifiers.accept(self) node.declarator.accept(self) if node.declarator end def visit_error_statement(node) end def visit_generic_labeled_statement(node) node.statement.accept(self) end def visit_case_labeled_statement(node) node.expression.accept(self) node.statement.accept(self) end def visit_default_labeled_statement(node) node.statement.accept(self) end def visit_compound_statement(node) node.block_items.each { |item| item.accept(self) } end def visit_expression_statement(node) node.expression.accept(self) if node.expression end def visit_if_statement(node) node.expression.accept(self) node.statement.accept(self) end def visit_if_else_statement(node) node.expression.accept(self) node.then_statement.accept(self) node.else_statement.accept(self) end def visit_switch_statement(node) node.expression.accept(self) node.statement.accept(self) end def visit_while_statement(node) node.expression.accept(self) node.statement.accept(self) end def visit_do_statement(node) node.statement.accept(self) node.expression.accept(self) end def visit_for_statement(node) node.initial_statement.accept(self) node.condition_statement.accept(self) node.expression.accept(self) if node.expression node.body_statement.accept(self) end def visit_c99_for_statement(node) node.declaration.accept(self) node.condition_statement.accept(self) node.expression.accept(self) if node.expression node.body_statement.accept(self) end def visit_goto_statement(node) end def visit_continue_statement(node) end def visit_break_statement(node) end def visit_return_statement(node) node.expression.accept(self) if node.expression end def visit_translation_unit(node) node.external_declarations.each { |dcl| dcl.accept(self) } end def visit_kandr_function_definition(node) node.declaration_specifiers.accept(self) if node.declaration_specifiers node.declarator.accept(self) node.parameter_definitions.each { |param_def| param_def.accept(self) } node.function_body.accept(self) node.type_declaration.accept(self) if node.type_declaration end def visit_ansi_function_definition(node) node.declaration_specifiers.accept(self) if node.declaration_specifiers node.declarator.accept(self) node.parameter_definitions.each { |param_def| param_def.accept(self) } node.function_body.accept(self) node.type_declaration.accept(self) if node.type_declaration end def visit_parameter_definition(node) end def visit_type_name(node) node.specifier_qualifier_list.accept(self) node.abstract_declarator.accept(self) if node.abstract_declarator node.type_declaration.accept(self) if node.type_declaration end def visit_pointer_abstract_declarator(node) node.base.accept(self) if node.base end def visit_grouped_abstract_declarator(node) node.base.accept(self) end def visit_array_abstract_declarator(node) node.base.accept(self) if node.base node.size_expression.accept(self) if node.size_expression end def visit_function_abstract_declarator(node) node.base.accept(self) if node.base node.parameter_type_list.accept(self) if node.parameter_type_list end def visit_initializer(node) case when node.expression node.expression.accept(self) when node.initializers node.initializers.each { |init| init.accept(self) } end end end class SyntaxTreeMulticastVisitor < SyntaxTreeVisitor extend Pluggable def_plugin :enter_error_expression def_plugin :leave_error_expression def_plugin :enter_object_specifier def_plugin :leave_object_specifier def_plugin :enter_constant_specifier def_plugin :leave_constant_specifier def_plugin :enter_string_literal_specifier def_plugin :leave_string_literal_specifier def_plugin :enter_null_constant_specifier def_plugin :leave_null_constant_specifier def_plugin :enter_grouped_expression def_plugin :leave_grouped_expression def_plugin :enter_array_subscript_expression def_plugin :leave_array_subscript_expression def_plugin :enter_function_call_expression def_plugin :leave_function_call_expression def_plugin :enter_member_access_by_value_expression def_plugin :leave_member_access_by_value_expression def_plugin :enter_member_access_by_pointer_expression def_plugin :leave_member_access_by_pointer_expression def_plugin :enter_bit_access_by_value_expression def_plugin :leave_bit_access_by_value_expression def_plugin :enter_bit_access_by_pointer_expression def_plugin :leave_bit_access_by_pointer_expression def_plugin :enter_postfix_increment_expression def_plugin :leave_postfix_increment_expression def_plugin :enter_postfix_decrement_expression def_plugin :leave_postfix_decrement_expression def_plugin :enter_compound_literal_expression def_plugin :leave_compound_literal_expression def_plugin :enter_prefix_increment_expression def_plugin :leave_prefix_increment_expression def_plugin :enter_prefix_decrement_expression def_plugin :leave_prefix_decrement_expression def_plugin :enter_address_expression def_plugin :leave_address_expression def_plugin :enter_indirection_expression def_plugin :leave_indirection_expression def_plugin :enter_unary_arithmetic_expression def_plugin :leave_unary_arithmetic_expression def_plugin :enter_sizeof_expression def_plugin :leave_sizeof_expression def_plugin :enter_sizeof_type_expression def_plugin :leave_sizeof_type_expression def_plugin :enter_alignof_expression def_plugin :leave_alignof_expression def_plugin :enter_alignof_type_expression def_plugin :leave_alignof_type_expression def_plugin :enter_cast_expression def_plugin :leave_cast_expression def_plugin :enter_multiplicative_expression def_plugin :leave_multiplicative_expression def_plugin :enter_additive_expression def_plugin :leave_additive_expression def_plugin :enter_shift_expression def_plugin :leave_shift_expression def_plugin :enter_relational_expression def_plugin :leave_relational_expression def_plugin :enter_equality_expression def_plugin :leave_equality_expression def_plugin :enter_and_expression def_plugin :leave_and_expression def_plugin :enter_exclusive_or_expression def_plugin :leave_exclusive_or_expression def_plugin :enter_inclusive_or_expression def_plugin :leave_inclusive_or_expression def_plugin :enter_logical_and_expression def_plugin :leave_logical_and_expression def_plugin :enter_logical_or_expression def_plugin :leave_logical_or_expression def_plugin :enter_conditional_expression def_plugin :leave_conditional_expression def_plugin :enter_simple_assignment_expression def_plugin :leave_simple_assignment_expression def_plugin :enter_compound_assignment_expression def_plugin :leave_compound_assignment_expression def_plugin :enter_comma_separated_expression def_plugin :leave_comma_separated_expression def_plugin :enter_declaration def_plugin :leave_declaration def_plugin :enter_function_declaration def_plugin :leave_function_declaration def_plugin :enter_variable_declaration def_plugin :leave_variable_declaration def_plugin :enter_variable_definition def_plugin :leave_variable_definition def_plugin :enter_typedef_declaration def_plugin :leave_typedef_declaration def_plugin :enter_struct_type_declaration def_plugin :leave_struct_type_declaration def_plugin :enter_union_type_declaration def_plugin :leave_union_type_declaration def_plugin :enter_enum_type_declaration def_plugin :leave_enum_type_declaration def_plugin :enter_declaration_specifiers def_plugin :leave_declaration_specifiers def_plugin :enter_init_declarator def_plugin :leave_init_declarator def_plugin :enter_standard_type_specifier def_plugin :leave_standard_type_specifier def_plugin :enter_typedef_type_specifier def_plugin :leave_typedef_type_specifier def_plugin :enter_struct_specifier def_plugin :leave_struct_specifier def_plugin :enter_union_specifier def_plugin :leave_union_specifier def_plugin :enter_struct_declaration def_plugin :leave_struct_declaration def_plugin :enter_member_declaration def_plugin :leave_member_declaration def_plugin :enter_specifier_qualifier_list def_plugin :leave_specifier_qualifier_list def_plugin :enter_struct_declarator def_plugin :leave_struct_declarator def_plugin :enter_enum_specifier def_plugin :leave_enum_specifier def_plugin :enter_enumerator def_plugin :leave_enumerator def_plugin :enter_typeof_type_specifier def_plugin :leave_typeof_type_specifier def_plugin :enter_identifier_declarator def_plugin :leave_identifier_declarator def_plugin :enter_grouped_declarator def_plugin :leave_grouped_declarator def_plugin :enter_array_declarator def_plugin :leave_array_declarator def_plugin :enter_ansi_function_declarator def_plugin :leave_ansi_function_declarator def_plugin :enter_kandr_function_declarator def_plugin :leave_kandr_function_declarator def_plugin :enter_abbreviated_function_declarator def_plugin :leave_abbreviated_function_declarator def_plugin :enter_parameter_type_list def_plugin :leave_parameter_type_list def_plugin :enter_parameter_declaration def_plugin :leave_parameter_declaration def_plugin :enter_error_statement def_plugin :leave_error_statement def_plugin :enter_generic_labeled_statement def_plugin :leave_generic_labeled_statement def_plugin :enter_case_labeled_statement def_plugin :leave_case_labeled_statement def_plugin :enter_default_labeled_statement def_plugin :leave_default_labeled_statement def_plugin :enter_compound_statement def_plugin :leave_compound_statement def_plugin :enter_expression_statement def_plugin :leave_expression_statement def_plugin :enter_if_statement def_plugin :leave_if_statement def_plugin :enter_if_else_statement def_plugin :leave_if_else_statement def_plugin :enter_switch_statement def_plugin :leave_switch_statement def_plugin :enter_while_statement def_plugin :leave_while_statement def_plugin :enter_do_statement def_plugin :leave_do_statement def_plugin :enter_for_statement def_plugin :leave_for_statement def_plugin :enter_c99_for_statement def_plugin :leave_c99_for_statement def_plugin :enter_goto_statement def_plugin :leave_goto_statement def_plugin :enter_continue_statement def_plugin :leave_continue_statement def_plugin :enter_break_statement def_plugin :leave_break_statement def_plugin :enter_return_statement def_plugin :leave_return_statement def_plugin :enter_translation_unit def_plugin :leave_translation_unit def_plugin :enter_kandr_function_definition def_plugin :leave_kandr_function_definition def_plugin :enter_ansi_function_definition def_plugin :leave_ansi_function_definition def_plugin :enter_parameter_definition def_plugin :leave_parameter_definition def_plugin :enter_type_name def_plugin :leave_type_name def_plugin :enter_pointer_abstract_declarator def_plugin :leave_pointer_abstract_declarator def_plugin :enter_grouped_abstract_declarator def_plugin :leave_grouped_abstract_declarator def_plugin :enter_array_abstract_declarator def_plugin :leave_array_abstract_declarator def_plugin :enter_function_abstract_declarator def_plugin :leave_function_abstract_declarator def_plugin :enter_initializer def_plugin :leave_initializer def self.def_visitor_method(node_name) class_eval <<-EOS define_method("visit_#{node_name}") do |*args| visit_with_notifying(__method__, args.first) { super(args.first) } end EOS end private_class_method :def_visitor_method def_visitor_method :error_expression def_visitor_method :object_specifier def_visitor_method :constant_specifier def_visitor_method :string_literal_specifier def_visitor_method :null_constant_specifier def_visitor_method :grouped_expression def_visitor_method :array_subscript_expression def_visitor_method :function_call_expression def_visitor_method :member_access_by_value_expression def_visitor_method :member_access_by_pointer_expression def_visitor_method :bit_access_by_value_expression def_visitor_method :bit_access_by_pointer_expression def_visitor_method :postfix_increment_expression def_visitor_method :postfix_decrement_expression def_visitor_method :compound_literal_expression def_visitor_method :prefix_increment_expression def_visitor_method :prefix_decrement_expression def_visitor_method :address_expression def_visitor_method :indirection_expression def_visitor_method :unary_arithmetic_expression def_visitor_method :sizeof_expression def_visitor_method :sizeof_type_expression def_visitor_method :alignof_expression def_visitor_method :alignof_type_expression def_visitor_method :cast_expression def_visitor_method :multiplicative_expression def_visitor_method :additive_expression def_visitor_method :shift_expression def_visitor_method :relational_expression def_visitor_method :equality_expression def_visitor_method :and_expression def_visitor_method :exclusive_or_expression def_visitor_method :inclusive_or_expression def_visitor_method :logical_and_expression def_visitor_method :logical_or_expression def_visitor_method :conditional_expression def_visitor_method :simple_assignment_expression def_visitor_method :compound_assignment_expression def_visitor_method :comma_separated_expression def_visitor_method :declaration def_visitor_method :function_declaration def_visitor_method :variable_declaration def_visitor_method :variable_definition def_visitor_method :typedef_declaration def_visitor_method :struct_type_declaration def_visitor_method :union_type_declaration def_visitor_method :enum_type_declaration def_visitor_method :declaration_specifiers def_visitor_method :init_declarator def_visitor_method :standard_type_specifier def_visitor_method :typedef_type_specifier def_visitor_method :struct_specifier def_visitor_method :union_specifier def_visitor_method :struct_declaration def_visitor_method :member_declaration def_visitor_method :specifier_qualifier_list def_visitor_method :struct_declarator def_visitor_method :enum_specifier def_visitor_method :enumerator def_visitor_method :typeof_type_specifier def_visitor_method :identifier_declarator def_visitor_method :grouped_declarator def_visitor_method :array_declarator def_visitor_method :ansi_function_declarator def_visitor_method :kandr_function_declarator def_visitor_method :abbreviated_function_declarator def_visitor_method :parameter_type_list def_visitor_method :parameter_declaration def_visitor_method :error_statement def_visitor_method :generic_labeled_statement def_visitor_method :case_labeled_statement def_visitor_method :default_labeled_statement def_visitor_method :compound_statement def_visitor_method :expression_statement def_visitor_method :if_statement def_visitor_method :if_else_statement def_visitor_method :switch_statement def_visitor_method :while_statement def_visitor_method :do_statement def_visitor_method :for_statement def_visitor_method :c99_for_statement def_visitor_method :goto_statement def_visitor_method :continue_statement def_visitor_method :break_statement def_visitor_method :return_statement def_visitor_method :translation_unit def_visitor_method :kandr_function_definition def_visitor_method :ansi_function_definition def_visitor_method :parameter_definition def_visitor_method :type_name def_visitor_method :pointer_abstract_declarator def_visitor_method :grouped_abstract_declarator def_visitor_method :array_abstract_declarator def_visitor_method :function_abstract_declarator def_visitor_method :initializer private def visit_with_notifying(caller_method, node, &block) suffix = caller_method.to_s.sub(/\Avisit_/, "") __send__("enter_#{suffix}").invoke(node) yield __send__("leave_#{suffix}").invoke(node) end end class ObjectSpecifierCollector < SyntaxTreeVisitor def initialize @object_specifiers = [] end attr_reader :object_specifiers def visit_object_specifier(node) super @object_specifiers.push(node) end end class IdentifierDeclaratorCollector < SyntaxTreeVisitor def initialize @identifier_declarators = [] end attr_reader :identifier_declarators def visit_identifier_declarator(node) super @identifier_declarators.push(node) end end class TypedefTypeSpecifierCollector < SyntaxTreeVisitor def initialize @typedef_type_specifiers = [] end attr_reader :typedef_type_specifiers def visit_variable_definition(node) end def visit_typedef_type_specifier(node) super @typedef_type_specifiers.push(node) end end class FunctionDeclaratorCollector < SyntaxTreeVisitor def initialize @function_declarators = [] end attr_reader :function_declarators def visit_ansi_function_declarator(node) @function_declarators.push(node) super end def visit_kandr_function_declarator(node) @function_declarators.push(node) super end end class SimpleAssignmentExpressionCollector < SyntaxTreeVisitor def initialize @simple_assignment_expressions = [] end attr_reader :simple_assignment_expressions def visit_simple_assignment_expression(node) super @simple_assignment_expressions.push(node) end end class CompoundAssignmentExpressionCollector < SyntaxTreeVisitor def initialize @compound_assignment_expressions = [] end attr_reader :compound_assignment_expressions def visit_compound_assignment_expression(node) super @compound_assignment_expressions.push(node) end end class PrefixIncrementExpressionCollector < SyntaxTreeVisitor def initialize @prefix_increment_expressions = [] end attr_reader :prefix_increment_expressions def visit_prefix_increment_expression(node) super @prefix_increment_expressions.push(node) end end class PrefixDecrementExpressionCollector < SyntaxTreeVisitor def initialize @prefix_decrement_expressions = [] end attr_reader :prefix_decrement_expressions def visit_prefix_decrement_expression(node) super @prefix_decrement_expressions.push(node) end end class PostfixIncrementExpressionCollector < SyntaxTreeVisitor def initialize @postfix_increment_expressions = [] end attr_reader :postfix_increment_expressions def visit_postfix_increment_expression(node) super @postfix_increment_expressions.push(node) end end class PostfixDecrementExpressionCollector < SyntaxTreeVisitor def initialize @postfix_decrement_expressions = [] end attr_reader :postfix_decrement_expressions def visit_postfix_decrement_expression(node) super @postfix_decrement_expressions.push(node) end end class AdditiveExpressionCollector < SyntaxTreeVisitor def initialize @additive_expressions = [] end attr_reader :additive_expressions def visit_additive_expression(node) super @additive_expressions.push(node) end end class RelationalExpressionCollector < SyntaxTreeVisitor def initialize @relational_expressions = [] end attr_reader :relational_expressions def visit_relational_expression(node) super @relational_expressions.push(node) end end class EqualityExpressionCollector < SyntaxTreeVisitor def initialize @equality_expressions = [] end attr_reader :equality_expressions def visit_equality_expression(node) super @equality_expressions.push(node) end end class LogicalAndExpressionCollector < SyntaxTreeVisitor def initialize @logical_and_expressions = [] end attr_reader :logical_and_expressions def visit_logical_and_expression(node) super @logical_and_expressions.push(node) end end class LogicalOrExpressionCollector < SyntaxTreeVisitor def initialize @logical_or_expressions = [] end attr_reader :logical_or_expressions def visit_logical_or_expression(node) super @logical_or_expressions.push(node) end end class GenericLabeledStatementCollector < SyntaxTreeVisitor def initialize @generic_labeled_statements = [] end attr_reader :generic_labeled_statements def visit_generic_labeled_statement(node) super @generic_labeled_statements.push(node) end end class IfStatementCollector < SyntaxTreeVisitor def initialize @if_statements = [] end attr_reader :if_statements def visit_if_statement(node) super @if_statements.push(node) end end class IfElseStatementCollector < SyntaxTreeVisitor def initialize @if_else_statements = [] end attr_reader :if_else_statements def visit_if_else_statement(node) super @if_else_statements.push(node) end end class GotoStatementCollector < SyntaxTreeVisitor def initialize @goto_statements = [] end attr_reader :goto_statements def visit_goto_statement(node) @goto_statements.push(node) end end class ArrayDeclaratorCollector < SyntaxTreeVisitor def initialize @array_declarators = [] end attr_reader :array_declarators def visit_array_declarator(node) @array_declarators.push(node) super end end class ConstantSpecifierCollector < SyntaxTreeVisitor def initialize @constant_specifiers = [] end attr_reader :constant_specifiers def visit_constant_specifier(node) @constant_specifiers.push(node) end end class ExpressionExtractor < SyntaxTreeVisitor def initialize @expressions = [] end attr_reader :expressions def push_expression(expr) @expressions.push(expr) end private :push_expression alias :visit_error_expression :push_expression alias :visit_object_specifier :push_expression alias :visit_constant_specifier :push_expression alias :visit_string_literal_specifier :push_expression alias :visit_null_constant_specifier :push_expression alias :visit_grouped_expression :push_expression alias :visit_array_subscript_expression :push_expression alias :visit_function_call_expression :push_expression alias :visit_member_access_by_value_expression :push_expression alias :visit_member_access_by_pointer_expression :push_expression alias :visit_bit_access_by_value_expression :push_expression alias :visit_bit_access_by_pointer_expression :push_expression alias :visit_postfix_increment_expression :push_expression alias :visit_postfix_decrement_expression :push_expression alias :visit_compound_literal_expression :push_expression alias :visit_prefix_increment_expression :push_expression alias :visit_prefix_decrement_expression :push_expression alias :visit_address_expression :push_expression alias :visit_indirection_expression :push_expression alias :visit_unary_arithmetic_expression :push_expression alias :visit_sizeof_expression :push_expression alias :visit_sizeof_type_expression :push_expression alias :visit_alignof_expression :push_expression alias :visit_alignof_type_expression :push_expression alias :visit_cast_expression :push_expression alias :visit_multiplicative_expression :push_expression alias :visit_additive_expression :push_expression alias :visit_shift_expression :push_expression alias :visit_relational_expression :push_expression alias :visit_equality_expression :push_expression alias :visit_and_expression :push_expression alias :visit_exclusive_or_expression :push_expression alias :visit_inclusive_or_expression :push_expression alias :visit_logical_and_expression :push_expression alias :visit_logical_or_expression :push_expression alias :visit_conditional_expression :push_expression alias :visit_simple_assignment_expression :push_expression alias :visit_compound_assignment_expression :push_expression end class ConditionalExpressionExtractor < SyntaxTreeVisitor def initialize @expressions = [] end attr_reader :expressions def visit_conditional_expression(node) @expressions.push(node) end end class ExpressionConstancy < SyntaxTreeVisitor def initialize(interp_bridge) @interp_bridge = interp_bridge end def check(expr) catch(:constancy) { expr.accept(self); true } end def visit_object_specifier(node) var_designators = @interp_bridge[:variable_designators][] if var_designators.include?(node.identifier.value) break_as_inconstant end end def visit_address_expression(node) # NOTE: To treat address of variables as an address-constant. end def visit_comma_separated_expression(node) # NOTE: A constant-expression should not contain comma-operators. # # NOTE: The ISO C99 standard says; # # 6.6 Constant expressions # # Constraints # # 3 Constant expressions shall not contain assignment, increment, # decrement, function-call, or comma operators, except when they are # contained within a subexpression that is not evaluated. break_as_inconstant end def break_as_inconstant(*) throw(:constancy, false) end private :break_as_inconstant alias :visit_function_call_expression :break_as_inconstant alias :visit_postfix_increment_expression :break_as_inconstant alias :visit_postfix_decrement_expression :break_as_inconstant alias :visit_prefix_increment_expression :break_as_inconstant alias :visit_prefix_decrement_expression :break_as_inconstant alias :visit_simple_assignment_expression :break_as_inconstant alias :visit_compound_assignment_expression :break_as_inconstant end end end adlint-3.2.14/lib/adlint/message.rb0000644000004100000410000002655512340630463017114 0ustar www-datawww-data# Base classes of the warning and the error messages. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/token" require "adlint/error" module AdLint #:nodoc: class MessageId def initialize(pkg_name, msg_name) @package_name = pkg_name @message_name = msg_name end attr_reader :package_name attr_reader :message_name def qualified? !@package_name.nil? end def ==(rhs) self.eql?(rhs) end def eql?(rhs) if self.qualified? && rhs.qualified? @package_name == rhs.package_name && @message_name == rhs.message_name else @message_name == rhs.message_name end end def hash @message_name.hash end end # == DESCRIPTION # Base class of all messages. class Message # === DESCRIPTION # Constructs a message. # # === PARAMETER # _msg_tmpl_:: MessageTemplate -- Template for the creating message. # _loc_:: Location -- Location where the message detected. # _parts_:: Array< Object > -- Message formatting parts. def initialize(msg_tmpl, loc, *parts) @template = msg_tmpl @location = loc @parts = parts @complements = [] end attr_reader :location def id @template.message_id end def must_be_unique? subclass_responsibility end def must_be_deferred? subclass_responsibility end def complement_with(msg) @complements.push(msg) end def eql?(rhs) id == rhs.id && @location == rhs.location && @parts == rhs.parts end def hash [id, @location, @parts].hash end def print_as_str(io) io.puts(to_s) @complements.each { |comp| comp.print_as_str(io) } end def print_as_csv(io) io.puts(to_csv) @complements.each { |comp| comp.print_as_csv(io) } end # === DESCRIPTION # Converts this message into a string for human readable output. # # === RETURN VALUE # String -- String representation of this message. def to_s begin "#{@location.to_s.to_default_external}:" + "#{type_str.to_default_external}:" + "#{id.package_name}:#{id.message_name.to_s}:" + "#{@template.typical_class.category}:" + "#{@template.typical_class.severity}:" + "#{@template.format(@parts)}" rescue raise InvalidMessageFormatError.new(id, @location) end end protected attr_reader :parts private # === DESCRIPTION # Reads the type of this message. # # Subclasses must implement this method. # # === RETURN VALUE # Symbol -- Message type symbol. def type subclass_responsibility end # === DESCRIPTION # Reads the type string of this message. # # Subclasses must implement this method. # # === RETURN VALUE # String -- Message type string. def type_str subclass_responsibility end # === DESCRIPTION # Converts this message into an array of message elements. # # === RETURN VALUE # Array< Object > -- Array of message elements. def to_a begin [ type.to_s, *@location.to_a, id.package_name, id.message_name, @template.typical_class.category, @template.typical_class.severity, @template.format(@parts) ] rescue raise InvalidMessageFormatError.new(id, @location) end end def to_csv to_a.map { |obj| obj && obj.to_s.to_default_external }.to_csv end end # == DESCRIPTION # Syntactical error message. class ErrorMessage < Message def initialize(msg_catalog, msg_name, loc, *parts) super(msg_catalog.lookup(MessageId.new("core", msg_name)), loc, *parts) end def must_be_unique? false end def must_be_deferred? false end private # === DESCRIPTION # Reads the type of this message. # # === RETURN VALUE # Symbol -- Message type symbol. def type :E end # === DESCRIPTION # Reads the type string of this message. # # === RETURN VALUE # String -- Message type string. def type_str "error" end end # == DESCRIPTION # AdLint specific internal fatal error message. class FatalErrorMessage < Message # === DESCRIPTION # Constructs a AdLint specific internal fatal error message. # # === PARAMETER # _msg_catalog_:: MessageCatalog -- Message catalog. # _cause_ex_:: Exception -- Cause exception. def initialize(msg_catalog, cause_ex) msg_id = MessageId.new("core", cause_ex.message_name) super(msg_catalog.lookup(msg_id), cause_ex.location || Location.new, *cause_ex.parts) @cause_ex = cause_ex end def must_be_unique? false end def must_be_deferred? false end private # === DESCRIPTION # Reads the type of this message. # # === RETURN VALUE # Symbol -- Message type symbol. def type :X end # === DESCRIPTION # Reads the type string of this message. # # === RETURN VALUE # String -- Message type string. def type_str "fatal error" end end # == DESCRIPTION # Semantical warning message. class WarningMessage < Message def initialize(msg_catalog, check_class, loc, *parts) super(msg_catalog.lookup(check_class.message_id), loc, *parts) @check_class = check_class end def must_be_unique? @check_class.must_be_unique? end def must_be_deferred? @check_class.must_be_deferred? end private # === DESCRIPTION # Reads the type of this message. # # === RETURN VALUE # Symbol -- Message type symbol. def type :W end # === DESCRIPTION # Reads the type string of this message. # # === RETURN VALUE # String -- Message type string. def type_str "warning" end end # == DESCRIPTION # Message complements other messages. class ContextMessage < Message def initialize(msg_catalog, msg_name, check_class, loc, *parts) msg_id = MessageId.new(check_class.catalog.name, msg_name) super(msg_catalog.lookup(msg_id), loc, *parts) end def must_be_unique? false end def must_be_deferred? false end private # === DESCRIPTION # Reads the type of this message. # # === RETURN VALUE # Symbol -- Message type symbol. def type :C end # === DESCRIPTION # Reads the type string of this message. # # === RETURN VALUE # String -- Message type string. def type_str "context" end end class MessageClass def initialize(class_str) @category, @severity = class_str.split(":").map { |str| str.to_default_external } end attr_reader :category attr_reader :severity end # == DESCRIPTION # Message catalog entry. class MessageTemplate def initialize(msg_id, classes, fmt) @message_id = msg_id @classes = classes.map { |class_str| MessageClass.new(class_str) } @format = fmt @typical_class = @classes.sort { |msg_class| msg_class.severity }.first end attr_reader :message_id attr_reader :classes attr_reader :typical_class def categories @classes.map { |c| c.category } end def severities @classes.map { |c| c.severity } end def format(parts) @format.to_s.to_default_external % parts.map { |obj| obj.to_s.to_default_external } end end class MessageDefinitionFile MESSAGES_FNAME = Pathname.new("messages.yml") private_constant :MESSAGES_FNAME def initialize(pkg_name, lang_name) @package_name = pkg_name @language_name = lang_name end def read_into(msg_catalog) File.open(fpath, "r:utf-8") do |io| case ary_or_stream = YAML.load_stream(io) when Array # NOTE: YAML.load_stream returns Array in Ruby 1.9.3-preview1. doc = ary_or_stream.first when YAML::Stream doc = ary_or_stream.documents.first end validate_version(doc["version"]) if msg_def = doc["message_definition"] msg_catalog.merge!(@package_name, msg_def) else raise "invalid form of the message definition file." end end self end private def base_dpath subclass_responsibility end def fpath base_dpath.join(Pathname.new(@language_name)).join(MESSAGES_FNAME) end def validate_version(ver) # NOTE: Version field of the message catalog does not mean the schema # version of the catalog file, but a revision number of the catalog # contents. # When AdLint is installed normally, the schema version of the # catalog is always valid. So, schema version validation is # unnecessary. end end class CoreMessageDefinitionFile < MessageDefinitionFile def initialize(lang_name) super("core", lang_name) end private def base_dpath Pathname.new("mesg.d/core").expand_path(Config[:etcdir]) end end class ExamMessageDefinitionFile < MessageDefinitionFile def initialize(exam_pkg, lang_name) super(exam_pkg.name, lang_name) @exam_pkg = exam_pkg end private def base_dpath @exam_pkg.catalog.message_definition_dpath end end # == DESCRIPTION # Message catalog. class MessageCatalog def initialize(traits) @traits = traits @hash = Hash.new message_definition_files.each { |def_file| def_file.read_into(self) } end def lookup(msg_id) @hash[msg_id] or raise InvalidMessageIdError.new(msg_id) end def merge!(pkg_name, msg_def) msg_def.each do |msg_name_str, cont| msg_id = MessageId.new(pkg_name, msg_name_str.to_sym) if changed = @traits.of_message.change_list[msg_id] cont = changed end @hash[msg_id] = MessageTemplate.new(msg_id, cont["classes"], cont["format"]) end end private def message_definition_files lang_name = @traits.of_message.language [CoreMessageDefinitionFile.new(lang_name)] + @traits.exam_packages.map { |pkg| ExamMessageDefinitionFile.new(pkg, lang_name) } end end end adlint-3.2.14/lib/adlint/supp.rb0000644000004100000410000000602112340630463016441 0ustar www-datawww-data# Message suppressions. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ module AdLint #:nodoc: class MessageSuppressorSet def initialize @file_wise_suppressions = {} @line_wise_suppressions = {} end def add(supp) case when supp.file_wise? @file_wise_suppressions[supp.key] = supp when supp.line_wise? @line_wise_suppressions[supp.key] = supp end end def suppress?(msg) (supp = @file_wise_suppressions[file_wise_key_of(msg)]) && supp.suppress?(msg) or (supp = @line_wise_suppressions[line_wise_key_of(msg)]) && supp.suppress?(msg) or false end private def file_wise_key_of(msg) FileWiseMessageSuppressor.key_of(msg.location) end def line_wise_key_of(msg) LineWiseMessageSuppressor.key_of(msg.location) end end class MessageSuppressor def initialize(target_msg_ids) @target_msg_ids = target_msg_ids end def key subclass_responsibility end def file_wise? subclass_responsibility end def line_wise? subclass_responsibility end def suppress?(msg) @target_msg_ids.include?(msg.id) end end class FileWiseMessageSuppressor < MessageSuppressor def self.key_of(loc) [loc.fpath] end def initialize(target_msg_ids, annot_loc) super(target_msg_ids) @key = [annot_loc.fpath] end attr_reader :key def file_wise? true end def line_wise? false end end class LineWiseMessageSuppressor < MessageSuppressor def self.key_of(loc) [loc.fpath, loc.line_no] end def initialize(target_msg_ids, annot_loc) super(target_msg_ids) @key = [annot_loc.fpath, annot_loc.line_no] end attr_reader :key def file_wise? false end def line_wise? true end end end adlint-3.2.14/lib/adlint/cpp.rb0000644000004100000410000000303412340630463016235 0ustar www-datawww-data# AdLint::Cpp package loader. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/cpp/asm" require "adlint/cpp/eval" require "adlint/cpp/constexpr" require "adlint/cpp/lexer" require "adlint/cpp/macro" require "adlint/cpp/phase" require "adlint/cpp/scanner" require "adlint/cpp/source" require "adlint/cpp/subst" require "adlint/cpp/syntax" require "adlint/cpp/util" adlint-3.2.14/lib/adlint/token.rb0000644000004100000410000000672212340630463016602 0ustar www-datawww-data# Lexical token classes. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/location" module AdLint #:nodoc: # == DESCRIPTION # Token. class Token include LocationHolder include Comparable # === DESCRIPTION # Constructs a token. # # === PARAMETER # _type_:: Symbol | String -- Type of the token. # _val_:: String -- String value of the token. # _loc_:: Location -- Location of the token. # _type_hint_:: Symbol | String -- Hint of the token type. def initialize(type, val, loc, type_hint = nil) @type, @value, @location = type, val, loc @type_hint = type_hint end # === VALUE # Symbol | String -- Type of this token. attr_reader :type # === VALUE # String -- Value of this token. attr_reader :value # === VALUE # Location -- Location of this token. attr_reader :location # === VALUE # Symbol | String -- Hint of the type of this token. attr_reader :type_hint def replaced? false end def need_no_further_replacement? false end # === DESCRIPTION # Compares tokens. # # === PARAMETER # _rhs_:: Token -- Right-hand-side token. # # === RETURN VALUE # Integer -- Comparision result. def <=>(rhs) case rhs when Symbol, String @type <=> rhs when Token if (type_diff = @type <=> rhs.type) == 0 if (val_diff = @value <=> rhs.value) == 0 @location <=> rhs.location else val_diff end else type_diff end else raise TypeError end end def eql?(rhs_tok) @type == rhs_tok.type && @value == rhs_tok.value && @location == rhs_tok.location end def hash [@type, @value, @location].hash end end class ReplacedToken < Token def initialize(type, val, loc, type_hint = nil, no_further_repl = true) super(type, val, loc, type_hint) @need_no_further_replacement = no_further_repl end def need_no_further_replacement? @need_no_further_replacement end def replaced? true end def eql?(rhs_tok) equal?(rhs_tok) end def hash object_id end end # == DESCRIPTION # Array of tokens. class TokenArray < Array; end end adlint-3.2.14/lib/adlint/prelude.rb0000644000004100000410000002011612340630463017113 0ustar www-datawww-data# Global ruby extensions preloaded before execution. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/memo" module Kernel private def subclass_responsibility raise NotImplementedError, self.class.name end module_function :subclass_responsibility def __NOTREACHED__ raise "NOTREACHED" end module_function :__NOTREACHED__ end class Module include ::AdLint::Memoizable # NOTE: Module.private_constant is added in Ruby 1.9.3-p0. unless public_instance_methods.include?(:private_constant) def private_constant(*) end end def outer_module eval self.name.sub(/(.*)::.*\z/, "\\1") end memoize :outer_module end class Encoding def self.include_name?(enc_name) if enc_name && !enc_name.empty? Encoding.find(enc_name) end true rescue false end end class String def to_default_external encode(Encoding.default_external, :invalid => :replace, :undef => :replace) end end class LazyInstantiation def initialize(klass, *args, &block) @klass = klass @args = args @block = block end undef_method(*(Object.new.public_methods - [:__id__, :object_id, :__send__])) def method_missing(name, *args) @receiver ||= @klass.new(*@args, &@block) @receiver.__send__(name, *args) end end class Class def lazy_new(*args, &block) LazyInstantiation.new(self, *args, &block) end end class Integer # NOTE: To restrict the bit-shift width. SHIFT_MAX_BITS = 64 def logical_right_shift(rhs) return self if rhs < 0 bits = to_s(2) shift_width = [rhs, SHIFT_MAX_BITS].min if bits.length < shift_width 0 else ("0" * shift_width + bits[0..-(shift_width + 1)]).to_i(2) end end def arithmetic_right_shift(rhs) rhs < 0 ? self : self >> [rhs, SHIFT_MAX_BITS].min end def left_shift(rhs) rhs < 0 ? self : self << [rhs, SHIFT_MAX_BITS].min end end class Pathname def components self.each_filename.to_a end memoize :components def real_components self.realpath.each_filename.to_a end memoize :real_components memoize :realpath memoize :cleanpath def strip(num = 0) comps = self.components comps = comps.slice(num..-1) if num >= 0 && num < comps.size Pathname.new(comps.reduce { |stripped, comp| File.join(stripped, comp) }) end def add_ext(ext_str) Pathname.new(self.to_s + ext_str) end def identical?(rhs) case rhs when Pathname self.cleanpath == rhs.cleanpath when String self.cleanpath == Pathname.new(rhs).cleanpath else false end end memoize :identical? def under?(parent_dpath) lhs_comps, rhs_comps = self.real_components, parent_dpath.real_components if rhs_comps.size < lhs_comps.size rhs_comps.zip(lhs_comps).all? { |rhs, lhs| lhs == rhs } else false end end end class String # === DESCRIPTION # Finds the longest common substrings in two strings. # # Fast and small memory footprint clone detection algorithm developed by # Yutaka Yanoh. # This algorithm is based on "suffix array with height" data structure. # # === PARAMETER # _rhs_:: String -- A String comparing to the receiver. # # === RETURN VALUE # Array< SubstringPair > -- The longest common substrings. def longest_common_substrings_with(rhs) suffix_array = SuffixArray.new(LeftSuffix.of(self) + RightSuffix.of(rhs)) suffix_array.longest_common_substrings end end class Substring < String def initialize(str, idx, len) @range = idx...(idx + len) super(str.slice(@range)) end attr_reader :range end class SubstringPair < Array def initialize(lhs_suffix, rhs_suffix, len) super([lhs_suffix.prefix(len), rhs_suffix.prefix(len)]) end def lhs self.first end def rhs self.last end end class Suffix include Comparable def self.of(str) str.length.times.map { |idx| new(str, idx) } end def initialize(owner, idx) @owner = owner @index = idx end private_class_method :new def lhs? subclass_responsibility end def rhs? !lhs? end def same_owner?(rhs) @owner.equal?(rhs.owner) end def common_prefix_length(rhs) to_s.chars.zip(rhs.to_s.chars).take_while { |lch, rch| lch == rch }.size end def prefix(len) Substring.new(@owner, @index, len) end def <=>(rhs) self.to_s <=> rhs.to_s end def to_s @owner.slice(@index..-1) end protected attr_reader :owner end class LeftSuffix < Suffix def lhs? true end end class RightSuffix < Suffix def lhs? false end end class SuffixArray < Array def initialize(suffixes) super(suffixes.sort.map { |suffix| [suffix, 0] }) update_height_of_each_suffixes! end def longest_common_substrings len = self.longest_common_prefix_length return [] if len == 0 self.each_index.reduce([]) { |result, idx| self[idx][1] == len ? result + create_substring_pairs(idx, len) : result } end def longest_common_prefix_length self.map { |suffix, height| height }.max end private def update_height_of_each_suffixes! (1...self.size).each do |idx| self[idx][1] = self[idx - 1][0].common_prefix_length(self[idx][0]) end end def create_substring_pairs(idx, len) base_suffix = self[idx][0] if base_suffix.lhs? create_entry = lambda { |lhs, rhs, l| SubstringPair.new(lhs, rhs, l) } else create_entry = lambda { |rhs, lhs, l| SubstringPair.new(lhs, rhs, l) } end result = [] (0...idx).reverse_each do |i| break unless self[i + 1][1] == len unless base_suffix.same_owner?(self[i][0]) result.push(create_entry[base_suffix, self[i][0], len]) end end result end end # NOTE: To support environment variable substitution in YAML file. # # Syntax of embedding environment variable is below; # env_var_specifier : '$' env_var_name # | '$' '{' env_var_name '}' # env_var_name : [A-Za-z_][0-9A-Za-z_]* # # Examples of environment variable as any scalar value; # string_item: $VAR # boolean_item: $VAR # decimal_item: $VAR # # Examples of embedding environment variable in string; # string_item: "foo${VAR}baz" # class Psych::TreeBuilder < Psych::Handler alias :_orig_scalar :scalar def scalar(value, anchor, tag, plain, quoted, style) _orig_scalar(substitute_environment_variables(value), anchor, tag, plain, quoted, style) end private def substitute_environment_variables(string) string.gsub(/(? [["geho", "geho"], ["hoge", "hoge"], ["hoge", "hoge"]] p substrs.map { |l, r| l.range } # => [10...14, 3...7, 3...7] p substrs.map { |l, r| r.range } # => [2...6, 4...8, 0...4] end adlint-3.2.14/lib/adlint/symbol.rb0000644000004100000410000000522712340630463016766 0ustar www-datawww-data# Reference recordable symbols. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/source" module AdLint #:nodoc: class Symbol def initialize(id) @identifier = id @referred = false end attr_writer :referred def location @identifier.location end def to_s subclass_responsibility end def useless? !@referred end end class MacroName < Symbol def to_s @identifier.value end end class ObjectName < Symbol def to_s @identifier.value end end class TypedefName < Symbol def to_s @identifier.value end end class StructTag < Symbol def to_s "struct #{@identifier.value}" end end class UnionTag < Symbol def to_s "union #{@identifier.value}" end end class EnumTag < Symbol def to_s "enum #{@identifier.value}" end end class EnumeratorName < Symbol def to_s @identifier.value end end class SymbolTable def initialize @hash = Hash.new { |hash, key| hash[key] = [] } end def create_new_symbol(sym_class, id) sym = sym_class.new(id) @hash[sym.location.fpath].push(sym) sym end def symbols_appeared_in(src) @hash[src.fpath] end end module SymbolicElement # NOTE: Host class must respond to #symbol. def mark_as_referred_by(tok) unless tok.location.fpath == symbol.location.fpath symbol.referred = true end end end end adlint-3.2.14/lib/adlint/phase.rb0000644000004100000410000000741612340630463016563 0ustar www-datawww-data# Base of analysis phase classes. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/error" require "adlint/report" require "adlint/monitor" module AdLint #:nodoc: # == DESCRIPTION # Base of analysis phase classes. class Phase include MonitorUtil # === DESCRIPTION # Constructs an analysis pass. # # === PARAMETER # _phase_ctxt_:: PhaseContext -- Analysis context. def initialize(phase_ctxt, pkg_name, phase_name) @phase_ctxt = phase_ctxt @pkg_name = pkg_name @phase_name = phase_name end # === DESCRIPTION # Executes the analysis. def execute monitored_region(@phase_name) do |mon| do_execute(@phase_ctxt, mon) register_examinations(@phase_ctxt) end rescue Error => ex report.write_message(FatalErrorMessage.new(message_catalog, ex)) raise end private # === DESCRIPTION # Executes the analysis. # # Subclasses must implement this method. def do_execute(phase_ctxt, monitor) subclass_responsibility end def register_examinations(phase_ctxt) key = context_key_of("examinations") phase_ctxt[key] ||= [] traits.exam_packages.each do |exam_pkg| exam_pkg.catalog.examination_classes.each do |exam_class| next unless exam_class.registrant_phase_class == self.class if exam_class.required?(phase_ctxt) phase_ctxt[key].push(exam_class.new(phase_ctxt)) end end end end def examinations @phase_ctxt[context_key_of("examinations")] || [] end def context_key_of(str) "#{@pkg_name}_#{str}".to_sym end extend Forwardable def_delegator :@phase_ctxt, :traits private :traits def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def_delegator :@phase_ctxt, :monitor private :monitor def_delegator :@phase_ctxt, :logger private :logger end class PhaseContext < Hash def initialize(analyzer, report, monitor) super() @analyzer = analyzer @report = report @monitor = monitor end attr_reader :report attr_reader :monitor extend Forwardable def_delegator :@analyzer, :traits def_delegator :@analyzer, :message_catalog def_delegator :@analyzer, :logger def_delegator :@report, :msg_fpath def_delegator :@report, :met_fpath def_delegator :@report, :log_fpath def flush_deferred_report! if supps = self[:suppressors] @report.flush_deferred_messages(supps) end end end end adlint-3.2.14/lib/adlint/error.rb0000644000004100000410000001076212340630463016612 0ustar www-datawww-data# AdLint specific runtime error classes. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/token" module AdLint #:nodoc: # == DESCRIPTION # Error base class for AdLint specific errors. class Error < StandardError # === DESCRIPTION # Constructs an error object. # # === PARAMETER # _msg_:: String -- Error message. # _loc_:: Location -- Location where an error occured. # _parts_:: Array< Object > -- Message formatting values. def initialize(msg, loc = nil, *parts) super(msg) @location = loc @parts = parts end # === VALUE # Location -- The location where this error occured. attr_reader :location # === VALUE # Array -- Message formatting values. attr_reader :parts def message_name subclass_responsibility end end # == DESCRIPTION # \AdLint fatal internal error. class InternalError < Error # === DESCRIPTION # Constructs an AdLint specific fatal internal error object. # # === PARAMETER # _cause_ex_:: Exception -- Cause exception object. # _loc_:: Location -- Location where an error occured. def initialize(cause_ex, loc) @cause_ex = cause_ex super(cause_ex.message, loc, "#{cause_ex.class} : #{cause_ex.message}") end def message_name :X0001 end # === DESCRIPTION # Reads the message of this error. # # === RETURN VALUE # String -- Error message. def message @cause_ex.message end # === DESCRIPTION # Reads the backtrace information of this error. # # === RETURN VALUE # Array -- Backtrace information. def backtrace @cause_ex.backtrace end end # == DESCRIPTION # Internal error which indicates invalid message ID used. class InvalidMessageIdError < Error # === DESCRIPTION # Constructs a invalid message ID error. # # === PARAMETER # _msg_id_:: Symbol -- Invalid message ID. # _loc_:: Location -- Location where the error occured. def initialize(msg_id, loc = nil) super(msg_id.message_name, loc, msg_id.package_name, msg_id.message_name) end def message_name :X0002 end end class InvalidMessageFormatError < Error def initialize(msg_id, loc = nil) super(msg_id.message_name, loc, msg_id.package_name, msg_id.message_name) end def message_name :X0004 end end class FatalError < Error def message_name :X0003 end end class ParseError < FatalError def initialize(loc, msg_fpath, log_fpath) super("failed to parse preprocessed file.", loc, msg_fpath, log_fpath) end end class MissingUserHeaderError < FatalError def initialize(loc, basename, msg_fpath, log_fpath) super("cannot open \"#{basename}\".", loc, msg_fpath, log_fpath) end end class MissingSystemHeaderError < FatalError def initialize(loc, basename, msg_fpath, log_fpath) super("cannot open <#{basename}>.", loc, msg_fpath, log_fpath) end end class IllformedIncludeDirectiveError < FatalError def initialize(loc, msg_fpath, log_fpath) super("#include expects a filename", loc, msg_fpath, log_fpath) end end class UnterminatedCommentError < FatalError def initialize(loc, msg_fpath, log_fpath) super("unterminated comment block found.", loc, msg_fpath, log_fpath) end end end adlint-3.2.14/lib/adlint/util.rb0000644000004100000410000003314312340630463016434 0ustar www-datawww-data# Miscellaneous utilities. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/memo" module AdLint #:nodoc: module Validation # NOTE: Host class must respond to #entity_name. def ensure_validity_of(*args) @validators ||= [] attr_names = _attr_names_in(args) attr_names.each do |attr_name| @validators.push(ObjectValidator.new(attr_name)) end self end def ensure_presence_of(*args) @validators ||= [] attr_names = _attr_names_in(args) attr_names.each do |attr_name| @validators.push(PresenceValidator.new(attr_name)) end self end def ensure_numericality_of(*args) @validators ||= [] attr_names, opts = _attr_names_in(args), _options_in(args) only_int = opts[:only_integer] ? true : false min = opts[:min] max = opts[:max] attr_names.each do |attr_name| @validators.push(NumericalityValidator.new(attr_name, only_int, min, max)) end self end def ensure_file_presence_of(*args) @validators ||= [] attr_names, opts = _attr_names_in(args), _options_in(args) allow_nil = opts[:allow_nil] attr_names.each do |attr_name| @validators.push(FilePresenceValidator.new(attr_name, allow_nil)) end self end def ensure_dir_presence_of(*args) @validators ||= [] attr_names, opts = _attr_names_in(args), _options_in(args) allow_nil = opts[:allow_nil] attr_names.each do |attr_name| @validators.push(DirPresenceValidator.new(attr_name, allow_nil)) end self end def ensure_dirs_presence_of(*args) @validators ||= [] attr_names = _attr_names_in(args) attr_names.each do |attr_name| @validators.push(DirsPresenceValidator.new(attr_name)) end self end def ensure_inclusion_of(*args) @validators ||= [] attr_names, opts = _attr_names_in(args), _options_in(args) vals = opts[:values] || [] attr_names.each do |attr_name| @validators.push(InclusionValidator.new(attr_name, vals)) end self end def ensure_true_or_false_of(*args) @validators ||= [] attr_names = _attr_names_in(args) attr_names.each do |attr_name| @validators.push(TrueOrFalseValidator.new(attr_name)) end self end def ensure_exam_packages_presence_of(*args) @validators ||= [] attr_names = _attr_names_in(args) attr_names.each do |attr_name| @validators.push(ExamPackagesPresenceValidator.new(attr_name)) end self end def ensure_with(*args) @validators ||= [] attr_names, opts = _attr_names_in(args), _options_in(args) msg = opts[:message] || "is not valid." validator = opts[:validator] || lambda { |val| val } attr_names.each do |attr_name| @validators.push(CustomValidator.new(attr_name, msg, validator)) end self end def validators @validators ||= [] end def valid? if self.class.validators self.class.validators.map { |validator| validator.execute(self) }.all? else true end end def errors if self.class.validators self.class.validators.map { |validator| validator.errors }.flatten else [] end end def self.included(class_or_module) class_or_module.extend(self) end private def _attr_names_in(args) args.select { |obj| obj.kind_of?(Symbol) } end def _options_in(args) args.find { |obj| obj.kind_of?(Hash) } || {} end class Validator def initialize(attr_name) @attr_name = attr_name @errors = [] end attr_reader :errors def execute(attr_owner) subclass_responsibility end private def target_value(attr_owner) attr_owner.instance_variable_get("@#{@attr_name}") end def qualified_attr_name(attr_owner) if attr_owner.entity_name.nil? || attr_owner.entity_name.empty? @attr_name else "#{attr_owner.entity_name}:#{@attr_name}" end end end private_constant :Validator class ObjectValidator < Validator def execute(attr_owner) if obj = target_value(attr_owner) return true if obj.valid? @errors.concat(obj.errors) end false end end private_constant :ObjectValidator class PresenceValidator < Validator def execute(attr_owner) if target_value(attr_owner).nil? @errors.push("`#{qualified_attr_name(attr_owner)}' " + "is not specified.") return false end true end end private_constant :PresenceValidator class NumericalityValidator < PresenceValidator def initialize(attr_name, only_int, min, max) super(attr_name) @only_integer = only_int @min = min @max = max end def execute(attr_owner) return false unless super val = target_value(attr_owner) case val when Numeric if @only_integer && !val.integer? @errors.push("`#{qualified_attr_name(attr_owner)}' " + "is not an integer.") return false end if @min && val < @min @errors.push("`#{qualified_attr_name(attr_owner)}' " + "is not greater than or equal to #{@min}.") return false end if @max && @max < val @errors.push("`#{qualified_attr_name(attr_owner)}' " + "is not less than or equal to #{@max}.") return false end else @errors.push("`#{qualified_attr_name(attr_owner)}' " + "is not a numerical value.") return false end true end end private_constant :NumericalityValidator class FilePresenceValidator < Validator def initialize(attr_name, allow_nil) super(attr_name) @allow_nil = allow_nil end def execute(attr_owner) val = target_value(attr_owner) unless val if @allow_nil return true else @errors.push("`#{qualified_attr_name(attr_owner)}' " + "is not specified.") return false end end unless File.exist?(val) && File.file?(val) @errors.push("`#{qualified_attr_name(attr_owner)}' " + "is non-existent pathname (#{val.to_s}).") return false end true end end private_constant :FilePresenceValidator class DirPresenceValidator < Validator def initialize(attr_name, allow_nil) super(attr_name) @allow_nil = allow_nil end def execute(attr_owner) val = target_value(attr_owner) unless val if @allow_nil return true else @errors.push("`#{qualified_attr_name(attr_owner)}' " + "is not specified.") return false end end unless File.exist?(val) && File.directory?(val) @errors.push("`#{qualified_attr_name(attr_owner)}' " + "is non-existent pathname (#{val.to_s}).") return false end true end end private_constant :DirPresenceValidator class DirsPresenceValidator < Validator def execute(attr_owner) val = target_value(attr_owner) bad_paths = val.reject { |path| File.exist?(path) && File.directory?(path) } unless bad_paths.empty? bad_paths.each do |path| @errors.push("`#{qualified_attr_name(attr_owner)}' " + "contains non-existent pathname (#{path.to_s}).") end return false end true end end private_constant :DirsPresenceValidator class InclusionValidator < PresenceValidator def initialize(attr_name, vals) super(attr_name) @values = vals end def execute(attr_owner) return false unless super val = target_value(attr_owner) unless @values.include?(val) @errors.push("`#{qualified_attr_name(attr_owner)}' " + "is not one of #{@values.join(", ")}.") return false end true end end private_constant :InclusionValidator class TrueOrFalseValidator < PresenceValidator def execute(attr_owner) return false unless super case target_value(attr_owner) when TrueClass, FalseClass true else @errors.push("`#{qualified_attr_name(attr_owner)}' " + "is not a boolean value.") false end end end private_constant :TrueOrFalseValidator class ExamPackagesPresenceValidator < Validator def execute(attr_owner) val = target_value(attr_owner) if val.empty? @errors.push("`#{qualified_attr_name(attr_owner)}' " + "is not specified.") return false end bad_exams = val.reject { |exam_pkg| exam_pkg.load } unless bad_exams.empty? bad_exams.each do |exam_pkg| @errors.push("`#{qualified_attr_name(attr_owner)}' " + "contains non-existent exam-package name " + "(#{exam_pkg.name}).") end return false end true end end private_constant :ExamPackagesPresenceValidator class CustomValidator < Validator def initialize(attr_name, msg, validator) super(attr_name) @message = msg @validator = validator end def execute(attr_owner) unless @validator[target_value(attr_owner)] @errors.push("`#{qualified_attr_name(attr_owner)}' " + @message) return false end true end end private_constant :CustomValidator end module Visitable def accept(visitor) visitor.__send__(visitor_method_name, self) end private def visitor_method_name node_name = self.class.name.sub(/\A.*::/, "") node_name = node_name.gsub(/([A-Z][a-z])/, "_\\1") node_name = node_name.sub(/\A_/, "").tr("A-Z", "a-z") "visit_#{node_name}".to_sym end memoize :visitor_method_name end class CsvRecord def initialize(ary) @ary = ary end def field_at(idx) @ary.fetch(idx) end end class Plugin def initialize(methods = []) @methods = methods end def +(method) Plugin.new(@methods + [method]) end def invoke(*args) @methods.each { |method| method.call(*args) } end end module Pluggable def def_plugin(event) class_eval <<-EOS define_method("#{event}") do |*args| @#{event}_plugin ||= Plugin.new end define_method("#{event}=") do |*args| @#{event}_plugin = args.first end EOS end end module CompoundPathParser def parse_compound_path_list(ary) (ary || []).compact.map { |str| parse_compound_path_str(str) }.flatten end module_function :parse_compound_path_list def parse_compound_path_str(str) str.split(File::PATH_SEPARATOR).map { |s| Pathname.new(s) } end module_function :parse_compound_path_str end module LogUtil # NOTE: Host class must respond to #logger. def log_fatal(*args, &block) logger.fatal(*args, &block) end alias :LOG_F :log_fatal def log_error(*args, &block) logger.error(*args, &block) end alias :LOG_E :log_error def log_warn(*args, &block) logger.warn(*args, &block) end alias :LOG_W :log_warn def log_info(*args, &block) logger.info(*args, &block) end alias :LOG_I :log_info def log_debug(*args, &block) logger.debug(*args, &block) end alias :LOG_D :log_debug end end if $0 == __FILE__ require_relative "prelude.rb" class Foo def initialize p "foo" end extend AdLint::Pluggable def_plugin :on_initialization def run on_initialization.invoke(1, 2) end end def bar(a1, a2) p a1, a2 end def baz(a1, a2) p "baz" end foo = Foo.lazy_new p "foo?" foo.on_initialization += method(:bar) foo.on_initialization += method(:baz) foo.run end adlint-3.2.14/lib/adlint/exam.rb0000644000004100000410000001564012340630463016413 0ustar www-datawww-data# Base of all source code examinations. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/message" require "adlint/report" require "adlint/util" module AdLint #:nodoc: # == DESCRIPTION # Base of all kinds of source code examinations. class Examination include ReportUtil include LogUtil class << self def registrant_phase_class self.ancestors.each do |klass| if phase_class = @@registrant_phase_classes[klass] return phase_class end end nil end def required?(phase_ctxt) subclass_responsibility end def catalog eval "::#{self.name.sub(/(.*::).*\z/, "\\1")}Catalog" end memoize :catalog private def inherited(subclass) subclass.instance_variable_set(:@registrant_phase_class, nil) end def def_registrant_phase(phase_class) @@registrant_phase_classes ||= {} @@registrant_phase_classes[self] = phase_class end end module Passivation private def do_prepare(phase_ctxt) end def do_execute(phase_ctxt) end end def initialize(phase_ctxt) @phase_ctxt = phase_ctxt end def execute do_prepare(@phase_ctxt) do_execute(@phase_ctxt) end private def do_prepare(phase_ctxt) subclass_responsibility end def do_execute(phase_ctxt) subclass_responsibility end def targeted_method(name, loc_holder_idx = 0) lambda do |*args| if args[loc_holder_idx].analysis_target?(traits) self.__send__(name, *args) end end end alias :T :targeted_method alias :M :method extend Forwardable def_delegator :@phase_ctxt, :traits private :traits def_delegator :@phase_ctxt, :report private :report def_delegator :@phase_ctxt, :message_catalog private :message_catalog def_delegator :@phase_ctxt, :logger private :logger def suppressors @phase_ctxt[:suppressors] end end class ExaminationCatalog def initialize(loader_fpath) @loader_fpath = loader_fpath @initializer = lambda {} yield(self) if block_given? end attr_accessor :name attr_accessor :major_version attr_accessor :minor_version attr_accessor :patch_version attr_accessor :release_date attr_accessor :examination_classes attr_accessor :initializer def short_version "#{major_version}.#{minor_version}.#{patch_version}" end def message_definition_dpath Pathname.new("etc/mesg.d/#{name}").expand_path(package_prefix) end private def package_prefix catalog_dpath = Pathname.new(@loader_fpath).realpath.dirname Pathname.new("../../..").expand_path(catalog_dpath) end end class ExaminationPackage def initialize(name) @name = name end attr_reader :name def load require "adlint/exam/#{@name}" catalog.initializer.call true rescue LoadError false end def catalog eval "Exam::#{module_name}::Catalog" end private def module_name @name.sub(/\A./) { |str| str.upcase }.gsub(/_(.)/) { $1.upcase } end end # == DESCRIPTION # Base of code checking classes. class CodeCheck < Examination class << self def message_name self.name.sub(/.*::(W\d{4}).*\z/, "\\1").to_sym end memoize :message_name def message_id MessageId.new(catalog.name, message_name) end def required?(phase_ctxt) excluded?(phase_ctxt) ? included?(phase_ctxt) : true end def must_be_unique? @must_be_unique end def must_be_deferred? @must_be_deferred end private def inherited(subclass) subclass.instance_variable_set(:@must_be_unique, false) subclass.instance_variable_set(:@must_be_deferred, false) end def mark_as_unique @must_be_unique = true end def mark_as_deferred @must_be_deferred = true end def excluded?(phase_ctxt) excluded_by_category?(phase_ctxt) || excluded_by_severity?(phase_ctxt) || excluded_by_id?(phase_ctxt) end def included?(phase_ctxt) included_by_id?(phase_ctxt) end def excluded_by_category?(phase_ctxt) exclusion = phase_ctxt.traits.of_message.exclusion if exclusion.categories.empty? false else if tmpl = phase_ctxt.message_catalog.lookup(message_id) exclusion.categories.any? { |cat| tmpl.categories.include?(cat) } else false end end end def excluded_by_severity?(phase_ctxt) exclusion = phase_ctxt.traits.of_message.exclusion if exclusion.severities false else if tmpl = phase_ctxt.message_catalog.lookup(message_id) tmpl.severities.any? { |sev| sev =~ exclusion.severities } else false end end end def excluded_by_id?(phase_ctxt) exclusion = phase_ctxt.traits.of_message.exclusion exclusion.messages.include?(message_id) end def included_by_id?(phase_ctxt) inclusion = phase_ctxt.traits.of_message.inclusion inclusion.messages.include?(message_id) end end def message_name self.class.message_name end end class PassiveCodeCheck < CodeCheck include Passivation end # == DESCRIPTION # Base of metric measurement classes. class MetricMeasurement < Examination def self.required?(phase_ctxt) true end end # == DESCRIPTION # Base of code structure extraction classes. class CodeExtraction < Examination def self.required?(phase_ctxt) true end end end adlint-3.2.14/lib/adlint/analyzer.rb0000644000004100000410000002107312340630463017303 0ustar www-datawww-data# Analyzer classes. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/version" require "adlint/traits" require "adlint/report" require "adlint/metric" require "adlint/phase" require "adlint/lang" require "adlint/source" require "adlint/supp" require "adlint/symbol" require "adlint/monitor" require "adlint/util" require "adlint/ld/phase" module AdLint #:nodoc: class Analyzer def initialize(name, traits, msg_catalog, target_name, output_dpath, log_basename, verbose) @name = name @traits = traits @message_catalog = msg_catalog @target_name = target_name @output_dpath = output_dpath @log_basename = log_basename @verbose = verbose @logger = nil end attr_reader :traits attr_reader :message_catalog attr_reader :logger def run File.open(log_fpath, "w") do |log_io| @logger = Logger.new(log_io).tap { |logger| logger.progname = @name logger.datetime_format = "%F %T " } begin log_start_analysis execute(ProgressMonitor.new(@target_name, phases.size, @verbose)) rescue => ex @logger.fatal(ex) return false end end true end private def execute(monitor) subclass_responsibility end def phases subclass_responsibility end def log_fpath log_fname = @log_basename.add_ext(".log") @output_dpath ? @output_dpath.join(log_fname) : log_fname end def log_start_analysis exam_vers = @traits.exam_packages.map { |exam_pkg| exam_pkg.catalog }.map { |exam_cat| "#{exam_cat.name}-#{exam_cat.short_version}" } msg = "start analysis by adlint-#{SHORT_VERSION} with " if exam_vers.size < 3 msg += exam_vers.join(" and ") else msg += exam_vers[0..-2].join(", ") + " and " + exam_vers.last end @logger.info("#{msg}.") end end # == Single module analysis driver. class SingleModuleAnalyzer < Analyzer def initialize(traits, msg_catalog, src_fpath, strip_num, output_dpath, verbose) super("SMA-#{SHORT_VERSION}", traits, msg_catalog, src_fpath.to_s, output_dpath, src_fpath.strip(strip_num), verbose) @src_fpath = src_fpath @strip_num = strip_num end private def execute(monitor) Report.new(msg_fpath, met_fpath, log_fpath, @verbose) do |report| src = Source.new(@src_fpath, @traits.of_project.file_encoding) phase_ctxt = PhaseContext.new(self, report, monitor) phase_ctxt[:sources] = [src] phase_ctxt[:annotations] = [] phase_ctxt[:suppressors] = MessageSuppressorSet.new phase_ctxt[:symbol_table] = SymbolTable.new begin phases.each { |phase| phase.new(phase_ctxt).execute } phase_ctxt.flush_deferred_report! ensure File.open(i_fpath, "w") do |io| io.set_encoding(Encoding.default_external) io.puts(phase_ctxt[:cc1_source].to_s) end end end rescue if @verbose $stderr.puts "An error was occurred while processing `#{@src_fpath}'." $stderr.puts "See `#{msg_fpath}' and `#{log_fpath}' for more details." end raise end def phases (lang = Language.of(@src_fpath)) ? lang.single_module_phases : [] end def msg_fpath msg_fname = @src_fpath.strip(@strip_num).add_ext(".msg.csv") @output_dpath ? @output_dpath.join(msg_fname) : msg_fname end def met_fpath met_fname = @src_fpath.strip(@strip_num).add_ext(".met.csv") @output_dpath ? @output_dpath.join(met_fname) : met_fname end def i_fpath i_fname = @src_fpath.strip(@strip_num).sub_ext(".i") @output_dpath ? @output_dpath.join(i_fname) : i_fname end end class CrossModuleAnalyzer < Analyzer def initialize(traits, msg_catalog, met_fpaths, output_dpath, verbose) proj_name = traits.of_project.project_name super("CMA-#{SHORT_VERSION}", traits, msg_catalog, proj_name, output_dpath, Pathname.new(proj_name), verbose) @met_fpaths = met_fpaths end private def execute(monitor) Report.new(msg_fpath, met_fpath, log_fpath, @verbose) do |report| phase_ctxt = PhaseContext.new(self, report, monitor) phase_ctxt[:metric_fpaths] = @met_fpaths phase_ctxt[:annotations] = [] phase_ctxt[:suppressors] = MessageSuppressorSet.new phases.each { |phase| phase.new(phase_ctxt).execute } phase_ctxt.flush_deferred_report! end rescue if @verbose $stderr.puts "Error was occurred in cross module analysis." $stderr.puts "See `#{log_fpath}' for more details." end raise end def phases [ Ld::MapTypedefPhase, Ld::MapFunctionPhase, Ld::MapVariablePhase, Ld::BuildCallGraphPhase, Ld::BuildXRefGraphPhase, Ld::PreparePhase, Ld::TypedefReviewPhase, Ld::FunctionReviewPhase, Ld::VariableReviewPhase, Ld::ExaminationPhase ] end def msg_fpath proj_name = @traits.of_project.project_name msg_fname = Pathname.new(proj_name).add_ext(".msg.csv") @output_dpath ? @output_dpath.join(msg_fname) : msg_fname end def met_fpath proj_name = @traits.of_project.project_name met_fname = Pathname.new(proj_name).add_ext(".met.csv") @output_dpath ? @output_dpath.join(met_fname) : met_fname end end # == Configuration files validator. class ConfigurationValidator < Analyzer def initialize(traits, msg_catalog, src_fpath, strip_num, output_dpath, verbose) super("CHK-#{SHORT_VERSION}", traits, msg_catalog, src_fpath.to_s, output_dpath, src_fpath.strip(strip_num), verbose) @src_fpath = src_fpath @strip_num = strip_num end private def execute(monitor) Report.new(msg_fpath, met_fpath, log_fpath, @verbose) do |report| src = Source.new(@src_fpath, @traits.of_project.file_encoding) phase_ctxt = PhaseContext.new(self, report, monitor) phase_ctxt[:sources] = [src] phase_ctxt[:annotations] = [] phase_ctxt[:suppressors] = MessageSuppressorSet.new phase_ctxt[:symbol_table] = SymbolTable.new begin phases.each { |phase| phase.new(phase_ctxt).execute } phase_ctxt.flush_deferred_report! ensure File.open(i_fpath, "w") do |io| io.set_encoding(Encoding.default_external) io.puts(phase_ctxt[:cc1_source].to_s) end end end rescue if @verbose $stderr.puts "An error was occurred while processing `#{@src_fpath}'." $stderr.puts "See `#{msg_fpath}' and `#{log_fpath}' for more details." end raise end def phases (lang = Language.of(@src_fpath)) ? lang.check_phases : [] end def msg_fpath msg_fname = @src_fpath.strip(@strip_num).add_ext(".msg.csv") @output_dpath ? @output_dpath.join(msg_fname) : msg_fname end def met_fpath met_fname = @src_fpath.strip(@strip_num).add_ext(".met.csv") @output_dpath ? @output_dpath.join(met_fname) : met_fname end def i_fpath i_fname = @src_fpath.strip(@strip_num).sub_ext(".i") @output_dpath ? @output_dpath.join(i_fname) : i_fname end end end adlint-3.2.14/lib/adlint/report.rb0000644000004100000410000004154712340630463017001 0ustar www-datawww-data# Analysis report and its manipulation utility. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/message" require "adlint/code" require "adlint/metric" require "adlint/util" module AdLint #:nodoc: class Report def initialize(msg_fpath, met_fpath, log_fpath, verbose, &block) @msg_fpath = msg_fpath @msg_file = open_msg_file(msg_fpath) @met_fpath = met_fpath @met_file = open_met_file(met_fpath) @log_fpath = log_fpath @verbose = verbose @unique_msgs = Set.new @deferred_msgs = [] yield(self) ensure @msg_file.close if @msg_file @met_file.close if @met_file end attr_reader :msg_fpath attr_reader :met_fpath attr_reader :log_fpath # === DESCRIPTION # Writes a message on this report. # # === PARAMETER # _message_:: Message -- Message to be written. # # === RETURN VALUE # Report -- Self. def write_message(msg, suppressors = nil) if suppressors.nil? || !suppressors.suppress?(msg) unless msg.must_be_unique? && !@unique_msgs.add?(msg) if msg.must_be_deferred? @deferred_msgs.push(msg) else rawrite_message(msg) end end end self end def flush_deferred_messages(suppressors) @deferred_msgs.each do |msg| rawrite_message(msg) unless suppressors.suppress?(msg) end @deferred_msgs.clear self end # === DESCRIPTION # Writes a code structure information on this report. # # === PARAMETER # _code_struct_:: CodeStructure -- Code structure info to be written. # # === RETURN VALUE # Report -- Self. def write_code_struct(code_struct) code_struct.print_as_csv(@met_file) self end # === DESCRIPTION # Writes a code quality metric on this report. # # === PARAMETER # _code_metric_:: CodeMetric -- Code metric information to be written. # # === RETURN VALUE # Report -- Self. def write_code_metric(code_metric) code_metric.print_as_csv(@met_file) self end private def rawrite_message(msg) msg.print_as_csv(@msg_file) msg.print_as_str($stderr) unless @verbose end def open_msg_file(fpath) File.open(fpath, "w").tap do |io| io.set_encoding(Encoding.default_external) io.puts(["V", SHORT_VERSION, Time.now.to_s, Dir.getwd].to_csv) end end def open_met_file(fpath) File.open(fpath, "w").tap do |io| io.set_encoding(Encoding.default_external) io.puts(["VER", SHORT_VERSION, Time.now.to_s, Dir.getwd].to_csv) end end end module ReportUtil # NOTE: Host class must respond to #report. # NOTE: Host class must respond to #message_catalog. # NOTE: Host class which needs #write_warning_message must respond to # #suppressors. # === DESCRIPTION # Writes an error message on the report. # # Abbreviation below is available. # write_error_message(msg_name, loc, ...) => E(msg_name, loc, ...) # # === PARAMETER # _msg_name_:: Symbol -- Message name. # _loc_:: Location -- Location where the message points to. # _parts_:: Array< Object > -- Message formatting parts. # # === RETURN VALUE # None. def write_error_message(msg_name, loc, *parts) report.write_message( ErrorMessage.new(message_catalog, msg_name, loc, *parts)) end alias :E :write_error_message # === DESCRIPTION # Writes a warning message on the report. # # Abbreviation below is available. # write_warning_message(loc, ...) => W(loc, ...) # # === PARAMETER # _loc_:: Location -- Location where the message points to. # # === RETURN VALUE # None. def write_warning_message(*args) check_class = self.class check_class = check_class.outer_module until check_class < CodeCheck head_msg = nil args.chunk { |arg| arg.kind_of?(Message) }.each do |*, chunk| case chunk.first when Message if head_msg chunk.each { |ctxt_msg| head_msg.complement_with(ctxt_msg) } end else head_msg = WarningMessage.new(message_catalog, check_class, *chunk) end end report.write_message(head_msg, suppressors) if head_msg end alias :W :write_warning_message # === DESCRIPTION # Creates a context message. # # Abbreviation below is available. # create_context_message(msg_name, loc, ...) => C(msg_name, loc, ...) # # === PARAMETER # _msg_name_:: Symbol -- Message name. # _loc_:: Location -- Location where the message points to. # _parts_:: Array< Object > -- Message formatting parts. # # === RETURN VALUE # ContextMessage -- New context message. def create_context_message(msg_name, loc, *parts) ContextMessage.new(message_catalog, msg_name, self.class, loc, *parts) end alias :C :create_context_message # === DESCRIPTION # Writes a type declaration information on the report. # # Abbreviation below is available. # write_typedcl(...) => TYPEDCL(...) # # === PARAMETER # _loc_:: Location -- Location where the declaration appears. # _dcl_type_:: String -- Type declaration type. # _type_name_:: String -- Type name. # _type_rep_:: String -- Type representation string. # # === RETURN VALUE # None. def write_typedcl(loc, dcl_type, type_name, type_rep) write_code_struct(TypeDcl.new(loc, dcl_type, type_name, type_rep)) end alias :TYPEDCL :write_typedcl # === DESCRIPTION # Writes a global variable decaration information on the report. # # Abbreviation below is available. # write_gvardcl(...) => GVARDCL(...) # # === PARAMETER # _loc_:: Location -- Location where the declaration appears. # _var_name_:: String -- Global variable name. # _type_rep_:: String -- Type representation string. # # === RETURN VALUE # None. def write_gvardcl(loc, var_name, type_rep) write_code_struct(GVarDcl.new(loc, var_name, type_rep)) end alias :GVARDCL :write_gvardcl # === DESCRIPTION # Writes a function declaration information on the report. # # Abbreviation below is available. # write_fundcl(...) => FUNDCL(...) # # === PARAMETER # _loc_:: Location -- Location where the declaration appears. # _linkage_:: String -- Function linkage type string. # _scope_type_:: String -- Declaration scope type string. # _dcl_type_:: String -- Declaration type string. # _fun_id_:: FunctionId -- Identifier of the function. # # === RETURN VALUE # None. def write_fundcl(loc, linkage, scope_type, dcl_type, fun_id) write_code_struct(FunDcl.new(loc, linkage, scope_type, dcl_type, fun_id)) end alias :FUNDCL :write_fundcl # === DESCRIPTION # Writes a variable definition information on the report. # # Abbreviation below is available. # write_vardef(...) => VARDEF(...) # # === PARAMETER # _loc_:: Location -- Location where the definition appears. # _linkage_type_:: String -- Variable linkage type string. # _scope_type_:: String -- Variable scope type string. # _sc_type_:: String -- Variable storage class type. # _var_name_:: String -- Variable name. # _type_rep_:: String -- Variable type representation string. # # === RETURN VALUE # None. def write_vardef(loc, linkage, scope_type, sc_type, var_name, type_rep) write_code_struct(VarDef.new(loc, linkage, scope_type, sc_type, var_name, type_rep)) end alias :VARDEF :write_vardef # === DESCRIPTION # Writes a function definition information on the report. # # Abbreviation below is available. # write_fundef(...) => FUNDEF(...) # # === PARAMETER # _loc_:: Location -- Location where the definition appears. # _linkage_:: String -- Function linkage type string. # _scope_type_:: String -- Definition scope type string. # _fun_id_:: FunctionId -- Identifier of the function. # _lines_:: Integer -- Physical lines. # # === RETURN VALUE # None. def write_fundef(loc, linkage, scope_type, fun_id, lines) write_code_struct(FunDef.new(loc, linkage, scope_type, fun_id, lines)) end alias :FUNDEF :write_fundef # === DESCRIPTION # Writes a macro definition information on the report. # # Abbreviation below is available. # write_macrodef(...) => MACRODEF(...) # # === PARAMETER # _loc_:: Location -- Location where the definition appears. # _macro_name_:: String -- Macro name. # _macro_type_:: String -- Macro type string. # # === RETURN VALUE # None. def write_macrodef(loc, macro_name, macro_type) write_code_struct(MacroDef.new(loc, macro_name, macro_type)) end alias :MACRODEF :write_macrodef # === DESCRIPTION # Writes a label definition information on the report. # # Abbreviation below is available. # write_labeldef(...) => LABELDEF(...) # # === PARAMETER # _loc_:: Location -- Location where the definition appears. # _label_name_:: String -- Label name. # # === RETURN VALUE # None. def write_labeldef(loc, label_name) write_code_struct(LabelDef.new(loc, label_name)) end alias :LABELDEF :write_labeldef # === DESCRIPTION # Writes an initialization information on the report. # # Abbreviation below is available. # write_initialization(...) => INITIALIZATION(...) # # === PARAMETER # _loc_:: Location -- Location where the variable appears. # _var_name_:: String -- Initialized variable name. # _init_rep_:: String -- String representation of the initializer. # # === RETURN VALUE # None. def write_initialization(loc, var_name, init_rep) write_code_struct(Initialization.new(loc, var_name, init_rep)) end alias :INITIALIZATION :write_initialization # === DESCRIPTION # Writes an assignment information on the report. # # Abbreviation below is available. # write_assignment(...) => ASSIGNMENT(...) # # === PARAMETER # _loc_:: Location -- Location where the variable appears. # _var_name_:: String -- Assigned variable name. # _assign_rep_:: String -- String representation of the assignment. # # === RETURN VALUE # None. def write_assignment(loc, var_name, assign_rep) write_code_struct(Assignment.new(loc, var_name, assign_rep)) end alias :ASSIGNMENT :write_assignment # === DESCRIPTION # Writes a header include information on the report. # # Abbreviation below is available. # write_include(...) => INCLUDE(...) # # === PARAMETER # _loc_:: Location -- Location where the directive appears. # _fpath_:: Pathname -- Path name of the included file. # # === RETURN VALUE # None. def write_include(loc, fpath) write_code_struct(Include.new(loc, fpath)) end alias :INCLUDE :write_include # === DESCRIPTION # Writes a function call information on the report. # # Abbreviation below is available. # write_funcall(...) => FUNCALL(...) # # === PARAMETER # _loc_:: Location -- Location where the function call appears. # _caller_fun_:: FunctionId -- Calling function identifier. # _callee_fun_:: FunctionId -- Called function identifier. def write_funcall(loc, caller_fun, callee_fun) write_code_struct(Funcall.new(loc, caller_fun, callee_fun)) end alias :FUNCALL :write_funcall # === DESCRIPTION # Writes a variable cross reference information on the report. # # Abbreviation below is available. # write_xref_variable(...) => XREF_VAR(...) # # === PARAMETER # _loc_:: Location -- Location where the cross-ref appears. # _referrer_:: FunctionId -- Accessing function identifier. # _ref_type_:: String -- Access type string. # _var_name_:: String -- Accessed variable name. # # === RETURN VALUE # None. def write_xref_variable(loc, referrer, ref_type, var_name) write_code_struct(XRefVar.new(loc, referrer, ref_type, var_name)) end alias :XREF_VAR :write_xref_variable # === DESCRIPTION # Writes a function cross reference information on the report. # # Abbreviation below is available. # write_xref_function(...) => XREF_FUN(...) # # === PARAMETER # _loc_:: Location -- Location where the cross-ref appears. # _referrer_:: FunctionId -- Accessing function identifier. # _ref_type_:: String -- Access type string. # _fun_:: FunctionId -- Accessed function identifier. # # === RETURN VALUE # None. def write_xref_function(loc, referrer, ref_type, fun) write_code_struct(XRefFun.new(loc, referrer, ref_type, fun)) end alias :XREF_FUN :write_xref_function def write_literal(loc, lit_type, prefix, suffix, value) write_code_struct(Literal.new(loc, lit_type, prefix, suffix, value)) end alias :LIT :write_literal def write_pp_directive(loc, pp_dire, pp_tokens) write_code_struct(PPDirective.new(loc, pp_dire, pp_tokens)) end alias :PP_DIRECTIVE :write_pp_directive def write_FL_STMT(fpath, stmt_cnt) write_code_metric(FL_STMT_Metric.new(fpath, stmt_cnt)) end alias :FL_STMT :write_FL_STMT def write_FL_FUNC(fpath, fun_cnt) write_code_metric(FL_FUNC_Metric.new(fpath, fun_cnt)) end alias :FL_FUNC :write_FL_FUNC def write_FN_STMT(fun_id, loc, stmt_cnt) write_code_metric(FN_STMT_Metric.new(fun_id, loc, stmt_cnt)) end alias :FN_STMT :write_FN_STMT def write_FN_UNRC(fun_id, loc, unreached_stmt_cnt) write_code_metric(FN_UNRC_Metric.new(fun_id, loc, unreached_stmt_cnt)) end alias :FN_UNRC :write_FN_UNRC def write_FN_LINE(fun_id, loc, fun_lines) write_code_metric(FN_LINE_Metric.new(fun_id, loc, fun_lines)) end alias :FN_LINE :write_FN_LINE def write_FN_PARA(fun_id, loc, param_cnt) write_code_metric(FN_PARA_Metric.new(fun_id, loc, param_cnt)) end alias :FN_PARA :write_FN_PARA def write_FN_UNUV(fun_id, loc, useless_var_cnt) write_code_metric(FN_UNUV_Metric.new(fun_id, loc, useless_var_cnt)) end alias :FN_UNUV :write_FN_UNUV def write_FN_CSUB(fun_id, loc, funcall_cnt) write_code_metric(FN_CSUB_Metric.new(fun_id, loc, funcall_cnt)) end alias :FN_CSUB :write_FN_CSUB def write_FN_GOTO(fun_id, loc, goto_cnt) write_code_metric(FN_GOTO_Metric.new(fun_id, loc, goto_cnt)) end alias :FN_GOTO :write_FN_GOTO def write_FN_RETN(fun_id, loc, ret_cnt) write_code_metric(FN_RETN_Metric.new(fun_id, loc, ret_cnt)) end alias :FN_RETN :write_FN_RETN def write_FN_UELS(fun_id, loc, if_stmt_cnt) write_code_metric(FN_UELS_Metric.new(fun_id, loc, if_stmt_cnt)) end alias :FN_UELS :write_FN_UELS def write_FN_NEST(fun_id, loc, max_nest) write_code_metric(FN_NEST_Metric.new(fun_id, loc, max_nest)) end alias :FN_NEST :write_FN_NEST def write_FN_PATH(fun_id, loc, path_cnt) write_code_metric(FN_PATH_Metric.new(fun_id, loc, path_cnt)) end alias :FN_PATH :write_FN_PATH def write_FN_CYCM(fun_id, loc, cycl_compl) write_code_metric(FN_CYCM_Metric.new(fun_id, loc, cycl_compl)) end alias :FN_CYCM :write_FN_CYCM def write_FN_CALL(fun_sig, loc, caller_cnt) write_code_metric(FN_CALL_Metric.new(fun_sig, loc, caller_cnt)) end alias :FN_CALL :write_FN_CALL private def write_code_struct(code_struct) report.write_code_struct(code_struct) nil end def write_code_metric(code_metric) report.write_code_metric(code_metric) nil end end end adlint-3.2.14/lib/adlint/cc1.rb0000644000004100000410000000373412340630463016130 0ustar www-datawww-data# AdLint::Cc1 package loader. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "adlint/cc1/branch" require "adlint/cc1/builtin" require "adlint/cc1/ctrlexpr" require "adlint/cc1/const" require "adlint/cc1/conv" require "adlint/cc1/domain" require "adlint/cc1/enum" require "adlint/cc1/environ" require "adlint/cc1/expr" require "adlint/cc1/format" require "adlint/cc1/interp" require "adlint/cc1/lexer" require "adlint/cc1/mediator" require "adlint/cc1/object" require "adlint/cc1/operator" require "adlint/cc1/option" require "adlint/cc1/parser" require "adlint/cc1/phase" require "adlint/cc1/resolver" require "adlint/cc1/scanner" require "adlint/cc1/scope" require "adlint/cc1/seqp" require "adlint/cc1/syntax" require "adlint/cc1/trace" require "adlint/cc1/type" require "adlint/cc1/util" require "adlint/cc1/value" adlint-3.2.14/lib/adlint.rb0000644000004100000410000000447612340630463015466 0ustar www-datawww-data# AdLint package loader. # # Author:: Yutaka Yanoh # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # License:: GPLv3+: GNU General Public License version 3 or later # # Owner:: Yutaka Yanoh #-- # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # #++ require "pp" require "pathname" require "fileutils" require "set" require "csv" require "psych" require "yaml" require "strscan" require "stringio" require "forwardable" require "logger" require "adlint/memo" require "adlint/prelude" require "adlint/analyzer" require "adlint/annot" require "adlint/code" require "adlint/exam" require "adlint/traits" require "adlint/driver" require "adlint/error" require "adlint/lang" require "adlint/lexer" require "adlint/message" require "adlint/metric" require "adlint/monitor" require "adlint/phase" require "adlint/report" require "adlint/source" require "adlint/supp" require "adlint/symbol" require "adlint/location" require "adlint/token" require "adlint/util" require "adlint/version" require "adlint/cpp" require "adlint/cc1" require "adlint/ld" module AdLint #:nodoc: Config = Hash.new Config[:libdir] = Pathname.new(__FILE__).realpath.dirname Config[:prefix] = Pathname.new("..").expand_path(Config[:libdir]) Config[:bindir] = Pathname.new("bin").expand_path(Config[:prefix]) Config[:etcdir] = Pathname.new("etc").expand_path(Config[:prefix]) end adlint-3.2.14/metadata.yml0000644000004100000410000011103112340630463015405 0ustar www-datawww-data--- !ruby/object:Gem::Specification name: adlint version: !ruby/object:Gem::Version version: 3.2.14 platform: ruby authors: - Yutaka Yanoh autorequire: bindir: bin cert_chain: [] date: 2014-05-10 00:00:00.000000000 Z dependencies: [] description: | AdLint is a source code static analyzer. It can point out unreliable or nonportable code fragments, and can measure various quality metrics of the source code. It (currently) can analyze source code compliant with ANSI C89 / ISO C90 and partly ISO C99. email: yanoh@users.sourceforge.net executables: - adlint - adlint_sma - adlint_cma - adlint_chk - adlintize extensions: [] extra_rdoc_files: - README files: - AUTHORS - COPYING - ChangeLog - INSTALL - MANIFEST - NEWS - README - Rakefile - TODO - bin/adlint - bin/adlint_chk - bin/adlint_cma - bin/adlint_sma - bin/adlintize - etc/conf.d/fallback/cinit.erb - etc/conf.d/fallback/traits.erb - etc/conf.d/i686-cygwin/cinit-gcc_4.3.4.erb - etc/conf.d/i686-cygwin/traits-gcc_4.3.4.erb - etc/conf.d/i686-devkit/cinit-gcc_4.5.2.erb - etc/conf.d/i686-devkit/traits-gcc_4.5.2.erb - etc/conf.d/i686-linux/cinit-gcc_4.5.1.erb - etc/conf.d/i686-linux/traits-gcc_4.5.1.erb - etc/conf.d/i686-mingw/cinit-gcc_4.6.1.erb - etc/conf.d/i686-mingw/traits-gcc_4.6.1.erb - etc/conf.d/i686-mswin/cinit-msvc_100.erb - etc/conf.d/i686-mswin/traits-msvc_100.erb - etc/conf.d/noarch/GNUmakefile.erb - etc/conf.d/noarch/adlint_all_bat.erb - etc/conf.d/noarch/adlint_all_sh.erb - etc/conf.d/noarch/pinit.erb - etc/conf.d/x86_64-centos_6.4/cinit-gcc_4.4.7.erb - etc/conf.d/x86_64-centos_6.4/traits-gcc_4.4.7.erb - etc/conf.d/x86_64-ubuntu_12.04/cinit-gcc_4.6.3.erb - etc/conf.d/x86_64-ubuntu_12.04/traits-gcc_4.6.3.erb - etc/mesg.d/c_builtin/en_US/messages.yml - etc/mesg.d/c_builtin/ja_JP/messages.yml - etc/mesg.d/core/en_US/messages.yml - etc/mesg.d/core/ja_JP/messages.yml - features/code_check/E0008.feature - features/code_check/E0013.feature - features/code_check/E0016.feature - features/code_check/E0018.feature - features/code_check/W0001.feature - features/code_check/W0002.feature - features/code_check/W0003.feature - features/code_check/W0007.feature - features/code_check/W0010.feature - features/code_check/W0013.feature - features/code_check/W0016.feature - features/code_check/W0017.feature - features/code_check/W0018.feature - features/code_check/W0019.feature - features/code_check/W0021.feature - features/code_check/W0023.feature - features/code_check/W0024.feature - features/code_check/W0025.feature - features/code_check/W0026.feature - features/code_check/W0067.feature - features/code_check/W0070.feature - features/code_check/W0071.feature - features/code_check/W0088.feature - features/code_check/W0093.feature - features/code_check/W0097.feature - features/code_check/W0100.feature - features/code_check/W0104.feature - features/code_check/W0109.feature - features/code_check/W0119.feature - features/code_check/W0120.feature - features/code_check/W0121.feature - features/code_check/W0122.feature - features/code_check/W0123.feature - features/code_check/W0124.feature - features/code_check/W0125.feature - features/code_check/W0126.feature - features/code_check/W0127.feature - features/code_check/W0128.feature - features/code_check/W0129.feature - features/code_check/W0130.feature - features/code_check/W0131.feature - features/code_check/W0132.feature - features/code_check/W0133.feature - features/code_check/W0134.feature - features/code_check/W0135.feature - features/code_check/W0136.feature - features/code_check/W0137.feature - features/code_check/W0138.feature - features/code_check/W0139.feature - features/code_check/W0140.feature - features/code_check/W0141.feature - features/code_check/W0142.feature - features/code_check/W0143.feature - features/code_check/W0144.feature - features/code_check/W0145.feature - features/code_check/W0146.feature - features/code_check/W0147.feature - features/code_check/W0148.feature - features/code_check/W0149.feature - features/code_check/W0150.feature - features/code_check/W0151.feature - features/code_check/W0152.feature - features/code_check/W0153.feature - features/code_check/W0154.feature - features/code_check/W0155.feature - features/code_check/W0156.feature - features/code_check/W0157.feature - features/code_check/W0158.feature - features/code_check/W0159.feature - features/code_check/W0160.feature - features/code_check/W0161.feature - features/code_check/W0162.feature - features/code_check/W0163.feature - features/code_check/W0164.feature - features/code_check/W0165.feature - features/code_check/W0166.feature - features/code_check/W0167.feature - features/code_check/W0168.feature - features/code_check/W0169.feature - features/code_check/W0170.feature - features/code_check/W0171.feature - features/code_check/W0172.feature - features/code_check/W0173.feature - features/code_check/W0174.feature - features/code_check/W0175.feature - features/code_check/W0176.feature - features/code_check/W0177.feature - features/code_check/W0178.feature - features/code_check/W0179.feature - features/code_check/W0180.feature - features/code_check/W0181.feature - features/code_check/W0182.feature - features/code_check/W0183.feature - features/code_check/W0184.feature - features/code_check/W0185.feature - features/code_check/W0186.feature - features/code_check/W0187.feature - features/code_check/W0188.feature - features/code_check/W0189.feature - features/code_check/W0190.feature - features/code_check/W0191.feature - features/code_check/W0192.feature - features/code_check/W0193.feature - features/code_check/W0194.feature - features/code_check/W0195.feature - features/code_check/W0196.feature - features/code_check/W0197.feature - features/code_check/W0198.feature - features/code_check/W0199.feature - features/code_check/W0200.feature - features/code_check/W0201.feature - features/code_check/W0202.feature - features/code_check/W0203.feature - features/code_check/W0204.feature - features/code_check/W0205.feature - features/code_check/W0206.feature - features/code_check/W0207.feature - features/code_check/W0208.feature - features/code_check/W0209.feature - features/code_check/W0210.feature - features/code_check/W0211.feature - features/code_check/W0212.feature - features/code_check/W0213.feature - features/code_check/W0214.feature - features/code_check/W0215.feature - features/code_check/W0216.feature - features/code_check/W0217.feature - features/code_check/W0218.feature - features/code_check/W0219.feature - features/code_check/W0220.feature - features/code_check/W0221.feature - features/code_check/W0222.feature - features/code_check/W0223.feature - features/code_check/W0224.feature - features/code_check/W0225.feature - features/code_check/W0226.feature - features/code_check/W0227.feature - features/code_check/W0228.feature - features/code_check/W0229.feature - features/code_check/W0230.feature - features/code_check/W0231.feature - features/code_check/W0232.feature - features/code_check/W0233.feature - features/code_check/W0234.feature - features/code_check/W0235.feature - features/code_check/W0236.feature - features/code_check/W0237.feature - features/code_check/W0238.feature - features/code_check/W0239.feature - features/code_check/W0240.feature - features/code_check/W0241.feature - features/code_check/W0242.feature - features/code_check/W0243.feature - features/code_check/W0244.feature - features/code_check/W0245.feature - features/code_check/W0246.feature - features/code_check/W0247.feature - features/code_check/W0248.feature - features/code_check/W0249.feature - features/code_check/W0250.feature - features/code_check/W0251.feature - features/code_check/W0252.feature - features/code_check/W0253.feature - features/code_check/W0254.feature - features/code_check/W0422.feature - features/code_check/W0425.feature - features/code_check/W0431.feature - features/code_check/W0432.feature - features/code_check/W0459.feature - features/code_check/W0460.feature - features/code_check/W0461.feature - features/code_check/W0477.feature - features/code_check/W0478.feature - features/code_check/W0479.feature - features/code_check/W0480.feature - features/code_check/W0481.feature - features/code_check/W0482.feature - features/code_check/W0483.feature - features/code_check/W0488.feature - features/code_check/W0489.feature - features/code_check/W0490.feature - features/code_check/W0491.feature - features/code_check/W0492.feature - features/code_check/W0495.feature - features/code_check/W0496.feature - features/code_check/W0497.feature - features/code_check/W0498.feature - features/code_check/W0499.feature - features/code_check/W0500.feature - features/code_check/W0501.feature - features/code_check/W0502.feature - features/code_check/W0534.feature - features/code_check/W0542.feature - features/code_check/W0570.feature - features/code_check/W0573.feature - features/code_check/W0580.feature - features/code_check/W0582.feature - features/code_check/W0583.feature - features/code_check/W0584.feature - features/code_check/W0585.feature - features/code_check/W0599.feature - features/code_check/W0606.feature - features/code_check/W0610.feature - features/code_check/W0611.feature - features/code_check/W0612.feature - features/code_check/W0613.feature - features/code_check/W0635.feature - features/code_check/W0641.feature - features/code_check/W0642.feature - features/code_check/W0643.feature - features/code_check/W0644.feature - features/code_check/W0645.feature - features/code_check/W0646.feature - features/code_check/W0649.feature - features/code_check/W0650.feature - features/code_check/W0655.feature - features/code_check/W0685.feature - features/code_check/W0686.feature - features/code_check/W0687.feature - features/code_check/W0688.feature - features/code_check/W0689.feature - features/code_check/W0690.feature - features/code_check/W0691.feature - features/code_check/W0692.feature - features/code_check/W0694.feature - features/code_check/W0695.feature - features/code_check/W0697.feature - features/code_check/W0698.feature - features/code_check/W0699.feature - features/code_check/W0700.feature - features/code_check/W0703.feature - features/code_check/W0704.feature - features/code_check/W0705.feature - features/code_check/W0707.feature - features/code_check/W0708.feature - features/code_check/W0711.feature - features/code_check/W0712.feature - features/code_check/W0713.feature - features/code_check/W0714.feature - features/code_check/W0715.feature - features/code_check/W0716.feature - features/code_check/W0717.feature - features/code_check/W0718.feature - features/code_check/W0719.feature - features/code_check/W0722.feature - features/code_check/W0723.feature - features/code_check/W0726.feature - features/code_check/W0732.feature - features/code_check/W0733.feature - features/code_check/W0734.feature - features/code_check/W0735.feature - features/code_check/W0745.feature - features/code_check/W0747.feature - features/code_check/W0748.feature - features/code_check/W0749.feature - features/code_check/W0750.feature - features/code_check/W0751.feature - features/code_check/W0752.feature - features/code_check/W0753.feature - features/code_check/W0754.feature - features/code_check/W0755.feature - features/code_check/W0756.feature - features/code_check/W0757.feature - features/code_check/W0758.feature - features/code_check/W0759.feature - features/code_check/W0760.feature - features/code_check/W0761.feature - features/code_check/W0762.feature - features/code_check/W0763.feature - features/code_check/W0764.feature - features/code_check/W0765.feature - features/code_check/W0766.feature - features/code_check/W0767.feature - features/code_check/W0768.feature - features/code_check/W0769.feature - features/code_check/W0780.feature - features/code_check/W0781.feature - features/code_check/W0783.feature - features/code_check/W0786.feature - features/code_check/W0787.feature - features/code_check/W0792.feature - features/code_check/W0793.feature - features/code_check/W0794.feature - features/code_check/W0801.feature - features/code_check/W0805.feature - features/code_check/W0806.feature - features/code_check/W0807.feature - features/code_check/W0808.feature - features/code_check/W0809.feature - features/code_check/W0811.feature - features/code_check/W0830.feature - features/code_check/W0833.feature - features/code_check/W0834.feature - features/code_check/W0835.feature - features/code_check/W1026.feature - features/code_check/W1030.feature - features/code_check/W1031.feature - features/code_check/W1039.feature - features/code_check/W1040.feature - features/code_check/W1041.feature - features/code_check/W1046.feature - features/code_check/W1047.feature - features/code_check/W1050.feature - features/code_check/W1052.feature - features/code_check/W1057.feature - features/code_check/W1058.feature - features/code_check/W1059.feature - features/code_check/W1060.feature - features/code_check/W1061.feature - features/code_check/W1062.feature - features/code_check/W1063.feature - features/code_check/W1064.feature - features/code_check/W1065.feature - features/code_check/W1066.feature - features/code_check/W1067.feature - features/code_check/W1068.feature - features/code_check/W1069.feature - features/code_check/W1070.feature - features/code_check/W1071.feature - features/code_check/W1072.feature - features/code_check/W1073.feature - features/code_check/W1074.feature - features/code_check/W1075.feature - features/code_check/W1076.feature - features/code_check/W1077.feature - features/code_check/W9001.feature - features/code_check/W9003.feature - features/code_extraction/TODO - features/metric_measurement/TODO - features/step_definitions/code_check_steps.rb - features/support/env.rb - lib/adlint.rb - lib/adlint/analyzer.rb - lib/adlint/annot.rb - lib/adlint/cc1.rb - lib/adlint/cc1/branch.rb - lib/adlint/cc1/builtin.rb - lib/adlint/cc1/const.rb - lib/adlint/cc1/conv.rb - lib/adlint/cc1/ctrlexpr.rb - lib/adlint/cc1/domain.rb - lib/adlint/cc1/enum.rb - lib/adlint/cc1/environ.rb - lib/adlint/cc1/expr.rb - lib/adlint/cc1/format.rb - lib/adlint/cc1/interp.rb - lib/adlint/cc1/lexer.rb - lib/adlint/cc1/mediator.rb - lib/adlint/cc1/object.rb - lib/adlint/cc1/operator.rb - lib/adlint/cc1/option.rb - lib/adlint/cc1/parser.rb - lib/adlint/cc1/parser.y - lib/adlint/cc1/phase.rb - lib/adlint/cc1/resolver.rb - lib/adlint/cc1/scanner.rb - lib/adlint/cc1/scope.rb - lib/adlint/cc1/seqp.rb - lib/adlint/cc1/syntax.rb - lib/adlint/cc1/trace.rb - lib/adlint/cc1/type.rb - lib/adlint/cc1/util.rb - lib/adlint/cc1/value.rb - lib/adlint/code.rb - lib/adlint/cpp.rb - lib/adlint/cpp/asm.rb - lib/adlint/cpp/constexpr.rb - lib/adlint/cpp/constexpr.y - lib/adlint/cpp/eval.rb - lib/adlint/cpp/lexer.rb - lib/adlint/cpp/macro.rb - lib/adlint/cpp/phase.rb - lib/adlint/cpp/scanner.rb - lib/adlint/cpp/source.rb - lib/adlint/cpp/subst.rb - lib/adlint/cpp/syntax.rb - lib/adlint/cpp/util.rb - lib/adlint/driver.rb - lib/adlint/error.rb - lib/adlint/exam.rb - lib/adlint/exam/c_builtin.rb - lib/adlint/exam/c_builtin/cc1_check.rb - lib/adlint/exam/c_builtin/cc1_code.rb - lib/adlint/exam/c_builtin/cc1_metric.rb - lib/adlint/exam/c_builtin/cpp_check.rb - lib/adlint/exam/c_builtin/cpp_code.rb - lib/adlint/exam/c_builtin/ld_check.rb - lib/adlint/exam/c_builtin/ld_metric.rb - lib/adlint/lang.rb - lib/adlint/ld.rb - lib/adlint/ld/object.rb - lib/adlint/ld/phase.rb - lib/adlint/ld/typedef.rb - lib/adlint/ld/util.rb - lib/adlint/lexer.rb - lib/adlint/location.rb - lib/adlint/memo.rb - lib/adlint/message.rb - lib/adlint/metric.rb - lib/adlint/monitor.rb - lib/adlint/phase.rb - lib/adlint/prelude.rb - lib/adlint/report.rb - lib/adlint/source.rb - lib/adlint/supp.rb - lib/adlint/symbol.rb - lib/adlint/token.rb - lib/adlint/traits.rb - lib/adlint/util.rb - lib/adlint/version.rb - share/HEADER - share/demo/Makefile - share/demo/ambig_operator/ambig_operator.c - share/demo/arg_points_unset/arg_points_unset.c - share/demo/array_range/array_range.c - share/demo/bad_bitfields/bad_bitfields.c - share/demo/bad_brace/bad_brace.c - share/demo/bad_comment/bad_comment.c - share/demo/bad_const/bad_const.c - share/demo/bad_conv/bad_conv.c - share/demo/bad_enum/bad_enum.c - share/demo/bad_indent/bad_indent.c - share/demo/bad_init/bad_init.c - share/demo/bad_label/bad_label.c - share/demo/bad_line/bad_line.c - share/demo/bad_macro/bad_macro.c - share/demo/bad_return/bad_return.c - share/demo/bitwise_expr/bitwise_expr.c - share/demo/call_by_value/call_by_value.c - share/demo/cross_ref/cross_ref.c - share/demo/dangling_else/dangling_else.c - share/demo/dead_code/dead_code.c - share/demo/deep_nest/deep_nest.c - share/demo/dense_switch/dense_switch.c - share/demo/direct_recur/direct_recur.c - share/demo/div_by_zero/div_by_zero.c - share/demo/dos_source/dos_source.c - share/demo/funptr_cast/funptr_cast.c - share/demo/goto_stmt/goto_stmt.c - share/demo/id_hiding/id_hiding.c - share/demo/ill_defined/ill_defined.c - share/demo/implicit_conv/implicit_conv.c - share/demo/implicit_int/implicit_int.c - share/demo/incomplete_ifelse/incomplete_ifelse.c - share/demo/incomplete_type/incomplete_type.c - share/demo/indirect_recur/indirect_recur_1.c - share/demo/indirect_recur/indirect_recur_1.h - share/demo/indirect_recur/indirect_recur_2.c - share/demo/indirect_recur/indirect_recur_2.h - share/demo/indirect_recur/indirect_recur_3.c - share/demo/indirect_recur/indirect_recur_3.h - share/demo/indirect_recur/indirect_recur_4.c - share/demo/inline_asm/inline_asm.c - share/demo/integer_promotion/integer_promotion.c - share/demo/intro_demo/intro_demo.c - share/demo/intro_demo/intro_demo.h - share/demo/intro_demo/useless_header.h - share/demo/invalid_call/invalid_call.c - share/demo/kandr_fundef/kandr_fundef.c - share/demo/line_comment/line_comment.c - share/demo/local_decl/local_decl.c - share/demo/logical_expr/logical_expr.c - share/demo/logical_trick/logical_trick.c - share/demo/long_sym/long_sym.c - share/demo/loop_var/loop_var.c - share/demo/malloc_or_die/malloc_or_die.c - share/demo/may_be_null/may_be_null.c - share/demo/may_be_null_arith/may_be_null_arith.c - share/demo/may_be_unset/may_be_unset.c - share/demo/mmapped_io/mmapped_io.c - share/demo/multi_break/multi_break.c - share/demo/multi_decl/multi_decl_1.c - share/demo/multi_decl/multi_decl_1.h - share/demo/multi_decl/multi_decl_2.c - share/demo/multi_decl/multi_decl_2.h - share/demo/multi_decl/multi_decl_3.c - share/demo/multi_def/multi_def_1.c - share/demo/multi_def/multi_def_1.h - share/demo/multi_def/multi_def_2.c - share/demo/multi_def/multi_def_2.h - share/demo/multi_def/multi_def_3.c - share/demo/multi_typedef/multi_typedef.c - share/demo/multi_typedef/multi_typedef_1.h - share/demo/multi_typedef/multi_typedef_2.h - share/demo/must_be_false/must_be_false.c - share/demo/must_be_null/must_be_null.c - share/demo/must_be_null_arith/must_be_null_arith.c - share/demo/must_be_true/must_be_true.c - share/demo/no_eof_nl/no_eof_nl.c - share/demo/no_void_arg/no_void_arg.c - share/demo/null_stmt/null_stmt.c - share/demo/octal_const/octal_const.c - share/demo/output_by_param/output_by_param.c - share/demo/overflow/overflow.c - share/demo/press_release/press_release.c - share/demo/redundant_select/redundant_select.c - share/demo/register_vars/register_vars.c - share/demo/reserved_ident/reserved_ident.c - share/demo/retn_lvar_addr/retn_lvar_addr.c - share/demo/sequence_point/sequence_point.c - share/demo/shift_expr/shift_expr.c - share/demo/should_be_typedef/should_be_typedef.c - share/demo/static_paths/static_paths.c - share/demo/static_vars/static_vars.c - share/demo/tag_hiding/tag_hiding.c - share/demo/tricky_incdec/tricky_incdec.c - share/demo/typedef_each_src/typedef_each_src.c - share/demo/undefined_macro/undefined_macro.c - share/demo/uninit_vars/uninit_vars.c - share/demo/union_type/union_type.c - share/demo/unmatch_decl/unmatch_decl_1.c - share/demo/unmatch_decl/unmatch_decl_1.h - share/demo/unmatch_decl/unmatch_decl_2.c - share/demo/unmatch_decl/unmatch_decl_2.h - share/demo/unmatch_decl/unmatch_decl_3.c - share/demo/unmatch_paren_macro/unmatch_paren_macro.c - share/demo/unnamed_member/unnamed_member.c - share/demo/unreachable/unreachable.c - share/demo/useless_exp_funs/useless_exp_funs_1.c - share/demo/useless_exp_funs/useless_exp_funs_1.h - share/demo/useless_exp_funs/useless_exp_funs_2.c - share/demo/useless_exp_vars/useless_export_1.c - share/demo/useless_exp_vars/useless_export_1.h - share/demo/useless_exp_vars/useless_export_2.c - share/demo/useless_expr/useless_expr.c - share/demo/useless_funs/useless_funs_1.c - share/demo/useless_funs/useless_funs_1.h - share/demo/useless_funs/useless_funs_2.c - share/demo/useless_header/useless_header.c - share/demo/useless_header/useless_header_1.h - share/demo/useless_header/useless_header_2.h - share/demo/useless_header/useless_header_3.h - share/demo/useless_header/useless_header_4.h - share/demo/useless_vars/useless_vars.c - share/demo/va_funcall/va_funcall.c - share/demo/various_fundef/various_fundef.c - share/demo/wchar_wstring/wchar_wstring.c - share/demo/wrap_around/wrap_around.c - share/doc/Makefile - share/doc/adlint_on_adqua.png - share/doc/adlint_on_eclipse_en.png - share/doc/adlint_on_eclipse_ja.png - share/doc/adlint_on_vim_en.png - share/doc/adlint_on_vim_ja.png - share/doc/c99gram.dot - share/doc/c99gram.pdf - share/doc/developers_guide_ja.html - share/doc/developers_guide_ja.texi - share/doc/gen_mesg_sections.rb - share/doc/samples/GNUmakefile - share/doc/samples/adlint_traits.yml - share/doc/texinfo.css - share/doc/users_guide_en.html - share/doc/users_guide_en.texi - share/doc/users_guide_ja.html - share/doc/users_guide_ja.texi - share/logo/adlint-110.png - share/logo/adlint-524.png - share/logo/adlint.svg - share/sample/README - share/sample/bison-2.5/adlint/GNUmakefile - share/sample/bison-2.5/adlint/adlint_traits.yml - share/sample/bison-2.5/adlint/lib/GNUmakefile - share/sample/bison-2.5/adlint/lib/adlint_cinit.h - share/sample/bison-2.5/adlint/lib/adlint_pinit.h - share/sample/bison-2.5/adlint/lib/adlint_traits.yml - share/sample/bison-2.5/adlint/src/GNUmakefile - share/sample/bison-2.5/adlint/src/adlint_cinit.h - share/sample/bison-2.5/adlint/src/adlint_pinit.h - share/sample/bison-2.5/adlint/src/adlint_traits.yml - share/sample/ctags-5.8/adlint/GNUmakefile - share/sample/ctags-5.8/adlint/adlint_cinit.h - share/sample/ctags-5.8/adlint/adlint_pinit.h - share/sample/ctags-5.8/adlint/adlint_traits.yml - share/sample/flex-2.5.35/adlint/GNUmakefile - share/sample/flex-2.5.35/adlint/adlint_cinit.h - share/sample/flex-2.5.35/adlint/adlint_pinit.h - share/sample/flex-2.5.35/adlint/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/core/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/core/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/core/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/core/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/enc-trans/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/enc/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/enc/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/enc/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/enc/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-continuation/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-coverage/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-curses/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-date/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-dbm/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-digest/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-dl/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-etc/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-fiber/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-iconv/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-io-console/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-nkf/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-openssl/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-pathname/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-psych/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-pty/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-readline/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-ripper/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-socket/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-stringio/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-strscan/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-syck/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-syslog/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_traits.yml - share/sample/ruby-1.9.3-p0/adlint/ext-zlib/GNUmakefile - share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_cinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_pinit.h - share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_traits.yml - share/sample/screen-4.0.3/adlint/GNUmakefile - share/sample/screen-4.0.3/adlint/adlint_cinit.h - share/sample/screen-4.0.3/adlint/adlint_pinit.h - share/sample/screen-4.0.3/adlint/adlint_traits.yml - share/sample/vim-7.3/adlint/vim/GNUmakefile - share/sample/vim-7.3/adlint/vim/adlint_cinit.h - share/sample/vim-7.3/adlint/vim/adlint_pinit.h - share/sample/vim-7.3/adlint/vim/adlint_traits.yml - share/sample/vim-7.3/adlint/xxd/GNUmakefile - share/sample/vim-7.3/adlint/xxd/adlint_cinit.h - share/sample/vim-7.3/adlint/xxd/adlint_pinit.h - share/sample/vim-7.3/adlint/xxd/adlint_traits.yml - share/sample/zsh-4.3.15/adlint/GNUmakefile - share/sample/zsh-4.3.15/adlint/adlint_traits.yml - share/sample/zsh-4.3.15/adlint/builtins/GNUmakefile - share/sample/zsh-4.3.15/adlint/builtins/adlint_cinit.h - share/sample/zsh-4.3.15/adlint/builtins/adlint_pinit.h - share/sample/zsh-4.3.15/adlint/builtins/adlint_traits.yml - share/sample/zsh-4.3.15/adlint/core/GNUmakefile - share/sample/zsh-4.3.15/adlint/core/adlint_cinit.h - share/sample/zsh-4.3.15/adlint/core/adlint_pinit.h - share/sample/zsh-4.3.15/adlint/core/adlint_traits.yml - share/sample/zsh-4.3.15/adlint/modules/GNUmakefile - share/sample/zsh-4.3.15/adlint/modules/adlint_cinit.h - share/sample/zsh-4.3.15/adlint/modules/adlint_pinit.h - share/sample/zsh-4.3.15/adlint/modules/adlint_traits.yml - share/sample/zsh-4.3.15/adlint/zle/GNUmakefile - share/sample/zsh-4.3.15/adlint/zle/adlint_cinit.h - share/sample/zsh-4.3.15/adlint/zle/adlint_pinit.h - share/sample/zsh-4.3.15/adlint/zle/adlint_traits.yml - spec/adlint/cc1/ctrlexpr_spec.rb - spec/adlint/cc1/domain_spec.rb - spec/adlint/cc1/operator_spec.rb - spec/adlint/cc1/syntax_spec.rb - spec/adlint/cc1/type_spec.rb - spec/adlint/location_spec.rb - spec/conf.d/default_traits.yml - spec/conf.d/empty_cinit.h - spec/conf.d/empty_pinit.h - spec/conf.d/project/foo.c - spec/spec_helper.rb homepage: http://adlint.sourceforge.net/ licenses: - 'GPLv3+: GNU General Public License version 3 or later' metadata: {} post_install_message: | ------------------------------------------------------------------------------- ___ ____ __ ___ _________ / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer / /| | / / / / / / / |/ / / / AdLint - Advanced Lint / __ |/ /_/ / /___/ / /| / / / /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. Thanks for installing AdLint! Please visit our project homepage at . ------------------------------------------------------------------------------- rdoc_options: - "--main" - README - "--charset" - utf-8 require_paths: - lib required_ruby_version: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: 1.9.3 required_rubygems_version: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: '0' requirements: [] rubyforge_project: rubygems_version: 2.2.2 signing_key: specification_version: 4 summary: 'AdLint :: Advanced Lint - An open source and free source code static analyzer' test_files: [] adlint-3.2.14/INSTALL0000644000004100000410000000560012340630463014137 0ustar www-datawww-data-- ___ ____ __ ___ _________ / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer / /| | / / / / / / / |/ / / / AdLint - Advanced Lint / __ |/ /_/ / /___/ / /| / / / /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. This file is part of AdLint. 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 . ++ === Prerequisites * Ruby 1.9.3-p0 or later for normal use [*mandatory*] * GNU Make 3 or later to use adlintized Makefile [optional but recommended] * Racc 1.4.7 for development [optional] === Installation Setup your Ruby interpreter. Then, you can install \AdLint by following instruction. % gem install adlint === Evaluation Tiny sample C language projects are bundled with \AdLint gem. You can evaluate \AdLint by following instructions. First, copy \`intro_demo' project into your workspace. "+adlint+ +--prefix+" command prints the prefix pathname of the \AdLint installation directory. % cp -r `adlint --prefix`/share/demo/intro_demo . Second, generate configuration files for \AdLint. % cd intro_demo % adlintize Following files will be generated. * [+GNUmakefile+] Automatic analysis Makefile for GNU Make. * [+adlint_traits.yml+] \AdLint configuration file. * [+adlint_pinit.h+] Project specific initial header file. * [+adlint_cinit.h+] Compiler specific initial header file. * [+adlint_all.sh+] Automatic analysis shell script. * [+adlint_all.bat+] Automatic analysis mswin bat file. * [+adlint_files.txt+] List file for sh script and bat file. Finally, do analysis. % 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 Following files will be generated. * [+intro_demo.i+] Preprocessed source of +intro_demo.c+. * [+intro_demo.c.met.csv+] Single module code structure and metric information. * [+intro_demo.c.msg.csv+] Single module warning messages. * [+intro_demo.met.csv+] Cross module metric information. * [+intro_demo.msg.csv+] Cross module warning messages. \`+intro_demo.c.msg.csv+' will tell you that the control will never reach to some statements and that division by zero will occur in \`+intro_demo.c+'. adlint-3.2.14/MANIFEST0000644000004100000410000010170712340630463014244 0ustar www-datawww-dataAUTHORS COPYING ChangeLog INSTALL MANIFEST NEWS README Rakefile TODO bin/adlint bin/adlint_chk bin/adlint_cma bin/adlint_sma bin/adlintize etc/conf.d/fallback/cinit.erb etc/conf.d/fallback/traits.erb etc/conf.d/i686-cygwin/cinit-gcc_4.3.4.erb etc/conf.d/i686-cygwin/traits-gcc_4.3.4.erb etc/conf.d/i686-devkit/cinit-gcc_4.5.2.erb etc/conf.d/i686-devkit/traits-gcc_4.5.2.erb etc/conf.d/i686-linux/cinit-gcc_4.5.1.erb etc/conf.d/i686-linux/traits-gcc_4.5.1.erb etc/conf.d/i686-mingw/cinit-gcc_4.6.1.erb etc/conf.d/i686-mingw/traits-gcc_4.6.1.erb etc/conf.d/i686-mswin/cinit-msvc_100.erb etc/conf.d/i686-mswin/traits-msvc_100.erb etc/conf.d/noarch/GNUmakefile.erb etc/conf.d/noarch/adlint_all_bat.erb etc/conf.d/noarch/adlint_all_sh.erb etc/conf.d/noarch/pinit.erb etc/conf.d/x86_64-centos_6.4/cinit-gcc_4.4.7.erb etc/conf.d/x86_64-centos_6.4/traits-gcc_4.4.7.erb etc/conf.d/x86_64-ubuntu_12.04/cinit-gcc_4.6.3.erb etc/conf.d/x86_64-ubuntu_12.04/traits-gcc_4.6.3.erb etc/mesg.d/c_builtin/en_US/messages.yml etc/mesg.d/c_builtin/ja_JP/messages.yml etc/mesg.d/core/en_US/messages.yml etc/mesg.d/core/ja_JP/messages.yml features/code_check/E0008.feature features/code_check/E0013.feature features/code_check/E0016.feature features/code_check/E0018.feature features/code_check/W0001.feature features/code_check/W0002.feature features/code_check/W0003.feature features/code_check/W0007.feature features/code_check/W0010.feature features/code_check/W0013.feature features/code_check/W0016.feature features/code_check/W0017.feature features/code_check/W0018.feature features/code_check/W0019.feature features/code_check/W0021.feature features/code_check/W0023.feature features/code_check/W0024.feature features/code_check/W0025.feature features/code_check/W0026.feature features/code_check/W0067.feature features/code_check/W0070.feature features/code_check/W0071.feature features/code_check/W0088.feature features/code_check/W0093.feature features/code_check/W0097.feature features/code_check/W0100.feature features/code_check/W0104.feature features/code_check/W0109.feature features/code_check/W0119.feature features/code_check/W0120.feature features/code_check/W0121.feature features/code_check/W0122.feature features/code_check/W0123.feature features/code_check/W0124.feature features/code_check/W0125.feature features/code_check/W0126.feature features/code_check/W0127.feature features/code_check/W0128.feature features/code_check/W0129.feature features/code_check/W0130.feature features/code_check/W0131.feature features/code_check/W0132.feature features/code_check/W0133.feature features/code_check/W0134.feature features/code_check/W0135.feature features/code_check/W0136.feature features/code_check/W0137.feature features/code_check/W0138.feature features/code_check/W0139.feature features/code_check/W0140.feature features/code_check/W0141.feature features/code_check/W0142.feature features/code_check/W0143.feature features/code_check/W0144.feature features/code_check/W0145.feature features/code_check/W0146.feature features/code_check/W0147.feature features/code_check/W0148.feature features/code_check/W0149.feature features/code_check/W0150.feature features/code_check/W0151.feature features/code_check/W0152.feature features/code_check/W0153.feature features/code_check/W0154.feature features/code_check/W0155.feature features/code_check/W0156.feature features/code_check/W0157.feature features/code_check/W0158.feature features/code_check/W0159.feature features/code_check/W0160.feature features/code_check/W0161.feature features/code_check/W0162.feature features/code_check/W0163.feature features/code_check/W0164.feature features/code_check/W0165.feature features/code_check/W0166.feature features/code_check/W0167.feature features/code_check/W0168.feature features/code_check/W0169.feature features/code_check/W0170.feature features/code_check/W0171.feature features/code_check/W0172.feature features/code_check/W0173.feature features/code_check/W0174.feature features/code_check/W0175.feature features/code_check/W0176.feature features/code_check/W0177.feature features/code_check/W0178.feature features/code_check/W0179.feature features/code_check/W0180.feature features/code_check/W0181.feature features/code_check/W0182.feature features/code_check/W0183.feature features/code_check/W0184.feature features/code_check/W0185.feature features/code_check/W0186.feature features/code_check/W0187.feature features/code_check/W0188.feature features/code_check/W0189.feature features/code_check/W0190.feature features/code_check/W0191.feature features/code_check/W0192.feature features/code_check/W0193.feature features/code_check/W0194.feature features/code_check/W0195.feature features/code_check/W0196.feature features/code_check/W0197.feature features/code_check/W0198.feature features/code_check/W0199.feature features/code_check/W0200.feature features/code_check/W0201.feature features/code_check/W0202.feature features/code_check/W0203.feature features/code_check/W0204.feature features/code_check/W0205.feature features/code_check/W0206.feature features/code_check/W0207.feature features/code_check/W0208.feature features/code_check/W0209.feature features/code_check/W0210.feature features/code_check/W0211.feature features/code_check/W0212.feature features/code_check/W0213.feature features/code_check/W0214.feature features/code_check/W0215.feature features/code_check/W0216.feature features/code_check/W0217.feature features/code_check/W0218.feature features/code_check/W0219.feature features/code_check/W0220.feature features/code_check/W0221.feature features/code_check/W0222.feature features/code_check/W0223.feature features/code_check/W0224.feature features/code_check/W0225.feature features/code_check/W0226.feature features/code_check/W0227.feature features/code_check/W0228.feature features/code_check/W0229.feature features/code_check/W0230.feature features/code_check/W0231.feature features/code_check/W0232.feature features/code_check/W0233.feature features/code_check/W0234.feature features/code_check/W0235.feature features/code_check/W0236.feature features/code_check/W0237.feature features/code_check/W0238.feature features/code_check/W0239.feature features/code_check/W0240.feature features/code_check/W0241.feature features/code_check/W0242.feature features/code_check/W0243.feature features/code_check/W0244.feature features/code_check/W0245.feature features/code_check/W0246.feature features/code_check/W0247.feature features/code_check/W0248.feature features/code_check/W0249.feature features/code_check/W0250.feature features/code_check/W0251.feature features/code_check/W0252.feature features/code_check/W0253.feature features/code_check/W0254.feature features/code_check/W0422.feature features/code_check/W0425.feature features/code_check/W0431.feature features/code_check/W0432.feature features/code_check/W0459.feature features/code_check/W0460.feature features/code_check/W0461.feature features/code_check/W0477.feature features/code_check/W0478.feature features/code_check/W0479.feature features/code_check/W0480.feature features/code_check/W0481.feature features/code_check/W0482.feature features/code_check/W0483.feature features/code_check/W0488.feature features/code_check/W0489.feature features/code_check/W0490.feature features/code_check/W0491.feature features/code_check/W0492.feature features/code_check/W0495.feature features/code_check/W0496.feature features/code_check/W0497.feature features/code_check/W0498.feature features/code_check/W0499.feature features/code_check/W0500.feature features/code_check/W0501.feature features/code_check/W0502.feature features/code_check/W0534.feature features/code_check/W0542.feature features/code_check/W0570.feature features/code_check/W0573.feature features/code_check/W0580.feature features/code_check/W0582.feature features/code_check/W0583.feature features/code_check/W0584.feature features/code_check/W0585.feature features/code_check/W0599.feature features/code_check/W0606.feature features/code_check/W0610.feature features/code_check/W0611.feature features/code_check/W0612.feature features/code_check/W0613.feature features/code_check/W0635.feature features/code_check/W0641.feature features/code_check/W0642.feature features/code_check/W0643.feature features/code_check/W0644.feature features/code_check/W0645.feature features/code_check/W0646.feature features/code_check/W0649.feature features/code_check/W0650.feature features/code_check/W0655.feature features/code_check/W0685.feature features/code_check/W0686.feature features/code_check/W0687.feature features/code_check/W0688.feature features/code_check/W0689.feature features/code_check/W0690.feature features/code_check/W0691.feature features/code_check/W0692.feature features/code_check/W0694.feature features/code_check/W0695.feature features/code_check/W0697.feature features/code_check/W0698.feature features/code_check/W0699.feature features/code_check/W0700.feature features/code_check/W0703.feature features/code_check/W0704.feature features/code_check/W0705.feature features/code_check/W0707.feature features/code_check/W0708.feature features/code_check/W0711.feature features/code_check/W0712.feature features/code_check/W0713.feature features/code_check/W0714.feature features/code_check/W0715.feature features/code_check/W0716.feature features/code_check/W0717.feature features/code_check/W0718.feature features/code_check/W0719.feature features/code_check/W0722.feature features/code_check/W0723.feature features/code_check/W0726.feature features/code_check/W0732.feature features/code_check/W0733.feature features/code_check/W0734.feature features/code_check/W0735.feature features/code_check/W0745.feature features/code_check/W0747.feature features/code_check/W0748.feature features/code_check/W0749.feature features/code_check/W0750.feature features/code_check/W0751.feature features/code_check/W0752.feature features/code_check/W0753.feature features/code_check/W0754.feature features/code_check/W0755.feature features/code_check/W0756.feature features/code_check/W0757.feature features/code_check/W0758.feature features/code_check/W0759.feature features/code_check/W0760.feature features/code_check/W0761.feature features/code_check/W0762.feature features/code_check/W0763.feature features/code_check/W0764.feature features/code_check/W0765.feature features/code_check/W0766.feature features/code_check/W0767.feature features/code_check/W0768.feature features/code_check/W0769.feature features/code_check/W0780.feature features/code_check/W0781.feature features/code_check/W0783.feature features/code_check/W0786.feature features/code_check/W0787.feature features/code_check/W0792.feature features/code_check/W0793.feature features/code_check/W0794.feature features/code_check/W0801.feature features/code_check/W0805.feature features/code_check/W0806.feature features/code_check/W0807.feature features/code_check/W0808.feature features/code_check/W0809.feature features/code_check/W0811.feature features/code_check/W0830.feature features/code_check/W0833.feature features/code_check/W0834.feature features/code_check/W0835.feature features/code_check/W1026.feature features/code_check/W1030.feature features/code_check/W1031.feature features/code_check/W1039.feature features/code_check/W1040.feature features/code_check/W1041.feature features/code_check/W1046.feature features/code_check/W1047.feature features/code_check/W1050.feature features/code_check/W1052.feature features/code_check/W1057.feature features/code_check/W1058.feature features/code_check/W1059.feature features/code_check/W1060.feature features/code_check/W1061.feature features/code_check/W1062.feature features/code_check/W1063.feature features/code_check/W1064.feature features/code_check/W1065.feature features/code_check/W1066.feature features/code_check/W1067.feature features/code_check/W1068.feature features/code_check/W1069.feature features/code_check/W1070.feature features/code_check/W1071.feature features/code_check/W1072.feature features/code_check/W1073.feature features/code_check/W1074.feature features/code_check/W1075.feature features/code_check/W1076.feature features/code_check/W1077.feature features/code_check/W9001.feature features/code_check/W9003.feature features/code_extraction/TODO features/metric_measurement/TODO features/step_definitions/code_check_steps.rb features/support/env.rb lib/adlint.rb lib/adlint/analyzer.rb lib/adlint/annot.rb lib/adlint/cc1.rb lib/adlint/cc1/branch.rb lib/adlint/cc1/builtin.rb lib/adlint/cc1/const.rb lib/adlint/cc1/conv.rb lib/adlint/cc1/ctrlexpr.rb lib/adlint/cc1/domain.rb lib/adlint/cc1/enum.rb lib/adlint/cc1/environ.rb lib/adlint/cc1/expr.rb lib/adlint/cc1/format.rb lib/adlint/cc1/interp.rb lib/adlint/cc1/lexer.rb lib/adlint/cc1/mediator.rb lib/adlint/cc1/object.rb lib/adlint/cc1/operator.rb lib/adlint/cc1/option.rb lib/adlint/cc1/parser.rb lib/adlint/cc1/parser.y lib/adlint/cc1/phase.rb lib/adlint/cc1/resolver.rb lib/adlint/cc1/scanner.rb lib/adlint/cc1/scope.rb lib/adlint/cc1/seqp.rb lib/adlint/cc1/syntax.rb lib/adlint/cc1/trace.rb lib/adlint/cc1/type.rb lib/adlint/cc1/util.rb lib/adlint/cc1/value.rb lib/adlint/code.rb lib/adlint/cpp.rb lib/adlint/cpp/asm.rb lib/adlint/cpp/constexpr.rb lib/adlint/cpp/constexpr.y lib/adlint/cpp/eval.rb lib/adlint/cpp/lexer.rb lib/adlint/cpp/macro.rb lib/adlint/cpp/phase.rb lib/adlint/cpp/scanner.rb lib/adlint/cpp/source.rb lib/adlint/cpp/subst.rb lib/adlint/cpp/syntax.rb lib/adlint/cpp/util.rb lib/adlint/driver.rb lib/adlint/error.rb lib/adlint/exam.rb lib/adlint/exam/c_builtin.rb lib/adlint/exam/c_builtin/cc1_check.rb lib/adlint/exam/c_builtin/cc1_code.rb lib/adlint/exam/c_builtin/cc1_metric.rb lib/adlint/exam/c_builtin/cpp_check.rb lib/adlint/exam/c_builtin/cpp_code.rb lib/adlint/exam/c_builtin/ld_check.rb lib/adlint/exam/c_builtin/ld_metric.rb lib/adlint/lang.rb lib/adlint/ld.rb lib/adlint/ld/object.rb lib/adlint/ld/phase.rb lib/adlint/ld/typedef.rb lib/adlint/ld/util.rb lib/adlint/lexer.rb lib/adlint/location.rb lib/adlint/memo.rb lib/adlint/message.rb lib/adlint/metric.rb lib/adlint/monitor.rb lib/adlint/phase.rb lib/adlint/prelude.rb lib/adlint/report.rb lib/adlint/source.rb lib/adlint/supp.rb lib/adlint/symbol.rb lib/adlint/token.rb lib/adlint/traits.rb lib/adlint/util.rb lib/adlint/version.rb share/HEADER share/demo/Makefile share/demo/ambig_operator/ambig_operator.c share/demo/arg_points_unset/arg_points_unset.c share/demo/array_range/array_range.c share/demo/bad_bitfields/bad_bitfields.c share/demo/bad_brace/bad_brace.c share/demo/bad_comment/bad_comment.c share/demo/bad_const/bad_const.c share/demo/bad_conv/bad_conv.c share/demo/bad_enum/bad_enum.c share/demo/bad_indent/bad_indent.c share/demo/bad_init/bad_init.c share/demo/bad_label/bad_label.c share/demo/bad_line/bad_line.c share/demo/bad_macro/bad_macro.c share/demo/bad_return/bad_return.c share/demo/bitwise_expr/bitwise_expr.c share/demo/call_by_value/call_by_value.c share/demo/cross_ref/cross_ref.c share/demo/dangling_else/dangling_else.c share/demo/dead_code/dead_code.c share/demo/deep_nest/deep_nest.c share/demo/dense_switch/dense_switch.c share/demo/direct_recur/direct_recur.c share/demo/div_by_zero/div_by_zero.c share/demo/dos_source/dos_source.c share/demo/funptr_cast/funptr_cast.c share/demo/goto_stmt/goto_stmt.c share/demo/id_hiding/id_hiding.c share/demo/ill_defined/ill_defined.c share/demo/implicit_conv/implicit_conv.c share/demo/implicit_int/implicit_int.c share/demo/incomplete_ifelse/incomplete_ifelse.c share/demo/incomplete_type/incomplete_type.c share/demo/indirect_recur/indirect_recur_1.c share/demo/indirect_recur/indirect_recur_1.h share/demo/indirect_recur/indirect_recur_2.c share/demo/indirect_recur/indirect_recur_2.h share/demo/indirect_recur/indirect_recur_3.c share/demo/indirect_recur/indirect_recur_3.h share/demo/indirect_recur/indirect_recur_4.c share/demo/inline_asm/inline_asm.c share/demo/integer_promotion/integer_promotion.c share/demo/intro_demo/intro_demo.c share/demo/intro_demo/intro_demo.h share/demo/intro_demo/useless_header.h share/demo/invalid_call/invalid_call.c share/demo/kandr_fundef/kandr_fundef.c share/demo/line_comment/line_comment.c share/demo/local_decl/local_decl.c share/demo/logical_expr/logical_expr.c share/demo/logical_trick/logical_trick.c share/demo/long_sym/long_sym.c share/demo/loop_var/loop_var.c share/demo/malloc_or_die/malloc_or_die.c share/demo/may_be_null/may_be_null.c share/demo/may_be_null_arith/may_be_null_arith.c share/demo/may_be_unset/may_be_unset.c share/demo/mmapped_io/mmapped_io.c share/demo/multi_break/multi_break.c share/demo/multi_decl/multi_decl_1.c share/demo/multi_decl/multi_decl_1.h share/demo/multi_decl/multi_decl_2.c share/demo/multi_decl/multi_decl_2.h share/demo/multi_decl/multi_decl_3.c share/demo/multi_def/multi_def_1.c share/demo/multi_def/multi_def_1.h share/demo/multi_def/multi_def_2.c share/demo/multi_def/multi_def_2.h share/demo/multi_def/multi_def_3.c share/demo/multi_typedef/multi_typedef.c share/demo/multi_typedef/multi_typedef_1.h share/demo/multi_typedef/multi_typedef_2.h share/demo/must_be_false/must_be_false.c share/demo/must_be_null/must_be_null.c share/demo/must_be_null_arith/must_be_null_arith.c share/demo/must_be_true/must_be_true.c share/demo/no_eof_nl/no_eof_nl.c share/demo/no_void_arg/no_void_arg.c share/demo/null_stmt/null_stmt.c share/demo/octal_const/octal_const.c share/demo/output_by_param/output_by_param.c share/demo/overflow/overflow.c share/demo/press_release/press_release.c share/demo/redundant_select/redundant_select.c share/demo/register_vars/register_vars.c share/demo/reserved_ident/reserved_ident.c share/demo/retn_lvar_addr/retn_lvar_addr.c share/demo/sequence_point/sequence_point.c share/demo/shift_expr/shift_expr.c share/demo/should_be_typedef/should_be_typedef.c share/demo/static_paths/static_paths.c share/demo/static_vars/static_vars.c share/demo/tag_hiding/tag_hiding.c share/demo/tricky_incdec/tricky_incdec.c share/demo/typedef_each_src/typedef_each_src.c share/demo/undefined_macro/undefined_macro.c share/demo/uninit_vars/uninit_vars.c share/demo/union_type/union_type.c share/demo/unmatch_decl/unmatch_decl_1.c share/demo/unmatch_decl/unmatch_decl_1.h share/demo/unmatch_decl/unmatch_decl_2.c share/demo/unmatch_decl/unmatch_decl_2.h share/demo/unmatch_decl/unmatch_decl_3.c share/demo/unmatch_paren_macro/unmatch_paren_macro.c share/demo/unnamed_member/unnamed_member.c share/demo/unreachable/unreachable.c share/demo/useless_exp_funs/useless_exp_funs_1.c share/demo/useless_exp_funs/useless_exp_funs_1.h share/demo/useless_exp_funs/useless_exp_funs_2.c share/demo/useless_exp_vars/useless_export_1.c share/demo/useless_exp_vars/useless_export_1.h share/demo/useless_exp_vars/useless_export_2.c share/demo/useless_expr/useless_expr.c share/demo/useless_funs/useless_funs_1.c share/demo/useless_funs/useless_funs_1.h share/demo/useless_funs/useless_funs_2.c share/demo/useless_header/useless_header.c share/demo/useless_header/useless_header_1.h share/demo/useless_header/useless_header_2.h share/demo/useless_header/useless_header_3.h share/demo/useless_header/useless_header_4.h share/demo/useless_vars/useless_vars.c share/demo/va_funcall/va_funcall.c share/demo/various_fundef/various_fundef.c share/demo/wchar_wstring/wchar_wstring.c share/demo/wrap_around/wrap_around.c share/doc/Makefile share/doc/adlint_on_adqua.png share/doc/adlint_on_eclipse_en.png share/doc/adlint_on_eclipse_ja.png share/doc/adlint_on_vim_en.png share/doc/adlint_on_vim_ja.png share/doc/c99gram.dot share/doc/c99gram.pdf share/doc/developers_guide_ja.html share/doc/developers_guide_ja.texi share/doc/gen_mesg_sections.rb share/doc/samples/GNUmakefile share/doc/samples/adlint_traits.yml share/doc/texinfo.css share/doc/users_guide_en.html share/doc/users_guide_en.texi share/doc/users_guide_ja.html share/doc/users_guide_ja.texi share/logo/adlint-110.png share/logo/adlint-524.png share/logo/adlint.svg share/sample/README share/sample/bison-2.5/adlint/GNUmakefile share/sample/bison-2.5/adlint/adlint_traits.yml share/sample/bison-2.5/adlint/lib/GNUmakefile share/sample/bison-2.5/adlint/lib/adlint_cinit.h share/sample/bison-2.5/adlint/lib/adlint_pinit.h share/sample/bison-2.5/adlint/lib/adlint_traits.yml share/sample/bison-2.5/adlint/src/GNUmakefile share/sample/bison-2.5/adlint/src/adlint_cinit.h share/sample/bison-2.5/adlint/src/adlint_pinit.h share/sample/bison-2.5/adlint/src/adlint_traits.yml share/sample/ctags-5.8/adlint/GNUmakefile share/sample/ctags-5.8/adlint/adlint_cinit.h share/sample/ctags-5.8/adlint/adlint_pinit.h share/sample/ctags-5.8/adlint/adlint_traits.yml share/sample/flex-2.5.35/adlint/GNUmakefile share/sample/flex-2.5.35/adlint/adlint_cinit.h share/sample/flex-2.5.35/adlint/adlint_pinit.h share/sample/flex-2.5.35/adlint/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/core/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/core/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/core/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/core/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/enc-trans/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/enc/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/enc/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/enc/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/enc/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-continuation/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-coverage/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-curses/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-date/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-dbm/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-digest/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-dl/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-etc/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-fiber/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-iconv/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-io-console/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-nkf/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-openssl/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-pathname/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-psych/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-pty/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-readline/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-ripper/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-socket/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-stringio/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-strscan/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-syck/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-syslog/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_traits.yml share/sample/ruby-1.9.3-p0/adlint/ext-zlib/GNUmakefile share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_cinit.h share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_pinit.h share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_traits.yml share/sample/screen-4.0.3/adlint/GNUmakefile share/sample/screen-4.0.3/adlint/adlint_cinit.h share/sample/screen-4.0.3/adlint/adlint_pinit.h share/sample/screen-4.0.3/adlint/adlint_traits.yml share/sample/vim-7.3/adlint/vim/GNUmakefile share/sample/vim-7.3/adlint/vim/adlint_cinit.h share/sample/vim-7.3/adlint/vim/adlint_pinit.h share/sample/vim-7.3/adlint/vim/adlint_traits.yml share/sample/vim-7.3/adlint/xxd/GNUmakefile share/sample/vim-7.3/adlint/xxd/adlint_cinit.h share/sample/vim-7.3/adlint/xxd/adlint_pinit.h share/sample/vim-7.3/adlint/xxd/adlint_traits.yml share/sample/zsh-4.3.15/adlint/GNUmakefile share/sample/zsh-4.3.15/adlint/adlint_traits.yml share/sample/zsh-4.3.15/adlint/builtins/GNUmakefile share/sample/zsh-4.3.15/adlint/builtins/adlint_cinit.h share/sample/zsh-4.3.15/adlint/builtins/adlint_pinit.h share/sample/zsh-4.3.15/adlint/builtins/adlint_traits.yml share/sample/zsh-4.3.15/adlint/core/GNUmakefile share/sample/zsh-4.3.15/adlint/core/adlint_cinit.h share/sample/zsh-4.3.15/adlint/core/adlint_pinit.h share/sample/zsh-4.3.15/adlint/core/adlint_traits.yml share/sample/zsh-4.3.15/adlint/modules/GNUmakefile share/sample/zsh-4.3.15/adlint/modules/adlint_cinit.h share/sample/zsh-4.3.15/adlint/modules/adlint_pinit.h share/sample/zsh-4.3.15/adlint/modules/adlint_traits.yml share/sample/zsh-4.3.15/adlint/zle/GNUmakefile share/sample/zsh-4.3.15/adlint/zle/adlint_cinit.h share/sample/zsh-4.3.15/adlint/zle/adlint_pinit.h share/sample/zsh-4.3.15/adlint/zle/adlint_traits.yml spec/adlint/cc1/ctrlexpr_spec.rb spec/adlint/cc1/domain_spec.rb spec/adlint/cc1/operator_spec.rb spec/adlint/cc1/syntax_spec.rb spec/adlint/cc1/type_spec.rb spec/adlint/location_spec.rb spec/conf.d/default_traits.yml spec/conf.d/empty_cinit.h spec/conf.d/empty_pinit.h spec/conf.d/project/foo.c spec/spec_helper.rb adlint-3.2.14/AUTHORS0000644000004100000410000000176112340630463014162 0ustar www-datawww-data-- ___ ____ __ ___ _________ / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer / /| | / / / / / / / |/ / / / AdLint - Advanced Lint / __ |/ /_/ / /___/ / /| / / / /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. This file is part of AdLint. 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 . ++ * Yutaka Yanoh adlint-3.2.14/TODO0000644000004100000410000000216112340630463013575 0ustar www-datawww-data-- ___ ____ __ ___ _________ / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer / /| | / / / / / / / |/ / / / AdLint - Advanced Lint / __ |/ /_/ / /___/ / /| / / / /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. This file is part of AdLint. 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 . ++ * Support C++ analysis * Improve accuracy of code checks * Support many more preset build environments * Implement automatic traits files generator Any contributions are welcome! adlint-3.2.14/etc/0000755000004100000410000000000012340630463013660 5ustar www-datawww-dataadlint-3.2.14/etc/mesg.d/0000755000004100000410000000000012340630463015035 5ustar www-datawww-dataadlint-3.2.14/etc/mesg.d/core/0000755000004100000410000000000012340630463015765 5ustar www-datawww-dataadlint-3.2.14/etc/mesg.d/core/ja_JP/0000755000004100000410000000000012340630463016750 5ustar www-datawww-dataadlint-3.2.14/etc/mesg.d/core/ja_JP/messages.yml0000644000004100000410000001113212340630463021300 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # # Default message catalog of core package for ja_JP locale. # # ********************************* # ***** DO NOT EDIT THIS FILE ***** # ********************************* # # To override default messages, edit `change_list' section of the traits file. # # [Example] # # % tail traits.yml # message_traits: # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the fatal error of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the error of E9999." version: "3.2.14" message_definition: X0001: classes: - "ERR:X99" format: "䏿˜Žãªä¾‹å¤–æ¡ä»¶ `%s' を検出ã—ã¾ã—ãŸã€‚" X0002: classes: - "ERR:X99" format: "䏿­£ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ ID `%s:%s' を検出ã—ã¾ã—ãŸã€‚" X0003: classes: - "ERR:X99" format: "回復ä¸èƒ½ãªã‚¨ãƒ©ãƒ¼ã«ã‚ˆã‚Šè§£æžå‡¦ç†ã‚’中断ã—ã¾ã—ãŸã€‚詳細㯠`%s' åŠã³ `%s' を確èªã—ã¦ä¸‹ã•ã„。" X0004: classes: - "ERR:X99" format: "䏿­£ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãƒ•ォーマット `%s:%s' を検出ã—ã¾ã—ãŸã€‚" E0001: classes: - "ERR:X99" format: "ã“ã®ä½ç½®ã«ã¯è­˜åˆ¥å­ãŒå¿…è¦ã§ã™ã€‚" E0002: classes: - "ERR:X99" format: "ã“ã®ä½ç½®ã«ã¯ã‚³ãƒ³ãƒžãŒå¿…è¦ã§ã™ã€‚" E0003: classes: - "ERR:X99" format: "識別å­ãƒªã‚¹ãƒˆ(identifier_list)ã®å¾Œã«ä¸æ­£ãªãƒˆãƒ¼ã‚¯ãƒ³ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚" E0004: classes: - "ERR:X99" format: "対応ã™ã‚‹ #endif 行ãŒã‚りã¾ã›ã‚“。" E0005: classes: - "ERR:X99" format: "#else グループ(else_group)ã¯ã€#elif グループ(elif_groups)ã®å¾Œã«è¨˜è¿°ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“。" E0006: classes: - "ERR:X99" format: "トークン `%s' ã§æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ã‚’検知ã—ã¾ã—ãŸã€‚" E0007: classes: - "ERR:X99" format: "æ¡ä»¶å¼ä¸­ã®ãƒˆãƒ¼ã‚¯ãƒ³ `%s' ã§æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ã‚’検出ã—ã¾ã—ãŸã€‚æ¡ä»¶å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã™ã€‚" E0008: classes: - "ERR:X99" format: "トークン `%s' ã§æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ã‚’検知ã—ã¾ã—ãŸã€‚" E0009: classes: - "ERR:X99" format: "ヘッダファイル <%s> ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" E0010: classes: - "ERR:X99" format: "ヘッダファイル \"%s\"ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" E0011: classes: - "ERR:X99" format: "ヘッダファイル <%s> ã®è§£æžä¸­ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ã‚’検出ã—ã¾ã—ãŸã€‚" E0012: classes: - "ERR:X99" format: "ヘッダファイル \"%s\"ã®è§£æžä¸­ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ã‚’検出ã—ã¾ã—ãŸã€‚" E0013: classes: - "ERR:X99" format: "å¼ã«æ–‡ã‚’å«ã‚ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。" E0014: classes: - "ERR:X99" format: "ラベルã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–å¾—ã™ã‚‹ãŸã‚ã® && å˜é …演算å­ã¯ GCC ç‹¬è‡ªã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚" E0015: classes: - "ERR:X99" format: "ラベルã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’指定ã—㟠goto 文㯠GCC ç‹¬è‡ªã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚" E0016: classes: - "ERR:X99" format: "終了ã—ãªã„コメントブロックãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚" E0017: classes: - "ERR:X99" format: "#include ディレクティブ㫠\"ファイルå\" ã¾ãŸã¯ <ファイルå> ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" E0018: classes: - "ERR:X99" format: "大域スコープã«ä½™åˆ†ãªã‚»ãƒŸã‚³ãƒ­ãƒ³ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚" adlint-3.2.14/etc/mesg.d/core/en_US/0000755000004100000410000000000012340630463016776 5ustar www-datawww-dataadlint-3.2.14/etc/mesg.d/core/en_US/messages.yml0000644000004100000410000001007312340630463021331 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # # Default message catalog of core package for en_US locale. # # ********************************* # ***** DO NOT EDIT THIS FILE ***** # ********************************* # # To override default messages, edit `change_list' section of the traits file. # # [Example] # # % tail traits.yml # message_traits: # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the fatal error of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the error of E9999." version: "3.2.14" message_definition: X0001: classes: - "ERR:X99" format: "An unknown exception `%s' is found." X0002: classes: - "ERR:X99" format: "An illegal message ID `%s:%s' is found." X0003: classes: - "ERR:X99" format: "Analysis processing has been stopped due to unrecoverable error. For the details, refer to `%s' and `%s'." X0004: classes: - "ERR:X99" format: "An illegal message format `%s' is found." E0001: classes: - "ERR:X99" format: "An identifier is required in this position." E0002: classes: - "ERR:X99" format: "A comma is required in this position." E0003: classes: - "ERR:X99" format: "Invalid token is found behind identifier list (identifier_list)." E0004: classes: - "ERR:X99" format: "Corresponding #endif doesn't found." E0005: classes: - "ERR:X99" format: "#else group (else_group) must describe after #elif group (elif_groups)." E0006: classes: - "ERR:X99" format: "Syntax error is found in token `%s'." E0007: classes: - "ERR:X99" format: "Syntax error is found in conditional expression token `%s'. Conditional expression evaluate as false." E0008: classes: - "ERR:X99" format: "Syntax error is found in token `%s'." E0009: classes: - "ERR:X99" format: "A header file of <%s> doesn't found." E0010: classes: - "ERR:X99" format: "A header file of \"%s\" doesn't found." E0011: classes: - "ERR:X99" format: "Syntax error is found under analysis of <%s>." E0012: classes: - "ERR:X99" format: "Syntax error is found under analysis of \"%s\"." E0013: classes: - "ERR:X99" format: "Statement cannot include in syntax." E0014: classes: - "ERR:X99" format: "'&&' monadic operator to get a label address is GCC original add-on." E0015: classes: - "ERR:X99" format: "'goto' statement with specified label address is GCC original add-on." E0016: classes: - "ERR:X99" format: "Unfinished comment block is found." E0017: classes: - "ERR:X99" format: "#include expects \"filename\" or ." E0018: classes: - "ERR:X99" format: "Extra semicolon appears in the global scope." adlint-3.2.14/etc/mesg.d/c_builtin/0000755000004100000410000000000012340630463017005 5ustar www-datawww-dataadlint-3.2.14/etc/mesg.d/c_builtin/ja_JP/0000755000004100000410000000000012340630463017770 5ustar www-datawww-dataadlint-3.2.14/etc/mesg.d/c_builtin/ja_JP/messages.yml0000644000004100000410000032572312340630463022336 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # # Default message catalog of c_builtin examination package for ja_JP locale. # # ********************************* # ***** DO NOT EDIT THIS FILE ***** # ********************************* # # To override default messages, edit `change_list' section of the traits file. # # [Example] # # % tail traits.yml # message_traits: # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the fatal error of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the error of E9999." version: "3.2.14" message_definition: W0001: classes: - "UNC:X99" format: "括弧 `()' ã®ãƒã‚¹ãƒˆã®æ·±ã•㌠32 ã‚’è¶…ãˆã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯ã€ISO C90 æ¨™æº–è¦æ ¼ã«å޳坆ã«åˆè‡´ã—ã¦ã„ã¾ã›ã‚“。" W0002: classes: - "UNC:X99" format: "関数 `%s()' ã®å®šç¾©ã«ãŠã„ã¦ã€è­˜åˆ¥å­ã¨ä»®å¼•数宣言を分ã‘ã¦è¨˜è¿°ã™ã‚‹ã®ã¯ã€å¤ã„スタイルã§ã™ã€‚" W0003: classes: - "UNC:X99" format: "ã“ã® switch æ–‡ã«ã¯ default ラベルãŒå«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。" W0007: classes: - "UNC:X99" format: "ç›´å‰ã® case 節ã‚ã‚‹ã„㯠default ç¯€ã®æœ«å°¾ã«ã€break æ–‡ã¾ãŸã¯ return æ–‡ãŒã‚りã¾ã›ã‚“。" W0010: classes: - "UNC:X99" format: "ã“ã®ä¸‰é …演算å­(æ¡ä»¶æ¼”ç®—å­)ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«å‰¯ä½œç”¨ãŒã‚りã¾ã™ã€‚" W0013: classes: - "UNC:X99" format: "ç¹°ã‚Šè¿”ã—æ–‡ã®ä¸­ã§ã€continue æ–‡ãŒä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚" W0016: classes: - "UNC:X99" format: "å¤‰æ›æŒ‡å®šå­ã®ãƒ•ィールド幅㌠509 文字を超ãˆã¦ã„ã¾ã™ã€‚" W0017: classes: - "UNC:X99" format: "å¤‰æ›æŒ‡å®šå­ã®ãƒ•ィールド幅㌠509 文字を超ãˆã¦ã„ã¾ã™ã€‚" W0018: classes: - "UNC:X99" format: "å¤‰æ›æŒ‡å®šå­ã®ç²¾åº¦å¹…㌠509 文字を超ãˆã¦ã„ã¾ã™ã€‚" W0019: classes: - "UNC:X99" format: "ã“ã®ãƒã‚¤ãƒ³ã‚¿ã‚­ãƒ£ã‚¹ãƒˆã¯ã€const 修飾を削除ã—ã¦ã„ã‚‹ã®ã§å±é™ºã§ã™ã€‚" W0021: classes: - "UNC:X99" format: "ã“ã®ãƒã‚¤ãƒ³ã‚¿ã‚­ãƒ£ã‚¹ãƒˆã¯ã€volatile 修飾を削除ã—ã¦ã„ã‚‹ã®ã§å±é™ºã§ã™ã€‚" W0023: classes: - "UNC:X99" format: "ãƒã‚¤ãƒ³ã‚¿åž‹ã®å¤‰æ•°ã«å¯¾ã—ã¦ç®—術演算ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚" W0024: classes: - "UNC:X99" format: "ãƒã‚¤ãƒ³ã‚¿åž‹ã®å¤‰æ•°ã«å¯¾ã—ã¦ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã¾ãŸã¯ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚" W0025: classes: - "UNC:X99" format: "`%s' ã¯ã€æ—¢ã«ã“ã®ãƒ•ァイルã‹ã‚‰ç›´æŽ¥ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã™ã€‚" W0026: classes: - "UNC:X99" format: "`%s' ã¯ã€æ—¢ã«ã“ã®ãƒ•ァイルã‹ã‚‰é–“接的ã«ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã™ã€‚" W0027: classes: - "UNC:X99" format: "ãƒã‚¤ãƒ³ã‚¿åž‹ã®å¤‰æ•°ã«å¯¾ã—ã¦æ¯”較演算ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚" W0028: classes: - "UNC:X99" format: "NULL ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚" W0030: classes: - "UNC:X99" format: "NULL ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚" W0031: classes: - "UNC:X99" format: "仮引数 `%s' ã¯ã€ã“ã®é–¢æ•°ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã›ã‚“。" W0033: classes: - "UNC:X99" format: "ラベル `%s:' ã¯ã€ã“ã®é–¢æ•°ã®ä¸­ã§ä½¿ã‚れã¦ã„ãªã„ãŸã‚ã€å‰Šé™¤ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" W0035: classes: - "UNC:X99" format: "`&&' ã¾ãŸã¯ `||' ã®å³ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯ã€ç®—è¡“åž‹ã¾ãŸã¯ãƒã‚¤ãƒ³ã‚¿åž‹ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。" W0036: classes: - "UNC:X99" format: "宣言å­ã®ä¸­ã®ä¿®é£¾å­ã®æ•°ãŒ 12 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。" W0037: classes: - "UNC:X99" format: "構造体ã¾ãŸã¯å…±ç”¨ä½“ã®ãƒã‚¹ãƒˆãŒ 15 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。" W0038: classes: - "UNC:X99" format: "オブジェクト `%s' ã®ã‚µã‚¤ã‚ºãŒ 32767 ãƒã‚¤ãƒˆã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。" W0039: classes: - "UNC:X99" format: "ブロックã®ä¸­ã®ãƒ­ãƒ¼ã‚«ãƒ«ãªè­˜åˆ¥å­ã®æ•°ãŒ 127 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。" W0040: classes: - "UNC:X99" format: "ビットフィールド㌠signed ã¾ãŸã¯ unsigned 付ãã§å®£è¨€ã•れã¦ã„ã¾ã›ã‚“。" W0041: classes: - "UNC:X99" format: "構造体ã¾ãŸã¯å…±ç”¨ä½“ã®ãƒ¡ãƒ³ãƒã®æ•°ãŒ 127 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。" W0042: classes: - "UNC:X99" format: "åˆ—æŒ™å®šæ•°ã®æ•°ãŒ 127 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。" W0043: classes: - "UNC:X99" format: "é…列ã®åˆæœŸå€¤ãŒã€å®£è¨€ã•れãŸé…列ã®ã‚µã‚¤ã‚ºã«è¶³ã‚Šã¾ã›ã‚“。残りã®é…列è¦ç´ ã¯ã‚¼ãƒ­ã§åˆæœŸåŒ–ã•れã¾ã™ã€‚" W0049: classes: - "UNC:X99" format: "制御構造ã®ãƒã‚¹ãƒˆãŒ 15 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。" W0050: classes: - "UNC:X99" format: "case ãƒ©ãƒ™ãƒ«ã®æ•°ãŒ 257 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。" W0051: classes: - "UNC:X99" format: "å¤–éƒ¨è­˜åˆ¥å­ `%s' ãŒä»–ã®è­˜åˆ¥å­åã¨ã€ãƒªãƒ³ã‚«ç‰¹æ€§ã§æŒ‡å®šã•ã‚ŒãŸæ–‡å­—æ•°ã®ç¯„囲内ã§åŒºåˆ¥ã§ãã¾ã›ã‚“。" W0052: classes: - "UNC:X99" format: "è­˜åˆ¥å­ `%s' ãŒä»–ã®è­˜åˆ¥å­åã¨ã€ã‚³ãƒ³ãƒ‘ã‚¤ãƒ©ç‰¹æ€§ã§æŒ‡å®šã•ã‚ŒãŸæ–‡å­—æ•°ã®ç¯„囲内ã§åŒºåˆ¥ã§ãã¾ã›ã‚“。" W0053: classes: - "UNC:X99" format: "`#include \"%s\"' ã®ãƒã‚¹ãƒˆãŒ 8 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。" W0054: classes: - "UNC:X99" format: "`#if...' ã®ãƒã‚¹ãƒˆã®æœ€å¤§å€¤ãŒ 8 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。" W0055: classes: - "UNC:X99" format: "ãƒžã‚¯ãƒ­å®šç¾©ã®æ•°ãŒ 1024 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。" W0056: classes: - "UNC:X99" format: "関数形å¼ãƒžã‚¯ãƒ­ã®ä»®å¼•æ•°ã®æ•°ãŒ 31 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。" W0057: classes: - "UNC:X99" format: "関数形å¼ãƒžã‚¯ãƒ­ã®å‘¼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒ 31 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。" W0058: classes: - "UNC:X99" format: "æ–‡å­—åˆ—ãƒªãƒ†ãƒ©ãƒ«ã®æ–‡å­—数㌠509 ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ãƒ—ログラム㯠ISO C90 æ¨™æº–è¦æ ¼ã«åŽ³å¯†ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“。" W0059: classes: - "UNC:X99" format: "ã“ã®ãƒ•ァイルã®è¡Œæœ«ã« Ctrl-M(^M) 制御文字ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚" W0060: classes: - "UNC:X99" format: "ã“ã®ãƒ•ァイル内㫠Ctrl-Z(^Z) 制御文字ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚" W0061: classes: - "UNC:X99" format: "`%s' 㯠ISO C æ¨™æº–è¦æ ¼ã®æ­£å¼ãªäºˆç´„語ã§ã¯ã‚りã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—無視ã—ã¾ã™ã€‚" W0062: classes: - "UNC:X99" format: "`__typeof__' 㯠ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚" W0063: classes: - "UNC:X99" format: "`__alignof__' 㯠ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚" W0064: classes: - "UNC:X99" format: "2 進数整数リテラルãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚" W0065: classes: - "UNC:X99" format: "代入演算å­ã®å·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã‚’キャストã—ã¦ã¯ãªã‚Šã¾ã›ã‚“。" W0066: classes: - "UNC:X99" format: "`main()' 関数ã¯ã€`int (void)' ã¾ãŸã¯ `int (int, char *[])' ã®ã©ã¡ã‚‰ã‹ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。" W0067: classes: - "UNC:X99" format: "ãƒã‚¹ãƒˆã•ã‚ŒãŸæ§‹é€ ä½“ã®ãƒ¡ãƒ³ãƒã«ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚" W0068: classes: - "UNC:X99" format: "ビットã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã« `.' を使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚" W0069: classes: - "UNC:X99" format: "`/*' ã§å§‹ã¾ã‚‹ã‚³ãƒ¡ãƒ³ãƒˆã®ä¸­ã« `/*' ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ãƒã‚¹ãƒˆã•れãŸã‚³ãƒ¡ãƒ³ãƒˆã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã¯èªã‚られã¦ã„ã¾ã›ã‚“。" W0070: classes: - "UNC:X99" format: "インクルードã•れã¦ã„ã‚‹ <%s> ã®å†…容ã¯ç¿»è¨³å˜ä½ã®ä¸­ã§å…¨ãå‚ç…§ã•れã¦ã„ã¾ã›ã‚“。削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" W0071: classes: - "UNC:X99" format: "インクルードã•れã¦ã„ã‚‹ \"%s\" ã®å†…容ã¯ç¿»è¨³å˜ä½ã®ä¸­ã§å…¨ãå‚ç…§ã•れã¦ã„ã¾ã›ã‚“。削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" W0072: classes: - "UNC:X99" format: "基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ãƒ˜ãƒƒãƒ€ãƒ•ァイルåã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0073: classes: - "UNC:X99" format: "ã“ã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ•ァイルã«ã¯ã€ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã‚¬ãƒ¼ãƒ‰ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。" W0076: classes: - "UNC:X99" format: "ã“ã® 16 進整数リテラルã«ã¯ã€æŽ¥å°¾èªž `U' ã¾ãŸã¯ `u' ãŒä»˜ã‘られã¦ã„ã¾ã›ã‚“。" W0077: classes: - "UNC:X99" format: "接尾語ã¨ã—ã¦å°æ–‡å­—ã® `l' ãŒæ•´æ•°ã¾ãŸã¯æµ®å‹•å°æ•°ç‚¹æ•°ã«ä»˜ã‘られã¦ã„ã¾ã™ã€‚" W0078: classes: - "UNC:X99" format: "仮引数並ã³ãŒãªã„関数ãŒå®£è¨€ã•れã¦ã„ã¾ã™ã€‚" W0079: classes: - "UNC:X99" format: "ã“ã®é…列ã¯ã€åˆæœŸå€¤ã®æ–‡å­—列リテラルã®çµ‚端文字 `\\0' ã‚’ä¿æŒã§ãã¾ã›ã‚“。" W0080: classes: - "UNC:X99" format: "const 修飾ã•れãŸã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトãŒã€æ˜Žç¤ºçš„ã«åˆæœŸåŒ–ã•れãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚" W0081: classes: - "UNC:X99" format: "å˜é …æ¼”ç®—å­ `-' ã‚’ unsigned int åž‹ã€unsigned long åž‹ã€unsigned long long åž‹ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«å¯¾ã—ã¦ä½¿ã†ã¨ã€ç¬¦å·ç„¡ã—åž‹ã«ãªã£ã¦ã—ã¾ã„ã¾ã™ã€‚" W0082: classes: - "UNC:X99" format: "å˜é …æ¼”ç®—å­ `-' を符å·ç„¡ã—ã®æ½œåœ¨åž‹ `%s' ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«å¯¾ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚" W0084: classes: - "UNC:X99" format: "ã“ã®ã‚«ãƒ³ãƒžæ¼”ç®—å­ `,' ã®å·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«ã¯å‰¯ä½œç”¨ã‚’ã‚‚ã¤å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。" W0085: classes: - "UNC:X99" format: "ã“ã®æ–‡ã«ã¯å‰¯ä½œç”¨ãŒã‚りã¾ã›ã‚“。誤りã®ã‚ã‚‹å¯èƒ½æ€§ãŒé«˜ã„ã§ã™ã€‚" W0086: classes: - "UNC:X99" format: "三項演算å­(æ¡ä»¶æ¼”ç®—å­)ã®ä¸­ã§ã€2 番目ã‚ã‚‹ã„㯠3 番目ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚" W0087: classes: - "UNC:X99" format: "カンマ演算å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚" W0088: classes: - "UNC:X99" format: "è«–ç†æ¼”ç®—å­ã®å³å´ã®å¼ã¯ã€å‰¯ä½œç”¨ãŒãªã„冗長ãªå¼ã§ã™ã€‚" W0093: classes: - "UNC:X99" format: "ゼロã«ãªã‚‹ã“ã¨ãŒã‚る値ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚" W0094: classes: - "UNC:X99" format: "使用ä¸å¯" W0096: classes: - "UNC:X99" format: "ゼロã«ãªã‚‹å®šæ•°å¼ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚" W0097: classes: - "UNC:X99" format: "ゼロã®å€¤ã§é™¤ç®—ã—ã¦ã„ã¾ã™ã€‚" W0100: classes: - "UNC:X99" format: "変数 `%s' ã¯åˆæœŸå€¤ã‚’設定後ã«å†ä»£å…¥ã•れã¾ã›ã‚“。変数を const 付ãã§åˆæœŸå€¤ã‚’指定ã—ã¦å®šç¾©ã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" W0101: classes: - "UNC:X99" format: "自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€ã‚ˆã‚Šé•·ã„寿命をæŒã¤ãƒã‚¤ãƒ³ã‚¿ã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚" W0102: classes: - "UNC:X99" format: "自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€é–¢æ•°ã®ä»®å¼•数を介ã—ã¦æˆ»ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚" W0103: classes: - "UNC:X99" format: "自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€æˆ»ã‚Šå€¤ã¨ã—ã¦é–¢æ•°ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚" W0104: classes: - "UNC:X99" format: "仮引数 `%s' ã¯å€¤ãŒå¤‰ã‚りã¾ã›ã‚“。const 付ãã§å®£è¨€ã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" W0105: classes: - "UNC:X99" format: "ãƒã‚¤ãƒ³ã‚¿ä»®å¼•æ•° `%s' ãŒæŒ‡ã—ã¦ã„るオブジェクトã¯é–¢æ•°å†…ã§å¤‰ã‚らãªã„ã®ã§ã€const オブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿åž‹ã¨ã—ã¦å®£è¨€ã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" W0107: classes: - "UNC:X99" format: "自動変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€static 付ãローカルãƒã‚¤ãƒ³ã‚¿ã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚" W0108: classes: - "UNC:X99" format: "代入演算å­ãŒè«–ç†æ¼”ç®—å¼ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0109: classes: - "UNC:X99" format: "ã“ã®é–¢æ•°ã®å®£è¨€ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。çœç•¥ã•れãŸã‚‚ã®ã¨ã¿ãªã—ã€`extern int %s()' を挿入ã—ã¾ã™ã€‚" W0110: classes: - "UNC:X99" format: "æµ®å‹•å°æ•°ç‚¹åž‹ã®å¤‰æ•°ãŒ for æ–‡ã®ãƒ«ãƒ¼ãƒ—カウンタã¨ã—ã¦ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0112: classes: - "UNC:X99" format: "æµ®å‹•å°æ•°ç‚¹ã®å¼ã‚’等価演算å­ã§æ¯”較ã—ã¦ã„ã¾ã™ã€‚" W0114: classes: - "UNC:X99" format: "ã“ã®åˆ¶å¾¡å¼ã¯æ˜Žç¤ºçš„ãªè«–ç†æ¼”ç®—ã§ã¯ã‚りã¾ã›ã‚“。" W0115: classes: - "UNC:X99" format: "符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã¾ã™ã€‚" W0116: classes: - "UNC:X99" format: "符å·ç„¡ã—左シフト演算 `<<' ã¯ã€ä¸Šä½ãƒ“ットを切りæ¨ã¦ã‚‹æã‚ŒãŒã‚りã¾ã™ã€‚" W0117: classes: - "UNC:X99" format: "`%s' ã®å®šç¾©ã¯å¤–部çµåˆã‚’æŒã¡ã¾ã™ãŒã€å®šç¾©ã‚ˆã‚Šå‰ã«ãã®å®£è¨€ãŒã‚りã¾ã›ã‚“。" W0118: classes: - "UNC:X99" format: "外部çµåˆã‚’æŒã¤ `%s' ã®å®£è¨€ãŒã€ãƒ˜ãƒƒãƒ€ãƒ•ァイルã®ä¸­ã«ã‚りã¾ã›ã‚“。" W0119: classes: - "UNC:X99" format: "暗黙的㫠char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0120: classes: - "UNC:X99" format: "暗黙的㫠char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0121: classes: - "UNC:X99" format: "暗黙的㫠char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0122: classes: - "UNC:X99" format: "暗黙的㫠char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0123: classes: - "UNC:X99" format: "暗黙的㫠char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0124: classes: - "UNC:X99" format: "暗黙的㫠char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0125: classes: - "UNC:X99" format: "暗黙的㫠char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0126: classes: - "UNC:X99" format: "暗黙的㫠char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0127: classes: - "UNC:X99" format: "暗黙的㫠char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0128: classes: - "UNC:X99" format: "暗黙的㫠char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0129: classes: - "UNC:X99" format: "暗黙的㫠char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0130: classes: - "UNC:X99" format: "暗黙的㫠char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0131: classes: - "UNC:X99" format: "暗黙的㫠char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0132: classes: - "UNC:X99" format: "暗黙的㫠unsigned char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0133: classes: - "UNC:X99" format: "暗黙的㫠signed char åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0134: classes: - "UNC:X99" format: "暗黙的㫠signed short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0135: classes: - "UNC:X99" format: "暗黙的㫠unsigned short åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0136: classes: - "UNC:X99" format: "暗黙的㫠signed int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0137: classes: - "UNC:X99" format: "暗黙的㫠unsigned int åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0138: classes: - "UNC:X99" format: "暗黙的㫠signed long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0139: classes: - "UNC:X99" format: "暗黙的㫠unsigned long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0140: classes: - "UNC:X99" format: "暗黙的㫠signed long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0141: classes: - "UNC:X99" format: "暗黙的㫠unsigned long long åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0142: classes: - "UNC:X99" format: "暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0143: classes: - "UNC:X99" format: "暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0144: classes: - "UNC:X99" format: "暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0145: classes: - "UNC:X99" format: "暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0146: classes: - "UNC:X99" format: "暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0147: classes: - "UNC:X99" format: "暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0148: classes: - "UNC:X99" format: "暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0149: classes: - "UNC:X99" format: "暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0150: classes: - "UNC:X99" format: "暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0151: classes: - "UNC:X99" format: "暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0152: classes: - "UNC:X99" format: "暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0153: classes: - "UNC:X99" format: "暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0154: classes: - "UNC:X99" format: "暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0155: classes: - "UNC:X99" format: "暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0156: classes: - "UNC:X99" format: "暗黙的㫠unsigned long long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0157: classes: - "UNC:X99" format: "暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0158: classes: - "UNC:X99" format: "暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0159: classes: - "UNC:X99" format: "暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0160: classes: - "UNC:X99" format: "暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0161: classes: - "UNC:X99" format: "暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0162: classes: - "UNC:X99" format: "暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0163: classes: - "UNC:X99" format: "暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0164: classes: - "UNC:X99" format: "暗黙的㫠signed short åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0165: classes: - "UNC:X99" format: "暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0166: classes: - "UNC:X99" format: "暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0167: classes: - "UNC:X99" format: "暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0168: classes: - "UNC:X99" format: "暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0169: classes: - "UNC:X99" format: "暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0170: classes: - "UNC:X99" format: "暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0171: classes: - "UNC:X99" format: "暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0172: classes: - "UNC:X99" format: "暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0173: classes: - "UNC:X99" format: "暗黙的㫠signed char åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0174: classes: - "UNC:X99" format: "暗黙的㫠singed short åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0175: classes: - "UNC:X99" format: "暗黙的㫠signed int åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0176: classes: - "UNC:X99" format: "暗黙的㫠signed long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0177: classes: - "UNC:X99" format: "暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0178: classes: - "UNC:X99" format: "暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0179: classes: - "UNC:X99" format: "暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0180: classes: - "UNC:X99" format: "暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0181: classes: - "UNC:X99" format: "暗黙的㫠signed long long åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0182: classes: - "UNC:X99" format: "暗黙的㫠unsigned char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0183: classes: - "UNC:X99" format: "暗黙的㫠unsigned char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0184: classes: - "UNC:X99" format: "暗黙的㫠unsigned char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0185: classes: - "UNC:X99" format: "暗黙的㫠signed char åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0186: classes: - "UNC:X99" format: "暗黙的㫠signed char åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0187: classes: - "UNC:X99" format: "暗黙的㫠signed char åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0188: classes: - "UNC:X99" format: "暗黙的㫠signed short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0189: classes: - "UNC:X99" format: "暗黙的㫠signed short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0190: classes: - "UNC:X99" format: "暗黙的㫠signed short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0191: classes: - "UNC:X99" format: "暗黙的㫠unsigned short åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0192: classes: - "UNC:X99" format: "暗黙的㫠unsigned short åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0193: classes: - "UNC:X99" format: "暗黙的㫠unsigned short åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0194: classes: - "UNC:X99" format: "暗黙的㫠signed int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0195: classes: - "UNC:X99" format: "暗黙的㫠signed int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0196: classes: - "UNC:X99" format: "暗黙的㫠signed int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0197: classes: - "UNC:X99" format: "暗黙的㫠unsigned int åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0198: classes: - "UNC:X99" format: "暗黙的㫠unsigned int åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0199: classes: - "UNC:X99" format: "暗黙的㫠unsigned int åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0200: classes: - "UNC:X99" format: "暗黙的㫠signed long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0201: classes: - "UNC:X99" format: "暗黙的㫠signed long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0202: classes: - "UNC:X99" format: "暗黙的㫠signed long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0203: classes: - "UNC:X99" format: "暗黙的㫠unsigned long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0204: classes: - "UNC:X99" format: "暗黙的㫠unsigned long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0205: classes: - "UNC:X99" format: "暗黙的㫠unsigned long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0206: classes: - "UNC:X99" format: "暗黙的㫠signed long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0207: classes: - "UNC:X99" format: "暗黙的㫠signed long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0208: classes: - "UNC:X99" format: "暗黙的㫠signed long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0209: classes: - "UNC:X99" format: "暗黙的㫠unsigned long long åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0210: classes: - "UNC:X99" format: "暗黙的㫠unsigned long long åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0211: classes: - "UNC:X99" format: "暗黙的㫠unsigned long long åž‹ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0212: classes: - "UNC:X99" format: "暗黙的㫠float åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0213: classes: - "UNC:X99" format: "暗黙的㫠float åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0214: classes: - "UNC:X99" format: "暗黙的㫠float åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0215: classes: - "UNC:X99" format: "暗黙的㫠float åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0216: classes: - "UNC:X99" format: "暗黙的㫠float åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0217: classes: - "UNC:X99" format: "暗黙的㫠float åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0218: classes: - "UNC:X99" format: "暗黙的㫠float åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0219: classes: - "UNC:X99" format: "暗黙的㫠float åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0220: classes: - "UNC:X99" format: "暗黙的㫠float åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0221: classes: - "UNC:X99" format: "暗黙的㫠double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0222: classes: - "UNC:X99" format: "暗黙的㫠double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0223: classes: - "UNC:X99" format: "暗黙的㫠double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0224: classes: - "UNC:X99" format: "暗黙的㫠double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0225: classes: - "UNC:X99" format: "暗黙的㫠double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0226: classes: - "UNC:X99" format: "暗黙的㫠double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0227: classes: - "UNC:X99" format: "暗黙的㫠double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0228: classes: - "UNC:X99" format: "暗黙的㫠double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0229: classes: - "UNC:X99" format: "暗黙的㫠double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0230: classes: - "UNC:X99" format: "暗黙的㫠long double åž‹ã‹ã‚‰ char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0231: classes: - "UNC:X99" format: "暗黙的㫠long double åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0232: classes: - "UNC:X99" format: "暗黙的㫠long double åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0233: classes: - "UNC:X99" format: "暗黙的㫠long double åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0234: classes: - "UNC:X99" format: "暗黙的㫠long double åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0235: classes: - "UNC:X99" format: "暗黙的㫠long double åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0236: classes: - "UNC:X99" format: "暗黙的㫠long double åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0237: classes: - "UNC:X99" format: "暗黙的㫠long double åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0238: classes: - "UNC:X99" format: "暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0239: classes: - "UNC:X99" format: "暗黙的㫠float åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0240: classes: - "UNC:X99" format: "暗黙的㫠float åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0241: classes: - "UNC:X99" format: "暗黙的㫠double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0242: classes: - "UNC:X99" format: "暗黙的㫠double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0243: classes: - "UNC:X99" format: "暗黙的㫠long double åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0244: classes: - "UNC:X99" format: "暗黙的㫠long double åž‹ã‹ã‚‰ unsigned long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0245: classes: - "UNC:X99" format: "暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0246: classes: - "UNC:X99" format: "暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0247: classes: - "UNC:X99" format: "暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0248: classes: - "UNC:X99" format: "暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0249: classes: - "UNC:X99" format: "暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0250: classes: - "UNC:X99" format: "暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0251: classes: - "UNC:X99" format: "暗黙的㫠unsigned char åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0252: classes: - "UNC:X99" format: "暗黙的㫠unsigned short åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0253: classes: - "UNC:X99" format: "暗黙的㫠unsigned int åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0254: classes: - "UNC:X99" format: "暗黙的㫠unsigned long åž‹ã‹ã‚‰ signed long long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0255: classes: - "UNC:X99" format: "char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0256: classes: - "UNC:X99" format: "char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0257: classes: - "UNC:X99" format: "char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0258: classes: - "UNC:X99" format: "char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0259: classes: - "UNC:X99" format: "char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0260: classes: - "UNC:X99" format: "char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0261: classes: - "UNC:X99" format: "char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0262: classes: - "UNC:X99" format: "char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0263: classes: - "UNC:X99" format: "char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0264: classes: - "UNC:X99" format: "char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0265: classes: - "UNC:X99" format: "char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0266: classes: - "UNC:X99" format: "char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0267: classes: - "UNC:X99" format: "char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0268: classes: - "UNC:X99" format: "unsigned char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0269: classes: - "UNC:X99" format: "signed char åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0270: classes: - "UNC:X99" format: "signed short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0271: classes: - "UNC:X99" format: "unsigned short åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0272: classes: - "UNC:X99" format: "signed int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0273: classes: - "UNC:X99" format: "unsigned int åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0274: classes: - "UNC:X99" format: "signed long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0275: classes: - "UNC:X99" format: "unsigned long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0276: classes: - "UNC:X99" format: "signed long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0277: classes: - "UNC:X99" format: "unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0278: classes: - "UNC:X99" format: "unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0279: classes: - "UNC:X99" format: "unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0280: classes: - "UNC:X99" format: "unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0281: classes: - "UNC:X99" format: "unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0282: classes: - "UNC:X99" format: "unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0283: classes: - "UNC:X99" format: "unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0284: classes: - "UNC:X99" format: "unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0285: classes: - "UNC:X99" format: "unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0286: classes: - "UNC:X99" format: "unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0287: classes: - "UNC:X99" format: "unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0288: classes: - "UNC:X99" format: "unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0289: classes: - "UNC:X99" format: "unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0290: classes: - "UNC:X99" format: "unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0291: classes: - "UNC:X99" format: "unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0292: classes: - "UNC:X99" format: "unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0293: classes: - "UNC:X99" format: "signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0294: classes: - "UNC:X99" format: "signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0295: classes: - "UNC:X99" format: "signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0296: classes: - "UNC:X99" format: "signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0297: classes: - "UNC:X99" format: "signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0298: classes: - "UNC:X99" format: "signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0299: classes: - "UNC:X99" format: "signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0300: classes: - "UNC:X99" format: "signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0301: classes: - "UNC:X99" format: "signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0302: classes: - "UNC:X99" format: "signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0303: classes: - "UNC:X99" format: "signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0304: classes: - "UNC:X99" format: "signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0305: classes: - "UNC:X99" format: "signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0306: classes: - "UNC:X99" format: "signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0307: classes: - "UNC:X99" format: "signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0308: classes: - "UNC:X99" format: "signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0309: classes: - "UNC:X99" format: "signed char åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0310: classes: - "UNC:X99" format: "signed short åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0311: classes: - "UNC:X99" format: "signed int åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0312: classes: - "UNC:X99" format: "signed long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0313: classes: - "UNC:X99" format: "signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0314: classes: - "UNC:X99" format: "signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0315: classes: - "UNC:X99" format: "signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0316: classes: - "UNC:X99" format: "signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0317: classes: - "UNC:X99" format: "signed long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0318: classes: - "UNC:X99" format: "unsigned char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0319: classes: - "UNC:X99" format: "unsigned char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0320: classes: - "UNC:X99" format: "unsigned char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0321: classes: - "UNC:X99" format: "signed char åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0322: classes: - "UNC:X99" format: "signed char åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0323: classes: - "UNC:X99" format: "signed char åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0324: classes: - "UNC:X99" format: "signed short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0325: classes: - "UNC:X99" format: "signed short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0326: classes: - "UNC:X99" format: "signed short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0327: classes: - "UNC:X99" format: "unsigned short åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0328: classes: - "UNC:X99" format: "unsigned short åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0329: classes: - "UNC:X99" format: "unsigned short åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0330: classes: - "UNC:X99" format: "signed int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0331: classes: - "UNC:X99" format: "signed int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0332: classes: - "UNC:X99" format: "signed int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0333: classes: - "UNC:X99" format: "unsigned int åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0334: classes: - "UNC:X99" format: "unsigned int åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0335: classes: - "UNC:X99" format: "unsigned int åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0336: classes: - "UNC:X99" format: "signed long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0337: classes: - "UNC:X99" format: "signed long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0338: classes: - "UNC:X99" format: "signed long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0339: classes: - "UNC:X99" format: "unsigned long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0340: classes: - "UNC:X99" format: "unsigned long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0341: classes: - "UNC:X99" format: "unsigned long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0342: classes: - "UNC:X99" format: "signed long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0343: classes: - "UNC:X99" format: "signed long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0344: classes: - "UNC:X99" format: "signed long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0345: classes: - "UNC:X99" format: "unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0346: classes: - "UNC:X99" format: "unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0347: classes: - "UNC:X99" format: "unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `long double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0348: classes: - "UNC:X99" format: "float åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0349: classes: - "UNC:X99" format: "float åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0350: classes: - "UNC:X99" format: "float åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0351: classes: - "UNC:X99" format: "float åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0352: classes: - "UNC:X99" format: "float åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0353: classes: - "UNC:X99" format: "float åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0354: classes: - "UNC:X99" format: "float åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0355: classes: - "UNC:X99" format: "float åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0356: classes: - "UNC:X99" format: "float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0357: classes: - "UNC:X99" format: "double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0358: classes: - "UNC:X99" format: "double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0359: classes: - "UNC:X99" format: "double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0360: classes: - "UNC:X99" format: "double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0361: classes: - "UNC:X99" format: "double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0362: classes: - "UNC:X99" format: "double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0363: classes: - "UNC:X99" format: "double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0364: classes: - "UNC:X99" format: "double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0365: classes: - "UNC:X99" format: "double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0366: classes: - "UNC:X99" format: "long double åž‹ã®å€¤ãŒé–¢æ•° `char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0367: classes: - "UNC:X99" format: "long double åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0368: classes: - "UNC:X99" format: "long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0369: classes: - "UNC:X99" format: "long double åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0370: classes: - "UNC:X99" format: "long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0371: classes: - "UNC:X99" format: "long double åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0372: classes: - "UNC:X99" format: "long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0373: classes: - "UNC:X99" format: "long double åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0374: classes: - "UNC:X99" format: "long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0375: classes: - "UNC:X99" format: "float åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0376: classes: - "UNC:X99" format: "float åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0377: classes: - "UNC:X99" format: "double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0378: classes: - "UNC:X99" format: "double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0379: classes: - "UNC:X99" format: "long double åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0380: classes: - "UNC:X99" format: "long double åž‹ã®å€¤ãŒé–¢æ•° `unsigned long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0381: classes: - "UNC:X99" format: "signed short åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0382: classes: - "UNC:X99" format: "unsigned short åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0383: classes: - "UNC:X99" format: "signed int åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0384: classes: - "UNC:X99" format: "signed int åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0385: classes: - "UNC:X99" format: "unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0386: classes: - "UNC:X99" format: "unsigned int åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0387: classes: - "UNC:X99" format: "signed long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0388: classes: - "UNC:X99" format: "signed long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0389: classes: - "UNC:X99" format: "signed long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0390: classes: - "UNC:X99" format: "unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0391: classes: - "UNC:X99" format: "unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0392: classes: - "UNC:X99" format: "unsigned long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0393: classes: - "UNC:X99" format: "signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0394: classes: - "UNC:X99" format: "signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0395: classes: - "UNC:X99" format: "signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0396: classes: - "UNC:X99" format: "signed long long åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0397: classes: - "UNC:X99" format: "unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned char %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0398: classes: - "UNC:X99" format: "unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0399: classes: - "UNC:X99" format: "unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0400: classes: - "UNC:X99" format: "unsigned long long åž‹ã®å€¤ãŒé–¢æ•° `unsigned long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0401: classes: - "UNC:X99" format: "unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed short %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0402: classes: - "UNC:X99" format: "unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0403: classes: - "UNC:X99" format: "unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0404: classes: - "UNC:X99" format: "unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed int %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0405: classes: - "UNC:X99" format: "unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0406: classes: - "UNC:X99" format: "unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0407: classes: - "UNC:X99" format: "unsigned char åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0408: classes: - "UNC:X99" format: "unsigned short åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0409: classes: - "UNC:X99" format: "unsigned int åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0410: classes: - "UNC:X99" format: "unsigned long åž‹ã®å€¤ãŒé–¢æ•° `signed long long %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0411: classes: - "UNC:X99" format: "列挙体ã¯ã€æœ€åˆã ã‘åˆæœŸåŒ–ã™ã‚‹ã‹ã€å…¨ã¦ã‚’åˆæœŸåŒ–ã™ã‚‹ã‹ã€å…¨ãåˆæœŸåŒ–ã—ãªã„ã‹ã®ã„ãšã‚Œã‹ã«ã—ã¦ãã ã•ã„。" W0413: classes: - "UNC:X99" format: "åˆ¶å¾¡æ–‡ã®æœ¬ä½“㌠`{}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックã«ãªã£ã¦ã„ã¾ã›ã‚“。" W0414: classes: - "UNC:X99" format: "åˆ¶å¾¡æ–‡ã®æœ¬ä½“ãŒåŒã˜è¡Œã«ã‚りã€`{}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックã«ãªã£ã¦ã„ã¾ã›ã‚“。" W0421: classes: - "UNC:X99" format: "値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚" W0422: classes: - "UNC:X99" format: "値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦é–“接å‚ç…§ãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚" W0423: classes: - "UNC:X99" format: "値㌠NULL ã«ãªã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚" W0424: classes: - "UNC:X99" format: "値㌠NULL ã«ãªã‚‹ã“ã¨ãŒã‚ã‚‹ãƒã‚¤ãƒ³ã‚¿ã«å¯¾ã—ã¦ç®—術演算を行ã£ã¦ã„ã¾ã™ã€‚" W0425: classes: - "UNC:X99" format: "一ã¤ã®è¡Œã«è¤‡æ•°ã®å®£è¨€ã¾ãŸã¯æ–‡ãŒå­˜åœ¨ã—ã¾ã™ã€‚" W0431: classes: - "UNC:X99" format: "ã“ã®è¡Œã¯ä»¥å‰ã®åŒã˜æ·±ã•ã®ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã‚ˆã‚Šå·¦ã«ãšã‚Œã¦ã„ã¾ã™ã€‚" W0432: classes: - "UNC:X99" format: "ã“ã®è¡Œã¯ãƒ—ロジェクトã®ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã‚¹ã‚¿ã‚¤ãƒ«ã¨åˆã£ã¦ã„ã¾ã›ã‚“。" W0440: classes: - "UNC:X99" format: "ã“ã®é–‰ã˜ã‚«ãƒƒã‚³ `}' ã¯ã€å¯¾å¿œã™ã‚‹é–‹ãカッコ `{' ã«åˆã†ã‚ˆã†ãªã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã«ç½®ã‹ã‚Œã¦ã„ã¾ã›ã‚“。" W0441: classes: - "UNC:X99" format: "接尾辞ãŒãªã„整数リテラルã®åž‹ãŒã€int åž‹ã§ã¯ã‚りã¾ã›ã‚“。" W0442: classes: - "UNC:X99" format: "関数形å¼ãƒžã‚¯ãƒ­ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚" W0443: classes: - "UNC:X99" format: "ã“ã®é–¢æ•°å½¢å¼ãƒžã‚¯ãƒ­ã¯é–¢æ•°ã§ç½®ãæ›ãˆã‚‹ã“ã¨ãŒã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" W0444: classes: - "UNC:X99" format: "`#' 演算å­ã¨ `##' 演算å­ãŒä¸€ã¤ã®ãƒžã‚¯ãƒ­å®šç¾©å†…ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0445: classes: - "UNC:X99" format: "複数㮠`##' 演算å­ãŒä¸€ã¤ã®ãƒžã‚¯ãƒ­å®šç¾©å†…ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0446: classes: - "UNC:X99" format: "代入演算ã®çµæžœå€¤ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0447: classes: - "UNC:X99" format: "カンマ演算å­ãŒ for æ–‡ã®åˆ¶å¾¡å¼ä»¥å¤–ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0456: classes: - "UNC:X99" format: "外部çµåˆã‚’æŒã¤ã‚ªãƒ–ジェクトã‚ã‚‹ã„ã¯é–¢æ•° `%s' ãŒã€ãƒ˜ãƒƒãƒ€ãƒ•ァイル内ã§å®šç¾©ã•れã¦ã„ã¾ã™ã€‚" W0457: classes: - "UNC:X99" format: "関数ã®å®£è¨€ã‚ã‚‹ã„ã¯å®šç¾©ã§ã€æˆ»ã‚Šå€¤åž‹ãŒæ˜Žç¤ºçš„ã«å®šç¾©ã•れã¦ã„ãªã„ã®ã§ã€æš—黙的㫠int åž‹ã¨å®šç¾©ã•れã¾ã™ã€‚" W0458: classes: - "UNC:X99" format: "オブジェクトã®å®£è¨€ã‚ã‚‹ã„ã¯å®šç¾©ã§ã€åž‹ãŒæ˜Žç¤ºçš„ã«å®šç¾©ã•れã¦ã„ãªã„ã®ã§ã€æš—黙的㫠int åž‹ã¨å®šç¾©ã•れã¾ã™ã€‚" W0459: classes: - "UNC:X99" format: "変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚" W0460: classes: - "UNC:X99" format: "変数 `%s' ã®å€¤ã¯ã€ã“ã®å¼ã®è©•価時点ã§ã¯è¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã¾ã™ã€‚" W0461: classes: - "UNC:X99" format: "値ãŒå®šã¾ã£ã¦ã„ãªã„変数を指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯å±é™ºã§ã™ã€‚" W0462: classes: - "UNC:X99" format: "値ãŒè¨­å®šã•れã¦ã„ãªã„ã“ã¨ãŒã‚りã†ã‚‹å¤‰æ•°ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦ä½¿ã£ã¦ã„ã¾ã™ã€‚" W0463: classes: - "UNC:X99" format: "使用ä¸å¯" W0464: classes: - "UNC:X99" format: "使用ä¸å¯" W0477: classes: - "UNC:X99" format: "マクロ定義ã®ä¸­ã«ã€å¯¾ã«ãªã£ã¦ã„ãªã„ `[]'ã€`()'ã€`{}' ãŒå­˜åœ¨ã—ã¾ã™ã€‚" W0478: classes: - "UNC:X99" format: "ã“ã®ãƒžã‚¯ãƒ­ã¯ã€èªè­˜ä¸å¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã®æ–­ç‰‡ã‚’定義ã—ã¦ã„ã¾ã™ã€‚" W0479: classes: - "UNC:X99" format: "ã“ã®ãƒžã‚¯ãƒ­å®šç¾©ã¯ typedef 宣言ã«ç½®æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" W0480: classes: - "UNC:X99" format: "ã“ã®ãƒžã‚¯ãƒ­ã¯ã€åˆ¶å¾¡æ–‡ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€ã‚ã‚‹ã„ã¯å¥èª­æ–‡å­—を定義ã—ã¦ã„ã¾ã™ã€‚" W0481: classes: - "UNC:X99" format: "ã“ã®ãƒžã‚¯ãƒ­ã¯ã€`{}' ã§å›²ã¾ã‚ŒãŸãƒ–ロックを定義ã—ã¦ã„ã¾ã™ã€‚" W0482: classes: - "UNC:X99" format: "ã“ã®ãƒžã‚¯ãƒ­ã¯ã€ã„ãšã‚Œã‹ã®åž‹æŒ‡å®šå­ã‚’定義ã—ã¦ã„ã¾ã™ã€‚" W0483: classes: - "UNC:X99" format: "ã“ã®ãƒžã‚¯ãƒ­ã¯ã€è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¨åž‹ä¿®é£¾å­ã®çµ„ã¿ã‚’定義ã—ã¦ã„ã¾ã™ã€‚" W0488: classes: - "UNC:X99" format: "関数呼ã³å‡ºã— `()'ã€é…列添字演算 `[]'ã€ã‚ã‚‹ã„ã¯æ§‹é€ ä½“/å…±ç”¨ä½“ãƒ¡ãƒ³ãƒæ¼”ç®— `->' ã¾ãŸã¯ `.' ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚" W0489: classes: - "UNC:X99" format: "å˜é …演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚" W0490: classes: - "UNC:X99" format: "二項演算å­ãŒã€`&&' ã‚ã‚‹ã„㯠`||' ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚" W0491: classes: - "UNC:X99" format: "åŒã˜è­˜åˆ¥å­å `%s' ã¯ä»–ã®åå‰ç©ºé–“内ã®å®£è¨€ã§ã‚‚使ã‚れã¦ã„ã¾ã™ã€‚" W0492: classes: - "UNC:X99" format: "åŒã˜è­˜åˆ¥å­å `%s' ãŒæ§‹é€ ä½“/共用体ã®ãƒ¡ãƒ³ãƒã®ä»–ã«ã€ãƒ©ãƒ™ãƒ«ã€ã‚¿ã‚°ã€ã¾ãŸã¯é€šå¸¸ã®è­˜åˆ¥å­ã¨ã—ã¦ã‚‚使ã‚れã¦ã„ã¾ã™ã€‚" W0493: classes: - "UNC:X99" format: "構造体ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®å€¤ã‚’関数ã®å®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã—ã¦ã„ã¾ã™ã€‚" W0495: classes: - "UNC:X99" format: "æ¼”ç®—å­ %% ãŒã€ä»–ã®ç®—術演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚" W0496: classes: - "UNC:X99" format: "三項演算å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚" W0497: classes: - "UNC:X99" format: "シフト演算å­ã€é–¢ä¿‚演算å­ã€ã‚ã‚‹ã„ã¯ç­‰ä¾¡æ¼”ç®—å­ãŒè¤‡æ•°å›žä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚" W0498: classes: - "UNC:X99" format: "äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚" W0499: classes: - "UNC:X99" format: "+ - * / %% 以外ã®äºŒé …演算å­ã®ã†ã¡ã€åŒã˜å„ªå…ˆé †ä½ã®ç•°ãªã‚‹äºŒé …演算å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚" W0500: classes: - "UNC:X99" format: "äºŒé …æ¼”ç®—å­ + - * / ã®ã†ã¡ã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®æ¼”ç®—å­ãŒå…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚" W0501: classes: - "UNC:X99" format: "三項演算å­ãŒã€äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚" W0502: classes: - "UNC:X99" format: "+ - * / %% 以外ã®äºŒé …演算å­ãŒã€ç•°ãªã‚‹å„ªå…ˆé †ä½ã®äºŒé …演算å­ã¨å…±ã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚`()' ã§çµåˆã‚’明確ã«ã™ã‚‹ã“ã¨ã‚’å‹§ã‚ã¾ã™ã€‚" W0508: classes: - "UNC:X99" format: "`&&' ã‚ã‚‹ã„㯠`||' 演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«å‰¯ä½œç”¨ãŒã‚りã¾ã™ã€‚" W0511: classes: - "UNC:X99" format: "C++ コメント `//' ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0512: classes: - "UNC:X99" format: "`++' ã‚ã‚‹ã„㯠`--' 演算å­ã®çµæžœãŒå¼ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0525: classes: - "UNC:X99" format: "1 ビットã®åå‰ãŒä»˜ã„ãŸãƒ•ィールドãŒç¬¦å·ä»˜ãåž‹ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚" W0528: classes: - "UNC:X99" format: "ã“ã®ãƒžã‚¯ãƒ­ã¯ã€8 進数定数を定義ã—ã¦ã„ã¾ã™ã€‚" W0529: classes: - "UNC:X99" format: "8 進数リテラルãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0530: classes: - "UNC:X99" format: "文字定数ã¾ãŸã¯æ–‡å­—列リテラルã®ä¸­ã§ã€8 進拡張表記ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0532: classes: - "UNC:X99" format: "switch 文㮠case 節ã€default 節ã‹ã‚‰å‡ºã‚‹ãŸã‚ã« break æ–‡ãŒä½¿ã‚れã¦ã„ã¾ã™ãŒã€case ç¯€ã®æœ«å°¾ã«è¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。" W0534: classes: - "UNC:X99" format: "制御変数 `%s' ã¯ã€ã“ã® for 文制御å¼ã§åˆæœŸåŒ–ã•れã¦ã„ã¾ã›ã‚“。" W0535: classes: - "UNC:X99" format: "for æ–‡ã®åˆ¶å¾¡å¼ã®ä¸­ã«ã‚«ãƒ³ãƒžæ¼”ç®—å­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0538: classes: - "UNC:X99" format: "ã“ã® default ラベルã¯ã€switch æ–‡å†…ã®æœ€å¾Œã®ãƒ©ãƒ™ãƒ«ã§ã¯ã‚りã¾ã›ã‚“。" W0540: classes: - "UNC:X99" format: "空ã®ä»®å¼•数並ã³ã®é–¢æ•°ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚`void' ãŒçœç•¥ã•れã¦ã„ã¾ã™ã€‚" W0541: classes: - "UNC:X99" format: "マクロã§éš è”½ã•れãªã„インラインアセンブリコードã§ã™ã€‚" W0542: classes: - "UNC:X99" format: "関数宣言ã®ä»®å¼•æ•°ã®ä¸€éƒ¨ã«ã®ã¿è­˜åˆ¥å­ãŒå­˜åœ¨ã—ã¾ã™ã€‚" W0543: classes: - "UNC:X99" format: "ã“ã®é–¢æ•°å®£è¨€ã«ãŠã‘る仮引数ã®è­˜åˆ¥å­ã¯ã€ä»¥å‰ã®å®£è¨€ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ã¨ç•°ãªã‚Šã¾ã™ã€‚" W0544: classes: - "UNC:X99" format: "関数宣言ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ã¨é–¢æ•°ãƒã‚¤ãƒ³ã‚¿ã®å®£è¨€ã®ä»®å¼•æ•°ã®è­˜åˆ¥å­ãŒç•°ãªã‚Šã¾ã™ã€‚" W0546: classes: - "UNC:X99" format: "switch 文㮠case ラベルã‚ã‚‹ã„㯠default ラベルãŒã€ãƒã‚¹ãƒˆã•れãŸãƒ–ロックã®ä¸­ã«å­˜åœ¨ã—ã¾ã™ã€‚" W0549: classes: - "UNC:X99" format: "マクロã®ä»®å¼•数㌠`()' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。" W0551: classes: - "UNC:X99" format: "共用体型指定å­ãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚" W0552: classes: - "UNC:X99" format: "共用体型ã®ã‚ªãƒ–ジェクトãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚" W0553: classes: - "UNC:X99" format: "関数を指ã™ãƒã‚¤ãƒ³ã‚¿ãŒã€ç•°ãªã‚‹é–¢æ•°ãƒã‚¤ãƒ³ã‚¿åž‹ã¸ã‚­ãƒ£ã‚¹ãƒˆã•れã¦ã„ã¾ã™ã€‚" W0554: classes: - "UNC:X99" format: "`#pragma' ã®å®Ÿå¼•æ•° `%s' ã¯èªè­˜ã§ãã¾ã›ã‚“。ã“ã® `#pragma' 指令ã¯ç„¡è¦–ã•れã¾ã—ãŸã€‚" W0555: classes: - "UNC:X99" format: "ã“ã®é–¢æ•°ã¯ãƒ—ロジェクト中ã§é–“接的ã«å†å¸°å‘¼ã³å‡ºã—ã•れã¦ã„ã¾ã™ã€‚" W0556: classes: - "UNC:X99" format: "ã“ã®å‘¼ã³å‡ºã—ã‚’å«ã‚€é–¢æ•°ã¯ã€å†å¸°å‘¼ã³å‡ºã—ã•れã¦ã„ã¾ã™ã€‚" W0559: classes: - "UNC:X99" format: "`!' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒç®—術演算ã‚ã‚‹ã„ã¯ãƒ“ット演算ã®å¼ã«ãªã£ã¦ã„ã¾ã™ã€‚" W0560: classes: - "UNC:X99" format: "`~' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ–ール型å¼ã«ãªã£ã¦ã„ã¾ã™ã€‚" W0561: classes: - "UNC:X99" format: "`*p++' ã®æ„味ã¯ã€`(*p)++' ã§ã¯ãªãã€`*(p++)' ã§ã™ã€‚`*' 演算å­ã¯å†—é•·ã§ã™ã€‚" W0562: classes: - "UNC:X99" format: "åˆæœŸåŒ–å­ã®ä¸­ã«ä½™åˆ†ãª `{}' ãŒã‚りã¾ã™ã€‚" W0563: classes: - "UNC:X99" format: "ã“ã®ãƒ–ロックã®å¤–å´ã‹ã‚‰ãƒ©ãƒ™ãƒ« `%s' ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ãŸå ´åˆã€ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¯åˆæœŸåŒ–ã•れã¾ã›ã‚“。" W0564: classes: - "UNC:X99" format: "ã“ã® goto æ–‡ãŒãƒ©ãƒ™ãƒ« `%s' ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ãŸå ´åˆã€ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¯åˆæœŸåŒ–ã•れã¾ã›ã‚“。" W0565: classes: - "UNC:X99" format: "汎整数型を volatile ãƒã‚¤ãƒ³ã‚¿åž‹(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚" W0566: classes: - "UNC:X99" format: "汎整数型を関数ãƒã‚¤ãƒ³ã‚¿åž‹(ã¾ãŸã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚" W0567: classes: - "UNC:X99" format: "汎整数型をオブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚" W0568: classes: - "UNC:X99" format: "符å·ä»˜ã定数å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚" W0569: classes: - "UNC:X99" format: "符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚" W0570: classes: - "UNC:X99" format: "符å·ä»˜ãã®å¼ã®å€¤ã‚’左シフト演算ã—ãŸçµæžœã¯ã€æœªå®šç¾©ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚" W0571: classes: - "UNC:X99" format: "符å·ä»˜ãデータã®å³ã‚·ãƒ•ト演算ã«ã¯ã€å‡¦ç†ç³»ã«ã‚ˆã£ã¦è«–ç†ã‚·ãƒ•トã¨ç®—術シフトã®ä¸¡æ–¹ã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" W0572: classes: - "UNC:X99" format: "符å·ä»˜ãã®ãƒ‡ãƒ¼ã‚¿ã«å¯¾ã™ã‚‹ãƒ“ット演算ã¯å‡¦ç†ç³»å®šç¾©ã®çµæžœã«ãªã‚Šã¾ã™ã€‚" W0573: classes: - "UNC:X99" format: "`[]' 内ã®èµ°æŸ»ã‚»ãƒƒãƒˆã® `-' 文字ã¯ã€å‡¦ç†ç³»å®šç¾©ã«ãªã‚Šã¾ã™ã€‚" W0574: classes: - "UNC:X99" format: "基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—定数ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0575: classes: - "UNC:X99" format: "基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€æ–‡å­—列リテラルã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0576: classes: - "UNC:X99" format: "基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã‚³ãƒ¡ãƒ³ãƒˆã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0577: classes: - "UNC:X99" format: "基本ソース文字集åˆã«å«ã¾ã‚Œãªã„文字ãŒã€ã‚½ãƒ¼ã‚¹ãƒ•ァイル `%s' ã®ã“ã®å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0578: classes: - "UNC:X99" format: "æš—é»™çš„ã«æ±Žæ•´æ•°åž‹ `%s' ã®è¤‡åˆå¼ã‹ã‚‰ã‚ˆã‚Šå¤§ããªåž‹ `%s' ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0579: classes: - "UNC:X99" format: "汎整数型 `%s' ã®è¤‡åˆå¼ã‚’ã€ã‚ˆã‚Šå¤§ããªåž‹ `%s' ã«ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚" W0580: classes: - "UNC:X99" format: "ローカルãªé™çš„変数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€ã‚ˆã‚Šé•·ã„有効範囲をæŒã¤ãƒã‚¤ãƒ³ã‚¿ã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚" W0581: classes: - "UNC:X99" format: "実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®é–¢æ•°ã®ä»¥å‰ã®ä½¿ç”¨æ™‚ã¨ç•°ãªã‚Šã¾ã™ã€‚" W0582: classes: - "UNC:X99" format: "実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°ãƒ—ロトタイプ宣言ã¨ç•°ãªã‚Šã¾ã™ã€‚" W0583: classes: - "UNC:X99" format: "実引数ã®å€‹æ•°ã‹åž‹ãŒã€ã“ã®å¾Œã§è¦‹ã¤ã‹ã‚‹é–¢æ•°å®šç¾©ã¨ç•°ãªã‚Šã¾ã™ã€‚" W0584: classes: - "UNC:X99" format: "%s 番目ã®å®Ÿå¼•æ•°ã®åž‹ãŒã€é–¢æ•°å®šç¾©ã®ä¸­ã®ä»®å¼•æ•°ã®åž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚" W0585: classes: - "UNC:X99" format: "制御変数 `%s' ã¯ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆå¼ã«ç¾ã‚Œã¾ã›ã‚“。" W0586: classes: - "UNC:X99" format: "typedef`%s' ãŒäºŒã¤ä»¥ä¸Šã®å ´æ‰€ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚" W0589: classes: - "UNC:X99" format: "オブジェクト `%s' ã¯ã€å®šç¾©ã•れã¦ã„る翻訳å˜ä½ã®å†…ã®ã€é–¢æ•° `%s' ã®ã¿ã‹ã‚‰å‚ç…§ã•れã¦ã„ã¾ã™ã€‚" W0591: classes: - "UNC:X99" format: "関数 `%s' ã¯ã€å®šç¾©ã•れã¦ã„る翻訳å˜ä½ã®å†…ã§ã®ã¿å‚ç…§ã•れã¦ã„ã¾ã™ã€‚" W0593: classes: - "UNC:X99" format: "オブジェクト `%s' ã¯ã€å®šç¾©ã•れã¦ã„る翻訳å˜ä½ã®ä¸­ã§ã®ã¿å‚ç…§ã•れã¦ã„ã¾ã™ã€‚" W0597: classes: - "UNC:X99" format: "副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚" W0598: classes: - "UNC:X99" format: "副作用完了点ã®é–“ã§ `%s' ãŒäºŒå›žä»¥ä¸Šå¤‰æ›´ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚" W0599: classes: - "UNC:X99" format: "副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れã¦ã„ã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚" W0600: classes: - "UNC:X99" format: "副作用完了点ã®é–“ã§ `%s' ãŒå¤‰ãˆã‚‰ã‚Œã€å‚ç…§ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚評価順åºã¯æœªå®šç¾©ã§ã™ã€‚" W0605: classes: - "UNC:X99" format: "ç¹°ã‚Šè¿”ã—æ–‡ã‚’終了ã•ã›ã‚‹ç›®çš„ã§ã€break æ–‡ãŒäºŒã¤ä»¥ä¸Šä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚" W0606: classes: - "UNC:X99" format: "å…±ç”¨ä½“ã«æµ®å‹•å°æ•°ç‚¹åž‹ã®ãƒ¡ãƒ³ãƒãŒã‚りã¾ã™ã€‚" W0607: classes: - "UNC:X99" format: "値ãŒè² ã«ãªã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0608: classes: - "UNC:X99" format: "値ãŒè² ã«ãªã‚‹ã“ã¨ãŒã‚りã†ã‚‹æ•´æ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0609: classes: - "UNC:X99" format: "ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«çœŸã«ãªã‚Šã¾ã™ã€‚" W0610: classes: - "UNC:X99" format: "ã“ã®è«–ç†æ¼”ç®—ã®çµæžœã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚" W0611: classes: - "UNC:X99" format: "ã“ã®ç¹°ã‚Šè¿”ã—æ–‡ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚" W0612: classes: - "UNC:X99" format: "ã“ã® if æ¡ä»¶å¼ã®å€¤ã¯å¸¸ã«çœŸã§ã™ã€‚" W0613: classes: - "UNC:X99" format: "ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚" W0614: classes: - "UNC:X99" format: "ã“ã® `do-while' 制御å¼ã®å€¤ã¯å¸¸ã«å½ã«ãªã‚Šã¾ã™ã€‚ç¹°ã‚Šè¿”ã—æ–‡ã®æœ¬ä½“ã¯ä¸€å›žã®ã¿å®Ÿè¡Œã•れã¾ã™ã€‚" W0622: classes: - "UNC:X99" format: "関数ãŒãƒ–ロックスコープ内ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚" W0623: classes: - "UNC:X99" format: "外部çµåˆã®ã‚ªãƒ–ジェクトãŒã€ãƒ–ロックスコープ内ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚" W0624: classes: - "UNC:X99" format: "#define ã‚ã‚‹ã„㯠#undef ãŒãƒ–ロックã®ä¸­ã«å­˜åœ¨ã—ã¾ã™ã€‚" W0625: classes: - "UNC:X99" format: "外部çµåˆã®å®šç¾©ã¾ãŸã¯å®£è¨€ã®ä¸­ã§ `%s' ãŒä½¿ã‚れã¦ã„ã¾ã™ãŒã€ãã® typedef ãŒãƒ˜ãƒƒãƒ€ãƒ•ァイルã®ä¸­ã§å®£è¨€ã•れã¦ã„ã¾ã›ã‚“。" W0626: classes: - "UNC:X99" format: "ワイド文字ã¾ãŸã¯ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0627: classes: - "UNC:X99" format: "一行ã«ã€ç©ºæ–‡(`;' ã ã‘ã®æ–‡)ãŒã€ä»–ã®ã‚³ãƒ¼ãƒ‰ã®å¾Œã«ã‚りã¾ã™ã€‚" W0628: classes: - "UNC:X99" format: "関数 `%s' ãŒå®šç¾©ã•れã¦ã„ã¾ã™ãŒã€ã“ã®ãƒ—ロジェクトã§ã¯ä½¿ã‚れã¦ã„ã¾ã›ã‚“。" W0629: classes: - "UNC:X99" format: "static 関数 `%s()' ã¯ã€ã“ã®ç¿»è¨³å˜ä½ã®ä¸­ã§ä½¿ã‚れã¦ã„ã¾ã›ã‚“。" W0632: classes: - "UNC:X99" format: "`#include %s' ã®ä¸­ã§ ' ã‚„ \" 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚" W0633: classes: - "UNC:X99" format: "`#include %s' ã®ä¸­ã§ ' 文字を使ã†ã¨ã€æœªå®šç¾©ã®å‹•作ã«ãªã‚Šã¾ã™ã€‚" W0634: classes: - "UNC:X99" format: "`#include' 行ã®ä¸­ã§ `\\' を使ã£ã¦ã„ã¾ã™ã€‚パス区切り文字ã¨ã—ã¦ã¯ `/' ã‚’å‹§ã‚ã¾ã™ã€‚" W0635: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。" W0636: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ã«å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã›ã‚“。" W0637: classes: - "UNC:X99" format: "関数呼ã³å‡ºã—ã«ã€å¤‰æ›æŒ‡å®šå­ã®æ•°ã‚ˆã‚Šã‚‚多ãã®å®Ÿå¼•æ•°ãŒå­˜åœ¨ã—ã¾ã™ã€‚" W0638: classes: - "UNC:X99" format: "ã“ã®é–¢æ•°å‘¼ã³å‡ºã—ã«ã¯ã€å°‘ãªãã¨ã‚‚一ã¤ã®å®Ÿå¼•æ•°ãŒå¿…è¦ã§ã™ã€‚" W0639: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ã¨ã€å¯¾å¿œã™ã‚‹å®Ÿå¼•æ•°ã®åž‹ãŒåˆã„ã¾ã›ã‚“。" W0640: classes: - "UNC:X99" format: "scanf 関数ã®å®Ÿå¼•æ•°ã«ã¯ãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ã‚ªãƒ–ジェクトã®ãƒã‚¤ãƒ³ã‚¿ã‚’渡ã•ãªã‘れã°ã„ã‘ã¾ã›ã‚“。" W0641: classes: - "UNC:X99" format: "æµ®å‹•å°æ•°ç‚¹æ•°åž‹ã‚’オブジェクトã¸ã®ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚" W0642: classes: - "UNC:X99" format: "register 指定ã§å®£è¨€ã•れãŸã‚ªãƒ–ジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å¾—ã‚‹ã“ã¨ã¯ä¸å¯èƒ½ã§ã™ã€‚" W0643: classes: - "UNC:X99" format: "ã“ã®ãƒžã‚¯ãƒ­ã§æ§‹æˆã•ã‚ŒãŸæ–‡å­—列リテラルã¯ã€`\"' ã§å›²ã¾ã‚Œã¦ã„ãªã„䏿­£ãªå½¢å¼ã§ã™ã€‚マクロ内㮠`#' 演算å­ãŒ `\\' ãŒæœ«å°¾ã«ã‚る実引数ã«é©ç”¨ã•れãŸçµæžœã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" W0644: classes: - "UNC:X99" format: "void å¼ã®å€¤ã‚’使用ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚void å¼ã¯å€¤ã‚’ã‚‚ã¡ã¾ã›ã‚“。" W0645: classes: - "UNC:X99" format: "仮引数ã®åž‹ã«ã¯ã€void 型を使ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。" W0646: classes: - "UNC:X99" format: "é€šå¸¸ã®æ–‡å­—列リテラルã¨ãƒ¯ã‚¤ãƒ‰æ–‡å­—列リテラルãŒéš£æŽ¥ã—ã¦ã„ã¾ã™ã€‚" W0649: classes: - "UNC:X99" format: "シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®å€¤ãŒè² ã®å®šæ•°ã§ã™ã€‚çµæžœã¯æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚" W0650: classes: - "UNC:X99" format: "シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®å€¤ãŒå·¦ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®åž‹ `%s' ã§è¡¨ã•れるビット数ã«å¯¾ã—ã¦å¤§ãã™ãŽã¾ã™ã€‚çµæžœã¯æœªå®šç¾©ã«ãªã‚Šã¾ã™ã€‚" W0653: classes: - "UNC:X99" format: "é…åˆ—ã€æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®åˆæœŸå€¤ãŒ `{}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。" W0654: classes: - "UNC:X99" format: "構造体ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã®åˆæœŸåŒ–å­ã¯ã€åŒã˜æ§‹é€ ä½“åž‹ã‚ã‚‹ã„ã¯å…±ç”¨ä½“åž‹ã®å€¤ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。" W0655: classes: - "UNC:X99" format: "ã‚µã‚¤ã‚ºãŒæœªå®šç¾©ã®ãƒ“ットフィールドå¼ã§ã™ã€‚" W0656: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。" W0657: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `i' ã‚ã‚‹ã„㯠'd' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0658: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0659: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0660: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `x' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0661: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0662: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `f' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0663: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `e' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0664: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `E' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0665: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `g' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0666: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0667: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0668: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `%%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0669: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0670: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0671: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0672: classes: - "UNC:X99" format: "%s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0673: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。" W0674: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `d/i/n' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0675: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `o' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0676: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `u' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0677: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `x/X' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0678: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `e/E/f/g/G' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0679: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `s' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0680: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `p' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0681: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `%%' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0682: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `[' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0683: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ `c' ã«ç„¡åйãªãƒ•ラグãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0684: classes: - "UNC:X99" format: "%s 番目ã«ç„¡åйãªå¤‰æ›æŒ‡å®šå­ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0685: classes: - "UNC:X99" format: "`[]' ã®èµ°æŸ»ã‚»ãƒƒãƒˆå†…ã® `-' ã®å‰ã«ã‚る文字㌠`-' ã®å¾Œã«ã‚る文字より大ãã„ã§ã™ã€‚" W0686: classes: - "UNC:X99" format: "走査セット(`[]' ã«å›²ã¾ã‚ŒãŸæ–‡å­—ã®ä¸¦ã³)ã®ä¸­ã«åŒã˜æ–‡å­—ãŒäºŒã¤ä»¥ä¸Šè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚" W0687: classes: - "UNC:X99" format: "defined 演算å­ã‚’削除ã™ã‚‹ç›®çš„ã§ #undef を使ã£ã¦ã„ã¾ã™ã€‚" W0688: classes: - "UNC:X99" format: "#line 指令ã®å¾Œã«ã€1 ã‹ã‚‰ 32767 ã®ç¯„囲ã®è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。" W0689: classes: - "UNC:X99" format: "#line æŒ‡ä»¤ã®æ§‹æ–‡ãŒ `#line 汎整数定数 \"文字列\"' ã®å½¢å¼ã¨åˆã£ã¦ã„ã¾ã›ã‚“。" W0690: classes: - "UNC:X99" format: "#line 指令ã®å¾Œã«è¡Œç•ªå·ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。" W0691: classes: - "UNC:X99" format: "`##' 演算å­ã®çµæžœãŒæœ‰åйãªå‰å‡¦ç†å­—å¥ã§ã¯ã‚りã¾ã›ã‚“。" W0692: classes: - "UNC:X99" format: "関数形å¼ãƒžã‚¯ãƒ­ `%s' ã«å®Ÿå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“。" W0693: classes: - "UNC:X99" format: "関数形å¼ãƒžã‚¯ãƒ­ãŒãã®å®šç¾©ã‚ˆã‚Šã‚‚å°‘ãªã„実引数ã§å‘¼ã³å‡ºã•れã¦ã„ã¾ã™ã€‚" W0694: classes: - "UNC:X99" format: "`assert' ã¨ã„ã†åç§°ã®é–¢æ•°ã‚’呼ã³å‡ºã™ç›®çš„ã§ã€assert ãƒžã‚¯ãƒ­ãŒæŠ‘åˆ¶ã•れã¦ã„ã¾ã™ã€‚未定義ã®çµæžœã«ãªã‚Šã¾ã™ã€‚" W0695: classes: - "UNC:X99" format: "assert マクロを #undef ã—ã¦ãã®åå‰ã®é–¢æ•°ã‚’呼ã³å‡ºã—ã§ãるよã†ã«ã™ã‚‹ã¨ã€æœªå®šç¾©ã®çµæžœã«ãªã‚Šã¾ã™ã€‚" W0696: classes: - "UNC:X99" format: "ã“ã® `#if...' ã§ä½¿ã‚れã¦ã„るマクロ `%s' ã¯å®šç¾©ã•れã¦ã„ã¾ã›ã‚“。" W0697: classes: - "UNC:X99" format: "戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã«ã€æš—黙㮠`return;' æ–‡ã§çµ‚了ã™ã‚‹ãƒ‘スãŒå­˜åœ¨ã—ã¾ã™ã€‚" W0698: classes: - "UNC:X99" format: "戻り値を返ã™ã‚ˆã†ã«å®šç¾©ã•れãŸé–¢æ•° `%s' ã®ä¸­ã§ã€`return;' æ–‡ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚" W0699: classes: - "UNC:X99" format: "関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€return æ–‡ã«å€¤ã‚’戻ã™ãŸã‚ã®å¼ãŒè¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。" W0700: classes: - "UNC:X99" format: "関数 `%s()' ã¯ã€æˆ»ã‚Šå€¤ã®åž‹ãŒæ˜Žç¤ºã•れã¦ã„ãªã„ãŸã‚ã€æˆ»ã‚Šå€¤ã®åž‹ã¯æš—黙的㪠int ã§ã™ãŒã€å€¤ã‚’戻㙠return æ–‡ãŒã‚りã¾ã›ã‚“。" W0703: classes: - "UNC:X99" format: "ã‚¿ã‚° `%s' ãŒã‚ˆã‚Šåºƒã„有効範囲をもã¤åŒã˜è­˜åˆ¥å­ã®å®£è¨€ã‚’éš ã—ã¦ã„ã¾ã™ã€‚" W0704: classes: - "UNC:X99" format: "ã“ã® `%s' ã®å®£è¨€ã¯ã€ã‚ˆã‚Šåºƒã„有効範囲をもã¤åŒã˜è­˜åˆ¥å­ã®å®£è¨€ã‚’éš ã—ã¦ã„ã¾ã™ã€‚" W0705: classes: - "UNC:X99" format: "é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™ã“ã¨ãŒã‚りã¾ã™ã€‚" W0707: classes: - "UNC:X99" format: "é…åˆ—ã®æ·»å­—ãŒé ˜åŸŸå¤–を指ã™å®šæ•°ã§ã™ã€‚" W0708: classes: - "UNC:X99" format: "for æ–‡ã®åˆ¶å¾¡å¤‰æ•° `%s' ã¯ç¹°ã‚Šè¿”ã—æ–‡æœ¬ä½“ã®ä¸­ã§å€¤ã‚’変ãˆã‚‰ã‚Œã¦ã„ã¾ã™ã€‚" W0711: classes: - "UNC:X99" format: "関係演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚" W0712: classes: - "UNC:X99" format: "関係演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚" W0713: classes: - "UNC:X99" format: "関係演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚" W0714: classes: - "UNC:X99" format: "`&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚" W0715: classes: - "UNC:X99" format: "`|' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚" W0716: classes: - "UNC:X99" format: "ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚" W0717: classes: - "UNC:X99" format: "ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚" W0718: classes: - "UNC:X99" format: "ビット演算å­ã‚ã‚‹ã„ã¯ç®—術演算å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒå®Ÿè³ªçš„ãªãƒ–ール型ã®å¼ã§ã™ã€‚" W0719: classes: - "UNC:X99" format: "シフト演算å­ã®å³ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒã€æ½œåœ¨åž‹ `%s' ã®ãƒ“ット幅以上ã®å®šæ•°å€¤ã§ã™ã€‚" W0720: classes: - "UNC:X99" format: "æµ®å‹•å°æ•°ç‚¹åž‹ã®å€¤ãŒå¤‰æ›å…ˆã®åž‹ã®ç¯„囲ã«å…¥ã‚Šãりã¾ã›ã‚“。" W0721: classes: - "UNC:X99" format: "ã“ã®æ±Žæ•´æ•°åž‹ã¯ã€ãƒã‚¤ãƒ³ã‚¿ã®å€¤ã‚’ä¿æŒã™ã‚‹ã®ã«å分ãªå¤§ãã•ã‚’ã‚‚ã¡ã¾ã›ã‚“。" W0722: classes: - "UNC:X99" format: "符å·ä»˜ãã®å¼ã®å€¤ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã—ã¦ã„ã¾ã™ã€‚" W0723: classes: - "UNC:X99" format: "符å·ä»˜ãã®å¼ã®å€¤ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" W0724: classes: - "UNC:X99" format: "æ¡ä»¶ä»˜ãインクルード指令ã«ã‚ˆã£ã¦ã€èªè­˜ã§ããªã„å‰å‡¦ç†æŒ‡ä»¤ãŒç„¡è¦–ã•れã¾ã—ãŸã€‚" W0726: classes: - "UNC:X99" format: "修飾å­ä»˜ã void åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•° `%s()' ã®ä¸­ã§ã€`return å¼;' ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚" W0727: classes: - "UNC:X99" format: "列挙型ã«ãªã„値を使ã£ã¦ã„ã¾ã™ã€‚" W0728: classes: - "UNC:X99" format: "列挙型ã®é–¢æ•°ä»®å¼•æ•°ã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒå®Ÿå¼•æ•°ã¨ã—ã¦æ¸¡ã•れã¦ã„ã¾ã™ã€‚" W0729: classes: - "UNC:X99" format: "列挙型ã®ã‚ªãƒ–ジェクトã«ã€åˆ¥ã®åˆ—挙型ã®åˆ—挙定数ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚" W0730: classes: - "UNC:X99" format: "åˆ—æŒ™åž‹ã®æˆ»ã‚Šå€¤ãŒå®šç¾©ã•れãŸé–¢æ•°ã§ã€åˆ¥ã®åˆ—挙型ã®åˆ—æŒ™å®šæ•°ãŒæˆ»ã•れã¦ã„ã¾ã™ã€‚" W0731: classes: - "UNC:X99" format: "switch 文㮠case ラベルã®å€¤ `%s' ã¯åˆ¶å¾¡å¼ã®åˆ—挙型ã«å±žã—ã¦ã„ã¾ã›ã‚“。" W0732: classes: - "UNC:X99" format: "`&&' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚" W0733: classes: - "UNC:X99" format: "`||' 演算å­ã®ä¸¡å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚" W0734: classes: - "UNC:X99" format: "è«–ç†æ¼”ç®—å­ã®å·¦å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚" W0735: classes: - "UNC:X99" format: "è«–ç†æ¼”ç®—å­ã®å³å´ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒãƒ“ット演算ã®å¼ã‚ã‚‹ã„ã¯ç®—è¡“å¼ã§ã™ã€‚" W0736: classes: - "UNC:X99" format: "ファイルスコープã§å®£è¨€ã•れãŸé™çš„変数 `%s' 㯠1 ã¤ã®é–¢æ•°å†…ã§ã—ã‹èª­ã¿æ›¸ãã•れã¦ã„ã¾ã›ã‚“。" W0737: classes: - "UNC:X99" format: "`enum %s' ã®å†…容ãŒä¸æ˜Žã§ã™ã€‚列挙体タグãŒå†…容を指定ã›ãšã«å®£è¨€ã•れã¦ã„ã¾ã™ã€‚" W0738: classes: - "UNC:X99" format: "æ­£ã®æ•´æ•°å®šæ•°ã®å€¤ãŒã‚ˆã‚Šå°ã•ãªç¬¦å·ç„¡ã—åž‹ã¸ã®æš—é»™ã®åž‹å¤‰æ›ã‚’行ã£ãŸãŸã‚ã€åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™ã€‚" W0739: classes: - "UNC:X99" format: "定数å¼ã«ãŠã‘る符å·ç„¡ã—減算ã®çµæžœãŒè² ã«ãªã‚Šã¾ã—ãŸã€‚" W0740: classes: - "UNC:X99" format: "定数å¼ã«ãŠã‘る符å·ç„¡ã—加算ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚" W0741: classes: - "UNC:X99" format: "定数å¼ã«ãŠã‘る符å·ç„¡ã—ä¹—ç®—ã®çµæžœãŒæœ€å¤§å€¤ã‚’è¶…ãˆã¾ã—ãŸã€‚" W0742: classes: - "UNC:X99" format: "è² ã®æ•´æ•°å®šæ•°å¼ãŒç¬¦å·ç„¡ã—åž‹ã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0743: classes: - "UNC:X99" format: "整数定数å¼ã®å€¤ã¯ã€å¤‰æ›å…ˆã®ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãる範囲を超ãˆã¦ã„ã¾ã™ã€‚" W0744: classes: - "UNC:X99" format: "ã“ã®åˆ¶å¾¡å¼ã®å€¤ã¯å½ã«ãªã‚‹å®šæ•°ã®ãŸã‚ã€åˆ¶å¾¡æ–‡æœ¬ä½“ã¯å®Ÿè¡Œã•れã¾ã›ã‚“。" W0745: classes: - "UNC:X99" format: "é…åˆ—ã®æ·»å­—ãŒã€é ˜åŸŸå¤–を指ã—ã¦ã„ã¾ã™ã€‚" W0747: classes: - "UNC:X99" format: "暗黙的㫠signed short åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0748: classes: - "UNC:X99" format: "暗黙的㫠unsigned short åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0749: classes: - "UNC:X99" format: "暗黙的㫠signed int åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0750: classes: - "UNC:X99" format: "暗黙的㫠signed int åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0751: classes: - "UNC:X99" format: "暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0752: classes: - "UNC:X99" format: "暗黙的㫠unsigned int åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0753: classes: - "UNC:X99" format: "暗黙的㫠signed long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0754: classes: - "UNC:X99" format: "暗黙的㫠signed long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0755: classes: - "UNC:X99" format: "暗黙的㫠signed long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0756: classes: - "UNC:X99" format: "暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0757: classes: - "UNC:X99" format: "暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0758: classes: - "UNC:X99" format: "暗黙的㫠unsigned long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0759: classes: - "UNC:X99" format: "暗黙的㫠signed long long åž‹ã‹ã‚‰ signed char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0760: classes: - "UNC:X99" format: "暗黙的㫠signed long long åž‹ã‹ã‚‰ signed short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0761: classes: - "UNC:X99" format: "暗黙的㫠signed long long åž‹ã‹ã‚‰ signed int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0762: classes: - "UNC:X99" format: "暗黙的㫠signed long long åž‹ã‹ã‚‰ signed long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0763: classes: - "UNC:X99" format: "暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned char åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0764: classes: - "UNC:X99" format: "暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned short åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0765: classes: - "UNC:X99" format: "暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned int åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0766: classes: - "UNC:X99" format: "暗黙的㫠unsigned long long åž‹ã‹ã‚‰ unsigned long åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0767: classes: - "UNC:X99" format: "暗黙的㫠double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0768: classes: - "UNC:X99" format: "暗黙的㫠long double åž‹ã‹ã‚‰ float åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0769: classes: - "UNC:X99" format: "暗黙的㫠long double åž‹ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0770: classes: - "UNC:X99" format: "外部çµåˆã‚’ã‚‚ã¤è­˜åˆ¥å­ `%s' ã®å®£è¨€ãŒã€äºŒã¤ä»¥ä¸Šå­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚" W0771: classes: - "UNC:X99" format: "グローãƒãƒ«ãªè­˜åˆ¥å­ `%s' ãŒã€äºŒã¤ä»¥ä¸Šã®ãƒ•ァイルã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚" W0774: classes: - "UNC:X99" format: "double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0775: classes: - "UNC:X99" format: "long double åž‹ã®å€¤ãŒé–¢æ•° `float %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0776: classes: - "UNC:X99" format: "long double åž‹ã®å€¤ãŒé–¢æ•° `double %s()' ã‹ã‚‰è¿”ã•れã¦ã„ã¾ã™ã€‚" W0777: classes: - "UNC:X99" format: "暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0778: classes: - "UNC:X99" format: "暗黙的㫠float åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0779: classes: - "UNC:X99" format: "暗黙的㫠double åž‹ã®è¤‡åˆå¼ã‹ã‚‰ long double åž‹ã«åž‹å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" W0780: classes: - "UNC:X99" format: "定数å¼ã«ãŠã‘る符å·ç„¡ã—左シフト演算 `<<' ã¯ã€éžã‚¼ãƒ­ã®ä¸Šä½ãƒ“ットを切り詰ã‚ã¾ã™ã€‚" W0781: classes: - "UNC:X99" format: "ã“ã® switch æ–‡ã«ã¯ãƒ‘ス㌠1 ã¤ã—ã‹ã‚りã¾ã›ã‚“。ã“ã® switch æ–‡ã¯å†—é•·ã§ã™ã€‚" W0783: classes: - "UNC:X99" format: "ä¸å®Œå…¨åž‹ã‚’指ã™ãƒã‚¤ãƒ³ã‚¿ã‚’å«ã‚€ã‚­ãƒ£ã‚¹ãƒˆãŒè¡Œã‚れã¦ã„ã¾ã™ã€‚ã“ã®ãƒ—ログラムã¯ç§»æ¤æ€§ãŒã‚りã¾ã›ã‚“。" W0784: classes: - "UNC:X99" format: "éžæ¨™æº–ã®æ‹¡å¼µè¡¨è¨˜ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0785: classes: - "UNC:X99" format: "ã“ã®ã‚¿ã‚° `%s' ã®å®£è¨€ã¯ã€ä»¥å‰ã®å®£è¨€ã¨ç•°ãªã‚Šã¾ã™ã€‚" W0786: classes: - "UNC:X99" format: "intã€signed intã€ã‚ã‚‹ã„㯠unsigned int 以外ã®åž‹ã‚’ã‚‚ã¤ãƒ“ットフィールドã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。" W0787: classes: - "UNC:X99" format: "`%s' ã®åž‹ãŒã€ä»¥å‰ã®ç•°ãªã‚‹ã‚¹ã‚³ãƒ¼ãƒ—ã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚" W0788: classes: - "UNC:X99" format: "`%s' ã®åž‹ãŒã€ä»¥å‰ã®åŒã˜ã‚¹ã‚³ãƒ¼ãƒ—内ã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚" W0789: classes: - "UNC:X99" format: "`%s' ã®åž‹ãŒã€ä»¥å‰ã®ã‚ˆã‚Šåºƒã„スコープã§å®£è¨€ã•れãŸåž‹ã¨ç•°ãªã‚Šã¾ã™ã€‚" W0790: classes: - "UNC:X99" format: "グローãƒãƒ«ãªã‚ªãƒ–ジェクトã¾ãŸã¯é–¢æ•° `%s' ãŒäºŒå›žä»¥ä¸Šå®šç¾©ã•れã¦ã„ã¾ã™ã€‚" W0791: classes: - "UNC:X99" format: "グローãƒãƒ«ãªã‚ªãƒ–ジェクトã¾ãŸã¯é–¢æ•° `%s' ãŒäºŒå›žä»¥ä¸Šå®šç¾©ã•れã¦ã„ã¾ã™ã€‚" W0792: classes: - "UNC:X99" format: "æµ®å‹•å°æ•°ç‚¹æ•°åž‹ã‚’関数ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚" W0793: classes: - "UNC:X99" format: "関数ãƒã‚¤ãƒ³ã‚¿ã‚’オブジェクトを指ã™ãƒã‚¤ãƒ³ã‚¿(ã‚ã‚‹ã„ã¯ãã®é€†)ã¸ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ã„ã¾ã™ã€‚" W0794: classes: - "UNC:X99" format: "符å·ä»˜ãã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã‚’左シフト演算ã—ã¦ã„ã¾ã™ã€‚" W0795: classes: - "UNC:X99" format: "関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚å°‘ãªã„ã§ã™ã€‚" W0796: classes: - "UNC:X99" format: "関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°ãƒ—ロトタイプ宣言ã®ä»®å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚多ã„ã§ã™ã€‚" W0797: classes: - "UNC:X99" format: "関数呼ã³å‡ºã—ã®å®Ÿå¼•æ•°ã®æ•°ãŒã€é–¢æ•°å®šç¾©ã«ãŠã‘ã‚‹ä»®å¼•æ•°ã®æ•°ã¨ã¯ç•°ãªã‚Šã¾ã™ã€‚" W0798: classes: - "UNC:X99" format: "ä¸å®Œå…¨ãªå…±ç”¨ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。" W0799: classes: - "UNC:X99" format: "ä¸å®Œå…¨ãªæ§‹é€ ä½“オブジェクトã®å€¤ã‚’使ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。" W0800: classes: - "UNC:X99" format: "`%s' ã¯çµåˆã‚’ã‚‚ãŸãªã„ä¸å®Œå…¨åž‹ã§ã™ã€‚ã“ã‚Œã¯æœªå®šç¾©ã§ã™ã€‚" W0801: classes: - "UNC:X99" format: "ã“ã®æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã«ã¯åå‰ä»˜ãã®ãƒ¡ãƒ³ãƒãŒã‚りã¾ã›ã‚“。" W0802: classes: - "UNC:X99" format: "`#include' å‰å‡¦ç†æŒ‡ä»¤ã®å¾ŒãŒã€<ファイルå> ã‚ã‚‹ã„㯠\"ファイルå \"å½¢å¼ã®ã©ã¡ã‚‰ã§ã‚‚ã‚りã¾ã›ã‚“。" W0803: classes: - "UNC:X99" format: "関数形å¼ãƒžã‚¯ãƒ­ã®å®Ÿå¼•æ•°ã®ä¸­ã«ã€å‰å‡¦ç†æŒ‡ä»¤ãŒè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚" W0804: classes: - "UNC:X99" format: "defined æ§‹æ–‡ãŒã€`defined(識別å­)' ã‚ã‚‹ã„㯠`defined 識別å­' ã®ã©ã¡ã‚‰ã§ã‚‚ã‚りã¾ã›ã‚“。" W0805: classes: - "UNC:X99" format: "`defined' ã«ã€å®Ÿå¼•æ•°ã¨ãªã‚‹è­˜åˆ¥å­ãŒã‚りã¾ã›ã‚“。" W0806: classes: - "UNC:X99" format: "`defined' ã¨ã„ã†åç§°ã®ãƒžã‚¯ãƒ­ã‚’定義ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚" W0807: classes: - "UNC:X99" format: "事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' を削除ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚" W0808: classes: - "UNC:X99" format: "事å‰å®šç¾©ã®ãƒžã‚¯ãƒ­å `%s' ã‚’å†å®šç¾©ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚" W0809: classes: - "UNC:X99" format: "è­˜åˆ¥å­ `%s' ã¯ãƒ©ã‚¤ãƒ–ラリã§äºˆç´„済ã¿ã§ã™ã€‚" W0810: classes: - "UNC:X99" format: "ã“ã® `if-if-else' æ–‡ã®æ§‹é€ ã‚’より明確ã«ã™ã‚‹ãŸã‚ã«ã¯ `{}' ãŒå¿…è¦ã§ã™ã€‚" W0811: classes: - "UNC:X99" format: "ã“ã®ãƒžã‚¯ãƒ­ã®å±•é–‹çµæžœã®ã€`defined' トークンã¯ã€è¨±å®¹ã•れã¾ã›ã‚“。" W0827: classes: - "UNC:X99" format: "ãƒã‚¹ãƒˆã•ã‚ŒãŸæ§‹é€ ä½“ã®åˆæœŸå€¤ã®å„è¦ç´ ãŒ `{}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。" W0828: classes: - "UNC:X99" format: "ãƒã‚¹ãƒˆã•れãŸé…列ã®åˆæœŸå€¤ã®å„è¦ç´ ãŒ `{}' ã§å›²ã¾ã‚Œã¦ã„ã¾ã›ã‚“。" W0830: classes: - "UNC:X99" format: "列挙å­ä¸¦ã³ã®æœ«å°¾ã«ã‚«ãƒ³ãƒž `,' ãŒã‚りã¾ã™ã€‚" W0831: classes: - "UNC:X99" format: "ã“れã¯ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ã‚¢ã‚»ãƒ³ãƒ–リ用ã®è¨€èªžæ‹¡å¼µã§ã™ã€‚#asm 㨠#endasm ã®é–“ã¯ç„¡è¦–ã—ã¾ã™ã€‚" W0832: classes: - "UNC:X99" format: "インラインアセンブリ構文を使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚ã“ã®ã‚³ãƒ¼ãƒ‰ã¯ç„¡è¦–ã—ã¾ã™ã€‚" W0833: classes: - "UNC:X99" format: "接尾語 LL を使ã£ã¦ã„ã¾ã™ã€‚" W0834: classes: - "UNC:X99" format: "long long 型を使ã£ã¦ã„ã¾ã™ã€‚" W0835: classes: - "UNC:X99" format: "å¯å¤‰å¼•æ•°ã‚’å—ã‘å–るマクロãŒå®šç¾©ã•れã¦ã„ã¾ã™ã€‚" W0947: classes: - "UNC:X99" format: "文字列リテラルãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0948: classes: - "UNC:X99" format: "文字定数 %s ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0949: classes: - "UNC:X99" format: "ビットフィールドã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W0950: classes: - "UNC:X99" format: "é…列ã®ã‚µã‚¤ã‚ºå®šç¾©ã«ã€æ•°å€¤ `%s' ãŒç›´æŽ¥ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W1026: classes: - "UNC:X99" format: "%s 番目ã®å®Ÿå¼•æ•°ãŒã‚ªãƒ–ジェクト型ã§ã¯ã‚りã¾ã›ã‚“。" W1027: classes: - "UNC:X99" format: "é…列ã®åŸºæœ¬åž‹ãŒé–¢æ•°åž‹ã§ã™ã€‚ã“ã‚Œã¯æ„味ãŒã‚りã¾ã›ã‚“。" W1028: classes: - "UNC:X99" format: "é…列ã®åŸºæœ¬åž‹ãŒã‚µã‚¤ã‚ºä¸æ˜Žã®é…列ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。" W1029: classes: - "UNC:X99" format: "é…列ã®åŸºæœ¬åž‹ãŒå†…容䏿˜Žã®æ§‹é€ ä½“ã‚ã‚‹ã„ã¯å…±ç”¨ä½“ã§ã™ã€‚ä¸å®Œå…¨åž‹ã®é…åˆ—ã¯æ§‹ç¯‰ã§ãã¾ã›ã‚“。" W1030: classes: - "UNC:X99" format: "ラベル `%s' ãŒã“ã®é–¢æ•°ã®ä¸­ã§äºŒå›žä»¥ä¸Šä½¿ã‚れã¦ã„ã¾ã™ã€‚" W1031: classes: - "UNC:X99" format: "オブジェクト `%s' ã¯ã€å¤–部çµåˆã¨å†…部çµåˆã®ä¸¡æ–¹ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ãã®å‹•ä½œã¯æœªå®šç¾©ã§ã™ã€‚" W1032: classes: - "UNC:X99" format: "内部çµåˆã‚’ã‚‚ã¤å¤‰æ•° '%s' ã®ä»®å®šç¾©ã¯ã€ä¸å®Œå…¨åž‹ã§ã¯ã„ã‘ã¾ã›ã‚“。" W1033: classes: - "UNC:X99" format: "é–¢æ•°ã®æˆ»ã‚Šå€¤ã®åž‹ã« volatile ã‚ã‚‹ã„㯠const 修飾å­ã‚’使ã£ã¦ã„ã¾ã™ã€‚ãã®å‹•ä½œã¯æœªå®šç¾©ã§ã™ã€‚" W1034: classes: - "UNC:X99" format: "ブロックスコープã§ã€é–¢æ•° `%s()' ã« static 記憶域クラス指定å­ã‚’使ã£ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ã“ã®ç”¨æ³•ã¯æ„味ãŒã‚りã¾ã›ã‚“。" W1035: classes: - "UNC:X99" format: "`%s' 㯠typedef ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚明示的ãªåž‹æŒ‡å®šå­ã‚’使ã‚ãšã«ã€ã‚ˆã‚Šå†…å´ã®ã‚¹ã‚³ãƒ¼ãƒ—ã§å†å®£è¨€ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。" W1036: classes: - "UNC:X99" format: "`%s' 㯠typedef ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚明示的ãªåž‹æŒ‡å®šå­ã‚’使ã‚ãšã«ã€æ§‹é€ ä½“ã¾ãŸã¯å…±ç”¨ä½“ã®ãƒ¡ãƒ³ãƒã¨ã—ã¦å†å®£è¨€ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。" W1037: classes: - "UNC:X99" format: "外部çµåˆã‚’も㤠`%s' ãŒã€äºŒã¤ä»¥ä¸Šå®£è¨€ã•れã¦ã„ã¾ã™ãŒäº’æ›æ€§ãŒã‚りã¾ã›ã‚“。" W1039: classes: - "UNC:X99" format: "%s 番目ã®å¤‰æ›æŒ‡å®šå­ã« `ll' ãŒä½¿ã‚れã¦ã„ã¾ã™ã€‚" W1040: classes: - "UNC:X99" format: "å‰å‡¦ç†æŒ‡ä»¤ã®å¾Œã«èªè­˜ã§ããªã„文字列ãŒè¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚" W1041: classes: - "UNC:X99" format: "`%s' ã¯ã€ISO C æ¨™æº–è¦æ ¼ã®æ­£å¼ãªå‰å‡¦ç†æŒ‡ä»¤ã§ã¯ã‚りã¾ã›ã‚“。" W1042: classes: - "UNC:X99" format: "å‰å‡¦ç†æŒ‡ä»¤ã®ä¸­ã§ sizeof 演算å­ã‚’使ã£ã¦ã„ã¾ã™ã€‚ã“れã¯è¨€èªžæ‹¡å¼µã§ã™ã€‚" W1043: classes: - "UNC:X99" format: "`@ address' ã¯ã€ISO C æ¨™æº–è¦æ ¼ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。言語拡張ã¨è¦‹ãªã—ã¾ã™ã€‚" W1044: classes: - "UNC:X99" format: "使用ä¸å¯" W1045: classes: - "UNC:X99" format: "ã“ã® `@ word' æ§‹æ–‡ã¯ç„¡è¦–ã•れã¾ã™ã€‚" W1046: classes: - "UNC:X99" format: "`\\' ã¨æ”¹è¡Œã®é–“ã«ã‚る空白文字類ãŒç„¡è¦–ã•れã¦ã„ã¾ã™ã€‚" W1047: classes: - "UNC:X99" format: "構造体ã€å…±ç”¨ä½“ã€ã‚ã‚‹ã„ã¯é…列ã®åˆæœŸåŒ–å­ãŒãƒªãƒ†ãƒ©ãƒ«ã§ã¯ã‚りã¾ã›ã‚“。" W1048: classes: - "UNC:X99" format: "マルãƒãƒã‚¤ãƒˆæ–‡å­—リテラルã¯å‡¦ç†ç³»å®šç¾©ã®å€¤ã«ãªã‚Šã¾ã™ã€‚" W1049: classes: - "UNC:X99" format: "ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚" W1050: classes: - "UNC:X99" format: "ã“ã®æ•´æ•°å¼ã®ç¬¦å·ä»˜ãæ•´æ•°åž‹ã¸ã®å¤‰æ›çµæžœã¯ã€ç¬¦å·ä»˜ãã®çµæžœã®åž‹ã§è¡¨ç¾ã§ãã¾ã›ã‚“。" W1051: classes: - "UNC:X99" format: "符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込ã¿ã¾ã™ã€‚" W1052: classes: - "UNC:X99" format: "符å·ç„¡ã—åž‹ `%s' ã®ç®—è¡“æ¼”ç®—çµæžœã¯ã€æ¡ã‚ãµã‚Œã«ã‚ˆã£ã¦ 0 を回り込むã“ã¨ãŒã‚りã¾ã™ã€‚" W1053: classes: - "UNC:X99" format: "仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«æ•°å€¤å®šæ•°ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚" W1054: classes: - "UNC:X99" format: "列挙型ã«ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚" W1055: classes: - "UNC:X99" format: "戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€åˆ—挙型ã§ã¯ãªã„å¼ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚" W1056: classes: - "UNC:X99" format: "仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ãŒç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトã§ã™ã€‚" W1057: classes: - "UNC:X99" format: "列挙型ã«ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒä»£å…¥ã•れã¦ã„ã¾ã™ã€‚" W1058: classes: - "UNC:X99" format: "戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åˆ—挙型ã®ã‚ªãƒ–ジェクトãŒè¿”ã•れã¦ã„ã¾ã™ã€‚" W1059: classes: - "UNC:X99" format: "仮引数ãŒåˆ—挙型ã§ãªã„関数ã®å®Ÿå¼•æ•°ã«åˆ—æŒ™åž‹ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚" W1060: classes: - "UNC:X99" format: "戻り値ãŒåˆ—挙型ã§ãªã„関数ã‹ã‚‰ã€åˆ—挙型ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚" W1061: classes: - "UNC:X99" format: "仮引数ãŒåˆ—挙型ã§ã‚る関数ã®å®Ÿå¼•æ•°ã«ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒæ¸¡ã•れã¦ã„ã¾ã™ã€‚" W1062: classes: - "UNC:X99" format: "ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒåˆ—挙型オブジェクトã«ä»£å…¥ã•れã¦ã„ã¾ã™ã€‚" W1063: classes: - "UNC:X99" format: "戻り値ãŒåˆ—挙型ã®é–¢æ•°ã‹ã‚‰ã€ç•°ãªã‚‹åž‹ã®éžå®šæ•°å¼ã®å€¤ãŒè¿”ã•れã¦ã„ã¾ã™ã€‚" W1064: classes: - "UNC:X99" format: "列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€æ•´æ•°å®šæ•°ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W1065: classes: - "UNC:X99" format: "列挙型ã®åˆ¶å¾¡å¼ãŒä½¿ã‚れã¦ã„ã‚‹ switch æ–‡ã§ã€ç•°ãªã‚‹åˆ—挙型ã®å€¤ãŒ case ラベルã«ä½¿ã‚れã¦ã„ã¾ã™ã€‚" W1066: classes: - "UNC:X99" format: "明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚" W1067: classes: - "UNC:X99" format: "明示的㫠float åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚" W1068: classes: - "UNC:X99" format: "明示的㫠double åž‹ã®è¤‡åˆå¼ã®å€¤ã‚’ long double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚" W1069: classes: - "UNC:X99" format: "ã“ã® `if-else-if' æ–‡ã«ã¯ã€æœ«å°¾ã® `else' 節ãŒã‚りã¾ã›ã‚“。" W1070: classes: - "UNC:X99" format: "ã“ã® `switch' æ–‡ã«ã¯å®Ÿè¡ŒçµŒè·¯ãŒ 2 ã¤ã—ã‹ç„¡ã„ãŸã‚ã€`if-else' æ–‡ã«å¤‰æ›å¯èƒ½ã§ã™ã€‚" W1071: classes: - "UNC:X99" format: "関数 `%s' ã«ã¯è¤‡æ•°ã®çµ‚了点ãŒã‚りã¾ã™ã€‚" W1072: classes: - "UNC:X99" format: "`goto' 文を使用ã—ã¦ã„ã¾ã™ã€‚" W1073: classes: - "UNC:X99" format: "関数 `%s' ã®æˆ»ã‚Šå€¤ã‚’破棄ã—ã¦ã„ã¾ã™ã€‚" W1074: classes: - "UNC:X99" format: "`sizeof' 演算å­ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã¯å®Ÿè¡Œã•れãªã„ãŸã‚ã€å‰¯ä½œç”¨ãŒç™ºç”Ÿã—ã¾ã›ã‚“。" W1075: classes: - "UNC:X99" format: "`%s' ã¯ä»¥å‰ã«å†…部çµåˆã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ãŒã€ã“ã®å®£è¨€ã«ã¯ `static' ãŒã‚りã¾ã›ã‚“。" W1076: classes: - "UNC:X99" format: "関数 `%s' ã¯å†…部çµåˆã‚’æŒã¡ã¾ã™ãŒã€äº‹å‰ã«å†…部çµåˆã¨ã—ã¦å®£è¨€ã—ã¦ã„ã¾ã›ã‚“。" W1077: classes: - "UNC:X99" format: "サイズãŒçœç•¥ã•れãŸé…列を宣言ã—ã¦ã„ã¾ã™ã€‚" W9001: classes: - "UNC:X99" format: "ã“ã®æ–‡ã«ã¯åˆ¶å¾¡ãŒåˆ°é”ã—ã¾ã›ã‚“。" W9002: classes: - "UNC:X99" format: "ãƒ•ã‚¡ã‚¤ãƒ«ã®æœ«å°¾ã«æ”¹è¡Œæ–‡å­—ãŒã‚りã¾ã›ã‚“。" W9003: classes: - "UNC:X99" format: "暗黙的㫠`%s' åž‹ã®ã‚ªãƒ–ジェクト㌠`%s' åž‹ã®ã‚ªãƒ–ジェクトã«å¤‰æ›ã•れã¦ã„ã¾ã™ã€‚" C0001: classes: - "INF:X99" format: "ã“ã®è­˜åˆ¥å­ `%s' ã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚" C1000: classes: - "INF:X99" format: "次ã®å®Ÿè¡Œãƒ‘スã§è­¦å‘Šã‚’検知ã—ã¾ã—ãŸã€‚" C1001: classes: - "INF:X99" format: "ã“ã®åˆ¶å¾¡å¼ã‚’真ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚" C1002: classes: - "INF:X99" format: "ã“ã®åˆ¶å¾¡å¼ã‚’å½ã¨ã—ã¦è©•価ã—ã¾ã—ãŸã€‚" C1003: classes: - "INF:X99" format: "ã“ã“ã§è©²å½“変数ãŒåˆæœŸå€¤ã‚’指定ã›ãšã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚" C1004: classes: - "INF:X99" format: "ã“ã“ã§è©²å½“変数㫠NULL ã®å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚" C1005: classes: - "INF:X99" format: "ã“ã“ã§è©²å½“変数㫠NULL ã®å¯èƒ½æ€§ãŒã‚る値を割り当ã¦ã¾ã—ãŸã€‚" C1006: classes: - "INF:X99" format: "ã“ã“ã§è©²å½“変数ã«å€¤ã‚’割り当ã¦ã¾ã—ãŸã€‚" adlint-3.2.14/etc/mesg.d/c_builtin/en_US/0000755000004100000410000000000012340630463020016 5ustar www-datawww-dataadlint-3.2.14/etc/mesg.d/c_builtin/en_US/messages.yml0000644000004100000410000027443712340630463022371 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # This file is part of AdLint. # # 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 . # # # Default message catalog of c_builtin examination package for en_US locale. # # ********************************* # ***** DO NOT EDIT THIS FILE ***** # ********************************* # # To override default messages, edit `change_list' section of the traits file. # # [Example] # # % tail traits.yml # message_traits: # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the fatal error of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the error of E9999." version: "3.2.14" message_definition: W0001: classes: - "UNC:X99" format: "Nesting depth of round bracket`()' exceed 32. This program doesn't meet the strict ISO C90 standards of the term." W0002: classes: - "UNC:X99" format: "Identifier and declaration of formal argument described separately in the definition of function `%s()' is old style." W0003: classes: - "UNC:X99" format: "This switch statement doesn't have default label." W0007: classes: - "UNC:X99" format: "'break' or 'return' statement doesn't found in the last 'case' or 'default' section." W0010: classes: - "UNC:X99" format: "There is a side-effect in this ternary operator (conditional operator)." W0013: classes: - "UNC:X99" format: "'continue' statement is used in repetition statement." W0016: classes: - "UNC:X99" format: "The field width of conversion specifier exceeds 509 characters in 'printf' function." W0017: classes: - "UNC:X99" format: "The field width of conversion specifier exceeds 509 characters in 'scanf' function." W0018: classes: - "UNC:X99" format: "This accuracy width of conversion specifier exceeds 509 characters." W0019: classes: - "UNC:X99" format: "This pointer cast is danger because it delete const qualifier." W0021: classes: - "UNC:X99" format: "This pointer cast is danger because it delete volatile qualifier." W0023: classes: - "UNC:X99" format: "Arithmetic operation is being made by pointer variable." W0024: classes: - "UNC:X99" format: "Increment or decrement is being made by pointer variable." W0025: classes: - "UNC:X99" format: "`%s' is already included by this file directly." W0026: classes: - "UNC:X99" format: "`%s' is already included by this file indirectly." W0027: classes: - "UNC:X99" format: "Comparison operation is being made by pointer variable." W0028: classes: - "UNC:X99" format: "Dereferencing a pointer constant of NULL." W0030: classes: - "UNC:X99" format: "Arithmetic operation is being made by NULL pointer." W0031: classes: - "UNC:X99" format: "A formal argument `%s' is not used in this function." W0033: classes: - "UNC:X99" format: "A label of `%s:' is not used in this function. It might be removed." W0035: classes: - "UNC:X99" format: "Right operand of ``&&' or `||' must arithmetic type or pointer type." W0036: classes: - "UNC:X99" format: "The number of qualification operator exceeds 12.This program doesn't meet the strict ISO C90 standards of the term." W0037: classes: - "UNC:X99" format: "Nest of structure or union exceeds 15. This program doesn't meet the strict ISO C90 standards of the term." W0038: classes: - "UNC:X99" format: "The size of object `%s' exceeds 32767 bytes. This program doesn't meet the strict ISO C90 standards of the term." W0039: classes: - "UNC:X99" format: "The number of local identifier in the block exceeds 127. This program doesn't meet the strict ISO C90 standards of the term." W0040: classes: - "UNC:X99" format: "A bit field is declared without 'signed' or 'unsigned'." W0041: classes: - "UNC:X99" format: "The number of member of structure or union exceeds 127.This program doesn't meet the strict ISO C90 standards of the term." W0042: classes: - "UNC:X99" format: "The number of enumeration literal exceeds 127. This program doesn't meet the strict ISO C90 standards of the term." W0043: classes: - "UNC:X99" format: "The initial value of the array is short of declared array's size. The residual array will be initialized by zero." W0049: classes: - "UNC:X99" format: "Nest of control structure exceeds 15. This program doesn't meet the strict ISO C90 standards of the term." W0050: classes: - "UNC:X99" format: "The number of 'case' label exceeds 257. This program doesn't meet the strict ISO C90 standards of the term." W0051: classes: - "UNC:X99" format: "An external identifier `%s' cannot distinguish other identifier name from the range of number of characters defined in linker property." W0052: classes: - "UNC:X99" format: "An identifier `%s' cannot distinguish other identifier name from the range of number of characters defined in compile property." W0053: classes: - "UNC:X99" format: "Nest of `#include \"%s\"' exceeds 8.This program doesn't meet the strict ISO C90 standards of the term." W0054: classes: - "UNC:X99" format: "The maximum number of `#if...' nest exceeds 8. This program doesn't meet the strict ISO C90 standards of the term." W0055: classes: - "UNC:X99" format: "The number of macro definition exceeds 1024. This program doesn't meet the strict ISO C90 standards of the term." W0056: classes: - "UNC:X99" format: "The number of formal argument of function-like macro exceeds 31.This program doesn't meet the strict ISO C90 standards of the term." W0057: classes: - "UNC:X99" format: "The number of actual argument of function-like macro exceeds 31.This program doesn't meet the strict ISO C90 standards of the term." W0058: classes: - "UNC:X99" format: "The number of characters of string literal exceeds 509.This program doesn't meet the strict ISO C90 standards of the term." W0059: classes: - "UNC:X99" format: "Ctrl-M(^M) control character is found at the end of line." W0060: classes: - "UNC:X99" format: "Ctrl-Z(^Z) control character is found in this file." W0061: classes: - "UNC:X99" format: "`%s' is not actual reserved keyword. It will be considered as language extension and ignored." W0062: classes: - "UNC:X99" format: "`__typeof__' is not supported ISO C standards. It will be considered as language extension." W0063: classes: - "UNC:X99" format: "`__alignof__'is not supported ISO C standards. It will be considered as language extension.." W0064: classes: - "UNC:X99" format: "A binary integer literal is used. This is the language extension." W0065: classes: - "UNC:X99" format: "Must not cast left operand of assignment operator." W0066: classes: - "UNC:X99" format: "`main()' function must `int (void)' or `int (int, char *[])'." W0067: classes: - "UNC:X99" format: "Directly access to the member of nested structure. This is the language extension." W0068: classes: - "UNC:X99" format: "`.' is used to get access to bit. This is the language extension." W0069: classes: - "UNC:X99" format: "`/*' is found in the beginning with `/*' comments. Nested comment doesn't allowed in ISO C standards." W0070: classes: - "UNC:X99" format: "Included <%s> is not referenced in the translation unit. It can be removed." W0071: classes: - "UNC:X99" format: "Included \"%s\" is not referenced in the translation unit. It can be removed." W0072: classes: - "UNC:X99" format: "A character except for basic source character is used in header file name." W0073: classes: - "UNC:X99" format: "No include guard in this include file." W0076: classes: - "UNC:X99" format: "Hexadecimal constant without `U' or `u' suffix." W0077: classes: - "UNC:X99" format: "Lower case`l' is added to integer or floating-point number." W0078: classes: - "UNC:X99" format: "A function is declared without list of formal argument." W0079: classes: - "UNC:X99" format: "This array cannot keep final character `\\0' which initial value of string literal." W0080: classes: - "UNC:X99" format: "A global object which const qualified is defined without explicitly initialized." W0081: classes: - "UNC:X99" format: "A monadic operator`-' becomes unsigned type if it use 'unsigned int' type, 'unsigned long' type or 'unsigned long' type operand." W0082: classes: - "UNC:X99" format: "Unary operator `-' is applied to an operand whose underlying type `%s' is unsigned." W0084: classes: - "UNC:X99" format: "Left operand of this comma operator`,' doesn't described the statement which has side-effects." W0085: classes: - "UNC:X99" format: "This statement doesn't have side-effects. It is highly possible that it having error." W0086: classes: - "UNC:X99" format: "Second or third operand is verbose statement which doesn't have side-effects in ternary operator (conditional operator)." W0087: classes: - "UNC:X99" format: "The right side statement of comma operator is verbose statement which doesn't have side-effects." W0088: classes: - "UNC:X99" format: "The right side statement of logical operator is verbose statement which doesn't have side-effects." W0093: classes: - "UNC:X99" format: "This expression may cause division-by-zero." W0094: classes: - "UNC:X99" format: "UNUSABLE" W0096: classes: - "UNC:X99" format: "It divided by a constant expression which definitely zero." W0097: classes: - "UNC:X99" format: "This expression must cause division-by-zero." W0100: classes: - "UNC:X99" format: "The variable `%s' has not been reassigned since the initial value is assigned. It may be able to be defined as `const' with an initial value." W0101: classes: - "UNC:X99" format: "An address of auto variable is substituted for a pointer which has a longer life. This program is danger." W0102: classes: - "UNC:X99" format: "An address of auto variable is returned via formal argument to functions. This program is danger." W0103: classes: - "UNC:X99" format: "An address of auto variable is returned as return value from a function. This program is danger." W0104: classes: - "UNC:X99" format: "The value of formal argument `%s' is not change. It can be declarable with 'const'." W0105: classes: - "UNC:X99" format: "The object which points the formal argument `%s' is not change. It can be declaring as pointer type which points const object." W0107: classes: - "UNC:X99" format: "An address of auto variable is substituted for local pointer with 'static' option. This program is danger." W0108: classes: - "UNC:X99" format: "An assignment-expression appears in the logical expression." W0109: classes: - "UNC:X99" format: "The definition of this function doesn't found. It consider it was omitted, and insert `extern int %s()'." W0110: classes: - "UNC:X99" format: "A variable number with floating-point type is used by loop counter in for statement." W0112: classes: - "UNC:X99" format: "The statement of floating-point compares by equivalent operator." W0114: classes: - "UNC:X99" format: "This control expression is not explicit logical operation." W0115: classes: - "UNC:X99" format: "Unsigned left shift operator `<<' drop the high-order bit." W0116: classes: - "UNC:X99" format: "Unsigned left shift operator `<<' can be drop high-order bit." W0117: classes: - "UNC:X99" format: "`%s' has external-linkage without any prototype declarations." W0118: classes: - "UNC:X99" format: "`%s' has external-linkage, but no prototype declaration is in header files." W0119: classes: - "UNC:X99" format: "An implicit type conversion from char to signed char." W0120: classes: - "UNC:X99" format: "An implicit type conversion from char to unsigned char." W0121: classes: - "UNC:X99" format: "An implicit type conversion from char to signed short." W0122: classes: - "UNC:X99" format: "An implicit type conversion from char to unsigned short." W0123: classes: - "UNC:X99" format: "An implicit type conversion from char to signed int." W0124: classes: - "UNC:X99" format: "An implicit type conversion from char to unsigned int." W0125: classes: - "UNC:X99" format: "An implicit type conversion from char to signed long." W0126: classes: - "UNC:X99" format: "An implicit type conversion from char to unsigned long." W0127: classes: - "UNC:X99" format: "An implicit type conversion from char to float." W0128: classes: - "UNC:X99" format: "An implicit type conversion from char to double." W0129: classes: - "UNC:X99" format: "An implicit type conversion from char to long double." W0130: classes: - "UNC:X99" format: "An implicit type conversion from char to signed long long." W0131: classes: - "UNC:X99" format: "An implicit type conversion from char to unsigned long long." W0132: classes: - "UNC:X99" format: "An implicit type conversion from unsigned char to char." W0133: classes: - "UNC:X99" format: "An implicit type conversion from signed char to char." W0134: classes: - "UNC:X99" format: "An implicit type conversion from signed short to char." W0135: classes: - "UNC:X99" format: "An implicit type conversion from unsigned short to char." W0136: classes: - "UNC:X99" format: "An implicit type conversion from signed int to char." W0137: classes: - "UNC:X99" format: "An implicit type conversion from unsigned int to char." W0138: classes: - "UNC:X99" format: "An implicit type conversion from signed long to char." W0139: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long to char." W0140: classes: - "UNC:X99" format: "An implicit type conversion from signed long long to char." W0141: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long long to char." W0142: classes: - "UNC:X99" format: "An implicit type conversion from unsigned char to signed char." W0143: classes: - "UNC:X99" format: "An implicit type conversion from unsigned short to signed char." W0144: classes: - "UNC:X99" format: "An implicit type conversion from unsigned short to signed short." W0145: classes: - "UNC:X99" format: "An implicit type conversion from unsigned int to signed char." W0146: classes: - "UNC:X99" format: "An implicit type conversion from unsigned int to signed short." W0147: classes: - "UNC:X99" format: "An implicit type conversion from unsigned int to signed int." W0148: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long to signed char." W0149: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long to signed short." W0150: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long to signed int." W0151: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long to signed long." W0152: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long long to signed char." W0153: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long long to signed short." W0154: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long long to signed int." W0155: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long long to signed long." W0156: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long long to signed long long." W0157: classes: - "UNC:X99" format: "An implicit type conversion from signed char to unsigned char." W0158: classes: - "UNC:X99" format: "An implicit type conversion from signed char to unsigned short." W0159: classes: - "UNC:X99" format: "An implicit type conversion from signed char to unsigned int." W0160: classes: - "UNC:X99" format: "An implicit type conversion from signed char to unsigned long." W0161: classes: - "UNC:X99" format: "An implicit type conversion from signed short to unsigned char." W0162: classes: - "UNC:X99" format: "An implicit type conversion from signed short to unsigned short." W0163: classes: - "UNC:X99" format: "An implicit type conversion from signed short to unsigned int." W0164: classes: - "UNC:X99" format: "An implicit type conversion from signed short to unsigned long." W0165: classes: - "UNC:X99" format: "Implicit conversion from `signed int' to `unsigned char'." W0166: classes: - "UNC:X99" format: "An implicit type conversion from signed int to unsigned short." W0167: classes: - "UNC:X99" format: "Implicit conversion from `signed int' to `unsigned int'." W0168: classes: - "UNC:X99" format: "An implicit type conversion from signed int to unsigned long." W0169: classes: - "UNC:X99" format: "An implicit type conversion from signed long to unsigned char." W0170: classes: - "UNC:X99" format: "An implicit type conversion from signed long to unsigned short." W0171: classes: - "UNC:X99" format: "An implicit type conversion from signed long to unsigned int." W0172: classes: - "UNC:X99" format: "An implicit type conversion from signed long to unsigned long." W0173: classes: - "UNC:X99" format: "An implicit type conversion from signed char to unsigned long long." W0174: classes: - "UNC:X99" format: "An implicit type conversion from signed short to unsigned long long." W0175: classes: - "UNC:X99" format: "An implicit type conversion from signed int to unsigned long long." W0176: classes: - "UNC:X99" format: "An implicit type conversion from signed long to unsigned long long." W0177: classes: - "UNC:X99" format: "An implicit type conversion from signed long long to unsigned char." W0178: classes: - "UNC:X99" format: "An implicit type conversion from signed long long to unsigned short." W0179: classes: - "UNC:X99" format: "An implicit type conversion from signed long long to unsigned int." W0180: classes: - "UNC:X99" format: "An implicit type conversion from signed long long to unsigned long." W0181: classes: - "UNC:X99" format: "An implicit type conversion from signed long long to unsigned long long." W0182: classes: - "UNC:X99" format: "An implicit type conversion from unsigned char to float." W0183: classes: - "UNC:X99" format: "An implicit type conversion from unsigned char to double." W0184: classes: - "UNC:X99" format: "An implicit type conversion from unsigned char to long double." W0185: classes: - "UNC:X99" format: "An implicit type conversion from signed char to float." W0186: classes: - "UNC:X99" format: "An implicit type conversion from signed char to double." W0187: classes: - "UNC:X99" format: "An implicit type conversion from signed char to long double." W0188: classes: - "UNC:X99" format: "An implicit type conversion from signed short to float." W0189: classes: - "UNC:X99" format: "An implicit type conversion from signed short to double." W0190: classes: - "UNC:X99" format: "An implicit type conversion from signed short to long double." W0191: classes: - "UNC:X99" format: "An implicit type conversion from unsigned short to float." W0192: classes: - "UNC:X99" format: "An implicit type conversion from unsigned short to double." W0193: classes: - "UNC:X99" format: "An implicit type conversion from unsigned short to long double." W0194: classes: - "UNC:X99" format: "An implicit type conversion from signed int to float." W0195: classes: - "UNC:X99" format: "An implicit type conversion from signed int to double." W0196: classes: - "UNC:X99" format: "An implicit type conversion from signed int to long double." W0197: classes: - "UNC:X99" format: "An implicit type conversion from unsigned int to float." W0198: classes: - "UNC:X99" format: "An implicit type conversion from unsigned int to double." W0199: classes: - "UNC:X99" format: "An implicit type conversion from unsigned int to long double." W0200: classes: - "UNC:X99" format: "An implicit type conversion from signed long to float." W0201: classes: - "UNC:X99" format: "An implicit type conversion from signed long to double." W0202: classes: - "UNC:X99" format: "An implicit type conversion from signed long to long double." W0203: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long to float." W0204: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long to double." W0205: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long to long double." W0206: classes: - "UNC:X99" format: "An implicit type conversion from signed long long to float." W0207: classes: - "UNC:X99" format: "An implicit type conversion from signed long long to double." W0208: classes: - "UNC:X99" format: "An implicit type conversion from signed long long to long double." W0209: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long long to float." W0210: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long long to double." W0211: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long long to long double." W0212: classes: - "UNC:X99" format: "An implicit type conversion from float to char." W0213: classes: - "UNC:X99" format: "An implicit type conversion from float to signed char." W0214: classes: - "UNC:X99" format: "An implicit type conversion from float to unsigned char." W0215: classes: - "UNC:X99" format: "An implicit type conversion from float to signed short." W0216: classes: - "UNC:X99" format: "An implicit type conversion from float to unsigned short." W0217: classes: - "UNC:X99" format: "An implicit type conversion from float to signed int." W0218: classes: - "UNC:X99" format: "An implicit type conversion from float to unsigned int." W0219: classes: - "UNC:X99" format: "An implicit type conversion from float to signed long." W0220: classes: - "UNC:X99" format: "An implicit type conversion from float to unsigned long." W0221: classes: - "UNC:X99" format: "An implicit type conversion from double to char." W0222: classes: - "UNC:X99" format: "An implicit type conversion from double to signed char." W0223: classes: - "UNC:X99" format: "An implicit type conversion from double to unsigned char." W0224: classes: - "UNC:X99" format: "An implicit type conversion from double to signed short." W0225: classes: - "UNC:X99" format: "An implicit type conversion from double to unsigned short." W0226: classes: - "UNC:X99" format: "An implicit type conversion from double to signed int." W0227: classes: - "UNC:X99" format: "An implicit type conversion from double to unsigned int." W0228: classes: - "UNC:X99" format: "An implicit type conversion from double to signed long." W0229: classes: - "UNC:X99" format: "An implicit type conversion from double to unsigned long." W0230: classes: - "UNC:X99" format: "An implicit type conversion from long double to char." W0231: classes: - "UNC:X99" format: "An implicit type conversion from long double to signed char." W0232: classes: - "UNC:X99" format: "An implicit type conversion from long double to unsigned char." W0233: classes: - "UNC:X99" format: "An implicit type conversion from long double to signed short." W0234: classes: - "UNC:X99" format: "An implicit type conversion from long double to unsigned short." W0235: classes: - "UNC:X99" format: "An implicit type conversion from long double to signed int." W0236: classes: - "UNC:X99" format: "An implicit type conversion from long double to unsigned int." W0237: classes: - "UNC:X99" format: "An implicit type conversion from long double to signed long." W0238: classes: - "UNC:X99" format: "An implicit type conversion from long double to unsigned long." W0239: classes: - "UNC:X99" format: "An implicit type conversion from float to signed long long." W0240: classes: - "UNC:X99" format: "An implicit type conversion from float to unsigned long long." W0241: classes: - "UNC:X99" format: "An implicit type conversion from double to signed long long." W0242: classes: - "UNC:X99" format: "An implicit type conversion from double to unsigned long long." W0243: classes: - "UNC:X99" format: "An implicit type conversion from long double to signed long long." W0244: classes: - "UNC:X99" format: "An implicit type conversion from long double to unsigned long long." W0245: classes: - "UNC:X99" format: "An implicit type conversion from unsigned char to signed short." W0246: classes: - "UNC:X99" format: "Implicit conversion from `unsigned char' to `signed int'." W0247: classes: - "UNC:X99" format: "An implicit type conversion from unsigned char to signed long." W0248: classes: - "UNC:X99" format: "An implicit type conversion from unsigned short to signed int." W0249: classes: - "UNC:X99" format: "An implicit type conversion from unsigned short to signed long." W0250: classes: - "UNC:X99" format: "An implicit type conversion from unsigned int to signed long." W0251: classes: - "UNC:X99" format: "An implicit type conversion from unsigned char to signed long long." W0252: classes: - "UNC:X99" format: "An implicit type conversion from unsigned short to signed long long." W0253: classes: - "UNC:X99" format: "An implicit type conversion from unsigned int to signed long long." W0254: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long to signed long long." W0255: classes: - "UNC:X99" format: "A value of char type is returned from `signed char %s()' function." W0256: classes: - "UNC:X99" format: "A value of char type is returned from `unsigned char %s()' function." W0257: classes: - "UNC:X99" format: "A value of char type is returned from `signed short %s()' function." W0258: classes: - "UNC:X99" format: "A value of char type is returned from `unsigned short %s()' function." W0259: classes: - "UNC:X99" format: "A value of char type is returned from `signed int %s()' function." W0260: classes: - "UNC:X99" format: "A value of char type is returned from `unsigned int %s()' function." W0261: classes: - "UNC:X99" format: "A value of char type is returned from `signed long %s()' function." W0262: classes: - "UNC:X99" format: "A value of char type is returned from `unsigned long %s()' function." W0263: classes: - "UNC:X99" format: "A value of char type is returned from `float %s()' function." W0264: classes: - "UNC:X99" format: "A value of char type is returned from `double %s()' function." W0265: classes: - "UNC:X99" format: "A value of char type is returned from `long double %s()' function." W0266: classes: - "UNC:X99" format: "A value of char type is returned from `signed long long %s()' function." W0267: classes: - "UNC:X99" format: "A value of char type is returned from `unsigned long long %s()' function." W0268: classes: - "UNC:X99" format: "A value of unsigned char type is returned from`char %s()' function." W0269: classes: - "UNC:X99" format: "A value of signed char type is returned from`char %s()' function." W0270: classes: - "UNC:X99" format: "A value of signed short type is returned from `char %s()' function." W0271: classes: - "UNC:X99" format: "A value of unsigned short type is returned from `char %s()' function." W0272: classes: - "UNC:X99" format: "A value of signed int type is returned from `char %s()' function." W0273: classes: - "UNC:X99" format: "A value of unsigned int type is returned from `char %s()' function." W0274: classes: - "UNC:X99" format: "A value of signed long type is returned from `char %s()' function." W0275: classes: - "UNC:X99" format: "A value of unsigned long type is returned from `char %s()' function." W0276: classes: - "UNC:X99" format: "A value of signed long long type is returned from `char %s()' function." W0277: classes: - "UNC:X99" format: "A value of unsigned long long type is returned from `char %s()' function." W0278: classes: - "UNC:X99" format: "A value of unsigned char type is returned from `signed char %s()' function." W0279: classes: - "UNC:X99" format: "A value of unsigned short type is returned from `signed char %s()' function." W0280: classes: - "UNC:X99" format: "A value of unsigned short type is returned from `signed short %s()' function." W0281: classes: - "UNC:X99" format: "A value of unsigned int type is returned from `signed char %s()' function." W0282: classes: - "UNC:X99" format: "A value of unsigned int type is returned from `signed short %s()' function." W0283: classes: - "UNC:X99" format: "A value of unsigned int type is returned from `signed int %s()' function." W0284: classes: - "UNC:X99" format: "A value of unsigned long type is returned from `signed char %s()' function." W0285: classes: - "UNC:X99" format: "A value of unsigned long type is returned from `signed short %s()' function." W0286: classes: - "UNC:X99" format: "A value of unsigned long type is returned from `signed int %s()' function." W0287: classes: - "UNC:X99" format: "A value of unsigned long type is returned from `signed long %s()' function." W0288: classes: - "UNC:X99" format: "A value of unsigned long long type is returned from `signed char %s()' function." W0289: classes: - "UNC:X99" format: "A value of unsigned long long type is returned from `signed short %s()' function." W0290: classes: - "UNC:X99" format: "A value of unsigned long long type is returned from `signed int %s()' function." W0291: classes: - "UNC:X99" format: "A value of unsigned long long type is returned from `signed long %s()' function." W0292: classes: - "UNC:X99" format: "A value of unsigned long long type is returned from `signed long long %s()' function." W0293: classes: - "UNC:X99" format: "A value of signed char type is returned from `unsigned char %s()' function." W0294: classes: - "UNC:X99" format: "A value of signed char type is returned from `unsigned short %s()' function." W0295: classes: - "UNC:X99" format: "A value of signed char type is returned from `unsigned int %s()' function." W0296: classes: - "UNC:X99" format: "A value of signed char type is returned from `unsigned long %s()' function." W0297: classes: - "UNC:X99" format: "A value of signed short type is returned from `unsigned char %s()' function." W0298: classes: - "UNC:X99" format: "A value of signed short type is returned from `unsigned short %s()' function." W0299: classes: - "UNC:X99" format: "A value of signed short type is returned from `unsigned int %s()' function." W0300: classes: - "UNC:X99" format: "A value of signed short type is returned from `unsigned long %s()' function." W0301: classes: - "UNC:X99" format: "A value of signed int type is returned from `unsigned char %s()' function." W0302: classes: - "UNC:X99" format: "A value of signed int type is returned from `unsigned short %s()' function." W0303: classes: - "UNC:X99" format: "A value of signed int type is returned from `unsigned int %s()' function." W0304: classes: - "UNC:X99" format: "A value of signed int type is returned from `unsigned long %s()' function." W0305: classes: - "UNC:X99" format: "A value of signed long type is returned from `unsigned char %s()' function." W0306: classes: - "UNC:X99" format: "A value of signed long type is returned from `unsigned short %s()' function." W0307: classes: - "UNC:X99" format: "A value of signed long type is returned from `unsigned int %s()' function." W0308: classes: - "UNC:X99" format: "A value of signed long type is returned from `unsigned long %s()' function." W0309: classes: - "UNC:X99" format: "A value of signed char type is returned from `unsigned long long %s()' function." W0310: classes: - "UNC:X99" format: "A value of signed short type is returned from `unsigned long long %s()' function." W0311: classes: - "UNC:X99" format: "A value of signed int type is returned from `unsigned long long %s()' function." W0312: classes: - "UNC:X99" format: "A value of signed long type is returned from `unsigned long long %s()' function." W0313: classes: - "UNC:X99" format: "A value of signed long long type is returned from `unsigned char %s()' function." W0314: classes: - "UNC:X99" format: "A value of signed long long type is returned from `unsigned short %s()' function." W0315: classes: - "UNC:X99" format: "A value of signed long long type is returned from `unsigned int %s()' function." W0316: classes: - "UNC:X99" format: "A value of signed long long type is returned from `unsigned long %s()' function." W0317: classes: - "UNC:X99" format: "A value of signed long long type is returned from `unsigned long long %s()' function." W0318: classes: - "UNC:X99" format: "A value of unsigned char type is returned from `float %s()' function." W0319: classes: - "UNC:X99" format: "A value of unsigned char type is returned from `double %s()' function." W0320: classes: - "UNC:X99" format: "A value of unsigned char type is returned from `long double %s()' function." W0321: classes: - "UNC:X99" format: "A value of signed char type is returned from `float %s()' function." W0322: classes: - "UNC:X99" format: "A value of signed char type is returned from `double %s()' function." W0323: classes: - "UNC:X99" format: "A value of signed char type is returned from `long double %s()' function." W0324: classes: - "UNC:X99" format: "A value of signed short type is returned from `float %s()' function." W0325: classes: - "UNC:X99" format: "A value of signed short type is returned from `double %s()' function." W0326: classes: - "UNC:X99" format: "A value of signed short type is returned from `long double %s()' function." W0327: classes: - "UNC:X99" format: "A value of unsigned short type is returned from `float %s()' function." W0328: classes: - "UNC:X99" format: "A value of unsigned short type is returned from `double %s()' function." W0329: classes: - "UNC:X99" format: "A value of unsigned short type is returned from `long double %s()' function." W0330: classes: - "UNC:X99" format: "A value of signed int type is returned from `float %s()' function." W0331: classes: - "UNC:X99" format: "A value of signed int type is returned from `double %s()' function." W0332: classes: - "UNC:X99" format: "A value of signed int type is returned from `long double %s()' function." W0333: classes: - "UNC:X99" format: "A value of unsigned int type is returned from `float %s()' function." W0334: classes: - "UNC:X99" format: "A value of unsigned int type is returned from `double %s()' function." W0335: classes: - "UNC:X99" format: "A value of unsigned int type is returned from `long double %s()' function." W0336: classes: - "UNC:X99" format: "A value of signed long type is returned from `float %s()' function." W0337: classes: - "UNC:X99" format: "A value of signed long type is returned from `double %s()' function." W0338: classes: - "UNC:X99" format: "A value of signed long type is returned from `long double %s()' function." W0339: classes: - "UNC:X99" format: "A value of unsigned long type is returned from `float %s()' function." W0340: classes: - "UNC:X99" format: "A value of unsigned long type is returned from `double %s()' function." W0341: classes: - "UNC:X99" format: "A value of unsigned long type is returned from `long double %s()' function." W0342: classes: - "UNC:X99" format: "A value of signed long long type is returned from `float %s()' function." W0343: classes: - "UNC:X99" format: "A value of signed long long type is returned from `double %s()' function." W0344: classes: - "UNC:X99" format: "A value of signed long long type is returned from `long double %s()' function." W0345: classes: - "UNC:X99" format: "A value of unsigned long long type is returned from `float %s()' function." W0346: classes: - "UNC:X99" format: "A value of unsigned long long type is returned from `double %s()' function." W0347: classes: - "UNC:X99" format: "A value of unsigned long long type is returned from `long double %s()' function." W0348: classes: - "UNC:X99" format: "A value of float type is returned from `char %s()' function." W0349: classes: - "UNC:X99" format: "A value of float type is returned from `signed char %s()' function." W0350: classes: - "UNC:X99" format: "A value of float type is returned from `unsigned char %s()' function." W0351: classes: - "UNC:X99" format: "A value of float type is returned from `signed short %s()' function." W0352: classes: - "UNC:X99" format: "A value of float type is returned from `unsigned short %s()' function." W0353: classes: - "UNC:X99" format: "A value of float type is returned from `signed int %s()' function." W0354: classes: - "UNC:X99" format: "A value of float type is returned from `unsigned int %s()' function." W0355: classes: - "UNC:X99" format: "A value of float type is returned from `signed long %s()' function." W0356: classes: - "UNC:X99" format: "A value of float type is returned from `unsigned long %s()' function." W0357: classes: - "UNC:X99" format: "A value of double type is returned from `char %s()' function." W0358: classes: - "UNC:X99" format: "A value of double type is returned from `signed char %s()' function." W0359: classes: - "UNC:X99" format: "A value of double type is returned from `unsigned char %s()' function." W0360: classes: - "UNC:X99" format: "A value of double type is returned from `signed short %s()' function." W0361: classes: - "UNC:X99" format: "A value of double type is returned from `unsigned short %s()' function." W0362: classes: - "UNC:X99" format: "A value of double type is returned from `signed int %s()' function." W0363: classes: - "UNC:X99" format: "A value of double type is returned from `unsigned int %s()' function." W0364: classes: - "UNC:X99" format: "A value of double type is returned from `signed long %s()' function." W0365: classes: - "UNC:X99" format: "A value of double type is returned from `unsigned long %s()' function." W0366: classes: - "UNC:X99" format: "A value of long double type is returned from `char %s()' function." W0367: classes: - "UNC:X99" format: "A value of long double type is returned from `signed char %s()' function." W0368: classes: - "UNC:X99" format: "A value of long double type is returned from `unsigned char %s()' function." W0369: classes: - "UNC:X99" format: "A value of long double type is returned from `signed short %s()' function." W0370: classes: - "UNC:X99" format: "A value of long double type is returned from `unsigned short %s()' function." W0371: classes: - "UNC:X99" format: "A value of long double type is returned from `signed int %s()' function." W0372: classes: - "UNC:X99" format: "A value of long double type is returned from `unsigned int %s()' function." W0373: classes: - "UNC:X99" format: "A value of long double type is returned from `signed long %s()' function." W0374: classes: - "UNC:X99" format: "A value of long double type is returned from `unsigned long %s()' function." W0375: classes: - "UNC:X99" format: "A value of float type is returned from `signed long long %s()' function." W0376: classes: - "UNC:X99" format: "A value of float type is returned from `unsigned long long %s()' function." W0377: classes: - "UNC:X99" format: "A value of double type is returned from `signed long long %s()' function." W0378: classes: - "UNC:X99" format: "A value of double type is returned from `unsigned long long %s()' function." W0379: classes: - "UNC:X99" format: "A value of long double type is returned from `signed long long %s()' function." W0380: classes: - "UNC:X99" format: "A value of long double type is returned from `unsigned long long %s()' function." W0381: classes: - "UNC:X99" format: "A value of signed short type is returned from `signed char %s()' function." W0382: classes: - "UNC:X99" format: "A value of unsigned short type is returned from `unsigned char %s()' function." W0383: classes: - "UNC:X99" format: "A value of signed int type is returned from `signed char %s()' function." W0384: classes: - "UNC:X99" format: "A value of signed int type is returned from `signed short %s()' function." W0385: classes: - "UNC:X99" format: "A value of unsigned int type is returned from `unsigned char %s()' function." W0386: classes: - "UNC:X99" format: "A value of unsigned int type is returned from `unsigned short %s()' function." W0387: classes: - "UNC:X99" format: "A value of signed long type is returned from `signed char %s()' function." W0388: classes: - "UNC:X99" format: "A value of signed long type is returned from `signed short %s()' function." W0389: classes: - "UNC:X99" format: "A value of signed long type is returned from `signed int %s()' function." W0390: classes: - "UNC:X99" format: "A value of unsigned long type is returned from `unsigned char %s()' function." W0391: classes: - "UNC:X99" format: "A value of unsigned long type is returned from `unsigned short %s()' function." W0392: classes: - "UNC:X99" format: "A value of unsigned long type is returned from `unsigned int %s()' function." W0393: classes: - "UNC:X99" format: "A value of signed long long type is returned from `signed char %s()' function." W0394: classes: - "UNC:X99" format: "A value of signed long long type is returned from `signed short %s()' function." W0395: classes: - "UNC:X99" format: "A value of signed long long type is returned from `signed int %s()' function." W0396: classes: - "UNC:X99" format: "A value of signed long long type is returned from `signed long %s()' function." W0397: classes: - "UNC:X99" format: "A value of unsigned long long type is returned from `unsigned char %s()' function." W0398: classes: - "UNC:X99" format: "A value of unsigned long long type is returned from `unsigned short %s()' function." W0399: classes: - "UNC:X99" format: "A value of unsigned long long type is returned from `unsigned int %s()' function." W0400: classes: - "UNC:X99" format: "A value of unsigned long long type is returned from `unsigned long %s()' function." W0401: classes: - "UNC:X99" format: "A value of unsigned char type is returned from `signed short %s()' function." W0402: classes: - "UNC:X99" format: "A value of unsigned char type is returned from `signed int %s()' function." W0403: classes: - "UNC:X99" format: "A value of unsigned char type is returned from `signed long %s()' function." W0404: classes: - "UNC:X99" format: "A value of unsigned short type is returned from `signed int %s()' function." W0405: classes: - "UNC:X99" format: "A value of unsigned short type is returned from `signed long %s()' function." W0406: classes: - "UNC:X99" format: "A value of unsigned int type is returned from `signed long %s()' function." W0407: classes: - "UNC:X99" format: "A value of unsigned char type is returned from `signed long long %s()' function." W0408: classes: - "UNC:X99" format: "A value of unsigned short type is returned from `signed long long %s()' function." W0409: classes: - "UNC:X99" format: "A value of unsigned int type is returned from `signed long long %s()' function." W0410: classes: - "UNC:X99" format: "A value of unsigned long type is returned from `signed long long %s()' function." W0411: classes: - "UNC:X99" format: "The initialization of enumeration should be only the starting, whole or not at all." W0413: classes: - "UNC:X99" format: "The body of control statement is unenclosed by curly brace `{}' block." W0414: classes: - "UNC:X99" format: "Body of the controlling statement in a line is not enclosed by `{}'." W0421: classes: - "UNC:X99" format: "Value of the dereferencing pointer must be NULL." W0422: classes: - "UNC:X99" format: "Value of the dereferencing pointer may be NULL." W0423: classes: - "UNC:X99" format: "Arithmetic operation is being made to the pointer which its value will be NULL." W0424: classes: - "UNC:X99" format: "Arithmetic operation is being made to the pointer which its value might be NULL." W0425: classes: - "UNC:X99" format: "There are several definitions or statements in a line." W0431: classes: - "UNC:X99" format: "This line begins at more left than previous lines of the same indentation level." W0432: classes: - "UNC:X99" format: "Indentation of this line does not comply with the project's indent style." W0440: classes: - "UNC:X99" format: "An indent of this close bracket `}' is not correspond to the open bracket `{'." W0441: classes: - "UNC:X99" format: "The type of integer literal which doesn't have a suffix is not int type." W0442: classes: - "UNC:X99" format: "A function-like macro is defined." W0443: classes: - "UNC:X99" format: "This function-like macro might be replaced with a function." W0444: classes: - "UNC:X99" format: "`#'operator and `##'operator is used in a macro definition." W0445: classes: - "UNC:X99" format: "Multiple `##'operator is used in a macro definition." W0446: classes: - "UNC:X99" format: "The result value of assignment operation is used." W0447: classes: - "UNC:X99" format: "A comma operator is used except 'for' statement." W0456: classes: - "UNC:X99" format: "An object or a function `%s which has external coupling is defined in a header file." W0457: classes: - "UNC:X99" format: "The return value doesn't define explicitly in the function declaration or definition. It defined as 'int' implicitly." W0458: classes: - "UNC:X99" format: "The type doesn't define explicitly in the object declaration or definition. It defined as 'int' implicitly." W0459: classes: - "UNC:X99" format: "A value of variable `%s' doesn't set when this expression is evaluated. This program is danger." W0460: classes: - "UNC:X99" format: "A value of variable `%s' wouldn't set when this expression is evaluated." W0461: classes: - "UNC:X99" format: "A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger." W0462: classes: - "UNC:X99" format: "A pointer which the value will probably not set is used for the actual argument of the function." W0463: classes: - "UNC:X99" format: "UNUSABLE" W0464: classes: - "UNC:X99" format: "UNUSABLE" W0477: classes: - "UNC:X99" format: "There are unpaired `[]',`()',`{}' in macro definition." W0478: classes: - "UNC:X99" format: "This macro defines scraps of unrecognized codes." W0479: classes: - "UNC:X99" format: "This macro definition might be replaced with 'typedef' declaration." W0480: classes: - "UNC:X99" format: "This macro defines keyword of control statement or punctuator." W0481: classes: - "UNC:X99" format: "This macro defines the block around by `{}'." W0482: classes: - "UNC:X99" format: "This macro defines either type specifier." W0483: classes: - "UNC:X99" format: "This macro defines the pair of storage class specifier and type specifier." W0488: classes: - "UNC:X99" format: "A function call`()', array's index operation`[]', or structure/union operation `->' or `.' are used with && or ||. It had better clear the coupling by using `()'." W0489: classes: - "UNC:X99" format: "A monadic operator is used with `&&' or `||'. It had better clear the coupling by using `()'." W0490: classes: - "UNC:X99" format: "A binary operator is used with `&&' or `||'. It had better clear the coupling by using `()'." W0491: classes: - "UNC:X99" format: "The same identifier name `%s' is also used in the declaration of other namespace." W0492: classes: - "UNC:X99" format: "The same identifier name `%s' is also used in the member of structure/union, label, tag or normal identifier." W0493: classes: - "UNC:X99" format: "The value of structure or union is passed as the actual argument of the function." W0495: classes: - "UNC:X99" format: "operator%% is used with other arithmetic operator. It had better clear the coupling by using `()'." W0496: classes: - "UNC:X99" format: "A ternary operator is used several times. It had better clear the coupling by using `()'." W0497: classes: - "UNC:X99" format: "Shift operator, relational operator or equivalent operator is used in several times. It had better clear the coupling by using `()'." W0498: classes: - "UNC:X99" format: "The different operator of same priority in the binary operator '+','-', '*','/' is used. It had better clear the coupling by using `()'." W0499: classes: - "UNC:X99" format: "The different operator of same priority in the binary operator except '+','-', '*','/' is used. It had better clear the coupling by using `()'." W0500: classes: - "UNC:X99" format: "The operator of different priority in the binary operator '+','-','*','/' is used. It had better clear the coupling by using `()'." W0501: classes: - "UNC:X99" format: "A ternary operator is used with binary operator. It had better clear the coupling by using `()'." W0502: classes: - "UNC:X99" format: "A binary operator other than `+', `-', `*', `/' and `%%' appears with binary operator which has different precedence without expression grouping." W0508: classes: - "UNC:X99" format: "There's a side effect at the right operand of `&&' or `||'operator." W0511: classes: - "UNC:X99" format: "C++ style comment of `//' is used." W0512: classes: - "UNC:X99" format: "The result of `++' or `--' operator is used in the statement." W0525: classes: - "UNC:X99" format: "A field named 1bit is declared by signed type." W0528: classes: - "UNC:X99" format: "This macro defines octal constant value." W0529: classes: - "UNC:X99" format: "An octal literal is used." W0530: classes: - "UNC:X99" format: "An octal escape sequence is used in a character constant or a string literal." W0532: classes: - "UNC:X99" format: "'break' statement is used to exits 'case' or 'default' section, but it's not described at the end of 'case' section." W0534: classes: - "UNC:X99" format: "A control variable `%s' is not initialized in this 'for' statement." W0535: classes: - "UNC:X99" format: "A comma operator is used in a 'for' statement." W0538: classes: - "UNC:X99" format: "This 'default' label is not final label in this 'switch' statement." W0540: classes: - "UNC:X99" format: "A function which the blank formal argument list is declared. `void' is omitted." W0541: classes: - "UNC:X99" format: "Inline assembly code should be encapsulated by macro." W0542: classes: - "UNC:X99" format: "There are identifiers in the part of formal argument in a function declaration." W0543: classes: - "UNC:X99" format: "The identifier of formal argument in this function declaration is different from the past declaration of it." W0544: classes: - "UNC:X99" format: "The identifier of formal argument in the function declaration is different from the declaration of function pointer." W0546: classes: - "UNC:X99" format: "There is 'case' or 'default' label of switch statement in a nested block." W0549: classes: - "UNC:X99" format: "A formal argument of macro doesn't enclosed by `()'." W0551: classes: - "UNC:X99" format: "An union type specifier is defined." W0552: classes: - "UNC:X99" format: "An union type object is defined." W0553: classes: - "UNC:X99" format: "A pointer points to the function cast to other function pointer type." W0554: classes: - "UNC:X99" format: "An actual argument `%s' in `#pragma' is unrecognized. This `#pragma' command will be ignored." W0555: classes: - "UNC:X99" format: "This function is called recursive with indirectly." W0556: classes: - "UNC:X99" format: "The function which includes this call is called recursively." W0559: classes: - "UNC:X99" format: "The operand of `!' operator is the expression of bit operation or arithmetic operation." W0560: classes: - "UNC:X99" format: "The operand of `~' operator is boolean type expression." W0561: classes: - "UNC:X99" format: "The meaning of `*p++' is `*(p++)'. It is not `(*p)++'. `*' operator is verbose." W0562: classes: - "UNC:X99" format: "There are verbose `{}' in the initializer." W0563: classes: - "UNC:X99" format: "If it jumps from outside of this block to `%s' label,the local variable will not be initialized." W0564: classes: - "UNC:X99" format: "If this 'goto' statement jumps to `%s' label,local variable will not be initialized." W0565: classes: - "UNC:X99" format: "A volatile integer type cast to volatile pointer type and vice versa." W0566: classes: - "UNC:X99" format: "A volatile integer type cast to function pointer type and vice versa." W0567: classes: - "UNC:X99" format: "A volatile integer type cast to pointer to object and vice versa." W0568: classes: - "UNC:X99" format: "The result of left shift operation against the signed constant expression value is undefined." W0569: classes: - "UNC:X99" format: "The result of left shift operation against the signed expression value is undefined." W0570: classes: - "UNC:X99" format: "This signed left shift operation may make undefined value." W0571: classes: - "UNC:X99" format: "The result of right shift operation against the signed data is a possibility the both logical shift and arithmetic shift by implementation." W0572: classes: - "UNC:X99" format: "Bitwise operation of signed value causes implementation-defined behavior." W0573: classes: - "UNC:X99" format: "A `-' character in scanset in `[]' is implementation defined." W0574: classes: - "UNC:X99" format: "The character except for basic source character is used in the character constant." W0575: classes: - "UNC:X99" format: "The character except for basic source character is used in the string literal." W0576: classes: - "UNC:X99" format: "The character except for basic source character is used in the comment of source file `%s'." W0577: classes: - "UNC:X99" format: "The character except for basic source character is used in preprocessing directive of source file `%s'." W0578: classes: - "UNC:X99" format: "A generic integer value of the compound expression typed `%s' is implicitly converted into a new value of bigger type `%s'." W0579: classes: - "UNC:X99" format: "A generic integer value of the compound expression typed `%s' is explicitly converted into a new value of bigger type `%s'." W0580: classes: - "UNC:X99" format: "An address of local static variable is substituted for a pointer which has a wider scope." W0581: classes: - "UNC:X99" format: "The number or type of actual argument is different from the past." W0582: classes: - "UNC:X99" format: "The number or type of actual argument is different from the function prototype declaration at the following." W0583: classes: - "UNC:X99" format: "The number or type of actual argument is different from the function declaration at the following." W0584: classes: - "UNC:X99" format: "The type of %s actual argument is different from the type of formal argument in function definition." W0585: classes: - "UNC:X99" format: "A control variable `%s' doesn't appear increment expression." W0586: classes: - "UNC:X99" format: "A typedef `%s' is declared in more than one place." W0589: classes: - "UNC:X99" format: "An object `%s' is only referenced by function `%s' in the defined translation unit." W0591: classes: - "UNC:X99" format: "A function `%s' is only referenced by the defined translation unit." W0593: classes: - "UNC:X99" format: "An object `%s' is only referenced by the defined translation unit." W0597: classes: - "UNC:X99" format: "`%s' is modified more than once between the side-effects completion point. The evaluation order is undefined." W0598: classes: - "UNC:X99" format: "`%s' might be modified more than once between the side-effects completion point. The evaluation order is undefined." W0599: classes: - "UNC:X99" format: "`%s' is modified and referenced between the side-effects completion point. The evaluation order is undefined." W0600: classes: - "UNC:X99" format: "`%s' is modified and might be referenced between the side-effects completion point. The evaluation order is undefined." W0605: classes: - "UNC:X99" format: "Multiple break-statements appear to break the same iteration." W0606: classes: - "UNC:X99" format: "An union has a member which type is floating-point." W0607: classes: - "UNC:X99" format: "An integer expression which the value which the value is minus converted to unsigned type." W0608: classes: - "UNC:X99" format: "An integer expression which the value might be minus converted to unsigned type." W0609: classes: - "UNC:X99" format: "This logical expression always makes true." W0610: classes: - "UNC:X99" format: "This logical expression always makes false." W0611: classes: - "UNC:X99" format: "The value of this 'for' control expression is always true." W0612: classes: - "UNC:X99" format: "The value of this 'if' conditional expression is always true." W0613: classes: - "UNC:X99" format: "This controlling expression always makes false." W0614: classes: - "UNC:X99" format: "The value of this \"do-while\" control expression is always false. The body of repetition statement executed only once." W0622: classes: - "UNC:X99" format: "A function is declared in the block scope." W0623: classes: - "UNC:X99" format: "An external coupling object is declared in the block scope." W0624: classes: - "UNC:X99" format: "There is '#define' or '#undef' in a block." W0625: classes: - "UNC:X99" format: "`%s' is using in the declaration or definition of external coupling. But its 'typedef' doesn't declare in the header file." W0626: classes: - "UNC:X99" format: "A wide character or wide string literal is used." W0627: classes: - "UNC:X99" format: "There is a dead letter (only `;') in the following other code." W0628: classes: - "UNC:X99" format: "A function `%s' is defined, but this is not used in this project." W0629: classes: - "UNC:X99" format: "`%s()' has internal-linkage, but it is never called in this translation-unit." W0632: classes: - "UNC:X99" format: "Using ' or \" characters in `#include %s' directive makes undefined behavior." W0633: classes: - "UNC:X99" format: "Using ' character in `#include %s' directive makes undefined behavior." W0634: classes: - "UNC:X99" format: "`\\' is used in `#include' line. `/' is recommended for the path delimiter." W0635: classes: - "UNC:X99" format: "The type doesn't match with %sth conversion specifier and the corresponding actual argument." W0636: classes: - "UNC:X99" format: "An actual argument doesn't exist correspond to %sth conversion specifier." W0637: classes: - "UNC:X99" format: "There is more actual argument than the number of conversion specifier in function call." W0638: classes: - "UNC:X99" format: "This function call requiring at least one actual argument." W0639: classes: - "UNC:X99" format: "%sth conversion specifier doesn't match with corresponding type of actual argument." W0640: classes: - "UNC:X99" format: "The actual argument of scanf function have to pass the object pointer to store the data." W0641: classes: - "UNC:X99" format: "Floating-point number type cast to pointer to object and vice versa." W0642: classes: - "UNC:X99" format: "Address derivation from the object declared as `register' is prohibited." W0643: classes: - "UNC:X99" format: "This string literal constituted by a macro is illegal form unenclosed by `\"'. `#'operator may apply to actual argument which has '\\' at the end." W0644: classes: - "UNC:X99" format: "A value in void statement is going to use. 'void' statement doesn't have a value." W0645: classes: - "UNC:X99" format: "'void' type cannot use in the type of formal argument." W0646: classes: - "UNC:X99" format: "A normal string literal and a wide string literal are contiguous." W0649: classes: - "UNC:X99" format: "A right operand value of shift operand is negative constant value. This result is undefined." W0650: classes: - "UNC:X99" format: "A value of the right operand in a shift expression is bigger than the bit size of the left operand type `%s'. This result is undefined." W0653: classes: - "UNC:X99" format: "The initial value of an array, structure or union is not enclosed by `{}'." W0654: classes: - "UNC:X99" format: "The initializer of structure or union must the value of the same structure type or union type." W0655: classes: - "UNC:X99" format: "This is bit field statement which the size is undefined." W0656: classes: - "UNC:X99" format: "%sth conversion specifier in scanf, fscanf or sscanf is not supported by ISO C standards." W0657: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `i' or 'd'." W0658: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `o'." W0659: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `u'." W0660: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `x'." W0661: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `X'." W0662: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `f'." W0663: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `e'." W0664: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `E'." W0665: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `g'." W0666: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `G'." W0667: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `c'." W0668: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `%%'." W0669: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `s'." W0670: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `n'." W0671: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `p'." W0672: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier in scanf, fscanf, sscanf." W0673: classes: - "UNC:X99" format: "%sth conversion specifier in printf, fprintf or sprintf is not supported by ISO C standards." W0674: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `d/i/n'." W0675: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `o'." W0676: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `u'." W0677: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `x/X'." W0678: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `e/E/f/g/G'." W0679: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `s'." W0680: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `p'." W0681: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `%%'." W0682: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `['." W0683: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier of `c'." W0684: classes: - "UNC:X99" format: "An invalid flag is used in %sth conversion specifier in printf, fprintf, sprintf." W0685: classes: - "UNC:X99" format: "A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'." W0686: classes: - "UNC:X99" format: "The same characters are described in scanset (characters enclosed by `[]')." W0687: classes: - "UNC:X99" format: "#undef is using to delete #defined operator." W0688: classes: - "UNC:X99" format: "There is no line number in 1 to 32767 ranges after #line directive." W0689: classes: - "UNC:X99" format: "#line directive syntax doesn't match `#line integer constant \"string\"'." W0690: classes: - "UNC:X99" format: "No line number after #line directive." W0691: classes: - "UNC:X99" format: "The result of `##' operator is not valid preprocessing token." W0692: classes: - "UNC:X99" format: "A function-like macro `%s' doesn't given an actual argument." W0693: classes: - "UNC:X99" format: "A function-like macro is called by actual argument which its definition is smaller." W0694: classes: - "UNC:X99" format: "'assert' macro is inhibited to call the function named `assert'. This result is undefined." W0695: classes: - "UNC:X99" format: "If #undef the 'assert' macro, and enable to call its name function, the result is undefined." W0696: classes: - "UNC:X99" format: "This macro using in `#if...' is undefined." W0697: classes: - "UNC:X99" format: "There is a path with exits with an implicit `return;' statement in a function `%s' which has a return value." W0698: classes: - "UNC:X99" format: "A `return;' statement is found in a function `%s' which has a return value." W0699: classes: - "UNC:X99" format: "The return value of function `%s()' is unspecified. The return value is implicitly int. There is no expression to set the value to 'return' statement." W0700: classes: - "UNC:X99" format: "The return value of function `%s()' is unspecified. The return value is implicitly int. There is no 'return' statement to return value." W0703: classes: - "UNC:X99" format: "The tag `%s' hides the declaration of same identifier which has wider scope." W0704: classes: - "UNC:X99" format: "This `%s' declaration hides the declaration of same identifier which has wider scope." W0705: classes: - "UNC:X99" format: "This non-constant array subscript may cause out-of-range access." W0707: classes: - "UNC:X99" format: "This constant array subscript must cause out-of-range access." W0708: classes: - "UNC:X99" format: "A value of control variable `%s' in 'for' statement is changed in the body of repetition." W0711: classes: - "UNC:X99" format: "Right operand of relational operator is a substantive 'boolean' expression." W0712: classes: - "UNC:X99" format: "Left operand of relational operator is a substantive 'boolean' expression." W0713: classes: - "UNC:X99" format: "Both sides of relational operator is substantive 'boolean' expressions." W0714: classes: - "UNC:X99" format: "Both sides of `&' operator is substantive 'boolean' expressions." W0715: classes: - "UNC:X99" format: "Both sides of `|' operator is substantive 'boolean' expressions." W0716: classes: - "UNC:X99" format: "A bit operator or both sides operand of arithmetic operator is a substantive 'boolean' expression." W0717: classes: - "UNC:X99" format: "A bit operator or left side operand of arithmetic operator is a substantive 'boolean' expression." W0718: classes: - "UNC:X99" format: "A bit operator or right side operand of arithmetic operator is a substantive 'boolean' expression." W0719: classes: - "UNC:X99" format: "A value of the right operand in a shift expression is bigger than the bit size of the left operand underlying type `%s'." W0720: classes: - "UNC:X99" format: "The value with floating-point type doesn't fit in the range of converted type." W0721: classes: - "UNC:X99" format: "This volatile integer type doesn't have enough size to keep pointer value." W0722: classes: - "UNC:X99" format: "A value of signed statement is overflow." W0723: classes: - "UNC:X99" format: "A value of signed statement might be overflow." W0724: classes: - "UNC:X99" format: "An unrecognized preprocessing directive is ignored by conditional include directive." W0726: classes: - "UNC:X99" format: "A function `%s()' which return value is declared as qualified void type, `return expression;' is found." W0727: classes: - "UNC:X99" format: "The value not part of the enumeration type is used." W0728: classes: - "UNC:X99" format: "Other enumeration literal of enumeration type is passed to enumeration literal of formal argument as actual argument." W0729: classes: - "UNC:X99" format: "An enumeration literal of the other enumeration type is substituted for enumeration type object." W0730: classes: - "UNC:X99" format: "A function declared return value to enumeration type returned an enumeration literal of the other enumeration type." W0731: classes: - "UNC:X99" format: "The value of `%s' in 'case' label of 'switch' statement doesn't belong enumeration type of the control statement." W0732: classes: - "UNC:X99" format: "Both operand of `&&'operator is bit operator or arithmetic operator." W0733: classes: - "UNC:X99" format: "Both operand of `||'operator is bit operator or arithmetic operator." W0734: classes: - "UNC:X99" format: "A left operand of logical operator is bit operator or arithmetic operator." W0735: classes: - "UNC:X99" format: "A right operand of logical operator is the expression of bit operator or arithmetic operator." W0736: classes: - "UNC:X99" format: "A static variable `%s' which declared in file scope is read and write in one function only." W0737: classes: - "UNC:X99" format: "The content of `enum %s' is unknown. The enumeration tag is declared without define the content." W0738: classes: - "UNC:X99" format: "An implicit type conversion from positive integer constant expression to smaller unsigned type. The value is rounded." W0739: classes: - "UNC:X99" format: "The result of unsigned subtraction in constant expression is minus." W0740: classes: - "UNC:X99" format: "The result of unsigned addition in constant expression beyond the maximum." W0741: classes: - "UNC:X99" format: "The result of unsigned multiplication in constant expression beyond the maximum." W0742: classes: - "UNC:X99" format: "A negative integer constant expression converted to unsigned type." W0743: classes: - "UNC:X99" format: "The value of integer constant expression beyond the range of might be expressed with converted signed type." W0744: classes: - "UNC:X99" format: "The value of this control expression is constant value to be false. This control statement is not run." W0745: classes: - "UNC:X99" format: "This non-constant array subscript must cause out-of-range access." W0747: classes: - "UNC:X99" format: "An implicit type conversion from signed short to signed char." W0748: classes: - "UNC:X99" format: "An implicit type conversion from unsigned short to unsigned char." W0749: classes: - "UNC:X99" format: "An implicit type conversion from signed int to signed char." W0750: classes: - "UNC:X99" format: "An implicit type conversion from signed int to signed short." W0751: classes: - "UNC:X99" format: "An implicit type conversion from unsigned int to unsigned char." W0752: classes: - "UNC:X99" format: "An implicit type conversion from unsigned int to unsigned short." W0753: classes: - "UNC:X99" format: "An implicit type conversion from signed long to signed char." W0754: classes: - "UNC:X99" format: "An implicit type conversion from signed long to signed short." W0755: classes: - "UNC:X99" format: "An implicit type conversion from signed long to signed int." W0756: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long to unsigned char." W0757: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long to unsigned short." W0758: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long to unsigned int." W0759: classes: - "UNC:X99" format: "An implicit type conversion from signed long long to signed char." W0760: classes: - "UNC:X99" format: "An implicit type conversion from signed long long to signed short." W0761: classes: - "UNC:X99" format: "An implicit type conversion from signed long long to signed int." W0762: classes: - "UNC:X99" format: "An implicit type conversion from signed long long to signed long." W0763: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long long to unsigned char." W0764: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long long to unsigned short." W0765: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long long to unsigned int." W0766: classes: - "UNC:X99" format: "An implicit type conversion from unsigned long long to unsigned long." W0767: classes: - "UNC:X99" format: "An implicit type conversion from double to float." W0768: classes: - "UNC:X99" format: "An implicit type conversion from long double to float." W0769: classes: - "UNC:X99" format: "An implicit type conversion from long double to double." W0770: classes: - "UNC:X99" format: "A declaration of identifier `%s' which has external coupling exists more than one." W0771: classes: - "UNC:X99" format: "A global identifier `%s' is declared in more than one file." W0774: classes: - "UNC:X99" format: "A value of double type is returned from `float %s()'function." W0775: classes: - "UNC:X99" format: "A value of long double type is returned from `float %s()' function." W0776: classes: - "UNC:X99" format: "A value of long double type is returned from `double %s()'function." W0777: classes: - "UNC:X99" format: "An implicit type conversion from compound expression of float to double." W0778: classes: - "UNC:X99" format: "An implicit type conversion from compound expression of float to long double." W0779: classes: - "UNC:X99" format: "An implicit type conversion from compound expression of to long double." W0780: classes: - "UNC:X99" format: "Unsigned left shift operator `<<' in constant expression truncate non-zero high-order bit." W0781: classes: - "UNC:X99" format: "This 'switch' statement have only one path. It's verbose." W0783: classes: - "UNC:X99" format: "Cast is being made including the pointer point to incomplete type. This program is not portable." W0784: classes: - "UNC:X99" format: "The nonstandard escape sequence is used." W0785: classes: - "UNC:X99" format: "This declaration of `%s' is different from a former declaration." W0786: classes: - "UNC:X99" format: "A bit field which having the type of except 'int', 'signed int' or 'unsigned int' doesn't support in ISO C standards. " W0787: classes: - "UNC:X99" format: "A type of `%s' is different from the past declaration in the different scope." W0788: classes: - "UNC:X99" format: "A type of `%s' is different from the past declaration in the same scope." W0789: classes: - "UNC:X99" format: "A type of `%s' is different from the past declaration in the wider scope." W0790: classes: - "UNC:X99" format: "An global object or a function `%s' is declared in more than one file." W0791: classes: - "UNC:X99" format: "An global object or a function `%s' is declared in more than one file." W0792: classes: - "UNC:X99" format: "A floating point type object cast to function pointer and vice versa." W0793: classes: - "UNC:X99" format: "A function pointer cast to pointer to point an object and vice versa." W0794: classes: - "UNC:X99" format: "Left shift operation of signed value causes implementation-defined behavior." W0795: classes: - "UNC:X99" format: "The number of an actual argument in function call is smaller than the number of a formal argument in the function prototype declaration." W0796: classes: - "UNC:X99" format: "The number of an actual argument in function call is bigger than the number of a formal argument in the function prototype declaration." W0797: classes: - "UNC:X99" format: "The number of an actual argument in function call is different from the number of a formal argument in the function declaration." W0798: classes: - "UNC:X99" format: "Must not use the value with incomplete union object." W0799: classes: - "UNC:X99" format: "Must not use the value with incomplete structure object." W0800: classes: - "UNC:X99" format: "`%s' is incomplete type which doesn't have a linkage.This is undefined." W0801: classes: - "UNC:X99" format: "This structure or union doesn't have a named member." W0802: classes: - "UNC:X99" format: "A form of after `#include' preprocessing directive is not nor \"file name\"." W0803: classes: - "UNC:X99" format: "A preprocessing directive is described in actual argument of function-like macro." W0804: classes: - "UNC:X99" format: "The 'defined' syntax is not `defined (identifier)' nor `defined identifier'." W0805: classes: - "UNC:X99" format: "An identifier to be actual argument doesn't find in `defined'." W0806: classes: - "UNC:X99" format: "It is trying to define a macro named `defined'." W0807: classes: - "UNC:X99" format: "It is trying to delete pre-defined macro `%s'." W0808: classes: - "UNC:X99" format: "It is trying to redefine pre-defined macro `%s'." W0809: classes: - "UNC:X99" format: "An identifier `%s' is reserved by the library." W0810: classes: - "UNC:X99" format: "`{}' is required to clarify this structure of `if-if-else' statement." W0811: classes: - "UNC:X99" format: "The `defined' token which the expanded result of this macro doesn't allowed." W0827: classes: - "UNC:X99" format: "An initial value of nested structure's element doesn't enclosed in curly brace `{ }'." W0828: classes: - "UNC:X99" format: "An initial value of nested array's element doesn't enclosed in curly brace `{ }'." W0830: classes: - "UNC:X99" format: "There is comma `,' at the end of the enumerator list." W0831: classes: - "UNC:X99" format: "This is language extension for inline assembly. It will be ignored between #asm and #endasm." W0832: classes: - "UNC:X99" format: "An inline assembly syntax is using. This is the language extension. This code will be ignored." W0833: classes: - "UNC:X99" format: "A suffix 'LL' is using." W0834: classes: - "UNC:X99" format: "A long long type is using." W0835: classes: - "UNC:X99" format: "A macro which receives variable argument is defined." W0947: classes: - "UNC:X99" format: "String literal is specified directly." W0948: classes: - "UNC:X99" format: "Character constant %s is specified directly." W0949: classes: - "UNC:X99" format: "A value `%s' is used directly for size definition of bit field." W0950: classes: - "UNC:X99" format: "Integer constant `%s' is specified directly as an array size." W1026: classes: - "UNC:X99" format: "%sth actual argument is not object type." W1027: classes: - "UNC:X99" format: "A base type of array is function type. This is meaningless." W1028: classes: - "UNC:X99" format: "A base type of array is an array with unknown size. Incomplete type of array will not build." W1029: classes: - "UNC:X99" format: "A base type of array is an obscure structure or union. Incomplete type of array will not build." W1030: classes: - "UNC:X99" format: "A label `%s' is used more than two times in this function." W1031: classes: - "UNC:X99" format: "An Object `%s' is declared both external coupling and internal coupling. This action is undefined." W1032: classes: - "UNC:X99" format: "A tentative definition of variable '%s' which has internal linkage must not incomplete type." W1033: classes: - "UNC:X99" format: "A 'volatile' or 'const' qualifier is used for the type of function return value. This action is undefined." W1034: classes: - "UNC:X99" format: "It is declared at function `%s()' with static storage class specifier in block scope. This usage is meaningless." W1035: classes: - "UNC:X99" format: "`%s' declared typedef. It cannot be redeclared inside an inner scope without using explicit type." W1036: classes: - "UNC:X99" format: "`%s' declared typedef. It cannot be redeclared as a member of structure or union without using explicit type." W1037: classes: - "UNC:X99" format: "`%s' which has external coupling is declared more than one, this is incompatible." W1039: classes: - "UNC:X99" format: "`ll' is used in %sth conversion specifier." W1040: classes: - "UNC:X99" format: "An unrecognizable string is described after preprocessing directive." W1041: classes: - "UNC:X99" format: "`%s' is not official preprocessing directive of ISO C standards." W1042: classes: - "UNC:X99" format: "'sizeof' operator is using in preprocessing directive. This is the language extension." W1043: classes: - "UNC:X99" format: "`@ address' is not supported ISO C standards. It will be considered as language extension." W1044: classes: - "UNC:X99" format: "UNUSABLE" W1045: classes: - "UNC:X99" format: "This `@ word' syntax will be ignored." W1046: classes: - "UNC:X99" format: "A space character is ignored between `\\' and line feed." W1047: classes: - "UNC:X99" format: "The struct, union or array's initializer is not literal." W1048: classes: - "UNC:X99" format: "The multi byte string literal is an implementation defined value." W1049: classes: - "UNC:X99" format: "The result of conversion to signed integer type in integer expression might not be expressed by a signed type." W1050: classes: - "UNC:X99" format: "The result of conversion to signed integer type in integer expression is not express by a signed type." W1051: classes: - "UNC:X99" format: "The result of unsigned arithmetic expression typed `%s' is going around 0 by overflow." W1052: classes: - "UNC:X99" format: "The result of unsigned arithmetic expression typed `%s' can be going around by overflow." W1053: classes: - "UNC:X99" format: "A numeric constants is passed to an actual argument which formal argument is enumeration type." W1054: classes: - "UNC:X99" format: "A non enumeration type expression is substituted for the enumeration type." W1055: classes: - "UNC:X99" format: "A non enumeration type expression is returned from the function which return value is enumeration type." W1056: classes: - "UNC:X99" format: "An object of actual argument is different enumeration type which formal argument is enumeration type." W1057: classes: - "UNC:X99" format: "An enumeration value is substituted for different enumeration type object." W1058: classes: - "UNC:X99" format: "A different enumeration type of value is returned from a function which return value is enumeration type." W1059: classes: - "UNC:X99" format: "An enumeration value is passed to actual argument which formal argument is not enumeration type." W1060: classes: - "UNC:X99" format: "An enumeration value is returned from a function which return value is not enumeration type ." W1061: classes: - "UNC:X99" format: "Non constant expression of non enumeration type is passed to actual argument which formal argument is enumeration type." W1062: classes: - "UNC:X99" format: "Non constant expression is substituted for the enumeration type object." W1063: classes: - "UNC:X99" format: "The return value returned from enumeration type function to non constant expression." W1064: classes: - "UNC:X99" format: "A integer constant is used in switch statement where case label is enumeration type." W1065: classes: - "UNC:X99" format: "A value of different enumeration type is used in switch statement where case label is an enumeration type." W1066: classes: - "UNC:X99" format: "A value of the `float' typed compound expression is explicitly converted into a `double' value." W1067: classes: - "UNC:X99" format: "A value of the `float' typed compound expression is explicitly converted into a `long double' value." W1068: classes: - "UNC:X99" format: "A value of the `double' typed compound expression is explicitly converted into a `long double' value." W1069: classes: - "UNC:X99" format: "No trailing `else' clause is found in this `if-else-if' statements chain." W1070: classes: - "UNC:X99" format: "This `switch' statement can be translated into `if-else' statement because there are only 2 execution paths." W1071: classes: - "UNC:X99" format: "Function `%s' has multiple termination points." W1072: classes: - "UNC:X99" format: "A `goto' statement is found." W1073: classes: - "UNC:X99" format: "Return value of the function `%s' is discarded." W1074: classes: - "UNC:X99" format: "Side-effects in `sizeof' operand will not be recorded because the operand will not be executed actually." W1075: classes: - "UNC:X99" format: "This declaration has no `static' storage-class-specifier while the declaring object has internal-linkage." W1076: classes: - "UNC:X99" format: "`%s' has internal-linkage without any prototype declarations." W1077: classes: - "UNC:X99" format: "Declaring array object without a size." W9001: classes: - "UNC:X99" format: "Control never reaches to this statement." W9002: classes: - "UNC:X99" format: "There is no line feed character at the end of file." W9003: classes: - "UNC:X99" format: "An object typed `%s' is implicitly converted into an object of type `%s'." C0001: classes: - "INF:X99" format: "A warning is detected as a pair of this identifier `%s'." C1000: classes: - "INF:X99" format: "Warning above is detected in the following context." C1001: classes: - "INF:X99" format: "This controlling-expression is evaluated to be true." C1002: classes: - "INF:X99" format: "This controlling-expression is evaluated to be false." C1003: classes: - "INF:X99" format: "The problematic variable is defined here without initializer." C1004: classes: - "INF:X99" format: "NULL value is assigned to the the problematic variable." C1005: classes: - "INF:X99" format: "A value possibly be NULL is assigned to the problematic variable." C1006: classes: - "INF:X99" format: "New value is assigned to the problematic variable." adlint-3.2.14/etc/conf.d/0000755000004100000410000000000012340630463015027 5ustar www-datawww-dataadlint-3.2.14/etc/conf.d/x86_64-centos_6.4/0000755000004100000410000000000012340630463017645 5ustar www-datawww-dataadlint-3.2.14/etc/conf.d/x86_64-centos_6.4/cinit-gcc_4.4.7.erb0000644000004100000410000001144512340630463022736 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * Initial header for GCC 4.4.7 on CentOS 6.4 (64bit) generated by adlintize <%= AdLint::SHORT_VERSION %> */ #define __DBL_MIN_EXP__ (-1021) #define __FLT_MIN__ 1.17549435e-38F #define __CHAR_BIT__ 8 #define __WCHAR_MAX__ 2147483647 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ 4.9406564584124654e-324 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 0 #define __unix__ 1 #define __x86_64 1 #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 7 #define __DEC64_MAX_EXP__ 385 #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINTMAX_TYPE__ long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __LDBL_MAX_EXP__ 16384 #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 8 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209290e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __SIZEOF_LONG__ 8 #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __MMX__ 1 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 16 #define __BIGGEST_ALIGNMENT__ 16 #define __DBL_MAX__ 1.7976931348623157e+308 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __SSE2_MATH__ 1 #define __amd64 1 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 8 #define __SIZEOF_WINT_T__ 4 #define __GCC_HAVE_DWARF2_CFI_ASM 1 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __DBL_MIN__ 2.2250738585072014e-308 #define __LP64__ 1 #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __DBL_HAS_DENORM__ 1 #define __NO_INLINE__ 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.4.7 20120313 (Red Hat 4.4.7-3)" #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define unix 1 #define __SIZE_TYPE__ long unsigned int #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __GNUC_RH_RELEASE__ 3 #define __SSE_MATH__ 1 #define __k8 1 #define __SIZEOF_PTRDIFF_T__ 8 #define __x86_64__ 1 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 9223372036854775807L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __DEC64_MANT_DIG__ 16 #define __DEC32_MAX_EXP__ 97 #define linux 1 #define __SSE2__ 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __k8__ 1 #define __WCHAR_TYPE__ int #define __SIZEOF_FLOAT__ 4 #define __DEC64_MIN_EXP__ (-382) #define __FLT_DIG__ 6 #define __INT_MAX__ 2147483647 #define __amd64__ 1 #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __SSE__ 1 #define __LDBL_MIN_EXP__ (-16381) #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ 2.2204460492503131e-16 #define _LP64 1 #define __SIZEOF_WCHAR_T__ 4 #define __DEC_EVAL_METHOD__ 2 #define __INTMAX_MAX__ 9223372036854775807L #define __FLT_DENORM_MIN__ 1.40129846e-45F #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282347e+38F #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long int #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 4 #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __STDC__ 1 #define __PTRDIFF_TYPE__ long int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __GNUC_GNU_INLINE__ 1 #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_arg(ar, t) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/etc/conf.d/x86_64-centos_6.4/traits-gcc_4.4.7.erb0000644000004100000410000001737512340630463023146 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # Traits file generated by adlintize <%= AdLint::SHORT_VERSION %> at <%= Time.now %>. # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "<%= AdLint::TRAITS_SCHEMA_VERSION %>" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "<%= project_name %>" # Project root directory. project_root: "<%= vpath %>" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "<%= vpath %>" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "<%= pinit_fpath.basename %>" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: "utf-8" # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "<%= cinit_fpath.basename %>" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include" - "/usr/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 64 # Bit size of the alignment of the `long int' type family. long_alignment: 64 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 128 # Bit size of the alignment of the `long double' type. long_double_alignment: 128 # Bit size of the pointer to functions. code_ptr_size: 64 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 64 # Bit size of the pointer to data. data_ptr_size: 64 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 64 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__asm__ __adlint__any(__adlint__any)": "" "__signed__": "signed" "__const": "const" "__volatile": "volatile" "__restrict": "restrict" "__inline__": "inline" "__inline": "inline" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "<%= lang %>" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/etc/conf.d/i686-cygwin/0000755000004100000410000000000012340630463017021 5ustar www-datawww-dataadlint-3.2.14/etc/conf.d/i686-cygwin/traits-gcc_4.3.4.erb0000644000004100000410000001731112340630463022304 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # Traits file generated by adlintize <%= AdLint::SHORT_VERSION %> at <%= Time.now %>. # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "<%= AdLint::TRAITS_SCHEMA_VERSION %>" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "<%= project_name %>" # Project root directory. project_root: "<%= vpath %>" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "<%= vpath %>" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "<%= pinit_fpath.basename %>" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "<%= cinit_fpath.basename %>" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/lib/gcc/i686-pc-cygwin/4.3.4/include" - "/lib/gcc/i686-pc-cygwin/4.3.4/include-fixed" - "/usr/include" - "/usr/include/w32api" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__cdecl": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" "near": "" "far": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "<%= lang %>" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/etc/conf.d/i686-cygwin/cinit-gcc_4.3.4.erb0000644000004100000410000001163312340630463022105 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * Initial header for GCC 4.3.4 on Cygwin generated by adlintize <%= AdLint::SHORT_VERSION %> * at <%= Time.now %>. */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __FLT_MIN__ 1.17549435e-38F #define __DEC64_DEN__ 0.000000000000001E-383DD #define __CHAR_BIT__ 8 #define __WCHAR_MAX__ 65535U #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ 4.9406564584124654e-324 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 4 #define _stdcall __attribute__((__stdcall__)) #define __DEC64_MAX_EXP__ 384 #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __GXX_TYPEINFO_EQUALITY_INLINE 0 #define __UINTMAX_TYPE__ long long unsigned int #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __LDBL_MAX_EXP__ 16384 #define __SCHAR_MAX__ 127 #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ _ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209290e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __SIZEOF_LONG__ 4 #define __DECIMAL_DIG__ 21 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define _cdecl __attribute__((__cdecl__)) #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __i686 1 #define __DBL_MAX__ 1.7976931348623157e+308 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-95) #define _fastcall __attribute__((__fastcall__)) #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __DBL_MIN__ 2.2250738585072014e-308 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __DBL_HAS_DENORM__ 1 #define __cdecl __attribute__((__cdecl__)) #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.3.4 20090804 (release) 1" #define _X86_ 1 #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6143) #define unix 1 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __DEC32_DEN__ 0.000001E-95DF #define __FLT_RADIX__ 2 #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __SIZEOF_PTRDIFF_T__ 4 #define __CYGWIN__ 1 #define __pentiumpro 1 #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __FLT_HAS_INFINITY__ 1 #define __DEC64_MAX__ 9.999999999999999E384DD #define __DEC64_MANT_DIG__ 16 #define __DEC32_MAX_EXP__ 96 #define __DEC128_DEN__ 0.000000000000000000000000000000001E-6143DL #define __GXX_MERGED_TYPEINFO_NAMES 0 #define __stdcall __attribute__((__stdcall__)) #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __WCHAR_TYPE__ short unsigned int #define __SIZEOF_FLOAT__ 4 #define __DEC64_MIN_EXP__ (-383) #define __FLT_DIG__ 6 #define __INT_MAX__ 2147483647 #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ 2.2204460492503131e-16 #define __SIZEOF_WCHAR_T__ 2 #define __fastcall __attribute__((__fastcall__)) #define __CYGWIN32__ 1 #define __DEC_EVAL_METHOD__ 2 #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846e-45F #define __FLT_MAX__ 3.40282347e+38F #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6144 #define __GNUC_MINOR__ 3 #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __GNUC_GNU_INLINE__ 1 #define __declspec(x) __attribute__((x)) #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_start(a, b) (0) #define __builtin_va_end(a) (0) #define __builtin_va_arg(ar, t) (0) #define __builtin_va_copy(d, s) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/etc/conf.d/noarch/0000755000004100000410000000000012340630463016301 5ustar www-datawww-dataadlint-3.2.14/etc/conf.d/noarch/adlint_all_bat.erb0000644000004100000410000000102212340630463021717 0ustar www-datawww-data: ___ ____ __ ___ _________ : / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer : / /| | / / / / / / / |/ / / / AdLint - Advanced Lint : / __ |/ /_/ / /___/ / /| / / / : /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. : : MS-Windows BAT file generated by adlintize <%= AdLint::SHORT_VERSION %> at <%= Time.now %> adlint -v -t <%= traits_fpath.basename %> -o . -p <%= vpath.components.size %> -l <%= list_fpath.basename %> adlint-3.2.14/etc/conf.d/noarch/adlint_all_sh.erb0000644000004100000410000000101512340630463021565 0ustar www-datawww-data#! /bin/sh # ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # Shell script generated by adlintize <%= AdLint::SHORT_VERSION %> at <%= Time.now %> adlint -v -t <%= traits_fpath.basename %> -o . -p <%= vpath.components.size %> -l <%= list_fpath.basename %> adlint-3.2.14/etc/conf.d/noarch/pinit.erb0000644000004100000410000000076612340630463020127 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * Project specific initial header file generated by adlintize <%= AdLint::SHORT_VERSION %> * at <%= Time.now %>. */ /* Put project specific predefined macros and types here. */ adlint-3.2.14/etc/conf.d/noarch/GNUmakefile.erb0000644000004100000410000000636512340630463021134 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # GNUmakefile generated by adlintize <%= AdLint::SHORT_VERSION %> at <%= Time.now %>. # # How... # - to validate configuration files # % make check # - to analyze whole project with compiler like messages # % make all # - to do only single module analyses with compiler like messages # % make sma-only # - to analyze whole project with progress report # % make verbose-all # - to do only single module analyses with progress report # % make verbose-sma-only # - to do only cross module analysis with progress report # % make verbose-cma-only # - to analyze whole project *FAST* on 4-core processor machine # % make -j 4 all # - to analyze whole project *FAST* and silently with elapsed time # % time make -j 4 all 2>/dev/null # - to delete all result files # % make clean # PROJECT = <%= project_name %> SOURCES = \ <%= Dir.glob("**/*.c").join(" \\\n ") %> VPATH = <%= vpath %> VPATH_COMPONENTS = <%= vpath.components.size %> RUBY = ruby ADLINT = adlint ADLINT_FLAGS = -t <%= traits_fpath.basename %> -o . -p $(VPATH_COMPONENTS) ADLINT_SMA = adlint_sma ADLINT_SMA_FLAGS = -t <%= traits_fpath.basename %> -o . -p $(VPATH_COMPONENTS) ADLINT_CMA = adlint_cma ADLINT_CMA_FLAGS = -t <%= traits_fpath.basename %> -o . ADLINT_CHK = adlint_chk ADLINT_CHK_FLAGS = -t <%= traits_fpath.basename %> -o . -p $(VPATH_COMPONENTS) RM = $(RUBY) -r fileutils -e 'FileUtils.rm_f(ARGV)' VPATHED_SOURCES = $(addprefix $(VPATH)/, $(SOURCES)) SMA_MSG_FILES = $(addsuffix .msg.csv, $(SOURCES)) SMA_MET_FILES = $(addsuffix .met.csv, $(SOURCES)) SMA_I_FILES = $(addsuffix .i, $(basename $(SOURCES))) SMA_LOG_FILES = $(addsuffix .log, $(SOURCES)) CMA_MSG_FILE = $(PROJECT).msg.csv CMA_MET_FILE = $(PROJECT).met.csv CMA_LOG_FILE = $(PROJECT).log .SUFFIXES: %.c.msg.csv %.c.met.csv : %.c $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) $< $(CMA_MET_FILE) : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) $^ .PHONY: adlint_sma-all adlint_sma-all : $(SMA_MET_FILES) .PHONY: adlint_cma-all adlint_cma-all : $(CMA_MET_FILE) .PHONY: adlint_chk-all adlint_chk-all : $(ADLINT_CHK) $(ADLINT_CHK_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-all adlint_verbose-all : $(ADLINT) $(ADLINT_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-sma-only adlint_verbose-sma-only : $(ADLINT_SMA) $(ADLINT_SMA_FLAGS) -v $(VPATHED_SOURCES) .PHONY: adlint_verbose-cma-only adlint_verbose-cma-only : $(SMA_MET_FILES) $(ADLINT_CMA) $(ADLINT_CMA_FLAGS) -v $^ .PHONY: adlint_clean adlint_clean : @$(RM) $(SMA_MSG_FILES) $(SMA_MET_FILES) $(SMA_I_FILES) \ $(SMA_LOG_FILES) $(CMA_MSG_FILE) $(CMA_MET_FILE) $(CMA_LOG_FILE) .PHONY: all all : adlint_cma-all .PHONY: sma-only sma-only : adlint_sma-all .PHONY: verbose-all verbose-all : adlint_verbose-all .PHONY: verbose-sma-only verbose-sma-only : adlint_verbose-sma-only .PHONY: verbose-cma-only verbose-cma-only : adlint_verbose-cma-only .PHONY: check check : adlint_chk-all .PHONY: clean clean : adlint_clean adlint-3.2.14/etc/conf.d/i686-mswin/0000755000004100000410000000000012340630463016656 5ustar www-datawww-dataadlint-3.2.14/etc/conf.d/i686-mswin/traits-msvc_100.erb0000644000004100000410000002254112340630463022210 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # Traits file generated by adlintize <%= AdLint::SHORT_VERSION %> at <%= Time.now %>. # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "<%= AdLint::TRAITS_SCHEMA_VERSION %>" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "<%= project_name %>" # Project root directory. project_root: "<%= vpath %>" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "<%= vpath %>" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "<%= pinit_fpath.basename %>" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "<%= cinit_fpath.basename %>" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "C:/Program Files/Microsoft Visual Studio 10.0/VC/include" - "C:/Program Files/Microsoft SDKs/Windows/v7.0A/Include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "offsetof(__adlint__any)": "0" "asm {__adlint__any}": "" "_asm {__adlint__any}": "" "__asm {__adlint__any}": "" "__assume(__adlint__any)": "" "__based(__adlint__any)": "" "_declspec(__adlint__any)": "" "__declspec(__adlint__any)": "" "__hook(__adlint__any)": "" "__noop __adlint__any ;": ";" "__pragma(__adlint__any)": "" "__unhook(__adlint__any)": "" "__uuidof(__adlint__any)": "IID_IUnknown" "_based(__adlint__any)": "" "[source_annotation_attribute(__adlint__any)]": "" "__int8": "char" "__int16": "short int" "__int32": "int" "__int64": "long long int" "_int8": "char" "_int16": "short int" "_int32": "int" "_int64": "long long int" "drv_unit_user_code": "" "drv_group(__adlint__any)": "" "allowed_on_typedecl": "" "allowed_on_parameter": "" "allowed_on_function": "" "allowed_on_field": "" "allowed_on_struct": "" "allowed_on_return": "" "allowed_on_parameter_or_return": "" "allowed_on_function_or_typedecl": "" "/##/ __adlint__any ;": "" "cdecl": "" "_cdecl": "" "__cdecl": "" "__delegate": "" "__event": "" "_fastcall": "" "__fastcall": "" "__gc": "" "far": "" "_far": "" "__far": "" "near": "" "_near": "" "__near": "" "_forceinline": "inline" "__forceinline": "inline" "__leave": "" "__oldcall": "" "pascal": "" "__pascal": "" "__stdcall": "" "__syscall": "" "_unaligned": "" "__unaligned": "" "__ptr64": "" "_inline": "inline" "__inline": "inline" "_crt_va_start(__adlint__any)": "(0)" "_crt_va_end(__adlint__any)": "(0)" "_crt_va_arg(__adlint__any)": "(0)" "_crt_va_copy(__adlint__any)": "(0)" "i64": "" "I64": "" "ui64": "" "UI64": "" "__try": "" "__except(__adlint__any) { __adlint__any }": "" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "<%= lang %>" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/etc/conf.d/i686-mswin/cinit-msvc_100.erb0000644000004100000410000000212512340630463022004 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * Initial header for MSVC100 (Visual C++ 2010) generated by adlintize <%= AdLint::SHORT_VERSION %> * at <%= Time.now %>. */ #define __TIMESTAMP__ __TIME__ #define _ATL_VER 0x1000 #define _CHAR_UNSIGNED #define __CLR_VER 12233333 #define __COUNTER__ 1 #define __FUNCDNAME__ "" #define __FUNCSIG__ "" #define __FUNCTION__ "" #define _INTEGRAL_MAX_BITS 64 #define _M_IX86 600 #define _M_IX86_FP 0 #define _MFC_VER 0x0A00 #define _MSC_BUILD 1 #define _MSC_EXTENSIONS 1 #define _MSC_FULL_VER 150020706 #define _MSC_VER 1600 #define _MT #define _WIN32 #define __identifier(keyword) ident_##keyword #define __w64 #define drv_unit_user_code #define allowed_on_typedecl #define allowed_on_parameter #define allowed_on_function #define off_t _off_t #define ino_t _ino_t typedef _Bool bool; adlint-3.2.14/etc/conf.d/i686-devkit/0000755000004100000410000000000012340630463017007 5ustar www-datawww-dataadlint-3.2.14/etc/conf.d/i686-devkit/traits-gcc_4.5.2.erb0000644000004100000410000001730212340630463022272 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # Traits file generated by adlintize <%= AdLint::SHORT_VERSION %> at <%= Time.now %>. # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "<%= AdLint::TRAITS_SCHEMA_VERSION %>" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "<%= project_name %>" # Project root directory. project_root: "<%= vpath %>" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "<%= vpath %>" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "<%= pinit_fpath.basename %>" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "<%= cinit_fpath.basename %>" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/devkit/mingw/include" - "/devkit/mingw/lib/gcc/mingw32/4.5.2/include" - "/devkit/mingw/lib/gcc/mingw32/4.5.2/include-fixed" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__cdecl": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" "near": "" "far": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "<%= lang %>" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/etc/conf.d/i686-devkit/cinit-gcc_4.5.2.erb0000644000004100000410000001716412340630463022100 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * Initial header for GCC 4.5.2 on DevKit generated by adlintize <%= AdLint::SHORT_VERSION %> * at <%= Time.now %>. */ #define __DBL_MIN_EXP__ (-1021) #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define _WIN32 1 #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 65535 #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 65535 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __FLT_EVAL_METHOD__ 2 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 2 #define __UINT_FAST8_MAX__ 255 #define _stdcall __attribute__((__stdcall__)) #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __GXX_TYPEINFO_EQUALITY_INLINE 0 #define __UINTMAX_TYPE__ long long unsigned int #define __DEC32_EPSILON__ 1E-6DF #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ 0 #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ _ #define __STDC_HOSTED__ 1 #define __WIN32 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __MINGW32__ 1 #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define _cdecl __attribute__((__cdecl__)) #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __WINNT 1 #define __DBL_HAS_INFINITY__ 1 #define __WINNT__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ short int #define _fastcall __attribute__((__fastcall__)) #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __USING_SJLJ_EXCEPTIONS__ 1 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __WIN32__ 1 #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 2 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __tune_i386__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __cdecl __attribute__((__cdecl__)) #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.2" #define __UINT64_C(c) c ## ULL #define _X86_ 1 #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __MSVCRT__ 1 #define __INT_FAST16_MAX__ 32767 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ short unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define __GXX_MERGED_TYPEINFO_NAMES 0 #define __stdcall __attribute__((__stdcall__)) #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ short unsigned int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define WIN32 1 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ short unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 2 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __fastcall __attribute__((__fastcall__)) #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define WINNT 1 #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define _INTEGRAL_MAX_BITS 64 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 65535 #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __declspec(x) __attribute__((x)) #define __const const #define __restrict restrict #define __restrict__ restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_start(a, b) (0) #define __builtin_va_end(a) (0) #define __builtin_va_arg(ar, t) (0) #define __builtin_va_copy(d, s) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/etc/conf.d/i686-linux/0000755000004100000410000000000012340630463016660 5ustar www-datawww-dataadlint-3.2.14/etc/conf.d/i686-linux/cinit-gcc_4.5.1.erb0000644000004100000410000001667212340630463021753 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * Initial header for GCC 4.5.1 on Linux generated by adlintize <%= AdLint::SHORT_VERSION %> * at <%= Time.now %>. */ #define __DBL_MIN_EXP__ (-1021) #define __pentiumpro__ 1 #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 2147483647L #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __i686 1 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __i686__ 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.5.1 20100924 (Red Hat 4.5.1-4)" #define __UINT64_C(c) c ## ULL #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __GNUC_RH_RELEASE__ 4 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __pentiumpro 1 #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ long int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 5 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_start(a, b) (0) #define __builtin_va_end(a) (0) #define __builtin_va_arg(ar, t) (0) #define __builtin_va_copy(d, s) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/etc/conf.d/i686-linux/traits-gcc_4.5.1.erb0000644000004100000410000001720712340630463022146 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # Traits file generated by adlintize <%= AdLint::SHORT_VERSION %> at <%= Time.now %>. # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "<%= AdLint::TRAITS_SCHEMA_VERSION %>" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "<%= project_name %>" # Project root directory. project_root: "<%= vpath %>" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "<%= vpath %>" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "<%= pinit_fpath.basename %>" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "<%= cinit_fpath.basename %>" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" "__signed__": "signed" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "<%= lang %>" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/etc/conf.d/i686-mingw/0000755000004100000410000000000012340630463016642 5ustar www-datawww-dataadlint-3.2.14/etc/conf.d/i686-mingw/cinit-gcc_4.6.1.erb0000644000004100000410000001777712340630463021745 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * Initial header for GCC 4.6.1 on MinGW generated by adlintize <%= AdLint::SHORT_VERSION %> * at <%= Time.now %>. */ #define __DBL_MIN_EXP__ (-1021) #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define _WIN32 1 #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 65535 #define __ORDER_LITTLE_ENDIAN__ 1234 #define __SIZE_MAX__ 4294967295U #define __WCHAR_MAX__ 65535 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __FLT_EVAL_METHOD__ 2 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __UINT_FAST8_MAX__ 255 #define _stdcall __attribute__((__stdcall__)) #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __GXX_TYPEINFO_EQUALITY_INLINE 0 #define __UINTMAX_TYPE__ long long unsigned int #define __DEC32_EPSILON__ 1E-6DF #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ 0 #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USER_LABEL_PREFIX__ _ #define __STDC_HOSTED__ 1 #define __WIN32 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __MINGW32__ 1 #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define _cdecl __attribute__((__cdecl__)) #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 12 #define __BIGGEST_ALIGNMENT__ 16 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define _thiscall __attribute__((__thiscall__)) #define __INT_FAST32_MAX__ 2147483647 #define __WINNT 1 #define __DBL_HAS_INFINITY__ 1 #define __WINNT__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ short int #define _fastcall __attribute__((__fastcall__)) #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __WIN32__ 1 #define __PTRDIFF_MAX__ 2147483647 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __SIZEOF_WINT_T__ 2 #define __GCC_HAVE_DWARF2_CFI_ASM 1 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __tune_i386__ 1 #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __cdecl __attribute__((__cdecl__)) #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.6.1" #define __UINT64_C(c) c ## ULL #define _X86_ 1 #define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__ #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __ORDER_PDP_ENDIAN__ 3412 #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define __INT16_MAX__ 32767 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __INT8_TYPE__ signed char #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 4 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __MSVCRT__ 1 #define __INT_FAST16_MAX__ 32767 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ short unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 2147483647 #define __GXX_MERGED_TYPEINFO_NAMES 0 #define __stdcall __attribute__((__stdcall__)) #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ short unsigned int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807LL #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define WIN32 1 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ short unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __thiscall __attribute__((__thiscall__)) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 2 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __fastcall __attribute__((__fastcall__)) #define __DBL_DECIMAL_DIG__ 17 #define __DEC_EVAL_METHOD__ 2 #define __ORDER_BIG_ENDIAN__ 4321 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ #define WINNT 1 #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define i386 1 #define _INTEGRAL_MAX_BITS 64 #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 6 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __FLT_DECIMAL_DIG__ 9 #define __UINT_FAST16_MAX__ 65535 #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __declspec(x) __attribute__((x)) #define __const const #define __restrict restrict #define __restrict__ restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_start(a, b) (0) #define __builtin_va_end(a) (0) #define __builtin_va_arg(ar, t) (0) #define __builtin_va_copy(d, s) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) adlint-3.2.14/etc/conf.d/i686-mingw/traits-gcc_4.6.1.erb0000644000004100000410000001725512340630463022134 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # Traits file generated by adlintize <%= AdLint::SHORT_VERSION %> at <%= Time.now %>. # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "<%= AdLint::TRAITS_SCHEMA_VERSION %>" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "<%= project_name %>" # Project root directory. project_root: "<%= vpath %>" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "<%= vpath %>" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "<%= pinit_fpath.basename %>" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "<%= cinit_fpath.basename %>" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/mingw/lib/gcc/mingw32/4.6.1/include" - "/mingw/include" - "/mingw/lib/gcc/mingw32/4.6.1/include-fixed" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__cdecl": "" "__inline__": "inline" "__asm__ __adlint__any(__adlint__any)": "" "near": "" "far": "" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "<%= lang %>" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/etc/conf.d/fallback/0000755000004100000410000000000012340630463016566 5ustar www-datawww-dataadlint-3.2.14/etc/conf.d/fallback/cinit.erb0000644000004100000410000000077012340630463020372 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * Compiler specific initial header file generated by adlintize <%= AdLint::SHORT_VERSION %> * at <%= Time.now %>. */ /* Put compiler specific predefined macros and types here. */ adlint-3.2.14/etc/conf.d/fallback/traits.erb0000644000004100000410000001656412340630463020602 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # Traits file generated by adlintize <%= AdLint::SHORT_VERSION %> at <%= Time.now %>. # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "<%= AdLint::TRAITS_SCHEMA_VERSION %>" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "<%= project_name %>" # Project root directory. project_root: "<%= vpath %>" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "<%= vpath %>" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "<%= pinit_fpath.basename %>" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Encoding of source files. file_encoding: # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "<%= cinit_fpath.basename %>" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 32 # Bit size of the alignment of the `long int' type family. long_alignment: 32 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 96 # Bit size of the alignment of the `long double' type. long_double_alignment: 96 # Bit size of the pointer to functions. code_ptr_size: 32 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 32 # Bit size of the pointer to data. data_ptr_size: 32 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 32 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "<%= lang %>" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/etc/conf.d/x86_64-ubuntu_12.04/0000755000004100000410000000000012340630463020031 5ustar www-datawww-dataadlint-3.2.14/etc/conf.d/x86_64-ubuntu_12.04/traits-gcc_4.6.3.erb0000644000004100000410000001752612340630463023326 0ustar www-datawww-data# ___ ____ __ ___ _________ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint # / __ |/ /_/ / /___/ / /| / / / # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. # # Traits file generated by adlintize <%= AdLint::SHORT_VERSION %> at <%= Time.now %>. # Schema version of the traits file. # DO NOT EDIT MANUALLY! version: "<%= AdLint::TRAITS_SCHEMA_VERSION %>" # List of names of source code examination packages. # # "c_builtin" is a builtin source code examination package for C language. # You can install optional examination packages and append (or replace) this # list to specify which examination packages are to be run. exam_packages: - "c_builtin" # # Project specific traits section # project_traits: # Project name. project_name: "<%= project_name %>" # Project root directory. project_root: "<%= vpath %>" # Analysys target selection. # Ex. # target_files: # inclusion_paths: # - "../foo" # - "../bar" # exclusion_paths: # - "../bar/baz" target_files: inclusion_paths: - "<%= vpath %>" exclusion_paths: # Pathname of the project specific initial header file. # This header file is automatically included above the first line of the # target source file. initial_header: "<%= pinit_fpath.basename %>" # Project specific additional include paths. # Ex. # file_search_paths: # - "include/foo" # - "../include/bar" # - "/opt/baz/include" file_search_paths: # # Project specific coding style section # coding_style: # Indent style which is a convention governing the identation of blocks. # Select from "K&R", "Allman" and "GNU". # # The value "K&R" means... # int foo(int i) # { # if (i == 0) { # return 0; # } # return i; # } # # The value "Allman" means... # int foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } # # The value "GNU" means... # int # foo(int i) # { # if (i == 0) # { # return 0; # } # return i; # } indent_style: "K&R" # Appearance width of a TAB character. tab_width: 8 # Appearance width of 1-level of the indentation. indent_width: 4 # Character encoding of source files. file_encoding: "utf-8" # # Compiler specific traits section # compiler_traits: # Pathname of the compiler specific initial header file. # This header file is automatically included above the first line of the # project specific initial header file. initial_header: "<%= cinit_fpath.basename %>" # Compiler specific include paths. # Ex. # file_search_paths: # - "/usr/include" # - "/usr/local/include" file_search_paths: - "/usr/lib/gcc/x86_64-linux-gnu/4.6/include" - "/usr/local/include" - "/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed" - "/usr/include/x86_64-linux-gnu" - "/usr/include" # # Compiler specific standard type section # standard_types: # Bit size of the `char' type family. char_size: 8 # Bit size of the alignment of the `char' type family. char_alignment: 8 # Bit size of the `short' type family. short_size: 16 # Bit size of the alignment of the `short' type family. short_alignment: 16 # Bit size of the `int' type family. int_size: 32 # Bit size of the alignment of the `int' type family. int_alignment: 32 # Bit size of the `long int' type family. long_size: 64 # Bit size of the alignment of the `long int' type family. long_alignment: 64 # Bit size of the `long long int' type family. long_long_size: 64 # Bit size of the alignment of the `long long int' type family. long_long_alignment: 64 # Bit size of the `float' type. float_size: 32 # Bit size of the alignment of the `float' type. float_alignment: 32 # Bit size of the `double' type. double_size: 64 # Bit size of the alignment of the `double' type. double_alignment: 64 # Bit size of the `long double' type. long_double_size: 128 # Bit size of the alignment of the `long double' type. long_double_alignment: 128 # Bit size of the pointer to functions. code_ptr_size: 64 # Bit size of the alignment of the pointer to functions. code_ptr_alignment: 64 # Bit size of the pointer to data. data_ptr_size: 64 # Bit size of the alignment of the pointer to data. data_ptr_alignment: 64 # Treat the `char' type as same as the `unsigned char' type? char_as_unsigned_char: true # Treat the `>>' operator as a logical shift, not an arithmetic shift? arithmetic: logical_right_shift: true # Max length of all symbols can be identified by the compiler. identifier_max: 128 # Token substitution setting to warn the use of compiler specific extensions. # # If your compiler supports `__attribute__(...)' extension and you want to # know the use of this extension, specify as below. # extension_substitutions: # "__attribute__(__adlint__any)": "" # The token sequence consists of `__attribute__', `(', any kind of tokens, # `)' will be replaced with nothing (erased) after the preprocessing phase. # And this substitution will be warned by the message W0061. extension_substitutions: "__extension__": "" "__attribute__(__adlint__any)": "" "__asm__ __adlint__any(__adlint__any)": "" "__signed__": "signed" "__const": "const" "__volatile": "volatile" "__restrict": "restrict" "__inline__": "inline" "__inline": "inline" # Token substitution setting to silently ignore the use of compiler specific # extensions. # # If your compiler supports `__asm__ volatile (...)' extension and you do not # mind the use of this extension, specify as below. # arbitrary_substitutions: # "__asm__ __adlint__any(__adlint__any)": "" # The token sequence consists of `__asm__', any kind of tokens, `(', any kind # of tokens, `)' will be replaced with nothing (erased) silently after the # preprocessing phase. arbitrary_substitutions: "typeof": "__typeof__" "__typeof": "__typeof__" "alignof": "__alignof__" "__alignof": "__alignof__" # # Linker specific traits section # linker_traits: # Max length of external symbols can be identified by the linker. identifier_max: 128 # Are external symbols identified without case by the linker? identifier_ignore_case: false # # Message traits section # message_traits: # Language of the message text. # Currently, "en_US" and "ja_JP" are supported. # Please help to translate the message catalog into your language. language: "<%= lang %>" # Enable inline annotation based message suppression? individual_suppression: true # Project-wide code check exclusion settings. # Ex. # exclusion: # categories: # - "REL" # - "PRT" # severities: "[ABC][5-9][0-9]" # messages: # W0001: "c_builtin" # W0002: "c_ansi" exclusion: # Project-wide code check inclusion settings. # Ex. # inclusion: # messages: # W0001: "c_builtin" # W0002: "c_ansi" inclusion: # Message text replacement. # Ex. # change_list: # W9999: # package: "c_builtin" # classes: # - "REL:A10" # - "PRT:B20" # format: "Your custom message for the warning of W9999." # X9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of X9999." # E9999: # package: "core" # classes: # - "ERR:X99" # format: "Your custom message for the warning of E9999." change_list: adlint-3.2.14/etc/conf.d/x86_64-ubuntu_12.04/cinit-gcc_4.6.3.erb0000644000004100000410000001750712340630463023125 0ustar www-datawww-data/* ___ ____ __ ___ _________ * / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer * / /| | / / / / / / / |/ / / / AdLint - Advanced Lint * / __ |/ /_/ / /___/ / /| / / / * /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. * * Initial header for GCC 4.6.3 on Ubuntu 12.04 LTS (64bit) generated by adlintize <%= AdLint::SHORT_VERSION %> */ #define __DBL_MIN_EXP__ (-1021) #define __UINT_LEAST16_MAX__ 65535 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __UINT_LEAST8_TYPE__ unsigned char #define __INTMAX_C(c) c ## L #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 255 #define __WINT_MAX__ 4294967295U #define __ORDER_LITTLE_ENDIAN__ 1234 #define __SIZE_MAX__ 18446744073709551615UL #define __WCHAR_MAX__ 2147483647 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 0 #define __unix__ 1 #define __x86_64 1 #define __UINT_FAST64_MAX__ 18446744073709551615UL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 3 #define __UINT_FAST8_MAX__ 255 #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615UL #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 255 #define __UINTMAX_TYPE__ long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __unix 1 #define __UINT32_MAX__ 4294967295U #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0U #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## L #define __DBL_DIG__ 15 #define _FORTIFY_SOURCE 2 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 8 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __DEC32_MAX__ 9.999999E96DF #define __INT32_MAX__ 2147483647 #define __SIZEOF_LONG__ 8 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __MMX__ 1 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 16 #define __BIGGEST_ALIGNMENT__ 16 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define __INT_FAST32_MAX__ 9223372036854775807L #define __DBL_HAS_INFINITY__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ long int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __SSE2_MATH__ 1 #define __PTRDIFF_MAX__ 9223372036854775807L #define __amd64 1 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 8 #define __SIZEOF_WINT_T__ 4 #define __GCC_HAVE_DWARF2_CFI_ASM 1 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __INT_FAST64_TYPE__ long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __LP64__ 1 #define __DECIMAL_BID_FORMAT__ 1 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.6.3" #define __UINT64_C(c) c ## UL #define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__ #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __ORDER_PDP_ENDIAN__ 3412 #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ long int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __SIZE_TYPE__ long unsigned int #define __UINT64_MAX__ 18446744073709551615UL #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## UL #define __SSE_MATH__ 1 #define __k8 1 #define __SIG_ATOMIC_MAX__ 2147483647 #define __SIZEOF_PTRDIFF_T__ 8 #define __x86_64__ 1 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __INT_FAST16_MAX__ 9223372036854775807L #define __UINT_FAST32_MAX__ 18446744073709551615UL #define __UINT_LEAST64_TYPE__ long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 9223372036854775807L #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ long unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807L #define __UINT_LEAST32_MAX__ 4294967295U #define __INT_LEAST64_TYPE__ long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 127 #define __INTPTR_MAX__ 9223372036854775807L #define linux 1 #define __SSE2__ 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __k8__ 1 #define __INTPTR_TYPE__ long int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ int #define __SIZEOF_FLOAT__ 4 #define __UINTPTR_MAX__ 18446744073709551615UL #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 9223372036854775807L #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long unsigned int #define __INT_MAX__ 2147483647 #define __amd64__ 1 #define __INT64_TYPE__ long int #define __FLT_MAX_EXP__ 128 #define __ORDER_BIG_ENDIAN__ 4321 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807L #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __SSE__ 1 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 127 #define __SSP__ 1 #define __SIZEOF_INT128__ 16 #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define _LP64 1 #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long unsigned int #define __INT_FAST8_TYPE__ signed char #define __DBL_DECIMAL_DIG__ 17 #define __DEC_EVAL_METHOD__ 2 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807L #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 127 #define __UINT_FAST32_TYPE__ long unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long int #define __DEC128_MAX_EXP__ 6145 #define __GNUC_MINOR__ 6 #define __UINTMAX_MAX__ 18446744073709551615UL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ long int #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ long unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __SIZEOF_LONG_LONG__ 8 #define __LDBL_DIG__ 18 #define __FLT_DECIMAL_DIG__ 9 #define __UINT_FAST16_MAX__ 18446744073709551615UL #define __GNUC_GNU_INLINE__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __builtin_va_list void * #define __builtin_va_start(a, b) (0) #define __builtin_va_end(a) (0) #define __builtin_va_arg(ar, t) (0) #define __builtin_va_copy(d, s) (0) #define __builtin_offsetof(type, member) (0) adlint-3.2.14/checksums.yaml.gz0000444000004100000410000000041212340630463016370 0ustar www-datawww-data‹.nSeP;n0ÝsŠ\ `°¡[·î=?wêReêéëd˜Þÿv»]¾>?ðýr½þôÝËïþöý÷~E à1)q.GîlE?7˜ØJ’œ!Öá=9wÿ}òT]˜[•ÂM»q¢,]+uRA†Ì‡« ½ø‚ chrDÔPv4ÔÁF‘P¾e¡”N£%±U#ÖìÑ}t‡QQ’И'†,ƒ¶(ØÙ|`D¾€Ù×à°×IÄcÊÌ\š/}F8O§†fcÄÙ§ä®ó•ˆº‹”°è¶†Á ÙsC7k±WU’Ê(ÒJ[}æ3ÝÃp‹†úÚƒjá¾ÉzÞYpù¡Æ¢adlint-3.2.14/ChangeLog0000644000004100000410000013365212340630463014671 0ustar www-datawww-dataSat May 10 22:31:55 2014 Yutaka Yanoh * release.ga : 3.2.14 - Support function-like macro replacement with variable arguments. Sat May 10 22:07:09 2014 Yutaka Yanoh * lib/adlint/cpp/macro.rb : Revise behavior of function-like macro replacement in order to enforce the replacement even if the number of arguments is less than the number of parameters. * features/code_check/W0830.feature : Ditto. Sat May 10 13:58:35 2014 Yutaka Yanoh * release.rc : 3.2.13 - Support function-like macro replacement with variable arguments. Sat May 10 12:44:20 2014 Yutaka Yanoh * lib/adlint/cpp/macro.rb : Support function-like macro replacement with variable arguments. * lib/adlint/cpp/eval.rb : Ditto. * features/code_check/W0835.feature : Add scenario to check that the function-like macro with __VA_ARGS__ can be replaced correctly. * MANIFEST : Ditto. Sat Apr 12 09:08:17 2014 Yutaka Yanoh * release.ga : 3.2.12 - Fix the type and object model in order to correctly manage unnamed struct or union members. - Add examination package initializer. - Revise behavior of the CMA code structure collection so that an optional examination package can output its own special met-records. Thu Apr 10 18:48:43 2014 Yutaka Yanoh * release.rc : 3.2.11 - Fix the type and object model in order to correctly manage unnamed struct or union members. - Add examination package initializer. - Revise behavior of the CMA code structure collection so that an optional examination package can output its own special met-records. Thu Apr 10 15:11:38 2014 Yutaka Yanoh * lib/adlint/metric.rb : Revise behavior of the CMA code structure collection so that an optional examination package can output its own special met-records. * lib/adlint/ld/object.rb : Ditto. * lib/adlint/ld/typedef.rb : Ditto. Thu Apr 10 13:34:44 2014 Yutaka Yanoh * lib/adlint/exam.rb : Add examination package initializer. Thu Apr 10 10:57:34 2014 Yutaka Yanoh * lib/adlint/cc1/type.rb : Fix the type and object model in order to correctly manage unnamed struct or union members. * lib/adlint/cc1/syntax.rb : Ditto. * lib/adlint/cc1/resolver.rb : Ditto. * lib/adlint/cc1/object.rb : Ditto. * lib/adlint/exam/c_builtin/cc1_check.rb : Correct W0067 and W0492 code check according to changes of the type and object model. * features/code_check/W0801.feature : Ditto. * features/code_check/W0067.feature : Add scenario to reproduce false-positive of W0067 code check. * MANIFEST : Ditto. Fri Mar 7 12:57:41 2014 Yutaka Yanoh * lib/adlint/cc1/lexer.rb : Refactor a bit in order to clarify intention to take tail part of an array. * lib/adlint/cc1/value.rb : Ditto. * lib/adlint/cpp/eval.rb : Ditto. * lib/adlint/cpp/macro.rb : Ditto. * lib/adlint/cpp/subst.rb : Ditto. * lib/adlint/exam/c_builtin/cc1_check.rb : Ditto. * spec/adlint/cc1/syntax_spec.rb : Ditto. Mon Feb 17 12:56:05 2014 Yutaka Yanoh * release.ga : 3.2.10 - Add new templates for MSVC100 (Visual C++ 2010) as a C compiler on 32bit Windows. Fri Feb 14 13:37:30 2014 Yutaka Yanoh * release.rc : 3.2.9 - Add new templates for MSVC100 (Visual C++ 2010) on 32bit Windows. Fri Feb 14 11:31:54 2014 Yutaka Yanoh * etc/conf.d/i686-mswin/traits-msvc_100.erb : Add new templates for MSVC100 (Visual C++ 2010) on 32bit Windows. * etc/conf.d/i686-mswin/cinit-msvc_100.erb : Ditto. Fri Feb 7 14:54:17 2014 Yutaka Yanoh * release.ga : 3.2.8 - Fix preprocessor in order not to abend when a function-like macro generates a hexadecimal integer-constant from standalone prefix and number by the concatenation operator. Thu Feb 6 15:22:34 2014 Yutaka Yanoh * release.rc : 3.2.7 - Fix preprocessor in order not to abend when a function-like macro generates a hexadecimal integer-constant from standalone prefix and number by the concatenation operator. Wed Feb 5 10:28:10 2014 Yutaka Yanoh * lib/adlint/cc1/scanner.rb : Fix preprocessor in order not to abend when a function-like macro generates a hexadecimal integer-constant from standalone prefix and number by the concatenation operator. * features/code_check/E0008.feature : Add token concatenation scenarios to reproduce the bug reported on the AdLint PAD site. Thu Jan 9 15:22:32 2014 Yutaka Yanoh * release.ga : 3.2.6 - Fix incomplete expression-constancy check under the constraits of ISO C99 standard. - Clip code-exam passivation feature into Examination::Passivation module in order to easily create passive code-exam classes. - Revise the interpreter interface in order to make evaluation modes of notification and side-effects suppression are orthogonal. - Add predicate method Type#named? which indicates whether a type has been declared with a tag or not. - Add patch of identifier to typedef-name translation mode in order not to abend when multiple typedefed types of struct/union/enum is redeclared in a single typedef declaration again. - Fix typo in C0001 message text. - Fix pattern matchig algorithm of the token substitution feature so that the pattern `{ __adlint__any }' can match with both `{}' and `{ ... }'. - Fix group skip logic of the preprocessor in order to treat string-literals and character-constants in the skipping group correctly. - Revise the parser generation rule in order to accept extra semicolons in the global scope. Wed Jan 8 16:31:06 2014 Yutaka Yanoh * lib/adlint/cc1/parser.y : Revise the parser generation rule in order to accept extra semicolons in the global scope. * features/code_check/E0018.feature : Ditto. * etc/mesg.d/core/ja_JP/messages.yml : Ditto. * etc/mesg.d/core/en_US/messages.yml : Ditto. * share/doc/users_guide_ja.texi : Ditto. * share/doc/users_guide_en.texi : Ditto. Wed Jan 8 11:19:39 2014 Yutaka Yanoh * share/doc/developers_guide_ja.texi : Update versions of the current development environment. Tue Jan 7 18:24:17 2014 Yutaka Yanoh * release.rc : 3.2.5 - Fix incomplete expression-constancy check under the constraits of ISO C99 standard. - Clip code-exam passivation feature into Examination::Passivation module in order to easily create passive code-exam classes. - Revise the interpreter interface in order to make evaluation modes of notification and side-effects suppression are orthogonal. - Add predicate method Type#named? which indicates whether a type has been declared with a tag or not. - Add patch of identifier to typedef-name translation mode in order not to abend when multiple typedefed types of struct/union/enum is redeclared in a single typedef declaration again. - Fix typo in C0001 message text. - Fix pattern matchig algorithm of the token substitution feature so that the pattern `{ __adlint__any }' can match with both `{}' and `{ ... }'. - Fix group skip logic of the preprocessor in order to treat string-literals and character-constants in the skipping group correctly. Tue Jan 7 17:51:42 2014 Yutaka Yanoh * lib/adlint/cpp/lexer.rb : Fix group skip logic of the preprocessor in order to treat string-literals and character-constants in the skipping group correctly. * features/code_check/E0016.feature : Add scenario to reproduce a known bug. Tue Jan 7 13:41:16 2014 Yutaka Yanoh * lib/adlint/cpp/subst.rb : Fix pattern matchig algorithm of the token substitution feature so that the pattern `{ __adlint__any }' can match with both `{}' and `{ ... }'. Sat Jan 4 05:22:13 2014 Yutaka Yanoh * etc/mesg.d/c_builtin/ja_JP/messages.yml : Fix typo in C0001 message text. Wed Jan 1 10:25:16 2014 Yutaka Yanoh * lib/adlint/cc1/parser.y : Add missing mode transition of identifier to typedef-name translation. * lib/adlint/cc1/lexer.rb : Add patch of identifier to typedef-name translation mode in order not to abend when multiple typedefed types of struct/union/enum is redeclared in a single typedef declaration again. * features/code_check/E0008.feature : Add scenario to reproduce a known bug. Fri Oct 25 15:06:29 2013 Yutaka Yanoh * lib/adlint/cc1/type.rb : Add predicate method Type#named? which indicates whether a type has been declared with a tag or not. * lib/adlint/cc1/parser.y : Ditto. * lib/adlint/cc1/syntax.rb : Ditto. Fri Oct 25 13:08:26 2013 Yutaka Yanoh * lib/adlint/cc1/interp.rb : Revise the interpreter interface in order to make evaluation modes of notification and side-effects suppression are orthogonal. * lib/adlint/cc1/option.rb : Ditto. * lib/adlint/cc1/expr.rb : Ditto. * lib/adlint/exam/c_builtin/cc1_check.rb : Ditto. Thu Oct 24 11:16:20 2013 Yutaka Yanoh * lib/adlint/cc1/syntax.rb : Add equals sign to the init-declarator node in AST. * lib/adlint/cc1/parser.y : Ditto. * spec/adlint/cc1/ctrlexpr_spec.rb : Ditto. Wed Oct 16 17:50:37 2013 Yutaka Yanoh * lib/adlint/exam.rb : Clip code-exam passivation feature into Examination::Passivation module in order to easily create passive code-exam classes. Fri Oct 11 18:34:19 2013 Yutaka Yanoh * lib/adlint/cc1/expr.rb : Add event notifications in order to cover all kinds of expression evaluations. * lib/adlint/cc1/interp.rb : Ditto. * lib/adlint/cc1/mediator.rb : Ditto. * lib/adlint/cc1/value.rb : Add ScalarValueFactory#of_null method to confine a knowledge about representation of NULL to one place. Thu Sep 19 16:55:45 2013 Yutaka Yanoh * lib/adlint/cc1/syntax.rb : Fix incomplete expression-constancy check under the constraits of ISO C99 standard. Fri Sep 13 16:51:25 2013 Yutaka Yanoh * release.rc : 3.2.3 - Relax limitation of filename of the exam-package catalog. - Fix code metric measurement so that metrics of the function defined in the header file can be measured. - Add templates for gcc 4.4.7 on CentOS 6.4 (x86_64). Fri Sep 13 15:53:25 2013 Yutaka Yanoh * lib/adlint/exam/c_builtin/cc1_metric.rb : Fix code metric measurement in order to output FL_STMT and FL_FUNC metrics correctly. Tue Sep 10 16:37:34 2013 Yutaka Yanoh * etc/conf.d/x86_64-centos_6.4/traits-gcc_4.4.7.erb : Add templates for gcc 4.4.7 on CentOS 6.4 (x86_64). * etc/conf.d/x86_64-centos_6.4/cinit-gcc_4.4.7.erb : Ditto. * MANIFEST : Ditto. Tue Sep 10 12:56:04 2013 Yutaka Yanoh * lib/adlint/exam/c_builtin/cc1_metric.rb : Fix code metric measurement so that metrics of the function defined in the header file can be measured. Fri Sep 6 18:46:53 2013 Yutaka Yanoh * lib/adlint/exam/c_builtin/cpp_check.rb : Abbreviate wordy names. * lib/adlint/exam/c_builtin/cc1_code.rb : Ditto. * lib/adlint/exam/c_builtin/cc1_metric.rb : Ditto. * lib/adlint/exam/c_builtin/cpp_code.rb : Ditto. * lib/adlint/exam/c_builtin/cc1_check_shima.rb : Ditto. * lib/adlint/exam/c_builtin/cpp_check_shima.rb : Ditto. Fri Sep 6 13:29:02 2013 Yutaka Yanoh * lib/adlint/exam.rb : Relax limitation of filename of the exam-package catalog. Tue Sep 3 17:56:45 2013 Yutaka Yanoh * lib/adlint/exam/c_builtin/cc1_check.rb : Abbreviate wordy names. * share/doc/developers_guide_ja.texi : Ditto. Fri Aug 30 15:46:16 2013 Yutaka Yanoh * release.rc : 3.2.1 - Refine Examination.def_registrant_phase so that code check in the optional examination package can be derived from the builtin code check class. Fri Aug 30 15:12:10 2013 Yutaka Yanoh * lib/adlint/exam.rb : Refine Examination.def_registrant_phase so that code check in the optional examination package can be derived from the builtin code check class. Wed Aug 28 10:51:30 2013 Yutaka Yanoh * release.ga : 3.2.0 - Support experimental context-tracing feature so that the warning message can be complemented with the context messages. Tue Aug 27 19:35:30 2013 Yutaka Yanoh * share/doc/users_guide_ja.texi : Add descriptions about newly added context-messages supporting context-tracing. * share/doc/users_guide_en.texi : Ditto. Mon Aug 26 11:44:55 2013 Yutaka Yanoh * release.rc : 3.1.0 - Support experimental context-tracing feature so that the warning message can be complemented with the context messages. Fri Aug 23 15:55:53 2013 Yutaka Yanoh * lib/adlint/cc1/value.rb : Fix value version management degraded during supporting context-tracing. * features/code_check/W0460.feature : Add scenario to reproduce false-positive of W0460 code check. Thu Aug 22 14:17:54 2013 Yutaka Yanoh * lib/adlint/cc1/interp.rb : Fix bad context-tracing during or after evaluation of an iteration statement. * lib/adlint/cc1/object.rb : Ditto. * lib/adlint/cc1/value.rb : Ditto. * lib/adlint/cc1/trace.rb : Revise context-tracing interface in order not to output context messages about futural controlling-expressions. * lib/adlint/exam/c_builtin/cc1_check.rb : Ditto. Wed Aug 7 15:01:04 2013 Yutaka Yanoh * lib/adlint/exam/c_builtin/cc1_check.rb : Fix bad W0570 code check degraded during supporting context-tracing. * features/code_check/W0570.feature : Add scenario to reproduce a known bug. Wed Aug 7 13:40:55 2013 Yutaka Yanoh * lib/adlint/cc1/trace.rb : Fix bad context message emission of undefinable variables. * features/code_check/W0460.feature : Add scenario to reproduce bad context message problem. Wed Aug 7 10:28:42 2013 Yutaka Yanoh * lib/adlint/**/* : Support context-tracing to improve readability of warning messages. * lib/adlint/cc1/trace.rb : Add new context tracing module. * features/code_check/* : Add scenarios for testing context-tracing. Wed Jul 10 15:14:43 2013 Yutaka Yanoh * lib/adlint/cc1/value.rb : Refactor relationships between VersionGroup object and its Version object in order to exactly represent a design of the value version management. Fri Jun 28 10:23:30 2013 Yutaka Yanoh * release.ga : 3.0.10 - Add missing comment handling in the initial state of the preprocessing lexer. - Fix incomplete identifier to typedef name translation when the declaring enumerator name is conflicting with the prior typedef name. - Fix evaluation of the global constant variable definition in order not to ignore value of the initializer. - Revise pointer dereferencing behavior to successfully dereference a pointer only when the value of pointer variable is definite. - Improve heuristics of array subscript evaluation with indefinite subscript. - Fix controlling-expression deduction of iteration-statements in order to adopt the ordinary expression when no control breaking condition is found in the iteration body. - Remove unnecessary controlling expression evaluation at entering a do-statement. - Fix value-domain thinning condition to thin domains discarded by a break-statement in the iteration. - Fix bypassing inner-variable's value mutation in order to correctly propagate mutation to the outer-variable. Wed Jun 26 17:42:13 2013 Yutaka Yanoh * release.rc : 3.0.9 - Add missing comment handling in the initial state of the preprocessing lexer. - Fix incomplete identifier to typedef name translation when the declaring enumerator name is conflicting with the prior typedef name. - Fix evaluation of the global constant variable definition in order not to ignore value of the initializer. - Revise pointer dereferencing behavior to successfully dereference a pointer only when the value of pointer variable is definite. - Improve heuristics of array subscript evaluation with indefinite subscript. - Fix controlling-expression deduction of iteration-statements in order to adopt the ordinary expression when no control breaking condition is found in the iteration body. - Remove unnecessary controlling expression evaluation at entering a do-statement. - Fix value-domain thinning condition to thin domains discarded by a break-statement in the iteration. - Fix bypassing inner-variable's value mutation in order to correctly propagate mutation to the outer-variable. Wed Jun 26 16:07:59 2013 Yutaka Yanoh * lib/adlint/cc1/object.rb : Fix assignment behavior of the array representative element in order to correctly propagete definiteness of the new value to outer array variable's value. * features/code_check/W0461.feature : Add scenario to reproduce false-positive of W0461 code check when the pointee array is initialized by assignment with indefinite subscript value. Tue Jun 25 15:24:13 2013 Yutaka Yanoh * lib/adlint/cc1/interp.rb : Revise evaluation behavior of for-statement's explicit controlling-expression in order to properly evaluate the branch entering condition. Revise evaluation behavior of conditional-expressions to adopt the non-NULL pointer as the expression value when a value of the controlling-expression is indefinite. * lib/adlint/cc1/mediator.rb : Revise pointer dereferencing behavior to successfully dereference a pointer only when the value of pointer variable is definite again. * features/code_check/W0610.feature : Add scenario to reproduce bad variables' value-domain management problem. Mon Jun 24 17:22:47 2013 Yutaka Yanoh * lib/adlint/cc1/branch.rb : Fix over-thinning of controlling variable's value-domain when the terminating branch is of switch-statement enclosed by an iteration-statement. * features/code_check/W0459.feature : Add scenario to reproduce false-positive of W0459 code check caused by bad break statement evaluation in thinning value-domain of the controlling variable. Mon Jun 24 16:51:36 2013 Yutaka Yanoh * lib/adlint/cc1/object.rb : Restore scrapped side-effect rollback of inner-variables. Fri Jun 21 19:14:39 2013 Yutaka Yanoh * lib/adlint/cc1/object.rb : Fix incomplete assignment to the array representative element. * features/code_check/W0459.feature : Add scenario to reproduce false-positive of W0459 code check caused by missing representative element updating. Fri Jun 21 17:59:24 2013 Yutaka Yanoh * lib/adlint/cc1/object.rb : Add assignment to the array representative element. * features/code_check/W0459.feature : Add scenario to reproduce false-negative of W0459 code check caused by missing representative element updating. Fri Jun 21 16:16:16 2013 Yutaka Yanoh * lib/adlint/cc1/expr.rb : Improve heuristics of array subscript evaluation with indefinite subscript again and again. * lib/adlint/cc1/object.rb : Fix bad management of the representative element of array variables in order to correctly update the array by reassigning new value to its representative element. Add UnmappedMemoryWindow instead of UnmappedMemoryBlock. * features/code_check/W0100.feature : Add scenario to reproduce false-positive of W0100 code check caused by bad representative array element. * MANIFEST : Ditto. Thu Jun 20 17:59:25 2013 Yutaka Yanoh * lib/adlint/cc1/expr.rb : Improve heuristics of array subscript evaluation with indefinite subscript again. * lib/adlint/cc1/object.rb : Add management of the representative element of array variables. Add UnmappedMemoryBlock which is not mapped to the MemoryPool in order to bind representative elements to their values. * lib/adlint/cc1/interp.rb : Scrap interpretation mode for controlling expressions. * lib/adlint/cc1/option.rb : Ditto. Thu Jun 20 11:21:59 2013 Yutaka Yanoh * lib/adlint/cc1/object.rb : Fix bad value version management in order not to forget histories of a value. * features/code_check/W1050.feature : Add scenario to reproduce bad value version management problem. * MANIFEST : Ditto. Wed Jun 19 17:17:27 2013 Yutaka Yanoh * lib/adlint/cc1/object.rb : Fix bypassing inner-variable's value mutation in order to correctly propagate mutation to the outer-variable. Add missing value-domain thinning of inner-variables. * lib/adlint/cc1/branch.rb : Fix value-domain thinning condition to thin domains discarded by a break-statement in the iteration. * lib/adlint/cc1/environ.rb : Ditto. * lib/adlint/cc1/interp.rb : Ditto. * lib/adlint/cc1/option.rb : Ditto. * features/code_check/W0422.feature : Add scenario to reproduce false-positive of W0422 code check caused by incomplete value-domain thinning. * lib/adlint/cc1/builtin.rb : Fix broken `__adlint__eval' builtin debug function. Mon Jun 17 16:43:32 2013 Yutaka Yanoh * lib/adlint/cpp/lexer.rb : Add missing comment handling in the initial state of the preprocessing lexer. * features/code_check/E0008.feature : Add scenario to reproduce a parse error when a #define directive appears right after a block comment followed by an escaped newline. * MANIFEST : Ditto. Mon Jun 17 15:24:10 2013 Yutaka Yanoh * features/code_check/W0704.feature : Add scenario to reproduce a parse error when the enumerator name is conflicting with the prior typedef name. * MANIFEST : Ditto. * lib/adlint/cc1/lexer.rb : Rewrite identifier set to track declared identifiers in preparation for fixing incomplete identifier to typedef name translation. * lib/adlint/cc1/parser.y : Fix incomplete identifier to typedef name translation when the declaring enumerator name is conflicting with the prior typedef name. Thu Jun 13 15:53:21 2013 Yutaka Yanoh * lib/adlint/cc1/interp.rb : Remove unnecessary controlling expression evaluation at entering a do-statement. * features/code_check/W9001.feature : Add scenario to reproduce false-positive of W9001 code check about body of the one-shot do-statement. Thu Jun 13 13:42:24 2013 Yutaka Yanoh * lib/adlint/cc1/domain.rb : Fix bad bitwise & evaluation with indefinite value domains. * features/code_check/W0612.feature : Add scenario to reproduce false-positive of W0612 code check when value of an operand is indefinite. * MANIFEST : Ditto. Wed Jun 12 19:57:55 2013 Yutaka Yanoh * lib/adlint/cc1/syntax.rb : Fix controlling-expression deduction of iteration-statements in order to adopt the ordinary expression when no control breaking condition is found in the iteration body. * features/code_check/W0422.feature : Add scenario to reproduce a known bug. Wed Jun 12 15:51:38 2013 Yutaka Yanoh * lib/adlint/cc1/object.rb : Add missing value coercing in evaluation of variable definition when the variable has already been declared. Wed Jun 12 11:43:35 2013 Yutaka Yanoh * features/code_check/W0459.feature : Add scenario to reproduce a known bug. * lib/adlint/cc1/interp.rb : Fix conditional-expression evaluation in order to evaluate controlling expression in the same manner as that of if-statement. * lib/adlint/cc1/mediator.rb : Fix pointer dereference behavior in order to find possible pointee objects when the pointer value is not definite. Fri Jun 7 11:45:23 2013 Yutaka Yanoh * lib/adlint/cc1/expr.rb : Revise global constant array subscript evaluation policy in order to make undefined-value when the subscript value is indefinite. Fri Jun 7 10:44:06 2013 Yutaka Yanoh * features/code_check/W1071.feature : Add scenario to reproduce the broken array subscript evaluation in controlling expressions. * lib/adlint/cc1/expr.rb : Fix bad array subscript evaluation so that the array-subscript-expression makes undefined-value when no designated object is found. Thu Jun 6 18:36:13 2013 Yutaka Yanoh * features/code_check/W0613.feature : Add scenario to reproduce false-positive of W0613 code check when an array-subscript-expression refers to the global constant array is specified as the controlling expression. * lib/adlint/cc1/expr.rb : Improve heuristics of array subscript evaluation with indefinite subscript only in controlling expressions. * lib/adlint/cc1/interp.rb : Ditto. * lib/adlint/cc1/option.rb : Ditto. Wed Jun 5 17:37:23 2013 Yutaka Yanoh * lib/adlint/cc1/object.rb : Fix variable's value version rollback mechanism in order not to do unnecessary rollback of inner-variables of array or composite value. * lib/adlint/cc1/type.rb : Fix bad type traits predicate methods for array type. * features/code_check/W0097.feature : Add scenario to reproduce a known bug. * features/code_check/W0461.feature : Ditto. * lib/adlint/cc1/value.rb : Add comment to newly added destructive #force_oeverwrite! method. Wed Jun 5 17:21:36 2013 Yutaka Yanoh * lib/adlint/cc1/mediator.rb : Revise pointer dereferencing behavior to successfully dereference a pointer only when the value of pointer variable is definite. Tue Jun 4 20:33:44 2013 Yutaka Yanoh * features/code_check/W0705.feature : Add scenario to reproduce a known bug. * lib/adlint/cc1/interp.rb : Fix evaluation of the global constant variable definition in order not to ignore value of the initializer. * lib/adlint/cc1/object.rb : Ditto. * lib/adlint/cc1/value.rb : Ditto. Fri May 31 10:54:11 2013 Yutaka Yanoh * release.ga : 3.0.8 - Fix abend problem of preprocessor when a block comment is not terminated in the translation-unit. - Fix block comment handling in order not to dive into nested part when a single slash character appears before the comment terminator. - Fix infinite-loop problem of preprocessor when the #include directive appears with undefined macro. - Fix bad expression-constancy check in order to treat an expression derives an address-constant as a constant-expression. - Fix bad variable defining behavor in order to correctly evaluate sizeof-expression that refers defining variable in the initializer. - Revise specification of W0642 code check in order to warn about all the illegal address derivation from the object declared as `register'. - Fix abend problem in parsing unnamed bit-field declaration. - Fix W0786 code check in order not to warn when a typedefed type which is same as signed or unsigned int is specified as a base of the bit-field. - Fix incomplete object cross-reference extraction in order to record object references within global scope in case of global function table initialization. - Fix incomplete object cross-reference graph and function call graph in order to correctly warn about useless objects. - Fix bad `##' operator evaluation in order to comply with the ISO C99 standard. Thu May 30 21:05:44 2013 Yutaka Yanoh * release.rc : 3.0.7 - Fix function call extraction in order to output function calls within the global scope. - Improve performance of FN_CALL metric measurement. - Fix bad function call graph calculation. - Fix bad expression-constancy check in order not to misunderstand that an expression contains object-specifier which designates a variable is constant-expression when a function of the same name has been declared. Thu May 30 20:07:56 2013 Yutaka Yanoh * lib/adlint/cc1/syntax.rb : Fix bad expression-constancy check in order not to misunderstand that an expression contains object-specifier which designates a variable is constant-expression when a function of the same name has been declared. * lib/adlint/cc1/mediator.rb : Ditto. * lib/adlint/cc1/object.rb : Ditto. * features/code_check/W0422.feature : Add scenario to reproduce a known bug. Thu May 30 13:54:20 2013 Yutaka Yanoh * lib/adlint/exam/c_builtin/cc1_code.rb : Fix function call extraction in order to output function calls within the global scope. * lib/adlint/exam/c_builtin/ld_metric.rb : Improve performance of FN_CALL metric measurement. * lib/adlint/ld/object.rb : Fix bad function call graph calculation. * lib/adlint/exam/c_builtin.rb : Fix bad abbreviations of class names. * lib/adlint/code.rb : Ditto. * lib/adlint/report.rb : Ditto. Wed May 29 18:48:01 2013 Yutaka Yanoh * release.rc : 3.0.5 - Fix abend problem of preprocessor when a block comment is not terminated in the translation-unit. - Fix block comment handling in order not to dive into nested part when a single slash character appears before the comment terminator. - Fix infinite-loop problem of preprocessor when the #include directive appears with undefined macro. - Fix bad expression-constancy check in order to treat an expression derives an address-constant as a constant-expression. - Fix bad variable defining behavor in order to correctly evaluate sizeof-expression that refers defining variable in the initializer. - Revise specification of W0642 code check in order to warn about all the illegal address derivation from the object declared as `register'. - Fix abend problem in parsing unnamed bit-field declaration. - Fix W0786 code check in order not to warn when a typedefed type which is same as signed or unsigned int is specified as a base of the bit-field. - Fix incomplete object cross-reference extraction in order to record object references within global scope in case of global function table initialization. - Fix incomplete object cross-reference graph and function call graph in order to correctly warn about useless objects. - Fix bad `##' operator evaluation in order to comply with the ISO C99 standard. Wed May 29 18:31:55 2013 Yutaka Yanoh * features/code_check/W0422.feature : Add scenario to reproduce a known bug. * lib/adlint/cc1/ctrlexpr.rb : Fix controlling expression evaluation in order not to install implicit functions when the effective controlling expression is not a regular one and the controlling variable is declared in the iteration body. Wed May 29 13:26:20 2013 Yutaka Yanoh * features/code_check/W0830.feature : Add scenario to reproduce bad macro replacement problem. * lib/adlint/cpp/macro.rb : Fix bad `##' operator evaluation in order to comply with the ISO C99 standard. Tue May 28 21:47:56 2013 Yutaka Yanoh * lib/adlint/exam/c_builtin/ld_metric.rb : Fix FN_CALL measurement to count a number of caller functions instead of a number of function calls. Tue May 28 20:59:27 2013 Yutaka Yanoh * lib/adlint/exam/c_builtin/ld_check.rb : Fix W0589 code check in order to warn when only one function which is defined in the same translation-unit refers to the object but the function refers to that twice or more. Tue May 28 19:08:41 2013 Yutaka Yanoh * lib/adlint/exam/c_builtin/ld_check.rb : Fix incomplete object cross-reference graph and function call graph in order to correctly warn about useless objects. * lib/adlint/exam/c_builtin/ld_metric.rb : Ditto. * lib/adlint/ld/phase.rb : Ditto. * lib/adlint/ld/util.rb : Ditto. Tue May 28 16:28:11 2013 Yutaka Yanoh * lib/adlint/ld/object.rb : Rewrite object cross-reference graph and function call graph management. * lib/adlint/ld/typedef.rb : Ditto. * lib/adlint/analyzer.rb : Ditto. Tue May 28 11:31:54 2013 Yutaka Yanoh * lib/adlint/cpp/phase.rb : Refine inner object names of phase context. * lib/adlint/cc1/phase.rb : Ditto. * lib/adlint/exam/c_builtin/cpp_check.rb : Ditto. * lib/adlint/exam/c_builtin/cpp_check_shima.rb : Ditto. * lib/adlint/exam/c_builtin/cpp_code.rb : Ditto. * lib/adlint/exam/c_builtin/cc1_check.rb : Ditto. * lib/adlint/exam/c_builtin/cc1_check_shima.rb : Ditto. * lib/adlint/exam/c_builtin/cc1_metric.rb : Ditto. * lib/adlint/cc1/util.rb : Ditto. Mon May 27 15:21:14 2013 Yutaka Yanoh * lib/adlint/exam/c_builtin/cc1_code.rb : Fix incomplete object cross-reference extraction in order to record object references within global scope in case of global function table initialization. * lib/adlint/code.rb : Ditto. Fri May 24 19:11:52 2013 Yutaka Yanoh * lib/adlint/cc1/parser.y : Remove useless state management of the identifier translation in `struct_declaration'. Fri May 24 16:05:07 2013 Yutaka Yanoh * features/code_check/W0491.feature : Add scenario to reproduce abend problem of parser. * lib/adlint/cc1/parser.y : Fix bad state management of the identifier translation again and again. Fri May 24 15:09:25 2013 Yutaka Yanoh * features/code_check/W0542.feature : Add scenario to reproduce abend problem of parser. * lib/adlint/cc1/parser.y : Fix bad state management of the identifier translation again. Fri May 24 13:47:47 2013 Yutaka Yanoh * features/code_check/W0491.feature : Add scenario to reproduce abend problem of parser. * lib/adlint/cc1/parser.y : Fix bad state management of the identifier translation. Fri May 24 12:32:54 2013 Yutaka Yanoh * features/code_check/W0491.feature : Add scenario to reproduce abend problem of parsing the same name in different namespaces. * lib/adlint/cc1/parser.y : Fix incomplete identifier to typedef-name translation. Thu May 23 19:10:38 2013 Yutaka Yanoh * features/code_check/W0492.feature : Add scenario to reproduce abend problem of parsing the same name in different namespaces. * lib/adlint/cc1/parser.y : Fix incomplete identifier to typedef-name translation. * lib/adlint/cc1/lexer.rb : Add note about namespaces of identifiers. Wed May 22 13:12:48 2013 Yutaka Yanoh * features/code_check/W0786.feature : Add scenario to reproduce a known bug. * lib/adlint/exam/c_builtin/cc1_check.rb : Fix W0786 code check in order not to warn when a typedefed type which is same as signed or unsigned int is specified as a base of the bit-field. Tue May 21 19:34:10 2013 Yutaka Yanoh * lib/adlint/cc1/parser.y : Fix abend problem in parsing unnamed bit-field declaration. Sat May 18 15:25:51 2013 Yutaka Yanoh * features/code_check/W1047.feature : Add scenario to reproduce a known bug. * lib/adlint/cc1/syntax.rb : Fix bad expression-constancy check in order to treat an address-expression as a constant-expression. * lib/adlint/exam/c_builtin/cc1_check.rb : Fix W1047 code check to check expression constancy by the newly added unified interface. Fri May 17 17:42:35 2013 Yutaka Yanoh * features/code_check/W0610.feature : Add scenario to reproduce a known bug. * lib/adlint/cc1/interp.rb : Fix bad value domain management of the variable whose storage duration is static. Fri May 17 15:42:42 2013 Yutaka Yanoh * share/doc/users_guide_ja.texi : Revise description of W0642 message. * share/doc/users_guide_en.texi : Ditto. Fri May 17 15:00:25 2013 Yutaka Yanoh * features/code_check/W9003.feature : Add scenario to reproduce a known bug. * lib/adlint/exam/c_builtin/cc1_check.rb : Revise specification of W0642 code check in order to warn about all the illegal address derivation from the object declared as `register'. * etc/mesg.d/c_builtin/ja_JP/messages.yml : Ditto. * etc/mesg.d/c_builtin/en_US/messages.yml : Ditto. * lib/adlint/exam/c_builtin/cc1_check.rb : Add notification about object address derivation. Fri May 17 12:55:38 2013 Yutaka Yanoh * features/code_check/W0642.feature : Add scenario to reproduce a known bug. * lib/adlint/exam/c_builtin/cc1_check.rb : Fix W0642 code check in order to warn only when the original object of implicit conversion is an array. * lib/adlint/cc1/mediator.rb : Add implicit conversion notification in object conversion methods to notify illegal conversions. * lib/adlint/cc1/interp.rb : Ditto. * lib/adlint/cc1/expr.rb : Ditto. * lib/adlint/cc1/ctrlexpr.rb : Ditto. * lib/adlint/cc1/object.rb : Fix argument to parameter assignment behavior in order to notify illegal conversions correctly. Fri May 17 09:35:36 2013 Yutaka Yanoh * lib/adlint/cc1/interp.rb : Fix bad variable defining behavor in order not to predefine a variable of incomplete type. Thu May 16 18:38:40 2013 Yutaka Yanoh * features/code_check/W0580.feature : Add scenario to reproduce a known bug. Thu May 16 17:08:41 2013 Yutaka Yanoh * features/code_check/W0422.feature : Add scenario to reproduce a known bug. * lib/adlint/cc1/interp.rb : Fix bad variable defining behavor in order to correctly evaluate sizeof-expression that refers defining variable in the initializer. Thu May 16 11:00:07 2013 Yutaka Yanoh * features/code_check/W1047.feature : Add scenario to reproduce a known bug. * lib/adlint/cc1/syntax.rb : Fix bad expression-constancy check in order to treat an expression derives an address-constant as a constant-expression. * lib/adlint/cc1/interp.rb : Move runtime object manipulation interface to InterpreterMediator. Fix over-notification of implicit conversion in order not to check the natural conversions suck as function to function-pointer conversion. * lib/adlint/cc1/mediator.rb : Add convenient interface for expression-constancy check and runtime object manipulations. * lib/adlint/cc1/expr.rb : Ditto. * lib/adlint/exam/c_builtin/cc1_check.rb : Ditto. * lib/adlint/cc1/enum.rb : Add enumerator name extraction interface for expression-constancy check. * lib/adlint/cc1/object.rb : Move object conversion responsibilities from Interpreter to TypedObject. Add function name extraction interface for expression-constancy check. Mon May 13 19:19:31 2013 Yutaka Yanoh * lib/adlint/cpp/eval.rb : Fix infinite-loop problem of preprocessor when the #include directive appears with undefined macro. * lib/adlint/error.rb : Ditto. * etc/mesg.d/core/ja_JP/messages.yml : Ditto. * etc/mesg.d/core/en_US/messages.yml : Ditto. Mon May 13 17:41:41 2013 Yutaka Yanoh * lib/adlint/cpp/lexer.rb : Fix block comment handling in order not to dive into nested part when a single slash character appears before the comment terminator. Mon May 13 16:29:47 2013 Yutaka Yanoh * lib/adlint/cpp/lexer.rb : Fix bad handling of block comments in order not to assume comment terminator as a part of comment content. * lib/adlint/cpp/eval.rb : Fix abend problem of preprocessor when a block comment is not terminated in the translation-unit. Sun May 12 21:26:44 2013 Yutaka Yanoh * lib/adlint/memo.rb : Revise cache name generation rule by the example of Lisp naming conventions. Sat May 4 01:29:26 2013 Yutaka Yanoh * lib/adlint/memo.rb : Add `force_nullary' option to Memoizable#memoize and improve performance of memoized unary method. * lib/adlint/cc1/domain.rb : Ditto. * lib/adlint/ld/object.rb : Ditto. * lib/adlint/location.rb : Ditto. Fri Apr 12 13:06:31 2013 Yutaka Yanoh * release.ga : 3.0.4 - Fix abend problem of adlint_chk command. Fri Apr 12 12:06:23 2013 Yutaka Yanoh * release.rc : 3.0.3 - Fix abend problem of adlint_chk command. Fri Apr 12 11:56:59 2013 Yutaka Yanoh * lib/adlint/analyzer.rb : Fix abend problem of adlint_chk command. Thu Apr 12 10:48:11 2013 Yutaka Yanoh * release.ga : 3.0.2 - Add missing transparency between an array and a pointer to its first element in expression evaluation. - Add missing transparency between a function and a function pointer in expression evaluation. - Clarify W0100 message text. - Refactor memoizing utility in preparation for performance tuning. Wed Apr 10 17:18:42 2013 Yutaka Yanoh * lib/adlint/memo.rb : Refactor memoizing utility in preparation for performance improvement. Tue Apr 2 17:22:02 2013 Yutaka Yanoh * release.rc : 3.0.1 - Add missing transparency between an array and a pointer to its first element in expression evaluation. - Add missing transparency between a function and a function pointer in expression evaluation. - Clarify W0100 message text. Tue Apr 2 16:50:12 2013 Yutaka Yanoh * etc/mesg.d/c_builtin/ja_JP/messages.yml : Clarify W0100 message text. * etc/mesg.d/c_builtin/en_US/messages.yml : Ditto. Mon Apr 1 15:55:03 2013 Yutaka Yanoh * lib/adlint/cc1/expr.rb : Add missing transparency between a function and a function pointer in expression evaluation. * lib/adlint/cc1/interp.rb : Ditto. Thu Apr 1 10:08:45 2013 Yutaka Yanoh * lib/adlint/cc1/expr.rb : Add missing transparency between an array and a pointer to its first element in expression evaluation. * lib/adlint/cc1/interp.rb : Ditto. Tue Mar 26 17:01:16 2013 Yutaka Yanoh * release.ga : 3.0.0 - Support pathname based code-exam selection. - Improve performance of code-exams. - Add ad-hoc traits schema migration for 3.0.0 release. - Support message-class based code-check selection. - Support annotation based message suppression. - Fix traits object freezing in order not to over-freeze memoizing objects. - Rename `individual_selection' item in the traits file to `individual_suppression'. - Fix sma-time annotation parser in order to correctly evaluate suppression specifiers including new-line characters. - Fix cma-time annotation parser in order to correctly evaluate suppression specifiers including new-line characters. - Fix cma-time annotation parser in order to handle the location of each annotation correctly. - Add new field indicates whether the function is declared implicitly or explicitly to DCL(F) record of the metrics file. - Fix bad output validation that lines of the analysis result is fewer than one of the specification. - Add missing function reference notification after insertion of the implicit function declaration. - Fix missing function-call notification problem of the control-breaking standard library functions such as exit(3). - Fix W1063 code check in order to warn when the function returns value of non-constant inconsistent enum-typed expression. - Fix W1062 code check in order to warn when an enum type of the rhs operand is not consistent to one of the lhs operand. - Fix W1061 code check in order to warn when an enum type of the argument expression is not consistent to one of the corresponding parameter. - Fix W0023 code check in order to warn only when the pointer operand appears in an arithmetic expressions. - Improve library interface to support concurrent analysis. - Fix missing literal_prefix of LIT record for the octal-constant. - Improve library interface not to use thread local storage in the library core. - Rename AdLint::C namespace to AdLint::Cc1 in order to distinguish `c' as a language and `cc1' as a analysis phase. - Add missing reference notification of the controlling expression value in switch-statement. - Fix fall-through logic of switch-statement in order to work correctly with consecutive case and default labels. - Fix normalized controlling-expression derivation logic of switch-statement's case and default clause in order to work correctly with consecutive case and default labels. - Fix W0003 code check not to misunderstand that the switch-statement has no default clause when the switch-statement contains consecutive case and default labels. - Fix switch-statement evaluation in order to correctly fall-through when the switch-statement has consecutive case labels. - Fix bad value domain management in order to correctly thin a value domain of the terminating execution path. adlint-3.2.14/COPYING0000644000004100000410000010451312340630463014144 0ustar www-datawww-data GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program 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. This program 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 this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read .