ฟังก์ชันคงที่ในภาษาคอมพิวเตอร์ซี

Fangkchan Khngthi Ni Phas A Khxmphiwtexr Si



“คงที่” เป็นคำสงวนในภาษาคอมพิวเตอร์ C เป็นตัวระบุคลาสการจัดเก็บที่สามารถใช้กับฟังก์ชันได้ โปรแกรม A C สามารถมีได้มากกว่าหนึ่งไฟล์ ไฟล์เดียวเท่านั้นที่ควรมีฟังก์ชัน C main() ในบทความนี้จะพิจารณาเพียงสองไฟล์เท่านั้น: ไฟล์ที่มีฟังก์ชัน C main() ซึ่งเรียกว่า mainFile.c และไฟล์อื่นที่ไม่มีฟังก์ชันหลักซึ่งเรียกว่า otherFile.c

Global Function

ฟังก์ชันโกลบอลคือฟังก์ชันที่กำหนดไว้ในไฟล์ C ก่อนฟังก์ชัน main() แม้แต่ฟังก์ชัน main() ก็ยังเป็นฟังก์ชันส่วนกลาง แต่ฟังก์ชัน main() ไม่ได้เป็นจุดสนใจในบทความนี้ ในภาษา C ฟังก์ชันที่กำหนดโดยโปรแกรมเมอร์มักเป็นฟังก์ชันสากลและเรียกง่ายๆ ว่าฟังก์ชัน

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







ดังนั้น ฟังก์ชันส่วนกลางที่กำหนดไว้ใน otherFile.c จึงสามารถเห็นได้ทุกที่ใน otherFile.c เพื่อให้สามารถเห็นได้ใน mainFile.c จะต้องประกาศต้นแบบใน mainFile.c (ดูด้านล่าง) คำจำกัดความใน otherFile.c ไม่ควรนำหน้าด้วย 'คงที่' เพื่อป้องกันไม่ให้ปรากฏใน mainFile.c คำจำกัดความใน otherFile.c จะต้องทำให้ static ลบเครื่องหมายจุลภาคออกโดยนำหน้าด้วยคำว่า static



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



การรวบรวมไฟล์ mainFile.c และ otherFile.c สามารถทำได้ด้วยคำสั่งเทอร์มินัล Bash ต่อไปนี้:





ไฟล์หลัก gcc ไฟล์อื่น ๆ - อุณหภูมินั้น exe

temp.exe เป็นชื่อของไฟล์ที่เรียกใช้งานเดี่ยวที่เป็นผลลัพธ์

เนื้อหาบทความ



– บทนำ – ดูด้านบน

– ต้นแบบฟังก์ชัน C

– ฟังก์ชั่นสากล

– ฟังก์ชันคงที่ที่เหมาะสม

- บทสรุป

ต้นแบบฟังก์ชัน C

พิจารณานิยามฟังก์ชันส่วนกลาง:

char * fn1 ( char * สตริ ) {
กลับ สตริ ;
}

ต้นแบบสำหรับฟังก์ชันนี้คือ:

char * fn1 ( char * สตริ ) ;

เป็นลายเซ็นฟังก์ชันซึ่งลงท้ายด้วยอัฒภาค

ตอนนี้ให้เนื้อหาของ otherFile.c เป็น:

char * fn1 ( char * สตริ ) {

กลับ สตริ ;

}

สมมติว่าไฟล์ otherFile.c มีคำจำกัดความของฟังก์ชันส่วนกลางเท่านั้น fn1() ตอนนี้ให้เนื้อหาของไฟล์ mainFile.c เป็น:

#include

char * fn1 ( char * สตริ ) ;

int หลัก ( )
{
char * str = fn1 ( 'เห็น' ) ;
printf ( '%s \n ' , str ) ;

กลับ 0 ;
}

เริ่มต้นด้วยการรวมส่วนหัว (ไลบรารี) ตามด้วยการประกาศฟังก์ชันต้นแบบ fn() ของไฟล์อื่น

ไฟล์หลักนี้ไม่มีคำจำกัดความของฟังก์ชันส่วนกลางใด ๆ นอกเหนือจากฟังก์ชัน main() เริ่มต้น ในฟังก์ชันหลัก คำสั่งแรกเรียกใช้ฟังก์ชัน fn1() ที่กำหนดไว้ในไฟล์อื่น การเรียกนี้จะไม่มีผลหากไม่มีการประกาศต้นแบบของ fn1() ในไฟล์นี้ mainFile.c

