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

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

8
รวบรวมด้วย g ++ โดยใช้หลายแกน
คำถามด่วน: ธงคอมไพเลอร์คืออะไรที่อนุญาตให้ g ++ วางไข่หลายอินสแตนซ์ของตัวเองเพื่อรวบรวมโครงการขนาดใหญ่ได้เร็วขึ้น (เช่นไฟล์ต้นฉบับ 4 ไฟล์ในเวลาเดียวกันสำหรับ CPU แบบมัลติคอร์)?

5
วิธีการดูว่าธง --march = พื้นเมืองจะเปิดใช้งาน?
ฉันกำลังรวบรวมแอป C ++ ของฉันโดยใช้ GCC 4.3 แทนที่จะเลือกการตั้งค่าสถานะการปรับแต่งที่ฉันใช้ด้วยตนเอง-march=nativeซึ่งในทางทฤษฎีแล้วควรเพิ่มการตั้งค่าสถานะการปรับให้เหมาะสมทั้งหมดที่ใช้กับฮาร์ดแวร์ที่ฉันกำลังรวบรวม แต่ฉันจะตรวจสอบการตั้งค่าสถานะที่ใช้งานจริงได้อย่างไร

3
LD_LIBRARY_PATH เทียบกับ LIBRARY_PATH
ฉันกำลังสร้างโปรแกรม C ++ แบบง่ายและฉันต้องการแทนที่ระบบที่ให้ไลบรารี่ที่ใช้ร่วมกันกับเวอร์ชันที่ใหม่กว่าชั่วคราวสำหรับการพัฒนาและการทดสอบ ฉันพยายามตั้งค่าตัวแปร LD_LIBRARY_PATH แต่ตัวเชื่อมโยง (ld) ล้มเหลวด้วย: / usr / bin / ld: ไม่สามารถหา -lyaml-cpp ฉันคาดว่าจะทำงานได้เพราะตามหน้า man ld: ตัวลิงก์ใช้พา ธ การค้นหาต่อไปนี้เพื่อค้นหาไลบรารีแบบแบ่งใช้ที่จำเป็น: ... สำหรับตัวเชื่อมโยงแบบดั้งเดิมเนื้อหาของตัวแปรสภาพแวดล้อม "LD_LIBRARY_PATH" ... ฉันลองตั้ง LIBRARY_PATH แล้วก็ใช้งานได้ ตามคู่มือ GCC: ค่าของ LIBRARY_PATH เป็นรายการไดเร็กทอรีที่คั่นด้วยโคลอนเหมือนกับ PATH เมื่อกำหนดค่าเป็นคอมไพเลอร์เนทีฟ GCC จะพยายามไดเรกทอรีที่ระบุไว้เมื่อค้นหาไฟล์ลิงเกอร์พิเศษหากไม่สามารถค้นหาได้โดยใช้ GCC_EXEC_PREFIX การลิงก์โดยใช้ GCC ยังใช้ไดเรกทอรีเหล่านี้เมื่อค้นหาไลบรารีสามัญสำหรับตัวเลือก -l (แต่ไดเรกทอรีที่ระบุด้วย -L ​​จะมาก่อน) ตามที่แนะนำ (GCC) แนะนำ …
159 gcc  g++  ld 

9
เหตุใดการไหลออกจากจุดสิ้นสุดของฟังก์ชันที่ไม่ใช่โมฆะโดยไม่ส่งคืนค่าไม่ทำให้เกิดข้อผิดพลาดของคอมไพเลอร์
นับตั้งแต่ฉันรู้มาหลายปีแล้วว่าสิ่งนี้ไม่ได้สร้างข้อผิดพลาดตามค่าเริ่มต้น (อย่างน้อยใน GCC) ฉันสงสัยอยู่เสมอว่าเพราะอะไร ฉันเข้าใจว่าคุณสามารถออกธงคอมไพเลอร์เพื่อสร้างคำเตือน แต่มันควรจะเป็นข้อผิดพลาดหรือไม่? ทำไมมันจึงสมเหตุสมผลสำหรับฟังก์ชั่นที่ไม่ใช่โมฆะไม่คืนค่าที่ถูกต้อง? ตัวอย่างตามที่ร้องขอในความคิดเห็น: #include <stdio.h> int stringSize() { } int main() { char cstring[5]; printf( "the last char is: %c\n", cstring[stringSize()-1] ); return 0; } ... คอมไพล์
158 c++  c  gcc  g++ 

