반응형
헤더의 공유 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
반응형
'codememo' 카테고리의 다른 글
| Xml 문서를 문자열로 변환 (0) | 2023.08.06 |
|---|---|
| if($variable)는 정확히 어떻게 작동합니까? (0) | 2023.08.06 |
| "pch.h"는 무엇이며 왜 첫 번째 헤더 파일로 포함되어야 합니까? (0) | 2023.08.06 |
| 자바스크립트에서 정규식 리터럴을 연결하려면 어떻게 해야 합니까? (0) | 2023.08.06 |
| PowerShell을 사용하여 파일 연결 (0) | 2023.08.06 |