Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Ist mein Code zu "simple"?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
09.06.2006, 14:34 Uhr
(un)wissender
Niveauwart



C++:
#define ISXDIGIT(a) (((a) >= '0' && (a) <= '9') || ((a) >= 'A' && (a) <= 'F') || ((a) >= 'a' && (a) <= 'f'))



das soll eine Funktion sein?
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
09.06.2006, 14:38 Uhr
ao

(Operator)



Zitat von Helmut:
Es werdend zweimal Zeiger auf const char per Funktionsparameter übergeben und innerhalb der Funktion derefrenziert. Damit arbeiten dann die Preprozessormakros innerhalb der Funktion. Die Berechnungen erfolgen bevor compiliert wird. (= Preprozessor-Metaprogrammierung).Das geht nur wenn die Konstanten echte Konstanten im Sinne von C++ sind. In C kann man Variablen nur das const Attribut geben und es sind immer noch Variablen die im Speicher liegen, worauf der Preprozesseor vor der Compilierung nicht zugreifen kann. In C++ sind es echte Konstanten und der Zugriff vor der Compilierung ist möglich!

Der Preprozessor greift überhaupt nicht auf Variablen zu, der ersetzt nur einen Text (H2B) durch einen anderen (den obenstehenden bedingten Ausdruck). Und das *geht* vor der Kompilierung.

Die Funktion ist eine C-Funktion, weil sie nur Sprachmittel benutzt, die in C definiert sind.

Du kannst es leicht nachprüfen, indem du sie durch einen C-Compiler jagst. Es fehlen nur diese beiden Symbole:

C++:
extern int errno;
#define EILSEQ 1234 /* oder eine beliebige andere Nummer */


dann kompiliert es fehlerfrei.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
09.06.2006, 14:46 Uhr
kronos
Quotenfisch
(Operator)


*plonk*
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
09.06.2006, 21:25 Uhr
FunnyDingo




Zitat von Helmut:
Und bei FunnyDingo hät ich sogar gern gewusst welche Headerdateien
benutzt wurden.


Dem kann ich helfen. Würde mich freuen vielleicht noch den ein oder anderen Verbesserungsvorschlag dazu zu bekommen ;-)

C++:
#ifndef YAC3_NETLIB_H
#define YAC3_NETLIB_H

///////////////////////////////////
//  Include some libs
///////////////////////////////////

#include <netinet/in.h>
#include <sys/socket.h>
#include <unistd.h>
#include <sys/poll.h>
#include <errno.h>
#include <vector>
#include <map>
#include "server.h"  // <- steht nicht viel drin
#include "config.h" // <- steht auch nicht viel drin *g*
#include "../utils/manipulation/string.h" // <- nur ein kleine Ansammlung von Funktionen zur Manipulation von strings wie etwa explode()

///////////////////////////////////
//  Define some constants
///////////////////////////////////

const int NET_BUF_SIZE = 4096;
const std::string HTTP_VERSION = "HTTP/1.1";

///////////////////////////////////
//  Define some structs
///////////////////////////////////

enum http_request_methods {HTTP_METHOD_GET, HTTP_METHOD_POST};

struct http_request {
    int method;
    std::string uri;
    std::string user_agent;
    std::string host;
    unsigned int content_length;
    std::map<std::string, std::string> params;
};

///////////////////////////////////
//  Declare class
///////////////////////////////////

class netlib {
    int socket_id;
    bool run_main_loop;
    
public:
    netlib();
    bool init();
    void server_close();
    void shutdown();
    void server_listen();
    bool parse_http_header(std::string&, struct http_request&);
    std::string default_page(const std::string&, const std::string&);
    std::string create_header(unsigned int);
    void dump_header(struct http_request&);
};

///////////////////////////////////
//  Define some vars
///////////////////////////////////

extern netlib network;

#endif // YAC3_NETLIB_H


Ich habe aufgrund der Länge mal einiges Leerzeilen rausgekickt.

PS: Nicht das es verwirrt. In der Funktion aus meinem Post wurde bei parse_http_header() das Struct http_request noch per Pointer übergeben. Diese mache in nun per Refernce.
--
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)

Meine Website: http://www.funnydingo.de

Dieser Post wurde am 09.06.2006 um 21:27 Uhr von FunnyDingo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: