Я читал ISO 14882: 2003. Это говорит:
с-символ:
любой элемент исходного набора символов, кроме двойной кавычки ", обратной косой черты \ или символа новой строки
избежать последовательности
универсальное имя персонажа
Теперь, что касается символа новой строки, я вижу проблему, когда окончание строки равно '\ r'
Я написал небольшую программу cpp:
#include <fstream>
#include <string>
int main()
{
const char* program=""
"#include <string>\n"
"int main()\n"
"{\n"
" std::string s;\n"
" //s=\"\r"
" //\r"
" //\r"
" //\r"
" //\";\n"
" s=\"\\xAE\\xfffactory\\xAE\\xffaction\";\n"
" return 0;\n"
"}\n"
;
std::ofstream file("file.cpp", std::ios_base::trunc);
file << program;
file.close();
return 0;
}
В Windows file.cpp (как читается в редакторе VS):
#include <string>
int main()
{
std::string s;
//s="
//
//
//
//";
s="\xAE\xfffactory\xAE\xffaction";
return 0;
}
При компиляции file.cpp, триггеры VS и ошибка в строке 6 вместо строки 10.
В Linux file.cpp (как читается в emacs):
#include <string>
int main()
{
std::string s;
//s="^M //^M //^M //^M //";
s="\xAE\xfffactory\xAE\xffaction";
return 0;
}
Компиляция file.cpp с помощью gcc Я получаю сообщение об ошибке в строке 10, а не в строке 6.
Что я должен из этого сделать?