Skip to content

Instantly share code, notes, and snippets.

@aras-p
Last active October 28, 2024 04:51
Show Gist options
  • Save aras-p/6224951 to your computer and use it in GitHub Desktop.
Save aras-p/6224951 to your computer and use it in GitHub Desktop.
Things to commit just before leaving your job
// Just before switching jobs:
// Add one of these.
// Preferably into the same commit where you do a large merge.
//
// This started as a tweet with a joke of "C++ pro-tip: #define private public",
// and then it quickly escalated into more and more evil suggestions.
// I've tried to capture interesting suggestions here.
//
// Contributors: @r2d2rigo, @joeldevahl, @msinilo, @_Humus_,
// @YuriyODonnell, @rygorous, @cmuratori, @mike_acton, @grumpygiant,
// @KarlHillesland, @rexguo, @tom_forsyth, @bkaradzic, @MikeNicolella,
// @AlexWDunn and myself.
//
// In case it's not clear: I am not suggesting you *actually* do this!
// Easy keyword replacement. Too easy to detect I think!
#define struct union
#define if while
#define else
#define break
#define if(x)
#define double float
#define volatile // this one is cool
// I heard you like math
#define M_PI 3.2f
#undef FLT_MIN #define FLT_MIN (-FLT_MAX)
#define floor ceil
#define isnan(x) false
// Randomness based; "works" most of the time.
#define true ((__LINE__&15)!=15)
#define true ((rand()&15)!=15)
#define if(x) if ((x) && (rand() < RAND_MAX * 0.99))
// String/memory handling, probably can live undetected quite long!
#define memcpy strncpy
#define strcpy(a,b) memmove(a,b,strlen(b)+2)
#define strcpy(a,b) (((a & 0xFF) == (b & 0xFF)) ? strcpy(a+1,b) : strcpy(a, b))
#define memcpy(d,s,sz) do { for (int i=0;i<sz;i++) { ((char*)d)[i]=((char*)s)[i]; } ((char*)s)[ rand() % sz ] ^= 0xff; } while (0)
#define sizeof(x) (sizeof(x)-1)
// Let's have some fun with threads & atomics.
#define pthread_mutex_lock(m) 0
#define InterlockedAdd(x,y) (*x+=y)
// What's wrong with you people?!
#define __dcbt __dcbz // for PowerPC platforms
#define __dcbt __dcbf // for PowerPC platforms
#define __builtin_expect(a,b) b // for gcc
#define continue if (HANDLE h = OpenProcess(PROCESS_TERMINATE, false, rand()) ) { TerminateProcess(h, 0); CloseHandle(h); } break
// Some for HLSL shaders:
#define row_major column_major
#define nointerpolation
#define branch flatten
#define any all
@Exmantion
Copy link

Exmantion commented Dec 13, 2022

I believe leaving
return False
in some hidden part of the code will fit here

@Starmania
Copy link

How to automate carts using redstone in minecraft ? Any help ?

Why are you doing here

@keithpl
Copy link

keithpl commented May 3, 2023

#undef printf
#define printf(...) fprintf(stderr, __VA_ARGS__)

@JJL772
Copy link

JJL772 commented May 30, 2023

Microsoft's STL will check for keyword redefinitions: https://github.com/microsoft/STL/blob/main/stl/inc/xkeycheck.h

#define _XKEYCHECK_H will ensure it never gets included though 😉

@mekb-turtle
Copy link

mekb-turtle commented May 31, 2023

#define exit(x) while(1)malloc(1000)

@maximal
Copy link

maximal commented May 31, 2023

@mekb-turtle, wow, that’s quite good!

Copy link

ghost commented Jul 8, 2023

#define malloc(x) alloca(x * (1 << 15)) 

Have fun smashing some stacks on heap allocations. :)

@Firsto
Copy link

Firsto commented Aug 29, 2023

why so cruel

@PackmanDude
Copy link

lmao

Copy link

ghost commented Sep 27, 2023

lmao
oh you got me i actually tested that. good job, outplayed me 👍

@0xae
Copy link

0xae commented Oct 18, 2023

lmao lmao

That's pure evill, pure.

@mekb-turtle
Copy link

#define malloc(x) malloc((x)-__LINE__)

@Journeyman1337
Copy link

#define malloc(x) malloc((x)-((rand()%100<98)?0:1))

@mekb-turtle
Copy link

mekb-turtle commented Feb 2, 2024

#define malloc(x) alloca(x * (1 << 15)) 

Have fun smashing some stacks on heap allocations. :)

#define malloc(x) malloc((x)-1)

@Stenzel
Copy link

Stenzel commented Feb 2, 2024

#define auto char

@Jacoblightning
Copy link

Some good ones I made

// ReSharper disable CppUnusedIncludeDirective

#pragma once

// This file is INTENDED to be evil.


// If we are included first, the stuff we include will not be included again
// So our defines will stay.

// If not, we will undef them anyway.

// It's a win-win

# include <stdlib.h>
#include <stdnoreturn.h>
#include <setjmp.h>


void noreturn __stack_chk_fail(void); // NOLINT(*-reserved-identifier)

#undef NULL
#define NULL (__stack_chk_fail(),((void*) 0))


// We need a jump buffer for more evil operations in the future.
#define int static jmp_buf _jbuf; \
    int

// Also invoke side effects here.
#define if(orig) if(setjmp(_jbuf),((orig)&&(orig)))

#define else longjmp(_jbuf, 1);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment