gpt4 book ai didi

C预处理器保留多行

转载 作者:太空宇宙 更新时间:2023-11-04 05:59:03 26 4
gpt4 key购买 nike

我需要在 C 中对多个不同类型的数组执行相同的操作。

我使用 void * 编写了一个函数来接收所有类型:

void
floatarraymanip(void *inarray)
{
float *array=(float *)inarray;

[SEVERAL LINES OF OPERATIONS]-------------
} |
|
void |
longarraymanip(void *inarray) ----> Same
{ |
long *array=(long *)inarray; |
|
[SEVERAL LINES OF OPERATIONS]-------------
}

void
arraymanip(void *array, char *arraytype)
{
if(strcmp(arraytype,"FLOAT")==0)
floatarraymanip(array);
if(strcmp(arraytype,"LONG")==0)
floatarraymanip(array);
}

[SEVERAL LINES OF OPERATIONS] 完全相同并且相对较长(大约 50 行)。我还需要为其他几种类型执行此操作,使我的当前版本的源代码非常长!

所以我的问题是:有什么方法可以将所有这些行保留在预处理器中的一个命令中,并在所有这些函数中调用该预处理器变量,从而使程序变得更短且更易读?

最佳答案

你可以像这样把整个函数做成宏:

#define MACRO(X) { \
first line command \
second line command \
third line \
last line \
}

您还可以将类型用作宏的一部分:

#define MACRO(TYPE,X) { \
TYPE var = X; \
first line command \
second line command \
third line \
last line \
}

并这样调用它:

MACRO(int, i)
MACRO(int*, p)
MACRO(float*, array)

编辑最好添加 {} ...

关于C预处理器保留多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22039516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com