728x90 프로그래밍언어/C언어[Error]104 [C언어][Error] 074. use of undeclared label – 선언되지 않은 레이블 사용 이 오류는 goto 문에서 사용된 레이블(label)이 코드 내에 정의되어 있지 않을 때 발생합니다. C언어에서 goto는 지정한 레이블로 무조건적인 흐름 이동을 수행하지만, 레이블이 존재하지 않으면 컴파일러는 문맥을 해석할 수 없기 때문에 오류를 발생시킵니다.이 오류는 주로 레이블 이름의 오타, 정의 위치 누락, 또는 코드 정리 중 레이블 삭제 후 사용 코드가 남아 있는 경우 발생합니다.● 오류 예제#include int main() { goto end; // 오류: end 레이블이 선언되지 않음 return 0;}컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: use of undeclared label ‘end’● 해결 방법goto에서 사용되는 레이블은 코드 내에 반드시 선언.. 2025. 5. 2. [C언어][Error] 073. incomplete type is not allowed – 불완전 타입 사용 불가 이 오류는 선언된 타입이 완전하게 정의되지 않은 상태에서 해당 타입의 객체를 생성하거나 참조하려고 할 때 발생합니다. C언어에서 '불완전 타입(incomplete type)'이란 메모리 크기를 컴파일 타임에 알 수 없는 타입을 의미하며, 이 상태에서는 변수 선언이나 구조체 멤버 접근 등이 허용되지 않습니다.주로 구조체를 미리 선언만 하고 정의를 하지 않았을 때, 또는 포인터가 아닌 일반 변수로 불완전 타입을 사용할 경우 발생합니다.● 오류 예제struct Node; // 전방 선언만 존재int main() { struct Node n; // 오류: 불완전 타입으로 객체 생성 return 0;}컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: incomplete type is no.. 2025. 4. 29. [C언어][Error] 072. conflicting types for typedef – typedef 재정의 오류 이 오류는 typedef를 통해 정의한 사용자 타입이 동일한 이름으로 서로 다른 타입과 중복 정의되었을 때 발생합니다. C언어에서는 한 번 정의한 typedef 이름에 대해 다시 다른 타입으로 정의하는 것을 허용하지 않으며, 컴파일러는 이를 타입 충돌로 간주하여 오류를 발생시킵니다.이 오류는 보통 헤더 파일에서 중복 포함 방지 매크로가 없거나, typedef 이름을 재사용하려 할 때 발생합니다.● 오류 예제typedef int number;typedef float number; // 오류: 같은 이름으로 다른 타입 정의컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: conflicting types for ‘number’● 해결 방법이미 정의된 typedef 이름을 다시 사용할 수 없기 때문.. 2025. 4. 29. [C언어][Error] 071. division by zero in constant expression – 0으로 나누는 상수 표현식 이 오류는 상수 표현식에서 0으로 나누는 연산이 발생했을 때 발생합니다. C언어에서 상수 표현식은 컴파일 타임에 계산되며, 이때 0으로 나누는 시도가 있을 경우 컴파일러는 오류를 출력합니다. 이는 정의되지 않은 동작(undefined behavior)이기 때문에 엄격히 금지됩니다.이 오류는 보통 #define 매크로나 enum 정의, 전역 상수 초기화 등에서 발생하며, 코드 실행 이전에 계산되는 값에서 문제가 됩니다.● 오류 예제#define DIVISOR 0#define RESULT (10 / DIVISOR) // 오류: 0으로 나눔int main() { int x = RESULT; return 0;}컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error: division by zero.. 2025. 4. 29. [C언어][Error] 070. invalid cast from type ‘void *’ to type ‘int’ – void 포인터를 int로 잘못 캐스팅 이 오류는 void* 타입의 포인터를 int형 변수에 직접 대입하려 할 때 발생합니다. C언어에서는 void*는 어떤 타입으로든 변환 가능한 일반 포인터이지만, 포인터를 정수형으로 변환할 때는 명시적인 캐스팅이 필요하며, 시스템에 따라 정의되지 않은 동작이 발생할 수 있습니다.또한, void*를 정수로 변환하는 것은 권장되지 않으며, 주로 포인터 주소 값을 정수로 처리해야 하는 매우 제한적인 상황에서만 사용됩니다.● 오류 예제#include int main() { void* ptr = NULL; int val = ptr; // 오류: void*를 int로 직접 대입 return 0;}컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: invalid cast from type ‘.. 2025. 4. 29. [C언어][Error] 069. assignment of read-only variable – 상수 변수에 값을 대입함 이 오류는 const로 선언된 읽기 전용 변수에 값을 다시 대입하려고 할 때 발생합니다. C언어에서 const 키워드는 변수의 값을 변경할 수 없도록 선언하며, 컴파일 타임에 이 속성이 적용되어 해당 변수에 쓰기 작업을 할 경우 컴파일 오류가 발생합니다.이 오류는 실수로 값을 바꾸려 하거나, 함수 내부에서 const 매개변수를 변경하려 할 때 자주 발생합니다.● 오류 예제#include int main() { const int x = 10; x = 20; // 오류: const 변수에 대입 불가 return 0;}컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: assignment of read-only variable ‘x’● 해결 방법값을 변경해야 하는 경우에는 const.. 2025. 4. 29. 이전 1 ··· 3 4 5 6 7 8 9 ··· 18 다음 728x90