เราจะมาดูวิธีการเปลี่ยนผลลัพธ์ของฟังก์ชัน printf() จาก main() ที่นี่เราจะกำหนดฟังก์ชันที่จะเปลี่ยนคำสั่ง printf() ทั้งหมดด้วยประเภทที่กำหนดเป็นประเภทอื่น
เราจะใช้มาโคร #define เพื่อทำงานนี้ มาโครนี้จะถูกกำหนดไว้ภายในฟังก์ชัน เราสามารถใส่ #define บรรทัดได้โดยตรงโดยไม่ต้องใช้มันในฟังก์ชัน แต่ในกรณีนั้น printf() จะเปลี่ยนไปเสมอ หากต้องการควบคุมโดยใช้ main เราต้องเรียกใช้ฟังก์ชันก่อน
ตัวอย่าง
#include <stdio.h>
void changePrintf() { //always any printf will print 50
#define printf(x, y) printf(x, 50);
}
main() {
int x = 40;
changePrintf();
printf("%d\n", x);
x = 60;
printf("%d", x);
} ผลลัพธ์
50 50