Nechápu, co za lopaty sem píše. Taková věc jde samozřejmě bez problému udělat a kdybyste byli špičkoví konzultanti, tak na to máte taky:. Stačí si povšimnout, že Bash má komentáře #, zatímco v C se # dá použít pro #define. A naopak // a /* */ projdou v Bashi, pokud okolo dáme #.
/tmp> cat polyglot.c
#include <nsautil.h>
#define FOO BAR
int abc = 5;
static float pi = 3.14;
main() {
printf /* # */ ("hello world, %i, %f\n", abc, pi);
}
funkce_pro_bash() {
#define nic nic1 /*
echo Toto je funkce pro bash.
# normálně tu můžeme používat komentáře
# třeba uděláme cyklus
grep ^processor /proc/cpuinfo | while read line; do
echo $line | tr a-z A-Z
done # */
return 0;
}
/tmp> . polyglot.c
int: bablbam
static: bablbam
/tmp> funkce_pro_bash
Toto je funkce pro bash.
PROCESSOR : 0
PROCESSOR : 1
/tmp> jcc polyglot.c
polyglot.c:9:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
main() {
^~~~
polyglot.c:13:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
funkce_pro_bash() {
^~~~~~~~~~~~~~~
/tmp> ./polyglot
hello world, 5, 3.140000