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

C เป็นภาษาโปรแกรมทั่วไปที่ใช้สำหรับการเขียนโปรแกรมระบบ (ระบบปฏิบัติการและฝังตัว), ห้องสมุด, เกมและข้ามแพลตฟอร์ม แท็กนี้ควรใช้กับคำถามทั่วไปที่เกี่ยวข้องกับภาษา C ตามที่กำหนดไว้ในมาตรฐาน ISO 9899 (เวอร์ชันล่าสุด 9899: 2018 เว้นแต่ระบุไว้เป็นอย่างอื่น - นอกจากนี้ยังติดแท็กคำขอเฉพาะรุ่นด้วย c89, c99, c11 ฯลฯ ) C แตกต่างจาก C ++ และไม่ควรใช้ร่วมกับแท็ก C ++ หากไม่มีเหตุผล

2
อ่าน / เขียนไฟล์ภายในโมดูลเคอร์เนล Linux
ฉันรู้การอภิปรายทั้งหมดเกี่ยวกับสาเหตุที่ไม่ควรอ่าน / เขียนไฟล์จากเคอร์เนลแทนที่จะใช้/ procหรือnetlinkเพื่อทำเช่นนั้น ฉันต้องการอ่าน / เขียนต่อไป ฉันได้อ่าน Driving Me Nuts - สิ่งที่คุณไม่ควรทำในเคอร์เนลด้วย แต่ปัญหาก็คือว่า 2.6.30 sys_read()ไม่ได้ส่งออก SYSCALL_DEFINE3แต่มันอยู่ในห่อ ดังนั้นหากฉันใช้มันในโมดูลของฉันฉันจะได้รับคำเตือนต่อไปนี้: WARNING: "sys_read" [xxx.ko] undefined! WARNING: "sys_open" [xxx.ko] undefined! เห็นได้ชัดว่าinsmodไม่สามารถโหลดโมดูลได้เนื่องจากการเชื่อมโยงเกิดขึ้นไม่ถูกต้อง คำถาม: วิธีอ่าน / เขียนภายในเคอร์เนลหลังจาก 2.6.22 (โดยที่ sys_read() / sys_open()ไม่ถูกส่งออก) โดยทั่วไปจะใช้การเรียกระบบที่ห่อด้วยมาโครSYSCALL_DEFINEn()จากภายในเคอร์เนลได้อย่างไร?

19
วิธีที่เร็วที่สุดในการคำนวณ sin และ cos เข้าด้วยกันคืออะไร?
ฉันต้องการคำนวณทั้งไซน์และไซน์ร่วมของค่าด้วยกัน (ตัวอย่างเช่นการสร้างเมทริกซ์การหมุน) แน่นอนว่าฉันสามารถคำนวณแยกจากกันได้a = cos(x); b = sin(x);แต่ฉันสงสัยว่ามีวิธีที่เร็วกว่าเมื่อต้องการทั้งสองค่า แก้ไข: เพื่อสรุปคำตอบจนถึงตอนนี้: วลาดกล่าวว่ามีคำสั่ง asm ที่FSINCOSคำนวณทั้งคู่ (เกือบจะในเวลาเดียวกันกับการโทรไปหาFSINคนเดียว) เช่นเดียวกับที่จิสังเกตเห็นการเพิ่มประสิทธิภาพนี้บางครั้งคอมไพเลอร์ทำไปแล้ว (เมื่อใช้แฟล็กการปรับให้เหมาะสม) คาเฟ่ชี้ให้เห็นว่าฟังก์ชั่นsincosและsincosfอาจพร้อมใช้งานและสามารถเรียกได้โดยตรงเพียงแค่รวมmath.h มีการกล่าวถึงวิธีการของ Tanascius ในการใช้ตารางการค้นหาที่ขัดแย้งกัน (อย่างไรก็ตามในคอมพิวเตอร์ของฉันและในสถานการณ์มาตรฐานจะทำงานได้เร็วกว่า 3 เท่าsincosโดยมีความแม่นยำเกือบเท่ากันสำหรับจุดลอยตัว 32 บิต) โจเอลกู๊ดวินเชื่อมโยงกับแนวทางที่น่าสนใจของเทคนิคการประมาณค่าที่รวดเร็วมากพร้อมด้วยความแม่นยำที่ค่อนข้างดี (สำหรับฉันนี่จะเร็วกว่านี้จากการค้นหาตาราง)
100 c#  c++  c  algorithm  math 

