คำถามติดแท็ก c

C เป็นภาษาที่ใช้งานระบบ (ขั้นตอน) ที่จำเป็น มันถูกออกแบบมาให้คอมไพล์โดยใช้คอมไพเลอร์ที่ค่อนข้างตรงไปตรงมาเพื่อให้เข้าถึงหน่วยความจำระดับต่ำเพื่อสร้างภาษาที่แมปได้อย่างมีประสิทธิภาพกับคำสั่งของเครื่องจักรและต้องการการสนับสนุนเวลาทำงานน้อยที่สุด C จึงมีประโยชน์สำหรับแอปพลิเคชั่นมากมายที่เคยเขียนโค้ดในภาษาแอสเซมบลี จาก http://en.wikipedia.org/wiki/C_(programming_language)

9
การใช้สารระเหยในการพัฒนา C แบบฝัง
ฉันได้อ่านบทความและคำตอบของการแลกเปลี่ยนกองซ้อนเกี่ยวกับการใช้volatileคำสำคัญเพื่อป้องกันไม่ให้คอมไพเลอร์จากการใช้การเพิ่มประสิทธิภาพใด ๆ บนวัตถุที่สามารถเปลี่ยนแปลงในวิธีที่ไม่สามารถกำหนดโดยคอมไพเลอร์ หากฉันกำลังอ่านจาก ADC (เรียกว่าตัวแปรadcValue) และฉันประกาศว่าตัวแปรนี้เป็นโกลบอลฉันควรใช้คำหลักvolatileในกรณีนี้หรือไม่? โดยไม่ต้องใช้volatileคำสำคัญ // Includes #include "adcDriver.h" // Global variables uint16_t adcValue; // Some code void readFromADC(void) { adcValue = readADC(); } การใช้volatileคำสำคัญ // Includes #include "adcDriver.h" // Global variables volatile uint16_t adcValue; // Some code void readFromADC(void) { adcValue = readADC(); } ฉันถามคำถามนี้เพราะเมื่อทำการดีบั๊กฉันไม่เห็นความแตกต่างระหว่างทั้งสองวิธีแม้ว่าแนวทางปฏิบัติที่ดีที่สุดจะบอกว่าในกรณีของฉัน (ตัวแปรทั่วโลกที่เปลี่ยนแปลงโดยตรงจากฮาร์ดแวร์) …


9
การคำนวณค่าเฉลี่ยเคลื่อนที่อย่างรวดเร็วและหน่วยความจำมีประสิทธิภาพ
ฉันกำลังมองหาเวลาและโซลูชันที่มีประสิทธิภาพของหน่วยความจำในการคำนวณค่าเฉลี่ยเคลื่อนที่ใน C ฉันต้องหลีกเลี่ยงการหารเพราะฉันใช้ PIC 16 ซึ่งไม่มีหน่วยการแบ่งเฉพาะ ในขณะนี้ฉันเพียงเก็บค่าทั้งหมดไว้ในบัฟเฟอร์บัฟเฟอร์และเก็บและอัปเดตผลรวมทุกครั้งที่มีค่าใหม่มาถึง มันมีประสิทธิภาพจริงๆ แต่น่าเสียดายที่ใช้หน่วยความจำส่วนใหญ่ที่มีอยู่ของฉัน ...
33 pic  c 

2
การกัดบิตคืออะไร
ฉันใหม่สำหรับการเขียนโปรแกรมไมโครคอนโทรลเลอร์ ฉันใช้ ATmega32-A คอนโทรลเลอร์และคอมไพเลอร์ CodeVisionAVR ฉันใช้เครื่องกำเนิดสัญญาณ (AD9833) เพื่อสร้างสัญญาณคลื่นไซน์โดยใช้การสื่อสารแบบ SPI ฉันสามารถสร้างคลื่นไซน์ได้สำเร็จ ตอนนี้ฉันกำลังส่งสัญญาณนั้นไปยังเซ็นเซอร์ เอาต์พุตเซ็นเซอร์ถูกเลือกผ่านมัลติเพล็กเซอร์แล้วส่งไปยัง ADC ตอนนี้ฉันต้องการอ่านค่า ADC โดยใช้การสื่อสาร SPI ฉันพยายามอย่างมากในการตั้งค่าการลงทะเบียนของ ADC มันยังไม่ทำงาน หากต้องการดู SPI สื่อสารรหัสมีลักษณะที่ฉันโพสต์ก่อนหน้านี้ติดตั้ง ADC ลงทะเบียนใช้การสื่อสาร ฉันใช้การสื่อสาร USART (RS232) เพื่อพิมพ์ค่าบนพีซี (PuTTY) มีบางคนแนะนำให้ฉันใช้การกัดบิต ฉันใหม่สำหรับแนวคิดนั้น ผู้ใดสามารถส่งรหัสตัวอย่างของการสื่อสารบิต SPI ให้ฉันได้ จะเริ่มขั้นตอนนั้นได้อย่างไร? ใครช่วยได้บ้างเป็นวัสดุที่ดี ฉันต้องการฮาร์ดแวร์ภายนอกหรือไม่ ฉันได้เขียนสิ่งนี้รวมถึงการเชื่อมต่อพิน: #define ADC_CS PORTB.3 #define MOSI PORTB.5 #define MISO PINB.6 #define SCK …

