我怎么写一个位?我有一个1或0的变量,我想将其值写入8位reg变量中的单个位.
我知道这会设置一下:
reg |= mask; // mask is (1 << pin)
Run Code Online (Sandbox Code Playgroud)
这将清楚一点:
reg &= ~mask; // mask is (1 << pin)
Run Code Online (Sandbox Code Playgroud)
有没有办法让我在一行代码中执行此操作,而无需确定值是高还是低作为输入?
我想防止除类的工厂之外的任何东西构造类类型的对象。我需要该类具有一个公共接口,但我想将其创建仅限于其工厂。我怎么做?
让我们称之为班级Car和工厂CarFactory。这是我在不使用friend所有私有成员并将其暴露给工厂的情况下如何执行此操作的最初想法:
class Car {
private:
Car();
Car(Car& ref);
friend class CarFactory;
};
class CarFactory {
public:
Car * makeCar();
};
Run Code Online (Sandbox Code Playgroud)
我发现了一个与Java有关的问题:如何使构造函数仅对工厂类可用?
上面的代码按原样工作。澄清一下,我想知道是否有一种方法可以只与工厂共享构造函数,而不能与所有私有成员共享?
这是错误:
msp430-gcc -mmcu=msp430g2553 -Os -c -o gpio_test.o gpio_test.c
In file included from msp430_lib.h:9:0,
from gpio_test.c:4:
gpio_api.h:20:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘gpio_init’
gpio_api.h:27:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘gpio_ioctl_pull_en’
gpio_api.h:35:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘gpio_write’
make: *** [gpio_test.o] Error 1
Run Code Online (Sandbox Code Playgroud)
这是错误来源的头文件(行号不匹配,因为我从文件中删除了所有注释以缩短它):
/* gpio_api.h - General Purpose Input/Output API
*/
#ifndef MSP_GPIO_API_H
#define MSP_GPIO_API_H
#include <msp430g2553.h>
#define INPUT 0
#define OUTPUT 1
#define DOWN 0
#define UP 1 …Run Code Online (Sandbox Code Playgroud)