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

GCC คือ GNU Compiler Collection มันเป็นคอมไพเลอร์มาตรฐานอย่างแท้จริงสำหรับ C, C ++, Go, Fortran และ Ada บน Linux และรองรับภาษาและแพลตฟอร์มอื่น ๆ อีกมากมายเช่นกัน นอกเหนือจากคอมไพเลอร์ GCC ยังมี toolchain (libc, libstdc ++, objdump, nm ฯลฯ ) ที่ใช้กันอย่างแพร่หลายในหลายแพลตฟอร์มและระบบ

2
วิธีการตรวจสอบว่าเป็นโมฆะตัวชี้ (void *) เป็นหนึ่งในสองชนิดข้อมูล?
ฉันกำลังเขียนฟังก์ชันที่ฉันต้องการยอมรับtypeพารามิเตอร์2 วินาที A string(อักขระ *) structureที่จะมี n จำนวนขององค์ประกอบ และเพื่อให้บรรลุนี้ฉันคิดว่าใช้ง่ายvoid *เป็นพารามิเตอร์ประเภท แต่ฉันไม่ทราบวิธีการตรวจสอบว่าพารามิเตอร์เป็นประเภทหนึ่งหรืออื่น ๆ อย่างปลอดภัย
10 c  gcc  types  clang 

1
CHAR_WIDTH ไม่ได้ประกาศ
ฉันพบข้อผิดพลาด ‘CHAR_WIDTH’ undeclared เมื่อพยายามคอมไพล์โปรแกรมอย่างง่ายนี้: #include <stdio.h> #include <limits.h> int main() { printf("CHAR_BIT = %d\n", CHAR_BIT); printf("CHAR_WIDTH = %d\n", CHAR_WIDTH); return (0); } กับ gcc ./show_char_width.c -o show_char_width และ gcc: GNU C17 (Ubuntu 8.3.0-6ubuntu1) รุ่น 8.3.0 (x86_64-linux-gnu) รวบรวมโดย GNU C รุ่น 8.3.0, รุ่น GMP 6.1.2, MPFR เวอร์ชั่น 4.0.2, MPC เวอร์ชั่น 1.1.0 …
9 c  gcc 

4
เหตุใด C คอมไพเลอร์จึงปรับสวิตช์ให้เหมาะสมและหากต่างกัน
ฉันกำลังทำงานในโครงการส่วนบุคคลเมื่อเร็ว ๆ นี้เมื่อฉันเจอปัญหาแปลก ๆ ในวงที่แน่นมากฉันมีจำนวนเต็มที่มีค่าระหว่าง 0 ถึง 15 ฉันต้องได้รับ -1 สำหรับค่า 0, 1, 8, และ 9 และ 1 สำหรับค่า 4, 5, 12, และ 13 ฉันหันไปใช้ godbolt เพื่อตรวจสอบตัวเลือกสองสามตัวและรู้สึกประหลาดใจที่ดูเหมือนว่าคอมไพเลอร์ไม่สามารถปรับคำสั่งสวิตช์ให้เหมาะสมเช่นเดียวกับโซ่ถ้า ลิงก์อยู่ที่นี่: https://godbolt.org/z/WYVBFl รหัสคือ: const int lookup[16] = {-1, -1, 0, 0, 1, 1, 0, 0, -1, -1, 0, 0, 1, 1, 0, 0}; …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.