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

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

2
gcc / g ++:“ ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว”
g++ ทำให้ฉันมีข้อผิดพลาดของแบบฟอร์ม: foo.cc:<line>:<column>: fatal error: <bar>: No such file or directory compilation terminated. จะเหมือนกันเมื่อคอมไพล์โปรแกรม C ด้วยgcc. ทำไมถึงเป็นเช่นนั้น? โปรดทราบ:คำถามนี้ถูกถามหลายครั้งก่อนหน้านี้ แต่ทุกครั้งจะเฉพาะเจาะจงสำหรับสถานการณ์ของผู้ถาม จุดประสงค์ของคำถามนี้คือการมีคำถามที่ผู้อื่นสามารถปิดเป็นรายการที่ซ้ำกันได้ทุกครั้ง คำถามที่พบบ่อย
88 c++  c  gcc  g++  c++-faq 

4
ข้อผิดพลาด: ไม่ทราบชื่อประเภท 'bool'
ฉันดาวน์โหลดซอร์สโค้ดและต้องการรวบรวมไฟล์สแกนเนอร์ มันทำให้เกิดข้อผิดพลาดนี้: [meepo@localhost cs143-pp1]$ gcc -o lex.yy.o lex.yy.c -ll In file included from scanner.l:15:0: scanner.h:59:5: error: unknown type name ‘bool’ In file included from scanner.l:16:0: utility.h:64:38: error: unknown type name ‘bool’ utility.h:74:1: error: unknown type name ‘bool’ In file included from scanner.l:17:0: errors.h:16:18: fatal error: string: No such file or …
88 c  gcc  lex 

4
ตัวแปรสแต็กถูกจัดแนวโดย GCC __attribute __ ((aligned (x))) หรือไม่
ฉันมีรหัสต่อไปนี้: #include <stdio.h> int main(void) { float a[4] __attribute__((aligned(0x1000))) = {1.0, 2.0, 3.0, 4.0}; printf("%p %p %p %p\n", &a[0], &a[1], &a[2], &a[3]); } และฉันมีผลลัพธ์ต่อไปนี้: 0x7fffbfcd2da0 0x7fffbfcd2da4 0x7fffbfcd2da8 0x7fffbfcd2dac ทำไมที่อยู่ของ a[0]ไม่ได้เป็นหลาย0x1000? อะไรกันแน่ __attribute__((aligned(x))) ? ฉันเข้าใจคำอธิบายนี้ผิด? ฉันใช้ gcc 4.1.2

2
ความเชี่ยวชาญอย่างชัดเจนของฟังก์ชันสมาชิกคลาสเทมเพลต
ฉันต้องการความเชี่ยวชาญในฟังก์ชันสมาชิกเทมเพลตสำหรับบางประเภท (สมมติว่าdouble ) ทำงานได้ดีในขณะที่คลาสXไม่ใช่คลาสเทมเพลต แต่เมื่อฉันสร้างเทมเพลต GCC เริ่มให้ข้อผิดพลาดเวลาคอมไพล์ #include <iostream> #include <cmath> template <class C> class X { public: template <class T> void get_as(); }; template <class C> void X<C>::get_as<double>() { } int main() { X<int> x; x.get_as(); } นี่คือข้อความแสดงข้อผิดพลาด source.cpp:11:27: error: template-id 'get_as<double>' in declaration of primary template source.cpp:11:6: error: …

3
long long int เทียบกับ long int เทียบกับ int64_t ใน C ++
ฉันพบพฤติกรรมแปลก ๆ ในขณะที่ใช้ลักษณะประเภท C ++ และได้ จำกัด ปัญหาของฉันให้แคบลงเหลือเพียงปัญหาเล็ก ๆ น้อย ๆ ที่เล่นโวหารซึ่งฉันจะให้คำอธิบายมากมายเนื่องจากฉันไม่ต้องการปล่อยให้มีการตีความที่ผิด สมมติว่าคุณมีโปรแกรมดังนี้: #include <iostream> #include <cstdint> template <typename T> bool is_int64() { return false; } template <> bool is_int64<int64_t>() { return true; } int main() { std::cout << "int:\t" << is_int64<int>() << std::endl; std::cout << "int64_t:\t" << is_int64<int64_t>() << …
88 c++  gcc  cstdint 

