Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Turbo C "Confilicting type modifiers" / 6 сообщений из 6, страница 1 из 1
01.05.2007, 11:49
    #34498129
nrmBeginner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Turbo C "Confilicting type modifiers"
Подскажите пожалуйста, почему ошибка?
Работаю в Turbo C, после того как вставил модификатор pascal появилось сообщение об ошибке:
"Confilicting type modifiers"

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
#pragma warn -par
void pascal nrmo(char *szfirst,char *sznext= 0 , ...)
{

	asm PUSH AX
	asm PUSH DX
	char *pc0;
	for(char **pc=(char**)&szfirst;*pc!= 0 ;pc++) {
		for(char *pc2=*pc;*pc2!= 0 ;pc2++);
		*pc2='$';
		pc0 = *pc;
		asm {
			MOV AH, 09 
			MOV DX,pc0
			INT 21h
		};
		*pc2= 0 ;
	};
	asm POP DX
	asm POP AX
};
#pragma warn +par
...
Рейтинг: 0 / 0
02.05.2007, 14:59
    #34499765
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Turbo C "Confilicting type modifiers"
переменное число аргументов может быть только у функции cdecl
...
Рейтинг: 0 / 0
02.05.2007, 21:26
    #34500627
nrmBeginner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Turbo C "Confilicting type modifiers"
Вот бл....
...
Рейтинг: 0 / 0
03.05.2007, 13:59
    #34502161
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Turbo C "Confilicting type modifiers"
раз ты знаком с асмом, должен бы знать, что такое соглашение о вызове и почему в соглашении pascal нельзя передавать переменное число аргументов.
...
Рейтинг: 0 / 0
03.05.2007, 15:50
    #34502673
nrmBeginner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Turbo C "Confilicting type modifiers"
Да не знаком я с ним, так пару команд знаю, когдато хотел выучить да времени не хватило. А почему pascal не может иметь переменное число параметров? И подскажите если не трудно почему когда в этой функции в параметрах я подставляю выражения то он начинает их вычислять с права на лево(это приводит к путанице программы)? А то я думал мож Pascal исправит ситуация.
...
Рейтинг: 0 / 0
03.05.2007, 16:17
    #34502779
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Turbo C "Confilicting type modifiers"
в соглашении паскаль аргументы суются в стек в прямом порядке и относительно SP они доступны в обратном порядке – сверху лежит последний параметр, поэтому вызываемая функция не может найти первые аргументы, т.к. они могут залегать на любой глубине в стеке, также функция паскаль при выходе использует команду ret N которая вычищает стек от аргументов, чего сделать нельзя, если функция не знает количество аргументов. В cdecl аргументы суются в обратном порядке, начиная с последнего, и наверху оказывается первый аргумент, стек вычищает вызывающий код.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Turbo C "Confilicting type modifiers" / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]