Не забывайте обнулять вещи, на которые вам наплевать:
#include once "windows.bi"
Type FileHeader
dwMagic As Long
dwVersion As Long
szComment As ZString * (255 + 1)
cbData As LongНе забывайте обнулять вещи, на которые вам наплевать:
#include once "windows.bi"
Type FileHeader
dwMagic As Long
dwVersion As Long
szComment As ZString * (255 + 1)
cbData As LongJ.2 Неопределенное поведение 1 Поведение не определено при следующих обстоятельствах:
Требование "должен" или "не должен", которое выходит за рамки ограничения, нарушено (пункт 4).
Непустой исходный файл не заканчивается символом новой строки, которому непосредственно не предшествует символ обратной косой черты, или заканчивается символом частичной предварительной обработки или комментарием (5.1.1.2).
Конкатенация токенов создает последовательность символов, соответствующую синтаксису универсального символьного имени (5.1.1.2).
Программа в размещенной среде не определяет функцию с именем main , используя одну из указанных форм (5.1.2.2.1).
Постоянно наталкиваюсь на путаницу между нулевым указателем и нулевым адресом. А ведь это разные вещи. И нулевой указатель может не указывать на нулевой адрес.
Нулевой указатель — собый указатель, гарантированно не ссылающийся на объект или функцию.
Нулевой адрес — просто адрес со значением ноль.
Присваивание нуля (и сравнение с нулём) — на самом деле это не присваивание, это специальная инструкция компилятору, которая заставляет считать указатели нулевыми указателями.
Dim p As Integer Ptr = 0
| #include once "windows.bi" | |
| #include once "crt.bi" | |
| Dim user_name As String, user_age As Integer | |
| Input "Enter your name and age, separated by a comma: ", user_name, user_age | |
| Print "Your name is " & user_name & ", and you are " & user_age & " years old." | |
| Print "Great!" |
| #include once "crt.bi" | |
| ' Функция‐компаратор | |
| ' Такая функция принимает два аргумента и возвращает значение | |
| ' какой из этих аргументов больше, меньше или они равны | |
| ' Функция должна быть отмечена как "cdecl" | |
| Function Comparator cdecl(ByVal p As Const Any Ptr, ByVal q As Const Any Ptr) As Long | |
| Dim px As Integer Ptr = CPtr(Integer Ptr, p) | |
| Dim py As Integer Ptr = CPtr(Integer Ptr, q) |
| #include once "crt.bi" | |
| #include once "windows.bi" | |
| #include once "win\ole2.bi" | |
| Const PAGE_SIZE = 4096 | |
| Const ElapsedCount = 10 | |
| Const RepeatsCount = 5000000 | |
| Type ElapsedsVector |
| ' Compile with fbc 1.10.1 | |
| ' fbc64.exe -R -O 3 -v -w all -w error -gen gcc -m file file.bas | |
| #include once "crt.bi" | |
| Redim Shared pszDimPosReplaces(1000) As Zstring Ptr | |
| Function misc_replace_string_proc(sString As Zstring , sSearchStr As Zstring, sReplaceStr As Zstring, iPosition As Integer = 1 , iSearchParam As Integer = 0 ) As String Export | |
| Dim As Integer iIndexDim , iNextPos = iPosition-1 |
| #include once "windows.bi" | |
| Const MSGF_SLEEPMSG = &h5300 | |
| Private Function SleepMsg(ByVal dwTimeout As DWORD) As Boolean | |
| Dim dwStart As DWORD = GetTickCount() | |
| Dim dwFinish As DWORD = dwStart | |
| Dim dwElapsed As DWORD = dwFinish - dwStart |
| #define unicode | |
| #include once "windows.bi" | |
| #include once "win\commctrl.bi" | |
| Dim hwndStatus As HWND = Cast(HWND, &H002B0BAC) | |
| Dim ProcessId As DWORD = Any | |
| Dim ThreadId As DWORD = GetWindowThreadProcessId(hwndStatus, @ProcessId) | |
| Dim ProcessHandle As HANDLE = OpenProcess(PROCESS_ALL_ACCESS, 0, ProcessId) |