Closed r-kurose closed 3 years ago
C++の予約後でアンダースコアが関係するものの規約
上記について、1. について以下のスクリプトでチェックし修正する。
#!/bin/bash
grep "__" -r . | \
egrep "\.(cpp|h):" | \
egrep -v "(doil|tests)" | \
egrep -v "(__QNX|__RTP|__NT|__WIN32|__GNU|__gnu|__clang__|__linux|__declspec|__powerpc|__arm|__pragma|__attribute|_____)" | \
egrep -v "(__widget__|__type__|__constraints__)" | \
egrep -v "(__rosidl)" | \
egrep -v "(__restrict)" | \
egrep -v "(__this())"
また、2. については、以下のスクリプトでチェックし変更した。
#!/bin/bash
find . -type f -name '*.h' -exec grep -H " _[A-Z]" {} \; \
-or -name '*.cpp' -exec grep -H " _[A-Z]" {} \; | \
egrep -v '(Macho\.h|Macho\.cpp)' |
egrep -v '(_WIN32|_MSC_VER|_MAX_PATH)' | \
egrep -v '(_GNU_SOURCE|_TRUNCATE)' | \
egrep -v '(_CORBA_Unbounded_Sequence)'
ただし、Machi.h|cpp には _[大文字] のクラス名が多数あり、置き換えも検討したが、今後のMachoのアップデートも考慮し変更しないことしたので、スクリプトでは除いてある。
#!/bin/bash
find . -type f -name '*.h' -exec grep -H " _[A-Z]" {} \; \
-or -name '*.cpp' -exec grep -H " _[A-Z]" {} \; | \
egrep -v '(Macho\.h|Macho\.cpp)' |
egrep -v '(_WIN32|_MSC_VER|_MAX_PATH)' | \
egrep -v '(_GNU_SOURCE|_TRUNCATE)' | \
egrep -v '(_CORBA_Unbounded_Sequence)'
色々マッチするが、グローバル変数はなさそう。 追加で、変更が簡単そうなローカル変数を変更 (argc -> argc 等)
Describe the bug C++ 予約語を使っている。 優先度低です。
To Reproduce 以下をターミナルで実行する。
__ の場合
_大文字 の場合
注1:
__
が名前のどこかに使われているという部分だけを見ています。_
から始まるワードなどは未チェック。 注2: grep で見ているので、同じ行に除外ワードが入っている場合は検出出来ていません。Reproducibility none
Expected behavior C++ 規格に違反しないこと
Screenshots or Logs
__ の場合
_大文字 の場合
Environment
Additional context
#define RDTSC
はコメント部分だが、不要なので消すべき。 uint32 などは C11 で定義されているものを使うべき。