Delphi编译指令{$IF DEFINED(CLR)}结果是True还是False?

自由之翼Sai 2020-11-12 09:45:05
大家好!
我刚接触Delphi看到代码中有一个条件编译指令{$IF DEFINED(CLR)},查了一圈下来知道IF为真的时候编译代码,但是DEFINED(CLR)不知道怎么确定是不是定义了CLR,查的资料都说CLR是一个.NET运行时库,意思是只要电脑上装了.NET Framework这个编译指令就是True吗?
谢谢!
...全文
472 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 自由之翼Sai 的回复:
[quote=引用 3 楼 早打大打打核战争 的回复:]与是否安装了.net framework无关。这只是之前支持.net时代遗留的代码,后来已经没用了,因为从D2009开始,.net支持已经被废掉,用Delphi .net编译器编译的时候才会定义符号CLR,当然你也可以自己加一行{$define CLR},那样也会编译这部分代码,但是会产生很多错误

你好,根据一楼说的我想着我用的10.1版本这个应该就是False了,但是你提到“用Delphi .net编译器编译的时候才会定义符号CLR”,意思我不能光看用的是什么delphi版本,还需要看我实际编译工程的时候使用的什么编译器才行吗?[/quote]

是的,不同平台的编译器会预定义一些自己的符号,在其他平台的编译器中可能没有,诸如WIN32、WIN64、ANDROID、IOS、CPUX86、CPUX64...
BlueStorm 2020-11-12
  • 打赏
  • 举报
回复
Delphi 10.1有Win32、win64、linux、ios、android等编译器(但没有.net编译器),他们会预定义一些不同的符号。
自由之翼Sai 2020-11-12
  • 打赏
  • 举报
回复
引用 3 楼 早打大打打核战争 的回复:
与是否安装了.net framework无关。这只是之前支持.net时代遗留的代码,后来已经没用了,因为从D2009开始,.net支持已经被废掉,用Delphi .net编译器编译的时候才会定义符号CLR,当然你也可以自己加一行{$define CLR},那样也会编译这部分代码,但是会产生很多错误
你好,根据一楼说的我想着我用的10.1版本这个应该就是False了,但是你提到“用Delphi .net编译器编译的时候才会定义符号CLR”,意思我不能光看用的是什么delphi版本,还需要看我实际编译工程的时候使用的什么编译器才行吗?
tanqth 2020-11-12
  • 打赏
  • 举报
回复
与安装.net没有关系,现在基本视为false哈。
  • 打赏
  • 举报
回复
与是否安装了.net framework无关。这只是之前支持.net时代遗留的代码,后来已经没用了,因为从D2009开始,.net支持已经被废掉,用Delphi .net编译器编译的时候才会定义符号CLR,当然你也可以自己加一行{$define CLR},那样也会编译这部分代码,但是会产生很多错误
自由之翼Sai 2020-11-12
  • 打赏
  • 举报
回复
引用 1 楼 BlueStorm 的回复:
这个跟你的电脑上是否装有.net没有任何关系 Delphi历史上曾经有过Delphi for .NET这个版本, 使用它来开发.net程序时,DEFINED(CLR)为True。 如果你没有用Delphi for .NET开发程序,可以把DEFINED(CLR)一律视为False
你好,我现在用的是Delphi 10.1,那我当前环境的所有DEFINED(CLR)都可以视为False,这个认识正确吗?
BlueStorm 2020-11-12
  • 打赏
  • 举报
回复
这个跟你的电脑上是否装有.net没有任何关系 Delphi历史上曾经有过Delphi for .NET这个版本, 使用它来开发.net程序时,DEFINED(CLR)为True。 如果你没有用Delphi for .NET开发程序,可以把DEFINED(CLR)一律视为False
自由之翼Sai 2020-11-12
  • 打赏
  • 举报
回复
引用 4 楼 tanqth 的回复:
与安装.net没有关系,现在基本视为false哈。
好的,现在大概知道干啥的了,谢谢!
自由之翼Sai 2020-11-12
  • 打赏
  • 举报
回复
引用 7 楼 早打大打打核战争 的回复:
[quote=引用 5 楼 自由之翼Sai 的回复:][quote=引用 3 楼 早打大打打核战争 的回复:]与是否安装了.net framework无关。这只是之前支持.net时代遗留的代码,后来已经没用了,因为从D2009开始,.net支持已经被废掉,用Delphi .net编译器编译的时候才会定义符号CLR,当然你也可以自己加一行{$define CLR},那样也会编译这部分代码,但是会产生很多错误
你好,根据一楼说的我想着我用的10.1版本这个应该就是False了,但是你提到“用Delphi .net编译器编译的时候才会定义符号CLR”,意思我不能光看用的是什么delphi版本,还需要看我实际编译工程的时候使用的什么编译器才行吗?[/quote] 是的,不同平台的编译器会预定义一些自己的符号,在其他平台的编译器中可能没有,诸如WIN32、WIN64、ANDROID、IOS、CPUX86、CPUX64... [/quote] 好的,十分感谢!
自由之翼Sai 2020-11-12
  • 打赏
  • 举报
回复
引用 6 楼 BlueStorm 的回复:
Delphi 10.1有Win32、win64、linux、ios、android等编译器(但没有.net编译器),他们会预定义一些不同的符号。
好的,谢谢!

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