01/10/2018, 10:20
Thư viện dos.h không sử dụng được trong code block
chào các bạn, mình có xem qua phần tạo âm thanh trong cuốn lập trình C của GS phạm văn ất
mình có test thử một đoạn code tạo một tiếng “bíp”
đây là code mà mình test
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
void beep(void);
void beep(void)
{
sound(150);
delay(150);
nosound();
}
int main()
{
int n;
printf("nhap 1 so tu 1 ->5
");
scanf("%d",&n);
if(n>5||n<1)
{
beep();
printf("
sai");
}
else
printf("dung
");
printf("nhan enter
");
}
nhưng mà khi mình compiler nó báo lỗi
như thế này undefined reference to `sound'|
undefined reference to `delay'|
undefined reference to `nosound'|
error: ld returned 1 exit status
có phải là do code block không hỗ trợ thư viện dos.h phải không mọi người
Bài liên quan
Bạn nên đổi sang tài liệu khác mới hơn, đa phần sách dạy C/C++ ở Việt Nam đã quá cũ chưa được cập nhật. dos.h là dành cho MS DOS Muốn kêu beep trên Windows thì phải học thêm WinAPI.
API Beep: https://msdn.microsoft.com/en-us/library/windows/desktop/ms679277(v=vs.85).aspx (Sync, bíp ở loa tích hợp trong bo mạch chủ, Win7 thì được redirect lên default sound)
API MessageBeep: https://msdn.microsoft.com/en-us/library/windows/desktop/ms680356(v=vs.85).aspx (Async, kêu lên thế nào thì tùy việc truyền uType thế ấy)
Các WinAPI cơ bản thì bắt đầu từ cái này
<windows.h>
Trong tài liệu này có mấy lời khuyên chỉ dành riêng cho Turbo vì nó lỗi tùm lum và sách này viết cho những người dùng cái đó. Còn thư viện này thì cũ rồi.
Vậy là mình phải khai báo thêm thư viện đó thì mới chạy được đoạn code trên phải không bạn
win api là phần lập trình giao diện phải không bạn ?, không biết code block có hỗ trợ không nữa
Không.
Bạn phải đổi sang lệnh khác, thư viện khác.
Bạn include cái trên vào, rồi tìm hiểu 2 cái API Beep như 2 link mà mình đưa ấy. Và đổi gấp, gấp, gấp liền sang tài liệu mới, không dùng tài liệu cũ nữa.
WinAPI là những hàm mà MS hỗ trợ để tạo ứng dụng cho Windows.
Học C/C++ mà không học API thì làm được cái gì nhỉ ?
QT kéo thả ??
Trong C có ký tự \a cũng kêu tiếng beep đó
Bạn có thể làm như sau để test.
printf("\a");
Mình chỉ rảnh rỗi tìm hiểu thêm về phần này thôi bạn, vs lại mình cũng ko có học theo quyển này, dù gì cũng ths bạn đã góp ý
Mình chỉ mới học C, chưa học C++,mình định khi nào mình học C++ sẽ tìm hiểu về nó sau
trong C có kí tự \a sẽ phát ra tiếng beep của hdh, mỗi máy sẽ phát ra tiếng khác nhau tùy thuộc vào cài đặt ở mỗi máy. ngoài ra trong thư viện windows.h nếu mình nhớ không nhầm có hàm beep() nhận 2 tham số đầu vào: 1 là tần số âm thanh phát ra (hz) và thời gian phát âm thanh (ms)