문제

CODILE로 CODE (/TC)를 사용하여 Visual C ++에서 간단한 .C를 컴파일하고 있으며이 컴파일러 오류가 발생합니다.

오류 C2143:구문 오류:없어진 ';' '타입'이전

간단한 구조체를 요구하는 라인에서

 struct foo test;

구조체의 typedef를 사용하는 경우에도 마찬가지입니다.

오류 C2275:'푸':이 유형을 표현식으로 불법적으로 사용

도움이 되었습니까?

해결책

C에서는 모든 변수를 코드 앞에 선언해야 한다는 사실을 잊어버렸습니다.

다른 팁

실수로 이전 줄에서 세미콜론을 생략했습니까?이전 줄이 #include, 누락된 세미콜론을 찾기 위해 다른 곳을 찾아야 할 수도 있습니다.

편집하다:코드의 나머지 부분이 유효한 C++라면 문제가 무엇인지 판단하기 위한 정보가 충분하지 않을 수 있습니다.아마도 코드를 다음 위치에 게시할 수 있을 것입니다. 페이스트빈 그래서 우리는 모든 것을 볼 수 있습니다.

이상적으로는 게시하기 위해 크기를 줄이는 과정에서 갑자기 작동하기 시작하고 문제를 발견하게 될 것입니다!

이미 구조체에 대한 형식 정의를 만들었기 때문에('s1' 버전을 사용했기 때문에) 다음과 같이 작성해야 합니다.

foo test;

오히려

struct foo test;

C와 C++ 모두에서 작동합니다.

구조 유형은 어떻게 정의됩니까?이를 수행하는 방법에는 두 가지가 있습니다.

// This will define a typedef for S1, in both C and in C++
typedef struct {
     int data;
     int text;
} S1;

// This will define a typedef for S2 ONLY in C++, will create error in C.
struct S2 {
     int data;
     int text; 
};

C2143은 기본적으로 컴파일러가 현재 컨텍스트에서 불법이라고 생각되는 토큰을 얻었다고 말합니다.이 오류가 암시하는 것 중 하나는 컴파일러 오류를 유발하는 줄 앞에 실제 문제가 존재할 수 있다는 것입니다.Greg가 말했듯이 이 문제를 진단하려면 귀하의 코드를 더 많이 볼 필요가 있다고 생각합니다.

또한 이것이 C로 컴파일되지 않는 이유를 알아내려고 할 때 이것이 유효한 C++ 코드라는 사실이 왜 도움이 된다고 생각하는지 잘 모르겠습니다.C++는 (대체로) C의 상위 집합이므로 유효한 C++ 코드가 구문적으로 올바른 C 코드가 아닐 수 있는 데에는 여러 가지 이유가 있습니다. 특히 C++가 구조체를 클래스로 취급하기 때문입니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top