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

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

5
ทำไมตัวประมวลผลล่วงหน้า C ตีความคำว่า“ linux” เป็นค่าคงที่“ 1”
ทำไมCตัวประมวลผลล่วงหน้าในGCCตีความคำว่าlinux(ตัวอักษรตัวเล็ก) เป็นค่าคงที่1? test.c: #include <stdio.h> int main(void) { int linux = 5; return 0; } ผลลัพธ์ของ $ gcc -E test.c (หยุดหลังจากขั้นตอนการประมวลผลล่วงหน้า): .... int main(void) { int 1 = 5; return 0; } ซึ่งแน่นอนว่าข้อผิดพลาด (BTW: ไม่มี#define linuxในstdio.hไฟล์)
1022 c  linux  gcc  c-preprocessor 

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

4
Obfuscated C Code Contest 2006 โปรดอธิบาย sykes2.c
โปรแกรม C นี้ทำงานอย่างไร main(_){_^448&&main(-~_);putchar(--_%64?32|-~7[__TIME__-_/8%8][">'txiZ^(~z?"-48]>>";;;====~$::199"[_*2&8|_/64]/(_&2?1:8)%8&1:10);} มันรวบรวมตามที่มันเป็น (ทดสอบบนgcc 4.6.3) มันพิมพ์เวลาเมื่อรวบรวม ในระบบของฉัน: !! !!!!!! !! !!!!!! !! !!!!!! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !!!!!! !! !! !! !! !! !!!!!! !! !! !! !! !! !! !! !! !! !! !! …

22
วิธีการเริ่มต้นสมาชิกทั้งหมดของอาร์เรย์ให้เป็นค่าเดียวกันได้อย่างไร
ฉันมีอาร์เรย์ขนาดใหญ่ในC (ไม่ใช่C ++หากสร้างความแตกต่าง) ฉันต้องการเริ่มต้นสมาชิกทั้งหมดที่มีค่าเดียวกัน ฉันสาบานได้ว่าฉันเคยรู้วิธีง่ายๆในการทำเช่นนี้ ฉันสามารถใช้memset()ในกรณีของฉัน แต่ไม่มีวิธีการทำสิ่งนี้ที่สร้างไว้ในไวยากรณ์ C หรือไม่?



30
การทดสอบหน่วยรหัส C [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน5 ปีที่ผ่านมา ฉันทำงานในระบบฝังตัวในฤดูร้อนนี้เขียนตรง C. เป็นโครงการที่มีอยู่แล้วซึ่ง บริษัท ที่ฉันทำงานเพื่อรับช่วงต่อ ฉันคุ้นเคยกับการเขียนการทดสอบหน่วยใน Java โดยใช้ JUnit แต่เป็นวิธีที่ดีที่สุดในการเขียนการทดสอบหน่วยสำหรับโค้ดที่มีอยู่ มีโครงการใดบ้างที่ทำให้การทดสอบหน่วย C รหัสธรรมดาง่ายเหมือนการทดสอบหน่วยรหัส Java กับ JUnit? ความเข้าใจใด ๆ ที่จะนำไปใช้กับการพัฒนาโดยเฉพาะ (การคอมไพล์ข้ามกับแพลตฟอร์ม arm-linux) จะได้รับการชื่นชมอย่างมาก

14
ทำไมโครงสร้างเหล่านี้โดยใช้พฤติกรรมที่ไม่ได้กำหนดไว้ล่วงหน้าและหลังเพิ่มขึ้น?
#include <stdio.h> int main(void) { int i = 0; i = i++ + ++i; printf("%d\n", i); // 3 i = 1; i = (i++); printf("%d\n", i); // 2 Should be 1, no ? volatile int u = 0; u = u++ + ++u; printf("%d\n", u); // 1 u = 1; …


9
ทำไมจึงใช้คำสั่ง do-while และ if-else ที่ไม่มีความหมายในแมโคร
ในมาโคร C / C ++ หลายรุ่นฉันเห็นโค้ดของมาโครห่อหุ้มสิ่งที่ดูเหมือนเป็นdo whileลูปที่ไม่มีความหมาย นี่คือตัวอย่าง #define FOO(X) do { f(X); g(X); } while (0) #define FOO(X) if (1) { f(X); g(X); } else ฉันไม่เห็นว่าdo whileกำลังทำอะไรอยู่ ทำไมไม่ลองเขียนโดยไม่ได้ล่ะ #define FOO(X) f(X); g(X)
787 c++  c  c-preprocessor  c++-faq 




17
main () ควรส่งคืนใน C และ C ++ อย่างไร
เป็นวิธีที่ถูกต้อง (มีประสิทธิภาพมากที่สุด) วิธีการกำหนดmain()ฟังก์ชั่นใน C และ C ++ - int main()หรือvoid main()- และทำไม? หากint main()แล้วreturn 1หรือreturn 0? มีคำถามซ้ำหลายประการซึ่งรวมถึง: ลายเซ็นที่ถูกต้องสำหรับmain()ฟังก์ชั่นของ C คืออะไร? ประเภทการกลับมาของmain()ฟังก์ชั่น ความแตกต่างระหว่างvoid main()และint main()? main()ลายเซ็นของใน C ++ การประกาศที่เหมาะสมmain()คืออะไร? - สำหรับ C ++ พร้อมคำตอบที่ดีมากแน่นอน รูปแบบของmain()ฟังก์ชั่นใน C ส่งคืนชนิดของmain()วิธีการใน C int main()vs void main()ใน C ที่เกี่ยวข้อง: C ++ - int main(int argc, char …


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