SDCPP(1)

πŸ’– SDCPP β€” bestie's guide to the C preprocessor for SDCC πŸ’–

okay so this is the SDCPP(1) page from the General Commands Manual, and it's lowkey one of those pages that's like, tiny but also doing a LOT. grab a snack, we're getting into it ✨


🌸 NAME 🌸

sdcpp β€” C preprocessor for SDCC


πŸŽ€ SYNOPSIS πŸŽ€

sdcppold [options] filename

(not me copying that exactly, yes the synopsis literally says sdcppold, that's what's on the page, i don't make the rules 🫢)


πŸ’… DESCRIPTION πŸ’…

So this manual page documents, briefly, the sdccp command. And like β€” girliepop transparency moment β€” this page was written for the Debian GNU/Linux distribution because the original program doesn't have a manual page at all. πŸ™ˆ Instead, you can read the documentation in /usr/share/doc/sdcc-doc.

And what even is SDCC? It's a Freeware, retargettable, optimizing ANSI-C compiler designed for 8 bit Microprocessors. yes. iconic behaviour. πŸ’œ


✨ OPTIONS ✨

okay this is the main character section, buckle up, there's like 64 of these and we're doing ALL of them, no skipping, we don't do that here πŸ’–

  • -include <file> β€” pulls in the contents of <file> before any other files. like a lil pre-game πŸŽ€
  • -imacros <file> β€” accepts the definition of macros found in <file>.
  • -iprefix <path> β€” sets <path> as a prefix for the next two options. yes, the next two. look ahead, bestie πŸ‘€
  • -iwithprefix <dir> β€” adds <dir> to the end of the system include path.
  • -iwithprefixbefore <dir> β€” adds <dir> to the end of the main include path.
  • -isystem <dir> β€” adds <dir> to the start of the system include path.
  • -idirafter <dir> β€” adds <dir> to the end of the system include path.
  • -I <dir> β€” adds <dir> to the end of the main include path.
  • -I- β€” fine-grained include path control; see the info docs for the deets.
  • -nostdinc β€” do NOT search system include directories. (heads up: dirs specified with -isystem will still be used, so it's not a total lockdown πŸ’€)
  • -nostdinc++ β€” do not search system include directories for C++.
  • -o <file> β€” puts the output into <file>.
  • -pedantic β€” issues all warnings demanded by strict ISO C. strict queen energy πŸ‘‘
  • -pedantic-errors β€” issues -pedantic warnings as errors instead. yeah. it's giving consequences.
  • -trigraphs β€” support ISO C trigraphs.
  • -lang-c β€” assumes the input sources are in C.
  • -lang-c89 β€” assumes the input sources are in C89.
  • -lang-c++ β€” assumes the input sources are in C++.
  • -lang-objc β€” assumes the input sources are in ObjectiveC.
  • -lang-objc++ β€” assumes the input sources are in ObjectiveC++.
  • -lang-asm β€” assumes the input sources are in assembler.
  • -std=<std name> β€” specifies the conformance standard. one of: gnu89, gnu99, c89, c99, iso9899:1990, iso9899:199409, iso9899:1999. pick your fighter ⭐
  • -+ β€” allows parsing of C++ style features.
  • -w β€” inhibits warning messages. silence. peace. πŸ¦‹
  • -Wtrigraphs β€” warns if trigraphs are encountered.
  • -Wno-trigraphs β€” does not warn about trigraphs.
  • -Wcomment{s} β€” warns if one comment starts inside another.
  • -Wno-comment{s} β€” does not warn about comments.
  • -Wtraditional β€” warns about features not present in traditional C;
  • -Wno-traditional β€” does not warn about traditional C;
  • -Wundef β€” warns if an undefined macro is used by #if.
  • -Wno-undef β€” does not warn about testing undefined macros.
  • -Wimport β€” warns about the use of the #import directive.
  • -Wno-import β€” does not warn about the use of #import.
  • -Werror β€” treats all warnings as errors. every lil warning is a whole situation now 😭
  • -Wno-error β€” does not treat warnings as errors.
  • -Wsystem-headers β€” does not suppress warnings from system headers.
  • -Wno-system-headers β€” suppresses warnings from system headers.
  • -Wall β€” enables all preprocessor warnings. the full lineup, the whole ensemble ✨
  • -M β€” generates make dependencies.
  • -MM β€” same as -M, but ignores system header files.
  • -MF <file> β€” writes dependency output to the given file.
  • -MG β€” treats missing header files as generated files.
  • -MP β€” generates phony targets for all headers.
  • -MQ <target> β€” adds a MAKE-quoted target.
  • -MT <target> β€” adds an unquoted target.
  • -D<macro> β€” defines a <macro> with the string '1' as its value.
  • -D<macro>=<val> β€” defines a <macro> with <val> as its value.
  • -A<question> (<answer>) β€” asserts the <answer> to <question>.
  • -A-<question> (<answer>) β€” disables <answer> to <question>.
  • -U<macro> β€” undefines <macro>.
  • -H β€” prints the name of header files as they are used.
  • -C β€” does not discard comments. keep the receipts πŸ“
  • -dM β€” displays a list of macro definitions active at end.
  • -dD β€” preserves macro definitions in the output.
  • -dN β€” same as -dD, except that only the names are preserved.
  • -dI β€” includes #include directives in the output.
  • -fpreprocessed β€” treats the input file as already preprocessed.
  • -ftabstop=<number> β€” distance between tab stops for column reporting.
  • -P β€” does not generate #line directives.
  • -$ β€” does not allow '$' in identifiers.
  • -remap β€” remaps file names when including files.
  • -v or --version β€” displays the version number.
  • -h or --help β€” shows a summary of options.

🫢 AUTHOR 🫢

This manual page was written by Aurelien Jarno <aurel32@debian.org>, for the Debian GNU/Linux system β€” but it may be used by others. (shoutout to Aurelien, thank you for your service, we love a documented command πŸ₯ΉπŸ’–)


and that's the whole page bestie!! you read all 64 options, i'm so proud of you fr fr πŸŒˆπŸ’…

🌸 signing off: this was the SDCPP(1) page, from the General Commands Manual β€” and if you were wondering about a date or a version number in the footer, the page as written only gives us SDCPP(1), so that's all we got. no cap. πŸ’œ

go forth and preprocess something iconic βœ¨πŸ¦‹πŸŽ€