ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 22.07.2007, 23:23
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
С нами: 11042306

Репутация: 2726


По умолчанию

> Если не находит локально - то будет искать в стандартных.

ок. и это типа поможет если #include <iostream.h> не помогает?)
 
Ответить с цитированием

  #2  
Старый 24.07.2007, 20:55
tclover
Banned
Регистрация: 13.12.2005
Сообщений: 1,091
С нами: 10741286

Репутация: 1847


По умолчанию

У меня вопрос вообщем =\
Что значит extern "C"? То есть даже не совсем "что значит", так как я понимаю приблизительно это, а вот в каких случаях это применять?
Например вот кусочек из программы: extern "C" HWND WINAPI GetConsoleWindow();
То есть таким образом, я указываю компилятору что данная ф-ция откуда-то экспортируется? (откуда?)
И вот я не понимаю ещё, как мне узнать в каком случае нужно писать extern "C", а в каком нет?
 
Ответить с цитированием

  #3  
Старый 24.07.2007, 20:58
nerezus
Флудер
Регистрация: 12.08.2004
Сообщений: 3,793
С нами: 11444066

Репутация: 2290


По умолчанию

Цитата:
Сообщение от tclover  
У меня вопрос вообщем =\
Что значит extern "C"? То есть даже не совсем "что значит", так как я понимаю приблизительно это, а вот в каких случаях это применять?
Например вот кусочек из программы: extern "C" HWND WINAPI GetConsoleWindow();
То есть таким образом, я указываю компилятору что данная ф-ция откуда-то экспортируется? (откуда?)
И вот я не понимаю ещё, как мне узнать в каком случае нужно писать extern "C", а в каком нет?
когда юзаешь чужие сишные либы(типа lua) - то инклюдь их внутрь этого блока.
 
Ответить с цитированием

  #4  
Старый 24.07.2007, 22:17
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
С нами: 10721066

Репутация: 4360


По умолчанию

extern "C" говорит компилятору, что функцию нужно манглить по правилам Си, а не по правилам С++. Может использоваться и для импорта, и для экспорта.
 
Ответить с цитированием

  #5  
Старый 24.07.2007, 23:28
Aag
Познающий
Регистрация: 26.07.2005
Сообщений: 54
С нами: 10942709

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

При компоновке программы с подключением модулей скомпилированных с-компилятором надо дабавлять extern "C", поскольку с++-компилятор, используя имя функции данное человеком, генерирует своё уникальное имя. Линковщик компонуя объектные файлы (библиотеки, dll-ки ...), полученные разными компиляторами просто не обнаружит необходимой функции. Такая ситуация может возникнуть при использовании сторонних библиотек, dll, объектных файлов. А какже при использовании в своем проекте файлов с разными расширениями *.c или *.cpp, поскольку компилятор обращает внимание на раширение файла.
 
Ответить с цитированием

  #6  
Старый 25.07.2007, 22:17
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
С нами: 10370602

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

sys64, использовать функции WinApi, документации хватает.
 
Ответить с цитированием

  #7  
Старый 01.08.2007, 14:40
X-lord
Banned
Регистрация: 16.12.2006
Сообщений: 27
С нами: 10211153

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

qwerty qwerty qwerty

проверка =)
 
Ответить с цитированием

  #8  
Старый 01.08.2007, 14:51
X-lord
Banned
Регистрация: 16.12.2006
Сообщений: 27
С нами: 10211153

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

переполз с дельфи на си...
в качестве первого проекта выбрал "remot acces system" =)
интересно ваше мнение, что можно зделать лучше? как будет быстрее? как будет грамотней с точки зрения си программиста? и пожалуйста почему?(обязательно)

+ предложившему что-то дельное.

Код:
//main module

#include "NetFunc.h"
#include <windows.h>  
#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/FILEALIGN:512   /SECTION:.text, EWRX /IGNORE:4078") 
#pragma comment(linker,"/ENTRY:WinMain")
int StartSession(SOCKET,SOCKADDR_IN);



