>> อยากสร้างเป็น Library ไว้ใช้งานเองน่ะครับ

Started by TaoTao, May 12, 2013, 09:07:18 PM

Previous topic - Next topic

TaoTao

คือ กำลังจะรวบรวม โค้ด ที่เคยสร้างๆ ไว้
เป็น Library เพื่อ ง่ายในการอ่าน การเรียกใช้ และดูไม่รกตา

ใครพอจะ ไกด์ไลน์ ได้บ้างน่ะครับ

เพราะตอน Create มีมีอะไรให้เลือก มากมายไปหมด งงเจงๆ @_@!

เลยยังทำไม่สำเร็จครับ อ่านหนังสือ เห็นมันก็บอกง่ายๆ ว่า ทำนามสกุลเป็น
*.h และไม่ต้องมี main()

เวลาใช้ ก็ include เข้ามา
แต่ ลองแล้ว ก็ยังไม่สำเร็จ ไม่รู้จะ Link มันยังไง

อ้อ ผมใช้ MPLAB_X น่ะคร๊าบบบ

@_@! @_@! @_@!

p_chusak

เอาแบบผมใหม ผมใช้ตอนเขียนใหม่ๆ จนป่านนี้ก็ยังใช้รูปแบบเดิมคือ
   1.สร้างเฉพาะ file.c แล้วเขียน comment ไว้ว่าใน file นั้นมี function อะไรบ้าง และส่วนของการตั้งค่า hardware ก็ defineไว้ที่หัว file ตัวแปรที่ใช้งานสำคัญก็ประกาศเป็น global ในนั้นเลย
   2.include มาทั้ง file เลยโดยใช้การ include ผ่าน code ใน main ผมไม่นิยมการ add ผ่าน IDE เพราะว่าเราจะงงเอง IDE แต่ละตัวจัดการไม่เหมือน  การ include โดยใช้หลักการพื้นฐานของภาษา C ที่ว่า ทุก function ที่จะใช้จะต้องมีการประกาศก่อนใช้งาน เราจะใช้อะไร ก็แค่ จัดการ include อยู่บนหัวของตัวที่จะใช้
   3. เมื่อเรา include ใส่ไว้ใน code แล้ว เราก็เอาเข้ามาใน ide เพื่อทำการแก้ใขได้ ใน MPLABX นั้นเราไปตั้งค่าของ file ให้เป็น exclude from project เพื่อไม่ให้มันซ้ำซ้อนกับการ include ใน code เราครับ
     
     ผมทำแบบนี้ตลอด เพราะว่าขี้เกียจประกาศ .h อีกที เสียเวลา ตัว compiler เดี่ยวนี้มันฉลาด แม้เราจะ include แต่ถ้าไม่ใช้มันจะตัดทิ้งให้เอง ตอนทำงานจริงๆ มันจะมี file ใช้งานไม่มากหรอกครับ ซ้ำกันแทบทุก project

Chairat

ลอง Copy ไฟล์เฮดเดอร์ไปใส่ใน โฟลเตอร์ include ของ Compiler ท่านดูครับ


p_chusak

อันนี้เป็นรูปแบบที่ผมชอบใช้ อาจจะไม่ถูก หรือ ดีที่สุด แต่ผมชอบที่สุด

JENG

Quote from: p_chusak on May 12, 2013, 10:25:47 PM
อันนี้เป็นรูปแบบที่ผมชอบใช้ อาจจะไม่ถูก หรือ ดีที่สุด แต่ผมชอบที่สุด

ใช้เหมือนกันเลยป๋าชู เคยทำ .h .c แยกแล้วให้ compile link ให้
พอเปลี่ยน compile บางทีใช้ไม่ได้เฉย แถมเวลาแก้มันจะงงมาก
หลังๆมา .c อันเดียว อยากใช้อะไรก็ include เข้าไป ชีวิตง่ายขึ้นเยอะ ...  ;D
สามารถติดตาม electoday ได้ที่

Facebook
www.facebook.com/groups/coopmicro

Google+
https://plus.google.com/communities/103482067769375459277

☺☺☺ความรู้ และความฉลาด ไม่ใช่สิ่งเดียวกัน จะมีประโยชน์อะไร ถ้าฉลาดแต่อยู่ในกะลา☺☺☺

TaoTao

Quote from: p_chusak on May 12, 2013, 10:25:47 PM
อันนี้เป็นรูปแบบที่ผมชอบใช้ อาจจะไม่ถูก หรือ ดีที่สุด แต่ผมชอบที่สุด

แฮ่ๆ ได้ลองแล้วบ้างครับ
ลองแบบ ง่ายๆ คอมไพล์ยังไม่ผ่านเลย T_T!
ไม่รู้ว่าขาดอะไรไป
ทุกที จะทำเป็นแต่ ฟังค์ชั่น และการเรียกใช้งานน่ะครับ

ผมลองโค้ด ง่ายยยยยๆ แบบนี้น่ะครับ
อันนี้ ใน newmain.c

//----------------------------------- newmain.c-----------------------------------------------------------------
#include <xc.h>

#include "Lib.c"

int y;

void main (){
    y=func(2);
}


อันนี้ ใน Lib.c ครับ
//--------------------------------------------- ใน Lib.c ----------------------------------------------------------

#include <xc.h>

int func(int x){
    return(x+x);
}
//-----------------------------------------------------------------------------------------------



มันขึ้น error อย่างนี้น่ะครับ
//--------------------------------------------- E r r o r------------------------------------------------------------------
Lib.c:3: error: function "_func" redefined
(908) exit status = 1
make[2]: *** [dist/default/production/Test_include_c.X.production.hex] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
make[2]: Leaving directory `C:/Users/mr.TaoTao/Desktop/Test include/Test_include_c.X'
make[1]: Leaving directory `C:/Users/mr.TaoTao/Desktop/Test include/Test_include_c.X'


ขอบคุณล่วงหน้าครับ

Wiz

แบบท่าน p_chusak ก็สะดวกดีครับ ใช้ได้แน่นอนกับทุกคอมไพเลอร์ แต่เพิ่มเติมนิดนึงตอนตั้งชื่อตัวแปรโกลบอลและฟังก์ชั่น ต้องให้แน่ใจว่าต่างจากของเก่าที่เคยเขียนไว้ครับ

ส่วนตัวผมชอบแบบแยก .c .h มากกว่าครับ ใช้ pre-processor ช่วยจัดการพารามิเตอร์ ตอนทำงานอาจจะยุ่งยากนิดหน่อยแต่เข้ากันได้กับงานของคนอื่น ๆ ข้อดีข้อเสียก็ต่างกันไปครับ

สำหรับบางคอมไพเลอร์ที่มีปัญหากับระบบหลาย source file ก็จำใจใช้วิธี include .c เหมือนกันครับ

TaoTao

เหอะๆ ใช่ประมาณว่า

1. เอาฟังก์ชั่นที่เคยใช้ มาโยกไว้อีกเอกสาร Lib.c อันนึง

2. และ #include ที่บนหัวกระดาษ ของ main.c

3. และ เรียกใช้ฟังก์ชั่น ได้เลย จากหน้าของ main.c หรือเปล่าครับ

ทำไมผมลองแล้ว มันบอก ฟังชั่นที่เรียกใช้ใน main.c  ขึ้นว่า "function redefined"

@_@!

มันต้องเพิ่มเติมตรงไหนอีกอ่ะครับ
ลองมั่ว มาหลายกระบวนท่าละ ยังคอมไพล์ไม่ผ่าน

@_@   @_@   @_@