Wiadomo, że komentarze oprócz opisywania kodu źródłowego może służyć do włączania lub wyłączania fragmentów kodu z działania, z tego się wzięły słowa "zakomentować" i "odkomentować".
We wszystkich językach wywodzących się z C (C, C++, Java, PHP, JavaScript) jest komentarz blokowy zaczynający się od /* i kończący się na */, za pomocą którego można łatwo wyłączyć dłuższy fragment kodu.
Zadziwia mnie fakt, że autorzy większości kompilatorów i IDE nie potrafią sobie poradzić z bardzo prostym problemem, jakim jest komentarz zagnieżdżony. Chodzi o to, że jest jakiś kod z komentarzem blokowym i chce się go wyłączyć w całości. Najprostsza czynność to dopisanie /* na początku i / na końcu. Niestety, kompilator jest tak zrobiony, że po znaku / ignoruje tekst i napotkane dalsze znaki /*, a przy pierwszym */ kończy ignorancję i komentarz od pierwszego */ do drugiego */ niestety jest ignorowany. Pół biedy, jeżeli IDE ma funkcję dodawania i usuwania // we wszystkich zaznaczonych liniach naraz, jeżeli tego nie ma, to wyłączenie na próbę czy na krótko większego kawałka kodu składającego się z co najmniej 20 linii jest problematyczne.
Np. ten problem dotyczy Visual Studio i Qt Creatora. Natomiast darmowy kompilator SDCC ma ten problem rozwiązany i radzi sobie z tym bez najmniejszego problemu. Dziwi fakt, że w środowiskach które mają ponad 10 lat i zarabiają duże pieniądze, problem nadal występuje, natomiast proste kompilatory rozprowadzane za darmo mogą mieć ten problem rozwiązany. Usunąć komentarze to algorytmicznie żaden problem (proste operacje na tekście), potem kod ogołocony z komentarzy trafiałby do właściwej kompilacji.
Ciekawe, co jest przyczyną pozostawiania problemu komentarzy blokowych.
a - Kod źródlowy
/*
b - Komentarz
/*
c - Komentarz
*/
d - To jest komentarz, ale dla kompilatora z opisanym błędem jest to niesłusznie kod źródłowy
*/
e - Kod źródlowy