3
อะไรคือสิ่งที่อยู่ในหน่วยความจำชนิดต่าง ๆ ของไมโครคอนโทรลเลอร์?
มีเซ็กเมนต์หน่วยความจำที่แตกต่างกันซึ่งข้อมูลชนิดต่าง ๆ ถูกใส่ลงในรหัส C หลังจากการคอมไพล์ เช่น: .text, .data, .bssกองและกอง ฉันแค่อยากรู้ว่าแต่ละเซ็กเมนต์เหล่านี้จะอยู่ในหน่วยความจำไมโครคอนโทรลเลอร์ นั่นคือข้อมูลใดที่จะเข้าสู่หน่วยความจำประเภทใดเนื่องจากประเภทหน่วยความจำคือ RAM, NVRAM, ROM, EEPROM, FLASH เป็นต้น ฉันได้พบคำตอบของคำถามที่คล้ายกันที่นี่ แต่พวกเขาไม่สามารถอธิบายได้ว่าเนื้อหาของหน่วยความจำแต่ละประเภทแตกต่างกันอย่างไร ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก ขอบคุณล่วงหน้า!

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 ดังนั้นโดยทั่วไปคำถามของฉันคือฉันจะทำอย่างไร รับที่อยู่ของฟังก์ชั่น (และเก็บไว้ในตัวแปร) เรียกใช้ฟังก์ชันตามที่อยู่ที่ระบุ

5
C ไลบรารี่มาตรฐานบนโลหะเปลือย
ฉันส่วนใหญ่ทำการพัฒนาบนอุปกรณ์ที่มีพอร์ต Linux ดังนั้นไลบรารี C มาตรฐานให้ฟังก์ชันการทำงานจำนวนมากผ่านการเรียกใช้ระบบซึ่งมีพฤติกรรมมาตรฐาน อย่างไรก็ตามสำหรับโลหะเปลือยไม่มี OS พื้นฐาน มีมาตรฐานที่เกี่ยวข้องกับวิธีการใช้ไลบรารี ac หรือไม่หรือคุณต้องเรียนรู้ลักษณะเฉพาะของการใช้งานไลบรารี่เมื่อคุณเปลี่ยนไปใช้บอร์ดใหม่ที่มี BSP ที่แตกต่างกันหรือไม่?
24 c  library 

