2011-03-05 2 views
1

여러 사람들이 여기에 내 C 코드에 주석을 달았습니다. 상수를 하드 카운터로 사용하지 말고 루프 카운터로 사용해야한다고 말했습니다. Java 코드 작성시 필자의 실습이기 때문에 필자의 의견에 동의하지만 배열 선언 및 루프 조건문에서 상수를 사용하려고하면 컴파일 타임 오류가 발생합니다.컴파일 타임 오류가 발생하는 C 상수

C에서 상수를 선언하려면 구문은 #define NAME value입니다.

내 코드에서 두 개의 상수 인 BUFFER은 파일 읽기 버퍼이고 PACKED은 출력 배열 크기입니다.

나는 작동하는 전역 변수로 char inputBuffer[BUFFER];를 초기화 BUFFER를 사용하지만, 내가하려고 할 때 루프 초기화 라인에 char inputPack[PACKED]에서 error: expected ‘]’ before ‘;’ token
error: expected expression before ‘;’ token 오전 얻을 PACKED

#define PACKED 7; // this line is in the header of file, just below preprocessors 
int packedCount; 
char inputPack[PACKED]; //compression storage 
for (packedCount=0; packedCount<= PACKED; packedCount++){ 

을 사용합니다. 나는 7

+0

Marlon이 말했듯이'char inputPack [PACKED]' – Marlon

+0

끝에 세미콜론이 누락되었습니다. 여기에 오타가 있습니까? – wong2

+1

정확하게 코드를 붙여 넣으십시오. – wong2

답변

3

분명히 소스 파일에 표시된 그대로 코드를 게시하는 것은 아닙니다.

적어도, char inputPack[PACKED] 다음에 세미콜론이 누락되었습니다.

오류가 발생할 수있는 매크로 소스 코드의 끝에 세미콜론이 있다고 생각됩니다. 매크로 정의는 세미콜론으로 끝나지 않아야합니다.

+0

+1 : duh, 물론, 지금은 바보 같은 느낌이 들지 않습니다. – Erik

+0

+1은 '매크로 선언 끝에 세미콜론을 넣었습니다.' – wong2

+0

그게 전부입니다. 일치하는 Java 구문에서 C 구문을 분리하기 전에는 다소 시간이 걸릴 것으로 생각됩니다. – Jason

2

PACKED를 교체 할 때 두 가지 오류는 ;가 문자 실종이 사라 inputPack[PACKED]

1

포장 예를 들어, 이외를 사용해보십시오 포장해라. 일 수 있습니다. 컴파일러에서 다른 항목 (예 : struct packing과 관련된)에 PACKED를 사용해야합니다. 또한 다른 답변에 언급 된 것처럼, 당신은 부족합니다;

+1

대문자가있는 매크로는 구현에 의해 예약되지 않았습니다. 그들은 밑줄로 시작해야합니다. 나는 실제 판결을 기억하지 못한다. (C와 C++가 다르다.) 그러나 'PACKED'는 문제를 일으키지 않아야한다. – rubenvb

+0

불행히도 항상 상관하지 않아야합니다 :) -하지만 조나단은 내가 믿는 진짜 문제를 발견했습니다. – Erik

관련 문제