10
การแปลงตัวชี้เป็นจำนวนเต็ม
ฉันกำลังพยายามปรับรหัสที่มีอยู่ให้เป็นเครื่อง 64 บิต ปัญหาหลักคือในฟังก์ชันหนึ่ง coder ก่อนหน้านี้ใช้อาร์กิวเมนต์ void * ที่ถูกแปลงเป็นประเภทที่เหมาะสมในฟังก์ชันนั้นเอง ตัวอย่างสั้น ๆ : void function(MESSAGE_ID id, void* param) { if(id == FOO) { int real_param = (int)param; // ... } } แน่นอนในเครื่อง 64 บิตฉันได้รับข้อผิดพลาด: error: cast from 'void*' to 'int' loses precision ฉันต้องการแก้ไขสิ่งนี้เพื่อให้มันยังคงทำงานบนเครื่อง 32 บิตและสมบูรณ์ที่สุด ความคิดใด ๆ ?
88 c++  gcc  casting  64-bit  32-bit 

12
คงยืนยันใน C
วิธีใดที่ดีที่สุดในการบรรลุการยืนยันแบบคงที่ของเวลาคอมไพล์ใน C (ไม่ใช่ C ++) โดยเน้นเฉพาะ GCC

3
คอมไพเลอร์ gcc C เขียนด้วยตัว C เองหรือไม่?
คอมไพเลอร์ gcc C เขียนด้วยตัว C เองหรือไม่? หรือเขียนไว้ใน Assembly? ถ้าคอมไพเลอร์เขียนด้วย C แล้วคอมไพเลอร์ที่ใช้ในการรวบรวมโค้ดคอมไพเลอร์คืออะไร?

4
ฉันสามารถใช้ C ++ 11 กับ Xcode ได้หรือไม่
ฉันกำลังพิจารณาการใช้คุณสมบัติบางอย่างของ C ++ 11 (เช่นautoเช่น) ในโครงการข้ามแพลตฟอร์ม (Windows + Mac) ใน Windows Visual Studio รองรับบางส่วนของมาตรฐาน C ++ 11 ที่กำลังจะมาถึงซึ่งจะช่วยให้ฉันสามารถลดความซับซ้อนของส่วนต่างๆของฐานรหัสได้อย่างเป็นธรรมชาติดังนั้นฉันจึงสนใจที่จะเริ่มใช้คุณสมบัติเหล่านี้ แต่เท่าที่ทราบ XCode เวอร์ชันปัจจุบัน (3.2.4 + GCC 4.2) ไม่รองรับฟีเจอร์ C ++ 11 ใด ๆ เลย ฉันสามารถอัปเกรดเวอร์ชัน GCC หรือเวอร์ชัน CLang ได้หรือไม่? หรือฉันควรจะกัดลิ้นตัวเองและรอให้ Apple บรรจุเวอร์ชันใหม่ในอนาคต
86 c++  xcode  gcc  c++11  clang 

8
เหตุใดฉันจึงได้รับความล้มเหลวในการยืนยัน C malloc
ฉันกำลังใช้การหารและพิชิตอัลกอริทึมพหุนามดังนั้นฉันจึงสามารถเปรียบเทียบกับการใช้งาน OpenCL ได้ แต่ฉันไม่สามารถmallocทำงานได้ เมื่อฉันเรียกใช้โปรแกรมมันจะจัดสรรสิ่งต่างๆมากมายตรวจสอบบางสิ่งจากนั้นส่งsize/2ไปยังอัลกอริทึม จากนั้นเมื่อฉันตีเส้นmallocอีกครั้งมันจะพ่นสิ่งนี้ออกมา: malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size …
86 c  gcc  malloc  assertion 

3
ความแตกต่างอย่างมาก (x9) ในเวลาดำเนินการระหว่างโค้ดที่เหมือนกันเกือบทั้งหมดใน C และ C ++
ฉันพยายามแก้แบบฝึกหัดนี้จาก www.spoj.com: FCTRL - Factorial คุณไม่จำเป็นต้องอ่านจริงๆแค่ทำถ้าคุณอยากรู้ :) ก่อนอื่นฉันติดตั้งในC ++ (นี่คือวิธีแก้ปัญหาของฉัน): #include <iostream> using namespace std; int main() { unsigned int num_of_inputs; unsigned int fact_num; unsigned int num_of_trailing_zeros; std::ios_base::sync_with_stdio(false); // turn off synchronization with the C library’s stdio buffers (from https://stackoverflow.com/a/22225421/5218277) cin >> num_of_inputs; while (num_of_inputs--) { cin >> fact_num; num_of_trailing_zeros …
85 c++  c  performance  gcc  iostream 

4
ปิดการใช้งานคำเตือน GCC เฉพาะบางส่วนของหน่วยการแปลหรือไม่
GCC ที่ใกล้เคียงที่สุดเทียบเท่ากับรหัสตัวประมวลผลล่วงหน้า MSVC นี้คืออะไร #pragma warning( push ) // Save the current warning state. #pragma warning( disable : 4723 ) // C4723: potential divide by 0 // Code which would generate warning 4723. #pragma warning( pop ) // Restore warnings to previous state. เรามีโค้ดในส่วนหัวที่รวมอยู่ทั่วไปซึ่งเราไม่ต้องการสร้างคำเตือนที่เฉพาะเจาะจง อย่างไรก็ตามเราต้องการให้ไฟล์ที่มีส่วนหัวเหล่านั้นสร้างคำเตือนนั้นต่อไป (หากโปรเจ็กต์เปิดใช้งานคำเตือนนั้น)

1
gcc / g ++ กับ cc1 / cc1plus ต่างกันอย่างไร?
เมื่อฉันรวบรวมโครงการของฉันและตรวจสอบทรัพยากรที่ใช้โดยการทำงานtopที่ใหญ่หมู CPU / หน่วยความจำบางครั้งเรียกว่าและบางครั้งg++ cc1plusอะไรคือความแตกต่างระหว่างทั้งสองและฉันควรโทรcc1plusโดยตรงหรือไม่?
85 gcc  g++ 

10
ไม่สามารถรวบรวมโปรแกรม C บน Mac หลังจากอัปเกรดเป็น Catalina 10.15
มีคำถามก่อนหน้านี้ไม่สามารถรวบรวมโปรแกรม C บน Mac หลังจากอัปเกรดเป็น Mojaveและคำตอบที่ครอบคลุมส่วนใหญ่ของรูปแบบที่ผิดพลาด ตอนนี้ - ตั้งแต่วันจันทร์ที่ 2019-10-07 - คุณสามารถอัปเกรดเป็น macOS Catalina 10.15 อีกครั้งระหว่างการอัปเกรด/usr/includeไดเรกทอรีได้ถูกยกเลิกไปโดยการอัพเดตแม้ว่าจะติดตั้ง XCode 11.0 ก่อนการอัปเกรด (จาก Mojave 10.14.6) ไปยัง Catalina ดังนั้นคอมไพเลอร์ที่สร้างขึ้นเพื่อคาดหวังว่าจะมี/usr/includeไดเรกทอรีไม่ทำงานอีกต่อไป ขั้นตอนหลักที่แนะนำสำหรับปัญหา Mojave - การใช้คำสั่ง: open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg ไม่ทำงานจากเกตเพราะ/Library/Developer/CommandLineTools/Packages/ไม่มีไดเรกทอรี(ดังนั้นยังไม่มี.pkgไฟล์ที่จะเปิด) มีวิธีที่ดี (เป็นทางการ) ในการสร้างและเติมไดเรกทอรี/usr/includeหรือไม่
64 c  xcode  macos  gcc  macos-catalina 

2
เหตุใดสวิตช์จึงไม่ปรับให้เหมาะสมในลักษณะเดียวกับการผูกมัดในกรณีอื่นใน c / c ++
การดำเนินการตามตารางต่อไปนี้จะสร้างชุดของคำสั่ง cmp / je อย่างที่ฉันคาดหวังว่าจะถูกล่ามโซ่หากข้อความ: int square(int num) { if (num == 0){ return 0; } else if (num == 1){ return 1; } else if (num == 2){ return 4; } else if (num == 3){ return 9; } else if (num == 4){ return 16; } else if …

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