How Compilation Works Internally In C And C++?
Vložit
- čas přidán 29. 08. 2024
- JOIN ME
-----
CZcams 🎬 / @cppnuts
Patreon 🚀 / cppnuts
COMPLETE PLAYLIST
------------
C++ Tutorial For Beginners: • Introduction To C++
STL (Standard Template Library): • STL In C++
ThreadIng In C++: • Multithreading In C++
Data Structures: • Data Structure
Algorithms: • Binary Search
Design Patterns: • Factory Design Pattern...
Smart Pointers: • Smart Pointer In C++
C++14: • Digit Separator In C++
C++17: • std string_view in C++...
C++ All Type Casts: • static_cast In C++
INTERVIEW PLAYLIST
------------
C++ Interview Q&A: • Structural Padding & P...
C++ Interview Q&A For Experienced: • How delete[] Knows How...
Linked List Interview Questions: • Find Kth Node From Bac...
BST Interview Questions: • Search Element In Bina...
Array Interview Questions: • Reverse An Array
String Interview Questions: • Check String Is Palind...
Bit Manipulation Questions: • Find Set Bit In Intege...
Binary Tree Interview Question: • Invert Binary Tree
Sorting Algorithms: • Bubble Sort
C++ MCQ: • Video
C MCQ: • What printf returns af...
C Interview Questions: • Designated Initializat...
QUICK SHORT VIDEOS
-------------
C++ Short : • C++ Short Videos
C Short : • Shorts C Programming MCQ
In this video we'll learn about How Compilation Works Internally In C And C++, it is very common question in C and C++ programming interviews.
There are several steps your program goes through when it is being compiled and i have tried to cover almost all the steps in details.
#cpp #interviewquestions #programming #tutorial #coaching #beginners #computerscience #softwareengineering
Hi everyone, Don't forget to hit LIKE and SUBSCRIBE button for more videos like this!!
And this will help me a-lot.
Sir, can I have your mail-id, Actually, I'm an embedded Engineer Fresher in need of guidance gone through your c++ videos while viewing this video you mentioned ready queue I want to get in-depth knowledge c++ programming with Kernel.
Please reply
Happy to see you so interested in c++, but i am not from Embedded background so i don't have much info about your question. But try hard in google you will get the answer for your questions i am sure.
Exceptional , simply so lucid and effective way of sharing knowledge. This page deserved million views and like for the quality content it have. Thank you so much for all the help and tutorials
Thanks man..
No problem
Y i was missed cppnuts these many days.luckly i found today.Thank you sir.Asome topics and explanation.
Thanks man, share with friends so that they can be benefited too.
Basic and Useful concise video.Thank you for this post. Compiler does not mean it only gives *.o files.But there are things happening underhood such as preprocessor, then proprocessor files are used by compiler and process it and gives assembler code.Then assembler code code was used by Assembler and after it processed it gives object files.Then object files and static libraries are used by linker and process then gives executable file.Then executable file and the dll,.so files are used by Loader to load into the OS. You guys are really helping a lot of C++ people including you.Expecting many more concepts.
I appreciation it.
It is so nice of you to create these videos. Thank you Very Much. One request .. Could you please explain the member functions(static/non-static) and where it is stored in memory model(code/Data/Stack/Heap) and how the call is performed ?
Thanks a lot! This really cleared some of my doubts. Good job.
Faroque AI Jakaria Hi..
Welcome Dude..
Keep Learning!!
Please add in depth videos, i rellly love this, and you should start teaching OS with c++, you will definetly rock
Sure.. man thanks..
Great teaching boss
I Love The Video
Many many thanks
g++ fileName.cpp --save-temps also worked on Windows! Thank you so much, I glad to know about your channel by one of my true friend.
Glad to help!
wow man....
this is so cool
looking under the hood to see all the assembly level code written.
Thanks dude..
Hi man .... What i am saying it might be more than expectation ..... Can you make some video for real time work and how industry is working on the c++ and how it works .....too many underprivileged people can make benefit from it No one is there like you that's why i am requesting....
Again Many many thanks to you for your great job ...
Nice work bro ... Your videos are very helpful ...Keep it up
+Rohit Benake hi..
i would :D
thanks dude..
It would be good if you can upload video about how dynamic and static libraries are loaded during program execution?
+Rais Shaikh Hi..
Nice question, wait for next week. :)
Love your videos! Keep up the good work!
Thanks
u r like a classical pianist virtuoso except you use keyboard. pretty impressive.
Thanks for such a nice comment!! :D
In windows We use
g++ -o main.exe main.cpp --save-temps
To get assembler file, preprocessor file and object file
perfect explanation
Thanks man...
Hi you doing great job Regularly i am watching your video
i have an doubt
Q1. Why derived class pointer can not point to base class pointer?
Q2. If we are not creating the copy constructor compiler will provide the copy constructor But if we write our own the copy constructor then how the compiler know no need to create the copy constructor?
Thanks
Ans 1: i will create a video for this, so stay tuned for your answer.
Ans 2: copy constructor syntax is fixed so when you are compiling code then compiler checks for copy constructor syntax in your class and if that is available then compiler doesn't provide its own.
many many thanks to you :)
Why derived class pointer can not point to base class pointer?: Because a base class pointer do not have any idea about the content of Base class so when pointing a derived class pointer to a base class will cause an error. You can do the upcasting to perform such operations.
your videos are amazingly informative and very helpful.
Do you know how do I capture pre-processor output?
In linux there is an option u can provide while compiling which is save-temps which should give u that, i dont know in windows. And google about save-temps u will get it.
Very Good Explanation ...👍
+Rohit Benake hi..
thank you so much.. :D
great explanation!
Glad it was helpful!
Please explain about static and dynamic libs
Wonderful explanation sir👍👍👍
Thanks man.
Nicely explained bro👍
Thanks man..
Thanks for sharing
My pleasure
good one bro... u deserve more subs
+Sonu Lohani hi..
thanks for your appreciation, and i will have one day for sure.. ;)
Thanks for this awesome explanation
Welcome
Awesome explanation 🔥
Glad you liked it
just a bit of suggestion, please combine your knowledge with Operating Systems, it will really boost up your channel
Sure.. i will try..
When we say new state of operating system where is our code(hard disk or ram?
Like u said that loader loads the executable to ready state of OS?
When you double click any application, then the application will get converted into pages and will be stored in RAM. This is new state. Page creation is very big topic search it. (if you already don't know)
Does Linker create .exe file in case of ubuntu , because .exe are only compatible with windows OS
Thanks
Thanks
Why adding function to structure or class doesn't increase its size but variable increases its size...?
Can you please explain.
Can u pls explain how .dll and .so is linked/loaded while running executable? Thanks in advance:)
i dont understand .in the diagram u said .asm file generates first and assembler converts .asm to .obj file...and demo u showed that obj file generates before .asm file
.asm come first then .obj.
Parsing the Template in preprocess stage or in compile stage?
+Iron Core hi..
it happens at compile time.
can you prove that cuz i'm little some confused!
one last thing, someone said: if C++ templates are implemented by preprocessing, there will be issues with dynamic linking(using .dll).
how could this happen?
+Iron Core Read second answer. stackoverflow.com/questions/6264249/how-does-the-compilation-linking-process-work
I have a doubt.If Dll is linked with .exe then why our code throws error while building program if we dont mentioned path of dll.According to your concept it should throw error when i will try to run not build?
Please let me know if I am wrong.
Good question. Dynamic libraries (dll or .so) are also looked by linker for resolving symbols. You can run ldd to see from where it is linking.
Good Job :-)
Thanks man!!
will you please explain the compilation steps in windows
It is similar, there is no difference in compilation when it comes to OS.
If my program compile successfully then how it fails at linking time?
sunil singh Hi..
It can not compile successfully if not linked properly, for example linking means it can see whether the definition of every function i have used is available if not than linking error.
[Preprocessor -> Compiler -> Linker] ==>> all these phases combined together is called Compiler.
Don't get confuse with 2nd step being named as compiler i don't know why they kept it so confusing (everything all together is called compiler and 2nd step is also called compiler).
If you are still confuse please wait for my another video where i will take an example and will explain all the intermediate steps with that.
Thank you sir
#include
void foo()
{
#define MY_NAME "Alex"
}
int main()
{
std::cout
#define will be available after defining it, and in second case you are trying to use before defining.
@@CppNuts So at the time of compilation it read the value of MY_NAME and replace at where ever it find MY_NAME.
It has only file and global scope right?
@@jotirlingswami9357 #define can be inside functions also, and it has nothing to do with compilation, as it will be processed during preprocessing time.
But your 2nd program is not working because MY_NAME is not replaced with preprocessor because when preprocessor would have reached to line:
std::cout
@@CppNuts Very good explanation
Thank you sir
Cool
The comment is replaced with empty new line after preprocessor in *.ii file.
are you a student?
+Sonu Lohani hi..
No dude i work, and fallen in love to make videos and want to make a huge channel for C & C++.
CppNuts if you dont mind can i ask where do you work
+Sonu Lohani hi..
Dude thanks for your interest, i work in Bangalore.
Company i can't tell because i want to keep it secret until i announce this channel in my friend circle. :D
Thanks for sharing the details... Its ok to keep it as secret. I also work in Bangalore as C++ dev.
+Sonu Lohani hi..
great.. can you share the company if it's ok with you. ;)
ok?ok?ok?
yess one of my bad habits.. :)
CppNuts usually you get this habit by talking to south Indians 😂 . But hey if you could tell us more about shared objects and how do they work . It would be really helpful.
Yes i am in Bangalore :), and i didn't get your question about shared objects plz explain more..?
Hi , I am also a c++ developer . First you get .o and then linker generates .lo . I am clear to these steps . But how does .so are generated and I think I read somewhere that they are dynamic linked (how does that work? ). If you could make a separate video for explaining shared objects it would be really helpful.
Ok, that requires another video will try some day..
Thanks
Welcome..