Ответ 1
В некотором .c файле напишите, что вы написали. В соответствующем файле .h напишите
extern const char* QUERY; //just declaration
Включите файл .h, где вам нужна константа
Никакой другой хороший способ:) НТН
Я хочу поделиться некоторыми строковыми константами C в нескольких файлах c. Константы охватывают несколько строк для удобочитаемости:
const char *QUERY = "SELECT a,b,c "
"FROM table...";
Выполнение выше дает ошибку переопределения для QUERY. Я не хочу использовать макрос, поскольку backspace '\' потребуется после каждой строки. Я мог бы определить их в отдельном файле c и extern переменные в файле h, но я чувствую себя ленивым.
Есть ли другой способ достичь этого в C?
В некотором .c файле напишите, что вы написали. В соответствующем файле .h напишите
extern const char* QUERY; //just declaration
Включите файл .h, где вам нужна константа
Никакой другой хороший способ:) НТН
Вы можете использовать static consts, чтобы все ваши намерения и цели были достигнуты.
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
Существует несколько способов