Someone recently sent me a couple of .cpp
source code files. On opening the files with GNU Emacs or GVIM, I found them to have a weird character ^M
near the ending of every line.
Here is a screenshot showing what I mean
When I open these same source files with Gedit, I do not see these ^M
characters. What should I do? There are many files in question here, so opening and doing a search-replace operation by replaceing with an empty string looks like a back-breaking operation.
Strangely enough these files compile cleanly when I compile with GCC. What is going on here. What should I do?
Answer
In Unix, the new line character is \n
and whereas in Windows it is \r\n
. \r
or ^M
is the carriage-return character.
If the file is written in an editor in windows mode, each new line character will have a carriage return character along. If you tell your editor (and if it understands) to treat the new line characters as in windows, you would not see the ^M
characters any more.
Alternately, you can run dos2unix
on your codebase to fix this problem.
And as you have rightly observed, you would not see any problems in compiling because that is not any extra special character in the code but just a mismatch between newline character interpretation in windows and linux.
No comments:
Post a Comment