2015-01-13 2 views
1

У меня возникли проблемы компиляции простой программы C++ 11 с помощью библиотеки Bluez:Может ли программа C++ 11 использовать BlueZ?

#include <bluetooth/bluetooth.h> 
int main() {} 

Compiling это с g++ -std=c++11 main.cpp на моей Fedora 21 коробки дает:

In file included from ../scale.cpp:1:0: 
/usr/include/bluetooth/bluetooth.h: In function ‘uint64_t bt_get_le64(const void*)’: 
/usr/include/bluetooth/bluetooth.h:177:9: error: expected identifier before ‘*’ token 
    return bt_get_unaligned((const uint64_t *) ptr); 
     ^
... 

Это с BlueZ версией 5.23 и GCC 4.9.2. Все работает, если я удалю флаг -std=c++11.

Это нормально?

+1

попробовать '-std = гну ++ 11' – sjdowling

+1

Там нет GCC 5.9.2 , Он отлично работает на debian с той же версией bluez и gcc-4.9.2. –

+0

Спасибо @sjdowling и @MarcGlisse. Версия GCC исправлена, и '' '-std = gnu ++ 11''' компилируется просто отлично. Однако я не понимаю, почему. –

ответ

2

По умолчанию GCC компилируется в C++ 03 с расширениями GNU. Если вы укажете -std=C++11, тогда он скомпилируется в ISO C++ 11 без активированных расширений. Однако, если вы укажете -std=gnu++11, вместо этого вы также получите расширения GNU.

Смежные вопросы