1

.wavファイルの操作... * ptr_8および *ptr_16 - サンプルの配列へのポインター。

ヘッダーのデータに応じてこれらのポインターを宣言するようにプログラムを作成したい (if 8 bitsPerSample ---> *ptr_8 を宣言する...)

if ( hdr.S1.BitsPerSample == 8 )        // Declaring array for samples. Depending
                                        // on header's data (8 or 16 bits).
    unsigned char *ptr_8;
else
    if ( hdr.S1.BitsPerSample == 16 )
        unsigned short *ptr_16;

問題は、次のように書いていることです。

error: expected expression before 'unsigned'

このような動作の理由はわかりませんが、両方の行(どこで*ptr_8とを宣言する必要があります)に。*ptr_16何が悪いのか教えてください。


アップデート:

結局のところ、宣言はコンパイル時の概念です(以下の受け入れられた回答を参照)。

変数はコンパイル中に宣言されているため、マシンのリソースを一度取得すると(アプリケーションをコンパイルしたときに)、それらはすべてそこで宣言されています。これは、プログラムを最適化しようとする最悪の方法の 1 つだったことを意味します...

4

2 に答える 2

1

とにかく両方のポインターを宣言してから、使用したいポインターだけを設定できないのはなぜですか? とにかく、問題はスコープに関係しています。if ブロック内で変数を宣言する場合は、中かっこが必要であり、変数はその中かっこブロック内でのみ有効です。

于 2013-05-15T15:10:32.180 に答える