はじめに(Introduction)
C++N4741 Working Draft, Standard for Programming Language C++
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4741.pdf
C++N4741は、ISO/IEC JTC1 SC22 WG21の作業原案(Working Draft)です。
公式の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)との関係も調査中です。
何か、抜け漏れ、耳より情報がありましたらおしらせくださると幸いです。
背景(back ground)
C/C++でコンパイルエラーが出ると、途方にくれることがしばしばあります。
何回かに1回は、該当するエラーが検索できます。
ただ、条件が違っていて、そこでの修正方法では目的を達成しないこともしばしばです。いろいろな条件のコンパイルエラーとその対応方法について、広く記録することによって、いつか同じエラーに遭遇した時にやくに立つことを目指しています。
この半年の間で、三度、自分のネットでの記録に助けられたことがあります。
また過去に解決できなかった記録を10種類以上、最近になって解決できたことがあります。それは、主に次の3つの情報に基づいています。
https://stackoverflow.com
https://cpprefjp.github.io
http://ja.cppreference.com/
また
https://researchmap.jp/joub9b3my-1797580/#_1797580
に記載したサイトのお世話になっています。
作業方針(sequence)
Clang++では-std=c++03, c++17, C++2aの3種類
g++では-std=c++03, c++17の2種類
vc++(visual studio 2017)ではC++17の1種類
でコンパイルし、
1)コンパイルエラーを収集する。
2)コンパイルエラーをなくす方法を検討する。
コンパイルエラーになる例を示すだけが目的のコードは、コンパイルエラーをなくすのではなく、コンパイルエラーの種類を収集するだけにする。
文法を示すのが目的のコード場合に、コンパイルエラーをなくすのに手間がかかる場合は、順次作業します。
3)リンクエラーをなくす方法を検討する。
文法を示すのが目的のコード場合に、リンクエラーをなくすのに手間がかかる場合は、順次作業します。
4)意味のある出力を作る。
コンパイル、リンクが通っても、意味のある出力を示そうとすると、コンパイル・リンクエラーが出て収拾できそうにない場合がある。順次作業します。
1)だけのものから4)まで進んだものと色々ある状態です。一歩でも前に進むご助言をお待ちしています。「検討事項」の欄に現状を記録するようにしています。
C++N4741, 2018 Standard
Working Draft on ISO/IEC 14882 sample code compile list
https://qiita.com/kaizen_nagoya/items/3294c014044550896010
C++N4606, 2016
符号断片編纂一覧(example code compile list)
C++N4606, 2016 Working Draft 2016, ISO/IEC 14882, C++ standard(1) Example code compile list
https://qiita.com/kaizen_nagoya/items/df5d62c35bd6ed1c3d43/
C++N3242, 2011
sample code compile list on clang++ and g++
https://qiita.com/kaizen_nagoya/items/685b5c1a2c17c1bf1318
編纂器(Compiler)
clang++ --version
clang version 6.0.0 (tags/RELEASE_600/final)
Target: x86_64-apple-darwin17.4.0
g++-7 --version
g++-7 (Homebrew GCC 7.3.0_1) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
cl(visual studio 2017)
Microsoft(R) C/C++ Optimizing Compiler Version 19.15.26726 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
(4)5.13.8 User-defined literals [lex.ext]p23
C++N4606 (7) 2.13.8 User-defined literals[lex.ext]p34
https://qiita.com/kaizen_nagoya/items/65f56327c29a1883849a
C++N3242(C++2011)2.14 Literals 2.14.8 User-defined literals
https://researchmap.jp/jov0o7b4c-1797580/#_1797580
算譜(source code)
// C++N4741 Committee Draft, Standard for Programming Language C++
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n741.pdf
#define msg "C++N4741 (4)5.13.8 User-defined literals [lex.ext]p23
.cpp"
// Edited by Dr. Ogawa Kiyoshi. Compile procedure and results record.
#include <iostream>
#include <cstdlib>
#include <cassert>
#include <cstring>
using namespace std;
long double operator "" _w(long double);
std::string operator "" _w(const char16_t*, std::size_t);
unsigned operator "" _w(const char*);
int main() {
1.2_w; // calls operator "" _w(1.2L)
u"one"_w; // calls operator "" _w(u"one", 3)
12_w; // calls operator "" _w("12")
"two"_w; // error: no applicable literal operator
L"A" "B" "C"_x; // OK: same as L"ABC"_x
"P"_x "Q" "R"_y;// error: two different ud-suffixes
cout<< msg << endl;
return EXIT_SUCCESS;
}
編纂・実行結果(compile and go)
$ ../cpla.sh p23
$ clang++ p23.cpp -std=c++03 -Wall
p23.cpp:13:22: error: expected a type
long double operator "" _w(long double);
^
p23.cpp:14:22: error: expected a type
std::string operator "" _w(const char16_t*, std::size_t);
^
p23.cpp:15:19: error: expected a type
unsigned operator "" _w(const char*);
^
p23.cpp:17:4: error: invalid suffix '_w' on floating constant
1.2_w; // calls operator "" _w(1.2L)
^
p23.cpp:18:1: error: use of undeclared identifier 'u'
u"one"_w; // calls operator "" _w(u"one", 3)
^
p23.cpp:19:3: error: invalid suffix '_w' on integer constant
12_w; // calls operator "" _w("12")
^
p23.cpp:20:6: error: expected ';' after expression
"two"_w; // error: no applicable literal operator
^
;
p23.cpp:20:6: error: use of undeclared identifier '_w'
p23.cpp:22:13: error: expected ';' after expression
L"A" "B" "C"_x; // OK: same as L"ABC"_x
^
;
p23.cpp:22:13: error: use of undeclared identifier '_x'
p23.cpp:23:4: error: expected ';' after expression
"P"_x "Q" "R"_y;// error: two different ud-suffixes
^
;
p23.cpp:23:4: error: use of undeclared identifier '_x'
p23.cpp:20:1: warning: expression result unused [-Wunused-value]
"two"_w; // error: no applicable literal operator
^~~~~
p23.cpp:22:1: warning: expression result unused [-Wunused-value]
L"A" "B" "C"_x; // OK: same as L"ABC"_x
^~~~~~~~~~~~
p23.cpp:23:1: warning: expression result unused [-Wunused-value]
"P"_x "Q" "R"_y;// error: two different ud-suffixes
^~~
3 warnings and 12 errors generated.
$ clang++ p23.cpp -std=c++17 -Wall
p23.cpp:20:6: error: no matching literal operator for call to 'operator""_w' with arguments of types
'const char *' and 'unsigned long', and no matching literal operator template
"two"_w; // error: no applicable literal operator
^
p23.cpp:22:13: error: no matching literal operator for call to 'operator""_x' with arguments of
types 'const wchar_t *' and 'unsigned long', and no matching literal operator template
L"A" "B" "C"_x; // OK: same as L"ABC"_x
^
p23.cpp:23:11: error: differing user-defined suffixes ('_x' and '_y') in string literal
concatenation
"P"_x "Q" "R"_y;// error: two different ud-suffixes
~~~~~ ^~~~~
3 errors generated.
$ clang++ p23.cpp -std=c++2a -Wall
p23.cpp:20:6: error: no matching literal operator for call to 'operator""_w' with arguments of types
'const char *' and 'unsigned long', and no matching literal operator template
"two"_w; // error: no applicable literal operator
^
p23.cpp:22:13: error: no matching literal operator for call to 'operator""_x' with arguments of
types 'const wchar_t *' and 'unsigned long', and no matching literal operator template
L"A" "B" "C"_x; // OK: same as L"ABC"_x
^
p23.cpp:23:11: error: differing user-defined suffixes ('_x' and '_y') in string literal
concatenation
"P"_x "Q" "R"_y;// error: two different ud-suffixes
~~~~~ ^~~~~
3 errors generated.
$ g++-7 p23.cpp -std=c++03 -Wall
p23.cpp:17:1: error: invalid suffix "_w" on floating constant
1.2_w; // calls operator "" _w(1.2L)
^~~~~
p23.cpp:19:1: error: invalid suffix "_w" on integer constant
12_w; // calls operator "" _w("12")
^~~~
p23.cpp:13:13: warning: user-defined literals only available with -std=c++11 or -std=gnu++11
long double operator "" _w(long double);
^~~~~~~~
p23.cpp:13:13: warning: user-defined literals only available with -std=c++11 or -std=gnu++11
p23.cpp:14:13: warning: user-defined literals only available with -std=c++11 or -std=gnu++11
std::string operator "" _w(const char16_t*, std::size_t);
^~~~~~~~
p23.cpp:14:13: warning: user-defined literals only available with -std=c++11 or -std=gnu++11
p23.cpp:14:34: error: 'char16_t' does not name a type; did you mean 'wchar_t'?
std::string operator "" _w(const char16_t*, std::size_t);
^~~~~~~~
wchar_t
p23.cpp:14:56: error: 'std::__cxx11::string operator""_w(const int*, std::size_t)' has invalid argument list
std::string operator "" _w(const char16_t*, std::size_t);
^
p23.cpp:15:10: warning: user-defined literals only available with -std=c++11 or -std=gnu++11
unsigned operator "" _w(const char*);
^~~~~~~~
p23.cpp:15:10: warning: user-defined literals only available with -std=c++11 or -std=gnu++11
p23.cpp: In function 'int main()':
p23.cpp:18:1: error: 'u' was not declared in this scope
u"one"_w; // calls operator "" _w(u"one", 3)
^
p23.cpp:20:6: error: expected ';' before '_w'
"two"_w; // error: no applicable literal operator
^~
p23.cpp:20:8: warning: statement has no effect [-Wunused-value]
"two"_w; // error: no applicable literal operator
^
p23.cpp:22:13: error: expected ';' before '_x'
L"A" "B" "C"_x; // OK: same as L"ABC"_x
^~
p23.cpp:22:15: warning: statement has no effect [-Wunused-value]
L"A" "B" "C"_x; // OK: same as L"ABC"_x
^
p23.cpp:23:4: error: expected ';' before '_x'
"P"_x "Q" "R"_y;// error: two different ud-suffixes
^~
p23.cpp:23:16: warning: statement has no effect [-Wunused-value]
"P"_x "Q" "R"_y;// error: two different ud-suffixes
^
$ g++-7 p23.cpp -std=c++17 -Wall
p23.cpp: In function 'int main()':
p23.cpp:20:1: error: unable to find string literal operator 'operator""_w' with 'const char [4]', 'long unsigned int' arguments
"two"_w; // error: no applicable literal operator
^~~~~~~
p23.cpp:22:10: error: unable to find string literal operator 'operator""_x' with 'const wchar_t [4]', 'long unsigned int' arguments
L"A" "B" "C"_x; // OK: same as L"ABC"_x
^~~~~
p23.cpp:23:11: error: inconsistent user-defined literal suffixes '_x' and '_y' in string literal
"P"_x "Q" "R"_y;// error: two different ud-suffixes
^~~~~
p23.cpp:23:11: error: unable to find string literal operator 'operator""_x' with 'const char [4]', long unsigned int' arguments
Visual Studio 2017
"cl *.cpp /EHsc /std:c++17"
1>cl p23.cpp /EHsc /std:c++17
Microsoft(R) C/C++ Optimizing Compiler Version 19.15.26726 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
p23.cpp
p23.cpp(20): error C3688: リテラル サフィックス '_w' が無効です。リテラル演算子またはリテラル演算子テンプレート 'operator ""_w' が見つかりません
p23.cpp(20): note: リテラル演算子のパラメーター リストは、'const char *, std::size_t' の形式でなければなりません
p23.cpp(22): error C3688: リテラル サフィックス '_x' が無効です。リテラル演算子またはリテラル演算子テンプレート 'operator ""_x' が見つかりません
p23.cpp(23): error C3680: ユーザー定義文字列リテラルを、一致しないリテラル サフィックス識別子と連結することはできませ ん
p23.cpp(23): note: サフィックス '_x' とサフィックス '_y' を連結しています
p23.cpp(23): error C3688: リテラル サフィックス '_x' が無効です。リテラル演算子またはリテラル演算子テンプレート 'operator ""_x' が見つかりません
定義を手入れ
コンパイルエラー
p23a.cpp:48:11: error: unable to find string literal operator 'operator""_x' with 'const char [4]', 'long unsigned int' arguments
から、const char [4], long unsigned intを定義すれば処理できることがわかり、_w(const char cp[4],long unsigned int sz) 定義追加。
算譜(source code)
// C++N4741 Committee Draft, Standard for Programming Language C++
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n741.pdf
#define msg "C++N4741 (4)5.13.8 User-defined literals [lex.ext]p23a.cpp"
// Edited by Dr. Ogawa Kiyoshi. Compile procedure and results recor
#include <iostream> //for cout
#include <cstdlib>
long double operator "" _w(long double ld) {
std::cout << "long double ld="<<ld<<std::endl;
return ld;
};
std::string operator "" _w(const char16_t* cp, std::size_t sz) {
std::cout << cp << std::endl;
std::string ss;
return ss;
};
unsigned operator "" _w(const char* cc) {
std::cout << "const char * cc="<< cc<<std::endl;
return(unsigned long) cc;
};
std::string operator "" _x(const wchar_t* cp, std::size_t sz) {
std::cout << cp << std::endl;
std::string ss;
return ss;
};
std::string operator "" _w(const char cp[4],long unsigned int sz) {
std::cout << cp << std::endl;
std::string ss;
return ss;
};
std::string operator "" _x(const char cp[4],long unsigned int sz) {
std::cout << cp << std::endl;
std::string ss;
return ss;
};
std::string operator "" _y(const char16_t* cp, std::size_t sz) {
std::cout << cp << std::endl;
std::string ss;
return ss;
};
std::string operator "" _y(const wchar_t* cp, std::size_t sz) {
std::cout << cp << std::endl;
std::string ss;
return ss;
};
int main() {
1.2_w; // calls operator "" _w(1.2L)
u"one"_w; // calls operator "" _w(u"one", 3)
12_w; // calls operator "" _w("12")
"two" _w; // error: no applicable literal operator
L"ABC"_x;
L"A" "B" "C"_x; // OK: same as L"ABC"_w
//"P"_x "Q" "R"_y;// error: two different ud-suffixes
std::cout << msg <<std::endl;
return EXIT_SUCCESS;
}
編纂・実行結果(compile and go)
$ ../cpla.sh p23a
$ clang++ p23a.cpp -std=c++03 -Wall
p23a.cpp:9:22: error: expected a type
long double operator "" _w(long double ld) {
^
p23a.cpp:13:22: error: expected a type
std::string operator "" _w(const char16_t* cp, std::size_t sz) {
^
p23a.cpp:18:19: error: expected a type
unsigned operator "" _w(const char* cc) {
^
p23a.cpp:23:22: error: expected a type
std::string operator "" _x(const wchar_t* cp, std::size_t sz) {
^
p23a.cpp:30:6: error: invalid suffix '_w' on floating constant
1.2_w; // calls operator "" _w(1.2L)
^
p23a.cpp:31:3: error: use of undeclared identifier 'u'
u"one"_w; // calls operator "" _w(u"one", 3)
^
p23a.cpp:32:5: error: invalid suffix '_w' on integer constant
12_w; // calls operator "" _w("12")
^
p23a.cpp:35:7: error: expected ';' after expression
L"ABC"_x;
^
;
p23a.cpp:35:7: error: use of undeclared identifier '_x'
p23a.cpp:36:13: error: expected ';' after expression
L"A" "B" "C"_x; // OK: same as L"ABC"_w
^
;
p23a.cpp:36:13: error: use of undeclared identifier '_x'
p23a.cpp:35:1: warning: expression result unused [-Wunused-value]
L"ABC"_x;
^~~~~~
p23a.cpp:36:1: warning: expression result unused [-Wunused-value]
L"A" "B" "C"_x; // OK: same as L"ABC"_w
^~~~~~~~~~~~
2 warnings and 11 errors generated.
$ clang++ p23a.cpp -std=c++17 -Wall
long double ld=1.2
0x108772f6e
const char * cc=12
0x108772f00
0x108772f00
C++N4741 (4)5.13.8 User-defined literals [lex.ext]p23.cpp
$ clang++ p23a.cpp -std=c++2a -Wall
long double ld=1.2
0x100dcff6e
const char * cc=12
0x100dcff00
0x100dcff00
C++N4741 (4)5.13.8 User-defined literals [lex.ext]p23.cpp
$ g++-7 p23a.cpp -std=c++03 -Wall
p23a.cpp:30:3: error: invalid suffix "_w" on floating constant
1.2_w; // calls operator "" _w(1.2L)
^~~~~
p23a.cpp:32:3: error: invalid suffix "_w" on integer constant
12_w; // calls operator "" _w("12")
^~~~
p23a.cpp:9:13: warning: user-defined literals only available with -std=c++11 or -std=gnu++11
long double operator "" _w(long double ld) {
^~~~~~~~
p23a.cpp:9:13: warning: user-defined literals only available with -std=c++11 or -std=gnu++11
p23a.cpp:13:13: warning: user-defined literals only available with -std=c++11 or -std=gnu++11
std::string operator "" _w(const char16_t* cp, std::size_t sz) {
^~~~~~~~
p23a.cpp:13:13: warning: user-defined literals only available with -std=c++11 or -std=gnu++11
p23a.cpp:13:34: error: 'char16_t' does not name a type; did you mean 'wchar_t'?
std::string operator "" _w(const char16_t* cp, std::size_t sz) {
^~~~~~~~
wchar_t
p23a.cpp:13:62: error: 'std::__cxx11::string operator""_w(const int*, std::size_t)' has invalid argument list
std::string operator "" _w(const char16_t* cp, std::size_t sz) {
^
p23a.cpp:18:10: warning: user-defined literals only available with -std=c++11 or -std=gnu++11
unsigned operator "" _w(const char* cc) {
^~~~~~~~
p23a.cpp:18:10: warning: user-defined literals only available with -std=c++11 or -std=gnu++11
p23a.cpp:23:13: warning: user-defined literals only available with -std=c++11 or -std=gnu++11
std::string operator "" _x(const wchar_t* cp, std::size_t sz) {
^~~~~~~~
p23a.cpp:23:13: warning: user-defined literals only available with -std=c++11 or -std=gnu++11
p23a.cpp: In function 'int main()':
p23a.cpp:31:3: error: 'u' was not declared in this scope
u"one"_w; // calls operator "" _w(u"one", 3)
^
p23a.cpp:35:7: error: expected ';' before '_x'
L"ABC"_x;
^~
p23a.cpp:35:9: warning: statement has no effect [-Wunused-value]
L"ABC"_x;
^
p23a.cpp:36:13: error: expected ';' before '_x'
L"A" "B" "C"_x; // OK: same as L"ABC"_w
^~
p23a.cpp:36:15: warning: statement has no effect [-Wunused-value]
L"A" "B" "C"_x; // OK: same as L"ABC"_w
^
$ g++-7 p23a.cpp -std=c++17 -Wall
long double ld=1.2
0x10252b820
const char * cc=12
0x10252b828
0x10252b828
C++N4741 (4)5.13.8 User-defined literals [lex.ext]p23.cpp
###Visual Studio 2017
"cl *.cpp /EHsc /std:c++17"
>cl p23a.cpp /EHsc /std:c++17
Microsoft(R) C/C++ Optimizing Compiler Version 19.15.26726 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
p23a.cpp
p23a.cpp(20): warning C4311: '型キャスト': ポインターを 'const char *' から 'unsigned long' へ切り詰めます。
p23a.cpp(28): error C3684: 'operator ""_w': リテラル演算子の宣言に無効なパラメーター リストが含まれています
p23a.cpp(33): error C3684: 'operator ""_x': リテラル演算子の宣言に無効なパラメーター リストが含まれています
検討事項(agenda)
const char* からstringへの変換
error 収集
error: expected a type
error: no matching literal operator
error: invalid suffix
rror: differing user-defined suffixes
error: use of undeclared identifier
error: 'u' was not declared in this scope
error: expected ';' before
error: unable to find string literal operator
error C3688: リテラル サフィックス '_w' が無効です。
error C3680: ユーザー定義文字列リテラルを、一致しない
warning: expression result unused
warning: statement has no effect
warning: user-defined literals only available with -std=c++11 or -std=gnu++11
参考資料(reference)
docker gnu(gcc/g++) and llvm(clang/clang++)
https://qiita.com/drafts/059874ea39c4de64c0f7
C++N4606 Working Draft 2016, ISO/IEC 14882, C++ standardのコード断片をコンパイルするためにしていること
https://qiita.com/kaizen_nagoya/items/a8d7ee2f2e29e76c19c1
コンパイル用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
C++2003とC++2017でコンパイルエラーになるならない事例集
https://qiita.com/kaizen_nagoya/items/a13ea3823441c430edff
Qiitaに投稿するCのStyle例(暫定)
https://qiita.com/kaizen_nagoya/items/946df1528a6a1ef2bc0d
cpprefjpのdecltypeをコンパイル試験
https://qiita.com/kaizen_nagoya/items/090909af702f0d5d8a67
MISRA C++ 5-0-16
https://qiita.com/kaizen_nagoya/items/7df2d4e05db724752a74
C++ Templates Part1 BASICS Chapter 3. Class Templates 3.2 Use of Class Template Stack stack1test.cpp
https://qiita.com/kaizen_nagoya/items/cd5fc49106fad5a4e9ed
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
'wchar.h' file not found で困った clang++ macOS
https://qiita.com/kaizen_nagoya/items/de15cd46d657517fac11
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
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9
「C++完全理解ガイド」の同意できること上位10
https://qiita.com/kaizen_nagoya/items/aa5744e0c4a8618c7671
英語(0) 一覧
https://qiita.com/kaizen_nagoya/items/680e3f5cbf9430486c7d
Error一覧 error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8
プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945
Ethernet 記事一覧 Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794
Wireshark 一覧 wireshark(0)、Ethernet(48)
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0
線網(Wi-Fi)空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001
通信記事100
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7
名刺代わりの技術書10選
https://qiita.com/kaizen_nagoya/items/dc497dcaa5a304fc96c8
一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39
プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945
小川清最終講義、小川清最終講義(再)計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53
<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.
文書履歴(document history)
ver. 0.10 初稿 20180503
ver. 0.11 誤記訂正;もれ 20180503
ver. 0.20 visual studio 2017 追記 20180917
最後までおよみいただきありがとうございました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.