【发布时间】:2021-08-23 10:22:47
【问题描述】:
我正在尝试使用返回串联字符串的函数初始化结构成员。
#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(字母、数字)
【问题讨论】:
-
该错误消息与您的
concat函数本身无关,它与您如何无法在全局(文件范围)变量的初始化程序中调用函数有关。要么将default_state设为局部变量,要么在main的早期对其进行初始化,或者将其初始化为编译时已知的字符串。另请注意,您的concat函数将更改string1,因此稍后使用它可能会导致意外。