Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Проблема с классами, с++
 
Всем привет!
Помогите разобраться плз.

source.c:
Код
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

class myClass {};

int main() {}


serv# cc -o source source.c
source.c:7: error: syntax error before "myClass "
source.c:8: error: syntax error before '{' token
source.c:11: error: syntax error before '}' token


откуда эти ерроры? Помогите разобраться.
ОС FreeBSD.
Заранее спасибо.
Изменено: Максим - 10.02.2009 03:57:51
 
попробуй поменять расширение на "cpp"
 
lw+, а какая разница? Все равно ошибки появляются в тех местах, в которых их вроде бы быть не должно.. И без этого класса все работеат..
Изменено: Максим - 10.02.2009 12:11:09
 
О... Я так понял что *.cpp большую роль играет.... Только вот какую...
Описания фукций не стало... *.h другие теперь подключать нужно?.. Например "inet_ntop" was not declared in this scope
Изменено: Максим - 10.02.2009 12:20:23
 
разница в том что когда расширение С компилятор думает что это файл на языка С(где классов нет), а когда СРР соотвественно на С++. В современном С++ стандартные заголовочные файлы без окончания на Н, а к старым  С библиотеком добавлен префикс с, напрмер  <сstdio>. Причем подключаются они не в глобальную область видимости, а в пространство имен STD, которое можно подключить директивой using.
 
sourced.cpp
Код
include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

using namespace std;

class NC{
public:
   int NPID;
   char NIP[32];
   char NIBUF[1024];
   NC();
};

NodeClient:: NC() {
   NPID = 0;
   memset(&NIP, 0, sizeof(NIP));
   memset(&NIBUF, 0 , sizeof(NIBUF));
}

int main() {
   NC NCLIENT;

   register int SERVER_SOCKET;
   register int CLIENT_SOCKET;

   struct sockaddr_in SERVER_ADDR;
   struct sockaddr_in CLIENT_ADDR;

   socklen_t can;

   int n;

//--

   SERVER_SOCKET = socket(PF_INET, SOCK_STREAM, 0);

   bzero(&SERVER_ADDR, sizeof(SERVER_ADDR));

   SERVER_ADDR.sin_family = AF_INET;
   SERVER_ADDR.sin_port = htons(1185);
   SERVER_ADDR.sin_addr.s_addr = htonl(INADDR_ANY);

bind(SERVER_SOCKET, (struct sockaddr *)&SERVER_ADDR, sizeof SERVER_ADDR);
   listen(SERVER_SOCKET, 10);

   for(;;) {
      can = sizeof(CLIENT_ADDR);
      CLIENT_SOCKET = accept(SERVER_SOCKET, (struct sockaddr *)&CLIENT_ADDR, &can);
      inet_ntop(AF_INET, &CLIENT_ADDR.sin_addr, NCLIENT.NIP, sizeof(NCLIENT.NIP));

      if((NCLIENT.NPID = fork()) == 0) {
         for(;;) {
            memset(&NCLIENT.NIBUF, 0 , sizeof(NCLIENT.NIBUF));
            if((n = recv(CLIENT_SOCKET, NCLIENT.NIBUF, 1024, 0)) == 0) return;
            send(CLIENT_SOCKET, NCLIENT. NIBUF, sizeof(NCLIENT. NIBUF), 0);
         }
      }

      close(CLIENT_SOCKET);
   }

   close(SERVER_SOCKET);
}


server# g++ -o sourced sourced.cpp

sourced.cpp: In function `int main()':
sourced.cpp:72: error: return-statement with no value, in function returning 'int'

Со всем справился а с этим проблема возникла... В переменной n должно же быть целое число! Почему ошибка?
 
Нужно поставить return целочисленое_значение, например return 0;
Страницы: 1
Читают тему