我需要帮助解决我面临的一个问题。
我希望有一个函数原型,在两个实例中接受两种不同类型的参数。
例如如下所示:我有如下所示的结构:
typedef struct BufferStruct
{
unsigned long BufferType;
unsigned long TheAddress;
} Buffer;
我有一个名为Test的函数,这个函数应该接受两种不同类型的参数
1) std::array<Buffer, 2> axBuffer;
2) Buffer axBuffer;
void Test(??)/* function argument ?*/
These are C functions and not C++.
Can someone please help me in getting the appropriate function prototype for the function named "Test"?
Advanced thanks.
C没有函数重载。 使用单个函数处理这一问题的最简单方法是使用指向buffer
的指针和长度:
void Test(Buffer *buffer, size_t length);
使用单个缓冲区
调用此函数时:
Buffer buf = ...;
Test(&buf, 1);
使用std::array
调用它时:
std::array<Buffer, 2> buffers = ...;
Test(buffers.data(), buffers.size());
如果您希望长度参数是可选的,则需要使用两个不同名称的函数,不幸的是:
void TestOne(Buffer *);
void TestMany(Buffer *, size_t);