Intro4A11
This project has been on my to-do list for a long while..And I guess i would never begin to finish it before my gradu....however, i managed to get it started,so here are the notes,hope u like it:)
1.How C++ Works
Intro
this episode is mainly talk about how the compiler compile a source file into a executable binary/program and the basic structure of a source file.
Let's get started with the HelloWorld program we just wrote.
#include<iostream>
int main()
{
std::cout << "Haven't seen you for so long,cpp" << std::endl;
std::cin.get();
}
Preprocessor Statements
Codes look like this,starts with "#"->
#include<iostream>
are called Preprocess Statement in Cpp. And just as their name,they will be preprocessed before the program is compiled.
For example, in the above statement, iostream is introduced into the program as a preloaded statement to provide definitions & declarations for functions std::cout and std::cin.get.
Compile in Visual Studio
The explain of compile-link process is in article<8086>,we won't talk about it here.
In VS, you can simply compile the current,single C++ file by pressIng the key Ctrl+F7
To Build(compile&link)the whole project, including your Main.cpp and whatever C++ file you got,you can right-click the name of your project in the solution window.
How to add another func..
tbc
2.How the C++ Compiler Works
Intro
We program,to be more precise,we write text and transform it to an actual application so that our computer can run. Actually, this transformation is a 2-step process: Compiling & Linking, in this section we'll talk about Compiling.
Preprocessing
The compiler will pre-execute all Preprocessing statements(the statement with #,including #include,#define,#ifdef),let's take #include as a example,when compiler pre-execute this statement,it basically copy and pastes the code inside the included file:
Endbrace.h:
}
Main.cpp
#include<iostream>
void Bkk(const char* message)
{
std::cout << message << std::endl;
#include"EndBrace.h"
To figure out what
How the Linker works in C++
Variables in C++
To use the data in our program,so we have Variables. Variables are basically a piece of named data storaged in the memory.
Primitive data type
There are multiple primitive data types which almost covers the all type u can imagine in C++.However, since C++ is a powerful language,the only difference you need to be aware of is the size of these variables.
You can check the size of the variable through func "sizeof()"in C++.
and also,you can define reference and pointer thtough
int* a;
int& a;
Functions in C++
Ah,function,here we go again
What for?
Imagine a situation, you need to print a 九九乘法表 on your console with out using any loop, the easiest choice now is to copy and paste such code for 45 times.....?
int a,b;
a= ;
b= ;
cout<< a*b << endl;
Quite an annoying job, isn't it ? You have to "cv" and redefine the variables over and over again,and sometimes it might cuz some unpredictable errors. And it's really difficult to understand these shit code you just wrote.
"Wouldn't it be nice if there was something to integrate these repetitive code?"you thought.
And yes, we do have such "something":
Basic definition
You can define a function with statements in the format below:
type name(parameters)
{
The body of the funtion;
return value;
}
And that magic something you want can be defined like:
void function(int a,int b)
{
cout<< a*b << endl;
}
Return value
The word type here refers to the type of the return value of a function.
In C++,all functions(except void function) MUST have a return value.
Another exception is the main function,its return value defaults to zero so you don't have to declare it manually:)
Fun fact: the return value is only necessary in debug mode💡
How to DEBUG C++ in VISUAL STUDIO
I mean.....mate,you do know how to debug a program in the IDE,right?Just set a breakpoint and track the variable you want in the Monitor window. Such an easy job,isn't it?
Breakpoints
You can set the breakpoints just like any other IDE.
To debug program in VStudio,you need to make sure u are in debug mode now.
Just like the disassembler and IDE youve used before,you can step into, step out ,step over in debug mode.
And yes,the other operations r as sm as in Dev.
Reading Memory
Tips:
The debugger will fill the stack frame with the hex number cc before we actually initialize the varialble;
You can find &c to get the address of the varialble in VS debugger;
You can also find out the debug strings like"Stack around the variable has been corrupted",thats what makes the debug mode slower than the release mode;