7
std :: enable_if เพื่อคอมไพล์ฟังก์ชันสมาชิกแบบมีเงื่อนไข
std::enable_ifฉันพยายามที่จะได้รับตัวอย่างง่ายๆในการทำงานจะเข้าใจวิธีการใช้งาน หลังจากที่ฉันอ่านคำตอบนี้ฉันคิดว่ามันไม่ควรยากเกินไปที่จะเกิดขึ้นกับตัวอย่างง่ายๆ ฉันต้องการใช้std::enable_ifเพื่อเลือกระหว่างสองฟังก์ชั่นสมาชิกและอนุญาตให้ใช้หนึ่งในนั้นเท่านั้น น่าเสียดายที่สิ่งต่อไปนี้ไม่ได้รวบรวมกับ gcc 4.7 และหลังจากเวลาผ่านไปหลายชั่วโมงของการลองฉันถามพวกคุณว่าสิ่งที่ฉันผิดคืออะไร #include <utility> #include <iostream> template< class T > class Y { public: template < typename = typename std::enable_if< true >::type > T foo() { return 10; } template < typename = typename std::enable_if< false >::type > T foo() { return 10; } }; …
156 c++  templates  g++  c++11 

5
จุดประสงค์ของ g ++ -Wreorder คืออะไร
ตัวเลือก g ++ -Wall รวมถึง - คำสั่งซื้อ ตัวเลือกนี้ทำอะไรอธิบายไว้ด้านล่าง ไม่ชัดเจนสำหรับฉันว่าทำไมบางคนถึงสนใจ (โดยเฉพาะอย่างยิ่งพอที่จะเปิดใช้งานตามค่าเริ่มต้นใน -Wall) - คำสั่งซื้อ (C ++ เท่านั้น) เตือนเมื่อลำดับของสมาชิกเริ่มต้นที่กำหนดในรหัสไม่ได้ ตรงกับคำสั่งที่พวกเขาจะต้องดำเนินการ ตัวอย่างเช่น struct A { int i; int j; A (): j (0), i (1) {} }; คอมไพเลอร์จะจัดเรียง initializers สมาชิกใหม่สำหรับ i และ j to ตรงกับคำสั่งประกาศของสมาชิกปล่อยเตือนไปที่ ผล คำเตือนนี้เปิดใช้งานโดย -Wall

8
วัตถุประสงค์ของการใช้ -pedantic ในคอมไพเลอร์ GCC / G ++ คืออะไร?
หมายเหตุนี้ระบุว่า: -ansi: บอกให้คอมไพเลอร์ใช้ตัวเลือกภาษา ANSI สิ่งนี้จะปิด "คุณลักษณะ" บางอย่างของ GCC ซึ่งเข้ากันไม่ได้กับมาตรฐาน ANSI -pedantic: ใช้ร่วมกับ-ansiสิ่งนี้บอกให้คอมไพลเลอร์ปฏิบัติตามมาตรฐาน ANSI อย่างเคร่งครัดโดยปฏิเสธรหัสใด ๆ ที่ไม่เป็นไปตามข้อกำหนด สิ่งแรกแรก: วัตถุประสงค์ของการคืออะไร-pedanticและ-ansiตัวเลือกของคอมไพเลอร์ GCC / G ++ (ผมไม่เข้าใจคำอธิบายข้างต้น)? ใครช่วยบอกฉันถึงสถานการณ์ที่เหมาะสมในการใช้สองตัวเลือกนี้ ฉันควรใช้เมื่อใด มีความสำคัญหรือไม่?
140 c++  c  gcc  g++ 

4
จะส่งต่อประกาศคลาสเทมเพลตในเนมสเปซ std ได้อย่างไร
#ifndef __TEST__ #define __TEST__ namespace std { template<typename T> class list; } template<typename T> void Pop(std::list<T> * l) { while(!l->empty()) l->pop(); } #endif และใช้ฟังก์ชันนั้นใน main ฉันได้รับข้อผิดพลาด แน่นอนฉันรู้ว่ามีพารามิเตอร์เทมเพลตเพิ่มเติมสำหรับstd::list(ฉันคิดว่าตัวจัดสรร) แต่ที่อยู่ข้างประเด็น ฉันต้องรู้การประกาศเทมเพลตแบบเต็มของคลาสเทมเพลตเพื่อส่งต่อประกาศได้หรือไม่ แก้ไข: ฉันไม่ได้ใช้ตัวชี้มาก่อน - มันเป็นข้อมูลอ้างอิง ฉันจะลองใช้ตัวชี้
131 c++  templates  g++ 

5
แฟล็กเพื่อเปิดใช้งานคำเตือน g ++ อย่างละเอียดและละเอียด
บ่อยครั้งใน C ภายใต้gccฉันจะเริ่มต้นด้วยชุดคำเตือนต่อไปนี้ (ประกอบอย่างเจ็บปวดจากหลายแหล่ง): -Wall -Wextra -Wformat-nonliteral -Wcast-align -Wpointer-arith -Wbad-function-cast \ -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Winline -Wundef \ -Wnested-externs -Wcast-qual -Wshadow -Wwrite-strings -Wno-unused-parameter \ -Wfloat-equal -pedantic -ansi ฉันจะสร้าง (อย่างน้อยเวอร์ชันดีบักของฉัน) ด้วยชุดคำเตือนนี้และแก้ไขทุกสิ่งที่ทำได้ (โดยปกติคือทุกอย่าง) จากนั้นจะลบแฟล็กเฉพาะในกรณีที่ไม่เกี่ยวข้องหรือไม่สามารถแก้ไขได้ (แทบจะไม่เคยเป็นเช่นนั้นเลย) บางครั้งฉันจะเพิ่ม-Werrorด้วยว่าฉันต้องถอยห่างออกไปขณะรวบรวม ฉันแค่หยิบ C ++ ขึ้นมา (ใช่ฉันล้าหลังกว่า 15 ปี) และฉันต้องการเริ่มต้นอย่างถูกต้อง คำถามของฉันคือใครมีชุดคำเตือนที่สมบูรณ์ที่คล้ายกันที่คอมไพล์ไว้ล่วงหน้าสำหรับ C ++ ภายใต้g++หรือไม่? (ฉันรู้ว่าพวกเขาหลายคนจะเหมือนกัน)
122 c++  g++  warnings 

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
ข้อผิดพลาดคุณสมบัติพิเศษใน C ++
ฉันมีฟังก์ชันสมาชิกที่กำหนดไว้ดังนี้: Value JSONDeserializer::ParseValue(TDR type, const json_string& valueString); เมื่อฉันรวบรวมแหล่งที่มาฉันจะได้รับ: ข้อผิดพลาด: คุณสมบัติพิเศษ 'JSONDeserializer ::' ในสมาชิก 'ParseValue' นี่คืออะไร? ฉันจะลบข้อผิดพลาดนี้ได้อย่างไร
120 c++  g++  compiler-errors 

4
ฉันจะเปิดใช้งาน C ++ 11 ใน gcc ได้อย่างไร
ฉันใช้ gcc 4.8.1 จากhttp://hpc.sourceforge.netบน Mac OSX Mountain Lion ฉันพยายามรวบรวมโปรแกรม C ++ ซึ่งใช้to_stringฟังก์ชันใน<string>. ฉันต้องใช้ธง-std=c++11ทุกครั้ง: g++ -std=c++11 -o testcode1 code1.cpp มีวิธีรวมแฟล็กนี้โดยค่าเริ่มต้นหรือไม่?
119 c++11  g++ 

5
ไฟล์. h.gch คืออะไร
ฉันเพิ่งมีโปรเจ็กต์คลาสที่ฉันต้องทำโปรแกรมด้วย G ++ ฉันใช้ makefile และบางครั้งก็ทิ้งไฟล์. h.gch ไว้ข้างหลังด้วยเหตุผลบางประการ บางครั้งสิ่งนี้ไม่ได้ส่งผลต่อการคอมไพล์ แต่บ่อยครั้งที่คอมไพเลอร์ออกข้อผิดพลาดสำหรับปัญหาที่ได้รับการแก้ไขแล้วหรือไม่สมเหตุสมผล ฉันมีสองคำถาม: 1) ไฟล์. h.gch คืออะไรและใช้ทำอะไร และ 2) เหตุใดจึงเกิดปัญหาเช่นนี้เมื่อไม่ได้ทำความสะอาด
116 c++  g++ 

7
ผลลัพธ์ทศนิยมที่แตกต่างกันเมื่อเปิดใช้งานการเพิ่มประสิทธิภาพ - บั๊กคอมไพเลอร์?
โค้ดด้านล่างทำงานบน Visual Studio 2008 ที่มีและไม่มีการปรับให้เหมาะสม แต่ใช้ได้เฉพาะกับ g ++ โดยไม่มีการปรับให้เหมาะสม (O0) #include <cstdlib> #include <iostream> #include <cmath> double round(double v, double digit) { double pow = std::pow(10.0, digit); double t = v * pow; //std::cout << "t:" << t << std::endl; double r = std::floor(t + 0.5); //std::cout << "r:" << …
109 c++  optimization  g++  c++-faq 

3
จะสร้างไลบรารีแบบคงที่ด้วย g ++ ได้อย่างไร
ใครช่วยบอกวิธีสร้างไลบรารีแบบคงที่จากไฟล์. cpp และ. hpp ได้ไหม ฉันต้องสร้าง. o และ. a หรือไม่? ฉันต้องการทราบว่าฉันจะรวบรวมไลบรารีแบบคงที่และใช้ในรหัส. cpp อื่นได้อย่างไร ฉันมีheader.cpp, ผมอยากจะสร้างheader.hpp . header.aทดสอบส่วนหัว a ในtest.cpp. ฉันใช้ g ++ ในการรวบรวม

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