lkml.org 
[lkml]   [2006]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: C++ pushback
    Date
    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 majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-04-27 01:12    [W:0.029 / U:0.084 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site