我需要帮助来解决我面临的问题。
我想要一个函数原型,它在两个实例中接受两种不同类型的参数。
例如如下所示: 我有一个如下所示的结构:
typedef struct BufferStruct
{
unsigned long BufferType;
unsigned long TheAddress;
} Buffer;
Run Code Online (Sandbox Code Playgroud)
我有一个名为 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.
Run Code Online (Sandbox Code Playgroud)
C 没有函数重载。使用单个函数解决此问题的最简单方法是采用指向指针Buffer和长度:
void Test(Buffer *buffer, size_t length);
Run Code Online (Sandbox Code Playgroud)
使用单个调用此函数时Buffer:
Buffer buf = ...;
Test(&buf, 1);
Run Code Online (Sandbox Code Playgroud)
使用 调用它时std::array:
std::array<Buffer, 2> buffers = ...;
Test(buffers.data(), buffers.size());
Run Code Online (Sandbox Code Playgroud)
如果您希望 length 参数是可选的,那么不幸的是,您有两个使用两个不同命名的函数:
void TestOne(Buffer *);
void TestMany(Buffer *, size_t);
Run Code Online (Sandbox Code Playgroud)