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

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

11
ฉันจะรู้ได้อย่างไรว่าคอมไพเลอร์ทำลายรหัสของฉันและฉันจะทำอย่างไรถ้ามันเป็นคอมไพเลอร์?
ในบางครั้งรหัส C ++ จะไม่ทำงานเมื่อรวบรวมกับการเพิ่มประสิทธิภาพในระดับหนึ่ง มันอาจเป็นการคอมไพเลอร์ที่ทำการปรับให้เหมาะสมที่ทำลายรหัสหรืออาจเป็นรหัสที่มีพฤติกรรมที่ไม่ได้กำหนดซึ่งช่วยให้คอมไพเลอร์ทำสิ่งที่รู้สึก สมมติว่าฉันมีโค้ดบางส่วนที่หยุดพักเมื่อคอมไพล์ด้วยระดับการเพิ่มประสิทธิภาพที่สูงขึ้นเท่านั้น ฉันจะรู้ได้อย่างไรว่ามันเป็นรหัสหรือคอมไพเลอร์และฉันจะทำอย่างไรถ้ามันเป็นคอมไพเลอร์?

8
คอมไพเลอร์ถูกใช้นอกการพัฒนาหรือไม่?
เท่าที่ความเข้าใจของฉันไปแล้วคอมไพเลอร์มีความหมายสำหรับนักพัฒนาในการรวบรวมรหัสของพวกเขาลงในไฟล์ปฏิบัติการ (รหัสเครื่อง) คอมไพเลอร์จะไม่ขยายไปยังเครื่องของลูกค้าหรือระบบผู้ใช้ปลายทาง นักพัฒนาซอฟต์แวร์เพียงแค่ใช้คอมไพเลอร์เพื่อแปลงรหัสของพวกเขาเป็นรหัสเครื่องซึ่งจะถูกส่งไปยังเครื่องอื่นเพื่อใช้เป็นแอพพลิเคชั่น คอมไพเลอร์มีฟังก์ชั่นนอกกระบวนการนี้หรือไม่? ถ้าเป็นเช่นนั้นพวกเขาจะใช้เมื่อไหร่?
14 compiler 

4
มีวิธีมาตรฐานหรือทางเลือกมาตรฐานในการบรรจุ struct ใน c หรือไม่?
เมื่อการเขียนโปรแกรมใน CI พบว่ามันมีค่ามากที่จะแพ็ค structs โดยใช้__attribute__((__packed__))แอตทริบิวต์GCCs ดังนั้นฉันสามารถแปลงกลุ่มของหน่วยความจำที่มีโครงสร้างเป็นอาร์เรย์ไบต์ที่จะส่งผ่านบัสได้อย่างง่ายดายบันทึกไปยังหน่วยเก็บหรือนำไปใช้กับบล็อกของรีจิสเตอร์ โครงสร้างแบบแพ็ครับประกันว่าเมื่อได้รับการปฏิบัติเป็นอาร์เรย์ไบต์จะไม่มีการบรรจุใด ๆ ซึ่งทั้งสองสิ้นเปลืองความเสี่ยงด้านความปลอดภัยที่เป็นไปได้และอาจเข้ากันไม่ได้เมื่อเชื่อมต่อกับฮาร์ดแวร์ ไม่มีมาตรฐานสำหรับโครงสร้างการจัดวางที่ทำงานได้ในคอมไพเลอร์ C ทั้งหมดหรือไม่? ถ้าไม่เช่นนั้นฉันคิดว่านี่เป็นคุณสมบัติที่สำคัญอย่างยิ่งสำหรับการเขียนโปรแกรมระบบ? ผู้ใช้ภาษา C ต้นไม่พบความต้องการโครงสร้างการจัดเก็บหรือมีทางเลือกบางอย่างหรือไม่?

2
การแยกวิเคราะห์ที่ไม่สแกนเนอร์เกี่ยวข้องกับ“ ปัญหาอื่น ๆ ที่น่าวิตก”
ฉันไม่เข้าใจประโยคนี้จากบทความ Wikipedia เกี่ยวกับปัญหา Dangling Else : [ปัญหา Dangling Else] เป็นปัญหาที่เกิดขึ้นบ่อยครั้งในการสร้างคอมไพเลอร์โดยเฉพาะการแยกวิเคราะห์ที่ไม่มีสแกนเนอร์ บางคนสามารถอธิบายให้ฉันฟังได้ว่าเทคนิคการแยกวิเคราะห์แบบสแกนเนอร์ไร้สาระอาจทำให้ปัญหานี้รุนแรงขึ้นได้อย่างไร สำหรับฉันแล้วดูเหมือนว่าปัญหาเกิดขึ้นกับไวยากรณ์ - เนื่องจากมันคลุมเครือ - ไม่ใช่ด้วยเทคนิคการแยกวิเคราะห์ ฉันกำลังคิดถึงอะไร

3
ทำไมคอมไพเลอร์ไม่สามารถหลีกเลี่ยงการนำเข้าไฟล์ส่วนหัวได้สองครั้งด้วยตนเอง
ใหม่ไปที่ C ++! ดังนั้นฉันจึงอ่านสิ่งนี้: http://www.learncpp.com/cpp-tutorial/110-a-first-look-at-the-preprocessor/ หัวยาม เนื่องจากไฟล์ส่วนหัวสามารถรวมไฟล์ส่วนหัวอื่น ๆ จึงเป็นไปได้ที่จะสิ้นสุดในสถานการณ์ที่ไฟล์ส่วนหัวรวมหลายครั้ง ดังนั้นเราจึงกำหนดให้ตัวประมวลผลล่วงหน้าเพื่อหลีกเลี่ยงปัญหานี้ แต่ฉันไม่แน่ใจ - ทำไมคอมไพเลอร์ไม่สามารถทำได้เพียงแค่ ... ไม่นำเข้าสิ่งเดียวกันสองครั้ง เนื่องจากการ์ดส่วนหัวนั้นเป็นทางเลือก (แต่เห็นได้ชัดว่าเป็นการปฏิบัติที่ดี) มันทำให้ฉันคิดว่ามีสถานการณ์เมื่อคุณต้องการนำเข้าบางสิ่งบางอย่าง แม้ว่าฉันจะไม่สามารถนึกถึงสถานการณ์ดังกล่าวได้เลย ความคิดใด ๆ
13 c++  compiler 

6
“ เขียนแอสเซมเบลอร์เป็น C” ทำไมต้องเขียนโปรแกรมแปลรหัสเครื่องสำหรับภาษาระดับต่ำในภาษาระดับสูงกว่า
ผู้สอนคลาสไมโครโปรเซสเซอร์ของฉันให้การบ้านและบอกว่า: "เขียนแอสเซมเบลอร์เป็น C" - ศาสตราจารย์ที่รักของฉัน ดังนั้นมันดูไร้เหตุผลสำหรับฉันเล็กน้อย ถ้าฉันไม่ผิดภาษาแอสเซมบลีเป็นขั้นตอนแรกจากรหัสเครื่องไปยังการเดินทางของภาษาระดับสูงกว่า ฉันหมายถึง C เป็นภาษาระดับสูงกว่าการชุมนุม แล้วประเด็นของการเขียน Assembler ใน C คืออะไร? สิ่งที่พวกเขาทำในอดีตในขณะที่ไม่มีภาษา C? พวกเขากำลังเขียน Assembler ในรหัสเครื่องหรือไม่? ฉันไม่ควรเขียนตัวแปลรหัสเครื่องสำหรับภาษาระดับต่ำในภาษาระดับสูงกว่านี้ สมมติว่าเราได้สร้างสถาปัตยกรรมไมโครโปรเซสเซอร์ใหม่ที่ไม่มีแม้แต่คอมไพเลอร์ C สำหรับสถาปัตยกรรมนั้น ผู้ประกอบของเราที่เขียนใน C จะสามารถจำลองสถาปัตยกรรมใหม่ได้หรือไม่? ฉันหมายความว่ามันจะไร้ประโยชน์หรือไม่? ฉันรู้ได้อย่างไรว่า GNU Assembler และ Netwide Assembler เขียนด้วยภาษาซีฉันยังสงสัยว่าทำไมพวกเขาถึงเขียนเป็น C สุดท้ายนี้คือตัวอย่างซอร์สโค้ดสำหรับแอสเซมเบลอร์ที่อาจารย์ของเรามอบให้เรา: // to compile, gcc assembler.c -o assembler // No error check is provided. …


6
ทำไมคอมไพเลอร์ไม่รวมทุกอย่างเข้าไว้ด้วยกัน? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา บางครั้งคอมไพเลอร์เรียกฟังก์ชั่นแบบอินไลน์ นั่นหมายความว่าพวกเขาย้ายรหัสของฟังก์ชั่นที่เรียกว่าเป็นฟังก์ชั่นการโทร สิ่งนี้ทำให้สิ่งต่าง ๆ เร็วขึ้นเล็กน้อยเนื่องจากไม่จำเป็นต้องกดและวางสิ่งต่าง ๆ ในและนอกกองการโทร ดังนั้นคำถามของฉันคือทำไมไม่คอมไพเลอร์แบบอินไลน์ทุกอย่าง? ฉันคิดว่ามันจะทำให้การปฏิบัติการเร็วขึ้นอย่างเห็นได้ชัด เหตุผลเดียวที่ฉันคิดได้ก็คือปฏิบัติการที่มีขนาดใหญ่กว่าอย่างมาก แต่ในปัจจุบันนี้มีหน่วยความจำหลายร้อย GB หรือไม่ ประสิทธิภาพที่ปรับปรุงแล้วไม่คุ้มค่าใช่หรือไม่ มีเหตุผลอื่นใดที่คอมไพเลอร์ไม่เพียงแค่อินไลน์การเรียกใช้ฟังก์ชันทั้งหมดหรือไม่

1
การเป็นตัวแทนระดับกลางใดที่สามารถใช้เพื่อให้เหตุผลเกี่ยวกับการเกิดพร้อมกัน?
ฉันพยายามทำความเข้าใจให้ดีขึ้นว่าอะไรเป็นสิ่งจำเป็นสำหรับคอมไพเลอร์เพื่อให้สามารถเลือกอย่างชาญฉลาดเกี่ยวกับการทำงานพร้อมกันในนามของโปรแกรมเมอร์ ฉันรู้ว่ามีปัญหาที่ยากมากเช่นนี้: ตรวจสอบให้แน่ใจว่าไม่มีเงื่อนไขการแข่งขัน การทำให้มั่นใจว่าโค้ดที่จะรันพร้อมกันจะไม่มีผลข้างเคียงที่ส่งผลกระทบต่อความหมายเชิงความหมายของโค้ด การตัดสินใจว่าค่าใช้จ่ายจากการหมุนเธรดนั้นคุ้มค่าหรือไม่เนื่องจากระดับของการขนานที่มีอยู่ในรหัส ความเข้าใจของฉันคือการเป็นตัวแทนระดับกลางที่สำคัญสองประการที่ใช้ในคอมไพเลอร์สมัยใหม่คือการมอบหมายแบบคงที่เดียวสำหรับภาษาเชิงโพรซีเดอร์และเชิงวัตถุ การให้เหตุผลเกี่ยวกับปัญหาใด ๆ ที่กล่าวข้างต้นดูเหมือนยากในการใช้แบบฟอร์มกลางเหล่านี้ แม้แต่ภาษาที่ในทางทฤษฎีควรมีโอกาสที่ดีที่สุดในการขนานอัตโนมัติ (ภาษาที่ใช้งานได้จริงเช่น Haskell พร้อมการรับประกันว่าไม่มีผลข้างเคียง) ทำให้ความคืบหน้าในหน้านี้มี จำกัด ดังนั้นคำถามของฉันคือการใช้สื่อกลางในการพยายามแก้ไขปัญหานี้ มีตัวแทนอื่น ๆ ที่ใช้ในการวิจัยเชิงวิชาการที่ฉันไม่ทราบหรือไม่ว่าเหมาะสมกับงานนี้มากกว่า ปัญหานี้เป็นปัญหาที่ต้องแก้ไขโดยพื้นฐานของคอมไพเลอร์ฟรอนต์เอนด์โดยการจัดการแผนผังไวยากรณ์นามธรรมก่อนการคอมไพล์ถึงการแสดงระดับกลางหรือไม่?

4
เป็นไปได้ไหมที่จะใช้คอมไพเลอร์ Intel C / C ++ บน Linux เพื่อสร้างไฟล์ออบเจ็กต์ที่จะเชื่อมโยงกับ Windows
ทำไม? ขึ้นอยู่กับแหล่งที่มาของคุณคอมไพเลอร์ของ Intel น่าจะเป็นหรือคอมไพเลอร์ที่สร้างไฟล์ปฏิบัติการที่เร็วที่สุดสำหรับสถาปัตยกรรม x86 (ปรับปรุง 5 ถึง 100% เวลาในการประมวลผล) Intel เสนอคอมไพเลอร์สำหรับ Linux ภายใต้ใบอนุญาตที่ไม่ใช่เชิงพาณิชย์ฟรี (ฉันคิดว่าฉันอ่านมันฟรีที่ใดที่หนึ่งบนหน้าเว็บของพวกเขา: Intel - การพัฒนาซอฟต์แวร์ที่ไม่ใช่เชิงพาณิชย์ ) นอกจากนี้ยังมีใบอนุญาตที่ไม่ใช่เชิงพาณิชย์สำหรับนักเรียนฟรี แต่ใบอนุญาตนี้ไม่สามารถใช้ได้แม้ว่าจะมีเครื่องมือสำหรับระบบปฏิบัติการหลักทั้งสาม (การเชื่อมโยงหลุดเนื่องจากข้อ จำกัด ด้านชื่อเสียง) เป้าหมาย ฉัน (ในฐานะนักเรียนที่ไม่ใช่นักศึกษา) ต้องการใช้คอมไพเลอร์ของ Intel สำหรับการปรับปรุงความเร็วในการดำเนินการที่เป็นไปได้ภายใต้ใบอนุญาตที่ไม่ใช่เชิงพาณิชย์เพื่อรวบรวมไฟล์วัตถุที่สามารถเชื่อมโยงเพื่อสร้างไฟล์ประมวลผลและไลบรารีลิงค์แบบไดนามิกสำหรับ Windows X) รายละเอียดเพิ่มเติม: สิ่งที่ฉันอนุมานจากเอกสารนี้คือคอมไพเลอร์ Intel สร้างออบเจ็กต์ไฟล์ที่เข้ากันได้กับคอมไพเลอร์ที่โดดเด่นของแพลตฟอร์ม Sub-คำถาม: รูปแบบไฟล์ออบเจ็กต์ของ gcc, g ++, cl, mingw32, icc, icpc, และ icl บน Windows และ …

5
ห้องสมุดแบบคงที่ C ขมวดคิ้วอยู่หรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา มี 2 ​​อาร์กิวเมนต์สำหรับการมีไลบรารีที่แบ่งใช้: ช่วยลดพื้นที่ดิสก์ เมื่อมีการอัปเดตไลบรารีที่ใช้ร่วมกันไบนารีทั้งหมดขึ้นอยู่กับว่าจะได้รับการอัปเดต มีข้อเสียเปรียบหนึ่งสำหรับไลบรารีที่แชร์: พวกเขา (สามารถ) แนะนำนรกพึ่งพา บนคอมพิวเตอร์เดสก์ท็อปข้อได้เปรียบอันดับหนึ่งไม่ได้ถืออีกต่อไปแล้ว การสูญเสียพื้นที่ดิสก์ไม่เป็นปัญหามากในทุกวันนี้ การมีไบนารีแบบคงที่จะช่วยให้เราจัดการผู้จัดการแพคเกจได้ดีขึ้น - ฉันหมายถึงนรกที่พึ่งพาได้จะเป็นอดีต การเพิ่มโปรแกรมจะเป็นการเพิ่มไบนารี ในที่สุดโฟลเดอร์ที่ให้มันจัดการกับไฟล์ การลบโปรแกรมจะเป็นการลบไฟล์นี้ พึ่งพา? ที่ไปแล้ว. ข้อได้เปรียบที่สองยังคงมีอยู่ แต่ฉันคิดว่าข้อดีของไบนารีคงที่ในคอมพิวเตอร์เดสก์ท็อปนั้นมีน้ำหนักมากกว่า ฉันหมายถึงแม้แต่ภาษาใหม่อย่าง Go ก็รวบรวมไบนารีทั้งหมดของพวกเขาทั้งๆที่มีข้อได้เปรียบของ shared library เพราะความสะดวก เนื่องจากข้อได้เปรียบหลักอย่างหนึ่งของไลบรารีที่ใช้ร่วมกันไม่ใช่เรื่องใหญ่อีกต่อไปแล้ว C นิ่งไลบรารียังคงขมวดคิ้วอยู่หรือไม่? ถ้าเป็นเช่นนั้นทำไม
11 c  compiler 

