在C和C++编程语言中,使用尖括号和在include语句中使用引号有什么区别,如下所示?
#include <filename> #include "filename"我正在尝试在我的Linux机器上使用GATT来设置具有大量特征的自定义服务.
使用这个问题及其链接的问题,我能够识别出我需要编写的代码(利用该gatt_service_add()函数).
我创建了一个名为gatt_service.c的独立文件,并编写了我认为我需要的代码.但是,我无法弄清楚如何将我的代码链接到Bluez库以编译和运行我的解决方案.例如,这个站点(虽然不是用于BLE开发)使用-lbluetoothgcc参数链接libbluetooth ,我无法找出链接的内容以使我的代码工作.
我没有发布任何样品,因为我不确定要发布什么 - 如果有任何要求,或者我没有提及,请告诉我.
提前致谢.
编辑 - 更多信息:
在评论之后,我使用插件/时间作为基础为我自己的"Broadcaster服务"编写我自己的文件.完整代码位于:这里(我不知道在答案中放置哪些代码!).
我的编译命令是:( gcc gatt_broadcaster_service.c -Wall -o gatt_broadcaster_service -lbluetooth 'pkg-config --cflags --libs glib-2.0' -I/home/alexander/Documents/bluez-5.29/lib包括修复此处报告的问题的glib位).
我得到的错误是:gatt_broadcaster_service.c:11:27:致命错误:lib/bluetooth.h:没有这样的文件或目录#include"lib/bluetooth.h"
我的C文件存储在Documents中,我的研究告诉我它找不到lib/bluetooth.h,因为它没有找到正确的位置(这和这个谈论在文件不是时使用包含标志的编译器在一般的位置,但我无法做到这一点.
再次感谢!
我正在尝试使用makefile设置一个构建过程,用于我正在处理的C++插件.我很想知道是否有办法在另一个目录中找到g ++编译源文件.我这样做的动机是避免必须为每个源文件指定相对路径,如下所述.
我的项目目录结构如下:
MyPlugin --> src --> Foo.cpp
--> Foo.h
--> Bar.cpp
--> Bar.cpp
--> build --> Makefile
Run Code Online (Sandbox Code Playgroud)
以下是我当前Makefile的精简版:
SRC_PATH=../src
OUT_PATH=../bin
VPATH=${SRC_PATH}
FILES=Foo.cpp Bar.cpp
CC=g++
CFLAGS=-Wall -shared
all:
mkdir -p ${OUT_PATH}
${CC} ${CFLAGS} -I${SRC_PATH} ${FILES} -o ${OUT_PATH}/MyPlugin.so
Run Code Online (Sandbox Code Playgroud)
通过这样做,我试图避免定义FILES变量如下:
FILES=../src/Foo.cpp ../src/Bar.cpp
Run Code Online (Sandbox Code Playgroud)
当我尝试运行时make all,g ++给了我一个错误.看起来通过-Iflag 指定的路径仅用于搜索#included文件.
g++: Foo.cpp: No such file or directory
g++: Bar.cpp: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我不能使用通配符(*.cpp)因为我并不总是希望拾取所有文件进行编译.另一种方法是cdsrc目录,提到这里,并从那里运行G ++,但只适用于我,如果所有文件在同一目录下(我需要的输出是一个单一的.so文件).我也试过设置环境变量PATH,但似乎没有任何影响. …