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

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

9
จะระงับคำเตือน GCC จากส่วนหัวของห้องสมุดได้อย่างไร
ฉันมีโปรเจ็กต์ที่ใช้ไลบรารี log4cxx, boost และอื่น ๆ ที่ส่วนหัวสร้างคำเตือน (ซ้ำ ๆ ) มากมาย มีวิธีระงับคำเตือนจากไลบรารี (เช่น #include <some-header.h>) หรือรวมจากบางเส้นทางหรือไม่ ฉันต้องการใช้ -Wall และ / หรือ -Wextra ตามปกติในรหัสโครงการโดยไม่ปิดบังข้อมูลที่เกี่ยวข้อง ปัจจุบันฉันใช้ grep ในการสร้างผลลัพธ์ แต่ฉันต้องการสิ่งที่ดีกว่า

8
ฉันจะบอก gcc ไม่ให้อินไลน์ฟังก์ชันได้อย่างไร
สมมติว่าฉันมีฟังก์ชันเล็ก ๆ นี้ในไฟล์ต้นฉบับ static void foo() {} และฉันสร้างไบนารีเวอร์ชันที่ปรับให้เหมาะสมแล้ว แต่ฉันไม่ต้องการให้ฟังก์ชันนี้อินไลน์ (เพื่อวัตถุประสงค์ในการเพิ่มประสิทธิภาพ) มีมาโครที่ฉันสามารถเพิ่มในซอร์สโค้ดเพื่อป้องกันการแทรกในหรือไม่
126 c  gcc  inline 

6
การอ้างอิงที่ไม่ได้กำหนดถึง `` pow 'และ `` floor'
ฉันกำลังพยายามสร้างเครื่องคำนวณ fibonacci อย่างง่ายในภาษา C แต่เมื่อรวบรวมgccบอกว่าฉันไม่มีฟังก์ชันธารและพื้น มีอะไรผิดปกติ รหัส: #include <stdio.h> #include <math.h> int fibo(int n); int main() { printf("Fib(4) = %d", fibo(4)); return 0; } int fibo(int n) { double phi = 1.61803399; return (int)(floor((float)(pow(phi, n) / sqrt(5)) + .5f)); } เอาท์พุท: gab@testvm:~/work/c/fibo$ gcc fib.c -o fibo /tmp/ccNSjm4q.o: In function `fibo': …

5
C, C99, ANSI C และ GNU C ต่างกันอย่างไร?
ฉันได้เริ่มฝึกเขียนโปรแกรมบนcodechefและสับสนกับความแตกต่างระหว่าง C และ C99 C หมายถึงอะไรที่นี่? มันคือ C89? ตรวจสอบภาษาที่ด้านล่างของการส่งนี้ มีทั้ง C และ C99 ฉันพบสิ่งที่เรียกว่า GNU C บนอินเทอร์เน็ตมี C สำหรับระบบ linux / unix ต่างกันหรือไม่ สิ่งเหล่านี้เป็นไปตามมาตรฐาน C โดย ANSI หรือไม่ ฉันได้อ่านในบางสถานที่ "C99 เข้มงวด" นี่คืออะไร? มีมาตรฐานอื่น ๆ ของ C ที่ใช้งานอยู่หรือไม่? มีสิ่งที่เรียกว่า C 4.3.2 หรือเป็นเวอร์ชัน gcc ที่ใช้อยู่ในปัจจุบัน? แก้ไข: นี้ , นี้ , นี้ช่วย ฉันจะค้นหาเพิ่มเติมและแก้ไขสิ่งที่ยังไม่มีคำตอบ …
124 c  gcc  c99  c89  ansi-c 

1
แฟล็ก -all_load linker ทำอะไร
ฉันไม่พบว่าแฟล็ก -all_load ทำอะไรเมื่อคอมไพล์โค้ด Objective-C ฉันมีปัญหาบางอย่างในการอัปโหลดไบนารีไปยัง Apple พวกเขาบอกว่าเป็นเพราะฉันไม่ได้ใช้แฟล็กนี้ แต่โค้ดของฉันรวบรวมได้แม้ว่าจะไม่มีก็ตาม มีใครช่วยฉันได้ไหม ขอบคุณ

3
ความหมายของ "__attribute __ ((บรรจุ, จัดชิด (4)))" คืออะไร
เป็นภาษาซีเขียนว่า: typedef struct __attribute__((packed, aligned(4))) Ball { float2 delta; float2 position; //float3 color; float size; //int arcID; //float arcStr; } Ball_t; Ball_t *balls; กรุณาบอกความหมายของมันและจะใช้คีย์เวิร์ดนี้อย่างไร
122 c  gcc 

7
วิธีระบุเส้นทาง GCC ใหม่สำหรับ CMake
ฉัน OS เป็น CentOS ซึ่งมี GCC /usr/bin/gccเริ่มต้นในเส้นทาง แต่มันเก่าฉันต้องการ gcc เวอร์ชันใหม่ /usr/local/bin/gccดังนั้นผมจึงติดตั้งรุ่นใหม่ในเส้นทางใหม่ แต่เมื่อฉันเรียกใช้cmakeมันยังคงใช้เส้นทาง gcc ( /usr/bin/gcc) เวอร์ชันเก่า ฉันจะระบุ gcc ไปยังเส้นทางใหม่ ( /usr/local/bin/gcc) ได้อย่างไร ฉันได้พยายามที่จะเขียนทับ/usr/bin/gccด้วย/usr/local/bin/gccแต่มันไม่ทำงาน
122 gcc  cmake 

6
ข้อผิดพลาด: การใช้ฟังก์ชันที่ถูกลบ
ฉันทำงานกับรหัส C ++ ที่เพื่อนเขียนและได้รับข้อผิดพลาดต่อไปนี้ที่ฉันไม่เคยเห็นมาก่อนเมื่อคอมไพล์กับ gcc4.6: error: use of deleted function ‘GameFSM_<std::array<C, 2ul> >::hdealt::hdealt()’ is implicitly deleted because the default definition would be ill-formed: uninitialized non-static const member ‘const h_t FlopPokerGameFSM_<std::array<C, 2ul> >::hdealt::h’ แก้ไข: สิ่งนี้มาจากส่วนหนึ่งของโค้ดโดยใช้ boost MSM: Boost Webpage แก้ไข 2: ไม่มีการ= delete()ใช้ที่ใดก็ได้ในซอร์สโค้ด โดยทั่วไปแล้วข้อผิดพลาดนี้หมายถึงอะไร? ฉันควรมองหาอะไรเมื่อเกิดข้อผิดพลาดประเภทนี้

4
แฟล็ก fpermissive ทำอะไร?
ฉันแค่สงสัยว่า-fpermissiveแฟล็กทำอะไรในคอมไพเลอร์ g ++? ฉันได้รับ: ข้อผิดพลาด: การรับที่อยู่ชั่วคราว [-fpermissive] ซึ่งฉันสามารถแก้ปัญหาได้โดยให้ -fpermissiveแฟล็กกับคอมไพเลอร์ แก้ไข : ฉันเพิ่งพบสิ่งที่ทำให้เกิดข้อผิดพลาดที่อยู่ชั่วคราว! ฉันจะแก้ไขส่วนนั้นตอนนี้


5
ติดตั้ง gcc บนเครื่อง windows 7 ยังไง?
ฉันมี MinGW ในเครื่อง windows 7 ของฉัน ฉันต้องการติดตั้งและใช้ gcc ที่สมบูรณ์สำหรับคอมไพเลอร์ C ฉันพบว่าไม่มีไฟล์ติดตั้งสำเร็จรูปที่คอมไพล์ไว้ล่วงหน้าสำหรับจุดประสงค์นี้ ฉันตรวจสอบหน้าต่อไปนี้: http://gcc.gnu.org/install/ เป็นเรื่องยากและฉันพบว่ามันอยู่เหนือระดับความเข้าใจของฉัน ใครช่วยให้คำแนะนำทีละขั้นตอนพร้อมกับลิงค์ได้ไหม

7
จะคอมไพล์สำหรับ Windows บน Linux ด้วย gcc / g ++ ได้อย่างไร
ฉันได้เขียนเอฟเฟกต์บางอย่างใน C ++ (g ++) โดยใช้ freeglut บน Linux และฉันรวบรวมด้วย g++ -Wall -lglut part8.cpp -o part8 ดังนั้นฉันจึงสงสัยว่าเป็นไปได้หรือไม่ที่ g ++ จะสร้างไฟล์ปฏิบัติการ Windows ที่คอมไพล์แบบคงที่ซึ่งมีทุกอย่างที่จำเป็น? ฉันไม่มี Windows ดังนั้นมันจะเจ๋งมากถ้าฉันทำได้บน Linux :)
119 c++  opengl  gcc  glut  freeglut 

9
ฉันได้รับค่าที่มีขนาดใหญ่กว่า 8 บิตจากจำนวนเต็ม 8 บิตได้อย่างไร
ฉันติดตามแมลงที่น่ารังเกียจอย่างยิ่งที่ซ่อนอยู่หลังอัญมณีชิ้นเล็ก ๆ นี้ ผมทราบว่าต่อซี ++ สเปคลงนามล้นเป็นพฤติกรรมที่ไม่ได้กำหนด sizeof(int)แต่เมื่อล้นเกิดขึ้นเมื่อค่าที่จะขยายไปยังบิตกว้าง ตามที่ผมเข้าใจมัน incrementing ไม่ควรที่เคยเป็นพฤติกรรมที่ไม่ได้กำหนดตราบเท่าที่char sizeof(char) < sizeof(int)แต่นั่นไม่ได้อธิบายว่าcการได้รับค่าที่เป็นไปไม่ได้อย่างไร ในฐานะจำนวนเต็ม 8 บิตจะcเก็บค่าที่มากกว่าความกว้างบิตได้อย่างไร รหัส // Compiled with gcc-4.7.2 #include <cstdio> #include <stdint.h> #include <climits> int main() { int8_t c = 0; printf("SCHAR_MIN: %i\n", SCHAR_MIN); printf("SCHAR_MAX: %i\n", SCHAR_MAX); for (int32_t i = 0; i <= 300; i++) printf("c: …

8
มีคำใบ้คอมไพเลอร์สำหรับ GCC เพื่อบังคับให้การทำนายสาขาเป็นไปในทางที่แน่นอนหรือไม่?
สำหรับสถาปัตยกรรม Intel มีวิธีใดที่จะสั่งให้คอมไพเลอร์ GCC สร้างโค้ดที่บังคับให้การทำนายสาขาเป็นวิธีเฉพาะในโค้ดของฉันเสมอ ฮาร์ดแวร์ของ Intel รองรับสิ่งนี้หรือไม่ แล้วคอมไพเลอร์หรือฮาร์ดแวร์อื่น ๆ ล่ะ? ฉันจะใช้สิ่งนี้ในรหัส C ++ ซึ่งฉันรู้ว่ากรณีที่ฉันต้องการทำงานอย่างรวดเร็วและไม่สนใจเกี่ยวกับการชะลอตัวเมื่อสาขาอื่นต้องดำเนินการแม้ว่าสาขานั้นจะเพิ่งเข้ามาเมื่อไม่นานมานี้ for (;;) { if (normal) { // How to tell compiler to always branch predict true value? doSomethingNormal(); } else { exceptionalCase(); } } ตามคำถามสำหรับ Evdzhan Mustafa คำใบ้สามารถระบุคำใบ้เป็นครั้งแรกที่โปรเซสเซอร์พบคำสั่งการทำนายสาขาที่ตามมาทั้งหมดทำงานได้ตามปกติหรือไม่

11
ฉันจะแก้ไขข้อผิดพลาด GCC“ สำหรับการประกาศเริ่มต้นของลูปที่ใช้นอกโหมด C99” ได้อย่างไร
ฉันกำลังพยายามแก้ปัญหา3n + 1และฉันมีforลูปที่มีลักษณะดังนี้: for(int i = low; i <= high; ++i) { res = runalg(i); if (res > highestres) { highestres = res; } } น่าเสียดายที่ฉันได้รับข้อผิดพลาดนี้เมื่อพยายามรวบรวมกับ GCC: 3np1.c: 15: ข้อผิดพลาด: การประกาศเริ่มต้นของลูป 'สำหรับ' ที่ใช้นอกโหมด C99 ผมไม่รู้ว่าโหมด C99 คืออะไร ความคิดใด ๆ ?
117 c  gcc  for-loop 

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