Hacker News new | ask | show | jobs
by ilikecolemak 761 days ago
Why not just use C? It seems to be what the author is getting at.
2 comments

When I need to refactor a large C codebase the first thing I do is recompile it with C++ - and then fix the missing prototypes and other grit that gets in the way. The cost to do this is minimal but I then have more options (via macros, automatic assignment, etc) to start shoring it up like a retaining wall that's about to fail. At the end of the day, a POD C++ structure with const inline accessors is way easier to reason about and costs nothing once compiled. It probably helps that I started with CFront, so C++ is just C (and C is just assembler with macros.)
The hello world C+ example is literally hello world in C

    #include <stdio.h>
    
    int main()
    {
        printf("hello, world\n");
        return 0;
    }
¯\_(ツ)_/¯
Except that in C (at least prior to C23), it should be "int main(void)".

I'm fairly sure that all existing C compilers will quietly accept "int main()", but there's an argument that "int main()" causes the program to have undefined behavior. "int main(void)" is the form documented in the standard.

And the "return 0;" is unnecessary both in C++ and in all versions of C starting with C99. (Some will argue that it's better style to be explicit.)

These are admittedly minor points.

Meh, the program execution language about main() has included from the beginning an escape hatch: it allows main to be defined “in some other implementation-defined manner.” “int main(void)” is one of four forms documented in the standard (or one of two specific shapes of code; the other two are “or equivalent” and “or in some other implementation-defined manner.”
Ed: ah, I see it's from TFA: "Hello World in Orthodox C++"

Is that really the hello world of c++ though?

It's a bit long in the tooth perhaps, bit I think still highlights some differences between C and C++: "Learning Standard C++ as a New Language":

https://www.stroustrup.com/new_learning.pdf

Ed: I suppose if you want to throw out a lot of c++, then the article might not apply...

Not any longer, this is the modern C++ hello word.

    import std;

    int main()
    {
        std::println("hello, world");
    }
Although your point stands, that is also valid C++.
He is LITERALLY referring to the the example on the page in question.
And I am literally showing that the example is outdated in C++23.
Some programs will work in C as well as in C++. It does not mean that it is not a C++ program.
3 out of 3 people replying haven't been able to differentiate C+ (orthodox C++) from Bjarne Stroustrup's C++. I posted the hello world code to show it's a poor example as it displays similitude between C+ and C.