Tôi có hai chức năng,
//virDomain is some struct
int virDomainCreate[virDomain*];
int virDomainDestroy[virDomain*];
Làm cách nào để gán hai chức năng này cho một biến?
Tôi đã thử,
int [*func][virDomain*] = NULL;
func = virDomainCreate[virDomain*]; // not working
func = &virDomainDestroy[virDomain*]; //not working
Cảm ơn tất cả sự giúp đỡ của bạn! Waka.
Đã hỏi ngày 10 tháng 3 năm 2014 lúc 19:58Mar 10, 2014 at 19:58
waka-waka-wakawaka-waka-wakawaka-waka-waka
1.0053 huy hiệu vàng14 Huy hiệu bạc29 Huy hiệu đồng3 gold badges14 silver badges29 bronze badges
3
Bạn chỉ có thể gán con trỏ cho chức năng như:
func = &virDomainCreate;
Hoặc bạn chỉ có thể sử dụng định dạng ngắn:
func = virDomainCreate;
Đã trả lời ngày 10 tháng 3 năm 2014 lúc 20:01Mar 10, 2014 at 20:01
Arjun Sreedharanarjun SreedharanArjun Sreedharan
10,7K2 Huy hiệu vàng24 Huy hiệu bạc33 Huy hiệu đồng2 gold badges24 silver badges33 bronze badges
2
Loại trả về là int vì vậy
int func;
func = virDomainCreate[virDomain*];
func = virDomainDestroy[virDomain*];
sẽ làm việc.
Salman Zafar
3.6164 Huy hiệu vàng20 Huy hiệu bạc41 Huy hiệu đồng4 gold badges20 silver badges41 bronze badges
Đã trả lời ngày 10 tháng 3 năm 2014 lúc 20:09Mar 10, 2014 at 20:09
Tại sao mã trả về sau sau khi biến được khai báo toàn cầu.
int add[int x, int y] {
return x+y;
}
int ab = add[10, 20];
int main[void] {
printf["%d", ab];
}
Nhưng nếu tôi gọi như thế này:
int add[int x, int y] {
return x+y;
}
int main[void] {
int ab = add[10, 20]; // Variable declare inside main
printf["%d", ab];
}
Sau đó, nó thực thi mà không có lỗi.
Đã hỏi ngày 21 tháng 5 năm 2013 lúc 7:57May 21, 2013 at 7:57
Ashish Rawatashish RawatAshish Rawat
3.3032 Huy hiệu vàng26 Huy hiệu bạc33 Huy hiệu Đồng2 gold badges26 silver badges33 bronze badges
1
Khởi tạo cho các biến toàn cầu phải không đổi, chúng không thể là một biểu thức tùy ý.
Đã trả lời ngày 21 tháng 5 năm 2013 lúc 7:59May 21, 2013 at 7:59
Trong ngôn ngữ C, bạn không thể thực thi mã trong phạm vi toàn cầu, bên ngoài hàm và lưu trữ giá trị trả về của hàm trong biến toàn cầu.
Các biến toàn cầu phải không đổi khi khởi tạo và khi bạn đang thực hiện:
x = func [ ... ]
Sự trở lại của hàm không phải là không đổi.
Đã trả lời ngày 21 tháng 5 năm 2013 lúc 8:00May 21, 2013 at 8:00
Từ phần 3.5.7 Khởi tạo tiêu chuẩn C:
Tất cả các biểu thức trong bộ khởi tạo cho một đối tượng có thời lượng lưu trữ tĩnh hoặc trong danh sách khởi tạo cho một đối tượng có loại tổng hợp hoặc loại liên kết sẽ là các biểu thức không đổi.
và ab
có thời gian lưu trữ tĩnh nhưng add[]
không phải là một biểu thức không đổi.
Đã trả lời ngày 21 tháng 5 năm 2013 lúc 8:02May 21, 2013 at 8:02
HMJDHMJDhmjd
118K19 Huy hiệu vàng205 Huy hiệu bạc247 Huy hiệu Đồng19 gold badges205 silver badges247 bronze badges
Các biến toàn cầu có thể được khởi tạo bằng một biểu thức không đổi. Vì các giá trị của chúng được đặt tại thời điểm biên dịch và không phải trong thời gian chạy.compilation time, and not in run-time.
Đã trả lời ngày 21 tháng 5 năm 2013 lúc 8:08May 21, 2013 at 8:08
AlexalexAlex
9.68111 Huy hiệu vàng52 Huy hiệu bạc84 Huy hiệu đồng11 gold badges52 silver badges84 bronze badges
1