text: I am a C++ learner and I came across a concept of separating code into multiple files to speed up compiling process on bigger projects.
  However what the book doesn't tell me and I have tried to find it in other books and on the web, but with no luck is how does linker (during compilation) knows what files to include.
  When I make new file I connect its header to the main file with
  #include "newfile.h"
  #include <iostream>
  #include "krneki_H.h"
  using namespace std;
  int main()
  {
  krneki1();
  krneki2();
  krneki3();
  }
  void krneki1();
  void krneki2();
  void krneki3();
  #include <iostream>
  #include "krneki_H.h"
  using namespace std;
  void krneki1() {
  cout<<"Krneki1"<<endl;}
  void krneki2() {
  cout<<"Krneki2"<<endl;}
  void krneki3() {
  cout<<"Krneki3"<<endl;}
  No. It doesn't just know to use it. In your example, if you compile with
  main.cpp and without that new cpp file, you'll get an "undefined reference" error.
  What happens is that you're using a fancy IDE that automatically compiles all cpp files. It includes them all by default in your makefile.
  I recommend that you try to design a makefile from scratch, and see for yourself how you'll get that "undefined reference" error if you don't include the cpp file that has the implementations of your functions.