attendu identifiant ou ‘(’ avant ‘pour’

/** @file alloc.c */
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>


#define NEW_BLOCK_SIZE 1024 
#define ARRAY_SIZE 31


typedef struct _metadata_mem
{
size_t size;
void * addr ;
struct _metadata_mem * next_free ;
struct _metadata_mem * pre_free;
char * unit ; 


} metadata_mem;

#define SIZE_OF_MATEDATA sizeof(metadata_mem) 



metadata_mem * array_of_block[31] ; 

int i;
for(i=0; i<31; i++){
    array_of_block[i]=NULL; 
}


int index(size_t size){
int count=0;
while((int)size>=2){
    size/=2;
    count++;
}
return count ; 

}

J'ai reçu l'erreur suivante et il commence dans la boucle for:

gcc alloc.c -O3 -Wextra -Wall -Werror -Wno-unused-result -Wno-unused-parameter -o    alloc.so -shared -fPIC
alloc.c:30:2: error: expected identifier or ‘(’ before for
alloc.c:30:12: error: expected ‘=’, ‘,’, ‘;’, asm or __attribute__ before ‘<’ token
alloc.c:30:26: error: expected ‘=’, ‘,’, ‘;’, asm or __attribute__ before ‘++’ token
alloc.c:35:5: error: conflicting types for index
make: *** [alloc.so] Error 1

Je n'ai aucune idée de quel est le problème avec la boucle for. Il semble OK. Ne suis-je pas censé initialisé le array_of_block dans le contexte mondial ?

Merci beaucoup.

Où est la fonction main ()?
C est pas un langage de script.
Aussi, il ya un moyen plus facile de faire ce que vous voulez avec ce tableau à l'aide de memset.
Faute de frappe: SIZE_OF_MATEDATA 🙂
NULL n'est pas garanti d'être le même que 0x0 dans la mémoire, donc, techniquement, memset() est une erreur pour la rédaction des pointeurs NULL. Dans la pratique, il fonctionne généralement parce que NULLE habituellement est vraiment 0x0 dans la mémoire.

OriginalL'auteur Calvin Hu | 2013-09-18