nif中传输list参数

  nif中取list参数需要循环调用enif_get_list_cell,如果list里面元素个数是1个或2个,那么只需要取1次.如果大于2个,就需要取n-1次.前面每次取1个,最后1次可以取2个.为了简洁起见,我每次只取1个.参考代码如下:
  tail=argv[1];
  for(i=0;i<4;i++)
  {
  nRet=enif_get_list_cell(env, tail, &head, &tail2);
  if(nRet==0)
  {
  printf("非法IP:[%d].\n",i);
  return enif_make_string(env, "",ERL_NIF_LATIN1);
  }
  nRet2=enif_get_int(env, head, &nIp[i]);
  if(nRet2==0)
  {
  printf("非法IP:[%d].\n",i);
  return enif_make_string(env, "",ERL_NIF_LATIN1);
  }
  tail=tail2;
  }

你可能感兴趣的:(list)