跨平台freebasic集锦(1)-安装与概述

news2024/9/29 7:21:54

目录

    • TIOBE Index for January 2023
    • 概述
    • 特点
      • BASIC兼容性
      • 干净的语法
      • 多平台
      • Unicode支持
      • 大量内置数据类型
      • 用户定义类型(UDT)
      • 默认过程参数值
      • 内联汇编Intel语法
      • 传统的预处理器支持
      • 调试支持
      • 创建OBJ、LIB、DLL和控制台或GUI EXE
      • 优化代码生成
    • 下载安装

TIOBE Index for January 2023

2023年一月编程语言排行
s://img-blog.csdnimg.cn/5d471a7c88404c438fbd53efa1bce019.png)具体可以看https://www.tiobe.com/tiobe-index/

python、C、C++上前三名不奇怪,java下滑非常正常。
让我惊讶的是basic在前20就占了2个。
所以有想法重新研究一下basic,百度了一下,看到了freebasic,于是就这个了
https://freebasic.net/

概述

FreeBASIC项目是一组跨平台开发工具,包括编译器、基于GNU的汇编程序、链接器和存档程序,以及支持运行时库,包括基于软件的图形库。编译器fbc目前支持在DOS、Linux、Windows和Xbox平台上构建基于i386的体系结构。该项目还包含一些流行的第三方库的瘦绑定(头文件),如C运行库、Allegro、SDL、OpenGL、GTK+、Windows API等,以及许多这些库的示例程序。

FreeBASIC是一种高级编程语言,支持过程式、面向对象和元编程范式,语法与Microsoft QuickBASIC兼容。事实上,FreeBASIC项目最初是为了创建一个与Microsoft QuickBASIC兼容的、免费的替代方案,但后来发展成为一个强大的开发工具。可以看出,FreeBASIC以多种方式扩展了Microsoft QuickBASIC的功能,支持更多的数据类型、语言构造、编程风格以及现代平台和API。

任何类型的程序都可以用FreeBASIC编写。

特点

BASIC兼容性

FreeBASIC不是一种“新的”BASIC语言。如果您熟悉任何Microsoft BASIC变体,则无需学习太多新知识。您可以使用“-lang-qb”来实现兼容性,或者(默认)使用“-lang fb”来实现某些新功能,但它也带来了一些限制,并且与“C”编程语言有些相似。FreeBASIC不区分大小写;不需要明确的“主要”程序;Microsoft QuickBASIC中的大多数图形和控制台语句和过程都是实现的。仅使用“-langqb”:标量变量不需要标注尺寸,可以使用后缀;支持行号;支持On Error和Gosub。

干净的语法

只添加了少量关键字。所有过程都作为库实现,因此在大多数情况下,没有新的内在例程,因此与旧代码名称重复的可能性很低。

现有C库和API的精简绑定(头文件)

不需要包装器或助手,只需要一个移植的头文件,就可以很容易地使用外部C库。官方发行版已经提供了几个到现有C库的绑定,有关完整的最新列表,请参阅外部库。

多平台

FreeBASIC目前在64/32位Windows、Linux和DOS上运行(16位DOS已经足够好了,尽管FreeBASIC本身和编译器输出都是32位),还可以为Xbox控制台创建应用程序。更多平台即将到来。编写运行时库时考虑到了可移植性。使用的所有第三方工具都存在于大多数操作系统上,因为它们来自GNU binutils。编译器是用100%的FreeBASIC代码编写的(也就是说,FreeBASIC自己编译),这使得它不依赖于不可移植的工具,因此很容易引导。

Unicode支持

除了具有Unicode转义序列(\u)的ASCII文件外,FreeBASIC还可以解析UTF-8、UTF-16LE、UTF-16BE、UTF-32LE和UTF-32BE源(.bas)或头(.bi)文件,它们可以与同一项目中的其他源/头自由混合(也可以与其他ASCII文件混合)。文字字符串可以用原始的非拉丁字母表键入,只需使用支持上面列出的某些Unicode格式的文本编辑器即可。Wstring类型包含宽字符,所有字符串过程(如Left、Trim等)也将使用宽字符串。Open被扩展为支持UTF-8、UTF-16LE和UTF-32LE文件以及编码说明符。输入#和行输入#以及打印#和写入#可以正常使用,如果需要,Unicode到ASCII之间的任何转换都会自动完成。打印还支持Unicode输出(请参阅要求)。

大量内置数据类型

整数:Byte、Ubyte、Short、Ushort、Integer、UInteger、Long、ULong、Longnt、Ulongint

浮点:单(32位)、双(64位)

字符串:固定、可变长度或以空结尾(Zstring),最多2GB长的Unicode字符串(Wstring),如Zstring,但支持宽字符。直接使用Windows Unicode API过程等。

用户定义类型(UDT)

