2013-04-07 2 views
1

Я постоянно получаю исключение при попытке скомпилировать мой C++ код на сервере Unix, но эти строки просто:Любые идеи о том, как исправить эту ошибку?

#ifndef WEIGHTED_GRAPH_H 
#endif 

и ошибка:

In file included from Weighted_graph_tester.h:17, 
        from Weighted_graph_driver.cpp:18: 
    Weighted_graph.h:1: error: stray â\357â in program 
    Weighted_graph.h:1: error: stray â\273â in program 
    Weighted_graph.h:1: error: stray â\277â in program 
    Weighted_graph.h:1: error: stray â#â in program 
    In file included from Weighted_graph_tester.h:17, 
        from Weighted_graph_driver.cpp:18: 
    Weighted_graph.h:172:2: error: #endif without #if 
    Weighted_graph.h:1: error: âifndefâ does not name a type 

Любые идеи?

+0

У вас, вероятно, есть некоторые странные символы в исходном коде. Попробуйте просмотреть его в hex-viewer ... –

ответ

6

Это говорит вам, что у вас есть следующие байты в файле:

Oct: 357 273 277 
Hex: EF BB BF 

Это в UTF-8 кодированных файлы, byte order mark. Очевидно, что ваш компилятор не поддерживает исходные файлы UTF-8 с отметкой порядка байтов в начале их. На самом деле даже нет смысла иметь знак байтового байта в файле UTF-8, так как любое отдельное устройство является только байтом в размере. Вы должны убедиться, что сохраните файл без него.

от стандарта Unicode:

Использование BOM не требуется и ни рекомендуется для UTF-8, но могут возникнуть в контекстах, где UTF-8, данные преобразуются из других форм кодирования, которые используют спецификацию или где спецификация используется как подпись UTF-8.

+0

Yup. Именно так, я переместил код в новый файл и исправил проблемы. Спасибо :) Дает вам чек, как только он позволит мне – Dylan

+0

@ user2036348 Спасибо. Рад, что это помогло. –

+0

Спецификация UTF-8 идентифицирует файл как UTF-8. Но это не очень хорошая причина для его использования. Он ломает слишком много полезных характеристик файлов UTF-8, что затрудняет объединение файлов или их извлечение. –