GCC

Phần mềm chụp màn hình:
GCC
Các chi tiết về phần mềm:
Phiên bản: 8.2.0 Cập nhật
Ngày tải lên: 16 Aug 18
Nhà phát triển: The GCC Team
Giấy phép: Miễn phí
Phổ biến: 182

Rating: 3.0/5 (Total Votes: 3)

GCC (Bộ biên dịch GNU Compiler) là một phần mềm dòng lệnh nguồn mở được thiết kế để hoạt động như một trình biên dịch cho các hệ điều hành dựa trên GNU / Linux và BSD. Nó bao gồm giao diện người dùng cho nhiều ngôn ngữ lập trình, bao gồm Objective-C, Go, C ++, Java, C, Ada và Fortran.


Tính năng trong nháy mắt

Với GCC, bạn có thể cấu hình, biên dịch và cài đặt các ứng dụng GNU / Linux trong các hệ điều hành Linux hoặc BSD chỉ sử dụng kho lưu trữ nguồn của chương trình tương ứng. Tuy nhiên, người dùng không cần tương tác với trình biên dịch vì điều này được thực hiện tự động bằng cách định cấu hình và tạo tập lệnh.

Dự án cũng bao gồm các thư viện cho các ngôn ngữ lập trình khác nhau, chẳng hạn như libstdc và libgcj, và giống như hầu hết các phần mềm GNU, nó phải được cấu hình trước khi nó có thể được xây dựng và cài đặt trên máy tính của bạn.

Nó cũng có thể hiển thị đường dẫn đầy đủ tới một thư viện cụ thể, các thư mục trong đường dẫn tìm kiếm của trình biên dịch, đường dẫn đầy đủ đến một thành phần cụ thể, thư mục đích thư mục, hậu tố sysroot được sử dụng để tìm tiêu đề và bộ ba GNU chuẩn hóa của đích.

Ngoài ra, có nhiều tùy chọn khác để chuyển các tùy chọn và đối số được phân cách bằng dấu phẩy nhất định cho trình biên dịch, bộ tiền xử lý và trình liên kết, biên dịch và lắp ráp mà không cần liên kết, tạo thư viện được chia sẻ và nhiều thư mục khác.


Được thiết kế cho hệ điều hành GNU

Ban đầu được viết là trình biên dịch chính cho hệ điều hành GNU, GCC (GNU Compiler Collection) được phát triển thành phần mềm miễn phí 100% và được cài đặt theo mặc định trên bất kỳ bản phân phối Linux nào.

Phần mềm này cũng được các nhà phát triển Nguồn mở sử dụng để biên dịch các chương trình của họ. Dòng lệnh đi kèm với một số tùy chọn, trong đó chúng ta có thể đề cập đến khả năng hiển thị bộ xử lý đích của trình biên dịch, cũng như đường dẫn tương đối đến các thư viện OS.


Tóm lại

Tất cả trong tất cả, GCC là một trong những thành phần thiết yếu nhất của bất kỳ hệ điều hành GNU / Linux nào. Không chỉ vậy, chúng tôi thậm chí không thể tưởng tượng ra một thế giới không có nó, nhưng GCC là lý do chính đằng sau toàn bộ hệ sinh thái nguồn mở.

Có gì mới trong bản phát hành này:

  • GCC 7.3 là bản phát hành sửa lỗi từ nhánh GCC 7 chứa các bản sửa lỗi quan trọng cho các hồi quy và các lỗi nghiêm trọng trong GCC 7.2 với hơn 99 lỗi được khắc phục kể từ bản phát hành trước.
  • Bản phát hành này bao gồm các tùy chọn tạo mã để giảm thiểu Biến thể Spectre 2 (CVE 2017-5715) cho các mục tiêu x86 và powerpc.

