2
การออกแบบการเข้ารหัส C - ตัวชี้ฟังก์ชั่น?
ฉันมีPIC18F46K22และตั้งโปรแกรมด้วยคอมไพเลอร์ XC8 ในท้ายที่สุดผมจะมีระบบเช่นเครื่องคอมพิวเตอร์ด้วยและstdin stdoutดังนั้นในลูปหลักจะมีฟังก์ชันที่ตรวจสอบว่ามีอินพุตใหม่หรือไม่ หากมีการป้อนข้อมูลฟังก์ชั่นจะถูกเรียกตาม ตัวอย่างเช่นเมื่อฉันป้อน A บนstdinPIC จะเรียกใช้ฟังก์ชันเช่นfunction_Aแทนที่จะfunction_Bเรียกว่าเมื่อฉันป้อน a เมื่อ PIC เสร็จสิ้นด้วยฟังก์ชั่นฉันต้องการให้อินพุตใหม่ถูกส่งไปยังฟังก์ชั่น ดังนั้นเมื่อกด A จะเปิดตัวส่งสัญญาณ RS232 จากช่วงเวลานั้นทุกอินพุตจะถูกส่งผ่าน RS232 ในที่สุดโครงการนี้เป็นโปรแกรมแก้ไขข้อความแบบสแตนด์อโลน ดังนั้นเมื่อกด A จะเป็นการเปิดระบบไฟล์จากช่วงเวลานั้นคุณจะไม่แก้ไขข้อความอีกต่อไป แต่ลองดูรายการไฟล์ต่างๆ นั่นหมายความว่าการกดขึ้นและลงหมายถึงสิ่งที่แตกต่างจากในสภาพแวดล้อมการแก้ไขข้อความ ฉันได้คิดมากเกี่ยวกับวิธีการเขียนโปรแกรมใน C. ฉันคิดว่าเมื่อคืนนี้และอยากจะรู้ว่าเป็นไปได้หรือไม่และถ้าเป็นเช่นนั้น สิ่งที่ฉันต้องการจะทำคือ: mainเรียกฟังก์ชันการทำงานเช่นfunction_A function_Aเปลี่ยนตัวแปรโกลบอลfunction_addrเป็นตัวชี้แอดเดรสของฟังก์ชันin_function_A จากช่วงเวลานั้นmainเรียกใช้ฟังก์ชันfunction_addrเมื่อมีอินพุตใหม่ สิ่งที่ฉันต้องการคือmainฟังก์ชั่นที่ตรวจสอบว่าfunction_addrเป็นศูนย์หรือไม่ ถ้ามันเป็นฟังก์ชั่น 'ปกติ' function_Aควรจะเรียกว่าเหมือน ถ้าไม่ใช่ฟังก์ชันที่function_addrควรจะถูกเรียก ฉันยังต้องfunction_Aซึ่งการเปลี่ยนแปลงที่จะชี้ไปยังfunction_addrin_function_A หมายเหตุ: เมื่อควรปิดฟังก์ชั่นระบบแฟ้มis_function_Aควรเปลี่ยนfunction_addrเป็น 0 ดังนั้นโดยทั่วไปคำถามของฉันคือฉันจะทำอย่างไร รับที่อยู่ของฟังก์ชั่น (และเก็บไว้ในตัวแปร) เรียกใช้ฟังก์ชันตามที่อยู่ที่ระบุ