Diskuze: poradit jak udelat - zacatecnik

Člen

Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Jedná se o C++ nebo o C? V C++ bys jednoduše přetížil danou metodu aby přijímala více parametrů. V čistém C přetížení neexistuje, takže musíš vytvořit jinou metodu s jiným názvem.
mozes pouzit _Generic:
#include <stdio.h>
#include <assert.h>
typedef struct{}S1;
typedef struct{}S2;
void wbuff_S1(S1* x){puts("wbuff_S1\n");}
void wbuff_S2(S2* x){puts("wbuff_S2\n");}
#define wbuff(x) _Generic( (x), \
S1*: wbuff_S1(x),\
S2*: wbuff_S2(x),\
default:printf("Error\n")\
)
int main(void){
S1 s1;
S2 s2;
wbuff(&s1);
wbuff(&s2);
wbuff(1);
}
Treba mat kompilator podporujuci C11
typedef struct{}S1;
typedef struct{}S2;
void wbuf (pointer_zacatek_pole *z,zacatek_struct *s, int delka_struct){
//vlozeni na spravne misto
}
int main(void){
S1 s1_pole[5];
S2 s2_pole[5];
S1 s1;
S2 s2;
wbuf(&s1_pole[0],&s1,sizeof(s1));
wbuf(&s2_pole[0],&s2,sizeof(s2));
}
slo by to takto? co se ma napsat misto pointer_zacatek_pole?
Co přesně chceš udělat? Ten pseudokód, co používáš, je velice matoucí. Napiš to buď v C nebo slovy popiš, co dělá funkce wbuf.
maji to byt kruhove buffery, ktere ukladaji ruzne struktury
Zapisuju na urcitem miste (wbuf) do bufru, na jinem miste vycitam strukturu(rbuf) a zpracovavam
pardon, se mi sem nechtene povedlo dat jakousi fajvku,
ty struktury jsou typove zvlast, kazdy buffer je pro urcity typ struktrury
typedef struct
{
int i;
} S1;
typedef struct
{
double d;
} S2;
void wbuf(void *buffer, int *index, int *count, size_t buf_size, const void *structure, size_t str_size)
{
int i = (*index + *count) % buf_size;
memcpy(buffer + i * str_size, structure, str_size);
(*count)++;
}
int main(int argc, const char * argv[])
{
S1 s1_pole[5];
int s1_index = 0, s1_count = 0;
S2 s2_pole[5];
int s2_index = 0, s2_count = 0;
S1 s1 = { 1 };
S2 s2 = { 2.2 };
const size_t s1_size = sizeof(s1_pole) / sizeof(S1);
const size_t s2_size = sizeof(s2_pole) / sizeof(S2);
wbuf(s1_pole, &s1_index, &s1_count, s1_size, &s1, sizeof(S1));
wbuf(s2_pole, &s2_index, &s2_count, s2_size, &s2, sizeof(S2));
wbuf(s1_pole, &s1_index, &s1_count, s1_size, &s1, sizeof(S1));
wbuf(s2_pole, &s2_index, &s2_count, s2_size, &s2, sizeof(S2));
}
diky, tak vyzkousim projdu... divim se, ze jsem podobnou konstrukci nikde nenasel, neprijde mi to to tak nepouzivane...jeste jednou diky moc
Zobrazeno 11 zpráv z 11.