1. <i id='8nzRm'><tr id='8nzRm'><dt id='8nzRm'><q id='8nzRm'><span id='8nzRm'><b id='8nzRm'><form id='8nzRm'><ins id='8nzRm'></ins><ul id='8nzRm'></ul><sub id='8nzRm'></sub></form><legend id='8nzRm'></legend><bdo id='8nzRm'><pre id='8nzRm'><center id='8nzRm'></center></pre></bdo></b><th id='8nzRm'></th></span></q></dt></tr></i><div id='8nzRm'><tfoot id='8nzRm'></tfoot><dl id='8nzRm'><fieldset id='8nzRm'></fieldset></dl></div>
      <legend id='8nzRm'><style id='8nzRm'><dir id='8nzRm'><q id='8nzRm'></q></dir></style></legend>

      <small id='8nzRm'></small><noframes id='8nzRm'>

        <bdo id='8nzRm'></bdo><ul id='8nzRm'></ul>

    2. <tfoot id='8nzRm'></tfoot>

        C/C++ 警告:带有 BDADDR_ANY 蓝牙库的临时地址

        C/C++ Warning: address of temporary with BDADDR_ANY Bluetooth library(C/C++ 警告:带有 BDADDR_ANY 蓝牙库的临时地址)
            <tbody id='E5gij'></tbody>

            <small id='E5gij'></small><noframes id='E5gij'>

            • <bdo id='E5gij'></bdo><ul id='E5gij'></ul>

                <i id='E5gij'><tr id='E5gij'><dt id='E5gij'><q id='E5gij'><span id='E5gij'><b id='E5gij'><form id='E5gij'><ins id='E5gij'></ins><ul id='E5gij'></ul><sub id='E5gij'></sub></form><legend id='E5gij'></legend><bdo id='E5gij'><pre id='E5gij'><center id='E5gij'></center></pre></bdo></b><th id='E5gij'></th></span></q></dt></tr></i><div id='E5gij'><tfoot id='E5gij'></tfoot><dl id='E5gij'><fieldset id='E5gij'></fieldset></dl></div>
                <legend id='E5gij'><style id='E5gij'><dir id='E5gij'><q id='E5gij'></q></dir></style></legend>

              1. <tfoot id='E5gij'></tfoot>
                • 本文介绍了C/C++ 警告:带有 BDADDR_ANY 蓝牙库的临时地址的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我在使用 g++ 和在 Ubuntu 下使用蓝牙库的 C/C++ 程序的编译过程中遇到了一些问题.

                  I'm having some problems with g++ and the compiling process for a C/C++ program which use Bluetooth libraries under Ubuntu.

                  如果我使用 gcc,它可以正常工作,没有警告;相反,如果我使用 g++,我会收到此警告:

                  If i use gcc, it works fine with no warning; on the contrary, if i use g++ i get this warning:

                  警告:取临时地址

                  即使程序编译正常并且可以运行.

                  even if the program compiles fine and it works.

                  报告错误的相关行是:

                          bdaddr_t *inquiry(){
                         // do some stuff.. 
                      bacpy(&result[mote++], BDADDR_ANY);
                      return result;
                  }
                  //...
                  void zeemote(){
                  while (bacmp(bdaddr, BDADDR_ANY)){
                  /..
                  }
                  }
                  

                  在这两种情况下,都涉及 BDADDR_ANY.

                  In both the cases, BDADDR_ANY is involved.

                  我该如何解决这个警告?

                  How can i solve this warning?

                  BDADDR_ANY 在 bluetooth.h 中定义如下:

                  BDADDR_ANY is defined in bluetooth.h like:

                  /* BD Address */
                  typedef struct {
                      uint8_t b[6];
                  } __attribute__((packed)) bdaddr_t;
                  
                  #define BDADDR_ANY   (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}})
                  

                  推荐答案

                  (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}})
                  

                  构造一个临时对象并使用它的地址.这在 C++ 中是不允许的.

                  Constructs a temporary object and uses its address. This isn't allowed in C++.

                  您可以通过创建一个命名的临时变量并在其上使用 bacpybacmp 来解决此问题:

                  You can fix this by creating a named temporary variable and using bacpy and bacmp on it:

                  bdaddr_t tmp = { };
                  
                  bacpy(&result[mote++], &tmp);
                  

                  while (bacmp(bdaddr, &tmp)) {
                      //
                  }
                  

                  这篇关于C/C++ 警告:带有 BDADDR_ANY 蓝牙库的临时地址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Is Type(::x); valid?(是类型(::x);有效的?)
                  Difference between an inline function and static inline function(内联函数和静态内联函数的区别)
                  Compilation fails randomly: quot;cannot open program databasequot;(编译随机失败:“无法打开程序数据库)
                  Too many initializers error for a simple array in bcc32(bcc32 中的简单数组的初始值设定项过多错误)
                  No Member named stoi in namespace std(命名空间 std 中没有名为 stoi 的成员)
                  Error using a constexpr as a template parameter within the same class(在同一个类中使用 constexpr 作为模板参数时出错)
                  <legend id='uoAuG'><style id='uoAuG'><dir id='uoAuG'><q id='uoAuG'></q></dir></style></legend>

                  1. <i id='uoAuG'><tr id='uoAuG'><dt id='uoAuG'><q id='uoAuG'><span id='uoAuG'><b id='uoAuG'><form id='uoAuG'><ins id='uoAuG'></ins><ul id='uoAuG'></ul><sub id='uoAuG'></sub></form><legend id='uoAuG'></legend><bdo id='uoAuG'><pre id='uoAuG'><center id='uoAuG'></center></pre></bdo></b><th id='uoAuG'></th></span></q></dt></tr></i><div id='uoAuG'><tfoot id='uoAuG'></tfoot><dl id='uoAuG'><fieldset id='uoAuG'></fieldset></dl></div>
                    • <bdo id='uoAuG'></bdo><ul id='uoAuG'></ul>

                      • <tfoot id='uoAuG'></tfoot>

                            <tbody id='uoAuG'></tbody>

                        1. <small id='uoAuG'></small><noframes id='uoAuG'>