この質問の C++ バージョンがあることは知っていますが、テンプレートではなく標準の typedef を使用しています。
16 ビット wav ファイルで動作するプログラムを作成しました。各サンプルをショートにロードすることでこれを行います。次に、プログラムは short に対して算術演算を実行します。
現在、プログラムを修正して、16 ビットと 32 ビットの両方の wav を使用できるようにしています。条件付きの typedef を実行したいと考えていました。つまり、16 ビットの場合は short を、32 ビットの場合は int を使用します。しかし、変数の型が事前にわからない場合、コンパイラはおそらくコードをコンパイルしないことに気付きました。
そこで、次のコードをテストしようとしました。
#include <stdio.h>
int
main()
{
int i;
scanf("%i", &i);
typedef short test;
if(i == 1)
typedef short sample;
else
typedef int sample;
return 0;
}
そして、次のコンパイラエラーが発生しました:
dt.c: In function ‘main’:
dt.c:12:5: error: expected expression before ‘typedef’
dt.c:14:5: error: expected expression before ‘typedef’
これは、C のランタイム条件付き typedef が不可能であることを意味しますか?
[自由回答形式の質問:] そうでない場合、このようなことをどのように処理しますか?