将 std::array 变量作为参数传递

Mad*_*ddy 0 c c++ std

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

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

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

         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)

cdh*_*wie 6

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)