a24_longdef
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* longdefの使い方
-(by [[K]], 2024.09.03)
** (0)
-[[acpp0>a24_acpp0]]は、longdefをサポートします。これがど...
** (1)
-C言語では、大きさnのintの配列を受け取って最大値を返す関...
int maxArray(int *a, int n)
{
int i, m = a[0];
for (i = 1; i < n; i++) {
if (m < a[i]) m = a[i];
}
return m;
}
-これはintでの比較ですが、charやshortやlongやfloatやdoubl...
-でもそれって面倒だしバグの温床です(単調な書き分けはミス...
#define maxArray(x) ACat(maxArray_, x)
#longdef longdef_maxArray(typ)
typ maxArray(typ)(typ *a, int n)
{
int i; typ m = a[0];
for (i = 1; i < n; i++) {
if (m < a[i]) m = a[i];
}
return m;
}
#endlongdef
#longuse longdef_maxArray(int) // ここに関数が作られる
#longuse longdef_maxArray(float) // ここに関数が作られる
int a[100] = { ... };
float b[100] = { ... };
void func()
{
printf("max=%d\n", maxArray(int)(a, 100));
printf("max=%f\n", maxArray(float)(b, 100));
}
-こんなふうに、#longuseするたびに関数が作られることになり...
-これはC++のテンプレートに近い機能を提供していることにな...
終了行:
* longdefの使い方
-(by [[K]], 2024.09.03)
** (0)
-[[acpp0>a24_acpp0]]は、longdefをサポートします。これがど...
** (1)
-C言語では、大きさnのintの配列を受け取って最大値を返す関...
int maxArray(int *a, int n)
{
int i, m = a[0];
for (i = 1; i < n; i++) {
if (m < a[i]) m = a[i];
}
return m;
}
-これはintでの比較ですが、charやshortやlongやfloatやdoubl...
-でもそれって面倒だしバグの温床です(単調な書き分けはミス...
#define maxArray(x) ACat(maxArray_, x)
#longdef longdef_maxArray(typ)
typ maxArray(typ)(typ *a, int n)
{
int i; typ m = a[0];
for (i = 1; i < n; i++) {
if (m < a[i]) m = a[i];
}
return m;
}
#endlongdef
#longuse longdef_maxArray(int) // ここに関数が作られる
#longuse longdef_maxArray(float) // ここに関数が作られる
int a[100] = { ... };
float b[100] = { ... };
void func()
{
printf("max=%d\n", maxArray(int)(a, 100));
printf("max=%f\n", maxArray(float)(b, 100));
}
-こんなふうに、#longuseするたびに関数が作られることになり...
-これはC++のテンプレートに近い機能を提供していることにな...
ページ名: