Units information can be accessed through IfcProject.UnitsInContext attribute using C++ API in following way:
// 1. Using OdIfcFile
OdDAIObjectId idProject = pIfcFile->getProjectId();
// 2. No OdIfcFile way, work with model only
OdDAI::ModelPtr model = pIfcFile->getModel();
const OdDAIObjectIds &projectExtent = model->getEntityExtent("ifcproject")->getArray();
if (projectExtent.size())
{
  idProject = projectExtent[0];
}
if (idProject.isValid())
{
  OdDAI::ApplicationInstancePtr project = idProject.openObject();
  OdDAIObjectId idUnitsInContext;
  project->getAttr("unitsincontext") >> idUnitsInContext;
  if (idUnitsInContext.isValid())
  {
    OdDAI::ApplicationInstancePtr unitAssignment = idUnitsInContext.openObject();
    OdDAI::Set *units = nullptr;
    unitAssignment->getAttr("units") >> units;
    if (!units->isNil())
    {
      for (const OdDAI::Select &selUnit : units->getArray())
      {
        OdDAIObjectId idUnit = selUnit.getHandle();
        OdDAI::ApplicationInstancePtr unit = idUnit.openObject();
        const char *unitType = nullptr;
        unit->getAttr("unittype") >> unitType;
        const char *prefix = nullptr;
        unit->getAttr("prefix") >> prefix;
        const char *name = nullptr;
        unit->getAttr("name") >> name;
        oddaiPrintConsoleString(L"\n#%u=%hs:\n UnitType: %hs\n Prefix: %hs\n Name: %hs\n",
          (OdUInt64)idUnit.getHandle(), unit->typeName().c_str(), unitType, prefix, name);
      }
    }
  }
}  
           
             
            