C 에러코드 C2143 구문 오류 ';'이(가) '형식'앞에 없습니다 해결법

728x90

 

 

 

 

 

 

 taiyo의 정보창구

C 에러코드 C2143

C2143 에러 해결 방법


C2143 에러는 컴파일러가 특정 토큰을 예상했는데 다른 토큰을 발견했을 때 발생하는 구문 오류 이 에러는 다양한 상황에서 발생할 수 있지만, 대표적으로 두 가지 경우가 있습니다.
- 변수 선언을 잘못한 경우
- 헤더 파일의 문제

 

변수 선언을 잘못 한 경우

그림


C 언어는 C++과는 다르게 변수 선언 부분이 제약되어 있습니다. 즉, 변수를 선언할 때는 함수의 시작 부분에만 할 수 있고, 함수나 다른 문장 앞에는 할 수 없습니다. 이 규칙을 어기면 C2143 에러가 발생합니다.
예를 들어, 다음과 같은 코드는 C2143 에러를 발생시킵니다.

#include <stdio.h>

void function();

int main()
{
    function();
    int n; // error C2143
    return 0;
}



이 코드에서는 main 함수 안에서 function 함수를 호출한 후에 n이라는 변수를 선언하고 있습니다. 이렇게 하면 컴파일러는 n 앞에 세미콜론이나 다른 토큰을 예상하게 되고, 에러를 보고하게 됩니다. 이 에러를 해결하려면 변수 선언을 함수의 시작 부분으로 옮겨주면 됩니다. 즉, 다음과 같이 수정하면 됩니다.

#include <stdio.h>

void function();

int main()
{
    int n; // no error
    function();
    return 0;
}

 

이렇게 하면 컴파일러는 n 을 정상적으로 인식하고 에러가 발생하지 않습니다.

728x90

헤더 파일의 문제

그림


헤더 파일은 C 언어에서 다른 소스 파일에 공통적으로 사용되는 선언이나 정의를 담고 있는 파일입니다. 불러오려면 #include 지시문을 사용합니다. 다음과 같은 코드는 stdio.h라는 헤더 파일을 불러옵니다.

#include <stdio.h>


헤더 파일에는 보통 타입 정의, 매크로 정의, 함수 선언 등이 들어갑니다. 이 파일을 작성할 때는 구문 오류가 없도록 주의해야 합니다. 특히, 세미콜론이나 괄호 등의 토큰이 빠지거나 잘못되었을 때 C2143 에러가 발생할 수 있습니다.
예를 들어, 다음과 같은 헤더 파일은 세미콜론이 빠져서 에러를 발생시킵니다.
//Mytest.h

typedef struct {
    int x;
    int y;
} Point // error C2143


이 헤더 파일을 불러오는 소스 파일은 다음과 같습니다.

#include "Mytest.h"

int main()
{
    Point p; // error C2143
    return 0;
}



이 코드에서는 test.h 라는 사용자 정의 헤더 파일을 불러오고 있습니다. 이 헤더 파일에는 Point라는 구조체 타입을 정의하고 있습니다. 그런데, 이 구조체 타입의 정의 뒤에 세미콜론이 빠져 있습니다. 이렇게 하면 컴파일러는 Point 뒤에 다른 토큰을 예상하게 되고, 에러를 보고하게 됩니다. 이 에러를 해결하려면 헤더 파일에 세미콜론을 붙여주면 됩니다. 

즉, 다음과 같이 수정하면 됩니다.

// Mytest.h
typedef struct {
    int x;
    int y;
} Point; // no error

 

이렇게 하면 컴파일러는 Point 를 정상적으로 인식하고 에러가 발생하지 않습니다. 헤더 파일의 문제에 대해 써보았습니다. 이해가 되셨을까요?

 

마무리

구문 오류


이 글에서는 C2143 에러에 대해 알아보고, 이 에러가 발생하는 두 가지 경우와 해결 방법을 설명했습니다. C2143 에러는 컴파일러가 특정 토큰을 예상했는데 다른 토큰을 발견했을 때 발생하는 구문 오류입니다. 변수 선언을 잘못한 경우나 헤더 파일의 문제로 인해 발생할 수 있습니다. 

이 에러를 해결하려면 변수 선언을 함수의 시작 부분으로 옮기거나 헤더 파일에 세미콜론이나 괄호 등의 토큰이 빠지지 않도록 주의해야 합니다. 이 글이 C2143 에러를 해결하는데 도움이 되었으면 좋겠습니다. C 언어를 공부하시는 분들께 유익한 정보가 되었기를 바랍니다. 

 

감사합니다.

 

 

관련글

 

#include <stdio.h>에서 오류가나올때

clion, devc++ 일단 기준은 VScode로 애드온은 다 깔았는데 stdio요놈이 오류가 뜬다 MSYS2 Software Distribution and Building Platform for Windows www.msys2.org 여기서 msys2를 설치해 준다 바이러스라고 뜰 수 있으나 안

taiyokara.tistory.com

 

[Eclipse] 이클립스 자바스크립트 Syntax Highlighting 와 텍스트로만뜰때 설정법

taiyokara블로그 기능이 작동되지않습니다 ㅠㅠ Eclipse에서 JavaScript 코드를 작성할 때 구문 강조 표시는 키워드, 변수 및 함수와 같은 다양한 유형의 코드 요소를 빠르게 식별하는 데 도움이 되는

taiyokara.tistory.com

 
 

 

728x90