# Get started with C++

## Compiling with g++

คำสั่ง g++ คือคำสั่งเรียกคอมไพเลอร์ GNU C++ ซึ่งใช้สำหรับการประมวลผลล่วงหน้า การรวบรวม การประกอบ และการเชื่อมโยงซอร์สโค้ดเพื่อสร้างไฟล์ปฏิบัติการ&#x20;

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FNbmERQWPhmFkSlLQaL2q%2Fimage.png?alt=media&#x26;token=395b547a-0cbd-4b9c-819e-3c9676495f07" alt=""><figcaption><p>Compiler</p></figcaption></figure>

### ![](https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FgOqY04tHSbbcZJoNjIeA%2Fimage.png?alt=media\&token=1f7cc1b7-355d-4d49-9e27-0932f03e5072)![](https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FJgt21Y20zSpr8Abmcvfn%2Fimage.png?alt=media\&token=fb264c40-b5b0-4820-a33c-9fad43cc56b9)

### Check g++ Version

<pre><code><strong>g++ --version
</strong></code></pre>

<div align="left"><figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FY75LP96hwLp1ZspqgfDU%2Fimage.png?alt=media&#x26;token=db7367c9-648b-4457-8313-877f948d0d1c" alt=""><figcaption><p>ตัวอย่าง</p></figcaption></figure></div>

### Let's start using compiler

```cpp
g++ -c file_name
```

* `g++ -c file_name` ใช้เพื่อคอมไพล์และรวบรวม file\_name เท่านั้น และไม่เชื่อมโยง Object code เพื่อสร้าง execute file. มันจะสร้างไฟล์ file\_name.o ในไดเร็กทอรีการทำงานปัจจุบัน

```cpp
g++ file_name -o target_name
```

* &#x20;g++ file\_name -o target\_name รวบรวมและเชื่อมโยง file\_name และสร้าง executable target file ด้วยตั้งชื่อตาม target\_name (หรือ a.out ตามค่าเริ่มต้น/default)

&#x20;              **ตัวอย่าง**

{% code title="main.cpp" %}

```cpp
#include <iostream>
using namespace std;

int main() {
   cout << "Hello world!!!" << endl;
   return 0;
}
```

{% endcode %}

<div align="left"><figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2F6q3TdwVrfCs0VGvBdoMQ%2Fimage.png?alt=media&#x26;token=23f27058-3274-400b-888f-6b8d58a1feb9" alt=""><figcaption><p>compiling</p></figcaption></figure></div>

<div align="left"><figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2F7k9pm7YXsKESr7Wr9YjV%2Fimage.png?alt=media&#x26;token=7f5d320c-0f84-43cc-9359-11f22d421aed" alt=""><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FQvkaNZvRTnKuTPRWb39R%2Fimage.png?alt=media&#x26;token=e2b14b88-777d-40f1-8fde-9c040b8521a8" alt=""><figcaption></figcaption></figure></div>

## Header file

Header file จะมาช่วยลดความซับซ้อนและจำนวนบรรทัดของโค้ด นอกจากนี้ยังช่วยให้เราได้รับประโยชน์จากการนำฟังก์ชันที่ประกาศไว้ในไฟล์ส่วนหัวกลับมาใช้ใหม่

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FUtJTkVx4ZmM8fnL2wGL7%2Fimage.png?alt=media&#x26;token=9d4f01cc-11f4-4a64-a66a-ab8cd17f7205" alt=""><figcaption><p>Ref: <a href="https://www.simplilearn.com/tutorials/cpp-tutorial/guide-to-understand-cpp-header-files">https://www.simplilearn.com/tutorials/cpp-tutorial/guide-to-understand-cpp-header-files</a></p></figcaption></figure>

".h"  เรียกอีกอย่างว่า Header File หมายถึงไฟล์ที่อยู่ส่วนบนของประโยค main() ประกาศเอาไว้ เพื่อเรียกใช้คำสั่งที่ถูกจัดเก็บไว้ใน Header file นั้น ๆ

Ref: <https://www.geeksforgeeks.org/compiling-with-g-plus-plus/>
