add extern C block