12
ตัวประมวลผลล่วงหน้า C ++ __VA_ARGS__ จำนวนอาร์กิวเมนต์
คำถามง่ายๆที่หาคำตอบในเน็ตไม่ได้ ในมาโครอาร์กิวเมนต์ตัวแปรจะหาจำนวนอาร์กิวเมนต์ได้อย่างไร ฉันโอเคกับบูสต์พรีโปรเซสเซอร์หากมีวิธีแก้ปัญหา ถ้ามันสร้างความแตกต่างฉันกำลังพยายามแปลงจำนวนอาร์กิวเมนต์มาโครที่แปรผันเพื่อเพิ่มลำดับตัวประมวลผลล่วงหน้ารายการหรืออาร์เรย์สำหรับการประมวลผลใหม่เพิ่มเติม

9
รับเวลาปัจจุบันใน C
ฉันต้องการรับเวลาปัจจุบันของระบบของฉัน สำหรับสิ่งนั้นฉันใช้รหัสต่อไปนี้ใน C: time_t now; struct tm *mytime = localtime(&now); if ( strftime(buffer, sizeof buffer, "%X", mytime) ) { printf("time1 = \"%s\"\n", buffer); } ปัญหาคือรหัสนี้ให้เวลาสุ่ม นอกจากนี้เวลาสุ่มยังแตกต่างกันทุกครั้ง ฉันต้องการเวลาปัจจุบันของระบบของฉัน
100 c  time  time-t  localtime 

10
ข้อผิดพลาดในการคอมไพล์ C:“ อ็อบเจ็กต์ขนาดตัวแปรอาจไม่สามารถเริ่มต้นได้”
เหตุใดฉันจึงได้รับข้อผิดพลาด "Variable-sized object may not be initialized" พร้อมรหัสต่อไปนี้ int boardAux[length][length] = {{0}};

7
ความแตกต่างระหว่างการจัดสรรหน่วยความจำแบบคงที่และการจัดสรรหน่วยความจำแบบไดนามิก
ฉันต้องการทราบว่าอะไรคือความแตกต่างระหว่างการจัดสรรหน่วยความจำแบบคงที่และการจัดสรรหน่วยความจำแบบไดนามิก คุณช่วยอธิบายเรื่องนี้ด้วยตัวอย่างได้ไหม

