Re: C++ pushback

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Linus Torvalds wrote:

On Wed, 26 Apr 2006, Jan-Benedict Glaw wrote:
There's one _practical_ thing you need to keep in mind: you'll either
need 'C++'-clean kernel headers (to interface low-level kernel
functions) or a separate set of headers.

I suspect it would be easier to just do

	extern "C" {
	#include <linux/xyz.h>
	...
	}

instead of having anything really C++'aware in the headers.

If by "clean" you meant that the above works, then yeah, there might be _some_ cases where we use C++ keywords etc in the headers, but they should be pretty unusual and easy to fix.

The real problem with C++ for kernel modules is:

 - the language just sucks. Sorry, but it does.
Sorry, you do not know the language, and your statement is not credible. I think that C sucks.

- some of the C features we use may or may not be usable from C++ (statement expressions?)
Statement expressions are working fine in g++. The main difficulties are:
   - GCC's structure member initialization extensions are syntax
     errors in G++: struct foo_t foo={.member=0};
   - empty structures are not zero-sized in g++, unless they are like
     this one: struct really_empty_t { char dummy[0]; };

- the compilers are slower, and less reliable. This is _less_ of an issue these days than it used to be (at least the reliability part), but it's still true.
G++ compiling heavy C++ is a bit slower than gcc. The g++ front end is reliable enough. Do you have a particular bug in mind?

- a lot of the C++ features just won't be supported sanely (ie the kernel infrastructure just doesn't do exceptions for C++, nor will it run any static constructors etc).
A lot of C++ features are already supported sanely. You simply need to understand them. Especially templates and type checking. C++ exceptions are not very useful tool in kernels. Static constructor issue is trivial. I use all C++ features (except exceptions) in all projects: Linux kernel modules, embedded real-time applications, everywhere. They _really_ help a lot.


Anyway, it should all be doable. Not necessarily even very hard. But I doubt it's worth it.

		Linus

I think that allowing C++ code to co-exist with the kernel would be a step forward.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux