본문 바로가기
728x90

전체 글339

[C언어][Error] 086. static declaration follows non-static declaration – static 선언 순서 오류 이 오류는 동일한 이름의 변수가 먼저 non-static으로 선언되었는데, 이후 다시 static으로 선언될 경우 발생합니다. C언어에서는 변수의 저장 클래스(static, extern 등)를 바꿔서 다시 선언하는 것을 허용하지 않으며, 같은 식별자는 한 번만 정의되어야 합니다.이 오류는 보통 헤더 파일이나 여러 파일에서 동일한 변수명을 중복 선언하면서 발생합니다.● 오류 예제// 파일1.cint counter;// 파일2.cstatic int counter; // 오류: static으로 재선언컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error: static declaration of ‘counter’ follows non-static declaration● 해결 방법하나의 변수는 하나의 저장 .. 2025. 5. 2.
[C언어][Error] 085. variable set but not used – 변수를 선언하고 사용하지 않음 이 경고는 선언된 변수에 값을 할당했지만, 이후 코드에서 해당 변수를 전혀 사용하지 않았을 때 발생합니다. 이 경우 컴파일러는 변수의 존재가 무의미하다고 판단하여 경고 메시지를 출력합니다. 이는 실수로 변수를 선언만 해놓고 사용하지 않았거나, 나중에 코드 수정 과정에서 변수 사용이 제거되었을 때 자주 발생합니다.이 경고는 컴파일러가 프로그램의 불필요한 자원 사용을 줄이고, 유지보수를 돕기 위해 제공하는 중요한 힌트입니다.● 경고 예제#include int main() { int unused = 10; // 값은 할당했지만 사용하지 않음 return 0;}컴파일 시 다음과 같은 경고 메시지가 출력될 수 있습니다.warning: variable ‘unused’ set but not used● 해.. 2025. 5. 2.
[C언어][Error] 084. implicitly declared function – 함수 선언 누락 이 오류는 C언어에서 함수가 호출되었지만, 호출 시점 이전에 해당 함수에 대한 선언(prototype)이 없을 때 발생합니다. C89 표준에서는 묵시적 선언(implicit declaration)이 허용되었지만, C99 이후 표준에서는 반드시 모든 함수가 호출되기 전에 선언되어야 합니다.함수 선언 없이 사용하면 컴파일러는 기본적으로 int를 반환하고 인자에 대한 타입 검사도 하지 않기 때문에 심각한 버그로 이어질 수 있습니다.● 오류 예제#include int main() { greet(); // 오류: 선언되지 않은 함수 호출 return 0;}void greet() { printf("안녕하세요!\n");}컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: implicit d.. 2025. 5. 2.
[C언어][Error] 083. type specifier missing – 타입 지정자 누락 이 오류는 변수나 함수, 구조체 멤버 등을 선언할 때 타입 지정자(type specifier)를 생략하거나 잘못 작성했을 때 발생합니다. C언어에서는 모든 선언에 자료형이 명시되어야 하며, int, char, float 등의 타입을 선언 없이 식별자만 작성하는 경우 컴파일러는 문법 오류를 발생시킵니다.이 오류는 변수 선언뿐만 아니라 함수 반환형 또는 매개변수 선언에서 타입이 누락된 경우에도 자주 발생합니다.● 오류 예제#include main() { // 오류: 반환형 누락 (현대 C에서는 int 명시 필수) x = 5; // 오류: x의 타입 누락 return 0;}컴파일 시 다음과 같은 오류 메시지가 출력될 수 있습니다.error: type specifier missing, defaul.. 2025. 5. 2.
[C언어][Error] 082. typedef redefined – typedef 재정의 오류 이 오류는 이미 선언된 typedef 이름을 동일한 이름으로 다시 정의하려 할 때 발생합니다. C언어에서는 하나의 typedef 이름에 대해 여러 번 타입을 정의할 수 없으며, 기존과 동일한 이름을 또다시 사용하려 하면 컴파일러는 이를 중복 정의로 간주하여 오류를 발생시킵니다.주로 헤더 파일을 여러 번 포함했거나, include guard 또는 #pragma once가 누락된 경우 자주 발생합니다.● 오류 예제typedef int myInt;typedef float myInt; // 오류: 같은 이름으로 재정의컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: typedef redefined● 해결 방법typedef 이름을 중복해서 사용하지 말고, 이름이 충돌하지 않도록 고유한 이름을 지정하거.. 2025. 5. 2.
[C언어][Error] 081. aggregate value used where an integer was expected – 구조체를 정수처럼 사용 이 오류는 구조체(struct)나 배열과 같은 복합 자료형(aggregate type)을 정수형 값처럼 잘못 사용하려고 할 때 발생합니다. C언어에서는 구조체 자체는 하나의 메모리 블록으로 취급되며, 연산자나 조건식에서 정수로 사용할 수 없습니다. 이를 정수처럼 처리하려 하면 컴파일러는 타입 불일치로 오류를 발생시킵니다.특히 구조체를 정수값이 필요한 조건문, 수식, 비교 연산자 등에서 사용했을 때 이 오류가 발생합니다.● 오류 예제#include struct Point { int x; int y;};int main() { struct Point p = {1, 2}; if (p) { // 오류: 구조체를 조건식에 사용 printf("조건 참\n"); } ret.. 2025. 5. 2.
728x90