Có gì mới trong phiên bản 8.1.0:

  • GCC 7.3 là bản phát hành sửa lỗi từ Chi nhánh GCC 7 chứa các bản sửa lỗi quan trọng cho các hồi quy và các lỗi nghiêm trọng trong GCC 7.2 với hơn 99 lỗi được khắc phục kể từ bản phát hành trước.
  • Bản phát hành này bao gồm các tùy chọn tạo mã để giảm thiểu Biến thể Spectre 2 (CVE 2017-5715) cho các mục tiêu x86 và powerpc.

Tính năng mới trong phiên bản:

  • GCC 7.1 là bản phát hành chính chứa chức năng mới đáng kể không có trong phiên bản GCC 6.x hoặc các phiên bản GCC trước đó. Mặt trước C ++ hiện có hỗ trợ thử nghiệm cho tất cả bản phác thảo C ++ 17 hiện tại, với các tùy chọn -std = c ++ 1z và -std = gnu ++ 1z và thư viện libstdc ++ có hầu hết bản nháp C ++ 17 các tính năng thư viện cũng được triển khai. Bản phát hành này có nhiều cải tiến trong chẩn đoán được phát hiện, bao gồm các vị trí được cải thiện, phạm vi vị trí, đề xuất cho số nhận dạng sai chính tả, tên tùy chọn, gợi ý sửa lỗi và các cảnh báo mới khác nhau đã được thêm vào. Các trình tối ưu hóa đã được cải thiện, với các cải tiến xuất hiện trong tất cả các tối ưu hóa nội bộ và liên tục, tối ưu hóa thời gian liên kết và các chương trình phụ mục tiêu khác nhau, bao gồm, nhưng không giới hạn, bổ sung lưu trữ hợp nhất, tối ưu hóa mã, tách vòng và thu nhỏ gói cải tiến. Trình Sanitizer địa chỉ hiện có thể báo cáo việc sử dụng các biến sau khi rời khỏi phạm vi của chúng. GCC bây giờ có thể được cấu hình để tải OpenMP 4.5 xuống NVidia PTX GPGPUs.

Tính năng mới trong phiên bản 6.3.0:

  • GCC 6.3 là bản phát hành sửa lỗi từ nhánh GCC 6 chứa các bản sửa lỗi quan trọng cho các hồi quy và các lỗi nghiêm trọng trong GCC 6.2 với hơn 79 lỗi được khắc phục kể từ bản phát hành trước.

Tính năng mới trong phiên bản 6.2.0:

  • Bản phát hành này là bản phát hành sửa lỗi, chứa các bản sửa lỗi cho các hồi quy trong GCC 5.2 so với các bản phát hành trước đó của GCC.

Tính năng mới trong phiên bản 6.1.0:

  • Bản phát hành này là bản phát hành sửa lỗi, chứa các bản sửa lỗi cho các hồi quy trong GCC 5.2 so với các bản phát hành trước đó của GCC.

Tính năng mới trong phiên bản 5.3.0:

  • Bản phát hành này là bản phát hành sửa lỗi, chứa các bản sửa lỗi cho các hồi quy trong GCC 5.2 so với các bản phát hành trước đó của GCC.

Tính năng mới trong phiên bản 5.2.0:

  • Bản phát hành này là bản phát hành sửa lỗi, chứa các bản sửa lỗi cho các hồi quy trong GCC 5.1 liên quan đến các phiên bản trước của GCC.

Tính năng mới trong phiên bản 5.1.0:

  • Mặt trước C ++ hiện có hỗ trợ ngôn ngữ C ++ 14 đầy đủ và Thư viện chuẩn C ++ có hỗ trợ đầy đủ C ++ 11 và hỗ trợ đầy đủ C ++ 14. Hỗ trợ đầy đủ C ++ 11 đã được thực hiện bằng cách sử dụng Dual ABI, xem https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html để biết thêm chi tiết.
  • Mặt trước C hiện mặc định là chế độ C11 có phần mở rộng GNU, ảnh hưởng đến ngữ nghĩa của từ khóa nội tuyến và mang lại một số thay đổi có thể nhìn thấy của người dùng khác, xem https://gcc.gnu.org/gcc-5/porting_to.html để biết thêm chi tiết.
  • GCC 5.1 chứa các cải tiến tối ưu hóa liên ngành khác nhau, ví dụ: Mã vượt qua mã IPA giống hệt và các cải tiến LTO khác nhau, ví dụ: Dựa trên ODR hợp nhất các loại C ++, hãy xem http://hubicka.blogspot.cz/2015/04/GCC5-IPA-LTO-news.html để biết thêm chi tiết.
  • Trình phân bổ đăng ký cục bộ GCC 5.1 giờ có chứa một subpass thay thế, trên i? 86 / x86-64 có thể sử dụng lại thanh ghi PIC để cải thiện hiệu suất của mã độc lập vị trí, có một RA RA đơn giản và nhiều thanh ghi khác các cải tiến phân bổ đã được thêm.
  • GCC 5.1 thêm hỗ trợ một phần cho tiêu chuẩn OpenACC, hỗ trợ cho việc tải OpenMP 4.0 xuống bộ tăng tốc Xeon Phi sắp tới của Intel và hỗ trợ cho việc tải OpenACC xuống PTX. Công cụ khử trùng hành vi không xác định trong GCC đã được mở rộng bằng cách thêm các kiểm tra thời gian chạy mới khác nhau. Thư viện GCC JIT thử nghiệm đã được thêm vào GCC 5.1.

