Community
Participate
Working Groups
In the following program... ========== #define c 5; int main(){ int i,k,r; k = i + 1; /* << extract these */ r = k*c; /* << two lines */ printf("%d",k); printf("%d",r); return 0; } ========== ...if you select lines 4 and 5 and invoke the Extract Function refactoring, CDT produces the following incorrect code: ========== #define c 5; int extracted_function(int k, int i, int* r) { k = i + 1; r = k * c ; return k; } int main() { int i,k,r; k = extracted_function(k, i, &r); printf("%d",k); printf("%d",r); return 0; } ========== In the expected function, the assignment should be to *r, not to r, since r is being passed to a pointer. I would expect the extraction would be as follows: ========== #define c 5; int extracted_function(int k, int i, int* r) { k = i + 1; *r = k * c; return k; } int main() { int i,k,r; k = extracted_function(k, i, &r); printf("%d",k); printf("%d",r); return 0; } ==========