본문 바로가기
728x90

C언어171

[C언어][Error] 104. braces around scalar initializer – 스칼라 초기화에 중괄호 사용 이 오류는 정수, 실수 등 단일 값을 가지는 스칼라(scalar) 변수에 중괄호({})를 사용하여 초기화했을 때 발생합니다. C언어에서는 스칼라형 변수(int, float 등)의 초기화는 단순히 대입 연산자와 함께 값을 직접 지정해야 하며, 중괄호는 배열이나 구조체와 같은 복합형 자료에 사용됩니다. 이 오류는 보통 배열이나 구조체 초기화 패턴을 그대로 단일 변수에 적용했을 때 나타납니다. ● 오류 예제#include int main() { int x = {10}; // 오류: 스칼라형 초기화에 중괄호 사용 printf("%d\n", x); return 0;}컴파일 시 다음과 같은 오류 메시지가 출력될 수 있습니다.error: braces around scalar initializer ●.. 2025. 5. 10.
[C언어][Error] 103. use of reserved keyword as identifier – 예약어를 식별자로 사용 이 오류는 C언어의 예약어(reserved keyword)를 변수 이름, 함수 이름, 구조체 이름 등 식별자로 사용하려고 했을 때 발생합니다. 예약어는 언어의 문법 요소로 이미 특정 기능을 수행하기 위해 정의되어 있기 때문에, 사용자 정의 이름으로 사용할 수 없습니다. 예를 들어 int, return, if, while 등은 예약어이므로 변수 이름이나 함수 이름 등으로 사용할 수 없습니다. ● 오류 예제#include int return = 10; // 오류: 'return'은 예약어int main() { printf("%d\n", return); return 0;}컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error: expected identifier or ‘(’ before ‘re.. 2025. 5. 10.
[C언어][Error] 102. enum constant defined multiple times – enum 상수 중복 정의 이 오류는 동일한 이름의 열거형 상수(enum constant)가 하나의 열거형(enum) 내에서 두 번 이상 정의되었을 때 발생합니다. C언어에서 열거형 상수는 전역적인 정수 상수로 취급되기 때문에, 같은 이름을 중복해서 정의할 수 없습니다. 이 오류는 주로 enum 정의 중 실수로 중복된 이름을 사용하거나, 다른 헤더 또는 enum 블록에서 동일한 이름을 사용하는 경우에 발생합니다. ● 오류 예제#include enum Color { RED, GREEN, RED // 오류: RED가 두 번 정의됨};컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error: enum constant ‘RED’ defined multiple times ● 해결 방법열거형 상수는 유일해야 하므로 중복된.. 2025. 5. 10.
[C언어][Error] 101. invalid suffix on integer constant – 정수 상수에 잘못된 접미사 이 오류는 정수 상수를 작성할 때 존재하지 않는 접미사(suffix)를 붙였을 경우 발생합니다. C언어에서는 정수 상수 뒤에 사용할 수 있는 접미사는 U (unsigned), L (long), UL, LL (long long) 등이 있습니다. 이 외의 잘못된 조합이나 문자가 뒤에 붙으면 컴파일러는 오류로 인식합니다. 예를 들어 100Z와 같이 Z는 유효한 접미사가 아니므로 오류가 발생하게 됩니다. ● 오류 예제#include int main() { int x = 100Z; // 오류: 잘못된 접미사 Z return 0;}컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error: invalid suffix "Z" on integer constant ● 해결 방법정수 상수를 사용할 때는 표준에.. 2025. 5. 10.
[C언어][Error] 100. duplicate label – 중복된 레이블 정의 이 오류는 동일한 이름의 레이블(label)을 하나의 함수 또는 블록 내에서 두 번 이상 정의했을 때 발생합니다. C언어에서 레이블은 고유해야 하며, 같은 이름을 가진 레이블을 중복으로 정의하면 컴파일러는 충돌로 간주하고 오류를 발생시킵니다. 주로 goto 문을 사용할 때 실수로 같은 이름을 반복 선언하는 경우에 나타납니다. ● 오류 예제#include int main() { goto label;label: printf("첫 번째 레이블\n");label: // 오류: 레이블 중복 정의 printf("두 번째 레이블\n"); return 0;}컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error: duplicate label ‘label’ ● 해결 방법레이블 이름은 동일 함수.. 2025. 5. 10.
[C언어][Error] 099. label at end of compound statement – 복합문 끝에 레이블 존재 이 오류는 레이블(label)이 블록의 마지막에 위치하여 그 뒤에 실행 가능한 문장이 없을 때 발생합니다. C언어에서는 case, default, 또는 사용자 정의 레이블을 사용할 수 있으며, 이러한 레이블 뒤에는 반드시 실행할 문장이 따라와야 합니다. 레이블이 블록의 끝에 위치하거나 세미콜론 하나만 덩그러니 있을 경우, 의미 없는 레이블로 간주되어 컴파일 오류가 발생할 수 있습니다. 이 오류는 goto문이나 switch문에서 자주 발생합니다. ● 오류 예제#include int main() { goto end;end: // 오류: 레이블 뒤에 문장이 없음 return 0;}컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: label at end of compound stateme.. 2025. 5. 10.
728x90