HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #531  
Старый 20.12.2007, 20:57
iv.
Moderator - Level 7
Регистрация: 21.03.2007
Сообщений: 1,200
Провел на форуме:
7134052

Репутация: 1204


По умолчанию

ААААА, кез, чмокаю тя в носик!!! Выручил.
Я почему-то когда делал __declspec(dllexport) void* operator new(size_t size) компилятор ругался..
 
Ответить с цитированием

  #532  
Старый 20.12.2007, 21:11
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


Question

Цитата:
Я почему-то когда делал __declspec(dllexport) void* operator new(size_t size) компилятор ругался..
Как можно экспортировать оператор?
 
Ответить с цитированием

  #533  
Старый 20.12.2007, 21:16
iv.
Moderator - Level 7
Регистрация: 21.03.2007
Сообщений: 1,200
Провел на форуме:
7134052

Репутация: 1204


По умолчанию

Эммм, ну __declspec(dllexport) void* operator new(size_t size, DWORD pim, DWORD piu) вполне прокатило и даже работало =)
 
Ответить с цитированием

  #534  
Старый 20.12.2007, 22:40
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

>>Как можно экспортировать оператор?

ну в конечном счете любой перегруженный оператор является функцией, другое дело что не совсем очевидно какое имя будет генерировать компилятор при экспорте..
 
Ответить с цитированием

  #535  
Старый 23.12.2007, 19:26
Murena
Новичок
Регистрация: 17.08.2007
Сообщений: 14
Провел на форуме:
56759

Репутация: 16
По умолчанию

с клавы вводиться предложение. Надо в нем найти определенное слово и заменить его другим. как?
 
Ответить с цитированием

  #536  
Старый 26.12.2007, 01:42
EST a1ien
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
Провел на форуме:
1269624

Репутация: 114
Отправить сообщение для EST a1ien с помощью ICQ
По умолчанию

Народ помогите разобраться с этим кодом уже 2 часа с ним парюсь. (всякая ненужная фигня вырезанна)
Код:
int main(int argc, char* argv[])
{	
	
	char com[80];
	while(1)
	{
		cout<<"# ";
		gets(com);
		int iret=command(com);
		if (iret==2) break;
	cout<<"\n\n";
	}
	return 0;
}

int command(char *s)
{
char * pch;
	 pch = strtok (s," ");
  while (pch != NULL)
  {
  	if(!strcmp("-add",pch))
		{
		pch = strtok (NULL, " ");
		if (pch)
		{
		if (!strcmp("s",pch)) 
		{
			pch = strtok (NULL, " ");
			add_stud(pch);
			break;
		}
		}
		cout<<"To get help about command put -help add";
		return 1;
		}
	if(!strcmp("-exit",pch) || !strcmp("-quit",pch))
		{
		cout<<"Good Buy\n";
		return 2;
		}
	  pch = strtok (NULL, " ");
  }
  cout<<"Command is not supported! Put -help to get Help";
return 0;
}

int add_stud(char *n)
{
char t[80];
		int i5Valu[5];
	cout<<"EnterFIO\n";
	cin>>t;
	cout<<"Enter 5 Values\n";
	return 1;
}
дело в том что если мы вводим
Код:
-add s 1
Вместо 1 может быть что угодно суть не в этом.
То на экране появляется запрос на ввод FIO
НО когда мы вводим фио и нажимаем ентер то у нас появляются 2 лишние строки с сообщением
Код:
Command is not supported! Put -help to get Help
Откуда????? они там берутся не как немогу догнать.

Вот что выводиться на экран.

Код:
# -add s 1
EnterFIO
asdsad
Enter 5 Values
Command is not supported! Put -help to get Help

# Command is not supported! Put -help to get Help

#
 
Ответить с цитированием

  #537  
Старый 26.12.2007, 13:06
Ky3bMu4
Постоянный
Регистрация: 03.02.2007
Сообщений: 520
Провел на форуме:
1777536

Репутация: 932


Отправить сообщение для Ky3bMu4 с помощью ICQ
По умолчанию

In fuction int command(char *s) :
Код:
while (pch != NULL)
{
...................................
if (!strcmp("s",pch)) 
{
pch = strtok (NULL, " ");
add_stud(pch);
break;
....................................
}
Обрати внимание на break; , он делает выход из твоего цикла while (pch != NULL), а в конце цикла что?
Код:
cout<<"Command is not supported! Put -help to get Help";
return 0;
Сделай вместо break return -1 и всё вроде должно быть норм.
 
Ответить с цитированием

  #538  
Старый 27.12.2007, 08:43
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

Цитата:
Сообщение от iv.  
ПС: перегружать с тем же набором параметров мешает то, что эти операторы у меня сидят в dll и при экспорте компилятор ругается. =\

В общем-то, набор параметров на самом деле особого значения не имеет.
Нельзя менять число аргументов при перегрузке оператора.

Цитата:
Сообщение от ZaCo  
>>Как можно экспортировать оператор?

ну в конечном счете любой перегруженный оператор является функцией, другое дело что не совсем очевидно какое имя будет генерировать компилятор при экспорте..
Скажу сразу - очень извратное

Последний раз редактировалось _Great_; 27.12.2007 в 08:47..
 
Ответить с цитированием

  #539  
Старый 27.12.2007, 23:56
Neovild
Познающий
Регистрация: 18.12.2007
Сообщений: 32
Провел на форуме:
614948

Репутация: 86
По умолчанию

Сейчас на С перехожу. Написал самое простое что есть- Стек написал (не думайте что я в алгоритмах не шарю, кучи Фибоначчи, 3х связные списки и т.д. потом) посмотрите на сами указатели, просто думаю a- массив, int *p=a -коряво или нет?
Код:
#include <stdio.h>
#include <stdlib.h>
void Add(int *a[], int *kol, int el);
int Del(int *a[], int *kol);
void Display(int *a[], int *kol);

void Add(int *a[], int *kol, int el)
{
     int *p=a;
     ++(*kol);
     *(p+*kol)=el;
}
int Del(int *a[], int *kol)
{
    if (*kol<=-1) return 0;
    int *p=a;
    --(*kol);
    *(p+*kol+1)=0;
    return 1;
}
void Display(int *a[], int *kol)
{
     printf("stack:");
     int i;
     for (i=0; i<=*kol; ++i) {
         printf("%i,", a[i]);
         }
     printf("\n");
}
int main(int argc, char *argv[])
{
    int a[100], el=0, kol=-1,i;
    int *p=a;
    while (1) {
          printf("1:add, -1:del, 0:exit. command=");
          scanf("%i",&i);
          if (i==0) break;
          if (i==1) {
                    printf("ELEMENT=");
                    scanf("%i",&el);
                    Add(a,&kol,el);
                    }
          if (i==-1) 
             if (!Del(a,&kol)) exit(1);
          Display(a,&kol);
          }	
  return 0;
}
 
Ответить с цитированием

  #540  
Старый 29.12.2007, 13:03
dinar_007
Флудер
Регистрация: 18.01.2005
Сообщений: 2,298
Провел на форуме:
13936387

Репутация: 1844


Отправить сообщение для dinar_007 с помощью ICQ
По умолчанию

Цитата:
Сообщение от Neovild  
Сейчас на С перехожу. Написал самое простое что есть- Стек написал (не думайте что я в алгоритмах не шарю, кучи Фибоначчи, 3х связные списки и т.д. потом) посмотрите на сами указатели, просто думаю a- массив, int *p=a -коряво или нет?
Код:
#include <stdio.h>
#include <stdlib.h>
void Add(int *a[], int *kol, int el);
int Del(int *a[], int *kol);
void Display(int *a[], int *kol);

void Add(int *a[], int *kol, int el)
{
     int *p=a;
     ++(*kol);
     *(p+*kol)=el;
}
int Del(int *a[], int *kol)
{
    if (*kol<=-1) return 0;
    int *p=a;
    --(*kol);
    *(p+*kol+1)=0;
    return 1;
}
void Display(int *a[], int *kol)
{
     printf("stack:");
     int i;
     for (i=0; i<=*kol; ++i) {
         printf("%i,", a[i]);
         }
     printf("\n");
}
int main(int argc, char *argv[])
{
    int a[100], el=0, kol=-1,i;
    int *p=a;
    while (1) {
          printf("1:add, -1:del, 0:exit. command=");
          scanf("%i",&i);
          if (i==0) break;
          if (i==1) {
                    printf("ELEMENT=");
                    scanf("%i",&el);
                    Add(a,&kol,el);
                    }
          if (i==-1) 
             if (!Del(a,&kol)) exit(1);
          Display(a,&kol);
          }	
  return 0;
}
Честно сказать, не в обиду конечно, но это самый тупой пример работы с указателями который я когда либо видел в жизни, нах... Кучи переменных, которые ты туда сюда тусуешь. Зачем заводить два указателя на один и тот же массив? Под настроение?

Последний раз редактировалось dinar_007; 29.12.2007 в 13:07..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Сценарии/CMF/СMS 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