6
โปรโตคอลการ จำกัด / การซิงโครไนซ์เทคนิคแบบอนุกรม
เนื่องจากการสื่อสารแบบซีเรียลแบบอะซิงโครนัสแพร่กระจายอย่างกว้างขวางในอุปกรณ์อิเล็กทรอนิกส์ทุกวันนี้ฉันเชื่อว่าพวกเราหลายคนได้พบคำถามเช่นนี้เป็นครั้งคราว พิจารณาอุปกรณ์อิเล็กทรอนิกส์Dและคอมพิวเตอร์PCที่เชื่อมต่อกับสายอนุกรม (RS-232 หรือคล้ายกัน) และจำเป็นต้องมีการแลกเปลี่ยนข้อมูลอย่างต่อเนื่อง Ie PCกำลังส่งเฟรมคำสั่งแต่ละเฟรมX msและDกำลังตอบกลับด้วยรายงานสถานะ / เฟรม telemetry แต่ละรายการY ms(สามารถส่งรายงานเป็นการตอบสนองต่อคำขอหรือเป็นอิสระ - ไม่สำคัญเลยที่นี่) กรอบการสื่อสารสามารถมีข้อมูลไบนารีใด ๆ โดยพลการ สมมติว่าเฟรมการสื่อสารเป็นแพ็กเก็ตที่มีความยาวคงที่ ปัญหา: เนื่องจากโปรโตคอลมีความต่อเนื่องด้านการรับอาจหลุดการซิงโครไนซ์หรือเพียงแค่ "เข้าร่วม" ที่อยู่ตรงกลางของเฟรมที่ส่งต่อเนื่องดังนั้นมันจะไม่รู้ว่าจุดเริ่มต้นของเฟรม (SOF) นั้นอยู่ที่ไหน ข้อมูลมีความหมายที่แตกต่างกันไปตามตำแหน่งของ SOF ข้อมูลที่ได้รับจะเสียหายและอาจเกิดขึ้นตลอดไป ทางออกที่ต้องการ รูปแบบการลด / ประสานที่เชื่อถือได้ในการตรวจจับ SOF ด้วยเวลาการกู้คืนสั้น ๆ (เช่นไม่ควรใช้เวลามากกว่านั้นพูด 1 เฟรมเพื่อซิงโครไนซ์อีกครั้ง) เทคนิคที่มีอยู่ฉันรู้ (และใช้บางส่วน) ของ: 1) ส่วนหัว / การตรวจสอบ - SOF เป็นค่าไบต์ที่กำหนดไว้ล่วงหน้า ตรวจสอบผลรวมในตอนท้ายของเฟรม จุดเด่น:เรียบง่าย …
24 serial  communication  protocol  brushless-dc-motor  hall-effect  hdd  scr  flipflop  state-machines  pic  c  uart  gps  arduino  gsm  microcontroller  can  resonance  memory  microprocessor  verilog  modelsim  transistors  relay  voltage-regulator  switch-mode-power-supply  resistance  bluetooth  emc  fcc  microcontroller  atmel  flash  microcontroller  pic  c  stm32  interrupts  freertos  oscilloscope  arduino  esp8266  pcb-assembly  microcontroller  uart  level  arduino  transistors  amplifier  audio  transistors  diodes  spice  ltspice  schmitt-trigger  voltage  digital-logic  microprocessor  clock-speed  overclocking  filter  passive-networks  arduino  mosfet  control  12v  switching  temperature  light  luminous-flux  photometry  circuit-analysis  integrated-circuit  memory  pwm  simulation  behavioral-source  usb  serial  rs232  converter  diy  energia  diodes  7segmentdisplay  keypad  pcb-design  schematics  fuses  fuse-holders  radio  transmitter  power-supply  voltage  multimeter  tools  control  servo  avr  adc  uc3  identification  wire  port  not-gate  dc-motor  microcontroller  c  spi  voltage-regulator  microcontroller  sensor  c  i2c  conversion  microcontroller  low-battery  arduino  resistors  voltage-divider  lipo  pic  microchip  gpio  remappable-pins  peripheral-pin-select  soldering  flux  cleaning  sampling  filter  noise  computers  interference  power-supply  switch-mode-power-supply  efficiency  lm78xx 

7
สำหรับโค้ดที่ฝังตัวทำไมฉันจึงควรใช้ประเภท“ uint_t” แทน“ int ที่ไม่ได้ลงชื่อ”
ฉันกำลังเขียนแอปพลิเคชันใน c สำหรับ STM32F105 โดยใช้ gcc ในอดีตที่ผ่านมา (กับโครงการง่าย) ผมได้กำหนดไว้เสมอเป็นตัวแปรchar, int, unsigned intและอื่น ๆ ผมเห็นว่ามันเป็นเรื่องธรรมดาที่จะใช้ประเภทที่กำหนดไว้ใน stdint.h เช่นint8_t, uint8_t, uint32_tฯลฯ นี้มันเป็นจริงในหลาย API ที่ฉันใช้และยังอยู่ในห้องสมุด ARM CMSIS จาก ST ฉันเชื่อว่าฉันเข้าใจว่าทำไมเราควรทำเช่นนั้น เพื่อให้คอมไพเลอร์เพิ่มประสิทธิภาพพื้นที่หน่วยความจำให้ดีขึ้น ฉันคาดว่าอาจมีเหตุผลเพิ่มเติม แต่เนื่องจากกฎการส่งเสริมจำนวนเต็มคผมให้ทำงานขึ้นกับคำเตือนการแปลงเวลาใด ๆ ที่ฉันพยายามที่จะเพิ่มค่าสองค่าดำเนินการค่าที่เหมาะสม ฯลฯ conversion to 'uint16_t' from 'int' may alter its value [-Wconversion]เตือนอ่านสิ่งที่ชอบ ปัญหาที่จะกล่าวถึงที่นี่และที่นี่ มันไม่ได้เกิดขึ้นเมื่อใช้ตัวแปรประกาศเป็นหรือintunsigned int ในการให้ตัวอย่างสองสามตัวอย่างให้สิ่งนี้: uint16_t value16; uint8_t value8; …
22 c  embedded  gcc 

