Hướng dẫn c++ assign function to variable - c ++ gán hàm cho biến

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

Hướng dẫn c++ assign function to variable - c ++ gán hàm cho biến

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.

Hướng dẫn c++ assign function to variable - c ++ gán hàm cho biến

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

Hướng dẫn c++ assign function to variable - c ++ gán hàm cho biến

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

Hướng dẫn c++ assign function to variable - c ++ gán hàm cho biến

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.

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

Hướng dẫn c++ assign function to variable - c ++ gán hàm cho biến

AlexalexAlex

9.68111 Huy hiệu vàng52 Huy hiệu bạc84 Huy hiệu đồng11 gold badges52 silver badges84 bronze badges

1

Chúng ta có thể gán một hàm cho một biến trong c không?

Các biến phạm vi tệp chỉ có thể được khởi tạo với các biểu thức không đổi.Một cuộc gọi chức năng không phải là một.A function call isn't one.

Bạn có thể gán một hàm cho một biến không?

Trong Python, chúng ta có thể gán một hàm cho một biến.Và sử dụng biến đó, chúng tôi có thể gọi hàm nhiều như thời gian chúng tôi muốn.Do đó, tăng khả năng tái sử dụng mã.Chỉ cần gán một hàm cho biến mong muốn nhưng không có () tức là chỉ với tên của hàm.. And using that variable we can call the function as many as times we want. Thereby, increasing code reusability. Simply assign a function to the desired variable but without () i.e. just with the name of the function.

Làm thế nào để bạn gán một chức năng?

Hàm gán () lấy các giá trị tham số bắt buộc sau: x: Điều này thể hiện tên biến được đưa ra dưới dạng chuỗi ký tự.Giá trị: Đây là giá trị được gán cho biến x.

Bạn có thể gán một giá trị cho một hàm không?

Không, bạn không thể gán các giá trị cho các chức năng.Bạn có thể gán các giá trị cho các con trỏ chức năng, nhưng không phải là chức năng trong C ++.Chẳng hạn, hãy thử gán bất cứ điều gì cho foo trong ví dụ của bạn.. You can assign values to function pointers, but not to functions in C++. Try assigning anything to foo in your example, for instance.