schrecklichen Code basteln
-
Ich möchte mal einen schrecklichen Code basteln(am besten mit euch zusammen) Mein Anfang:
#include <iostream.h> using namespace std; int main(){ a: int i = 4; ::std::cout << i++ << i << --i << ++i; int o = 0; int d; try{ if(o == 0){ goto a; throw string(""); } d = i / o; } catch(string error0){ ::std::cout << "div / 0"; } char *ptr = 0; char& rc = *ptr; system("pause"); }
-
ich würde es noch um soetwas ergänzen:
typedef int myString; //keine verwechslungsgefahr ;) myString doubleVar = 0 //und klare anwendung ;)
-
Soweit bin ich nun:
#include <iostream.h> using namespace std; typedef int myString; class AB{ int a; int b; }; class CD : public AB{ int c; int d; AB a; }; void deleteCD(AB array[]){ delete [] array; } void main(){ myString doubleVar = 0; a: CD * a = new CD[5]; deleteCD(a); int i = 4; ::std::cout << i++ << i << --i << ++i; int o = 0; int d; try{ if(o == 0){ goto a; throw string(""); } d = i / o; } catch(string error0){ ::std::cout << "div / 0"; } char *ptr = 0; char& rc = *ptr; system("pause"); }
-
Fast alle Variablen global anlegen und noch ein paar gleichnamige in der main()-Funktion (die sollte natürlich void main() heißen) und ab und zu auch die globalen Variablen per Globalzugriff (::) ändern.
-
So (::), kein Smiley!
-
Ich mach 'mal sowas:
#include <io.h> char *p = "Gcihj&\x19OfhaX\x14\xfc", f = 1, c = *p + f; int main( ) { if( *p ) { write( 2 + f - ++f, &c, f - f + 1 ); c = *( ++p ) + f; return main( ); } }Hand auf's Herz: Wer schaffts ohne Compiler?

Greetz, Swordfish
-
Hallo,
Nicht schlecht. Der Thread sollte zur Abschreckung in die FAQ
MFG winexec*
-
Swordfish schrieb:
[...]
Hand auf's Herz: Wer schaffts ohne Compiler?
[...]"Stack overflow!"
€ Mist, doch net. Habs gerade getestet mitm bcc32:
Konsole schrieb:
Borland C++ 5.6.4 für Win32 Copyright (c) 1993, 2002 Borland
main.cpp:
Fehler E2120 main.cpp 9: 'main' darf nicht vom Programm aus aufgerufen werden in
Funktion main()
*** 1 Fehler bei der Compilierung ***€2 Sogar in einer extra Funktion gibts kein Stack overflow...
-
Beliah schrieb:
"Stack overflow!"
Wie kommst darauf?
Beliah's Konsole schrieb:
Fehler E2120 main.cpp 9: 'main' darf nicht vom Programm aus aufgerufen werden in Funktion main()
Ahhrrgg!!

stimmt:
ISO/IEC 14882:1998 schrieb:
3.6.1.3:
The function main shall not be used (3.2) within a program.na dann halt so (ist aber dann nicht mehr so schön):
#include <io.h> char *p = "Gcihj&\x19OfhaX\x14\xfc", f = 1, c = *p + f; int main( ) { while( *p ) { write( 2 + f - ++f, &c, f - f + 1 ); c = *( ++p ) + f; } }Greetz, Swordfish
-
also als grundlage erstmal
#define true false #define false true
-
Swordfish schrieb:
Beliah schrieb:
"Stack overflow!"
Wie kommst darauf?
[...]Hab mir den Code nicht genau angesehen und nicht bemerkt das p verändert wurde. Dann wäre das nämlich gekommen...
Übrigens gehts auch so, dann wieder mit rekursion:
#include <io.h> char *p = "Gcihj&\x19OfhaX\x14\xfc", f = 1, c = *p + f; int test( ) { if( *p ) { write( 2 + f - ++f, &c, f - f + 1 ); c = *( ++p ) + f; return test( ); } } int main( ) { return test( ); }
-
@claudia2:
root@SUN //D/root/projects/_Visual Studio/codefun$ less test.cpp #define true false #define false true int main( ) { bool _true = true; bool _false = false; } root@SUN //D/root/projects/_Visual Studio/codefun$ cpp test.cpp # 1 "test.cpp" int main( ) { bool _true = true ; bool _false = false ; } root@SUN //D/root/projects/_Visual Studio/codefun$Greetz, Swordfish
-
true und false sind keywords, die darf man nicht definen.
-
#define private publicnicht vergessen ^^
-
:schland::schland::schland::schland::schland:
cout << "GER pwnz ITA":schland::schland::schland::schland::schland:
-
Jester schrieb:
true und false sind keywords, die darf man nicht definen.
Wieso?
-
Und:
#define private public
Das darf in keinem Programm fehlen!

Edit: arg, zu spät!

grüße
-
Better C(++) sollte man auch noch benutzen:
http://thedailywtf.com/forums/thread/60528.aspx
/* * BETTER_C.H * Language refinements for C. */ #ifndef BETTER_C_H #define BETTER_C_H /* logical/comparison operators */ #define NE != #define EQ == #define GT > #define LT < #define GE >= #define LE <= #define AND && #define OR || #define NOT ! /* bitwise operators */ #define bNOT ~ #define bAND & #define bOR | #define bXOR ^ /* arithmetic operators */ #define MOD % /* control constructs */ #define repeat do #define until(p) while(NOT (p)) #define forever while(1) #define untilbreak forever #define untilreturn forever #define unless(p) if(NOT (p)) #define ifnot(p) if(NOT (p)) #define do_nothing #define then ... #endif
-
Inline-Assembler sollte auf keinen Fall fehlen ...
#include <iostream> #define wr short int #define _unsigned_ 4711 #define ping (char) #define bz != 0x21 main(){ wr cisc[] = {0x20,0x72,0x64,0x6b,0x74,0x71,0x1f,0x74,0x68,0x59}, fx, i=_unsigned_; do{ wr m = cisc[(_unsigned_ + 2*25/5)-i++-1]; __asm mov ax, m __asm add ax, 1 __asm mov fx, ax std::cout << ping fx; } while(fx bz); }
-
So im Netz gefunden:
http://www.mitp.de/imperia/md/content/vmi/29842/2.pdf
Wobei das schon sehr rauhe, radikale Methoden sind...