我有一個程序,它應該將元素數量調整爲與其工作的設備數量。我有一個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;
有沒有簡單的方法來處理它?
哪個變量需要是const?你會得到什麼錯誤? – 4386427 2015-02-10 07:31:39
「error C2057:expected constant expression」in line:ASIOBufferInfo bufferInfos [NUM_CHANNEL_IN + NUM_CHANNEL_OUT];例如。這些int值從文件中讀取。我想根據在程序啓動時寫入文件的值設置buferInfos []數組的大小(我不需要稍後改變它)。 – F1sher 2015-02-10 07:35:37
順便說一句,這是C不是C++。 – emlai 2015-02-10 07:48:59