接続数

COUNTER346072FROM 2012/5/16

MISRA-C diary(C言語日誌)

12345
2018/09/25

C言語が関数型言語であることがわからない人がいることの驚き

Tweet ThisSend to Facebook | by kaizen
「C言語が関数型言語であることがわからない人がいることの驚き」
21:12 | 投票する | 投票数(0) | コメント(0)
2018/09/15

visual studio 2017 autosar warning

Tweet ThisSend to Facebook | by kaizen
>cl A0-1-1.cpp /EHsc /Wall
Microsoft(R) C/C++ Optimizing Compiler Version 19.15.26726 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.
A0-1-1.cpp
C:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt\malloc.h(45): warning C4820: '_heapinfo': '4' バイトのパディングを データ メンバー '_heapinfo::_useflag' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\vcruntime_exception.h(25): warning C4820: '__std_exception_data': '7' バイトのパディングを データ メンバー '__std_exception_data::_DoFree' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\vcruntime_typeinfo.h(44): warning C4820: '__std_type_info_data': '7' バイトのパディングを データ メンバー '__std_type_info_data::_DecoratedName' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocinfo.h(60): warning C4820: '_Collvec': '4' バイトのパディングを データ メンバー '_Collvec::_Page' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocinfo.h(66): warning C4820: '_Ctypevec': '4' バイトのパディングを データ メンバー '_Ctypevec::_Page' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocinfo.h(68): warning C4820: '_Ctypevec': '4' バイトのパディングを データ メンバー '_Ctypevec::_Delfl' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xutility(4183): warning C4820: 'std::_Yarn<char>': '7' バイトのパディングを データ メンバ ー 'std::_Yarn<char>::_Nul' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocinfo(228): note: コンパイル対象の クラス テンプレート インスタンス化 'std::_Yarn<char>' のリファレンスを確認してください
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocinfo(228): warning C4820: 'std::_Locinfo': '4' バイトのパディングを データ メンバー 'std::_Locinfo::_Lock' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xutility(4183): warning C4820: 'std::_Yarn<wchar_t>': '6' バイトのパディングを データ メンバー 'std::_Yarn<wchar_t>::_Nul' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocinfo(230): note: コンパイル対象の クラス テンプレート インスタンス化 'std::_Yarn<wchar_t>' のリファレンスを確認してください
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(182): warning C4820: 'std::locale::facet': '4' バイトのパディングを データ メンバ ー 'std::locale::facet::_Myrefs' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(247): warning C4820: 'std::locale::_Locimp': '3' バイトのパディングを データ メン バー 'std::locale::_Locimp::_Xparent' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(488): warning C4820: 'std::locale': '7' バイトのパディングを 基底クラス 'std::_Crt_new_delete' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(330): warning C4571: 情報: catch(...) の意味が Visual C++ 7.1 から変更されています。構造化例外 (SEH) はキャッチされません。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(356): warning C4571: 情報: catch(...) の意味が Visual C++ 7.1 から変更されています。構造化例外 (SEH) はキャッチされません。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(812): warning C4625: 'std::codecvt_base': コピー コンストラクターは暗黙的に削除済 みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(812): warning C4626: 'std::codecvt_base': 代入演算子は暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(1354): warning C4625: 'std::codecvt<char16_t,char,_Mbstatet>': コピー コンストラクターは暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(1354): warning C4626: 'std::codecvt<char16_t,char,_Mbstatet>': 代入演算子は暗黙的 に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(1679): warning C4625: 'std::codecvt<char32_t,char,_Mbstatet>': コピー コンストラクターは暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(1679): warning C4626: 'std::codecvt<char32_t,char,_Mbstatet>': 代入演算子は暗黙的 に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(1927): warning C4820: 'std::codecvt<wchar_t,char,_Mbstatet>': '4' バイトのパディングを データ メンバー 'std::codecvt<wchar_t,char,_Mbstatet>::_Cvt' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(1927): warning C4625: 'std::codecvt<wchar_t,char,_Mbstatet>': コピー コンストラク ターは暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(1927): warning C4626: 'std::codecvt<wchar_t,char,_Mbstatet>': 代入演算子は暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(2183): warning C4820: 'std::codecvt<unsigned short,char,_Mbstatet>': '4' バイトの パディングを データ メンバー 'std::codecvt<unsigned short,char,_Mbstatet>::_Cvt' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(2183): warning C4625: 'std::codecvt<unsigned short,char,_Mbstatet>': コピー コンストラクターは暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(2183): warning C4626: 'std::codecvt<unsigned short,char,_Mbstatet>': 代入演算子は 暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(2231): warning C4625: 'std::ctype_base': コピー コンストラクターは暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(2231): warning C4626: 'std::ctype_base': 代入演算子は暗黙的に削除済みとして定義さ れました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(2733): warning C4625: 'std::ctype<char>': コピー コンストラクターは暗黙的に削除済 みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(2733): warning C4626: 'std::ctype<char>': 代入演算子は暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(2974): warning C4820: 'std::ctype<wchar_t>': '4' バイトのパディングを データ メン バー 'std::ctype<wchar_t>::_Cvt' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(2974): warning C4625: 'std::ctype<wchar_t>': コピー コンストラクターは暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(2974): warning C4626: 'std::ctype<wchar_t>': 代入演算子は暗黙的に削除済みとして定 義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(3217): warning C4820: 'std::ctype<unsigned short>': '4' バイトのパディングを デー タ メンバー 'std::ctype<unsigned short>::_Cvt' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(3217): warning C4625: 'std::ctype<unsigned short>': コピー コンストラクターは暗黙 的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(3217): warning C4626: 'std::ctype<unsigned short>': 代入演算子は暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(3262): warning C4625: 'std::ctype_byname<char>': コピー コンストラクターは暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(3262): warning C4626: 'std::ctype_byname<char>': 代入演算子は暗黙的に削除済みとし て定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\system_error(192): warning C4820: 'std::error_code': '4' バイトのパディングを データ メン バー 'std::error_code::_Myval' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\system_error(262): warning C4820: 'std::error_condition': '4' バイトのパディングを データ メンバー 'std::error_condition::_Myval' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\system_error(498): warning C4625: 'std::_Generic_error_category': コピー コンストラクター は暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\system_error(498): warning C5026: 'std::_Generic_error_category': 移動コンストラクターが暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\system_error(498): warning C4626: 'std::_Generic_error_category': 代入演算子は暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\system_error(498): warning C5027: 'std::_Generic_error_category': 移動代入演算子が暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\system_error(526): warning C4625: 'std::_Iostream_error_category': コピー コンストラクターは暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\system_error(526): warning C5026: 'std::_Iostream_error_category': 移動コンストラクターが 暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\system_error(526): warning C4626: 'std::_Iostream_error_category': 代入演算子は暗黙的に削 除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\system_error(526): warning C5027: 'std::_Iostream_error_category': 移動代入演算子が暗黙的 に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\system_error(574): warning C4625: 'std::_System_error_category': コピー コンストラクターは暗黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\system_error(574): warning C5026: 'std::_System_error_category': 移動コンストラクターが暗 黙的に削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\system_error(574): warning C4626: 'std::_System_error_category': 代入演算子は暗黙的に削除 済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\system_error(574): warning C5027: 'std::_System_error_category': 移動代入演算子が暗黙的に 削除済みとして定義されました
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xiosbase(589): warning C4820: 'std::ios_base::_Fnarray': '4' バイトのパディングを データ  メンバー 'std::ios_base::_Fnarray::_Index' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xiosbase(642): warning C4820: 'std::ios_base': '4' バイトのパディングを データ メンバー 'std::ios_base::_Fmtfl' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ios(188): warning C4820: 'std::basic_ios<char,std::char_traits<char>>': '7' バイトのパディングを データ メンバー 'std::basic_ios<char,std::char_traits<char>>::_Fillch' の後に追加しま した。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(42): note: コンパイル対象の クラス テンプレート インスタンス化 'std::basic_ios<char,std::char_traits<char>>' のリファレンスを確認してください
A0-1-1.cpp(21): note: コンパイル対象の クラス テンプレート インスタンス化 'std::basic_ostream<char,std::char_traits<char>>' のリファレンスを確認してください
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(629): warning C4820: 'std::basic_ostream<char,std::char_traits<char>>': '4' バイトのパディングを データ メンバー 'std::basic_ostream<char,std::char_traits<char>>::{vbptr}' の 後に追加しました。
A0-1-1.cpp(82): warning C4365: '引数': 'int8_t' から 'std::array<int32_t,100>::size_type' に 変換しました。signed/unsigned が一致しません。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(161): warning C4820: 'std::basic_ostream<char,std::char_traits<char>>::sentry': '7' バイトのパディングを データ メンバー 'std::basic_ostream<char,std::char_traits<char>>::sentry::_Ok' の後に追加しました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(298): note: コンパイル対象の クラス テンプレート インスタンス化 'std::basic_ostream<char,std::char_traits<char>>::sentry' のリファレンスを確認してください
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(296): note: クラス テンプレート のメンバー関数 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(int)' のコンパイ ル中
A0-1-1.cpp(21): note: コンパイル対象の関数 テンプレート インスタンス化 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(int)' のリファレンスを確認してください
A0-1-1.cpp(21): note: コンパイル対象の クラス テンプレート インスタンス化 'std::basic_ostream<char,std::char_traits<char>>' のリファレンスを確認してください
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1833): warning C4625: 'std::num_put<_Elem,std::ostreambuf_iterator<_Elem,_Traits>>': コピー コンストラクターは暗黙的に削除済みとして定義されました
        with
        [
            _Elem=char,
            _Traits=std::char_traits<char>
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(310): note: コンパイル対象の クラス テンプレート インスタンス化 'std::num_put<_Elem,std::ostreambuf_iterator<_Elem,_Traits>>' のリファレンスを確認してください
        with
        [
            _Elem=char,
            _Traits=std::char_traits<char>
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1833): warning C4626: 'std::num_put<_Elem,std::ostreambuf_iterator<_Elem,_Traits>>': 代入演算子は暗黙的に削除済みとして定義されました
        with
        [
            _Elem=char,
            _Traits=std::char_traits<char>
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\streambuf(710): warning C4820: 'std::ostreambuf_iterator<_Elem,_Traits>': '7' バイトのパディングを データ メンバー 'std::ostreambuf_iterator<_Elem,_Traits>::_Failed' の後に追加しまし た。
        with
        [
            _Elem=char,
            _Traits=std::char_traits<char>
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(310): note: コンパイル対象の クラス テンプレート インスタンス化 'std::ostreambuf_iterator<_Elem,_Traits>' のリファレンスを確認してください
        with
        [
            _Elem=char,
            _Traits=std::char_traits<char>
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(313): warning C4571: 情報: catch(...) の意味が Visual C++ 7.1 から変更されています。構造化例外 (SEH) はキャッチされません。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1616): warning C4774: 'sprintf_s' : 引数 3 に必要な書式文字列が文字列リテラルでは ありません
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1616): note: たとえば、'name' の形式指定子はセキュリティ上の問題を引き起こす可能性があるため、printf(名前); の代わりに printf("%s", 名前); を使用します
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1616): note: 名前付き文字列リテラルに対し constexpr 指定子を使用することをお勧めします
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1599): note: クラス テンプレート のメンバー関数 '_OutIt std::num_put<_Elem,_OutIt>::do_put(_OutIt,std::ios_base &,_Elem,long double) const' のコンパイル中
        with
        [
            _OutIt=std::ostreambuf_iterator<char,std::char_traits<char>>,
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(310): note: コンパイル対象の クラス テンプレート インスタンス化 'std::num_put<_Elem,std::ostreambuf_iterator<_Elem,_Traits>>' のリファレンスを確認してください
        with
        [
            _Elem=char,
            _Traits=std::char_traits<char>
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(296): note: クラス テンプレート のメンバー関数 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(int)' のコンパイ ル中
A0-1-1.cpp(21): note: コンパイル対象の関数 テンプレート インスタンス化 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(int)' のリファレンスを確認してください
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1592): warning C4774: 'sprintf_s' : 引数 3 に必要な書式文字列が文字列リテラルでは ありません
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1592): note: たとえば、'name' の形式指定子はセキュリティ上の問題を引き起こす可能性があるため、printf(名前); の代わりに printf("%s", 名前); を使用します
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1592): note: 名前付き文字列リテラルに対し constexpr 指定子を使用することをお勧めします
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1575): note: クラス テンプレート のメンバー関数 '_OutIt std::num_put<_Elem,_OutIt>::do_put(_OutIt,std::ios_base &,_Elem,double) const' のコンパイル中
        with
        [
            _OutIt=std::ostreambuf_iterator<char,std::char_traits<char>>,
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1569): warning C4774: 'sprintf_s' : 引数 3 に必要な書式文字列が文字列リテラルでは ありません
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1569): note: たとえば、'name' の形式指定子はセキュリティ上の問題を引き起こす可能性があるため、printf(名前); の代わりに printf("%s", 名前); を使用します
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1569): note: 名前付き文字列リテラルに対し constexpr 指定子を使用することをお勧めします
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1565): note: クラス テンプレート のメンバー関数 '_OutIt std::num_put<_Elem,_OutIt>::do_put(_OutIt,std::ios_base &,_Elem,unsigned __int64) const' のコンパイル中
        with
        [
            _OutIt=std::ostreambuf_iterator<char,std::char_traits<char>>,
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1559): warning C4774: 'sprintf_s' : 引数 3 に必要な書式文字列が文字列リテラルでは ありません
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1559): note: たとえば、'name' の形式指定子はセキュリティ上の問題を引き起こす可能性があるため、printf(名前); の代わりに printf("%s", 名前); を使用します
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1559): note: 名前付き文字列リテラルに対し constexpr 指定子を使用することをお勧めします
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1555): note: クラス テンプレート のメンバー関数 '_OutIt std::num_put<_Elem,_OutIt>::do_put(_OutIt,std::ios_base &,_Elem,__int64) const' のコンパイル中
        with
        [
            _OutIt=std::ostreambuf_iterator<char,std::char_traits<char>>,
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1549): warning C4774: 'sprintf_s' : 引数 3 に必要な書式文字列が文字列リテラルでは ありません
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1549): note: たとえば、'name' の形式指定子はセキュリティ上の問題を引き起こす可能性があるため、printf(名前); の代わりに printf("%s", 名前); を使用します
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1549): note: 名前付き文字列リテラルに対し constexpr 指定子を使用することをお勧めします
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1545): note: クラス テンプレート のメンバー関数 '_OutIt std::num_put<_Elem,_OutIt>::do_put(_OutIt,std::ios_base &,_Elem,unsigned long) const' のコンパイル中
        with
        [
            _OutIt=std::ostreambuf_iterator<char,std::char_traits<char>>,
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1539): warning C4774: 'sprintf_s' : 引数 3 に必要な書式文字列が文字列リテラルでは ありません
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1539): note: たとえば、'name' の形式指定子はセキュリティ上の問題を引き起こす可能性があるため、printf(名前); の代わりに printf("%s", 名前); を使用します
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1539): note: 名前付き文字列リテラルに対し constexpr 指定子を使用することをお勧めします
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1535): note: クラス テンプレート のメンバー関数 '_OutIt std::num_put<_Elem,_OutIt>::do_put(_OutIt,std::ios_base &,_Elem,long) const' のコンパイル中
        with
        [
            _OutIt=std::ostreambuf_iterator<char,std::char_traits<char>>,
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(263): warning C4820: 'std::numpunct<_Elem>': '6' バイトのパディングを データ メン バー 'std::numpunct<_Elem>::_Kseparator' の後に追加しました。
        with
        [
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1514): note: コンパイル対象の クラス テンプレート インスタンス化 'std::numpunct<_Elem>' のリファレンスを確認してください
        with
        [
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1506): note: クラス テンプレート のメンバー関数 '_OutIt std::num_put<_Elem,_OutIt>::do_put(_OutIt,std::ios_base &,_Elem,bool) const' のコンパイル中
        with
        [
            _OutIt=std::ostreambuf_iterator<char,std::char_traits<char>>,
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(265): warning C4625: 'std::numpunct<_Elem>': コピー コンストラクターは暗黙的に削除済みとして定義されました
        with
        [
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(265): warning C4626: 'std::numpunct<_Elem>': 代入演算子は暗黙的に削除済みとして定 義されました
        with
        [
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(181): warning C4571: 情報: catch(...) の意味が Visual C++ 7.1 から変更されています。構造化例外 (SEH) はキャッチされません。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(176): note: クラス テンプレート のメンバー関数 'void std::basic_ostream<char,std::char_traits<char>>::_Osfx(void)' のコンパイル中
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(139): note: コンパイル対象の関数 テンプレート インスタンス化 'void std::basic_ostream<char,std::char_traits<char>>::_Osfx(void)' のリファレンスを確認してください
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(826): warning C4571: 情報: catch(...) の意味が Visual C++ 7.1 から変更されています。構造化例外 (SEH) はキャッチされません。
A0-1-1.cpp(21): note: コンパイル対象の関数 テンプレート インスタンス化 'std::basic_ostream<char,std::char_traits<char>> &std::operator <<<std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,const char *)' のリファレンスを確認してください
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(558): warning C4571: 情報: catch(...) の意味が Visual C++ 7.1 から変更されています。構造化例外 (SEH) はキャッチされません。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(546): note: クラス テンプレート のメンバー関数 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::put(_Elem)' のコンパイル中
        with
        [
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(1020): note: コンパイル対象の関数 テンプレート インスタンス化 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::put(_Elem)' のリファレンスを確認してください
        with
        [
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(212): warning C4571: 情報: catch(...) の意味が Visual C++ 7.1 から変更されています。構造化例外 (SEH) はキャッチされません。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(200): note: クラス テンプレート のメンバー関数 'void std::numpunct<_Elem>::_Init(const std::_Locinfo &,bool)' のコンパイル中
        with
        [
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(160): note: コンパイル対象の関数 テンプレート インスタンス化 'void std::numpunct<_Elem>::_Init(const std::_Locinfo &,bool)' のリファレンスを確認してください
        with
        [
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1514): note: コンパイル対象の クラス テンプレート インスタンス化 'std::numpunct<_Elem>' のリファレンスを確認してください
        with
        [
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocnum(1506): note: クラス テンプレート のメンバー関数 '_OutIt std::num_put<_Elem,_OutIt>::do_put(_OutIt,std::ios_base &,_Elem,bool) const' のコンパイル中
        with
        [
            _OutIt=std::ostreambuf_iterator<char,std::char_traits<char>>,
            _Elem=char
        ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(864): warning C4571: 情報: catch(...) の意味が Visual C++ 7.1 から変更されています。構造化例外 (SEH) はキャッチされません。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(984): note: コンパイル対象の関数 テンプレート インスタンス化 'std::basic_ostream<char,std::char_traits<char>> &std::operator <<<std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,char)' のリファレンスを確認してください
A0-1-1.cpp(92): note: コンパイル対象の関数 テンプレート インスタンス化 'std::basic_ostream<char,std::char_traits<char>> &std::operator <<<std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,unsigned char)' のリファレンスを確認してください
C:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt\stdlib.h(359): warning C4514: 'abs': 参照されていないインライン関数は削除されました。
C:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt\stdlib.h(364): warning C4514: 'abs': 参照されていないインライン関数は削除されました。
C:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt\stdlib.h(369): warning C4514: 'div': 参照されていないインライン関数は削除されました。
C:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt\stdlib.h(374): warning C4514: 'div': 参照されていないインライン関数は削除されました。
C:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt\corecrt_math.h(290): warning C4514: 'fpclassify': 参照されていないインライン関数は削除されました。
C:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt\corecrt_math.h(295): warning C4514: 'fpclassify': 参照されていないインライン関数は削除されました。
C:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt\corecrt_math.h(300): warning C4514: 'fpclassify': 参照されていないインライン関数は削除されました。
C:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt\corecrt_math.h(305): warning C4514: 'signbit': 参照されていないインライン関数は削除されました。
C:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt\corecrt_math.h(310): warning

21:09 | 投票する | 投票数(0) | コメント(0)
2018/08/16

Clean Architecture by Robert C Martin

Tweet ThisSend to Facebook | by kaizen
Clean Architecture by Robert C Martin

Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series) 1st Edition



https://www.amazon.com/dp/0134494164

ygrenzinger/CleanArchitecture
https://gist.github.com/ygrenzinger/14812a56b9221c9feca0b3621518635b


p.s. 

09:42 | 投票する | 投票数(0) | コメント(0)
2018/08/15

C++N3242, 2011 (25)3.8 Object lifetime [basic.life] p.70.cpp

Tweet ThisSend to Facebook | by kaizen
#はじめに(Introduction)
C++N3242, 2011, Working Draft, Standard for Programming Language C++
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf

C++N3242は、ISO/IEC JTC1 SC22 WG21の作業文書(N number Document)です。
公式のISO/IEC 14882原本ではありません。

ISO/IEC JTC1 SC22 WG21では、可能な限り作業文書を公開し、幅広い意見を求めています。

一連の記事はコード断片をコンパイルできる形にする方法を検討してコンパイル、リンク、実行して、規格案の原文と処理系(g++, Clang++)との違いを確認し、技術内容を検討し、ISO/IEC JTC1 SC22 WG21にフィードバックするために用います。

また、CERT C++, MISRA C++等のコーディング標準のコード断片をコンパイルする際の参考にさせていただこうと考えています。CERT C++, MISRA C++が標準化の動きとの時間的なずれがあれば確認できれば幸いです。また、boostライブラリとの関連、Linux OS, TOPPERSカーネル、g++(GCC), clang++(LLVM)との関係を調査中です。

何か、抜け漏れ、耳より情報がありましたらおしらせくださると幸いです。

##作業方針(sequence)
下記4)までの過程はhosted環境で行います。
1)コンパイルエラーを収集する。
2)コンパイルエラーをなくす方法を検討する。
コンパイルエラーになる例を示すだけが目的のコードは、コンパイルエラーをなくすのではなく、コンパイルエラーの種類を収集するだけにする。
文法を示すのが目的のコード場合に、コンパイルエラーをなくすのに手間がかかる場合は、順次作業します。
3)リンクエラーをなくす方法を検討する。
文法を示すのが目的のコード場合に、リンクエラーをなくすのに手間がかかる場合は、順次作業します。
4)意味のある出力を作る。
コンパイル、リンクが通っても、意味のある出力を示そうとすると、コンパイル・リンクエラーが出て収拾できそうにない場合がある。順次作業します。
5hosted環境とfreestnding環境の違いによる影響、課題を洗い出し、freestanding環境での実行結果の作成を試みます。

1)だけのものから5)まで進んだものと色々ある状態です。一歩でも前に進むご助言をお待ちしています。「検討事項」の欄に現状を記録するようにしています。

## C++N3242符号断片編纂一覧(example code compile list)
C++N3242, 2011, ISO/IEC 14882, C++ standard(1) Example code compile list
https://qiita.com/kaizen_nagoya/items/685b5c1a2c17c1bf1318

https://researchmap.jp/jodlit3dy-1797580/#_1797580

### C++N4606符号断片編纂一覧(example code compile list)
C++N4606 Working Draft 2016, ISO/IEC 14882, C++ standard(1) Example code compile list
https://qiita.com/kaizen_nagoya/items/df5d62c35bd6ed1c3d43/

### C++N4741符号断片編纂一覧(example code compile list)
C++N4741, 2018 Standard Working Draft on ISO/IEC 14882 sample code compile list
https://qiita.com/kaizen_nagoya/items/3294c014044550896010


# (25)3.8 Object lifetime [basic.life] p.70.cpp
https://researchmap.jp/jofvylnub-1797580/#_1797580
## 編纂器(Compiler)
###clang++ --version
clang version 6.0.0 (tags/RELEASE_600/final)
Target: x86_64-apple-darwin17.4.0

###g++-8 --version
g++-8 (Homebrew GCC 8.1.0) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.

##算譜(source code)

```c++:p70.cpp
// 1 filename:p70.cpp
// ver 0.1 June.10, 2014
// ver 0.2 July.7, 2018
// 2 original examples and/or notes:
// (c) ISO/IEC JTC1 SC22 WG21 N3242, April 12, 2011
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf
const char* msg= "C++N3242, 2011(25)3.8 Object lifetime [basic.life] p.70.cpp";
//
// 3 compile and output mechanism:
// (c) Ogawa Kiyoshi, kaizen @ wh.commufa.jp
//
// 4 compile errors and/or wornings:
// 4.1(c) Apple LLVM
// 4.1.1 ver.0.10
// version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
// Target: x86_64-apple-darwin13.2.0,  Thread model: posix
// Command/Options: c++ -std=c++11 -stdlib=libc++ -Wall cpp2011-2-5.cpp
// (c) LLVM 2003-2009 University of Illinois at Urbana-Champaign.
// 4.1.2 ver.0.20
// clang version 6.0.0 (tags/RELEASE_600/final)
// Target: x86_64-apple-darwin17.4.0
// 4.2. g++-4.9 (GCC) 4.9.0 20131229 (experimental)
// Copyright (C) 2013 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.
// http://gcc.gnu.org/onlinedocs/gcc/Standards.html
// 4.2.1 ver. 0.1
// Command/Options: g++-4.9  -std=c++11  -Wall cpp2011-2-5.cpp
// g++-4.9: error: unrecognized command line option '-stdlib=libc++'
// Configuration:brew install gcc49
// 4.2.2 ver. 0.2
// g++-8 (Homebrew GCC 8.1.0) 8.1.0
// Copyright (C) 2018 Free Software Foundation, Inc.
// 4.3. Visual Studio Express 2013,
// (c) Microsoft http://www.visualstudio.com/
// SPEC:
// Windows 7, .NET Framework
// (c) VMware, Inc.
// VMWare fusion 6
///
// 5. Hardware:  MacBook Pro,
// 5.1 ver. 0.10
//(c) Intel http://ark.intel.com/products/37006/
// Core 2 Duo 2.53GHz, 8GB, 1067MHz DDR3
// 5.2 ver. 0.20
// intel Corei5, 2.6GHz, 16GB, 166MHz DDR
//
// 6. Special Thanks: Upper organizatios and
// ITSCJ/IPSJ http://www.itscj.ipsj.or.jp/itscj_english/index.html
// NPO SESSAME project, http://www.sessame.jp/workinggroup/WorkingGroup3/
// Toyo Corporation, http://www.toyo.co.jp/English/
// Japan Standard Association, http://bit.ly/1lzykg1
// NPO TOPPERS project, https://www.toppers.jp/asp-d-download.html
// Daido Universcity, http://www.daido-it.ac.jp/gakubugakka/computer/index.html
// WITZ Co.Ltd., http://www.witz-inc.co.jp/products/solution/solution.html
// SevenWise.co., http://www.7ws.co.jp/index.html
// TOYOTA Motor Corporation, http://toyota.jp/
// IT planning Inc., http://www.itpl.co.jp/en/index.html
// DENSO Corporation, http://www.globaldenso.com/en/
// Aisin Seiki co. Ltd., http://www.aisin.com/
// Spancion Inc., http://www.spansion.com/
// Yazaki Corporation, http://www.yazaki-group.com/global/
// Pananosic Corporation, http://www.panasonic.net/
// SWEST: Summer Workshop on Embedded System Technologies , http://swest.toppers.jp
// CEST: Consortium for Embedded System Technology, http://www.ertl.jp/CEST/
// JUSE: Union of Japanese Scientists and Engineers, http://www.juse.or.jp/e/
// OSC:Open Source Conference, http://www.ospn.jp/

#include <iostream>
#include <cstdlib>

using namespace std;

namespace N {
  int i = 4; /// add for compile error
}

/// from here, on the  N3242 without /// lines

struct C {
int i;
void f();
const C& operator=( const C& );
};
//
const C& C::operator=( const C& other) {
if ( this != &other ) {
this->~C(); // lifetime of *this ends
new (this) C(other); // new object of type C created
f(); // well-defined
}
return *this;
}


//
struct B {
virtual void f();
B();
void mutate();
virtual ~B();
};
struct D1 : B { void f(); };
struct D2 : B { void f(); };
void B::mutate() {
new (this) D2; // reuses storage — ends the lifetime of *this
f(); // undefined behavior
B * b = this; // OK, this points to valid memory
cout << b << std::endl;
}
//  "B::B()", referenced from:
//      D1::D1() in cpp2011-3-8-b4d375.o
//      D2::D2() in cpp2011-3-8-b4d375.o
B::B(){new(B);}
//  "vtable for D1", referenced from:
//      D1::D1() in cpp2011-3-8-d7ae21.o
//  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
//cpp2011-3-8.cpp:81:5: error: definition of implicitly declared default constructor
//D1::D1(){new(D1);}
//D1::D1();
//  "vtable for D2", referenced from:
//      D2::D2() in cpp2011-3-8-d7ae21.o
//  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
//cpp2011-3-8.cpp:82:5: error: definition of implicitly declared default constructor
//D2::D2(){new(D2);}
//D2::D2();
void g() {
void* p = std::malloc(sizeof(D1) + sizeof(D2));
B* pb = new (p) D1;
pb->mutate();
&pb; // OK: pb points to valid memory
void* q = pb; // OK: pb points to valid memory
pb->f(); // undefined behavior, lifetime of *pb has ended
cout << q << std::endl;
}
//
class T { };
struct B1 {
~B1();
};
void h() {
B1 b;
new (&b) T;
} // undefined behavior at block exit
//
struct B2 {
B2();
~B2();
};
const B2 b;
void h2() {
b.~B2();
new (const_cast<B2*>(&b)) const B2; // undefined behavior
}
int main() {
C c1;
C c2;
c1 = c2; // well-defined
c1.f(); // well-defined; c1 refers to a new object of type C


/// to here, on the  N3242 without /// lines

///int main() {

g();

  cout << msg <<endl;
  return EXIT_SUCCESS;
}
```
##編纂・実行結果(compile and go)

```shell_session:cppall.sh
$ ../cpla.sh p52
$ clang++ p52.cpp -std=c++03 -Wall
0x10d53b0f40x10d53b0f5
C++N3242, 2011 (18)3.4.3.1 Class members [class.qual] p52.cpp
$ clang++ p52.cpp -std=c++2a -Wall
0x10fb4f0f40x10fb4f0f5
C++N3242, 2011 (18)3.4.3.1 Class members [class.qual] p52.cpp

$ g++-8 p52.cpp -std=c++03  -Wall
0x109ad90640x109ad9065
C++N3242, 2011 (18)3.4.3.1 Class members [class.qual] p52.cpp

$ g++-8 p52.cpp -std=c++2a  -Wall
0x10767c0640x10767c065
C++N3242, 2011 (18)3.4.3.1 Class members [class.qual] p52.cpp
OgawaKiyoshi-no-MacBook-Pro:c11 ogawakiyoshi$ ../cppall.sh p52
$ clang++ p52.cpp -std=c++03 -Wall
0x10385e0f40x10385e0f5
C++N3242, 2011 (18)3.4.3.1 Class members [class.qual] p52.cpp
$ clang++ p52.cpp -std=c++11 -Wall
0x10939b0f40x10939b0f5
C++N3242, 2011 (18)3.4.3.1 Class members [class.qual] p52.cpp
$ clang++ p52.cpp -std=c++14 -Wall
0x1027370f40x1027370f5
C++N3242, 2011 (18)3.4.3.1 Class members [class.qual] p52.cpp
$ clang++ p52.cpp -std=c++17 -Wall
0x1097160f40x1097160f5
C++N3242, 2011 (18)3.4.3.1 Class members [class.qual] p52.cpp
$ clang++ p52.cpp -std=c++2a -Wall
0x103b670f40x103b670f5
C++N3242, 2011 (18)3.4.3.1 Class members [class.qual] p52.cpp

$ g++-8 p52.cpp -std=c++03  -Wall
0x108d9c0640x108d9c065
C++N3242, 2011 (18)3.4.3.1 Class members [class.qual] p52.cpp
$ g++-8 p52.cpp -std=c++11  -Wall
0x107a3c0640x107a3c065
C++N3242, 2011 (18)3.4.3.1 Class members [class.qual] p52.cpp
$ g++-8 p52.cpp -std=c++14  -Wall
0x10cd9b0640x10cd9b065
C++N3242, 2011 (18)3.4.3.1 Class members [class.qual] p52.cpp
$ g++-8 p52.cpp -std=c++17  -Wall
0x10d13c0640x10d13c065
C++N3242, 2011 (18)3.4.3.1 Class members [class.qual] p52.cpp
$ g++-8 p52.cpp -std=c++2a  -Wall
0x109d050640x109d05065
C++N3242, 2011 (18)3.4.3.1 Class members [class.qual] p52.cpp

```

#検討事項(agenda)
1.  役に立つまたは意味のある出力

#参考資料(reference)

###プログラミング言語教育のXYZ

https://qiita.com/kaizen_nagoya/items/1950c5810fb5c0b07be4
プログラミング言語教育のXYZ(youtube)
https://www.youtube.com/watch?v=He1_tg4px-w&t=486s
###Autosar Guidelines C++14
Autosar Guidelines C++14 example code compile list(1-169)
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76
###C++N4741 2018
C++N4741 Working Draft, Standard for Programming Language C++
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4741.pdf
C++N4741, 2018 Standard Working Draft on ISO/IEC 14882 sample code compile list
https://qiita.com/kaizen_nagoya/items/3294c014044550896010
###C++N4606 2016
C++N4606 Working Draft, Standard for Programming Language C++
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/n4606.pdf
C++N4606, 2016符号断片編纂一覧(example code compile list)
Working Draft 2016, ISO/IEC 14882(1)
https://qiita.com/kaizen_nagoya/items/df5d62c35bd6ed1c3d43/

N4606 Working Draft 2016, ISO/IEC 14882, C++ standardのコード断片をコンパイルするためにしていること
https://qiita.com/kaizen_nagoya/items/a8d7ee2f2e29e76c19c1

### others
コンパイル用shell script C版(clangとgcc)とC++版(clang++とg++)
https://qiita.com/kaizen_nagoya/items/74220c0577a512c2d7da

Clang/Clang++(LLVM) gcc/g++(GNU) コンパイラ警告等比較
https://qiita.com/kaizen_nagoya/items/9a82b958cc3aeef0403f

Qiitaに投稿するCのStyle例(暫定)
https://qiita.com/kaizen_nagoya/items/946df1528a6a1ef2bc0d


ISO/IEC TS 17961:2013 C Secure Coding Rules(1) All list(to be confirmed)
https://qiita.com/kaizen_nagoya/items/54e056195c4f11b850a1

C言語(C++)に対する誤解、曲解、無理解、爽快。
https://qiita.com/kaizen_nagoya/items/3f3992c9722c1cee2e3a

C Puzzle Bookの有り難み5つ、C言語規格及びCコンパイラの特性を認識
https://qiita.com/kaizen_nagoya/items/d89a48c1536a02ecdec9

Open POSIX Test Suiteの使い方を調べはじめました
https://qiita.com/kaizen_nagoya/items/644d5e407f5faf96e6dc

MISRA-C 2012 Referenceに掲載している文献の入手可能性を確認
https://qiita.com/kaizen_nagoya/items/96dc8b125e462d5575bb

どうやって MISRA Example Suiteをコンパイルするか
https://qiita.com/kaizen_nagoya/items/fbdbff5ff696e2ca7f00

MISRA C まとめ #include <misra_c.h>
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9

「C++完全理解ガイド」の同意できること上位10
https://qiita.com/kaizen_nagoya/items/aa5744e0c4a8618c7671

#文書履歴(document history)
ver. 0.20 初稿 20180708


10:04 | 投票する | 投票数(0) | コメント(0)
2018/08/07

試験って何ですか。

Tweet ThisSend to Facebook | by kaizen
システムの試験の一部としてソフトウェアの試験を行うことがある。

仕事が試験機関であるため場合によっては証明を出す必要がある。

できるだけソフトウェア単独ではなく、システムとして試験をするようにしている。


18:22 | 投票する | 投票数(0) | コメント(0)
2018/08/07

C++リンクエラーの取り方

Tweet ThisSend to Facebook | by kaizen

```
Undefined symbols for architecture x86_64:
  "B::~()", referenced from:
      D2::~D2() in p70-db7c41.o
      D1::~D1() in p70-db7c41.o
  "typeinfo for B", referenced from:
      typeinfo for D2 in p70-db7c41.o
      typeinfo for D1 in p70-db7c41.o
  "vtable for B", referenced from:
      B::() in p70-db7c41.o
```

算譜(source code)は

```c++:c70.cpp
// 1 filename:p70.cpp
// ver 0.1 June.10, 2014
// ver 0.2 July.7, 2018
// 2 original examples and/or notes:
// (c) ISO/IEC JTC1 SC22 WG21 N3242, April 12, 2011
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf
const char* msg= "C++N3242, 2011(25)3.8 Object lifetime [basic.life] p.70.cpp";
//
// 3 compile and output mechanism:
// (c) Ogawa Kiyoshi, kaizen @ wh.commufa.jp
//
// 4 compile errors and/or wornings:
// 4.1(c) Apple LLVM
// 4.1.1 ver.0.10
// version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
// Target: x86_64-apple-darwin13.2.0,  Thread model: posix
// Command/Options: c++ -std=c++11 -stdlib=libc++ -Wall cpp2011-2-5.cpp
// (c) LLVM 2003-2009 University of Illinois at Urbana-Champaign.
// 4.1.2 ver.0.20
// clang version 6.0.0 (tags/RELEASE_600/final)
// Target: x86_64-apple-darwin17.4.0
// 4.2. g++-4.9 (GCC) 4.9.0 20131229 (experimental)
// Copyright (C) 2013 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.
// http://gcc.gnu.org/onlinedocs/gcc/Standards.html
// 4.2.1 ver. 0.1
// Command/Options: g++-4.9  -std=c++11  -Wall cpp2011-2-5.cpp
// g++-4.9: error: unrecognized command line option '-stdlib=libc++'
// Configuration:brew install gcc49
// 4.2.2 ver. 0.2
// g++-8 (Homebrew GCC 8.1.0) 8.1.0
// Copyright (C) 2018 Free Software Foundation, Inc.
// 4.3. Visual Studio Express 2013,
// (c) Microsoft http://www.visualstudio.com/
// SPEC:
// Windows 7, .NET Framework
// (c) VMware, Inc.
// VMWare fusion 6
///
// 5. Hardware:  MacBook Pro,
// 5.1 ver. 0.10
//(c) Intel http://ark.intel.com/products/37006/
// Core 2 Duo 2.53GHz, 8GB, 1067MHz DDR3
// 5.2 ver. 0.20
// intel Corei5, 2.6GHz, 16GB, 166MHz DDR
//
// 6. Special Thanks: Upper organizatios and
// ITSCJ/IPSJ http://www.itscj.ipsj.or.jp/itscj_english/index.html
// NPO SESSAME project, http://www.sessame.jp/workinggroup/WorkingGroup3/
// Toyo Corporation, http://www.toyo.co.jp/English/
// Japan Standard Association, http://bit.ly/1lzykg1
// NPO TOPPERS project, https://www.toppers.jp/asp-d-download.html
// Daido Universcity, http://www.daido-it.ac.jp/gakubugakka/computer/index.html
// WITZ Co.Ltd., http://www.witz-inc.co.jp/products/solution/solution.html
// SevenWise.co., http://www.7ws.co.jp/index.html
// TOYOTA Motor Corporation, http://toyota.jp/
// IT planning Inc., http://www.itpl.co.jp/en/index.html
// DENSO Corporation, http://www.globaldenso.com/en/
// Aisin Seiki co. Ltd., http://www.aisin.com/
// Spancion Inc., http://www.spansion.com/
// Yazaki Corporation, http://www.yazaki-group.com/global/
// Pananosic Corporation, http://www.panasonic.net/
// SWEST: Summer Workshop on Embedded System Technologies , http://swest.toppers.jp
// CEST: Consortium for Embedded System Technology, http://www.ertl.jp/CEST/
// JUSE: Union of Japanese Scientists and Engineers, http://www.juse.or.jp/e/
// OSC:Open Source Conference, http://www.ospn.jp/

#include <iostream>
#include <cstdlib>

using namespace std;

namespace N {
  int i = 4; /// add for compile error
}

/// from here, on the  N3242 without /// lines

struct C {
  int i;
  void f() {}; /// add {} for link error
  const C& operator=( const C& );
};
//
const C& C::operator=( const C& other) {
  if ( this != &other ) {
    this->~C(); // lifetime of *this ends
    new (this) C(other); // new object of type C created
    f(); // well-defined
  }
  return *this;
}


//
struct B {
  virtual void f();
  B();
  void mutate();
  virtual ~B();
};
struct D1 : B {
  void f() {};
};
struct D2 : B {
  void f() {};
};
void B::mutate() {
  new (this) D2; // reuses storage — ends the lifetime of *this
  f(); // undefined behavior
  B * b = this; // OK, this points to valid memory
  cout << b << std::endl;
}
//  "B::B()", referenced from:
//      D1::D1() in cpp2011-3-8-b4d375.o
//      D2::D2() in cpp2011-3-8-b4d375.o
B::B() {
  new(B);
}
//  "vtable for D1", referenced from:
//      D1::D1() in cpp2011-3-8-d7ae21.o
//  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
// error: definition of implicitly declared default constructor
// D1::D1(){new(D1);}
// D1::D1();
//  "vtable for D2", referenced from:
//      D2::D2() in cpp2011-3-8-d7ae21.o
//  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
//cpp2011-3-8.cpp:82:5: error: definition of implicitly declared default constructor
//D2::D2(){new(D2);}
//D2::D2();
//D1::~D1(){};
//D2::~D2(){};
void g() {
  void* p = std::malloc(sizeof(D1) + sizeof(D2));
  B* pb = new (p) D1;
  pb->mutate();
  &pb; // OK: pb points to valid memory
  void* q = pb; // OK: pb points to valid memory
  pb->f(); // undefined behavior, lifetime of *pb has ended
  cout << q << std::endl;
}
//
class T { };
struct B1 {
  ~B1() {}; /// add {} for link error
};
void h() {
  B1 b;
  new (&b) T;
} // undefined behavior at block exit
//
struct B2 {
  B2() {}; /// add {} for link error
  ~B2() {}; /// add {} for link error
};
const B2 b;
void h2() {
  b.~B2();
  new (const_cast<B2*>(&b)) const B2; // undefined behavior
}
int main() {
  C c1;
  C c2;
  c1 = c2; // well-defined
  c1.f(); // well-defined; c1 refers to a new object of type C

/// to here, on the  N3242 without /// lines

///int main() {

  g();

  cout << msg <<endl;
  return EXIT_SUCCESS;
}
```

18:18 | 投票する | 投票数(0) | コメント(0)
2018/07/24

論理回路としてのGPU

Tweet ThisSend to Facebook | by kaizen
CPU, FPU, DSP, GPUの違いと、プログラムからの利用方法を記録。
19:40 | 投票する | 投票数(0) | コメント(0)
2018/07/11

初めてプログラムを書く人の知ると良いこと・やると良いこと

Tweet ThisSend to Facebook | by kaizen
当方は、公的試験研究機関として、プログラムを書いたことがない方が、
1週間でプロとしてプログラムが書けるようになる教育・訓練をしています。

#自分が好きな分野、興味を持っている分野のプログラムを写経する

#

#プログラムは設計です。
別に設計書を作るのは愚の骨頂です。


11:52 | 投票する | 投票数(0) | コメント(0)
2018/07/10

Cコンパイラ自作日記(挫折版)

Tweet ThisSend to Facebook | by kaizen
Cコンパイラを自作するまでの日記

1 small Cを打ち込んで動かす。

2 Pascalで書かれたコンパイラをC言語で書き換える

3 Yacc, Lexで書かれたコンパイラの一部をC言語で書き換える。

4 自作
4.1 80286/80386のメモリ管理命令が理解できなかった。

4.2 コンパイラの最適化の処理が理解できなかった

4.3 OBJのシンタックスチェッカを作った
電総研の研修生として3ヶ月滞在するに当たり、
二木厚吉さんからOBJの論文を渡された。

OBJの書き換えは、できそうになかった。
LISP系の言語がよくわかっていない。

戸村哲さんに、LISPはアセンブラだ。
確かに、当時LISP プロセッサが出ていて、
しかし、80386の安価さとの競争で、
80386系のLISPの方が、LISTプロセッサのLISPより
費用対効果が良いという現象が現れていた。


#Cコンパイラをスクラッチから開発してみた(日記)
https://qiita.com/ruiu/items/4d471216b71ab48d8b74

##8cc
https://github.com/rui314/8cc

###cpp.c
https://github.com/rui314/8cc/blob/master/cpp.c


#C コンパイラをスクラッチから開発する日記
https://qiita.com/zakuro9715/items/54f5598247ca6d3be3d6


## mcpp -- a portable C preprocessor 
https://github.com/rui314/8cc


-------------

C言語、昨日、今日、明日

C言語は、CPUを製造・出荷している組織から提供することがある。

IntelのCPUにはIntelのCコンパイラがあり、
ARMのCPUにはARMのCコンパイラがある。

C言語が、なぜこれまで発展してきたかを理解されずに、
C言語の規格、コーディング標準、処理系について、書かれている方々がお見えで、悲しい気持ちになることがしばしばあります。

C言語には、主に3つの機能があります。

1) CPUの性能を最大に実現するアセンブラと同等の機能
2) Cコンパイラの設計、保守、最適化を実現する機能
3) OSの設計、保守、最適化を実現する機能

CPUとCコンパイラとOSの3つに言及せずにC言語を語っているのは、十分ではない。

# 演算子

##三項演算子

##単項演算子

#前処理

00:25 | 投票する | 投票数(0) | コメント(0)
2018/07/08

C言語、C++の曲芸的限界と対策

Tweet ThisSend to Facebook | by kaizen
C言語、C++の曲芸的限界と対策

C言語、C++の困難性の一つは、変数にメモリのアドレスを入れるポインタだとの見解があるらしい。

ポインタと同じくらい曲芸的なのは、ポインタ変数にも用いる、*と&の役割だ。

*には一体幾つの機能があるのだろう。
二項演算子
単項演算子
宣言の型と変数の間において型へのポインタ変数宣言

同様に、&にも
二項論理演算子
単項演算子
宣言と型と変数の間において型への参照変数宣言

ポインタよりも参照の方が難しいかもしれない。

ただ、プログラミング言語は、いくら書いても、
ほとんどお金を取られる心配はない。

電気代と自分の時間だけ。

自分で書くのだから、ひょっとしたら売れるかもしれない。
じゃ、プログラムを書いて勉強すればいいのだ。


```
```c++:starand.cpp
#include <iostream>

#define msg1="1.乗算の二項演算子「*」<変数 * 変数>(定数でも可能)"
void f(){
  int i = 2;
  int j = 3;
  std::cout <<msg1 <<std::endl <<" i * j = "<< i * j << std::endl;
}

#define msg2="2ポインタ変数の宣言「*」 <型名 * 変数>"
void g(){
  int i = 2;
  int* j = &i;
  std::cout <<msg2 <<std::endl <<" int* j=  &i ;"<< j << std::endl;
}

#define msg3= "3.ポインタ変数の中味を取り出す単項演算子「*」<* 変数>"
void h(){
  int i = 2;
  int* j = &i;
  std::cout <<msg3 <<std::endl <<" *j ;"<< *j << std::endl;
}

#define msg4="論理二項演算子「&」<変数 & 変数>(定数でも可能)"

void m(){
  int i = 2;
  int j = 3;
  std::cout<<msg4 <<std::endl  <<" i & j = "<< i & j << std::endl;
}
```

#define msg5 ="5.参照変数の宣言「&」 <宣言子 & 変数>\r\n
    非対称性:宣言と同時に代入\r\n"
void n(){
  int i = 2;
  int& j = i;
  j=3;
  std::cout <<msg5 <<std::endl <<"  i="<< i << std::endl;
}
```
jはiのアドレスを持っている。
jへの代入はiへの代入になる。

あたかも& と*が対称的かのようだが、
NULLが代入できないなど非対称的なところもある。

#define msg6="6.変数のアドレス取得単項演算子「&」 <& 変数>(*の逆)"

void o(){
  int i = 2;
  int* j = &i;
  std::cout<<msg6 <<std::endl  <<" &i "<< &i << std::endl;
}

int main(int argc, char* argv[]){
  f();
  g();
  h();
  m();
  n();
  o();
}
```

22:04 | 投票する | 投票数(0) | コメント(0)
12345