2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2, 3  След.
 
 Подскажите по С, что означает запись
Сообщение09.01.2013, 20:54 
Что означает запись
Используется синтаксис C
aa = bb->get(bb, bb->ccc);

где aa - int, bb - structure, get - элемент вида intptr_t, *ccc - void входит в структуру bb

Спасибо

 
 
 
 Re: Подскажите по С, что означает запись
Сообщение09.01.2013, 21:02 
И что, оно компилируется? bb должен быть указателем на переменную классового типа, иначе никак.

 
 
 
 Re: Подскажите по С, что означает запись
Сообщение09.01.2013, 21:17 
В main.h
Используется синтаксис C
typedef struct xxx bb;
struct xxx {
          int                       *ppp;
          struct qqq                *qqq;
          int                        len;
          char                      *name;
          void                      *ccc;
              ......
          intptr_t                   get;
}
 
как-то так

 
 
 
 Re: Подскажите по С, что означает запись
Сообщение09.01.2013, 21:33 
По-моему это, извините, чушь. Либо у вас есть дикие макросы, либо вы что-то исказили при передаче. Скорее всего, последнее: uint и string — "левые" типы.

 
 
 
 Re: Подскажите по С, что означает запись
Сообщение09.01.2013, 21:41 
да чушь там есть, её убрал. Дело в том, что там прямых типов вообще нету, только переопределённые int_ts, str_kp, поэтому пытался передать их, но неточно. Интерес представляют лишь типы ccc и get, входящие в bb - их передал точно

 
 
 
 Re: Подскажите по С, что означает запись
Сообщение09.01.2013, 21:47 
Ну, ответ простой — это бессмыслица. Оно не компилируется, только что проверил.

-- Ср янв 09, 2013 22:53:30 --

Вообще, я понимаю, вы резали по живому. Наведите в вашей IDE курсор мыши на bb слева от -> — по идее, она должен высветить настоящее объявление bb. Потому что слева от -> должно стоять выражение, а никак не имя типа.

 
 
 
 Re: Подскажите по С, что означает запись
Сообщение09.01.2013, 21:54 
ЗамечТательно! :x Дело в том, что других ссылок на bb нету, а вся конструкция модульная. я перешарил все модули, но никаких bb не нашёл. Ну ладно. Хотя бы тогда скажите что означает
Используется синтаксис C
typedef struct xxx bb;

1) оба bb и xxx являются структурами одного сходного типа;
2) bb является структурой вида xxx;
или
3) xxx является структурой вида bb
Или что-то ещё?

-- Ср янв 09, 2013 22:56:55 --

Joker_vD в сообщении #669478 писал(а):
Наведите в вашей IDE курсор мыши на bb слева от
нереально. Модулей много. я открываю по одному. Сейчас навёл, ничего не высвечивает
Visual Studio 2010

 
 
 
 Re: Подскажите по С, что означает запись
Сообщение09.01.2013, 22:00 
xxx — это ярлычок для структурного типа. Согласно синтаксису Си, переменные с таким типом объявляются как struct xxx variable_name. Поскольку писать struct всем влом, вводят для struct xxx новую кличку, bb. Теперь можно писать bb variable_name. Обычно, правда, пишут typedef struct xxx bb, *pbb — чтобы еще и указатель на эту структуру было легче определять (bb *pointer_name кажется, не работает).

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

 
 
 
 Re: Подскажите по С, что означает запись
Сообщение09.01.2013, 22:03 
Joker_vD в сообщении #669487 писал(а):
Теперь можно писать bb variable_name.
и тогда это будет переменная типа xxx со всеми свойствами включая get и ссс? я почти угадал.

я тоже увидел что это какая-то чушь, но работает, поэтому и запостил тему. Спасибо за помощь

 
 
 
 Re: Подскажите по С, что означает запись
Сообщение09.01.2013, 22:05 
temp03
Оно НЕ ДОЛЖНО работать. bb — это имя типа, а никак не переменной. Открывайте весь проект, щелкайте по bb правой кнопкой и жмите "Go to declaration"/"Перейти к объявлению".

-- Ср янв 09, 2013 23:12:39 --

Да более того, get(...) — это тоже бессмысленно, если у вас действительно стоит определение intptr_t get;

У вас происходит что-то нездоровое. Я рекомендую все же разобраться досконально. Грепайте.

 
 
 
 Re: Подскажите по С, что означает запись
Сообщение09.01.2013, 22:16 
улетела в личку

 
 
 
 Re: Подскажите по С, что означает запись
Сообщение09.01.2013, 22:42 
Идиотский фокус:

Используется синтаксис C
#include <malloc.h>

typedef struct xxx bb;
typedef int(*pt)(bb*, void*);

struct xxx {
  pt      get;
  void   *ccc;
};

int main() {
  bb *bb;
  return bb->get(bb, bb->ccc);
}


Или еще короче:

Используется синтаксис C
typedef int xint;

int main() {
  xint xint = 42;
  return xint;
}

 
 
 
 Re: Подскажите по С, что означает запись
Сообщение09.01.2013, 22:56 
Joker_vD в сообщении #669512 писал(а):
Идиотский фокус:

Используется синтаксис C
#include <malloc.h>

typedef struct xxx bb;
typedef int(*pt)(bb*, void*);

struct xxx {
  pt      get;
  void   *ccc;
};

int main() {
  bb *bb;
  return bb->get(bb, bb->ccc);
}
Замечательный фокус! А в чём прикол фокуса? Что есть get? Что есть get(bb, bb->ccc)? Ну и главный вопрос! что есть bb->get(bb, bb->ccc)?

Ваш фокус в точности передаёт смысл того что нужно. Так в студию!

-- Ср янв 09, 2013 23:59:42 --

да и вот эта запись
Используется синтаксис C
typedef int(*pt)(bb*, void*);
мне была бы очень интересна

 
 
 
 Re: Подскажите по С, что означает запись
Сообщение09.01.2013, 23:03 
temp03 в сообщении #669516 писал(а):
Что есть get?

Поле структуры xxx, имеющее тип "указатель на функцию, принимающую указатель на структуру xxx и указатель в никуда, и возвращающая int".

temp03 в сообщении #669516 писал(а):
Что есть get(bb, bb->ccc)?

Вызов функции, на которую указывает get.

temp03 в сообщении #669516 писал(а):
что есть bb->get(bb, bb->ccc)?

Вызов функции, на которую указывает поле get, принадлежащее переменной bb. С параметрами такими-то.

-- Чт янв 10, 2013 00:04:22 --

temp03 в сообщении #669516 писал(а):
typedef int(*pt)(bb*, void*);

pt — это тип-указатель на функцию, которая принимает на вход указатель на переменную типа bb и указатель в никуда, и возвращает int.

 
 
 
 Re: Подскажите по С, что означает запись
Сообщение09.01.2013, 23:16 
Joker_vD в сообщении #669518 писал(а):
Вызов функции, на которую указывает поле get, принадлежащее переменной bb. С параметрами такими-то.
ясно. Вопрос всё же остаётся в декларации этого get.
Joker_vD в сообщении #669518 писал(а):
pt — это тип-указатель на функцию, которая принимает на вход указатель на переменную типа bb и указатель в никуда, и возвращает int.
т.е. без него вызова функции не будет?

-- Чт янв 10, 2013 00:21:05 --

круто! мла мла мла. Спасибо! Это же и есть указатель, которого мы искали. Т.е. получается вопрос закрыт? Не нужно искать get?
_______________

выполнил поиск по pt. К сожалению тоже ничего. Странно. Но раз get - это pt, а pt тоже нигде нету, то что-то же где-то должно быть ????

 
 
 [ Сообщений: 32 ]  На страницу 1, 2, 3  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group