[英]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.