我想在多个C文件中共享某些C字符串常量。这些常量为了易读性跨越了多行:
const char *QUERY = "SELECT a,b,c "
"FROM table...";
执行上述操作会导致QUERY的重新定义错误。我不想使用宏,因为需要在每行后面添加反斜杠“\”。我可以将这些内容定义在单独的c文件中,并在h文件中extern变量,但我感到懒得这样做。
在C语言中有其他方法可以实现这一点吗?
我想在多个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文件。
没有其他好方法:)
.c
文件中编写声明要好。而且你知道 Ctrl+C
-- Ctrl+V
也可以工作。 - Sadique您可以使用静态常量,实现您的目的。
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..."
然后将它们合并为一个定义
#define QUERY QUERY1 QUERY2
有几种方法
const
隐含地意味着static
。https://dev59.com/bmct5IYBdhLWcg3wgNnR#53541011 - Ciro Santilli OurBigBook.com