본문 바로가기
728x90

전체 글419

[C언어][Error] 088. ‘main’ takes only zero or two arguments – main 함수 인자 수 오류 이 오류는 C언어의 main 함수가 정의될 때, 허용된 인자 수를 초과하거나 부족하게 정의되었을 경우 발생합니다. main 함수는 표준적으로 인자를 받지 않거나, 두 개의 인자(int argc, char *argv[])를 받아야 하며, 그 외의 형식은 컴파일 오류를 유발합니다.표준 C에서는 다음 두 가지 형식만을 main 함수의 선언으로 허용합니다.int main(void)int main(int argc, char *argv[])● 오류 예제int main(int x) { // 오류: 인자 수가 1개 return 0;}컴파일 시 다음과 같은 오류 메시지가 출력될 수 있습니다.error: ‘main’ takes only zero or two arguments● 해결 방법main 함수의 정의는 반드시.. 2025. 5. 4.
[C언어][Error] 087. expression must be a modifiable lvalue – 수정 불가능한 값에 대입 시도 이 오류는 대입문의 좌변에 수정이 불가능한 표현식이 사용되었을 때 발생합니다. C언어에서 대입 연산자는 좌변이 수정 가능한 lvalue여야 하는데, 상수, 배열 이름, 함수 반환값 등은 수정할 수 없으므로 이러한 값에 값을 할당하려 하면 오류가 발생합니다.특히 배열 이름은 포인터처럼 보이지만 실제로는 수정 불가능한 주소를 나타내므로 좌변에 쓸 수 없습니다. 함수의 반환값 또한 일시적인 값으로 간주되므로 lvalue가 될 수 없습니다.● 오류 예제#include int main() { 5 = 10; // 오류: 상수는 수정 불가 return 0;}또는 다음 예시처럼 함수 반환값에 값을 대입해도 동일한 오류가 발생합니다.int getValue() { return 3;}int main() {.. 2025. 5. 2.
[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.
728x90