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

สำหรับคำถามเกี่ยวกับส่วนหน้าคอมไพเลอร์ clang LLVM สำหรับคำถามทั่วไปเกี่ยวกับ C ให้ใช้แท็ก C

2
เหตุใด Clang จึงเพิ่มประสิทธิภาพออกไป x * 1.0 แต่ไม่ใช่ x + 0.0
เหตุใด Clang จึงเพิ่มประสิทธิภาพการวนซ้ำในโค้ดนี้ #include <time.h> #include <stdio.h> static size_t const N = 1 << 27; static double arr[N] = { /* initialize to zero */ }; int main() { clock_t const start = clock(); for (int i = 0; i < N; ++i) { arr[i] *= 1.0; } printf("%u ms\n", …

17
ปัญหาการคอมไพล์: ไม่พบ crt1.o
ฉันมีระบบ Debian เสมือนจริงที่ฉันใช้ในการพัฒนา วันนี้อยากลอง llvm / clang หลังจากติดตั้งเสียงดังฉันไม่สามารถรวบรวม c-project เก่าของฉัน (ด้วย gcc) นี่คือข้อผิดพลาด: ... /usr/bin/ld: cannot find crt1.o: No such file or directory /usr/bin/ld: cannot find crti.o: No such file or directory collect2: ld returned 1 exit status ... ฉันถอนการติดตั้งเสียงดังลั่น แต่ก็ยังใช้งานไม่ได้ ใครมีความคิดว่าฉันจะแก้ไขปัญหานี้ได้อย่างไร
115 gcc  clang  ld 

2
มีเจตนาโดยคณะกรรมการมาตรฐาน C ++ หรือไม่ว่าใน C ++ 11 unordered_map ทำลายสิ่งที่แทรก?
ฉันเพิ่งเสียชีวิตไปสามวันในการติดตามข้อผิดพลาดที่แปลกมากที่ unordered_map :: insert () ทำลายตัวแปรที่คุณแทรก ลักษณะการทำงานที่ไม่ชัดเจนนี้เกิดขึ้นในคอมไพเลอร์ล่าสุดเท่านั้น: ฉันพบว่า clang 3.2-3.4 และ GCC 4.8 เป็นคอมไพเลอร์เพียงตัวเดียวที่แสดง "คุณลักษณะ" นี้ นี่คือโค้ดที่ลดลงบางส่วนจากฐานรหัสหลักของฉันซึ่งแสดงให้เห็นถึงปัญหา: #include <memory> #include <unordered_map> #include <iostream> int main(void) { std::unordered_map<int, std::shared_ptr<int>> map; auto a(std::make_pair(5, std::make_shared<int>(5))); std::cout << "a.second is " << a.second.get() << std::endl; map.insert(a); // Note we are NOT doing insert(std::move(a)) std::cout …
114 c++  gcc  c++11  clang  standards 

5
PATH_MAX กำหนดไว้ที่ไหนใน Linux?
ไฟล์ส่วนหัวใดที่ฉันควรเรียกใช้#includeเพื่อให้สามารถใช้ PATH_MAX เป็น int สำหรับปรับขนาดสตริงได้ ฉันต้องการที่จะประกาศ: char *current_path[PATH_MAX]; แต่เมื่อฉันทำเช่นนั้นคอมไพเลอร์ของฉัน (Clang / LLVM บน Linux) ออกข้อผิดพลาดต่อไปนี้: recursive_find6.c:29:20: error: use of undeclared identifier 'PATH_MAX' char *current_path[PATH_MAX]; ^ ฉันลองค้นหาโดย Google แล้ว แต่ก็ยังไม่มีโชค #include <limits.h> ไม่แก้ไขปัญหา / ข้อผิดพลาด ฉันแก้ไขด้วยหรือไม่ว่าค่าของ PATH_MAX เป็น int
113 c  linux  gcc  include  clang 

3
ฉันสามารถใช้มาโครใดที่กำหนดไว้ล่วงหน้าเพื่อตรวจจับเสียงดัง
ฉันกำลังพยายามตรวจหาคอมไพเลอร์ที่ใช้ในการรวบรวมซอร์สโค้ดของฉัน ฉันสามารถค้นหามาโครที่กำหนดไว้ล่วงหน้าเพื่อตรวจสอบ MSVC หรือ GCC ได้อย่างง่ายดาย (ดูตัวอย่างhttp://predef.sourceforge.net/ ) แต่ฉันไม่พบมาโครใด ๆ เพื่อตรวจสอบเสียงดัง มีใครรู้บ้างว่าเสียงดังกล่าวกำหนดมาโครเช่น__CLANG__เพื่อที่จะรู้ว่ากำลังรวบรวมโค้ดของฉันอยู่หรือไม่?

2
เติมโค้ดได้เร็วขึ้นด้วยเสียงดังกริ๊ก
ฉันกำลังตรวจสอบการเร่งการเติมโค้ดที่เป็นไปได้ในขณะที่ใช้กลไกการเติมโค้ดของ clang ขั้นตอนที่อธิบายด้านล่างคือสิ่งที่ฉันพบในrtagsโดย Anders Bakken หน่วยการแปลถูกแยกวิเคราะห์โดยไฟล์การมอนิเตอร์ daemon สำหรับการเปลี่ยนแปลง สิ่งนี้ทำได้โดยเรียกclang_parseTranslationUnitและฟังก์ชันที่เกี่ยวข้อง ( reparse*, dispose*) clang_codeCompleteAtเมื่อผู้ใช้ร้องขอเสร็จสิ้นในเส้นที่กำหนดและคอลัมน์ในแฟ้มแหล่งที่มาที่ภูตผ่านการแปลหน่วยที่เก็บไว้สำหรับรุ่นที่บันทึกไว้ล่าสุดของแฟ้มแหล่งที่มาและแฟ้มแหล่งที่มาปัจจุบัน ( เอกสาร Clang CodeComplete ) ธงที่ส่งผ่านไปclang_parseTranslationUnit(จากCompletionThread :: กระบวนการสาย 271 ) CXTranslationUnit_PrecompiledPreamble|CXTranslationUnit_CacheCompletionResults|CXTranslationUnit_SkipFunctionBodesเป็น ธงที่ส่งผ่านไปclang_codeCompleteAt(จากCompletionThread :: กระบวนการสาย 305 ) CXCodeComplete_IncludeMacros|CXCodeComplete_IncludeCodePatternsเป็น เรียกร้องให้clang_codeCompleteAtช้ามาก - มันจะใช้เวลาประมาณ 3-5 clang_codeCompleteAtวินาทีเพื่อให้ได้เสร็จสิ้นแม้ในกรณีที่สถานที่ตั้งเสร็จสิ้นเป็นรหัสการเข้าถึงสมาชิกที่ถูกต้องเป็นส่วนหนึ่งของกรณีการใช้งานตั้งใจที่กล่าวถึงในเอกสารของ ดูเหมือนว่าวิธีนี้จะช้าเกินไปตามมาตรฐานการเติมรหัส IDE มีวิธีเร่งความเร็วนี้หรือไม่?

2
GCC -g vs -g3 ค่าสถานะ GDB: ความแตกต่างคืออะไร?
เมื่อคอมไพล์ซอร์สโค้ด C ด้วย gcc หรือ Clang ฉันจะใช้-gแฟล็กเพื่อสร้างข้อมูลการดีบักสำหรับ gdb เสมอ gcc -g -o helloworld helloworld.c ฉันสังเกตเห็นว่ามีบางคนแนะนำ-g3แทน ความแตกต่างระหว่างแฟล็ก-gและ-g3แฟล็กคืออะไร? นอกจากนี้ยังมีความแตกต่างระหว่าง-gและ-ggdb?
108 c  debugging  gcc  gdb  clang 

6
ฉันจะรวบรวม C ++ ด้วย Clang ได้อย่างไร
ฉันติดตั้งClangโดยใช้ apt-get ใน Ubuntu และฉันสามารถรวบรวมไฟล์ C ได้สำเร็จโดยใช้มัน อย่างไรก็ตามฉันไม่รู้ว่าจะรวบรวม C ++ ผ่านมันได้อย่างไร ฉันต้องทำอะไรเพื่อรวบรวม C ++
99 c++  clang 

8
ระงับคำเตือน "หมวดหมู่กำลังใช้วิธีการที่คลาสหลักจะนำไปใช้ด้วย"
ฉันสงสัยว่าจะระงับคำเตือนได้อย่างไร: หมวดหมู่กำลังใช้วิธีการซึ่งจะถูกนำไปใช้โดยคลาสหลักด้วย ฉันมีสิ่งนี้สำหรับหมวดหมู่รหัสเฉพาะ: + (UIFont *)systemFontOfSize:(CGFloat)fontSize { return [self aCustomFontOfSize:fontSize]; }

8
clang: จะแสดงรายการสถาปัตยกรรมเป้าหมายที่รองรับได้อย่างไร?
ตอนนี้ฉันสนใจ ARM โดยทั่วไปและเฉพาะเป้าหมาย iphone / android แต่ฉันแค่อยากรู้เพิ่มเติมเกี่ยวกับเสียงดังเพราะรู้สึกว่ามีบทบาทสำคัญในอีกหลายปีข้างหน้า ฉันเหนื่อย clang -cc1 --help|grep -i list clang -cc1 --help|grep arch|grep -v search clang -cc1 --help|grep target -triple <value> Specify target triple (e.g. i686-apple-darwin9) ฉันรู้ว่า clang มีพารามิเตอร์ -triplet แต่ฉันจะแสดงรายการค่าที่เป็นไปได้ทั้งหมดได้อย่างไร ฉันพบว่าเสียงดังกราวแตกต่างจาก gcc มากในแง่ของการรวบรวมข้ามในโลก GCC คุณควรมีไบนารีแยกต่างหากสำหรับทุกสิ่งเช่น PLATFORM_make หรือ PLATFORM_ld (i * 86-pc-cygwin i * 86 - …
98 clang  llvm 

14
ปัญหาการคอมไพล์สร้างหรือเก็บถาวรด้วย Xcode 4 (และการอ้างอิง)
คำถามนี้มีการพัฒนาในช่วงหลายสัปดาห์ที่ผ่านมาเพื่อให้ครอบคลุมประเด็นทั่วไปมากขึ้นด้วย xcode4 (และการอัปเกรดโครงการในรูปแบบเก่ากว่า xcodes). อย่างไรก็ตามหลายปัญหาสามารถแก้ไขได้โดยทำตามคำแนะนำชุดเดียวกัน หากคุณมีปัญหาใด ๆ ต่อไปนี้ให้ลองใช้วิธีการในคำตอบที่ยอมรับ: Xcode 4 ไม่สามารถจัดเก็บแอปได้ Xcode 4 สร้างที่เก็บถาวรที่ใช้ไม่ได้ Xcode 4 ไม่ได้สร้าง. ipa Xcode 4 ไม่สามารถคอมไพล์ได้เนื่องจากข้อผิดพลาดของตัวประมวลผลล่วงหน้า Xcode 4 ไม่พบส่วนหัว รหัสของ Xcode 4 ไม่ทำงาน การพึ่งพาโครงการจะไม่รวบรวม การเพิ่มการพึ่งพาทำให้เกิดปัญหาข้างต้น คำถามเดิม หัวข้อ: "ไม่พบไฟล์ปัญหาคำศัพท์หรือตัวประมวลผลล่วงหน้า" ใน Xcode 4 ฉันมีโครงการใน Xcode 4 ที่จะสร้างได้ดีและทำงานบนอุปกรณ์และโปรแกรมจำลอง แต่เมื่อพยายามจัดเก็บข้อผิดพลาดเมื่อค้นหาไฟล์ส่วนหัวที่เกี่ยวข้องกับไลบรารีแบบคงที่: In file included from /Volumes/Development/Path/LBProject/LBProject/LBProject-Prefix.pch:15: In file included from …

3
ระดับการเพิ่มประสิทธิภาพเสียงดัง
บน gcc, คู่มืออธิบายถึงสิ่งที่-O3, -Osฯลฯ แปลในแง่ของการขัดแย้งการเพิ่มประสิทธิภาพโดยเฉพาะ ( -funswitch-loops, -fcompare-elimฯลฯ ) ฉันกำลังมองหาข้อมูลเหมือนกันสำหรับเสียงดังกราว ผมมองออนไลน์และในการman clangที่เพียง แต่ช่วยให้ข้อมูลทั่วไป ( -O2เพิ่มประสิทธิภาพมากกว่า-O1, -Osจะเพิ่มประสิทธิภาพสำหรับความเร็ว, ... ) และยังมองที่นี่ในกองมากเกินและพบนี้แต่ฉันไม่ได้พบอะไรที่เกี่ยวข้องในการอ้างถึงไฟล์ที่มา แก้ไข:ผมพบคำตอบ แต่ฉันสนใจยังคงถ้าใครมีการเชื่อมโยงไปยังเอกสารใช้คู่มือการเพิ่มประสิทธิภาพทั้งหมดผ่านและผ่านการคัดเลือกจาก ขณะนี้ฉันเพิ่งพบนี้รายการผ่าน แต่ไม่มีอะไรในระดับที่เพิ่มประสิทธิภาพ-Ox

13
LLVM C ++ IDE สำหรับ Windows
มี C / C ++ IDE สำหรับ Windows ซึ่งรวมเข้ากับคอมไพเลอร์ LLVM (และตัววิเคราะห์ Clang C / C ++) เช่นเดียวกับ Xcode สมัยใหม่หรือไม่ ฉันมี Dev-Cpp (ใช้ GCC ที่ล้าสมัย) และCode :: Blocks (กับ GCC บางส่วน) แต่ GCC ให้ข้อความแสดงข้อผิดพลาดที่คลุมเครือมาก ฉันต้องการรับข้อความแสดงข้อผิดพลาดที่เป็นมิตรกับผู้ใช้มากขึ้นจากส่วนหน้าเสียงดัง ใช่ Clang ไม่สามารถใช้กับโค้ด C ++ ที่ซับซ้อนได้ แต่ trunk Clang สามารถคอมไพล์ LLVM เองได้แล้ว ดังนั้นฉันจึงสงสัยว่ามี LLVM IDE ในการพัฒนาหรือในเวอร์ชันเบต้าหรือไม่ …
92 c++  windows  ide  llvm  clang 

4
ข้อผิดพลาดของเทมเพลตที่สับสน
ฉันเล่นกับเสียงดังมาระยะหนึ่งแล้วและฉันก็สะดุดกับ "test / SemaTemplate / depend-template-recover.cpp" (ในการแจกแจงเสียงดัง) ซึ่งควรให้คำแนะนำในการกู้คืนจากข้อผิดพลาดของเทมเพลต สิ่งทั้งหมดสามารถถอดออกเป็นตัวอย่างเล็กน้อยได้อย่างง่ายดาย: template<typename T, typename U, int N> struct X { void f(T* t) { // expected-error{{use 'template' keyword to treat 'f0' as a dependent template name}} t->f0<U>(); } }; ข้อความแสดงข้อผิดพลาดที่เกิดจากเสียงดังลั่น: tpl.cpp:6:13: error: use 'template' keyword to treat 'f0' as a dependent template …
91 c++  templates  llvm  clang 

2
การเพิ่มประสิทธิภาพจุดลอยตัวนี้อนุญาตหรือไม่
ฉันพยายามตรวจสอบว่าที่ไหนfloatสูญเสียความสามารถในการแทนจำนวนเต็มจำนวนมาก ฉันจึงเขียนตัวอย่างเล็ก ๆ น้อย ๆ นี้: int main() { for (int i=0; ; i++) { if ((float)i!=i) { return i; } } } ดูเหมือนว่าโค้ดนี้จะใช้ได้กับคอมไพเลอร์ทั้งหมดยกเว้นเสียงดัง เสียงดังสร้างการวนซ้ำที่ไม่สิ้นสุดที่เรียบง่าย Godbolt . อนุญาตหรือไม่ ถ้าใช่มันเป็นปัญหา QoI หรือไม่?

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