连接字符串和结构成员以形成另一个结构 欢迎来到堆栈溢出。你能不能请你的问题和a)标记相关的语言,b)将所有信息添加到问题本身,c)用一个清晰的例子明确你想做什么。你只能在编译时使用标记粘贴操作符##来连接标记。它不是一般的字符串连接方法,在运行时不做任何事
连接字符串和结构成员以形成另一个结构连接字符串和结构成员以形成另一个结构 欢迎来到堆栈溢出。你能不能请你的问题和a)标记相关的语言,b)将所有信息添加到问题本身,c)用一个清晰的例子明确你想做什么。你只能在编译时使用标记粘贴操作符##来连接标记。它不是一般的字符串连接方法,在运行时不做任何事,c,macros,concatenation,C,Macros,Concatenation,连接字符串和结构成员以形成另一个结构 欢迎来到堆栈溢出。你能不能请你的问题和a)标记相关的语言,b)将所有信息添加到问题本身,c)用一个清晰的例子明确你想做什么。你只能在编译时使用标记粘贴操作符##来连接标记。它不是一般的字符串连接方法,在运行时不做任何事情。您尝试使用str_cat(SpeedAmpPhs,SpeedFreq[0].ID),这会产生SpeedAmpPhsSpeedFreq[0].ID,它不是一个已知变量。您需要编写“正确”的字符串操作代码,处理内存分配并使用中的函数等。 #in
欢迎来到堆栈溢出。你能不能请你的问题和a)标记相关的语言,b)将所有信息添加到问题本身,c)用一个清晰的例子明确你想做什么。你只能在编译时使用标记粘贴操作符
##
来连接标记。它不是一般的字符串连接方法,在运行时不做任何事情。您尝试使用str_cat(SpeedAmpPhs,SpeedFreq[0].ID)
,这会产生SpeedAmpPhsSpeedFreq[0].ID
,它不是一个已知变量。您需要编写“正确”的字符串操作代码,处理内存分配并使用
中的函数等。
#include<stdio.h>
#include<string.h>
#define num_Harmonics 4
typedef struct
{
char *ID;
float fre;
}SpeedFrequency_t;
typedef struct
{
float amp;
float ph;
}SpeedAmpPhase_t;
#define str_cat(A,B) A ## B
int main()
{
SpeedFrequency_t SpeedFreq[num_Harmonics];
SpeedAmpPhase_t SpeedAmpPhs1X;
SpeedAmpPhase_t SpeedAmpPhs2X;
SpeedAmpPhase_t SpeedAmpPhs3X;
SpeedAmpPhase_t SpeedAmpPhs4X;
SpeedFreq[0].ID = "1X";
SpeedFreq[0].fre = 30;
SpeedFreq[1].ID = "2X";
SpeedFreq[1].fre = 60;
SpeedFreq[2].ID = "3X";
SpeedFreq[2].fre = 90;
SpeedFreq[3].ID = "4X";
SpeedFreq[3].fre = 160;
// concatenate the SpeedAmpPhs and SpeedFreq[0].ID to form the
// another structure SpeedAmpPhs1X and assign the appropriate
// Value
str_cat(SpeedAmpPhs,SpeedFreq[0].ID).amp = SpeedFreq[0].fre;
str_cat(SpeedAmpPhs,SpeedFreq[0].ID).ph = SpeedFreq[0].fre * 15;
return 0;
}
error: 'SpeedAmpPhsSpeedFreq' undeclared (first use in this function);
did you mean 'SpeedAmpPhs1X'? str_cat(SpeedAmpPhs,SpeedFreq[0].ID).amp = SpeedFreq[0].fre;