我在接受采访时告诉我,在C语言中,使用++运算符(比如说i ++)是一个原子操作,而不是"i + = 1".我认为这些操作在线程安全性或原子性方面完全相同.我错过了什么或者这些实际上是不同的吗?
我在使用在不同命名空间中声明的结构时遇到问题。在 File1.h 中,我声明该结构并将其放入命名空间“Foo”中。
//File1.h
namespace Foo{
struct DeviceAddress;
}
struct DeviceAddress {
uint8_t systemID;
uint8_t deviceID;
uint8_t componentID;
};
Run Code Online (Sandbox Code Playgroud)
在 File2.c 中,我尝试创建该结构的实例:
//File2.c
#include "File1.h"
struct Foo::DeviceAddress bar;
Run Code Online (Sandbox Code Playgroud)
但我在 File2.c 中尝试声明结构的行中收到错误。错误消息是:错误 C2079: 'bar' 使用未定义的结构 'Foo::DeviceAddress'
我使用 MS C++ 编译器和 Visual Studio 作为开发环境。
我是否在尝试声明“bar”时犯了某种语法错误,或者我不理解有关命名空间或结构的某些内容?