c - C 中的运行时条件 typedef

标签 c types typedef

我知道这个问题有一个 C++ 版本,但是我使用的是标准 typedef 而不是模板。

我编写了一个处理 16 位 wav 文件的程序。它通过将每个样本加载到短片中来做到这一点。然后程序对短路进行算术运算。

我现在正在修改程序,以便它可以同时处理 16 位和 32 位 wavs。我希望做一个条件类型定义,即使用 short 表示 16 位,使用 int 表示 32 位。但后来我意识到,如果编译器事先不知道变量的类型,它可能不会编译代码。

所以我尝试测试了以下代码:

#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 是一个编译器特性,您不能在运行时应用它。

关于c - C 中的运行时条件 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11541226/

相关文章:

c - Typedef 和 printf 格式说明符

c - 如何找到哪个线程被卡住了

sql - 在 SQL Server 中存储 IP 地址最合适的数据类型是什么?

HashSet 或其他实现的 Java 变量类型集合?

python - Python 中的 "Type comparisons"

c++ - 错误 C2823 : a typedef template is illegal - function pointer

c - typedef 结构、循环依赖、前向定义

c - GET 请求 header 字段和值是否区分大小写?

c - 用于减少的 OpenMP 并行提供了错误的结果

c - GTK 入口输入信号