我在C.指针在结构常数字符串
在header1.h
写我声明指针到恒定串(的char
恒定阵列),新型带struct和这种类型的可变和另一个变量:
const char *str_ptr = "Hello world!";
struct entry_t {
const char *text;
int var;
};
typedef entry_t entry;
extern entry start_entry;
int a;
在文件func.c
我定义了新的变量:
#include "header1.h"
entry start_entry = {str_ptr, a};
void func(void)
{
//here i use start_entry
}
但是,编译举报我电子RROR
恒定表达所需
参照的start_entry
的初始化,特别是const char*
构件的。 为什么?错误在哪里?
当然,如果我定义字符串作为
const char str[] = "Hello world!";
然后entry
变量
entry start_entry = {&str, a};
一切正常。
EDIT_1
我在报告我的代码做了两个错误:
var为
const
太结构entry_t { 为const char *文本; const int var; };
在func.c 进入是
const
太常数项start_entry;
EDIT_2
我不在乎VAR的,我关心的是const char *
成员(即使也许问题是相同的:我之前写的代码错误,还与int var
我有一个错误...)。 我要重新定义一切:
//header1.h
const char *str_ptr = "Hello world!";
struct entry_t {
const char *text;
};
typedef entry_t entry;
extern const entry start_entry;
//func.c
#include header1.h
const entry start_entry = {str_ptr};
void func(void)
{
//here i use start_entry
}
我不明白为什么start_entry有const char*
成员,我有const char*
定义它,但有这个错误。
看起来您正在使用C++编译器。在C中,在源代码中没有单独定义'entry_t'。 – pmg
请提供一个最小的,完整的和可验证的例子:http://stackoverflow.com/help/mcve –
我敢打赌你正在使用非gcc编译器吗?你能告诉我们你正在使用哪种编译器吗? –