C, C# and C++ Development

Everything about C and its extensions, C++ and C#.

C, C# and C++ Articles

Extend C++ capabilities with LLVM STLExtras.h

Extend C++ capabilities with LLVM STLExtras.h

October 18, 2019

The LLVM compiler project provides a header file called STLExtras.h that extends the capabilities of C++ without any dependency on the rest of LLVM. In this article, we take a quick look at its basic functionality.

How to debug where a function returns using LLDB from the command line

How to debug where a function returns using LLDB from the command line

September 11, 2019

I often find myself in a situation when I want to know where a function returns. There’s no need to know the return value, as this may be the same for multiple code paths (e.g., nullptr if something went wrong). It is embarrassing, but I sometimes have put fprintf(stderr, "T1"); in my code just to […]

Report from July 2019 ISO C++ Meeting (Core Language)

Report from July 2019 ISO C++ Meeting (Core Language)

September 3, 2019

The summer 2019 C++ meeting was in Cologne, Germany, 10 years since our last meeting in Germany. As usual, Red Hat sent three of us to the meeting: I attended in the Core language working group (CWG), Jonathan Wakely in Library (LWG), and Thomas Rodgers in SG1 (parallelism and concurrency). At the end of the […]

Efficient string copying and concatenation in C

Efficient string copying and concatenation in C

August 12, 2019

Among the most heavily used string handling functions declared in the standard C <string.h> header are those that copy and concatenate strings. Both sets of functions copy characters from one object to another, and both return their first argument: a pointer to the beginning of the destination object. The choice of the return value is […]

How the GNU C Library handles backward compatibility

How the GNU C Library handles backward compatibility

August 1, 2019

One of the GNU C Library’s (glibc’s) unwritten rules is that a program built against an old version of glibc will continue to work against newer versions of glibc. But how does this work? What hidden magic lets you call the same function with different results, just based on when you built your program?

Latest Comments

Waiting for Disqus…