15
จะแยกลูปที่ซ้อนกันได้อย่างไร?
ถ้าฉันใช้breakคำสั่งมันจะทำลายวงในเท่านั้นและฉันต้องใช้แฟล็กเพื่อทำลายวงนอก แต่ถ้ามีลูปที่ซ้อนกันมากโค้ดจะดูไม่ดี มีวิธีอื่นในการทำลายลูปทั้งหมดหรือไม่? (กรุณาอย่าใช้goto stmt) for(int i = 0; i < 1000; i++) { for(int j = 0; j < 1000; j++) { if(condition) { // both of the loops need to break and control will go to stmt2 } } } stmt2
100 c  nested-loops  break 

9
ข้อผิดพลาดในการคอมไพล์:“ g ++: เกิดข้อผิดพลาดขณะพยายาม exec 'cc1plus': execvp: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว "
เมื่อฉันรวบรวมโปรแกรม C / C ++ ด้วยpopenในphp... ฉันได้รับข้อผิดพลาดนี้: g++: error trying to exec 'cc1plus': execvp: No such file or directory แต่ถ้าฉันเรียกใช้โค้ด php ในเชลล์ .. ก็ใช้ได้ดี .. ใน Arch Linux .. รหัส PHP: <?php function rfile($fp) { $out=""; while (!feof($fp)) { $out.= fgets($fp, 1024000); } return $out; } $p = popen('g++ -Wall …
100 php  c++  c  linux  gcc 

7
วิธีใช้ SCNetworkReachability ใน Swift
ฉันกำลังพยายามแปลงข้อมูลโค้ดนี้เป็น Swift ฉันกำลังดิ้นรนในการลงจากพื้นเนื่องจากปัญหาบางอย่าง - (BOOL) connectedToNetwork { // Create zero addy struct sockaddr_in zeroAddress; bzero(&zeroAddress, sizeof(zeroAddress)); zeroAddress.sin_len = sizeof(zeroAddress); zeroAddress.sin_family = AF_INET; // Recover reachability flags SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress); SCNetworkReachabilityFlags flags; BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); CFRelease(defaultRouteReachability); if (!didRetrieveFlags) { return NO; } BOOL isReachable = …
99 ios  c  struct  swift  reachability 

3
บุคคลนี้เขียนโค้ด“ Hello World” ด้วย Microsoft Paint ได้อย่างไร
ฉันเพิ่งเห็นสิ่งนี้ภายในไม่กี่วันที่ผ่านมาและไม่สามารถเข้าใจได้ว่ามันทำงานอย่างไร วิดีโอที่ฉันพูดถึงอยู่ที่นี่ : เป็นคำตอบยอดนิยมจากคำถาม Stack Overflow: เหตุใดโปรแกรมนี้จึงถูกคอมไพเลอร์สามตัวปฏิเสธ บิตแมปนี้สามารถแสดงโปรแกรม C ++ สำหรับ "Hello World" ได้อย่างไร
99 c++  c  paint 

9
การเยื้อง #defines
ฉันรู้ว่า#defines ฯลฯ ปกติไม่เคยเยื้อง ทำไม? ฉันกำลังทำงานกับโค้ดบางตัวในขณะนี้ซึ่งมีส่วนผสมที่น่ากลัวของ#defines, #ifdefs, #elses, #endifs และอื่น ๆ ทั้งหมดนี้มักจะผสมกับรหัส C ปกติ การไม่เยื้อง#defines ทำให้อ่านยาก และส่วนผสมของโค้ดเยื้องกับ#defines ที่ไม่เยื้องเป็นฝันร้าย ประโยชน์ของการไม่เยื้อง#defines คืออะไร? มันทำให้ฉันเป็นคนไม่ดีหรือเปล่าถ้าฉันเยื้องย่างเข้าไป นี่ไม่ดีกว่านี้เหรอ? #ifdef SDCC #if DEBUGGING == 1 #if defined (pic18f2480) #define FLASH_MEMORY_END 0x3DC0 #elif defined (pic18f2580) #define FLASH_MEMORY_END 0x7DC0 #else #error "Can't set up flash memory end!" #endif #else #if …


5
ตัวเลขจุดลอยตัวแบบแข็งและแบบอ่อนต่างกันอย่างไร
เมื่อฉันคอมไพล์โค้ด C ด้วย cross toolchain ตัวเชื่อมโยงจะพิมพ์หน้าคำเตือนโดยบอกว่าไฟล์ปฏิบัติการของฉันใช้ฮาร์ดโฟล แต่ libc ของฉันใช้ซอฟต์โฟล อะไรคือความแตกต่าง?
99 c  linux  floating-point  arm  libc 

14
วิธีการเขียนฐานบันทึก (2) ใน c / c ++
มีวิธีใดในการเขียนฟังก์ชันบันทึก (ฐาน 2) หรือไม่? ภาษา C มี 2 ฟังก์ชันในตัว - >> 1. logซึ่งเป็นฐาน e. 2. log10ฐาน 10; แต่ฉันต้องการฟังก์ชันบันทึกของฐาน 2 วิธีคำนวณสิ่งนี้
99 c++  c 

7
ทำ: ไม่มีอะไรจะทำเพื่อʻall '
ฉันกำลังทำเช่น pgm เพื่อสร้างไฟล์ make http://mrbook.org/tutorials/make/ โฟลเดอร์ของฉัน eg_make_creation มีไฟล์ต่อไปนี้ desktop:~/eg_make_creation$ ls factorial.c functions.h hello hello.c main.c Makefile Makefile # I am a comment, and I want to say that the variable CC will be # the compiler to use. CC=gcc # Hwy!, I am comment no.2. I want to say that …
99 c  makefile 

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