我知道这个问题有一个C++版本,但是我使用的是标准的typedef而不是模板.
我编写了一个适用于16位wav文件的程序.它通过将每个样品加载到一个短片中来实现.然后程序在短路上执行算术运算.
我现在正在修改程序,因此可以同时使用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;
}
Run Code Online (Sandbox Code Playgroud)
并得到以下编译器错误:
dt.c: In function ‘main’:
dt.c:12:5: error: expected expression before ‘typedef’
dt.c:14:5: error: expected expression before ‘typedef’
Run Code Online (Sandbox Code Playgroud)
这是否意味着C中的运行时条件typedef不可能?
[开放式问题:]如果没有,你们将如何处理这样的事情?