无限嵌套。BASIC的Type语句与新的Union语句(包括匿名嵌套联合)一起受到支持。最多可使用八个维度的阵列字段。过程指针字段。位字段。枚举(enums)使用Enum轻松声明具有顺序值的常量列表。阵列支持固定长度和可变长度的阵列,大小可达2GB。最多八个维度,包括具有未知维度的数组。任何下限和上限。在使用Redim重新调整可变长度数组的大小期间,可以使用新的Preserve说明符来保留元素数据。指向上面列出的任何数据类型的指针,包括字符串字符、数组元素和UDT。使用与C相同的语法。无限间接级别(例如,指向…的指针)。过程指针。索引[](包括字符串索引)。类型铸造。变量、对象和数组初始化用于静态、模块级或局部变量、数组和UDT。

默认过程参数值

对于数字、字符串和UDT参数类型。过程重载包括具有默认参数值的过程。

内联汇编Intel语法

直接按名称引用变量;不需要“特技代码”。

传统的预处理器支持

与C中的语法相同。#Define命令支持单行宏,包括参数。#宏命令支持多行宏。类型别名支持C中的前向引用,包括UDT和过程指针类型。字符串文字的类似C的转义序列与C中的相同(除了数字被解释为十进制,而不是八进制)。

调试支持

GDB(GNU调试器)或Insight(GDB GUI前端)的完全调试支持。数组边界检查(仅由-exx命令行选项启用)。空指针检查(同上)。

创建OBJ、LIB、DLL和控制台或GUI EXE

您决不会被任何类型的IDE或编辑器锁定。您可以创建静态和动态/共享库,只需添加一个命令行选项(-lib或-dylib/-dll)。作为一个32位应用程序,FreeBASIC可以编译最大2GB的源代码文件。符号(变量、常量等)的数量仅受编译时可用内存总量的限制。(例如,您可以在源代码中同时包含OpenGL、GTK/SDL、BASS。)

优化代码生成

虽然FreeBASIC不是一个优化编译器,但它进行了多种通用优化,以在x86 CPU上生成尽可能快的代码,而不输给其他BASIC替代方案,包括商业版。完全免费所有第三方工具也是免费的。未使用任何废弃或受版权保护的软件(Win32上的GoRC除外)。汇编程序、链接器、archiver和其他命令行应用程序来自GNUbinutils编程工具。

下载安装

方法在
https://sourceforge.net/projects/fbc/files/
以windows为例
先下载https://sourceforge.net/projects/fbide/中的IDE
然后,再下载图中画线部分的任何一下
在这里插入图片描述解压后,覆盖FreeBASIC安装目录下的文件
打开IDE
在这里插入图片描述
编译后,运行,会发现没反应,因为终端窗口运行后关闭了
打开终端窗口
在这里插入图片描述参照以下命令
在这里插入图片描述

fbc -version显示当前编译器版本
fbc 1.bas编译

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/174661.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java设计模式-迭代器模式、迭代器模式是什么、怎么使用

继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 6.9 迭代器者模式 6.9.1 定义 提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示 6.9.2 结构 抽象聚合(Aggregate)角色&a…

[创业之路-48] :动态股权机制 -3- 静态股权分配 VS 动态股权分配

静态的股权分配是基础,动态的股权分配才是灵魂:只要你给了固态股权,比如说,股东A在最开始出资100万,占了10%的股份,但是,在后面的工作种,因为能力问题,价值观问题&#x…

回收租赁商城系统功能拆解12讲-会员权益

回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 可以快速帮助企业搭建类似闲鱼回收/爱回收/爱租机/人人租等回收租赁商城。 回收租赁系统支持智能评估回收价格,后台调整最终回收价,用户同意回收后系统即刻放款,用户微信零…

【自然语言处理】词袋模型在文本分类中的用法

词袋模型在文本分类中的用法1.加载数据 20 Newsgroups:数据被组织成 20 个不同的新闻组,每个新闻组对应一个不同的主题。一些新闻组彼此非常密切相关(例如 comp.sys.ibm.pc.hardware / comp.sys.mac.hardware),而其他…

云原生之Docker容器的存储管理

一、检查本地docker环境 1.检查宿主机系统版本 [rootdocker ~]# cat /etc/centos-release CentOS Linux release 7.6.1810 (Core) 2.检查docker版本 [rootdocker ~]# docker -v Docker version 20.10.18, build b40c2f6二、创建一个测试httpd容器 1.创建测试目录 [rootdoc…

Python版本PathPlanning运动规划库中RotationToWorldFrame函数内部计算过程分析

