Передача структуры в качестве аргумента в C - PullRequest
1 голос
/ 04 ноября 2010

У меня возникла эта проблема, и я не знаю причину

У меня такая структура

typedef struct 
{

    Int32   frameID;
    Int32   slotIndx;
    Int32   symNumber;

}   recControlList;


    recControlList  *recControlListPtr;

Типы данных - это typedefs.

Функция вызывающего абонента:

Fun( recControlListPtr);

Объявление Fun

Fun (recControlList *recControlListPtr);


syntax error : missing ')' before '*'

Как передать структуру в виде указателя на функцию?Пожалуйста, помогите

Ответы [ 4 ]

3 голосов
/ 04 ноября 2010

Вам нужно иметь объявление struct и typedef перед объявлением Fun ().

Если все это в одном файле, то они просто в неправильном порядке.Если структура объявлена ​​в другом файле, вы должны #include, что перед прототипом функции.

EDIT : Итак, ваш второй вопрос ...

2 голосов
/ 04 ноября 2010

В объявлении отсутствует тип возвращаемого значения, например:

void Fun (recControlList *recControlListPtr);

(правка: Как указывалось другими, тип возвращаемого значения в объявлениях функции является необязательным в некоторых вариантах C, но это хороший стиль иэто может дать вам лучшее сообщение об ошибке из-за неоднозначности).

0 голосов
/ 19 июля 2013

Вы можете сослаться на http://fresh2refresh.com/c/c-passing-struct-to-function/ веб-сайт.Очень простой пример программы приведен для прохождения структур по адресам.Я надеюсь, что это будет полезно для вас.

0 голосов
/ 04 ноября 2010

Вы просто передаете его, например, в

char* xy = "HelloWorld";
if(!strcmp(xy, "HelloWorld"))

Вы также можете сделать

struct xy ;
functionName(&xy);

Вы указали возвращаемое значение для своей функции?

...