[OT] Error handling in C3 language

Ali Çehreli acehreli at yahoo.com
Thu May 29 21:18:39 UTC 2025


On 5/29/25 1:18 PM, Kagamin wrote:

 > But striving to be evolution of C, faults look like error code
 > singletons and apparently don't carry much information.

Same here.

I've been using a macro system in a C++ library that exposes a C API. 
All implementation functions return an optional type that automatically 
errors if not checked. Equivalents of enforce(), assert(), etc. 
automatically return an invalid optional.

Here is your point: There is a constant-length buffer that collects a 
backlog of error messages from function calls. Exhausting the buffer is 
not an error; the lowest-level error messages are retained. That buffer 
is just 4K, which is 0 bytes to my eyes :).

The caller of the C API receives a C array of error strings that they 
can print to see exactly what happened. Sweet...

Oh... oh... and all formatted error messages are actually generated in a 
development build even when there are no errors, to prove that error 
messages will render and look correct when generated. (The buffer is a 
lot larger in that case, not 4K.) Very sweet indeed... :)

Ali



More information about the Digitalmars-d mailing list