本文主要对Python版本PathPlanning运动规划库中RotationToWorldFrame函数的内部计算过程分析,包括相关必备python基础和计算过程分析两部分,并给出了等效的MATLAB版本计算过程程序,方便分析对比。 (注:RotationToWorld…

【春节旅游攻略】南京周边出发,小众又好玩的景点推荐

【写在前面】 过年了,今天咱不谈技术,聊聊轻松的话题,旅游,其实博主很喜欢去外面走走看的,特汇总了一个4天3晚的旅行攻略,说走就走,带上自己的亲人多看看外面的锦世繁华。 三人行,…

使用最小二乘法和最大似然法估计非线性模型

专注系列化、高质量的R语言教程推文索引 | 联系小编 | 付费合集本文是年前的最后一篇推文,我们来学习一下使用最小二乘法和最大似然法进行非线性模型估计。模型估计是指,在模型形式已知的情况下,求解出可以使已有数据与模型形式最大程度上相符…

【日常系列】LeetCode《28·动态规划3》

数据规模->时间复杂度 <10^4 &#x1f62e;(n^2) <10^7:o(nlogn) <10^8:o(n) 10^8<:o(logn),o(1) 内容 二维数组中的路径问题 买卖股票的最佳时机 lc 62【剑指 098】【top100】&#xff1a;不同路径 https://leetcode.cn/problems/unique-paths/ 提示&#x…

分享优秀的视频地址

【2022 RISC-V中国峰会-芯来演讲合集】https://www.bilibili.com/video/BV1mV4y1W785?vd_source733efcf14020a43e7dac58e4c28ca0c8【计算机组成与设计&#xff1a;RISC-V【浙江大学】】https://www.bilibili.com/video/BV1tz411z7GN?vd_source733efcf14020a43e7dac58e4c28ca0…

【Dat图片的位异或解密】

文章目录 异或一、图片字节标识二、开始异或计算异或 异或(eor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为"⊕"&#xff0c;计算机符号为"eor"。其运算法则为: a⊕b (a ∧ b) ∨ (a ∧b) 如果a、b两个值不相同&#xff0c;则异或结果为1。…

Tkinter的Label与Button

Tkinter是Python的一个内置包&#xff0c;主要用于简单的界面设计&#xff0c;使用起来非常方便。 目录 一、创建界面 1. 具体步骤 1.1 导入tkinter包 1.2 tk.Tk()函数&#xff1a;创建一个主界面&#xff0c;并命名为root 1.3 root.title()函数&#xff1a;给root界面设置…

API 接口案例--基于 MySQL 数据库 + Express对外提供用户列表的 API 接口服务

API 接口案例1. 案例需求2. 主要的实现步骤3. 搭建项目的基本结构4. 创建基本的服务器5. 创建 db 数据库操作模块6. 创建 user_ctrl 模块7. 创建 user_router 模块8. 导入并挂载路由模块9. 使用 try…catch 捕获异常1. 案例需求 基于 MySQL 数据库 Express 对外提供用户列表的…

【论文速递】WACV2022 - 基于小样本分割的多尺度Non-Novel片段消除方法

【论文速递】WACV2022 - 基于小样本分割的多尺度Non-Novel片段消除方法 【论文原文】&#xff1a;Elimination of Non-Novel Segments at Multi-Scale for Few-Shot Segmentation 获取地址&#xff1a;https://openaccess.thecvf.com/content/WACV2023/papers/Kayabasi_Elimi…

【睿睿的2022年度总结和2023的目标】

博客主页&#xff1a;张栩睿的博客主页欢迎关注&#xff1a;点赞收藏留言系列专栏&#xff1a;c语言学习家人们写博客真的很花时间的&#xff0c;你们的点赞和关注对我真的很重要&#xff0c;希望各位路过的朋友们能多多点赞并关注我&#xff0c;我会随时互关的&#xff0c;欢迎…

畅捷通T+与道一云对接集成报销凭证

畅捷通T与道一云对接集成获取报销信息列表连通凭证创建(报销保险费&#xff08;甘肃&#xff09;)数据源系统:道一云在道一云坚实的技术基础上&#xff0c;道一云推出全新升级的2.0产品矩阵&#xff0c;分别是低码平台、智能门户、场景应用。基于云原生底座&#xff0c;为企业提…

Allegro如何设置等长规则操作指导

Allegro如何设置等长规则操作指导 PCB设计需要给某一组信号做组间等长的时候,需要给这个组设置等长规则,如下图 以给以下两个网络设置等长规则为例 具体操作如下 打开规则管理器

【华为上机真题 2023】寻找相同子串

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

(17)go-micro微服务Prometheus监控

文章目录一 Prometheus监控介绍1.微服务监控系统promethues介绍2.微服务监控系统promethues工作流程二 Prometheus监控重要组件和重要概念1.微服务监控系统promethues重要组件2.微服务监控系统promethues重要概念三 微服务监控系统grafana看板四 Prometheus监控Grafana看板安装…

【LeetCode每日一题:1817. 查找用户活跃分钟数~~~读懂题目意思+HashMap】

题目描述 给你用户在 LeetCode 的操作日志&#xff0c;和一个整数 k 。日志用一个二维整数数组 logs 表示&#xff0c;其中每个 logs[i] [IDi, timei] 表示 ID 为 IDi 的用户在 timei 分钟时执行了某个操作。 多个用户 可以同时执行操作&#xff0c;单个用户可以在同一分钟内…