Home » Using C/C++ on Raspberry Pi with Examples (Complete 2026 Guide)

Using C/C++ on Raspberry Pi with Examples (Complete 2026 Guide)

SBC Tutorials

People often think of Python when they think of the Raspberry Pi because it is easy to learn and use. But underneath its user-friendly surface is a powerful Linux-based system that can run compiled languages like C and C++. C and C++ are still some of the best languages for programming on the Raspberry Pi if you want speed, efficiency, and low-level hardware control.

You can write very optimised applications, work closely with the operating system, and build systems that need to be fast, like real-time processing, embedded control, and handling large amounts of data quickly, all with C and C++. These languages are harder to learn than Python, but they give you more control and make things run faster.

This guide is a complete introduction to using C and C++ on Raspberry Pi. It covers installation, compilation, core concepts, GPIO programming, and real-world examples. By the end, you will know how to use these powerful languages to make low-level applications that work well on the Raspberry Pi.

Why Use C/C++ on Raspberry Pi?

C and C++ are basic programming languages that are used in operating systems, embedded systems, and applications that need to run quickly. They have a number of benefits on the Raspberry Pi.

First, they work better than interpreted languages. When you write a program in C or C++, it is turned into machine code, which makes it run faster and use less system resources.

Second, they let you access hardware at a low level. This is especially helpful when programming at the system level, using GPIO, or memory-mapped I/O.

Third, they let you do things in real time and in a predictable way, which is important for robotics, signal processing, and applications that need to be done quickly.

Finally, C++ adds object-oriented features that make it good for big, complicated programs while still keeping speed.

Setting Up the C/C++ Environment

Most Raspberry Pi OS installations already include the GNU Compiler Collection (GCC), which supports both C and C++.

To verify installation:

gcc --version
g++ --version

If not installed, use:

sudo apt update
sudo apt install build-essential

This installs compilers and essential development tools.

Writing Your First C Program

Create a file:

nano hello.c

Add the following code:

#include <stdio.h>

int main() {
    printf("Hello, Raspberry Pi!\n");
    return 0;
}

Compile:

gcc hello.c -o hello

Run:

./hello

Writing Your First C++ Program

Create a file:

nano hello.cpp

Add:

#include <iostream>

int main() {
    std::cout << "Hello, Raspberry Pi!" << std::endl;
    return 0;
}

Compile:

g++ hello.cpp -o hello_cpp

Run:

./hello_cpp

Understanding Compilation

Unlike Python, C/C++ programs must be compiled before execution.

The compilation process involves:

  • Preprocessing
  • Compilation
  • Linking

The result is an executable file that runs directly on the system.

Variables and Data Types

C Example

int a = 10;
float b = 3.14;
char c = 'A';

C++ Example

int number = 5;
double value = 2.5;
std::string text = "Pi";

Control Structures

Conditional Statements

if (a > 5) {
    printf("Greater\n");
} else {
    printf("Smaller\n");
}

Loops

for (int i = 0; i < 5; i++) {
    printf("%d\n", i);
}

Working with Files

Writing to File

FILE *file = fopen("data.txt", "w");
fprintf(file, "Hello Pi");
fclose(file);

Reading from File

FILE *file = fopen("data.txt", "r");
char buffer[100];
fgets(buffer, 100, file);
printf("%s", buffer);
fclose(file);

Example 1: LED Control Using C

To control GPIO in C, libraries such as wiringPi or libgpiod are used.

Example Code (Basic Concept)

#include <wiringPi.h>

int main() {
    wiringPiSetup();
    pinMode(0, OUTPUT);

    while (1) {
        digitalWrite(0, HIGH);
        delay(1000);
        digitalWrite(0, LOW);
        delay(1000);
    }
    return 0;
}

Example 2: Button Input

#include <wiringPi.h>
#include <stdio.h>

int main() {
    wiringPiSetup();
    pinMode(1, INPUT);

    while (1) {
        if (digitalRead(1)) {
            printf("Button Pressed\n");
        }
        delay(200);
    }
}

Example 3: PWM Control

#include <wiringPi.h>

int main() {
    wiringPiSetup();
    pinMode(1, PWM_OUTPUT);

    while (1) {
        pwmWrite(1, 512);
    }
}

Example 4: System Monitoring Tool

#include <stdio.h>
#include <stdlib.h>

int main() {
    system("top -b -n1");
    return 0;
}

Example 5: Simple Calculator in C++

#include <iostream>

int main() {
    int a, b;
    std::cin >> a >> b;
    std::cout << "Sum: " << a + b << std::endl;
}

Using Libraries

Libraries extend functionality.

Install library:

sudo apt install libgpiod-dev

Include in code:

#include <gpiod.h>

Memory Management

C/C++ requires manual memory handling.

int *ptr = malloc(sizeof(int));
*ptr = 10;
free(ptr);

Proper memory management prevents leaks and improves performance.

Error Handling

if (file == NULL) {
    printf("Error opening file\n");
}

Debugging

Use tools like gdb:

gdb program

Performance Advantages

C/C++ programs:

  • Execute faster
  • Use less memory
  • Handle complex computations efficiently

Real-World Applications

C/C++ on Raspberry Pi is used in:

  • Robotics
  • Embedded systems
  • Signal processing
  • Game development
  • High-performance servers

Common Mistakes

  • Forgetting to free memory
  • Pointer errors
  • Compilation errors
  • Incorrect library linking

Tips for Beginners

  • Start with small programs
  • Practice compilation
  • Learn debugging tools
  • Understand pointers gradually

Advanced Topics

  • Multithreading
  • Socket programming
  • Real-time systems
  • Hardware drivers

Advantages of C/C++

  • High performance
  • Low-level control
  • Efficient resource usage
  • Suitable for embedded systems

Limitations

  • Steeper learning curve
  • Manual memory management
  • More complex syntax

Conclusion

When you use C and C++ on a Raspberry Pi, you can get better performance and more control. Python is still a great language for beginners, but C/C++ is a must for developers who need speed, accuracy, and direct access to hardware.

You can make powerful applications, from simple utilities to complex embedded systems, by learning how to write, compile, and optimise C/C++ programs.

When you practise and try new things with these languages, they become very useful for getting the most out of the Raspberry Pi and pushing the limits of what it can do.

You may also like