advanced c macro