void ErrorFunc(int Fr)
{
MessageBox(0,"1111","1111",1);
}


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) 
{


char chA=0;
int iReset=0;
int iOff=0;

while(!iOff)//Main loop
{
WSADATA sWsaData;
SOCKET hLSock;
long host=INADDR_ANY;
short port=6677;

  if(WSAStartup(MAKEWORD(2,0),&sWsaData)!=SOCKET_ERROR)
  {
  hLSock = socket(AF_INET,SOCK_STREAM,0);
    if(hLSock!=INVALID_SOCKET)
	{
    SOCKADDR_IN addr_Sock; 
    addr_Sock.sin_family = AF_INET; 
    addr_Sock.sin_addr.s_addr = htonl(INADDR_ANY); 
    addr_Sock.sin_port = htons(port);
      if(bind(hLSock,(LPSOCKADDR)&addr_Sock,sizeof(addr_Sock))!=SOCKET_ERROR)
	  {	
        if (listen(hLSock,1)!=SOCKET_ERROR)
		{
          while(!iReset)//Accept loop
		  { 
          int size=sizeof(addr_Sock);
          SOCKET hWSock= accept(hLSock,(LPSOCKADDR)&addr_Sock,&size);
	        if(hWSock!=INVALID_SOCKET)
			{
            int i=StartSession(hWSock,addr_Sock);
            if(!i)iReset=1; 
			if(i<0) iOff=1;

            }
			else//accept
			{
            ErrorFunc(5);
 			}
          shutdown(hWSock,0);
	      closesocket(hWSock);
		  }//Accept loop
  		}
        else//listen
		{
	    ErrorFunc(4);
		}
      }
      else//bind
	  {
      ErrorFunc(3);
	  }
    shutdown(hLSock,1);
    closesocket(hLSock); 
	}
    else//Creat listen sock
	{
    ErrorFunc(2);
	}
  WSACleanup();
  }
  else//WSAStartup
  {
  ErrorFunc(1);
  }
Sleep(2000);
}//Main loop



return 0;
}
Код:
//NetFunc.cpp
#include <winsock2.h>

#define     SOCK_TOUT 5000000;  

/////////////////////////////////////////////Send data
int SendData(SOCKET hSock, char *pBuffer, int len)
{
/////Encrypt



/////
int ts=0;
int ss=0;
timeval SendTimeout;
fd_set fds;
FD_ZERO(&fds);  
FD_SET(hSock, &fds);
SendTimeout.tv_sec=0;
SendTimeout.tv_usec=SOCK_TOUT;              
  while(len > 0)
  {
    ts = select(0, NULL, &fds, NULL, &SendTimeout);
    if(!ts) return -1;//time out
    if(ts < 0) return -2;//sel error
    ss = send(hSock, pBuffer, len, 0);   
    if(ss < 0)
      return -3;//send error
    else
    {
     len -= ss;
     pBuffer += ss;
    }
  }
return 0;//ok  
}
////////////////////////////////////////////Recv data
int RecvData(SOCKET hSock, char *pBuffer, int len)
{
int ts=0;
int rs=0;
timeval ReceiveTimeout;
fd_set fds;
FD_ZERO(&fds);  
FD_SET(hSock, &fds);
ReceiveTimeout.tv_sec  = 0;
ReceiveTimeout.tv_usec = SOCK_TOUT;
  while(len > 0)
  {
    ts = select(0, &fds, NULL, NULL, &ReceiveTimeout);
    if(!ts) return -1;//time out
    if(ts<0) return -2;//sel error
    rs = recv(hSock, pBuffer, len, 0);
    if(rs < 0)
    {        
      return -3;//recv error
    }
    else
    {
      len -= rs;
      pBuffer += rs;
    }
  }
/////Decrypt



/////
return 0;//ok  
}

////////////////////////////////////////////
Код:
//executer.cpp
#include "NetFunc.h"
#include <windows.h>
int StartSession(SOCKET hSock,SOCKADDR_IN addr_Sock)
{
char Buff[4];
char szCom[3];
char szSubCom[3];
//ident

//logon

//exec. comands
  while(1)
  {
    if (recv(hSock,&Buff[0],sizeof(Buff[0]),MSG_PEEK)<=0) return WSAGetLastError();
    if (RecvData(hSock,&Buff[0],sizeof(Buff))!=0) return WSAGetLastError();
  //analyze comand
      for(int i=0;sizeof(Buff)-1;i++)
	  {
      if(i<2)szCom[i]=Buff[i];
      else szSubCom[i-2]=Buff[i];  
	  }
      szCom[3]=0;
	  szSubCom[3]=0;
    switch(atoi(szCom))
	{
    case 0:break;
	case 1:break;
    case 2:break;
    default: return 1;
	}

  //analyze comand
    if (SendData(hSock,&Buff[0],sizeof(Buff))!=0) return WSAGetLastError();
  }

return 0;
}

Последний раз редактировалось X-lord; 01.08.2007 в 15:28..
 
Ответить с цитированием

  #9  
Старый 01.08.2007, 14:59
X-lord
Banned
Регистрация: 16.12.2006
Сообщений: 27
С нами: 10211153

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

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

  #10  
Старый 01.08.2007, 15:13
Piflit
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
С нами: 10393869

Репутация: 2032


По умолчанию

Цитата:
Сообщение от X-lord  
сорри за флуд... какой тег исп. для оформления кода?
[C0DE]...[/C0DE] вместо 0 = O
 
Ответить с цитированием
Ответ



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



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


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




ANTICHAT ™ © 2001- Antichat Kft.