トップページ > 記事閲覧
予約語の怪?
名前:was-blue.0793 日時: 2019/04/29 21:55

DxLib.hのソースコードを見ていると、インクルードガードに「__DXLIB」など、アンダーバー2連続のdefine文を使用しているのを見かけました。 C++の規格によると、変数名などに「1文字目にアンダーバーの直後に大文字」「アンダーバー2連続」を使うと未定義動作になるようです。 今後C++の標準ライブラリで「__DXLIB」が使われることはほぼあり得ない……とは思いますが、インクルードガードの文字列は別の文字列に変えた方がよいかと思われます。 以上、よろしくお願いします。
メンテ

Page: 1 |

Re: 予約語の怪? ( No.1 )
名前:ギウ 日時:2019/04/30 07:46

(一つの意見として) 標準ライブラリやコンパイラ等が今後使うかもしれないっていう話だと思うのですが(?)、 今から変えるといろいろ問題出る気がしますので、むしろ __DXLIB を広めて、標準ライブラリを作ってる人に使わせないのが良いかも。 「多くの人が使ってる=標準」ということで。
メンテ
Re: 予約語の怪? ( No.2 )
名前:管理人 日時:2019/05/01 02:15

ご指摘ありがとうございます アンダーバー2連続を使用しないようにしてみましたので、よろしければお試しください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.2 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.zip // Android版 ARM用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM64.zip // Android版 ARM64用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x86.zip // Android版 x86用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x64.zip // Android版 x64用 https://dxlib.xsrv.jp/temp/DxLibiOSTest.zip // iOS版 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) > ギウさん ご意見ありがとうございます すみません、お書き込みを拝見したときには書き換えが完了していました m(_ _;m 問題が発生する可能性はありますが、何かあったらすぐに対応する形で…
メンテ
Re: 予約語の怪? ( No.3 )
名前:ギウ 日時:2019/05/01 08:14

>管理人様 あ、いえいえ了解です。
メンテ
Re: 予約語の怪? ( No.4 )
名前:was-blue.0793 日時:2019/05/04 20:44

>>管理人さん 確認しました。お早いご対応ありがとうございます。 >>ギウさん 厳密に言うと「1文字目にアンダーバーの直後に大文字」と「アンダーバー2連続」を使う文字列は全て規格上C++の予約語として設定されています。(エラーにならないだけでintとかdoubleとかみたいな予約語と同じ扱い) そのため、ほぼありえないとはいえ標準ライブラリの開発者が「__DXLIB」を使わない可能性はゼロではなく、また規格として存在している以上それを止めることもできないと思います。(規格に反している側が悪いという考え) 従来の「__DXLIB」を使っていた場合、未定義動作になりますし今後標準ライブラリ開発者に「__DXLIB」を使われた場合に問題が発生してしまうと考え、提案させていただいた次第です。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存