Discussione: [C++] int, array byte
View Single Post
Old 06-07-2014, 09:24   #13
vbextreme
Member
 
L'Avatar di vbextreme
 
Iscritto dal: Dec 2013
Messaggi: 90
@freaxx io avrei preferito altre alternative al tuo codice, quali:
Codice:
void old_printAddr(int (*arr)[], size_t s)
{
    for (size_t i = 0; i < s; i++)
    {
        printf("%p %d\n", &(*arr)[i], *(&(*arr)[i]));
    }
}

void simple_printAddr(void *arr, size_t s)
{
    int* a = (int*) arr;
    while(s--)
    {
        printf("%p %d\n", a, *a);
        a++;
    }
}

void versatile_printAddr(void *arr, size_t s, size_t n, const char* vw)
{
    char* a = (char*) arr;
    char v1[80];
    char v2[80];

    while (n--)
    {
        sprintf(v1,"%p ",a);
        sprintf(v2,vw,*a);
        strcat(v1,v2);
        puts(v1);
        a += s;
    }
}

int main()
{
    int c[] = {1, 54, 42, 44, 33};
    char x[] = {'a','b','c'};
    // esempio su singola riga senza uso
    // di alcuna funzione
    // printf("%p %d\n", &c[2], *(&c[2]));
    puts("Simple Vector int");
    simple_printAddr(&c, 5);

    puts("Versatile Vector int");
    versatile_printAddr(&c, sizeof(int), 5,"%d");
    puts("Versatile Vector char");
    versatile_printAddr(&x, sizeof(char), 3,"%c");

    return 0;
}
Ho poi bloccato lo standard c99 quindi non l'ho nemmeno compilato il tuo codice.
Quote:
||=== Build: Debug in iop (compiler: GNU GCC Compiler) ===|
main.c||In function ‘old_printAddr’:|
main.c|71|error: ‘for’ loop initial declarations are only allowed in C99 mode|
main.c|71|note: use option -std=c99 or -std=gnu99 to compile your code|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
Niente flame però! solo questione di gusti personali.
__________________
Easy framework per il linguaggio C.
vbextreme hack your life
vbextreme è offline   Rispondi citando il messaggio o parte di esso