2012-05-29 3 views
1

Возможные Дублировать:
What is __gxx_personality_v0 for?неопределенная ссылка на `__gxx_personality_v0' с GCC

Я видел этот вопрос, циркулирующего вокруг здесь в контексте компиляции C++ кода. Однако я должен составить чистый код C и продолжать получать эту ошибку. Мне запрещено использовать «-lstdC++» в качестве обходного пути к этой проблеме gcc. Как изменить мой код, чтобы заставить его работать и почему эта ошибка появляется?

Мой упрощенный код:

//this is main.cpp 
#include <stdio.h> 
int main() 
{ 
    char ch[3]; 
    ch[0] = getc(stdin); 
    ch[1] = getc(stdin); 
    ch[2] = '\0'; 
    printf("%s\n", ch); 
    return 0; 
} 

Моя команда компиляции является:

gcc main.cpp 
+0

Пожалуйста, вставьте свою командную строку компилятора/линкера? – razlebe

+0

@ugoren plese читать крупно. Это не дубликат. Я касается кода C, а не C++, как я уже говорил выше. Кроме того, я спрашиваю, как переписать код, чтобы избавиться от ошибки, а не какие параметры компиляции добавить! –

+1

@anonymous_infoholic: тогда ответьте на вопрос маверика. Вы все еще называете его '.cpp', который может отбросить некоторые инструменты на бэкэнд. – 0xC0000022L

ответ

10

Используйте либо g++ - поскольку файл суффикс .cpp или переименовать файл .c и сохранить командную строку, как есть. Протестировано на Debian 6.0.5 с помощью gcc 4.4.5.

0

людей НКА говорит:

C++ исходных файлов обычно используют один из суффиксов .c,. cc, .cpp, .CPP, .C++, .cp, или .cxx; Файлы заголовков C++ часто используют .hh, .hpp, .H или (для общего кода шаблона) .tcc; и предварительно обработанные файлы C++ используют суффикс .ii. GCC распознает файлы с этими именами, а компилирует их как программы на C++, даже если вы вызываете компилятор так же, как для , компилируя программы на C (обычно с именем gcc).