How to call C functions from Arduino sketch?
You can extern "C" #include like the following:

extern "C"{
#include "crc16.h"
};

void setup(){
}

void loop(){
  CalculateCRC16("&lt;09M", 4);
}


And the crc16.h file could be (some minor fixes, the #pragma once, a cast):

#pragma once

#include &lt;stdio.h&gt;
#include &lt;stdint.h&gt;

uint16_t crctable[2] ={ 0x0000, 0x1189};

uint16_t CalculateCRC16( // Call example CalculateCRC16("&lt;09M", 4);
    const void *c_ptr, // Pointer to byte array to perform CRC on
    size_t len)        // Number of bytes to CRC
{
    uint16_t crc = 0xFFFF; // Seed for CRC calculation
    const uint8_t *c = (const uint8_t *)c_ptr;

    while (len--)
        crc = (crc &lt;&lt; 8) ^ crctable[((crc &gt;&gt; 8) ^ *c++)];

    return crc;
}