169 похожих чатов

Решил я значит изобрести одноразово добавляемые в проект модули на

фасме, только чтобы можно было и макросы внутри них нормально определять. И написал... нечто. Оно работает, но я не могу понять, почему оно работает?
@Pycckuu_Bop @ProMiNick
macro __endm__ arg{}

endm fix __endm__ }

macro module name{
match =name#_included, name#_included{
define name#_included
}

module testus
match =a, a{
display "Hello, I am only one-time included module!"
}
endm

module testus
match =a, a{
display "Hello, I am only one-time included module!"
}
endm

15 ответов

17 просмотров

Ты всё-таки изобрёл endm?

The Bird of Hermes- Автор вопроса
КТ315
Ты всё-таки изобрёл endm?

Оно для того, чтобы делать что-то вроде #pragma once

The Bird of Hermes
Оно для того, чтобы делать что-то вроде #pragma o...

Так это в FASM легко реализуется. Просто проверяешь обьявлена ли была ранее переменная препроцессора, если нет - обьявляешь, вставляешь исходник. Всё.

The Bird of Hermes- Автор вопроса
КТ315
Так это в FASM легко реализуется. Просто проверяеш...

Ну да, и делается это с помощью match. Но тогда внутри макросы придется экранировать

The Bird of Hermes- Автор вопроса

Потому что оно не работает. } в матчах закрывает модуль. Попробуй перед endm написать display 'x',13,10 в обоих module.

macro module a* { match =a#_inc, a#_inc \{ define a#_inc } endm fix } module alice display '[alice]' endm module bob display '[bob]' endm module alice display '[alice]' endm

The Bird of Hermes- Автор вопроса
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
macro module a* { match =a#_inc, a#_inc \{ d...

macro module a* { match =a#_inc, a#_inc \{ define a#_inc } endm fix } module alice macro b{ display "lol" } display '[alice]' endm module alice macro b{ display '[alice]' } endm Не будет работать

The Bird of Hermes- Автор вопроса
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
почему

Потому что if обрабатывается на этапе компиляции, после текстовой обработки

The Bird of Hermes- Автор вопроса
Mixail Frolov
расположение инклуда модуля важно?

Важно, потому что текстовый препроцессинг однопроходный

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта