call .c-file from arduino sketch

Hey guys,
I have a project with an OLED and use the U8g2lib to controll this.

I have a arduino sketch “bootscreen_test.ino” and a file with an XBMP arry in it, “bootscreen.c”

but I can’t call that c-file from my sketch, can anybody help me?

boootscreen.c

// bootscreen.c
// Font type    : Bootscreen
// Font size    : 128x64 pixels

#include <avr/pgmspace.h>

#define bootscreen_width 128
#define bootscreen_height 64

static const unsigned char bootscreen_bits[] PROGMEM = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0xc0, 0x07, 0xff, 0xf1, 0x3f, 0xf8, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0xff, 0xf3, 0x3f, 0xf8, 0x3c, 0x00,
   0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x3c, 0x0e, 0xe7,
   0x70, 0xf0, 0x19, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x38, 0x78, 0x0e, 0xe7, 0x6c, 0xf0, 0x19, 0x00, 0x00, 0x00, 0x3e, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x70, 0x8e, 0xe7, 0x0c, 0xb0, 0x1b, 0x00,
   0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x70, 0xfe, 0xe3,
   0x0f, 0xb0, 0x1b, 0x00, 0x00, 0x00, 0xc3, 0x07, 0x00, 0x00, 0x00, 0x00,
   0x1c, 0x70, 0xfe, 0xe1, 0x0f, 0x30, 0x1f, 0x00, 0x00, 0xc0, 0x83, 0x0f,
   0x80, 0x03, 0x00, 0x00, 0x1c, 0x70, 0x0e, 0xe0, 0xcc, 0x30, 0x9f, 0x0f,
   0x00, 0xc0, 0x03, 0x1a, 0xc0, 0x0f, 0x00, 0x00, 0x3c, 0x78, 0x0e, 0xe0,
   0xcc, 0x30, 0x9e, 0x0f, 0x00, 0xc0, 0x03, 0x1a, 0xc0, 0x0f, 0x00, 0x00,
   0x78, 0x3c, 0x0e, 0xe0, 0x70, 0x30, 0x1e, 0x00, 0x00, 0xf0, 0x01, 0x70,
   0xe0, 0x18, 0x00, 0x00, 0xf0, 0x1f, 0x1f, 0xf0, 0x7f, 0x78, 0x1c, 0x00,
   0x00, 0xf8, 0x01, 0xe0, 0x70, 0x70, 0x00, 0x00, 0xc0, 0x07, 0x1f, 0xf0,
   0x7f, 0x78, 0x1c, 0x00, 0x00, 0xfc, 0x01, 0x80, 0x3d, 0xe0, 0x1e, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00,
   0x1f, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x18, 0xff, 0x00, 0x00, 0x1e, 0x00, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x18, 0xff, 0x00, 0x00, 0x1e, 0x00, 0xde, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00,
   0x3e, 0x00, 0x9c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0xc7, 0x7f, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x80, 0x01, 0x7c, 0x00, 0x00, 0x70, 0x00, 0x20, 0x08,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x78, 0x00, 0x00,
   0x60, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
   0x00, 0x38, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x60, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00,
   0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x38, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x70, 0x08, 0x03,
   0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x08, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0xe0, 0x61, 0x3e, 0xc2, 0x3f, 0x3c, 0x3e, 0xcf,
   0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x63, 0x8c, 0x73,
   0x66, 0x66, 0x8c, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x63, 0x0c, 0x63, 0x66, 0x7e, 0x8c, 0x9f, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0xe0, 0x63, 0x0c, 0x63, 0x66, 0x06, 0x8c, 0x81,
   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x63, 0x0c, 0x63,
   0x66, 0x46, 0x8c, 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0xf0, 0xf7, 0xb8, 0xf7, 0xff, 0x3c, 0x38, 0xcf, 0x03, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
   0xe0, 0x03, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x48, 0x20, 0x00, 0x08, 0x1c,
   0x91, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x49,
   0xe0, 0x01, 0x08, 0x22, 0x91, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x10, 0x49, 0x20, 0x00, 0x08, 0x22, 0x91, 0x18, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x31, 0x20, 0x08, 0x08, 0x22,
   0x91, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x20,
   0x20, 0x08, 0xf8, 0x1c, 0x9e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00 };

bootscreen_test.ino

#include <U8g2lib.h>
#include <Arduino.h>

#define OLED_DC    9
#define OLED_CS    10
#define OLED_RESET 8
U8G2_SH1106_128X64_NONAME_F_4W_HW_SPI u8g2(U8G2_R2, OLED_CS, OLED_DC, OLED_RESET);

extern static const unsigned char bootscreen_bits[];

void setup() {
  // put your setup code here, to run once:
  u8g2.begin();
}

void loop() {
  // put your main code here, to run repeatedly:
u8g2.firstPage();
  do {
      u8g2.drawXBMP(0, 0, bootscreen_width, bootscreen_height, bootscreen_bits);
      } while ( u8g2.nextPage() );
  delay(4000);

}

The XBMP works if I put everything in the arduino sketch

What possible reason is there for naming the file with a .c extension? The Arduino is programmed using C++.

There is really no reason why the extension isn't .h. There is no executable code in the file.

I changed it to *.cpp and it works.

Why is *.h better then *.c or *.cpp?

Why is *.h better then *.c or *.cpp?

A .h file can be included in a .ino file, resulting in one compilation unit, not two.