GCCでNULで終了する文字列をグローバルに無効にすることは可能ですか?
私は独自の文字列ライブラリを使用していますが、構造体の内部に適切な長さがすでに格納されているため、最後のNUL文字はまったく必要ありません。
ただし、10個の文字列を追加したい場合、これは10バイトがスタックに不必要に割り当てられることを意味します。幅の広い文字列の場合はさらに悪化します。x86の場合、40バイトが無駄になります。x86_64の場合、80バイト!
これらのスタック割り当て文字列を構造体に追加するマクロを定義しました。
#define AppendString(ppDest, pSource) \
AppendSubString(ppDest, (*ppDest)->len + 1, pSource, 0, sizeof(pSource) - 1)
使用sizeof(...) - 1
は非常にうまく機能しますが、数バイトを節約するためにNUL終了を取り除くことができるかどうか疑問に思っていますか?