strcpy(m->mp->paramname,buf); //параметр макроса
m->mp->next=NULL; //крнец подсписка
m->mp1=m->mp; //текущ эл
p1++; }
else //если не 1-й эл
{m->mp2=new macroname::macroparam; //новый эл
strcpy(m->mp2->paramname,buf); //параметр макроса
m->mp2->next=NULL; // указ на конец подсписка
m->mp1->next=m->mp2; // связывание элементов
m->mp1=m->mp2; //текущ эл
} } }
else //если это не 1-й макрос(элемент) в списке
{ if (q==0) //если 1-й эл в подсписке
{ m2=new macroname;
strcpy(m2->name,buf); // имя макроса в m2->name
m2->next=NULL;m1->next=m2 m1=m2; q++; }
//2-й параметр в макросе
else {
if (p1==0) //если 1-й эл подсписка
{ m1->mp=new macroname::macroparam;
strcpy(m1->mp->paramname,buf); //параметр макроса
m1->mp->next=NULL;
m1->mp1=m1->mp; p1++;
} else {
m1->mp2=new macroname::macroparam;
strcpy(m1->mp2->paramname,buf); //параметр макроса
m1->mp2->next=NULL;
m1->mp1->next=m1->mp2; //связь эл
m1->mp1=m1->mp2; //текущ эл
} } }
clearbuf; j=x=0;
if (str[i]!='\n') i++;//если не конец строки, то след-ий эл
} } } //while
p++; //признак: если это 1-й макрос в программе
p1=0; //признак 1-го элемента списка
}
void LoadMacro(char *str) //создаёт подсписок macrobuf в котором содержатся команды макроса
if (p3==0) // если это 1-й макрос программы
{ if (p4==0) //если 1-й элем подсписка
{ m->mb=new macroname::macrobuf;//созд. нового подсписка с
strcpy(m->mb->mbuf,str); //командами в mbuf
m->mb->next=NULL;
m->mb1=m->mb;
p4++; //признак первого элемента
} else //если не первый эл
{
m->mb2=new macroname::macrobuf;
strcpy(m->mb2->mbuf,str); //в mbuf команды макроса
m->mb2->next=NULL;
m->mb1->next=m->mb2; //связывание эл-ов
m->mb1=m->mb2;
} }
else // если это не 1-й макрос программы
{ if (p4==0) //если это 1-й эл подсписка
{ m2->mb=new macroname::macrobuf;
strcpy(m2->mb->mbuf,str);
m2->mb->next; m2->mb1=m2->mb;
p4++; //признак первого элемента
m1=m2;} else
{ m2->mb2=new macroname::macrobuf;
strcpy(m2->mb2->mbuf,str);
m2->mb2->next=NULL;
m2->mb1->next=m2->mb2;
m2->mb1=m2->mb2; m1=m2;} }}
void InsertBuf() //вставка макрорасширения
{ int s=0,s1=0,pr=1,pr1=1;
char *p,*p1,q[40];
m1->mb1=m1->mb;
while (m1->mb1->next!=NULL)
{ if (pr==0 && pr1==0) fprintf(file_w,"\t%s",m1->mb1->mbuf);
if (s>0) m1->mb1=m1->mb1->next;
s1=0; m1->mp1=m1->mp;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.