Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 12 kết quả

Đề tài: Thư viện chuẩn của C/C++ có khác nhau và có khác thư viện không chuẩn?

  1. #1
    Ngày gia nhập
    10 2009
    Bài viết
    11

    Mặc định Thư viện chuẩn của C/C++ có khác nhau và có khác thư viện không chuẩn?

    Mình là sinh viên đang học về C++ mình lập topic này không nhằm hỏi các bạn về cách thức lạp trình trong C/C++ như thế nào mà mình chỉ muốn hỏi về vấn đề thư viện chuẩn của C/C++ :
    thứ nhất là thư viện chuẩn của C thì khác gì C++ ? mình có tự tìm hiểu thì chỉ thấy người ta nói là ANSI C(tức là C chuẩn ) còn thư viện C chuẩn thì hình như không có
    thứ 2 là thư viện chuẩn thì nó khác j C/C++ bình thường , nó là 1 phiên bản mở rộng và đã được quốc tế hóa làm chuẩn hay là nó độc lập và khác hằn C/C++ thông thường ?
    thứ 3 là nếu đã ai nghe về thư viện boost C++ thì giải thích dùm mình nó có khác j standard C++ library không vậy ?
    Rất mong được giải đáp

  2. #2
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    708

    Trích dẫn Nguyên bản được gửi bởi drcool Xem bài viết
    Mình là sinh viên đang học về C++ mình lập topic này không nhằm hỏi các bạn về cách thức lạp trình trong C/C++ như thế nào mà mình chỉ muốn hỏi về vấn đề thư viện chuẩn của C/C++ :
    thứ nhất là thư viện chuẩn của C thì khác gì C++ ? mình có tự tìm hiểu thì chỉ thấy người ta nói là ANSI C(tức là C chuẩn ) còn thư viện C chuẩn thì hình như không có
    thứ 2 là thư viện chuẩn thì nó khác j C/C++ bình thường , nó là 1 phiên bản mở rộng và đã được quốc tế hóa làm chuẩn hay là nó độc lập và khác hằn C/C++ thông thường ?
    thứ 3 là nếu đã ai nghe về thư viện boost C++ thì giải thích dùm mình nó có khác j standard C++ library không vậy ?
    Rất mong được giải đáp
    Thứ nhất, C có thư viện chuẩn, ANSI C (C83), ISO C (C89/C90 và C99) đều có thư viện chuẩn. Thư viện chuẩn C rất khác so với thư viện chuẩn C++ bởi vì C++ có nhiều tính năng không có ở C.

    Thứ hai, mọi C/C++ "bình thường" thì đều có chứa thư viện chuẩn. Nếu thư viện này mà không được thực thi thì sao gọi là "chuẩn" được.

    Thứ ba, boost C++ có nhiều hàm và lớp rất quan trọng và rất tiện dùng, nhưng việc thực hiện chúng là rất khó, khó đến mức khi ngôn ngữ C++ mới được định nghĩa thì chưa thể xây dựng chúng ngay được, phải mất thời gian (khoảng 15-20 năm) thì chúng mới hoàn toàn tối ưu, ổn định và (chủ yếu là) đạt đến sự chấp nhận rộng rãi. Đến nay thì boost đã có thể xem như chuẩn trên thực tế và có nhiều khả năng sẽ được chính thức đưa vào chuẩn mới của ngôn ngữ C++. Nếu điều đó trở thành sự thật, boost không thay thế thư viện chuẩn, mà bổ sung vào thư viện ấy làm cho nó phong phú hơn.

  3. #3
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    1. C chuẩn chỉ cho C, còn C++ chuẩn chỉ cho C++, rõ ràng là khác nhau, cần gì phải hỏi.

    2. Ada trả lời sai, Các công cụ lập trình C/C++ tuân theo chuẩn chung thì mới đưa C/C++ chuẩn vào, còn lại thì không! Việc sử dụng theo chuẩn sẽ làm cho code của bạn có thể dễ dàng hiểu được bởi một người nào đó trên thế giới, hoặc dễ dàng mang sang một compiler khác. Việc này giống như việc tất cả mọi người đều nói một thứ tiếng!

    3. Ada cũng sai nốt, boost C++ chỉ đơn giản là 1 thư viện không hơn không kém, hiện nay nó vẫn được coi là quá cồng kềnh và rắc rối. Tuy nhiên trong boost C++ đã có những sáng tạo tuyệt vời, như là AutoPtr, ... những thứ này sẽ có tương lai được áp dụng nhiều, có khả năng đưa vào chuẩn.

    Kevin chỉ biết sơ sơ như vậy ...
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  4. #4
    Ngày gia nhập
    10 2009
    Bài viết
    11

    Cám ơn anh ADA và anh kevin hoang( khong bit gọi anh hay chú :| )
    em chỉ còn 1 thắc mắc là :
    nếu công cụ lập trình không theo chuẩn chung thì sẽ có kiểu viết sẽ khác như thế nào , em mới chỉ biết lập trình trên C-free thôi mà nó cũng giống như là turbo C .
    Có phải viết kiểu không theo chuẩn so với chuẩn thì chỉ khác nhau về khai báo biến , hàm, thư viện còn câu lệnh là như nhau ?

  5. #5
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    708

    Trích dẫn Nguyên bản được gửi bởi Kevin Hoang Xem bài viết
    2. Ada trả lời sai, Các công cụ lập trình C/C++ tuân theo chuẩn chung thì mới đưa C/C++ chuẩn vào, còn lại thì không! Việc sử dụng theo chuẩn sẽ làm cho code của bạn có thể dễ dàng hiểu được bởi một người nào đó trên thế giới, hoặc dễ dàng mang sang một compiler khác. Việc này giống như việc tất cả mọi người đều nói một thứ tiếng!
    Mình sai thế nào được. Chuẩn là một sự đồng thuận của đa số. Tiếp theo ví dụ của bạn, ngôn ngữ của bạn, của mình, và của các member khác trên forum không ai giống ai, ai cũng có cách hành văn, dùng từ theo bản sắc riêng, nhưng tất cả đều theo cùng một chuẩn, đó là tiếng Việt. Ai không theo chuẩn đó thì gọi một cách đơn giản và bình dân là người ấy không dùng tiếng Việt.

    Trích dẫn Nguyên bản được gửi bởi Kevin Hoang Xem bài viết
    3. Ada cũng sai nốt, boost C++ chỉ đơn giản là 1 thư viện không hơn không kém, hiện nay nó vẫn được coi là quá cồng kềnh và rắc rối. Tuy nhiên trong boost C++ đã có những sáng tạo tuyệt vời, như là AutoPtr, ... những thứ này sẽ có tương lai được áp dụng nhiều, có khả năng đưa vào chuẩn.
    Mình không sai. Mọi thư viện chuẩn đều bắt nguồn từ những thư viện bình thường "không hơn không kém" ấy. Cho đến nay, boost có hơn 10 thư viện đã và đang được xem xét sát nhập vào thư viện chuẩn trong quá trình chuẩn hóa phiên bản sắp tới của ngôn ngữ C++. Vì nhiều lí do, mình rất ít khi dùng boost. Có thể bạn cũng thế. Nhưng như thế không thể phủ nhận đóng góp của boost vào thư viện chuẩn được. Tính "cồng kềnh và rắc rối" của boost phần nào phản ánh khách quan của sự phức tạp của lập trình hướng đối tượng, một phần khác chỉ là nhận định chủ quan của nhiều cá nhân. Mỗi người một ý mà.

  6. #6
    Ngày gia nhập
    11 2010
    Nơi ở
    Black Hole
    Bài viết
    824

    Mặc định Thư viện chuẩn của C/C++ có khác nhau và có khác thư viện không chuẩn?

    Trích dẫn Nguyên bản được gửi bởi drcool Xem bài viết
    Cám ơn anh ADA và anh kevin hoang( khong bit gọi anh hay chú :| )
    em chỉ còn 1 thắc mắc là :
    nếu công cụ lập trình không theo chuẩn chung thì sẽ có kiểu viết sẽ khác như thế nào , em mới chỉ biết lập trình trên C-free thôi mà nó cũng giống như là turbo C .
    Có phải viết kiểu không theo chuẩn so với chuẩn thì chỉ khác nhau về khai báo biến , hàm, thư viện còn câu lệnh là như nhau ?
    Cách viết mà bạn nói thì rất ko rõ ràng.
    Mình chỉ thấy là có 1 sự khác biết ở việc khai báo thư viện.
    C Code:
    1. #include<stdio.h>
    2. #include "stdio.h"

    Ngoài ra, nó còn phải phụ thuộc vào bộ compilation của máy.
    ví dụ : mình lập trình trên Lunix khi cấp phát động thì :
    C Code:
    1. int *a=malloc(n*sizeof(int));
    có 1 số bạn thì :
    C Code:
    1. int *a=(int *)malloc(n*sizeof(int));

    Nói tóm lại thư viện chuẩn là thư viện mà khi dùng thì ai cũng hiểu dù họ có làm việc trên những OS khác nhau.

  7. #7
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    int* a = malloc(n*sizeof(int)); là C, biên dịch bằng C++ compiler sẽ báo lỗi.
    int* a=(int*)malloc(n*sizeof(int)); là C++

    Cả 2 cái trên đều là chuẩn, nhưng là của 2 chuẩn khác nhau!

    Kevin không bàn luận thêm các vấn đề khác, nếu các bạn có thắc mắc thì cứ tìm hiểu tài liệu thêm!
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  8. #8
    Ngày gia nhập
    11 2010
    Nơi ở
    Black Hole
    Bài viết
    824

    Trích dẫn Nguyên bản được gửi bởi Kevin Hoang Xem bài viết
    int* a = malloc(n*sizeof(int)); là C, biên dịch bằng C++ compiler sẽ báo lỗi.
    int* a=(int*)malloc(n*sizeof(int)); là C++

    Cả 2 cái trên đều là chuẩn, nhưng là của 2 chuẩn khác nhau!

    Kevin không bàn luận thêm các vấn đề khác, nếu các bạn có thắc mắc thì cứ tìm hiểu tài liệu thêm!


    giờ mới hiểu tại sao. Mình toàn làm việc trên C nên ko biết. Phải học thêm C++ mới dc.
    Còn gà quá

  9. #9
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    malloc trả về 1 void *
    Trong C ta hoàn toàn có thể gán 1 cai_gi* =void*
    trong VC++ 6.0 thì hoàn toàn có thể gán 1 cai_gi* =void*
    còn trong 1 số C++ compiler khó tính ta phải ko thể gán int *a=malloc...

    nên tốt nhất ta hãy viết int *a=(int *)malloc.....
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  10. #10
    Ngày gia nhập
    10 2009
    Bài viết
    11

    anh langman cho em hỏi thế VC++ nó có theo chuẩn của C/C++ không ạ ?

Các đề tài tương tự

  1. Bí kíp trị thâm nách cực chuẩn
    Gửi bởi linhnhung9x trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 28-12-2012, 08:42 AM
  2. Bán X1-01 giá cực rẻ hàng chuẩn không cần chỉnh
    Gửi bởi bibibyby trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 17-04-2012, 08:50 PM
  3. Lập trình C Không hiểu ý nghĩa thuật toán nối liền 2 dấu cách liền nhau trong chuẩn hóa chuỗi
    Gửi bởi giang92 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 8
    Bài viết cuối: 06-12-2011, 11:42 PM
  4. Thiết kế giải thuật để chuẩn hoá xâu S không còn 2 ký tự giống nhau đứng liền
    Gửi bởi wlforever trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 28-12-2010, 06:23 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn