728x90 C언어171 [C언어][Error] 080. storage class specified for parameter – 파라미터에 저장 클래스 사용 불가 이 오류는 함수의 매개변수 선언에 잘못된 저장 클래스(storage class)를 사용했을 때 발생합니다. C언어에서는 매개변수에 static, extern, register 등 일부 저장 클래스를 사용할 수 없습니다. 이러한 키워드는 전역 또는 지역 변수의 저장 방식과 생존 기간을 지정할 때 사용되며, 함수 매개변수에는 적용되지 않습니다.예외적으로 register는 허용되는 경우도 있지만, 대부분의 경우 함수 파라미터에는 저장 클래스를 생략하거나 단순히 자료형과 변수명만을 사용해야 합니다.● 오류 예제#include void display(static int x) { // 오류: 매개변수에 static 사용 printf("%d\n", x);}컴파일 시 다음과 같은 오류 메시지가 출력됩니다.err.. 2025. 5. 2. [C언어][Error] 079. invalid application of ‘sizeof’ to bit-field – 비트필드에 sizeof 사용 이 오류는 C언어에서 비트 필드(bit-field)에 대해 sizeof 연산자를 사용했을 때 발생합니다. 비트 필드는 구조체 내에서 개별 비트 단위로 크기를 지정하는 멤버로, 일반 변수처럼 메모리 주소를 가지지 않기 때문에 sizeof 연산이 불가능합니다. 즉, 비트 필드는 독립적인 메모리 공간이 아니라 구조체 내부에서 다른 비트 필드와 함께 공유되는 영역이므로, 크기를 계산할 수 없습니다. ● 오류 예제#include struct Flags { unsigned int a : 3;};int main() { struct Flags f; printf("%zu\n", sizeof(f.a)); // 오류: 비트 필드에 sizeof 사용 return 0;}컴파일 시 다음과 같은 오류 메시지.. 2025. 5. 2. [C언어][Error] 078. array initialized from non-constant array expression – 상수 배열이 아닌 값으로 초기화 이 오류는 배열을 초기화할 때, 배열 초기값이 컴파일 타임에 상수로 평가될 수 없는 식이거나, 다른 배열 또는 런타임 계산된 값으로 초기화를 시도했을 때 발생합니다. C언어에서는 전역 변수나 정적(static) 배열의 초기화는 반드시 상수 표현식이어야 하며, 그렇지 않으면 컴파일러는 오류를 발생시킵니다.지역 변수의 경우에는 컴파일 타임 상수가 아닌 값으로도 초기화할 수 있지만, 정적 컨텍스트에서는 이를 허용하지 않습니다.● 오류 예제int arr1[] = {1, 2, 3};int arr2[] = arr1; // 오류: 다른 배열로 초기화 불가컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error: array initialized from non-constant array expression● 해결 .. 2025. 5. 2. [C언어][Error] 077. expected ',' or '...' before parameter – 함수 인자 선언 누락 이 오류는 함수 선언이나 정의에서 매개변수 목록 중 하나가 잘못 작성되었을 때 발생합니다. 특히 함수 인자 중 하나에 자료형은 명시되어 있지만 변수명이 없거나, 쉼표(,) 또는 가변 인자(...) 앞에서 선언 형식이 어색한 경우 컴파일러가 문법 오류로 인식합니다.주로 복잡한 함수 선언을 하거나, 가변 인자 함수(printf 등)를 정의할 때 이 오류가 자주 발생합니다.● 오류 예제#include void printValues(int, ) { // 오류: 변수 이름 없이 쉼표로 끝남 printf("값을 출력합니다.\n");}컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error: expected ',' or '...' before ')' token● 해결 방법모든 매개변수는 자료형과 변수명이 명.. 2025. 5. 2. [C언어][Error] 076. expected specifier-qualifier-list before type – 형식 지정자 누락 이 오류는 구조체나 공용체 정의 시 멤버 변수 앞에 자료형을 지정하지 않았을 때 발생합니다. C언어에서는 구조체 내에 선언되는 각 멤버에 대해 반드시 자료형을 명시해야 하며, 이를 specifier-qualifier-list라고 부릅니다. 이 리스트가 생략되면 컴파일러는 해당 멤버를 해석할 수 없어 오류를 발생시킵니다.이 오류는 주로 자료형을 빼먹었거나, 잘못된 식별자 또는 오타가 있는 경우에 발생합니다.● 오류 예제struct Student { name; // 오류: 자료형 누락};컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error: expected specifier-qualifier-list before ‘name’● 해결 방법구조체의 모든 멤버는 자료형과 함께 선언되어야 하며, 이름만.. 2025. 5. 2. [C언어][Error] 075. jump to label crosses initialization – 초기화 전 레이블 점프 이 오류는 goto 문으로 점프하는 위치가 변수의 초기화 이후로 지정되었을 때 발생합니다. C언어에서는 변수 초기화가 수행되기 전에 해당 지점으로 점프할 경우, 해당 변수는 초기화되지 않은 상태로 접근될 수 있으므로 컴파일러는 이를 문법 오류로 처리합니다.이는 프로그램의 안전성과 예측 가능한 실행 흐름을 보장하기 위한 규칙으로, 특히 지역 변수의 초기화가 중요한 경우 자주 발생합니다.● 오류 예제#include int main() { goto skip; int x = 10; // 오류: 초기화 전에 jump 발생skip: printf("x는 초기화되지 않음\n"); return 0;}컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: jump to label crosses.. 2025. 5. 2. 이전 1 2 3 4 5 6 7 8 ··· 29 다음 728x90