C, C++ ... or less?

On an AVR, there is little difference between a "software interrupt" and a "call" instruction, especially without an OS to make svcalls to,

Arduino uses avr-g++, so it supports C and C++, but due to the restrictive hardware environment (2k RAM), many of the C++ constructs you may be used to in a desktop environment are not present. No STL, no libc++, no exceptions, no cout/cin, and very limited dynamic memory allocation. (some of these can be added, sort-of.)

Arduino on ARM. ESP. and RiscV microcontrollers is less limited (there is usually STL), but still not what you'd be used to, due to low RAM.