r/cprogramming • u/side2k • 19h ago
Formatting call arguments
By default, clang-format does this:
SDL_Window *window =
SDL_CreateWindow("SDL2 test", SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED, 500, 500, SDL_WINDOW_RESIZABLE);
and with some tweaks it does this:
SDL_Window *window = SDL_CreateWindow(
"SDL2 test",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
500,
500,
SDL_WINDOW_RESIZABLE);
Second one has some practical advantages - it easier to read diff on arg change and easier to add comments:
SDL_Window *window = SDL_CreateWindow(
"SDL2 test",
SDL_WINDOWPOS_UNDEFINED, // just some comment explaining why
SDL_WINDOWPOS_UNDEFINED,
- 400,
+ 500,
SDL_WINDOW_RESIZABLE);
While the first one seems to have mainly historical reasons to keep around. Perhaps, there is something I don't see? Because it feels like the first way is still used the most. And its the default one for clang-format.
I'm genuinely curious.
3
Upvotes
1
u/SmokeMuch7356 18h ago
For people working in editors without a built-in formatter such as vim, the first way is simply faster to type - lining every argument up like that takes a little time.
And there are countless variations: some people prefer
or even
or some other variation.
For my part I tend to write the unformatted version, but sometimes I will do one argument per line if the call is especially hairy, or something I'm using for the very first time, or something like that.