Remix.run Logo
dlcarrier 4 days ago

C has a lot of feature creep, and C++ is just C with extra feature creep.

The original C compiler ran on a PDP-11, which usually had just kilobytes of RAM. The syntax was written around compiling with such limited resources, hence the need for headers, primitives, semicolons, linkers, and so on.

It has changed a lot over time, but seems to be adding baggage, not removing it.

Joker_vD 4 days ago | parent | next [-]

The original C compiler had no need for headers or function prototypes/forward declarations. Of course, it also was not a single-pass compiler: it had two (and a half) passes and generated assembly that would then be assembled by a two-pass assembler.

fuzztester 4 days ago | parent [-]

Yes, function prototypes were introduced in the first ANSI version of C, IIRC, which came some years after the original C. The prototype feature was described in the second version of the classic K&R C book, The C Programming Language.

pjmlp 4 days ago | parent [-]

Function prototypes came to ANSI/ISO C via the ongoing work on ISO C++.

fuzztester 4 days ago | parent [-]

Doesn't matter where it came from - in the context of my previous comment.

I was talking w.r.t. the earlier version of C, and not in connection with C++.

pjmlp 4 days ago | parent [-]

It does from historical purposes, how the C standard came to be, what are the decisions that turned K&R C into C89.

pjmlp 4 days ago | parent | prev [-]

Only for C89 versus C++98, in current days of C2y versus C++23, they are two worlds apart.