View Full Version : Trục trặc khi Return giá trị
lybao_huy
18-05-2010, 08:53 PM
Tôi dùng MPLAB IDE ver 8.46. tôi có 3 file h.c, g.h, main.c:
1-h.c chứa hàm unsigned long cal1():
unsigned long cal1(){
return 125100;
}
2-g.h chứa hàm unsigned long cal2().
unsigned long cal2(){
return 125100;
}
3-có 2 trường hợp:
3a- main.c chứa lệnh cal2() và in giá trị 125100 lên màn hình.
3b-main.c chứa lệnh cal1() và in giá trị không chính xác lên màn hình nếu giá trị này lớn hơn 32767.
xin các bạn giải thích dùm
namqn
18-05-2010, 11:50 PM
Tôi dùng MPLAB IDE ver 8.46. tôi có 3 file h.c, g.h, main.c:
1-h.c chứa hàm unsigned long cal1():
unsigned long cal1(){
return 125100;
}
2-g.h chứa hàm unsigned long cal2().
unsigned long cal2(){
return 125100;
}
3-có 2 trường hợp:
3a- main.c chứa lệnh cal2() và in giá trị 125100 lên màn hình.
3b-main.c chứa lệnh cal1() và in giá trị không chính xác lên màn hình nếu giá trị này lớn hơn 32767.
xin các bạn giải thích dùm
Bạn dùng trình dịch C nào? MPLAB IDE chỉ là ... IDE. Ngoài ra, bạn đang viết code cho chip nào?
Thân,
lybao_huy
19-05-2010, 01:11 AM
dùng trình dịch MPLABC30ComboLite_v3_23 cho chip dsp33fj64gp804.
Mong nhận câu trả lời sớm.
bien_van_khat
19-05-2010, 01:19 AM
bạn upload project bị lỗi của bạn lên thử.
lybao_huy
19-05-2010, 02:06 AM
Đây là Project của tôi đã làm đơn giản để dễ kiểm tra.
http://www.mediafire.com/?zh3zdqy2gdn
bien_van_khat
19-05-2010, 09:33 AM
Có vẻ như bạn mới làm với C.
Tất cả các hàm đều phải có khai báo mẫu hàm trước khi sử dụng, nếu ko khai báo mẫu hàm, Compiler sẽ ko biết hình dáng của hàm đó ra sao và sẽ coi hàm đó có kiểu trả về là int, ko có tham số.
lybao_huy
19-05-2010, 09:55 AM
mình sửa lại rồi, bạn coi hộ mình, nó cũng bị lỗi.
http://www.mediafire.com/?cootc11hkem
ngocthanh07
19-05-2010, 12:07 PM
#include <p33FJ64GP804.h>
#include <libpic30.h>
#include<uart.h>
#include <stdio.h>
#include <math.h>
#include "g.h"
Sao bạn không thử include luôn h.h vào đoạn trên thử xem, chỉ include có g.h thôi vậy
lybao_huy
19-05-2010, 12:21 PM
không đựoc bạn à, vì trong file h.c đã include h.h giả sử nếu trong file h.h có định nghĩa các biến (vd: char i; hay là int j;...), nếu bây giờ ta lại include h.h vào trong file EX_0.c hay include nó vào bất cứ file.c nào cũng báo lỗi là multiple definition of ten_bien, có nghĩa là có đa định nghĩa biến,tức cùng một biến là có đa định nghĩa
bien_van_khat
19-05-2010, 12:58 PM
file .h vốn ko phải là file dùng để khai báo biến.
ngocthanh07
19-05-2010, 02:30 PM
không đựoc bạn à, vì trong file h.c đã include h.h giả sử nếu trong file h.h có định nghĩa các biến (vd: char i; hay là int j;...), nếu bây giờ ta lại include h.h vào trong file EX_0.c hay include nó vào bất cứ file.c nào cũng báo lỗi là multiple definition of ten_bien, có nghĩa là có đa định nghĩa biến,tức cùng một biến là có đa định nghĩa
Bạn include file chấm h, trong phần source của project bạn bỏ file h.c ra, không import nó vào thì sẽ không bị cái vụ multiple definition nữa.
Anyway, xin vui lòng hiểu dùm mình là cái này mình chỉ nhớ là như vậy, ko đảm bảo 100%.
lybao_huy
19-05-2010, 02:32 PM
file .h vốn ko phải là file dùng để khai báo biến.
Ủa sao vậy tôi có thấy các file mẫu .h của microchip cũng dùng file .h để khai báo các biến mà .
ngocthanh07
19-05-2010, 02:34 PM
Àh, mà bạn thử ép cho nó ra long int luôn xem, ép bằng cáh
return (long int)125100
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.