popo_new 发表于 2015-11-26 07:15:35

在N个输入数据中找出极值的函数,请教应该如何申明变量?

想做一个求极大极小值的函数,假设有10个输入数据,输入数据有可能是(先不考虑负数吧),实数,4字节整数,2字节整数,8位整数,

函数都必须先声明变量,返回值也必须声明变量,如何处理会比较好点。谢谢

ibichao 发表于 2015-11-26 08:50:51

union tagXXX
{
        int xx1,
        char xx2,
        long xx3,
        float xx4
        ..........
};

typedef struct
{
        char nType;
        union tagXXX dat;
}myData;

takashiki 发表于 2015-11-27 09:17:09

如果你用了C++,请使用泛型。大概像这样:template<typename T>
void GetMinMax(const T Data[], T* Max, T* Min){
    ...
}
如果没使用C++,那你的不考虑负数与实数难道不冲突吗?请模拟使用泛型,大概像这样:#define DefineGetMinMax(T) \
void GetMinMax_##T(const T Data[], T* Max, T* Min){        \
    ...                \
}

//然后进行具体函数实现
DefineGetMinMax(float)
DefineGetMinMax(int32_t)
DefineGetMinMax(uint8_t)
...

//调用
GetMinMax_float(data /* float data */, &max, &min);
GetMinMax_uint8_t(data /* uint8_t data */, &max, &min);
页: [1]
查看完整版本: 在N个输入数据中找出极值的函数,请教应该如何申明变量?