cembeddedreadabilitymicroprocessors

Making large constants in C source more readable?


I'm working on some code for a microprocessor.
It has a few large, critical constants.

#define F_CPU 16000000UL

In this case, this is the CPU frequency. In Hertz.

As it is, it's rather hard to tell if that's 1,600,000, 160,000,000 or 16,000,000 without manually tabbing a cursor across the digits.

If I put commas in the number #define F_CPU 16,000,000UL, it truncates the constant.

I've worked with a few esoteric languages that have a specific digit-separator character, intended to make large numbers more readable (ex 16_000_000, mostly in languages intended for MCUs). Large "magic numbers" are rather common in embedded stuff, as they are needed to describe aspects of how a MCU talks to the real world.

Is there anything like this in C?


Solution

  • One possibility is to write it like that:

    #define F_CPU (16 * 1000 * 1000)
    

    alternatively

    #define MHz (1000*1000)
    #define F_CPU (16 * MHz)
    

    Edit: The MHz(x) others suggested might be nicer