2017-06-20 4 views
0

から別の宣言にマクロを避け、通過ヘッダ内のバッファの最大サイズを提供するのが良いでしょうこの(プリプロセッサを混乱させることに加えて)最大サイズは実際に実装固有であり、変更される可能性があります。他のコードが古いヘッダーに依存するが、新しい実装やそれ以外の方法では、それが壊れる可能性があります。したがって、私はより抽象的な方法を考えて、関数を宣言して、ヘッダ内の対応する実装ファイルに実装を提供することで考えました。特に値が一定のままであり、必要な場合には他のコードファイルのどこかに他の場所に格納する必要があるため、ランタイムについてはあまり気にしません。私は考え出したデータバッファのためのいくつかのコードを書く実装

私の実際の質問は次のとおりです。いずれの方法についても、考慮すべき賛否両論はありますか?同じ結果を達成するための3つ目の方法はありますか?

+1

'SIZE_MAX'は何ですか?あなたはそれをどこで定義しますか? – RoiHatam

+0

@RoiHatam 'SIZE_MAX'は' size_t'に格納できる最大の値です。これは "stdint.h"で定義されています。 – Shakatir

+0

**再コンパイルなしで** 'SIZE_MAX' **がどのように変わると思いますか? –

答えて

1

最初の方法は行く方法です。その実装に依存するものは、新しい実装によって壊れるような方法で記述されていますが、最良の方法を使用するかどうかを決める上で "矛盾"とみなされるべきではありません。

第2のサイズは、コンパイル時にサイズが不明な場合にのみ使用してください。

0

あなたが使用しているプラ​​ットフォームや製品に応じてSIZE_MAX変化を心配している場合、あなたは常にこのような何かを行うことができます。

#ifdef RASPBERRY_PI 
#define SIZE_MAX 1024 
#endif 

#ifdef MY_WINDOWS_PC 
#define SIZE_MAX 2048 
#endif 

#define MAXIMUM_BUFFER_SIZE (SIZE_MAX - 1) 
関連する問題