วิธีใช้ GCC กับภาษา C ด้วย -Wall

สำหรับคำสั่งของ GCC ที่ใช้การ compile ใน ภาษา C ที่สำคัญและมีประโยชน์อีกคำสั่งนั้นก็คือ –Wall
โดย –Wall นั้นหมายความวว่าเราต้องการให้ GCC แจ้งเตื่อน Warning ทั้งหมด หรือ Show warning all นั้นเอง

ตัวอย่างของ การใช้ –Wall และผลลัพธ์ของการเตื่อน Warning

helloworld3.c

#include <stdio.h>
#include "helloworld3.h"

int main (void)
{
    int x;

    
    printf("%s\n", HELLO);
    return 0;
}

helloworld3.h

#define HELLO "HELLO WORLD 3"

จะเห็นว่าถ้าไม่ใช้ -Wall ก็จะไม่มีคำเตื่อนอะไรเลย

ส่วนถ้าใส่ -Wall ก็จะขึ้นดังรูป

จะเห็นว่ามี Warning บอกว่า 6:9 warning : unused variable ‘x’
นั้นหมายความว่า ไม่มีการใช้งานตัวแปร x โดยตัวเลข 6:9 นั้นเป็นการบอกตำแหน่งของ warning ที่ source code บรรทัดที่ 6 คอลัมน์ที่ 9 (นับเป็น space ก็จะได้ 9 space)

วิธีใช้ GCC กับภาษา C

วิธีการ Compile ภาษา C โดยใช้ Gnu GCC compilerในกรณีที่มีไฟล์ภาษา C หนึ่งไฟล์ สามารถ Compile ออกมาเป็นโปรแกรมได้โดยใช้คำสั่งตามนี้

ในกรณี Windows (compile เพื่อให้ output ออกมาเป็นไฟล์ exe)

gcc –o ชื่อโปรแกรม.exe ชื่อไฟล์..c

หรือ

gcc ชื่อไฟล์..c –o ชื่อโปรแกรม.exe

ในกรณี Linux (compile เพื่อให้ output เป็นไฟล์ที่ไม่ต้องมีนามสกุล หรือจะเป็นไฟล์ที่มีนามสกุล.out ก็ได้เช่นกัน)

gcc –o ชื่อโปรแกรม ชื่อไฟล์..c

หรือ

gcc –o ชื่อโปรแกรม.out ชื่อไฟล์..c

หรือ

gcc ชื่อไฟล์..c –o ชื่อโปรแกรม

หรือ

gcc ชื่อไฟล์..c –o ชื่อโปรแกรม.out

จะเห็นว่าสามารถสลับตำแหน่งการเรียงคำสั่งได้


ตัวอย่างเช่นถ้าเรามีไฟล์ helloworld.c

#include <stdio.h>

int main (void)
{
    printf("HELLO WORLD\n");
    return 0;
}

Compile helloworld.c ใน Windows

gcc –o helloworld.exe helloworld.c
helloworld.exe

Complie helloworld.c ใน Linux

gcc –o helloworld helloworld.c
./helloworld

ส่วนในกรณีที่ ไฟล์ C ของเรามีการ include header file เข้ามาด้วย เวลาใช้คำสั่ง gcc ก็ไม่ต้องสนใจไฟล์ header .h ให้เราทำการ compile แค่ไฟล์ .c ตามปกติ
ตัวอย่างเช่น
helloworld2.c

#include <stdio.h>
#include "helloworld2.h"

int main (void)
{
    printf("%s\n", HELLO);
    return 0;
}

helloworld2.h

#define HELLO "HELLO WORLD 2"

Complie helloworld.c ใน Windows

gcc –o helloworld2.exe helloworld2.c
helloworld2.exe