Определение 2D массива внутри структуры в спецификации RPC не работает

Обновить

April 2019

Просмотры

15 раз

1

Я пытаюсь реализует с помощью RPC NFS. Теперь мой файл спецификации выглядит примерно так: (Это очень базовая версия этого :))

struct input
{
    char command[20]; 
    char arg[10][10];   
    int numargs;
};

struct lsresult
{
    char arr[50][256];
};

program NFSPROG
{
    version NFSVERSION
    {
        lsresult ls(input) = 1;
        int cd(input) = 2;
        int mkdir(input) = 3;
        int mkfile(input) = 4;
    } = 1;
} = 0x21111111;

Когда я пытаюсь скомпилировать это с Spec.xпомощью rpcgen, я получаю сообщение об ошибке , как это:

 char arg[10][10];
^^^^^^^^^^^^^^
Spec.x, line 4: expected ';'

Что может быть причиной этого? Не могу ли я объявить 2D массив внутри структуры в спецификации RPC ? (То же ошибка появилась , когда я попытался объявить переменные таким образом: int a,b,cв структурах!)

1 ответы

3

In termini of rpcgen, you need an array of strings, not a 2d array of chars. First, you have to typedef an argument type

typedef string arg<10>;

and then make an array of those arguments:

struct input
{
    string command<20>;
    arg args[10];
    int numargs;
};

similar for lsresult:

typedef string filename<50>;

struct lsresult
{
    filename arr[256];
};

That should work

Ctx