In 2004 I took a course at City College in C++ Programming. As I wait for my new job to start next week I’ve been doing a bunch of maintenance. I found an old backup hard drive and found a folder called cpp
from an old Windows machine I had. I think it was running Windows NT? Anyway, here’s a program!
#include <iomanip> #include <iostream> using namespace std; int main() { int intNum = 111; int &refIntNum = intNum; cout << "intNum is " << intNum << endl; cout << "refIntNum is " << refIntNum << endl; cout << "The memory address of intNum is " << &refIntNum << endl; int intNum2; int &refIntNum2 = intNum2; intNum2 = 222; cout << "intNum2 is " << intNum2 << endl; cout << "refIntNum2 is " << refIntNum2 << endl; cout << "The memory address of intNum2 is " << &refIntNum2 << endl; int intNum3; int &refIntNum3 = intNum3; intNum3 = 333; cout << "intNum3 is " << intNum3 << endl; cout << "refIntNum3 is " << refIntNum3 << endl; cout << "The memory address of intNum3 is " << &refIntNum3 << endl; return 0; }
Definitely a kind of Hello World program possibly from a lecture. I don’t think I have notes from that class at City College anymore. But it was a solid class.
C++ programs are of course compiled. I tried initially on my current Mac (a 2013 machine running the latest MacOS Big Sur) to run cpp Hello.cpp
# 1 "Hello.cpp" # 1 "" 1 # 1 " " 3 # 367 " " 3 # 1 " " 1 # 1 " " 2 # 1 "Hello.cpp" 2 Hello.cpp:1:10: fatal error: 'iomanip' file not found #include ^~~~~~~~~ .... 1 error generated.
Now, iomanip is present on this Mac. It’s at /Library/Developer/CommandLineTools/usr/include/c++/v1/
but I was using the wrong compiler command. I needed to run g++ Hello.cpp
. That command dutifully compiles. How do we know it compiles? Because of course it doesn’t seem to do anything when we run it on the command line! But there is now a file called a.out
in the directory. And when we invoke it in the Terminal.app in that directory by doing ./a.out
we get output!
intNum is 111 refIntNum is 111 The memory address of intNum is 0x7ffee88cf238 intNum2 is 222 refIntNum2 is 222 The memory address of intNum2 is 0x7ffee88cf22c intNum3 is 333 refIntNum3 is 333 The memory address of intNum3 is 0x7ffee88cf21c
It’s kind of an amazing accomplishment that this rather old infrastructure for programming in C++ is built into my machine and I didn’t have to install anything on a completely new machine to compile it. When I think about the relative complexity of getting a random current JavaScript project to run, what with inevitable updates to npm
, wow.