2013-05-02 4 views
0

나는 선수라는 struc가 있고, 나는 MAX 플레이어의 배열을 만들 필요, 그래서 나는과 같이, 다음 페이지 C - initialize array of structs에 따라 :초기화 배열 - C 코드 오류

DEFINE MAX 200 

typedef struct 
{ 
    int ID; 
} Player; 

Player* PlayerList = malloc(MAX * sizeof(Player)); 

문제가 사기꾼에만 사용할 수 없습니다

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

#define MAX = 200; 

typedef struct 
{ 
    int ID; 
} Player; 

Player *PlayerList; 

int start() 
{ 
    PlayerList = malloc(MAX * sizeof(Player)); 
    return 1; 
} 

int main(int argc, char const *argv[]) 
{ 
    /* code */ 
    return 0; 
} 
+0

주변 코드? – fotanus

+0

은 변수로 사용하려고하는'PlayerList' 정의 타입입니다. 'MAX' 란 무엇입니까? – sapi

+0

MAX는 정의 된 숫자입니다. – Morki

답변

1

: 나는 다음과 같은 오류를

error: expected expression before ‘=’ token 
error: initializer element is not constant 

자료 코드가 계속 구형 'C'에서의 초기화를위한 스테이트.

Player* PlayerList = malloc(MAX * sizeof(Player)); 

Player* PlayerList; 
PlayerList = malloc(MAX * sizeof(Player)); 

에 예컨대 추가 :

#include <stdlib.h> 

#define MAX 200 

typedef struct 
{ 
    int ID; 
} Player; 

Player* PlayerList=NULL; 

int main(void){ 
    PlayerList = malloc(MAX * sizeof(Player)); 
    return 0; 
} 
+0

어떻게하면 글로벌하게 할 수 있습니까? – Morki

+0

@Morki note : 함수 밖에서는 실행 문을 작성할 수 없습니다. – BLUEPIXY

+0

static PlayerList = malloc (MAX * sizeof (Player))와 같은 작업을 수행 할 수 있습니까? 함수 내에서 – Morki

2

당신은 어떤 기능을 외부에서 malloc()를 호출 할 수 없습니다. Player* PlayerList;을 선언하고 main()에서 첫 번째로 수행 할 작업 중 하나를 PlayerList = malloc(MAX * sizeof(Player));이라고합시다.

+0

나는 본다. 그러나 PlayerList가 글로벌 일 필요가 있습니다. – Morki

+1

* PlayerList를 함수 밖에서 선언 할 수는 있지만 함수 호출 ('malloc()')을 사용하여 초기화하면 함수 호출이 유효한 컨텍스트에서만 수행 할 수 있습니다. –

+0

전체 코드를 표시해야합니다. 완전한 컴파일 가능한 최소 코드 샘플. –