识别操作系统

时间:2015-11-19 20:20:29

标签: operating-system fortran fortran90 intel-fortran

英特尔编译器上的我的Fortran 90代码取决于它运行的操作系统,例如:

[Table("Student", Schema = "School")]
public class Student
{
    [Key,Column("Student_ID")]
    public long ID { get; set; }

    public virtual List<Teacher> Teachers { get; set; }

    //...
}

[Table("Teacher", Schema = "School")]
public class Teacher
{
    [Key,Column("Teacher_ID")]
    public long ID { get; set; }

    public virtual List<Student> Students { get; set; }

    //...
}

public StudentMap()
{
   HasMany(p => p.Teachers)
   .WithMany(p => p.Students)
   .Map(m =>
       {
         m.ToTable("StudentsTeachers", "School");
         m.MapLeftKey(p => p.ID);
         m.MapRightKey(p => p.ID);
       });
}

如何以编程方式执行此操作?

1 个答案:

答案 0 :(得分:2)

您可以使用预处理器指令执行此任务,有关详细信息,请参阅herehere

  • _WIN32 for Windows
  • __linux for Linux
  • __APPLE__适用于Mac OSX

以下是一个例子:

program test

#ifdef _WIN32
  print *,'Windows'
#endif
#ifdef __linux
  print *,'Linux'
#endif

end program

确保通过指定-fpp / /fpp或在扩展程序中为文件提供大写F / F90来启用预处理器。 您可以在中心位置执行此操作,例如定义描述操作系统的常量。这样就可以避免这些宏。

请注意gfortran未指定Linux的宏。因为它仍然在Windows上定义_WIN32,如果你只考虑Linux和Windows,你也可以使用#else

program test

#ifdef _WIN32
  print *,'Windows'
#else
  print *,'Linux'
#endif

end program