Basic example hello world
This commit is contained in:
		
							parent
							
								
									7f6bb71b9d
								
							
						
					
					
						commit
						1cf4a8c67e
					
				| 
						 | 
					@ -0,0 +1,6 @@
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main(int argc, char** argv) {
 | 
				
			||||||
 | 
					    printf("Hello, world!\n");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										62
									
								
								README.md
								
								
								
								
							
							
						
						
									
										62
									
								
								README.md
								
								
								
								
							| 
						 | 
					@ -85,3 +85,65 @@ it will get the address of the start of the array `c`, compute the memory addres
 | 
				
			||||||
later, and try to see what's there. This will certainly be gibberish and might cause the
 | 
					later, and try to see what's there. This will certainly be gibberish and might cause the
 | 
				
			||||||
operating system to kill your program.
 | 
					operating system to kill your program.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Setting Up a Development Environment
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To develop C, you need a _compiler_, and it's nice to have a _build system_. I'll assume
 | 
				
			||||||
 | 
					you're on Ubuntu; to install GCC, the GNU Compiler Collection, and make, a build system,
 | 
				
			||||||
 | 
					on Ubuntu, run:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					sudo apt install gcc make
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Now make a directory to work in and open up a file. I'm going to call it `00-helloworld.c`.
 | 
				
			||||||
 | 
					Into that file, type:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```c
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main(int argc, char** argv) {
 | 
				
			||||||
 | 
					        printf("Hello, world!\n");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(I'll explain it all in a sec!)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Now, in the terminal, in that folder, type:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					# GCC, please compile the code in 00-helloworld.c
 | 
				
			||||||
 | 
					# and write the executable out to 00-helloworld.64
 | 
				
			||||||
 | 
					gcc 00-helloworld.c -o 00-helloworld.64
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This should print out "Hello, world!" in your terminal. Let's dissect that.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```c
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Beginning with `#` means that this is a preprocessor directive, telling the compiler
 | 
				
			||||||
 | 
					to look up and include a file called `stdio.h` in the standard search path (because of
 | 
				
			||||||
 | 
					the `<` and `>`, as opposed to `"` and `"` which mean look in the current directory)
 | 
				
			||||||
 | 
					and include its text here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					That file defines, among other things, the function `printf` that is used later.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```c
 | 
				
			||||||
 | 
					int main(int argc, char** argv) {
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This is the definition of the magic function `main`, which is run when the program starts.
 | 
				
			||||||
 | 
					It returns an `int`, which should be zero for success or anything else for failure, and
 | 
				
			||||||
 | 
					takes the number of command line arguments `argc` and an array of arrays of characters
 | 
				
			||||||
 | 
					(an array of strings) `argv`. `c` stands for "count" and `v` for "vector" in this case.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```c
 | 
				
			||||||
 | 
					printf("Hello, world!\n");
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This calls the `printf` function, which `print`s a `f`ormatted string, although we're
 | 
				
			||||||
 | 
					not using any of the formatting options here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Congratulations! This is your first C program~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue