2009-02-06 11 views
41

Ich habe diese in echten Code gesehen:Sonderbare Konstanten

#define SCREEN_DIMENSIONS 2 
#define THREE_THOUSAND_FIVE_HUNDRED_TWENTY_TWO 3522 

Was ist das Verrückteste konstant Sie je gesehen haben?

P.S. Und natürlich mein Favorit in JScript:

bool b; 
switch (b.ToString().length) { 
case 4: // true 
    ... 
    break; 
case 5: // false 
    ... 
    break; 
) 
+0

Lustig, aber sollte Gemeinschaft Wiki sein. –

+28

Sie werden nicht so abfällig sein, wenn wir alle 3D-Monitore verwenden, oder? Dieser Typ wird nur seine eine Zeile ändern und neu kompilieren. Jeder andere Code wird massive Änderungen erfordern. :-) – paxdiablo

+6

@pax: Eigentlich sollte diese Konstante mit ihren 1D Monitoren aus den 70ern zurück bleiben. – Quassnoi

Antwort

25
#define private public 
+0

In einigen C++ Unit Tests vielleicht? – Anonymous

+0

+1, wie ich diesen vor mir selbst gesehen habe (und es war nicht in Komponententests, sondern in einem "Fix" für Produktionscode) – andyp

+0

Dies ist mein Trick, um auf private Mitglieder/Methoden zuzugreifen. Einige Klassen-Designer haben einfach zu wenig Design. – vrdhn

26
#define TEN 9 
+1

ist das von jemandem mit einem Problem mit Null-Index-Arrays? – annakata

+2

Ich könnte dafür argumentieren ... aber ich habe nur 229 Zeichen dafür. – gbarry

+0

oh Gott, dieser ist super – Eric

13
#define TRUE 0 
#define FALSE 1 
+0

Ich habe das schon einmal gesehen - was denken diese Leute? – MrTelly

+8

Obligatorisch: #define FILE_NOT_FOUND 2 –

+0

Das macht eigentlich Sinn in C, da es vor C99 keinen booleschen Datentyp gab. Die meisten C-Funktionen geben 0 zurück, wenn alles funktioniert, oder 0, wenn ein Fehler aufgetreten ist. – Randolpho

10

nicht das gleiche, aber ich arbeitete an einem Code-Basis, wobei die Variablen und Etiketten, wo nach Straßen und Pubs in Glasgow genannt. So könnte man Code schreiben wie

Das Code-Layout machte nur Sinn, wenn Sie die Stadt wirklich gut kannte - seltsam.

25
char *myGodItsFullOfStars = "********************************************************************************"; 
+1

Dave ... Dave .... Was machst du Dave? Dave? Unbezahlbar. –

+5

Mein Verstand geht. Ich kann es fühlen. – Randolpho

+1

Daaaaaiiiissyyyyyyy ... – gnovice

8

Von The Daily WTF:

private String paula = "Brillant"; 
+3

Nicht wirklich eine Konstante ... –

+3

Nicht wirklich "Brillant" entweder. –

+0

Sehr lustig, das war der erste TDWTF Artikel, den ich jemals gelesen habe. –

16

Zur Einhaltung Indiana H.B. 246:

#ifdef INDIANA 
const float PI = 3.2; 
#endif 
+4

Ist diese Rechnung nicht fehlgeschlagen? 1897? –

+0

Nein, nein .... PI = 4; :) – garik

2
/** SUBVERSION REVISION OF THE FILE */ 
private String SVN_REVISION = 34234; 

Ich habe immer noch dachte, es nicht aus. Es war in ein paar Dutzend Dateien verstreut und wurde nie benutzt.

+1

Sie vermuten nicht, dass etwas in die Quelldatei geschrieben wurde? – gbarry

+0

Nehmen wir an, Sie haben die Zitate vergessen; Dies ist eindeutig etwas durch ein Skript hinzugefügt. CVS/RCS hatte so etwas, man kann es manchmal sehen, wenn man $ Version $ in eine Datei schreibt, wird diese beim Commit durch die Versionsnummer ersetzt. Es wird nicht vom Code verwendet, aber es wird in die Klassendateien geschrieben und kann von Ausnahmebedingungen oder Debugging-Code verwendet werden, um Stack-Trace mit Versionsinformationen zu generieren. – niXar

1

es nie gesehen, aber wirklich will:

#define MAGIC "more magic" 

Wir haben eine Reihe von Magie #defines hier, die wir als kernal des Lizenzschlüssels verwenden ...

+0

Muss den Link enthalten: http://catb.org/jargon/html/magic-story.html –

31
#define NUMBER_OF_CONSTANTS_NOT_INCLUDING_THIS_ONE 4 
#define NUMBER_OF_CONSTANTS_INCLUDING_THE_LAST_ONE_BUT_NOT_THIS_ONE 5 
+3

+ NUMBER_OF_CONSTANTS_NEEDED_TO_INDICATE_UPVOTE –

+0

Ich ... Ich möchte nicht glauben, dass das tatsächlich existiert. Bitte sag mir, dass du das erfunden hast. –

+1

Kurt Gödel hat das gemacht –

0
#define ADMIN "Admin" 
14
//Thank you Crash Macro!!! 
#define CRASH (*((void*) 0))++ 

Ich habe das in einem Projekt verwendet, wo ich etwas Programmierung mit einem Simulator machte, der keinen Debugger hatte. Es ging ungefähr so:

if(v == SOMETHING_WRONG) 
    CRASH; 

Dann habe ich bei Speicher-Dumps suchen in einem Hex-Editor ein paar Stunden zu verbringen, um herauszufinden, was passiert ist. (auch der Kommentar war obligatorisch).

+0

Ich habe das vor vielen Jahren benutzt, als ich einen Debugger benutzte, der das laufende Programm nicht unterbrechen konnte, um Haltepunkte zu setzen. Ich habe es an einen Menüpunkt angehängt. Um mit dem Debuggen zu beginnen, habe ich die App abgestürzt, bin über die beleidigende Anweisung gestolpert, habe die Breakpoints gesetzt und presto! – gnasher729

7

Von den frühen Tagen des C:

#define PI 3.14159 /* should the value of PI ever change */ 

Ja, ich weiß, dass sie die Konstante gemeint, aber ich frage mich, was für extreme Universum verändernde Verhalten für den tatsächlichen Wert von PI auftreten würde sich ändern müssen .

+0

Vielleicht, wenn neue Rechner erfunden werden, die zeigen, dass unsere Berechnungen falsch waren: P –

+7

Das #define macht Sinn, der Kommentar ist offensichtlich ein Witz. Unter den Leuten, die das tun, werden zum Nachdenken anregende Witze oft als die besten angesehen. –

+0

Vielleicht bei Apple? (siehe: Realitätsverzerrungsfeld) – gbarry

13

Wir beschwerten uns bei einem anderen Programmierer, dass er zu viele "magische Zahlen" in seinem Code habe und dass er sie in Konstanten umwandeln sollte. Wir sollten konkreter sein ...

Private Const MAGIC_NUMBER as Integer = 7; 
0

Funktion Signatur, die wie folgt aussehen:

void FAR PASCAL function()... 

wo:

#define FAR far 
#define PASCAL __stdcall 
3

Dies in einer Anwendung, die viel mit Tonne Angebote/lbs Umwandlungen:

const ONE_TON_IN_LBS = 1999.6 
3

Vom DailyWTF

#define whilst while 

persönlich in Authorware (was erlaubt Leerzeichen in Variablennamen)

booBoolMoveOnIsOn True := 1 
6

Ich bin nicht sicher, ob dies zählt, sondern

#define COMMA , 

Ich kann nicht die Einzelheiten erinnern, aber es war notwendig für die Verschachtelung Vorlage Argumente.

+0

Yep .. MY_MACRO (Std :: Map ) wird nicht korrekt analysiert (der C-Präprozessor ist nicht schlau genug, <> like() oder []) zu behandeln. – eduffy

-1
#define WTF "What the... ?"
7

Hier ist mein persönlicher Favorit Form TDWTF: pascal.h

#define procedure void 
#define then 
#define is 
#define not != 
#define begin { 
#define end } 
13

keine Konstante, sondern in Bezug auf Ihre Maße = 2 Bemerkung: Wenn ich an der UW war, die Man-Page für den Druck-Spooler hatte so etwas wie :

--duplex n Print on this many sides of the page. Acceptable values 
      (until we obtain more versatile printers) are 1 and 2. 
1

ich arbeitete einmal für eine Schultafel als Programmierer von COBOL-Berichte. Um den Desegregationsrichtlinien zu entsprechen, war es notwendig, die Einschreibung und Anwesenheit nach Rasse zu verfolgen. Infolgedessen enthielten viele der Reports Zählimpulse von Kursteilnehmern in den Kategorien Weiß, Schwarzes, Latino, Asiat, amerikanischer Ureinwohner, usw.

Aus irgendeinem Grund dachte ich, daß es amüsant wäre, alle Kategoriennamen zu ihren global zu ändern ... sollen wir Slangäquivalente sagen? ... und dann fragen Sie den Chef nach Hilfe, um ein Counter-Overflow-Problem zu beheben. Diskretion verhindert, dass ich aufschreibe, was die tatsächlichen Namen sind, aber du bekommst den Drift.

Nahm ihm ein paar Minuten zu bemerken. Seine Reaktion war witzig. Verdammt, aber ich wurde gefeuert.

6

Hier ist eine gute, ich erinnere mich an meine letzte Arbeit. Es enthielt die folgenden Kommentare.

'Hard coded to be more dynamic 
Const DYNAMIC_VAL = 1