英特尔编译器上的我的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);
});
}
如何以编程方式执行此操作?
答案 0 :(得分:2)
您可以使用预处理器指令执行此任务,有关详细信息,请参阅here和here:
_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