Определение 2D-массива внутри структуры в спецификации RPC не работает - PullRequest
1 голос
/ 21 марта 2019

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

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 голосов
/ 21 марта 2019

В конце rpcgen вам нужен массив строк, а не двумерный массив символов.Сначала вы должны ввести тип аргумента

typedef string arg<10>;

, а затем создать массив этих аргументов:

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

аналогично lsresult:

typedef string filename<50>;

struct lsresult
{
    filename arr[256];
};

Тодолжно работать

...