2
ไฟล์วัตถุ (C) ถูกสร้างด้วยคอมไพเลอร์ที่เข้ากันได้กับไบนารีต่างกันหรือไม่?
ฉันเข้าใจว่าคอมไพเลอร์ C ++ ไม่สามารถทำงานร่วมกันได้ อย่างไรก็ตามฉันไม่พบสิ่งใดในหัวข้อนี้สำหรับ C โดยเฉพาะ ฉันรู้ว่ามาตรฐาน C ออกจากห้องมากมายสำหรับคอมไพเลอร์ที่จะใช้สิ่งต่าง ๆ แต่พวกเขาเห็นว่าเหมาะสม: ตัวอย่างเช่นขนาดและการจัดแนวของชนิดข้อมูลส่วนใหญ่ (ทั้งหมด?) คือการบันทึกที่ใช้งาน ดังนั้นคอมไพเลอร์สองตัว (หรือคอมไพเลอร์เดียวกันสองเวอร์ชั่น) อาจไม่เห็นด้วยกับรายละเอียดมากมาย ฉันถูกต้องโดยคิดว่าไม่มีการรับประกันว่าไฟล์ออบเจ็กต์สองไฟล์ที่คอมไพล์ด้วยคอมไพเลอร์ที่ต่างกันจะเชื่อมโยงอย่างถูกต้องจริงหรือ ตัวอย่างเช่นขนาดของพอยน์เตอร์อาจเป็น 32 บิตในหนึ่งอ็อบเจ็กต์ไฟล์และ 64 บิตในอีกอัน แต่ถ้าเป็นเช่นนั้นเหตุใดบางครั้ง C ไลบรารีจึงกระจายในรูปแบบที่คอมไพล์แล้ว? มีความคาดหวังหรือไม่ว่าฉันจะใช้คอมไพเลอร์แบบเดียวกับที่พวกเขาทำ (เช่น gcc) หรือมาตรฐานตามความเป็นจริงบางอย่างที่ใช้ในการรับรองความเข้ากันได้ของไบนารี และภาษาอื่น ๆ ที่มีส่วนต่อประสานกับภาษาต่างประเทศช่วยให้แน่ใจได้อย่างไรว่าสิ่งต่าง ๆ จะเข้าแถวอย่างถูกต้องเมื่อเชื่อมโยงกับไฟล์วัตถุ C?
11 c  compiler 

3
การตรวจสอบประเภทในล่าม / ผู้แปลภาษาแบบไดนามิกเช่น JavaScript เป็นอย่างไร
ในภาษาแบบไดนามิกเช่น JavaScript หรือ Python ชนิดของตัวแปรจะถูกกำหนดที่รันไทม์ นี่คือเหตุผลหนึ่งที่ทำให้ช้ากว่าภาษาที่พิมพ์เช่น Java การตรวจสอบประเภทดำเนินการอย่างไร อะไรเป็นเหตุผลสำคัญที่ทำให้กระบวนการนี้ช้า

