본문 바로가기
프로그래밍언어/C언어[Error]

[C언어][Error] 096. expected declaration specifiers or ‘...’ before string constant – 문자열 상수 앞에 선언 누락

by about_IT 2025. 5. 10.

이 오류는 함수 매개변수나 전처리 지시문 등에서 문자열 상수가 사용되었지만, 그 앞에 필요한 선언 형식이 없을 경우 발생합니다. C언어는 함수 정의에서 문자열 상수를 직접 사용하는 것이 허용되지 않으며, 특히 매개변수 위치에 선언이 누락된 경우 문법 오류로 간주됩니다.


이는 보통 함수 선언에서 타입을 명시하지 않고 문자열을 직접 쓴다든지, 매크로 정의에서 구문 오류가 발생했을 때도 나타납니다.



● 오류 예제

#include <stdio.h>

// 오류: 매개변수 자리에 문자열 상수
void greet("Hello") {
    printf("문법 오류 발생\n");
}

컴파일 시 다음과 같은 오류 메시지가 출력됩니다.

error: expected declaration specifiers or ‘...’ before string constant


● 해결 방법

문자열 상수는 변수로 선언하거나, 함수 내부에서만 사용할 수 있습니다. 아래는 올바른 선언 방식입니다.

#include <stdio.h>

void greet(const char* message) {
    printf("%s\n", message);
}

int main() {
    greet("Hello");
    return 0;
}

출력 결과:

Hello


● 실전 팁

  • 함수 매개변수에는 문자열 상수를 직접 쓸 수 없습니다.
  • 항상 문자열은 const char* 형태로 선언해야 합니다.
  • 문자열 리터럴은 변수 또는 인자로 전달될 때만 사용하세요.

C언어의 함수 선언은 매우 엄격한 문법을 따르며, 매개변수에는 반드시 선언된 타입이 들어가야 합니다. 문자열 상수는 변수로 넘기고, 함수 정의는 항상 타입을 명확히 지정해 주세요.