1

大きなコードがあり、関数の多くは型
<typename> const * const <varname>または型の引数を受け入れます。<typename> const * const * const <varname>


_CsCまたはのようなプリプロセッサの省略形を定義するのはひどく乱用されます_CsCsC

例えば
#define _CsC const * const#define _CsCsC const * const * const

the のCconst、 the のs*、 the の略は、これがd_の短縮形であることに注意してください。#define

最初の反応は「えっ?」かもしれないと思います。しかし、コードを数行以上読むと、それに順応し、タイプ/変数名をより速く確認できるようになるため、読みやすさが向上するようです...

最初のテストがコンパイルされ、二重ポインターがはるかに読みやすくなっているように思えます。

4

3 に答える 3

6

はい、それは恐ろしく虐待的です。typedef代わりにaを使用してください。

于 2012-09-11T21:53:28.957 に答える
4

テンプレートを使用します。

template <typename T> using CsCsC = const * const * const T;

使用法:

CsCsC<Foo> x = /* ... */;
于 2012-09-11T21:59:20.617 に答える
0

ルシアンの答えを説明するには:

使用する場合

typedef int * IntPtr;
typedef int ** IntPtrPtr;

そしてあなたは書く

const IntPtr x;  
const IntPtrPtr y;

それは等しい

const int * const x;
const int * const * const y;
于 2012-09-11T22:00:16.067 に答える