※ ChatGPTを利用し、要約された質問です(原文:std::stringを別のコンパイラで使うには?)
std::stringを別のコンパイラで使うには?
このQ&Aのポイント
std::stringを別のコンパイラで使う場合の解決策とは?
セキュリティ上の問題を回避しながらstd::stringを外部に公開する方法
std::stringに関連する自作ソリューションの考え方とコードの最適化
std::stringを別のコンパイラで使うには?
例えばあるコンパイラでコンパイルしたコードの中に以下のような関数があったとします。
void func( std::string& str );
この関数をプラグインとか、DLLとか、外部に公開したいのです。
しかし、std::stringの実装方法はコンパイラ付属のライブラリに依存するため、プラグインを書く人が別のライブラリを使用した場合、致命的なエラーが発生する可能性があると思います。
(1)できればライブラリを指定したくない
(2)std::stringを自作するような再発明は避けたい
(3)全てをchar*(wchar_t*)で構成するようなことは避けたい
この3つの要件を満たす解はあるのでしょうか?
std::stringに関連するソースだけ(再配布可能なら)配布するとか?
しかし、配布していいとは思えませんので、条件2をあきらめて自作しようかなと考えています。もしくは、条件3をあきらめようかと考えています。
<質問1>上記条件を満たす解はありますか?
<質問2>自作する場合、どのようにコードを少なくしますか?
<質問3>そもそもこのような事態に陥ってしまった時点で設計に問題があるのでしょうか?同様の問題に直面した場合、どのように対処されましたか?
以上 よろしくお願いします
お礼
回答ありがとうございます。 >> 条件2をあきらめて自作しようかなと考えています。 >自作したとしても、コンパイラに依存することは避けられません。 すいません、よくわからないのですが、何らかの問題が起こるのでしょうか?一般的なコンパイラで通るなら許容したい気持ちはあるのですが。(もちろんテンプレートのままにするつもりはありませんし、仮想関数や例外、継承も使用しないとします。) 唯一気になるのは、参照でstd::stringを渡しているということなのです。具体的な例が思い浮かびませんが、知識不足でいけると確信できない。(もっとも、ポインタに変更してもいいですが。) >> もしくは、条件3をあきらめようかと考えています。 > *以下略* これは確かにそうだと思います。