In this homework assignment, you create your project repository and start out with a simple, multi-file C++ program that looks at command-line arguments.

When you run a program at the command line, you can give the program arguments. For example,

./msdscript --help

will run the program msdscript in the current directory with the argument --help. At the C++ level, arguments are passed to a program as the argc and argv arguments to main:

int main(int argc, char* argv[]) {
....
}

The argc passed to main is always at least 1, because the first “argument” (at index 0) is the name of the program as it was run on the command line. If argc is 2, that means the program was given one argument, maybe as

./msdscript --help

and then argv[1] is that argument, which is "--help" in this case.

Your job for this assignment is to create a function use_arguments that main will call. The use_arguments function should take argc and argv and check the arguments in order:

If no arguments trigger an error or exit, then use_arguments should return. Note that there is no requirement on ordering of argument or that any argument is provided; providing zero arguments is allowed.

Put a declaration of use_arguments in a header file "cmdline.h" (or a different name that you like), and then "main.cpp" should contain just

#include "cmdline.h"
int main(int argc, char **argv) {
use_arguments(argc, argv);
return 0;
}

except that "cmdline.h" can be a different file name that you pick.

Create a "Makefile" so that make will compile and link "main.cpp" with "cmdline.cpp" (or some other file name that you choose) to create a program named msdscript. You can and should use a programming environment to develop your program, but in the end, make and ./msdscript should work to build and run.

Add all of your code to your new GitHub repo. In class on Thursday, another student will check out your repo and try to build and run your code using just make and ./msdscript.

Meanwhile, “hand in” your work by providing the URL of your GitHub repo (which will stay the same all semester).