10
ภาษาการเขียนโปรแกรมสำหรับวิศวกรอิเล็กทรอนิกส์
ฉันเป็นนักเรียนวิศวกรรมอิเล็กทรอนิคส์และการสื่อสารก่อนที่ฉันจะไปวิทยาลัยฉันมีความสนใจในการเขียนโปรแกรมและการใช้งานคอมพิวเตอร์ ฉันได้มุ่งเน้นไปที่การออกแบบแอพพลิเคชั่นของ Windows และเรียนรู้เทคนิคของมัน แต่ตอนนี้ฉันรู้สึกว่ามันไร้ประโยชน์ในสาขาของฉัน ... ฉันไม่ต้องเรียนรู้ทุกอย่างเกี่ยวกับวิทยาการคอมพิวเตอร์และการพัฒนาซอฟต์แวร์! (ฉันถูกเกี่ยวกับเรื่องนี้?) ฉันรู้ว่า VB .Net, C # และ C ++ ฉันมีเวลาเหลือเฟือในวันหยุดของฉันดังนั้นฉันจึงต้องการที่จะเจาะลึกลงไปในเชิงโปรแกรมใน "สนามอิเล็กทรอนิกส์" ดังนั้นสิ่งที่คุณจะแนะนำให้เรียนรู้หรือมุ่งเน้น ฉันต้องการภาษาเหล่านั้นที่ใช้ในการเขียนโปรแกรมไมโครคอนโทรลเลอร์และวงจรรวมอื่น ๆ C + + ก็เพียงพอหรือไม่ฉันก็ควรจะเชี่ยวชาญใน C ได้โปรดบอกความคิดของคุณ

6
ฉันจะใช้ฟังก์ชัน printf บน STM32 ได้อย่างไร
ฉันพยายามหาวิธีใช้ฟังก์ชั่น printf เพื่อพิมพ์ไปยังพอร์ตอนุกรม การตั้งค่าปัจจุบันของฉันคือรหัสที่สร้างขึ้นจากSTM32CubeMXและ SystemWorkbench32 พร้อมกับบอร์ดการค้นพบ STM32F407คณะกรรมการ ฉันเห็นใน stdio.h ว่าต้นแบบ printf ถูกกำหนดเป็น: int _EXFUN(printf, (const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 1, 2)))); มันหมายความว่าอะไร? ตำแหน่งที่แน่นอนของนิยามฟังก์ชันนี้อยู่ที่ไหน อะไรคือจุดทั่วไปในการค้นหาวิธีการใช้ฟังก์ชั่นประเภทนี้ในการส่งออก

4
การรีเซ็ตเป็นค่าเริ่มต้นจากโรงงานทำงานอย่างไร
อุปกรณ์ฝังตัวทั้งหมดมีตัวเลือก "รีเซ็ตเป็นค่าเริ่มต้นจากโรงงาน" ซึ่งอนุญาตให้ผู้ใช้รีเซ็ตอุปกรณ์ของเขาหากมีสิ่งผิดปกติ ฉันกำลังพัฒนาเฟิร์มแวร์บนบอร์ด STM32 เฟิร์มแวร์มีบูตโหลดเดอร์ที่อนุญาตให้อัปเกรดแอปพลิเคชันผ่าน UART (โดยการส่งไฟล์ไบนารีที่มีภาพใหม่) และฉันต้องการเพิ่มคุณสมบัติอื่น: รีเซ็ตเป็นค่าจากโรงงาน เมื่อผู้ใช้เลือกตัวเลือกนี้บอร์ดจะโหลดภาพต้นฉบับ การรีเซ็ตเป็นค่าเริ่มต้นจากโรงงานคืออะไร มันเกี่ยวกับการโหลดไฟล์ไบนารี่ทั้งหมดลงในหน่วยความจำอีกครั้งหรือเพียงแค่เรียกใช้ฟังก์ชันที่เริ่มต้นตัวแปรที่แก้ไขโดยผู้ใช้ปลายทางหรือไม่ วิธีปฏิบัติที่ดีที่สุดในการทำเช่นนั้นคืออะไร? จะเก็บ FW ดั้งเดิมไว้ที่ไหน มันอยู่ในแฟลชภายในหรือภายนอก?