หากผู้อ่านได้เข้ารหัสไฟล์สองไฟล์ข้างต้นแล้ว เขาสามารถคอมไพล์โปรแกรมเป็นไฟล์ปฏิบัติการไฟล์เดียวโดยใช้คำสั่งต่อไปนี้:

ไฟล์หลัก gcc ไฟล์อื่น ๆ - อุณหภูมินั้น exe

กดปุ่ม Enter ที่ท้ายบรรทัด ผลลัพธ์ควรเป็น 'เห็น'

Global Function

ไฟล์ mainFile.c สามารถแก้ไขได้ดังนี้:

#include

char * fn1 ( char * สตริ ) ;

char * fn ( char * เซนต์ ) {
กลับ เซนต์ ;
}

int หลัก ( )
{
char * str1 = fn1 ( 'เห็น' ) ;
printf ( '%s \n ' , str1 ) ;
char * str2 = fn ( 'ทั่วโลกเห็นในไฟล์ของมัน' ) ;
printf ( '%s \n ' , str2 ) ;
กลับ 0 ;
}

ขณะนี้ มีสองฟังก์ชันสากลในไฟล์ mainFile.c ชื่อของฟังก์ชันคือ fn() และ main() dfn() เป็นฟังก์ชันสากล ได้รับการเห็นในขอบเขตท้องถิ่นของฟังก์ชัน main() โดยการเรียก ในภาษา C ฟังก์ชันโกลบอลในขอบเขตโกลบอล เช่น fn() เรียกง่ายๆ ว่าฟังก์ชัน นอกจากนี้ ฟังก์ชันโกลบอล fn1() ในไฟล์ otherFile.c ยังถูกเรียกง่ายๆ ว่าเป็นฟังก์ชัน

หากไฟล์ทั้งสองถูกคอมไพล์ใหม่เป็น temp.exe ผลลัพธ์จะเป็น:

เห็น

ทั่วโลกเห็นในไฟล์

หมายเหตุ: คำจำกัดความของฟังก์ชันสำหรับ fn() ยังสามารถกำหนดให้มองเห็นได้ในไฟล์อื่น otherFile.c เพื่อให้บรรลุที่มีการประกาศต้นแบบใน otherFile.c ดังนี้:

char * fn ( char * เซนต์ ) ;

ลงท้ายด้วยเครื่องหมายอัฒภาค กิจกรรมนี้เหลือไว้เป็นแบบฝึกหัดสำหรับผู้อ่าน

ฟังก์ชันคงที่ที่เหมาะสม

จากการสนทนาข้างต้น สามารถเห็นฟังก์ชันในขอบเขตใดก็ได้ (ทุกที่) ในไฟล์ นอกจากนี้ยังสามารถเห็นได้ในไฟล์อื่นสำหรับโปรแกรมเดียวกันหากมีการประกาศต้นแบบ เพื่อป้องกันไม่ให้มองเห็นคำจำกัดความของไฟล์ในไฟล์อื่น ให้กำหนดคำจำกัดความคงที่โดยนำหน้าด้วยคำสงวน สแตติก แม้ว่าจะมีการประกาศต้นแบบในไฟล์อื่น แต่ก็ยังไม่เห็นในไฟล์อื่น ไฟล์โปรแกรมจะไม่คอมไพล์ด้วยซ้ำ เพื่อแสดงสิ่งนี้ ให้เนื้อหาของไฟล์ otherFile.c เป็น:

คงที่ char * fn1 ( char * สตริ ) {

กลับ สตริ ;

}

นี่เป็นเนื้อหาเดียวกันในไฟล์ otherFile.c เหมือนเมื่อก่อน แต่มีคำสงวนก่อนหน้า คงที่ เนื้อหาของไฟล์ mainFile.c ยังคงเหมือนเดิม หากมีการพยายามรวบรวมไฟล์โปรแกรมด้วยคำสั่ง

ไฟล์หลัก gcc ไฟล์อื่น ๆ - อุณหภูมินั้น exe

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

บทสรุป

นิยามฟังก์ชันในภาษา C เป็นฟังก์ชันสากล ฟังก์ชั่นนี้สามารถเรียก (เห็น) ในทุกขอบเขตในไฟล์ เพื่อให้ฟังก์ชันนี้ปรากฏในไฟล์อื่น เช่น ไฟล์หลัก ต้องพิมพ์การประกาศต้นแบบในไฟล์อื่น เพื่อป้องกันไม่ให้มีการแสดงฟังก์ชันนี้ในไฟล์อื่น ให้นิยามเป็นสแตติกโดยนำหน้าด้วยคำสงวน สแตติก