Có gì mới trong phiên bản 4.8.4:

  • Cải tiến Trình tối ưu hoá Chung:
  • AddressSanitizer, bộ phát hiện lỗi bộ nhớ nhanh, hiện khả dụng trên ARM.
  • UndefinedBehaviorSanitizer (ubsan), trình phát hiện hành vi không xác định nhanh, đã được thêm và có thể được bật qua -fsanitize = undefined. Các tính toán khác nhau sẽ được thiết lập để phát hiện hành vi không xác định khi chạy. UndefinedBehaviorSanitizer hiện có sẵn cho các ngôn ngữ C và C ++.
  • Cải tiến tối ưu hóa thời gian liên kết (LTO):
  • Loại sáp nhập được viết lại. Việc triển khai mới nhanh hơn đáng kể và sử dụng ít bộ nhớ hơn.
  • Thuật toán phân vùng tốt hơn dẫn đến ít phát trực tuyến hơn trong thời gian liên kết.
  • Xóa các phương thức ảo sớm sẽ giảm kích thước của tệp đối tượng và cải thiện thời gian sử dụng bộ nhớ liên kết và thời gian biên dịch.
  • Các cơ quan chức năng hiện được tải theo yêu cầu và được phát hành sớm để cải thiện việc sử dụng bộ nhớ tổng thể tại thời gian liên kết.
  • Các phương pháp được ẩn của C ++ ẩn hiện có thể được tối ưu hóa.
  • Khi sử dụng plugin trình liên kết, việc biên dịch với tùy chọn -flto bây giờ tạo ra các tệp đối tượng mỏng (.o) chỉ chứa đại diện ngôn ngữ trung gian cho LTO. Sử dụng các đối tượng -ffat-lto để tạo các tệp có chứa mã đối tượng bổ sung. Để tạo các thư viện tĩnh thích hợp cho việc xử lý LTO, hãy sử dụng gcc-ar và gcc-ranlib; để liệt kê các biểu tượng từ một tệp đối tượng mỏng sử dụng gcc-nm. (Điều này yêu cầu ar, ranlib và nm đã được biên dịch với hỗ trợ plugin.)
  • Xây dựng sử dụng bộ nhớ Firefox với gỡ lỗi được kích hoạt đã giảm từ 15GB xuống 3.5GB; thời gian liên kết từ 1700 giây đến 350 giây.
  • Cải tiến tối ưu hóa liên thủ tục:
  • Mô-đun phân tích kế thừa kiểu mới cải thiện sự ảo hóa. Devirtualization giờ đây sẽ tính đến các không gian tên ẩn danh và từ khóa cuối cùng của C ++ 11.
  • Đường truyền ảo hóa đầu cơ mới (được kiểm soát bởi -fdevirtualize-speculatively.
  • Các cuộc gọi được thực hiện trực tiếp một cách có chủ ý được quay trở lại gián tiếp khi cuộc gọi trực tiếp không rẻ hơn.
  • Bí danh cục bộ được giới thiệu cho các ký hiệu được biết là tương đương ngữ nghĩa giữa các thư viện được chia sẻ để cải thiện thời gian liên kết động.
  • Cải tiến tối ưu hóa được hướng dẫn phản hồi:
  • Việc lập cấu hình các chương trình sử dụng hàm nội tuyến C ++ hiện đáng tin cậy hơn.
  • Hồ sơ thời gian mới xác định thứ tự điển hình trong đó các hàm được thực hiện.
  • Chức năng sắp xếp lại chức năng mới (được điều khiển bởi các hàm -freorder) làm giảm đáng kể thời gian khởi động của các ứng dụng lớn. Cho đến khi hỗ trợ binutils hoàn tất, nó chỉ có hiệu quả với tối ưu hóa thời gian liên kết.
  • Xóa cuộc gọi gián tiếp được thúc đẩy theo hướng phản hồi và tính năng ảo hóa hiện đang xử lý các cuộc gọi qua mô-đun khi tối ưu hóa thời gian liên kết được bật.
  • Cải tiến cụ thể về Ngôn ngữ và Ngôn ngữ mới:
  • Phiên bản 4.0 của đặc tả OpenMP hiện được hỗ trợ trong trình biên dịch C và C ++ và bắt đầu với bản phát hành 4.9.1 cũng trong trình biên dịch Fortran. Tùy chọn -fopenmp-simd mới có thể được sử dụng để kích hoạt các chỉ thị SIMD của OpenMP, trong khi bỏ qua các chỉ thị OpenMP khác. Tùy chọn -fsimd-cost-model = mới cho phép điều chỉnh mô hình chi phí vectơ cho các vòng được chú thích với các chỉ thị mô phỏng OpenMP và Cilk Plus; -Wopenmp-simd cảnh báo khi mô hình chi phí hiện tại ghi đè chỉ thị simd do người dùng đặt.
  • Tùy chọn -Wdate-thời gian đã được thêm vào cho trình biên dịch C, C ++ và Fortran, cảnh báo khi các macro __DATE__, __TIME__ hoặc __TIMESTAMP__ được sử dụng. Những macro này có thể ngăn các biên dịch có thể tái tạo giống hệt nhau.
  • Ada:
  • GNAT chuyển sang Ada 2012 thay vì Ada 2005 theo mặc định.
  • Gia đình C:
  • Đã thêm hỗ trợ để tô màu các chẩn đoán do GCC phát ra. The -fdiagnostics-color = auto sẽ cho phép nó khi xuất ra các thiết bị đầu cuối, -fdiagnostics-color = luôn vô điều kiện. Biến môi trường GCC_COLORS có thể được sử dụng để tùy chỉnh màu hoặc tắt màu. Nếu biến GCC_COLORS có trong môi trường, mặc định là -fdiagnostics-color = auto, nếu không -fdiagnostics-color = không bao giờ.
  • Đầu ra chẩn đoán mẫu:
  • $ g ++ -fdiagnostics-color = luôn -S -Wall test.C
  • test.C: Trong hàm & lsquo; int foo () ':
  • test.C: 1: 14: warning: không có câu lệnh return nào trong hàm trả về không void [-Wreturn-type]
  • int foo () {}
  • test.C: 2: 46: lỗi: độ sâu instant template vượt quá tối đa 900 (sử dụng độ sâu -ftemplate = để tăng tối đa) instantiating & lsquo; struct X '
  • cấu trúc mẫu X {static const int value = X :: value; }; mẫu cấu trúc X;
  • test.C: 2: 46: được yêu cầu đệ quy từ & lsquo; const int X :: value '
  • test.C: 2: 46: bắt buộc từ & lsquo; const int X :: value '
  • test.C: 2: 88: bắt buộc từ đây
  • test.C: 2: 46: lỗi: loại không đầy đủ & lsquo; X 'được sử dụng trong trình chỉ định tên lồng nhau
  • Với #pragma GCC ivdep mới, người dùng có thể khẳng định rằng không có phụ thuộc vòng lặp nào có thể ngăn việc thực hiện đồng thời các lần lặp liên tiếp bằng cách sử dụng các lệnh hướng dẫn SIMD (hướng dẫn nhiều dữ liệu).
  • Hỗ trợ cho Cilk Plus đã được thêm vào và có thể được kích hoạt với tùy chọn -fcilkplus. Cilk Plus là một phần mở rộng cho các ngôn ngữ C và C ++ để hỗ trợ dữ liệu và nhiệm vụ song song. Việc thực hiện hiện tại sau ABI phiên bản 1.2; tất cả các tính năng nhưng _Cilk_for đã được triển khai.
  • Nguyên tử ISO C11 (trình chỉ định loại _Atomic và vòng loại và tiêu đề) hiện được hỗ trợ.
  • Các lựa chọn chung của ISO C11 (_Từ khóa chung) hiện được hỗ trợ.
  • Bộ nhớ cục bộ ISO C11 (_Thread_local, tương tự như GNU C __thread) hiện được hỗ trợ.
  • Hỗ trợ ISO C11 hiện có mức độ hoàn chỉnh tương tự với hỗ trợ ISO C99: các lỗi modulo hoàn chỉnh, các định danh mở rộng (được hỗ trợ trừ các trường hợp góc khi sử dụng định danh -fextended), các vấn đề về dấu phẩy động (chủ yếu nhưng không hoàn toàn) liên quan đến các tính năng tùy chọn C99 từ Phụ lục F và G) và các Phụ lục K tùy chọn (Giao diện kiểm tra giới hạn) và L (Phân tích).
  • Tiện ích mở rộng C mới __auto_type cung cấp một tập hợp con chức năng của tự động C ++ 11 trong GNU C.
  • C ++:
  • Việc thực hiện G ++ của C ++ 1y trả về loại khấu trừ cho các chức năng bình thường đã được cập nhật để phù hợp với N3638, đề xuất được chấp nhận vào giấy làm việc. Đáng chú ý nhất, nó thêm decltype (tự động) để nhận ngữ nghĩa decltype chứ không phải là ngữ nghĩa khấu trừ đối số mẫu của tự động đơn giản:
  • int & amp; f ();
  • tự động i1 = f (); // int
  • decltype (tự động) i2 = f (); // int & amp;
  • G ++ hỗ trợ khởi tạo chụp lambda C ++ 1y:
  • [x = 42] {...};
  • Trên thực tế, chúng đã được chấp nhận kể từ GCC 4.5, nhưng bây giờ trình biên dịch không cảnh báo về chúng với -std = c ++ 1y, và hỗ trợ các trình khởi tạo dấu ngoặc đơn và dấu ngoặc đơn.
  • G + + hỗ trợ các mảng độ dài biến đổi C ++ 1y. G ++ đã hỗ trợ VLA kiểu GNU / C99 trong một thời gian dài, nhưng bây giờ hỗ trợ thêm initializers và lambda capture bằng cách tham chiếu. Trong chế độ C ++ 1y G ++ sẽ phàn nàn về VLA sử dụng mà không được cho phép theo tiêu chuẩn dự thảo, chẳng hạn như tạo một con trỏ thành kiểu VLA hoặc áp dụng sizeof cho một biến VLA. Lưu ý rằng bây giờ nó xuất hiện rằng VLAs sẽ không là một phần của C ++ 14, nhưng sẽ là một phần của một tài liệu riêng biệt và sau đó có lẽ là C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // ném std :: bad_array_length nếu n & lt; 3
  • [& amp; a] {cho (int i: a) {cout

Tính năng mới trong phiên bản 4.9.1:

  • GCC 4.9.1 là bản phát hành sửa lỗi từ nhánh GCC 4.9 có chứa các bản sửa lỗi quan trọng cho các hồi quy và các lỗi nghiêm trọng trong GCC 4.9.0 với hơn 88 lỗi được khắc phục kể từ bản phát hành trước. Thêm vào đó, bản phát hành GCC 4.9.1 hỗ trợ OpenMP 4.0 cũng ở Fortran, thay vì chỉ trong C và C ++.

Tính năng mới trong phiên bản 4.9.0:

  • Cải tiến Trình tối ưu hoá Chung:
  • AddressSanitizer, bộ phát hiện lỗi bộ nhớ nhanh, hiện khả dụng trên ARM.
  • UndefinedBehaviorSanitizer (ubsan), trình phát hiện hành vi không xác định nhanh, đã được thêm và có thể được bật qua -fsanitize = undefined. Các tính toán khác nhau sẽ được thiết lập để phát hiện hành vi không xác định khi chạy. UndefinedBehaviorSanitizer hiện có sẵn cho các ngôn ngữ C và C ++.
  • Cải tiến tối ưu hóa thời gian liên kết (LTO):
  • Loại sáp nhập được viết lại. Việc triển khai mới nhanh hơn đáng kể và sử dụng ít bộ nhớ hơn.
  • Thuật toán phân vùng tốt hơn dẫn đến ít phát trực tuyến hơn trong thời gian liên kết.
  • Xóa các phương thức ảo sớm sẽ giảm kích thước của tệp đối tượng và cải thiện thời gian sử dụng bộ nhớ liên kết và thời gian biên dịch.
  • Các cơ quan chức năng hiện được tải theo yêu cầu và được phát hành sớm để cải thiện việc sử dụng bộ nhớ tổng thể tại thời gian liên kết.
  • Các phương pháp được ẩn của C ++ ẩn hiện có thể được tối ưu hóa.
  • Khi sử dụng plugin trình liên kết, việc biên dịch với tùy chọn -flto giờ đây sẽ tạo ra các tệp đối tượng mỏng (.o) chỉ chứa đại diện ngôn ngữ trung gian cho LTO. Sử dụng các đối tượng -ffat-lto để tạo các tệp có chứa mã đối tượng bổ sung. Để tạo các thư viện tĩnh thích hợp cho việc xử lý LTO, hãy sử dụng gcc-ar và gcc-ranlib; để liệt kê các biểu tượng từ một tệp đối tượng mỏng sử dụng gcc-nm. (Yêu cầu ar, ranlib và nm đã được biên dịch với hỗ trợ plugin.)
  • Xây dựng sử dụng bộ nhớ Firefox với gỡ lỗi được kích hoạt đã giảm từ 15GB xuống 3.5GB; thời gian liên kết từ 1700 giây đến 350 giây.
  • Cải tiến tối ưu hóa liên thủ tục:
  • Mô-đun phân tích kế thừa kiểu mới cải thiện sự ảo hóa. Devirtualization giờ đây sẽ tính đến các không gian tên ẩn danh và từ khóa cuối cùng của C ++ 11.
  • Đường truyền ảo hóa đầu cơ mới (được kiểm soát bởi -fdevirtualize-speculatively.
  • Các cuộc gọi được thực hiện trực tiếp một cách có chủ ý được quay trở lại gián tiếp khi cuộc gọi trực tiếp không rẻ hơn.
  • Bí danh cục bộ được giới thiệu cho các ký hiệu được biết là tương đương ngữ nghĩa giữa các thư viện được chia sẻ để cải thiện thời gian liên kết động.
  • Cải tiến tối ưu hóa được hướng dẫn phản hồi:
  • Việc lập cấu hình các chương trình sử dụng hàm nội tuyến C ++ hiện đáng tin cậy hơn.
  • Hồ sơ thời gian mới xác định thứ tự điển hình trong đó các hàm được thực hiện.
  • Chức năng sắp xếp lại chức năng mới (được điều khiển bởi các hàm -freorder) làm giảm đáng kể thời gian khởi động của các ứng dụng lớn. Cho đến khi hỗ trợ binutils hoàn tất, nó chỉ có hiệu quả với tối ưu hóa thời gian liên kết.
  • Xóa cuộc gọi gián tiếp được thúc đẩy theo hướng phản hồi và tính năng ảo hóa hiện đang xử lý các cuộc gọi qua mô-đun khi tối ưu hóa thời gian liên kết được bật.
  • Cải tiến cụ thể về Ngôn ngữ và Ngôn ngữ mới:
  • Phiên bản 4.0 của đặc tả OpenMP hiện được hỗ trợ cho các trình biên dịch C và C ++. Tùy chọn -fopenmp-simd mới có thể được sử dụng để kích hoạt các chỉ thị SIMD của OpenMP, trong khi bỏ qua các chỉ thị OpenMP khác. Tùy chọn -fsimd-cost-model = mới cho phép điều chỉnh mô hình chi phí vectơ cho các vòng được chú thích với các chỉ thị mô phỏng OpenMP và Cilk Plus; -Wopenmp-simd cảnh báo khi costmodel hiện tại ghi đè chỉ thị simd do người dùng đặt.
  • Tùy chọn -Wdate-thời gian đã được thêm vào cho trình biên dịch C, C ++ và Fortran, cảnh báo khi các macro __DATE__, __TIME__ hoặc __TIMESTAMP__ được sử dụng. Những macro này có thể ngăn các biên dịch có thể tái tạo giống hệt nhau.
  • Ada:
  • GNAT chuyển sang Ada 2012 thay vì Ada 2005 theo mặc định.
  • Gia đình C:
  • Đã thêm hỗ trợ để tô màu các chẩn đoán do GCC phát ra. The -fdiagnostics-color = auto sẽ cho phép nó khi xuất ra các thiết bị đầu cuối, -fdiagnostics-color = luôn vô điều kiện. Biến môi trường GCC_COLORS có thể được sử dụng để tùy chỉnh màu hoặc tắt màu. Nếu biến GCC_COLORS có trong môi trường, mặc định là -fdiagnostics-color = auto, nếu không -fdiagnostics-color = không bao giờ.
  • Đầu ra chẩn đoán mẫu:
  • $ g ++ -fdiagnostics-color = luôn -S -Wall test.C
  • test.C: Trong hàm & lsquo; int foo () ':
  • test.C: 1: 14: warning: không có câu lệnh return nào trong hàm trả về không void [-Wreturn-type]
  • int foo () {}
  • test.C: 2: 46: lỗi: độ sâu instant template vượt quá tối đa 900 (sử dụng độ sâu -ftemplate = để tăng tối đa) instantiating & lsquo; struct X '
  • cấu trúc mẫu X {static const int value = X :: value; }; mẫu cấu trúc X;
  • test.C: 2: 46: được yêu cầu đệ quy từ & lsquo; const int X :: value '
  • test.C: 2: 46: bắt buộc từ & lsquo; const int X :: value '
  • test.C: 2: 88: bắt buộc từ đây
  • test.C: 2: 46: lỗi: loại không đầy đủ & lsquo; X 'được sử dụng trong trình chỉ định tên lồng nhau
  • Với #pragma GCC ivdep mới, người dùng có thể khẳng định rằng không có phụ thuộc vòng lặp nào có thể ngăn việc thực hiện đồng thời các lần lặp liên tiếp bằng cách sử dụng các lệnh hướng dẫn SIMD (hướng dẫn nhiều dữ liệu).
  • Hỗ trợ cho Cilk Plus đã được thêm vào và có thể được kích hoạt với tùy chọn -fcilkplus. Cilk Plus là một phần mở rộng cho các ngôn ngữ C và C ++ để hỗ trợ dữ liệu và nhiệm vụ song song. Việc thực hiện hiện tại sau ABI phiên bản 1.2; tất cả các tính năng nhưng _Cilk_for đã được triển khai.
  • Nguyên tử ISO C11 (trình chỉ định loại _Atomic và vòng loại và tiêu đề) hiện được hỗ trợ.
  • Các lựa chọn chung của ISO C11 (_Từ khóa chung) hiện được hỗ trợ.
  • Bộ nhớ cục bộ ISO C11 (_Thread_local, tương tự như GNU C __thread) hiện được hỗ trợ.
  • Hỗ trợ ISO C11 hiện có mức độ hoàn chỉnh tương tự với hỗ trợ ISO C99: các lỗi modulo hoàn chỉnh, các định danh mở rộng (được hỗ trợ trừ các trường hợp góc khi sử dụng định danh -fextended), các vấn đề về dấu phẩy động (chủ yếu nhưng không hoàn toàn) liên quan đến các tính năng tùy chọn C99 từ Phụ lục F và G) và các Phụ lục K tùy chọn (Giao diện kiểm tra giới hạn) và L (Phân tích).
  • Tiện ích mở rộng C mới __auto_type cung cấp một tập hợp con chức năng của tự động C ++ 11 trong GNU C.
  • C ++:
  • Việc thực hiện G ++ của C ++ 1y trả về loại khấu trừ cho các chức năng bình thường đã được cập nhật để phù hợp với N3638, đề xuất được chấp nhận vào giấy làm việc. Đáng chú ý nhất, nó thêm decltype (tự động) để nhận ngữ nghĩa decltype chứ không phải là ngữ nghĩa khấu trừ đối số mẫu của tự động đơn giản:
  • int & amp; f ();
  • tự động i1 = f (); // int
  • decltype (tự động) i2 = f (); // int & amp;
  • G ++ hỗ trợ khởi tạo chụp lambda C ++ 1y:
  • [x = 42] {...};
  • Trên thực tế, chúng đã được chấp nhận kể từ GCC 4.5, nhưng bây giờ trình biên dịch không cảnh báo về chúng với -std = c ++ 1y, và hỗ trợ các trình khởi tạo dấu ngoặc đơn và dấu ngoặc đơn.
  • G ++ hỗ trợ các mảng độ dài biến đổi C ++ 1y. G ++ đã hỗ trợ VLA kiểu GNU / C99 trong một thời gian dài, nhưng bây giờ hỗ trợ thêm initializers và lambda capture bằng cách tham chiếu. Trong chế độ C ++ 1y G ++ sẽ phàn nàn về VLA sử dụng mà không được cho phép theo tiêu chuẩn dự thảo, chẳng hạn như tạo một con trỏ thành kiểu VLA hoặc áp dụng sizeof cho một biến VLA. Lưu ý rằng bây giờ nó xuất hiện rằng VLAs sẽ không là một phần của C ++ 14, nhưng sẽ là một phần của một tài liệu riêng biệt và sau đó có lẽ là C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // ném std :: bad_array_length nếu n & lt; 3
  • [& amp; a] {cho (int i: a) {cout

Phần mềm tương tự

Ý kiến ​​để GCC

1 Chú thích
  • http://www.eduwizzonlinetrainings.com 29 Dec 17
    EduwizzOnlineTraining is one of the Best Online Training Institute in Hyderabad, Bangalore. Eduwizz provide courses like Hybris Development, WebSphere Commerce Server,Blockchain Training,Hyperledger Fabric Development ,Ethereum Development ,Commvault Training, Devops , Netapps , Mulesoft ESB ,Machine Learning,Data Science , Internet of Things , Hybris ,Angular JS , Node JS , Express JS , Business Analyst, Selenium testing with webdriver, Guidewire ,Adobe, RPA ,TSM, EMC...etc
Nhập bình luận
Bật hình ảnh!