0

これは、IOCTL スイッチ ケースの一部です。次のエラーが表示されますか?

エラー: 'data' のストレージ サイズが不明です エラー: 'mesg' が宣言されていません (この関数で最初に使用)

case PASS_STRUCT:

        struct mesg{
            int pIDs[SIZE];
            int niceVal;
        };

        struct mesg data;

        ret = copy_from_user(&data, arg, sizeof(data));
        if(ret < 0){
            printk("PASS_STRUCT\n");
            return -1;  
        }

        printk("Message PASS_STRUCT : %d\n",data.niceVal);
        break;

SIZE 値は、mesg を作成する前に設定されます。

4

1 に答える 1

2
struct mesg{
    int pIDs[SIZE];
    int niceVal;
};

SIZE 値は、mesg を作成する前に設定されます。

CSIZEでは、そのように使用するには、真のコンパイル時定数である必要があります。何かのようなもの:

#define SIZE 10

また、構造体宣言を の外側に移動する必要がありswitchます。

于 2012-08-26T15:25:04.387 に答える