What is "..." in switch-case in C code

c, gcc, gcc-extensions

Solution

This is a `gcc` extension called case ranges, this is how it is explained in the document:

You can specify a range of consecutive values in a single case label, like this:

case low ... high:

You can find a complete list of gcc extensions here. It seems like clang also supports this to try and stay compatible with `gcc`. Using the `-pedantic` flag in either `gcc` or `clang` will warn you that this is non-standard, for example:

warning: range expressions in switch statements are non-standard [-Wpedantic]

It is interesting to note that Linux kernel uses a lot of gcc extensions one of the extensions not covered in the article is statement expressions.

Problem

Here is a piece of code in `/usr/src/linux-3.10.10-1-ARCH/include/linux/printk.h`: ``` static inline int printk_get_level(const char *buffer) { if (buffer[0] == KERN_SOH_ASCII && buffer[1]) { switch (buffer[1]) { case '0' ... '7': case 'd': /* KERN_DEFAULT */ return buffer[1]; } } } ``` Is it a kind of operator? Why does "The C Programming Language" not mention it?

Original source

Related problems