传递 std::数组变量作为参数

passing std::array variable as argument

本文关键字:参数 数组 std 传递 变量      更新时间:2023-10-16

我需要帮助来解决我面临的问题。

我想要一个函数原型,它在两个实例中接受两种不同类型的参数。

例如如下所示: 我有一个如下所示的结构:

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调用此函数时:

Buffer buf = ...;
Test(&buf, 1);

使用std::array调用它时:

std::array<Buffer, 2> buffers = ...;
Test(buffers.data(), buffers.size());

如果您希望 length 参数是可选的,则有两个使用两个不同名称的函数,不幸的是:

void TestOne(Buffer *);
void TestMany(Buffer *, size_t);