Проблемы с преобразованием кода C ++ в C - указание на начало массива - PullRequest
0 голосов
/ 24 декабря 2011

Мне нужно скомпилировать некоторый код, первоначально написанный на C ++ для C для конкретной платформы.У меня проблема со строкой ниже, которая пытается установить p для начала выходных данных, как показано ниже.

Я получаю ошибку ошибки компилятора C2143: синтаксическая ошибка: отсутствует ';'перед 'type'

Как мне нужно изменить это для компиляции в C?

size_t example_function(unsigned char** outputdata, size_t *output_length)
{
   *outputdata = (unsigned char*)malloc(20);

   unsigned char* p = *outputdata;

   return 0;
}

1 Ответ

4 голосов
/ 24 декабря 2011

Я предполагаю, что вы используете компилятор Visual C ++ для компиляции этого. Этот компилятор поддерживает только C90 (он же C89), поэтому вам нужно поместить объявления перед любыми другими операторами в любом блоке.

size_t example_function(unsigned char** outputdata, size_t *output_length)
{
    unsigned char* p;

    *outputdata = malloc(20);

    p = *outputdata;

    return 0;
}

Я предполагаю, что вы (прямо или косвенно) включили <stdlib.h> для определений size_t и malloc, иначе у вас, вероятно, будет другая ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...