2011-05-14 4 views
-3

나는이 작동하지 않습니다 코드의 아주 간단한 비트를 가지고 있고,변수를 참조 할 수 없습니다 ... 이유가 무엇입니까?

다음 왜 아무 생각이 없다 :

int flag = 0; 
if (flag == 0) 
{ 
    flag = 1; 
} 

컴파일하지 않음을. 그것은 이미 꽤 복잡한 프로그램이며, 아무런 문제없이 프로그램 내에서 다른 행동을 할 수 있습니다. 그러나 방금 만든 변수를 참조 할 수없는 몇 가지 이유가 있습니다. 변수 이름은 고유하며 응용 프로그램은 windows.h를 비롯한 Windows 응용 프로그램입니다. 그것은 C로 작성되었으며 지금까지는 내 자신의 변수를 만들려고 시도하지 않았습니다.

적어도 여기에는 전체 코드를 게시 할 수 없지만 컴파일 할 수없는 이유에 대해 추측 할 수있는 사람은 누구입니까? 나는 비주얼 C++을 사용하고 다음과 같은 오류가 있어요 :

syntax error : missing ';' before 'type' (this applies to line 1) 
'flag' : undeclared identifier (line 2) 
'flag' : undeclared identifier (line 4) 

내가 '사실'과 장소에 '거짓'으로뿐만 아니라 부울을 사용하여 시도했다. 나는 C++에 비교적 익숙하지 않다. 코드가 없으면 코드가 전혀 컴파일되지 않습니다. 이것이 더 큰 'if'진술서 내에서 이전의 행동 직후에 오는 부분이며, 그 부분입니다. 나는 이것과 정확히 같은 장소에 다른 중첩 if 문을 성공적으로 추가했다. if 문 밖에서 가져 오는 것은 아무런 효과가 없습니다. #include 바로 다음에 내 main.c 파일의 맨 위에 올리면 별 차이가 없습니다. 완전히 제거하면 프로그램이 절대적으로 잘 컴파일됩니다. 문제는 변수를 정의하는 것으로 보입니다.

+1

자신 만의 변수를 선언하지 않고 "매우 복잡한 프로그램"을 만들었습니까? 어떻게 가능할까요? –

+0

첫 번째 줄 앞에 ';' 누락. 따라서 오류는 분명히 표시된 행에 없습니다. – Constantinius

+0

이것은 모두 하나의 파일에 있습니까? : http://stackoverflow.com/questions/6002579/checking-a-value-defined-in-a-header-from-a-function-in-another-file – Bart

답변

2

C 언어로 컴파일한다고 가정합니다. 블록 시작 부분에 변수를 선언해야합니다.

// beginning of block 
int flag=0; 
//Some code 
if (flag == 0) 
{ 
    flag = 1; 
} 
+1

이것은 문제입니다 (오히려 해결책입니다) - MSVC의 C 모드는 명령문과 혼합 된 선언 (C90 컴파일러)을 지원하지 않습니다. MByd가 제안하거나 자신의 블록으로 구조를 래핑하는 것을 할 수 있습니다. –

1

누락되었습니다; 앞 줄 끝에?

+0

이 필요합니다. 아니야, 그게 바로 – CaptainProg

0

마치 변수 선언 앞에있는 행이 ;으로 끝나지 않은 것처럼 보입니다. 이 행에서 누락 된 세미콜론을 확인하십시오.

+0

이어야합니다. 이걸로해야합니다. – CaptainProg

관련 문제