8
กำลังเขียนอัลกอริธึม DSP โดยตรงใน C หรือแอสเซมบลีหรือไม่ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันกำลังทำงานในโครงการ DSP (การกรอง IIR) ในตัวประมวลผลสัญญาณดิจิตอล Analog Devices (BF706) ด้วยชุดคอมไพเลอร์ที่มาพร้อมกับ CrossCore Studio มันมีตัวอย่างบางอย่างสำหรับสิ่ง DSP ง่าย ๆ เช่นตัวกรอง FIR และ IIR และฟังก์ชั่นห้องสมุดสำหรับมัน คู่มือตัวประมวลผลอธิบายชุดคำสั่งการประกอบและไม่แสดงความคิดเห็นใน C. คำถามของฉันเกิดขึ้นจากแอปพลิเคชันนี้โดยเฉพาะ แต่ฉันคิดว่ามีวิธีปฏิบัติที่ดีที่สุดที่ผู้พัฒนา DSP ติดตาม ดังนั้นฉันจะจัดวางในลักษณะทั่วไป: สิ่งที่ฉันได้รับจากตัวอย่างที่มาพร้อมกับ DSP นี้คือถ้าฉันต้องการใช้วงจรที่ออกแบบมาสำหรับแอพพลิเคชั่น DSP ฉันต้องโปรแกรมในแอสเซมบลีเพื่อเรียกใช้คำแนะนำเหล่านั้นโดยตรง (เช่นทวีคูณและเพิ่มเป็นต้น) คำถามของฉันคือ ฉันเพิ่งเขียนโปรแกรมใน C คอมไพเลอร์ (ซึ่งมาจาก บริษัท ชิป DSP) จะไม่ปรับให้เหมาะสมสำหรับ DSP …

6
การใช้ตัวแปรโกลบอลในระบบสมองกลฝังตัว
ฉันเริ่มเขียนเฟิร์มแวร์สำหรับผลิตภัณฑ์ของฉันและฉันเป็นมือใหม่ที่นี่ ฉันได้อ่านบทความมากมายเกี่ยวกับการไม่ใช้ตัวแปรหรือฟังก์ชั่นทั่วโลก มีข้อ จำกัด ในการใช้ตัวแปรโกลบอลในระบบ 8 บิตหรือว่าเป็น 'ไม่ต้องทำ' ฉันควรใช้ตัวแปรทั่วโลกในระบบของฉันหรือฉันควรหลีกเลี่ยงพวกเขาอย่างสมบูรณ์? ฉันต้องการคำแนะนำที่มีค่าจากพวกคุณในหัวข้อนี้เพื่อทำให้เฟิร์มแวร์ของฉันมีขนาดเล็กลง
17 c  embedded  firmware 

5
ความเป็นไปได้สำหรับการจัดสรรหน่วยความจำสำหรับการออกแบบเฟิร์มแวร์แบบแยกส่วนใน C
วิธีการแบบแยกส่วนค่อนข้างมีประโยชน์โดยทั่วไป (พกพาและสะอาด) ดังนั้นฉันจึงลองโปรแกรมโมดูลเป็นอิสระจากโมดูลอื่น ๆ เท่าที่จะทำได้ แนวทางของฉันส่วนใหญ่ขึ้นอยู่กับ struct ที่อธิบายถึงโมดูลเอง ฟังก์ชั่นการเริ่มต้นจะตั้งค่าพารามิเตอร์หลักหลังจากนั้นตัวจัดการ (ตัวชี้ไปยังโครงสร้าง desriptive) จะถูกส่งผ่านไปยังฟังก์ชันใดก็ตามภายในโมดูลที่เรียกว่า ตอนนี้ฉันสงสัยว่าวิธีที่ดีที่สุดของหน่วยความจำการจัดสรรสำหรับโครงสร้างที่อธิบายถึงโมดูลอาจเป็น ถ้าเป็นไปได้ฉันต้องการสิ่งต่อไปนี้: โครงสร้างทึบแสงดังนั้นโครงสร้างอาจเปลี่ยนแปลงได้โดยการใช้ฟังก์ชั่นอินเตอร์เฟสที่มีให้เท่านั้น หลายกรณี หน่วยความจำที่จัดสรรโดย linker ฉันเห็นความเป็นไปได้ดังต่อไปนี้ซึ่งขัดแย้งกับหนึ่งในเป้าหมายของฉัน: ประกาศทั่วโลก หลายอินสแตนซ์ทั้งหมดถูกลิงค์โดย linker แต่ struct ไม่ทึบแสง (#includes) module_struct module; void main(){ module_init(&module); } malloc opaque โครงสร้างหลายอินสแตนซ์แต่ allcotion on heap ใน module.h: typedef module_struct Module; ในฟังก์ชั่น module.c init, malloc และตัวชี้กลับไปยังหน่วยความจำที่จัดสรรไว้ module_mem = …
16 c  design  firmware 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.