我正在看一些我感到困惑的代码.
此代码段位于头文件RPI.h中:
#define BCM2708_PERI_BASE 0x20000000
#define GPIO_BASE (BCM2708_PERI_BASE + 0x200000) // GPIO controller
// IO Access
struct bcm2835_peripheral {
unsigned long addr_p;
int mem_fd;
void *map;
volatile unsigned int *addr;
};
struct bcm2835_peripheral gpio = {GPIO_BASE};
extern struct bcm2835_peripheral gpio;
Run Code Online (Sandbox Code Playgroud)
从RPI.c文件:
#include "RPI.h"
struct bcm2835_peripheral gpio = {GPIO_BASE};
Run Code Online (Sandbox Code Playgroud)
我对.h和.c文件中的行感到困惑:
struct bcm2835_peripheral gpio = {GPIO_BASE};
Run Code Online (Sandbox Code Playgroud)
在我看来,一个bcm2835_peripheral名为named 的新结构gpio被实例化并设置为等于GPIO_BASE.但是,该结构有四个公共成员.它们都被设定为GPIO_BASE?
我只包括相关的.h和.c文件中的行.这些行按原始文件中的顺序排列.
我无法.gitignore使用Visual Studio 2019 Community。
上图是“团队资源管理器”选项卡的图像,显示了要提交的文件列表的一部分。这些文件所在的目录 x64\Debug 位于 C:\Users\ username \Source\repos\Tetris_System\Tetris_Game 下。C:\Users\ username \Source\repos\Tetris_System 包含.git和.vs文件夹和.gitignore文件。
我有一个非常简单的.gitignore文件,其中只有一行:
*.obj
Run Code Online (Sandbox Code Playgroud)
我的理解是,这一行应该*.obj从提交列表中删除所有文件。这些文件不应该*.obj从列表中消失吗?
从之前的提交来看,所有这些都*.obj位于 GitHub 存储库中。
我创建了一个带有私有 std::unique_ptr 成员的类,即m_VBO和m_EBO,如图所示。
class VAO {
public:
VAO();
std::unique_ptr<VBO> GetVBO();
std::unique_ptr<EBO> GetEBO();
private:
std::unique_ptr<VBO> m_VBO;
std::unique_ptr<EBO> m_EBO;
};
Run Code Online (Sandbox Code Playgroud)
该类还包括“get”方法来保护和返回这些成员以供需要时使用。
这些“get”方法的定义是,
//*************************************************************************************************
std::unique_ptr<VBO> VAO::GetVBO()
{
return std::make_unique<VBO>(m_VBO);
//return std::make_unique<VBO>();
}
//*************************************************************************************************
std::unique_ptr<EBO> VAO::GetEBO()
{
//return std::make_unique<EBO>(m_EBO);
return std::make_unique<EBO>();
}
Run Code Online (Sandbox Code Playgroud)
这是行不通的。
我无法找出编写“get”方法的正确技术。
它是如何完成的?
在 Visual Studio 2019 中,我正在尝试实现使 C++11 显示的类不可复制的技术,后来在如何使这个 C++ 对象不可复制?.
我的课是
class Foo {
public:
Foo();
Foo(std::string name);
~Foo();
std::string m_name;
static std::int32_t s_counter;
public:
Foo(const Foo& inFoo) = delete;
Foo& operator=(const Foo& inFoo) = delete;
};
Run Code Online (Sandbox Code Playgroud)
定义代码是,
std::int32_t Foo::s_counter = 0;
Foo::Foo(void)
{
Foo::s_counter++;
std::cout << "Foo constructor. Count = " << Foo::s_counter << std::endl;
}
Foo::Foo(std::string name)
{
Foo::s_counter++;
m_name = name;
std::cout << "Foo " << m_name << " constructor. Count = " << Foo::s_counter << …Run Code Online (Sandbox Code Playgroud)