Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ &引用;错误:在';挥发性'&引用;_C++_Windows_Gcc_Mingw W64 - Fatal编程技术网

C++ &引用;错误:在';挥发性'&引用;

C++ &引用;错误:在';挥发性'&引用;,c++,windows,gcc,mingw-w64,C++,Windows,Gcc,Mingw W64,我正在尝试使用mingw4.8.2进行编译。我得到了这个错误: 在文件中包括从 b:/nrfdriver/sdk/nRF51_SDK_8.1.0_b6ed55f/components/device/nrf51.h:119:0, from b:/nrfdriver/sdk/nRF51_SDK_8.1.0_b6ed55f/components/softdevice/s130/headers/nrf_soc.h:50, from b:

我正在尝试使用mingw4.8.2进行编译。我得到了这个错误:

在文件中包括从

b:/nrfdriver/sdk/nRF51_SDK_8.1.0_b6ed55f/components/device/nrf51.h:119:0,
                 from b:/nrfdriver/sdk/nRF51_SDK_8.1.0_b6ed55f/components/softdevice/s130/headers/nrf_soc.h:50,
                 from b:/nrfdriver/pc-ble-driver-0.5.0/driver/inc_override/nrf_soc.h:21,
                 from b:/nrfdriver/pc-ble-driver-0.5.0/driver/inc_override/app_util_platform.h:26,
                 from b:/nrfdriver/sdk/nRF51_SDK_8.1.0_b6ed55f/components/drivers_nrf/uart/app_uart.h:27,
                 from b:\nrfdriver\pc-ble-driver-0.5.0\driver\src\app_uart_pc.c:13:
C:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/4.8.2/include/xmmintrin.h:
In function 'void _mm_setcsr(unsigned int)':
b:/nrfdriver/sdk/nRF51_SDK_8.1.0_b6ed55f/components/toolchain/gcc/core_cm0.h:164:21:
error: expected primary-expression before 'volatile'    #define   __I 
volatile             /*!< Defines 'read only' permissions   */
                     ^ driver\CMakeFiles\s130_nrf51_ble_driver.dir\build.make:297: recipe for
target 'driver/CMakeFiles/s130_nrf51_ble_driver.dir/src/app_uart_pc.c
.obj' failed
b:/nrfdriver/sdk/nRF51\u sdk\u 8.1.0\u b6ed55f/components/device/nRF51.h:119:0,
从b:/nrfdriver/sdk/nRF51_sdk_8.1.0_b6ed55f/components/softdevice/s130/headers/nrf_soc.h:50,
从b:/nrfdriver/pc-ble-driver-0.5.0/driver/inc_override/nrf_soc.h:21,
从b:/nrfdriver/pc-ble-driver-0.5.0/driver/inc_override/app_util_platform.h:26,
从b:/nrfdriver/sdk/nRF51_sdk_8.1.0_b6ed55f/components/drivers_nrf/uart/app_uart.h:27,
从b:\nrfdriver\pc-ble-driver-0.5.0\driver\src\app\u uart\u pc.c:13:
C:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/4.8.2/include/xmmintrin.h:
函数“void”中的“mm_setcsr(unsigned int)”:
b:/nrfdriver/sdk/nRF51_sdk_8.1.0_b6ed55f/components/toolchain/gcc/core_cm0.h:164:21:
错误:“volatile”#define u I之前应为主表达式
挥发性/*!<定义“只读”权限*/
^driver\cmakfiles\s130\u nrf51\u ble\u driver.dir\build.make:297:recipe for
目标'driver/cmakfiles/s130\u nrf51\u ble\u driver.dir/src/app\u uart\u pc.c
.obj'失败
错误来自此行:

#define   __I     volatile             /*!< Defines 'read only' permissions                 */
#定义uu I volatile/*!<定义“只读”权限*/
这么简单的
#define
怎么会导致编译器错误?我该如何修复?(升级编译器不是一个选项,因为这个版本的驱动程序应该是用这个版本的MinGW构建的)


请注意,驱动程序是以32位为目标构建的,我正在尝试以64位为目标构建它,不知道这是否是问题的原因…

如果我们也查看xmmintrin.h头会怎么样

/* Set the control register to I.  */
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_setcsr (unsigned int __I)
{
  __builtin_ia32_ldmxcsr (__I);
}

哎哟,
\uu I

的另一个用法是,如果我们也查看xmmintrin.h头会怎么样

/* Set the control register to I.  */
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_setcsr (unsigned int __I)
{
  __builtin_ia32_ldmxcsr (__I);
}

哎哟,
\uu I

的另一个用法是,如果编译为32位而不是64位,错误会消失吗?也许你需要尝试不同的编译器,或者尝试设置c版本,我想你应该有-std=C99。你能在xmmintrin上显示相关代码吗?@NathanOliver:没有测试32位……他们为这个目标提供了一个二进制文件,所以我不需要编译它。@imreal:你可以在这里看到:如果你编译为32位而不是64位,错误会消失吗?也许你需要尝试不同的编译器,或者尝试设置c版本,我想你应该有-std=C99你能在xmmintrin.h上显示相关代码吗?@NathanOliver:没有测试32位…他们为这个目标提供了一个二进制文件,所以我不需要编译它。@imreal:你可以在这里看到:该死的,我的问题发布得太快了。我不熟悉MinGW,我几乎可以肯定这是一个编译器问题。显然,它来自代码本身。谢谢你的快速回答!如果有人遇到相同的问题:我手动将驱动程序和SDK文件夹中的所有
\uuuuu I
替换为
\uuu NRF\u I
:那么编译就可以了!该死的,我把问题发得太快了。我不熟悉MinGW,我几乎可以肯定这是一个编译器问题。显然,它来自代码本身。谢谢你的快速回答!如果有人遇到相同的问题:我手动将驱动程序和SDK文件夹中的所有
\uuuuu I
替换为
\uuu NRF\u I
:那么编译就可以了!