Thắc mắc lỗi dev c++ [Error] ld returned 1 exit status

#include <iostream>
using namespace std;
float vi_khuan(int start,int time);
int main()
{
	float start,t;
	float ecol,lao,men;
	cout << "Chuong trinh tinh vi khuan\n";
	cout << "Nhap so luong ban dau:";
	cin >> start;
	cout << "Nhap thoi gian (gio):";
	cin >> t;
	
	ecol = vi_khuan(start,t*3);
	lao = vi_khuan(start,t/12);
	men = vi_khuan(start,t/2);
	
	cout << "Sau " << t <<" gio\nSo luong khuan ecoli la:"<< ecol <<"\nSo luong khuan lao la:"<< lao << "\nSo luong nam men la:"<< men<<endl;
	return 0;
}
float vi_khuan(float start,float time)//ham tinh vi khuan say tg t
{
	float num;
	num =start;
	if (time < 1) num =start;
	else
		for (int i=1;i<=(time);i++)
		{
			num = num*2;
		}
	return num;
}

Mình mới làm nên hơi tò mò tí về lỗi này trong phần khai báo hàm vi_khuan ở trên mình khai báo biến là int nhưng xuống phần định nghĩa hàm đó mình khai là float thì khi complie nó báo lỗi [Error] ld returned 1 exit status.Thường thì lỗi này có là do đang mở một cái .exe khác mà không tắt nên mình hơi tò mò tí sao nó lại báo lỗi này ở đây.Mình fix được rồi nhưng muốn hỏi các cao nhân để mở mang chút.

Á hự hự. Cũng may là bạn còn biết vì sao nó tèo. Bạn tham khảo mã lỗi á. Mỗi mã sẽ có một ngụ ý riêng. bạn tham khảo trang này nhé. Muốn kỹ hơn thì “sợt” nát cái google với keyword là: “Exit code in c++” nhá.

2 Likes

Cái của bạn nó bị exit là bởi vì nó bảo là: “Ê, tao không có thấy cái hàm nào tên là vi_khuan với đầu vào là 2 cái biến integer hết bây hơi, mầy có chắc chưa”.
Ok rà soát lại bạn bảo “Ê, tao có hàm vi_khuan nhưng là 2 cái biến float nè”

Mình trả lời: ờ, bạn đang cố tình không cố ý sử dụng phương pháp nạp chồng hàm. nghĩa là hàm có cùng tên nhưng khác tham số đầu vào. ở ví dụ của bạn.

Bạn bảo: Thôi ông đừng có mồm điêu đi

Tôi trả lời: bạn thêm vào trong code của bạn đoạn code sau:

float vi_khuan(int start,int time)//ham tinh vi khuan say tg t
{
	return 1;
}

thế là code bạn chạy ngon.

Bạn thêm vào và thấy nó chạy thật. Và kết quả sẽ luôn là 1. Đơn giản là cái hàm này mình return mỗi 1 thôi mà :))

Hiểu hơm. Chưa hiểu “sợt” nàm chồng hàm tiện sợt luôn nạp chồng toán tử luôn nhé.

Hỏi: không biết nạp chồng hàm tiếng anh là gì ấy nhỉ, phải " Function Overloading" không hì.

3 Likes

Đây là lỗi linker, tức là float vi_khuan(int start,int time) nó khác với hàm kia nên tìm không ra định nghĩa. Bên C thì khai báo với định nghĩa chỏi nhau conflicting types nên ko cho dịch luôn.

2 Likes

cảm ơn cao nhân nhiều =))

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?