Hampir di setiap bahasa pemrograman pasti ada yang namanya Escape sequence, yaitu gabungan dari 2 karakter yang dimengerti kompiler sebagai sebuah karakter lain yang tidak bisa kita tuliskan pada saat menuliskan literal string. Contohnya seperti \n
menjadi baris baru, \"
menjadi "
,\t
menjadi tab
, dan masih banyak lagi.
Tapi disini, pada bahasa c ada escape sequence \?
, yang sebenarnya Tanda tanya itu kita bisa tuliskan langsung pada string tanpa menggunakan escape sequence. Ternyata alasannya di bahasa pemrogramman c ada yang namanya Trigraph sequence. Gunanya sama dengan escape sequence akan tetapi disini menggunakan gabungan 3 karakter.
#include <stdio.h>
int main(void){
printf("Suka bahasa C??= \n");
printf("Sekarang sedang belajar bahasa C \n");
return 0;
}
/* Hasil => Suka bahasa C#
* Sekarang sedang belajar bahasa C
*/
Dari contoh diatas adalah contoh menggunakan Trigraph sequence dimana ??=
pada kode, berubah menjadi tanda #
setelah dikompile. Jika menggunakan trigraph sequence, pada saat mengkompile source kode mungkin akan ada promp seperti berikut:
hello.c: In function ‘main’:
hello.c:3:22: warning: trigraph ??! ignored, use -trigraphs to enable [-Wtrigraphs]
printf("Suka bahasa C??! \n");
Disini tidak ada error pada source kode kita, melainkan kompiler menyatakan untuk mengabaikan trigraph sequence yang kita tuliskan. Untuk untuk menyertakan trigraph sequence pada saat mengompile source, maka kita bisa menggunakan opsi -trigraphs seperti yang disebutkan pada promp. Sehingga untuk mengkompile source kodenya menjadi gcc -o hello hello.c -trigraphs
.
Trigraps Sequences
Berikut tabel semua karakter spesial yang diwakili oleh 3 karakter ( trigraph sequences ).
Trigraph | Output Karakter |
---|---|
??= |
# |
??< |
{ |
??> |
} |
??/ |
| |
??’ |
^ |
??( |
[ |
??) |
] |
??! |
| |
??- |
~ |
Saya sendiri kurang tahu apakah trigraph karakter ini tersedia di bahasa pemrograman selain C, karena baru kali ini ada yang namanya trigraph. Kalau ada yang tau dan ga keberatan silakan tulis dikomentar.