2
อะไรคือความสัมพันธ์ระหว่าง Dynamic Language Runtime และ C # 4.0?
สมมติว่าฉันต้องการสร้างตัวแปลภาษา / ตัวแปลภาษาแบบไดนามิกซึ่งอาจเป็นล่าม Scheme บนแพลตฟอร์ม. NET ที่มีอยู่ในปัจจุบัน ฉันจะดีกว่าถ้าใช้Dynamic Language Runtime (DLR) หรือใช้ C # 4.0 เพื่อใช้คุณสมบัติแบบไดนามิกของภาษาของฉันหรือไม่ หรือฉันต้องการทั้งสองอย่าง? ฉันรู้ว่ามีได้รับงานอื่น ๆ ที่ทำในพื้นที่นี้โดยเฉพาะอย่างยิ่งกับIronSchemeและIronPython ทั้งสองภาษาใช้ DLR ฉันเชื่อว่า IronPython ใช้เวอร์ชั่นล่าสุดของ DLR (ซึ่งเป็นอายุประมาณหนึ่งปี) ในขณะที่ IronScheme ใช้ต้น fork ที่มีการดัดแปลงแก้ไขอย่างรวดเร็วของเวอร์ชันแรก ๆ ของ DLR แต่ C # 4.0 ไม่สามารถใช้ได้เมื่อคอมไพเลอร์เหล่านี้ถูกสร้างขึ้น ฉันเคยเห็น Rob Conery ทำงานกับMassiveโดยใช้คุณสมบัติแบบไดนามิกของ C # 4.0 มันค่อนข้างน่าประทับใจ แต่ C …

2
กรอบการพัฒนาภาษาควรจะใช้ง่ายแค่ไหน?
นี่เป็นส่วนหนึ่งของชุดคำถามที่มุ่งเน้นโครงการที่เรียกว่า Abstraction Project ซึ่งมีจุดประสงค์เพื่อสรุปแนวคิดที่ใช้ในการออกแบบภาษาในรูปแบบของกรอบ หน้าอื่นที่เกี่ยวข้องกับมันที่เกี่ยวข้องกับการพิมพ์ที่มีโครงสร้างที่สามารถดูได้ที่นี่ เมตาหัวข้อที่เกี่ยวข้องกับสอบถามรายละเอียดเพิ่มเติมเกี่ยวกับกรอบและสถานที่ที่เหมาะสมในการโพสต์สามารถพบได้ที่นี่ มันง่ายแค่ไหนที่จะใช้ Framework การพัฒนาภาษา? ฉันได้เขียนกรอบการสร้างรหัสขนาดใหญ่ซึ่งรวมถึงความสามารถในการส่งผลลัพธ์ไปยังคอมไพเลอร์เฉพาะภาษา หัวข้อที่ใช้งานง่ายขึ้นมาจากตัวอย่างหนึ่งของกรอบงาน: CodeDOM หรือโมเดลเอกสารวัตถุรหัส มันเป็นกรอบงานที่เขียนโดย Microsoft ที่อธิบายโครงสร้างรหัสทั่วไป แต่โดยทั่วไปแล้วมักจะออกมาก (การแสดงออกทางสีหน้า) และมีแนวโน้มที่จะเป็นนามธรรมเล็กน้อยในการเป็นตัวแทนของการสร้างบางอย่างเพื่อการปล่อยรหัสไม่ดีอย่างจริงจัง CodeDOM ไม่ดีจัดการเปล่งPrivateImplementationTypeบนCodeMemberMethodเมื่อชนิดที่ใช้เป็นอินเตอร์เฟซทั่วไป CodeDOM เป็นเหตุผลดั้งเดิมของฉันในการเขียนโปรแกรมสร้างรหัสเครื่องแรก สิ่งหนึ่งที่ฉันพยายามทำเพื่อลดความซับซ้อนของเฟรมเวิร์กคือลดจำนวนงานที่คุณต้องทำบางอย่างและมุ่งเน้นไปที่การทำงานกับประเภทที่เฉพาะเจาะจงซึ่งประกอบไปด้วยการกระทำเหล่านั้น นี่คือการเปรียบเทียบแบบเคียงข้างกันว่าเฟรมเวิร์กที่ฉันเขียนนั้นทำงานอย่างไร: //Truncated... /* * * From a project that generates a lexer, this is the * state->state transition character range selection logic. * */ var nextChar …

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