c-从文件中读取数组大小



我有一个程序,它应该根据使用的设备数量调整元素数量。我有一个config*.txt文件,其中包含一些参数,允许不懂编程语言的用户根据自己的需要调整程序。

例如,到目前为止,一切都是这样处理的。在头文件中:

enum 
{
    // number of input and output channels
    kMaxInputChannels = 8,
    kMaxOutputChannels = 8
};
typedef struct AudioDriverSettings
{
   (...)
   ASIOBufferInfo bufferInfos[kMaxInputChannels + kMaxOutputChannels]; 
   ASIOChannelInfo channelInfos[kMaxInputChannels + kMaxOutputChannels];
   (...)
} AudioDriverSettings;
typedef struct AudioFileConfig
{
   (...)
   int inputId[kMaxInputChannels];
   int outputId[kMaxOutputChannels];
   bool shouldMixInput[kMaxInputChannels];
   bool shouldRecordChannel[kMaxInputChannels];
   (...)
} AudioFileConfig;

在*.txt中有变量:

NUM_CHANNELS_IN             8
NUM_CHANNELS_OUT            8

在程序启动时,我正在读取并写入变量:

if (!strcmp(tmp_str, "NUM_CHANNELS_IN")) 
        NUM_CHANNELS_IN = atoi(token);
if (!strcmp(tmp_str, "NUM_CHANNELS_OUT")) 
        NUM_CHANNELS_OUT = atoi(token);

我想得到如下效果,但变量需要常量,所以它不起作用。

int NUM_CHANNELS_IN;
int NUM_CHANNELS_OUT;
typedef struct AudioDriverSettings
{
   (...)
   ASIOBufferInfo bufferInfos[NUM_CHANNELS_IN + NUM_CHANNELS_OUT]; 
   ASIOChannelInfo channelInfos[NUM_CHANNELS_IN + NUM_CHANNELS_OUT];
   (...)
} AudioDriverSettings;
typedef struct AudioFileConfig
{
   (...)
   int inputId[NUM_CHANNELS_IN];
   int outputId[NUM_CHANNELS_OUT];
   bool shouldMixInput[NUM_CHANNELS_IN];
   bool shouldRecordChannel[NUM_CHANNELS_IN];
   (...)
} AudioFileConfig;

有什么简单的方法可以处理它吗?

如果这是C,则需要动态分配数组:

ASIOBufferInfo *bufferInfos;
...
bufferInfos = malloc(sizeof(ASIOBufferInfo) * (NUM_CHANNELS_IN + NUM_CHANNELS_OUT));

如果这是C++,请使用std::vector类:

std::vector<ASIOBufferInfo> bufferInfos;
...
bufferInfos.reserve(NUM_CHANNELS_IN + NUM_CHANNELS_OUT);

然后CCD_ 2到CCD_。或者:

std::vector<ASIOBufferInfo> bufferInfos(NUM_CHANNELS_IN + NUM_CHANNELS_OUT);

然后只访问像CCD_ 4这样的元素。

我相信您正在寻找的答案是使用指针。通过从更改:

int NUM_CHANNELS_IN;int NUM_CHANNELS_OUT;

收件人:int*NUM_CHANNELS_IN;int*NUM_CHANNELS_OUT;

你将能够将变量从函数中传递出去。我不能说你需要对代码进行的确切更改,你可能需要复习指针的正确语法。但我相信,如果我正确解释了你的问题,这是实现你想要做的事情的最简单方法。

希望这能有所帮助!

相关内容

  • 没有找到相关文章

最新更新