複数のcファイル間で特定のC文字列定数を共有したい。読みやすくするために、定数は複数行にまたがっています。
const char *QUERY = "SELECT a,b,c "
"FROM table...";
上記を実行すると、QUERYの再定義エラーが発生します。すべての行の後にバックスペース「\」が必要になるため、マクロを使用したくありません。これらを別のcファイルで定義し、hファイルで変数をexternすることもできますが、それを行うのは面倒です。
Cでこれを達成する他の方法はありますか?
一部の.cファイルに、記述した内容を記述します。適切な.hファイルに、
extern const char* QUERY; //just declaration
定数が必要な場所に.hファイルを含めます
他に良い方法はありません:) HTH
静的定数を使用して、すべての意図と目的に合わせて効果を達成できます。
myext.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
myfunc.h:
#ifndef MYFUNC_H
#define MYFUNC_H
void myfunc(void);
#endif
myfunc.c:
#include "myext.h"
#include "myfunc.h"
#include <stdio.h>
void myfunc(void)
{
printf("%d\t%lu\t%f\n", myx, myy, myz);
}
myext.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..."
そして、それらを1つの定義に結合します
#define QUERY QUERY1 QUERY2
いくつかの方法があります