const char指针在结构中声明

const char pointer declaration in struct

本文关键字:声明 结构 char 指针 const      更新时间:2023-10-16

我正在尝试这样做,但是我的编译器不会让我:

    struct {
        const char* string = "some text";
    } myAnonymousStruct;

我相信这是因为在结构声明中无法进行任何作业 - 它们应该在功能或其他方面进行。但是,我什至真的不允许分配const char*变量吗?
如果有人可以让我知道我缺少的东西,我真的很感激。thx

您的代码在支持C 11或更高版本的编译器上都很好。

在C 11之前,无法默认初始化结构的成员。相反,必须在创建实例结构后初始化它们。

如果适合您的需求,则可以使用类似的汇总初始化:

struct {
    const char* string;
} myAnonymousStruct = { "some text" };

但是,如果您试图默认初始化限制的一个实例,那么您可能需要给您的struct一个构造函数并在其中初始化成员。

struct MyStruct {
    const char* str;
    MyStruct() : str("some text") { }
};
MyStruct foo;
MyStruct bar;

在上一个示例中,foobarMyStruct的不同实例,均为str初始化为"some text"