c-如何用函数return初始化结构成员



我正试图用一个返回串联字符串的函数初始化一个结构成员。

#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(字母、数字(

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

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

例如,使用"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
};

最新更新