Đây OFFSET vĩ mô tương tự như các macro setof f xuất hiện trong stddef. . h
Tài liệu tham khảo địa chỉ & điều hành 7.5.6; gián tiếp điều hành * 7.5.7; giá trị trái 7,1; off setof vĩ mô 11,1; size_t 13,1; loại cấu trúc 5,6; gõ vòng loại 4.4.3; loại công đoàn 5.7
7.4.3 Chức năng cuộc gọi
Một cuộc gọi chức năng bao gồm một biểu thức postfix (các biểu hiện chức năng), một paren¬thesis trái, một trình tự có thể trống rỗng của biểu thức (biểu thức luận) cách nhau bởi dấu phẩy, và sau đó một dấu ngoặc đúng:
chức năng -call:
postfix-biểu hiện (expression-listop,)
biểu-list:
phân biểu hiện biểu hiện danh sách, phân công, biểu
Các loại biểu hiện chức năng, sau khi chuyển đổi nguyên phân bình thường, phải là "con trỏ đến chức năng trở về?" "cho một số loại T. Kết quả của các cuộc gọi chức năng có kiểu T và không bao giờ là một giá trị trái. Nếu T là khoảng trống, sau đó gọi hàm tạo không có kết quả và có thể không được sử dụng trong một bối cảnh đó đòi hỏi các cuộc gọi để mang lại một kết quả. T có thể không phải là một kiểu mảng.
Trong trình biên dịch trước Standard, các biểu hiện chức năng bắt buộc phải có loại "func¬tion trở về T", và do đó chức năng con trỏ phải được dereferenced một cách rõ ràng. Đó là, nếu fp là một con trỏ hàm, các chức năng để iVhich nó chỉ có thể được gọi là chỉ bằng cách viết (* fp) (...). Một ngoại lệ là đôi khi thực hiện nếu fp là một tham số hình thức; bạn có thể viết fp (...) trong trường hợp đó.
Để thực hiện các cuộc gọi chức năng, các biểu hiện chức năng và đối số đầu tiên evalu-ated; sự tự đánh giá không được quy định.
Tiếp theo, nếu cuộc gọi chức năng được điều chỉnh bởi một nguyên mẫu chuẩn C (Phần 9.2), sau đó các giá trị của các biểu thức luận được chuyển đổi sang các loại của các thông số tương ứng for¬mal như quy định trong các nguyên mẫu . Nếu chuyển đổi như vậy là không thể, gọi là lỗi. Nếu chức năng có một số biến của các đối số, sau đó các đối số phụ được chuyển đổi theo chuyển đổi lý luận thông thường (mục 6.3.5) và không có kiểm tra sâu hơn về các đối số phụ được thực hiện.
Nếu các cuộc gọi chức năng không bị chi phối bởi một nguyên mẫu, các biểu thức luận chỉ được chuyển đổi theo chuyển đổi tranh luận bình thường và không có kiểm tra tiếp tục được re¬quired của trình biên dịch. Điều này là do, thiếu một nguyên mẫu, các trình biên dịch có thể không có bất kỳ thông tin về các thông số chính thức của các chức năng bên ngoài.
Sau khi các đối số thực tế đã được thẩm định và chuyển đổi, chúng sẽ được sao chép vào các thông số chính thức của hàm được gọi; do đó, tất cả các đối số được truyền theo giá trị. Trong chức năng gọi tên của các tham số là giá trị trái, nhưng gán cho một tham số chính thức chỉ thay đổi giá trị sao chép trong các tham số hình thức và không ảnh hưởng đến bất kỳ đối số thực tế có thể xảy ra được một giá trị trái.
Ví dụ
xem xét các chức năng sau đây, hình vuông , trong đó trả về bình phương của đối số của nó:
hình vuông kép (double y) {y = y * y; trả lại y; }
Giả sử x là một biến kiểu, đôi với giá trị 4,0, và chúng tôi thực hiện các chức năng gọi vuông (x). Chức năng này sẽ trả về giá trị 16,0, nhưng giá trị của x sẽ vẫn 4.0. Các
đang được dịch, vui lòng đợi..