Size: a a a

2021 March 06

СА

Самуил Германович Ар... in Catethysis
короч у меня есть функция которая возвращает (должна возвращать) массив
вот функция котрая возвращает массив:
uint8_t * BufRingGet(void) {
 uint8_t  dataret[BUF_SIZE];
 memcpy(&dataret, &struct_ringbuf[in_ptr_s].data, BUF_SIZE);
 in_ptr_s++;
 in_full = 0;
 if (in_ptr_s == RINGBUFSIZE) { in_ptr_s = 0; }
 return &dataret;
}
причём я не уверен в последнем  return &dataret; или return dataret;
так вот
этот BufRingGet будет в другой функции параметром
примерно так:
Log_array(LL_DEBUG, BufRingGet(), BUF_SIZE);
сам Log_array выглядит так:


void Log_array(int level, uint8_t _arr[], int size) {
 if (level <= loglevel) {
   if (logAllowConsole) {
     utime = time(NULL);
     t = localtime(&utime);
     unsigned int sysuid = (unsigned int)syscall(SYS_gettid);
     FILE* logfile;
     logfile = stdout;

     fprintf(logfile, "%04u.%02u.%02u %02u:%02u:%02u [%u] %s \n", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec, sysuid, LOG_CLASSES[level]);
     fprintf(logfile, "array of %u bytes: ", size);
     for (uint8_t i = 0; i < size; i++) {
         if ((i % DBG_BYTES_IN_COL) == 0) { fprintf(logfile, "  "); }
         if ((i % DBG_BYTES_IN_STRING) == 0) { fprintf(logfile, "\n"); }
       fprintf(logfile, "%02X ", _arr[i]);
     }
     fprintf(logfile, "\n");
     fflush(logfile);

   }
источник

TT

Troyanski Tonto in Catethysis
Самуил Германович Арканум
господа кто тут в си шарит?
Ты что, повсюду?
источник

TT

Troyanski Tonto in Catethysis
Йопэрэсэтэ
источник

к

катехизис in Catethysis
повсюду шарит
источник

СА

Самуил Германович Ар... in Catethysis
катехизис
повсюду шарит
смешно, но да.
источник

СА

Самуил Германович Ар... in Catethysis
Troyanski Tonto
Йопэрэсэтэ
эт не все ещё.
источник

TT

Troyanski Tonto in Catethysis
А покидаешь в лс техноконф, если еще такие есть?
источник

TT

Troyanski Tonto in Catethysis
источник

СА

Самуил Германович Ар... in Catethysis
Troyanski Tonto
А покидаешь в лс техноконф, если еще такие есть?
не вопрос, но не прямо сейчас. мне бы с си вопрос порешать
источник

СА

Самуил Германович Ар... in Catethysis
Самуил Германович Арканум
короч у меня есть функция которая возвращает (должна возвращать) массив
вот функция котрая возвращает массив:
uint8_t * BufRingGet(void) {
 uint8_t  dataret[BUF_SIZE];
 memcpy(&dataret, &struct_ringbuf[in_ptr_s].data, BUF_SIZE);
 in_ptr_s++;
 in_full = 0;
 if (in_ptr_s == RINGBUFSIZE) { in_ptr_s = 0; }
 return &dataret;
}
причём я не уверен в последнем  return &dataret; или return dataret;
так вот
этот BufRingGet будет в другой функции параметром
примерно так:
Log_array(LL_DEBUG, BufRingGet(), BUF_SIZE);
сам Log_array выглядит так:


void Log_array(int level, uint8_t _arr[], int size) {
 if (level <= loglevel) {
   if (logAllowConsole) {
     utime = time(NULL);
     t = localtime(&utime);
     unsigned int sysuid = (unsigned int)syscall(SYS_gettid);
     FILE* logfile;
     logfile = stdout;

     fprintf(logfile, "%04u.%02u.%02u %02u:%02u:%02u [%u] %s \n", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec, sysuid, LOG_CLASSES[level]);
     fprintf(logfile, "array of %u bytes: ", size);
     for (uint8_t i = 0; i < size; i++) {
         if ((i % DBG_BYTES_IN_COL) == 0) { fprintf(logfile, "  "); }
         if ((i % DBG_BYTES_IN_STRING) == 0) { fprintf(logfile, "\n"); }
       fprintf(logfile, "%02X ", _arr[i]);
     }
     fprintf(logfile, "\n");
     fflush(logfile);

   }
трабла, господа
источник

TT

Troyanski Tonto in Catethysis
Самуил Германович Арканум
не вопрос, но не прямо сейчас. мне бы с си вопрос порешать
Си-си
Ладно, удачи в решении проблемы
источник

СА

Самуил Германович Ар... in Catethysis
как сделать функцию которая прикинется массивом и её можно будет воткнуть как настоящий массив  в параметр другой функции?
источник

S

Spark in Catethysis
Самуил Германович Арканум
как сделать функцию которая прикинется массивом и её можно будет воткнуть как настоящий массив  в параметр другой функции?
Очевидно она должна возвращать массив или указатель на массив
источник

СА

Самуил Германович Ар... in Catethysis
Spark
Очевидно она должна возвращать массив или указатель на массив
то есть return &dataret
источник

S

Spark in Catethysis
Да
источник

S

Spark in Catethysis
Но хз
источник

S

Spark in Catethysis
Можно и копию бахнуть
источник

S

Spark in Catethysis
Зависит от целей
источник

СА

Самуил Германович Ар... in Catethysis
Spark
Да
а воткнуть на место параметра?
источник

S

Spark in Catethysis
Самуил Германович Арканум
а воткнуть на место параметра?
А чем это мешает?
источник