トップページ > 記事閲覧
文字数や配列の要素数がintの理由
名前:was-blue.0793 日時: 2019/06/14 23:03

DXライブラリの一部の関数で、配列の長さや文字列長を引数として受け取る関数がありますが、 この関数を64ビットアプリかつ、stringのlength関数やvectorのsize関数で戻る値をそのまま使うと、型のバイト数の違いで「データが失われる」という警告が出てしまいます。 64ビットアプリだとsize_t型がunsigned long long型になることに起因していますが、配列の長さや文字列長を引数として受け取る時、その型はintよりもsize_tの方が適切であると思います。 配列の長さや文字列長を受け取る引数をint型にしていることは何らかの理由があってそうしているのでしょうか?
メンテ

Page: 1 |

Re: 文字数や配列の要素数がintの理由 ( No.1 )
名前:CLS4 日時:2019/06/14 23:30

仕様に関しては先日も何かの質問に対する回答がありましたが、「初期開発者さんがそうしていたから」ではないでしょうか。 2001年といえばDirectX自体が32bit版しか無かったでしょうし。
メンテ
Re: 文字数や配列の要素数がintの理由 ( No.2 )
名前:was-blue.0793 日時:2019/06/15 01:37

>>CLS4さん 確かにbool型でよさそうな関数の戻り値がint型である理由と同様に「初期開発者さんがそうしていた」説はありそうですね…… 今から変更しようと思っても、対象の関数は決して少なくないので変更するコストも大きいでしょうし、仕様と割り切るべきかもしれません。(64ビット変数→32ビット変数になるので警告は出てしまいますが……)
メンテ
Re: 文字数や配列の要素数がintの理由 ( No.3 )
名前:gmo 日時:2019/06/15 18:05

管理人さんが過去に掲示板で言ってたことを思い出すと、 初期開発者云々とも関係するのですが「C言語習いたてでも使えるゲームライブラリ」としての開発方針があるようです。 プログラミング初心者が基礎的なC言語を学習した直後は、「学習していない型」に出会うと困惑したり、 ちゃんと使いこなせなかったりするので、そういったことを極力排し、本人の手持ちの知識でとりあえず構築できるように、 サポートするライブラリという方向で作られてるという内容だったと記憶してます。 bool型やstring型、STLなどはC++を意識して知るもの、という区切りになってしまうかもですね。 was-blue.0793さんが困ってる事象はどう解決すればいいのかは自分はわかりませんが、 理由としては(仕様変更のコスト以外だと)こういうことだと思います。
メンテ
Re: 文字数や配列の要素数がintの理由 ( No.4 )
名前:管理人 日時:2019/06/16 03:11

『配列の長さや文字列長を受け取る引数をint型にしている理由』は CLS4さん、gmoさんのご返信の内容の通りとなります > CLS4さん、gmoさん ご返答いただきありがとうございます m(_ _)m
メンテ

Page: 1 |

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

   クッキー保存