728x90 전체 글235 [C언어][Error] 012. ‘return’ with no value, in function returning non-void – 값을 반환해야 하는 함수에서 return 문 없음 이 오류는 반환형이 int, float 등 값을 반환해야 하는 함수에서 return 문이 없거나, return 문이 존재하더라도 반환할 값이 없는 경우 발생합니다. C언어에서는 함수의 선언과 정의에서 명시한 반환형에 따라 반드시 적절한 값을 return해야 합니다.특히 조건문 내에서 일부 분기만 return 값을 포함하고, 다른 분기에는 return 값이 없을 경우에도 이 오류가 발생할 수 있습니다.다음은 오류가 발생하는 예시입니다.#include int getValue(int flag) { if (flag) return 1; // return 문 없음}int main() { int result = getValue(0); printf("%d\n", result); .. 2025. 4. 22. [C언어][Error] 011. ‘return’ with a value, in function returning void – void 함수에서 값을 반환함 이 오류는 반환형이 void인 함수에서 return문을 사용할 때, 값을 함께 반환하려고 할 경우 발생합니다. void 함수는 값을 반환하지 않는 함수이므로, return 문에는 아무 값도 포함되지 않아야 합니다. 반환형이 void인 함수에 return 뒤에 값을 넣으면 컴파일러는 이 동작이 잘못되었다고 판단하고 오류를 발생시킵니다. 다음은 오류가 발생하는 잘못된 예시입니다.#include void greet() { return 1; // 오류: void 함수는 값을 반환할 수 없음}int main() { greet(); return 0;}컴파일 시 다음과 같은 오류가 출력됩니다.error: ‘return’ with a value, in function returning void 정상적.. 2025. 4. 22. [C언어][Error] 010. array subscript is not an integer – 배열 인덱스로 정수가 아닌 값을 사용 이 오류는 배열의 인덱스로 정수가 아닌 값을 사용할 경우 발생합니다. C언어에서 배열 인덱스는 반드시 정수형이어야 하며, 실수나 포인터, 구조체 등 다른 타입을 사용할 수 없습니다. 일반적으로 float, double, 또는 잘못된 변수 타입을 인덱스로 사용할 경우 이 오류가 발생합니다. 함수 반환값이나 계산식 결과가 정수형인지도 주의 깊게 확인해야 합니다. 아래 예제를 확인해 보세요.#include int main() { int arr[5] = {10, 20, 30, 40, 50}; float idx = 2.0; printf("%d\n", arr[idx]); // float형 인덱스 사용 → 오류 return 0;}컴파일 시 다음과 같은 오류가 출력됩니다.error: array .. 2025. 4. 22. [C언어][Error] 009. invalid operands to binary + (have ‘char *’ and ‘int’) – 문자열과 정수 간 연산 오류 이 오류는 문자열(또는 char 포인터)과 정수형 값을 + 연산자로 함께 사용하려고 할 때 발생합니다. C언어에서 포인터와 정수 간 연산은 특정 규칙이 있을 경우 가능하지만, 문자열 상수나 포인터 연산에서 잘못된 방식으로 사용하면 컴파일러가 허용하지 않습니다.특히 문자열 리터럴을 직접 더하려 하거나, 포인터 연산을 명확히 하지 않은 경우 이 오류가 자주 발생합니다.아래 예제를 통해 확인해 보겠습니다.#include int main() { char *str = "hello"; printf("%s\n", str + 1); // 올바른 사용 (포인터 연산) printf("%s\n", str + "world"); // 오류 발생 return 0;}위 코드에서 str은 char 포인터이.. 2025. 4. 22. [C언어][Error] 008. incompatible type for argument – 함수 인자 타입이 맞지 않음 이 오류는 함수에 인자를 전달할 때, 함수가 기대하는 타입과 다른 타입의 값을 넘겨주는 경우 발생합니다. C언어는 함수 호출 시 인자의 타입을 엄격하게 검사하며, 타입이 호환되지 않으면 컴파일 에러를 발생시킵니다.예를 들어 int형을 기대하는 함수에 float형을 전달하거나, char 포인터를 받아야 하는 함수에 정수를 넘기는 경우 등이 이에 해당합니다.다음은 오류가 발생하는 예시입니다.#include void printNumber(int n) { printf("%d\n", n);}int main() { float value = 3.14; printNumber(value); // float을 int 인자로 전달 return 0;}컴파일 시 다음과 같은 오류가 발생합니다.error:.. 2025. 4. 22. [C언어][Error] 007. redefinition or redeclaration of variable/parameter/struct member – 변수나 파라미터를 중복 선언했을 때 이 오류는 같은 이름의 변수, 함수 매개변수, 구조체 멤버 등을 동일한 범위(scope) 내에서 중복 선언하거나 정의했을 때 발생합니다. C언어는 동일한 이름의 식별자를 같은 블록 안에서 두 번 이상 선언하는 것을 허용하지 않습니다.변수를 실수로 두 번 선언하거나, 구조체 안에서 같은 이름의 멤버를 중복 선언할 경우 컴파일러는 '재정의(redefinition)' 또는 '재선언(redeclaration)' 오류를 발생시킵니다.다음은 오류가 발생하는 예시입니다.#include int main() { int a = 10; int a = 20; // 동일한 변수 이름을 다시 선언 printf("%d\n", a); return 0;}컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error.. 2025. 4. 22. 이전 1 ··· 24 25 26 27 28 29 30 ··· 40 다음 728x90