连接字符串和结构成员以形成另一个结构 欢迎来到堆栈溢出。你能不能请你的问题和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;