我想在多个c文件中共享某些C字符串常量。为了便于阅读,常量跨越多行:
const char *QUERY = "SELECT a,b,c "
"FROM table...";
执行上述操作会为QUERY提供重新定义错误。我不想使用宏,因为每行后都需要退格'\'。我可以在单独的c文件中定义这些并在h文件中对变量进行extern但是我觉得我很懒。
在C中还有其他方法可以实现吗?
答案 0 :(得分:26)
在某些.c文件中,写下你写的内容。 在相应的.h文件中,写
extern const char* QUERY; //just declaration
将.h文件包含在需要常量
的任何位置没有其他好方法:) HTH
答案 1 :(得分:9)
您可以使用静态效果,所有意图和目的都可以实现效果。
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;
}
答案 2 :(得分:2)
您可以将#define
分开
#define QUERY1 "SELECT a,b,c "
#define QUERY2 "FROM table..."
然后将它们加入一个定义
#define QUERY QUERY1 QUERY2
答案 3 :(得分:0)
有几种方法