codememo

헤더의 공유 c 상수

tipmemo 2023. 8. 6. 10:07
반응형

헤더의 공유 c 상수

특정 C 문자열 상수를 여러 C 파일에서 공유하고 싶습니다.상수는 가독성을 위해 여러 줄에 걸쳐 있습니다.

const char *QUERY = "SELECT a,b,c "
                    "FROM table...";

위의 작업을 수행하면 쿼리에 대한 재정의 오류가 발생합니다.모든 행 뒤에 백스페이스 '\'가 필요하므로 매크로를 사용하지 않습니다.저는 이것들을 별도의 c 파일로 정의하고 h 파일의 변수를 외부로 내보낼 수 있지만, 그렇게 하는 것이 귀찮습니다.

C에서 이것을 달성할 수 있는 다른 방법이 있습니까?

어떤 .c 파일에 당신이 쓴 것을 쓰세요.적절한 .h 파일에 다음과 같이 기록합니다.

extern const char* QUERY; //just declaration

상수가 필요한 곳에 .h 파일을 포함합니다.

다른 좋은 방법은 없습니다 :) HTH.

정적 제약 조건을 사용하면 효과를 얻을 수 있습니다.

내 다음 문자.h:

#ifndef _MYEXT_H
#define _MYEXT_H
static const int myx = 245;
static const unsigned long int myy = 45678;
static const double myz = 3.14;
#endif

내 func.h:

#ifndef MYFUNC_H
#define MYFUNC_H
void myfunc(void);
#endif

나의 func.c:

#include "myext.h"
#include "myfunc.h"
#include <stdio.h>

void myfunc(void)
{
    printf("%d\t%lu\t%f\n", myx, myy, myz);
}

내 다음 c:

#include "myext.h"
#include "myfunc.h"
#include <stdio.h>

int main()
{
    printf("%d\t%lu\t%f\n", myx, myy, myz);
    myfunc();
    return 0;
}

간단히 할 수 있습니다.#define따로따로

#define QUERY1 "SELECT a,b,c "
#define QUERY2 "FROM table..."

그리고 나서 그들을 하나의 정의에 합류시킵니다.

#define QUERY QUERY1 QUERY2

여러 가지 방법이 있습니다.

  • 변수를 하나의 파일에 배치하고, 헤더에 외부 변수를 선언하고, 필요한 경우 해당 헤더를 포함합니다.
  • 매크로 정의 끝에 '\'를 추가하기 위해 외부 도구를 사용하는 것을 고려합니다.
  • 당신의 게으름을 극복하고 당신의 변수를 당신의 모든 파일에 외부로 선언합니다.

언급URL : https://stackoverflow.com/questions/5499504/shared-c-constants-in-a-header

반응형