繁体   English   中英

如何使用 function 返回初始化结构成员?

[英]How to initialize a struct member with a function return?

我正在尝试使用返回连接字符串的 function 初始化结构成员。

#include <stdio.h>
#include <string.h>

char* concat(char* dest, char* src) {
    strcat(dest, src);
    return dest;
}

char string1[15] = "hello";
char string2[15] = "world";

typedef struct {
    char* member;
} STATE;

STATE default_state = {
    concat(string1, string2)
};

这是错误消息:

错误:初始化元素不是常量

concat(字母,数字)

初始化在编译时完成并计算。 您不能在编译时调用 function。 在编译时,编译器需要知道初始化值,但它不能运行任何 function。

要么在运行时延迟初始化,你可以在那里调用任何你想要的 function,或者使用编译器可以使用的立即值。

例如,使用"str1" "str2"被视为广告"str1str2"的事实,您可以编写以下代码:

#include <stdio.h>
#include <string.h>

char* concat(char* dest, char* src) {
    strcat(dest, src);
    return dest;
}

#define HELLO "hello"
#define WORLD "world"
char string1[15] = HELLO;
char string2[15] = WORLD;

typedef struct {
    char* member;
} STATE;

STATE default_state = {
    HELLO WORLD
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM