声明一个接受预处理器宏的字符
Declaring a char which takes a preprocessor macro?
我正在使用一个提供的API,它有一些整数的宏定义,如下所示:
// Macros for logic values
#define LOGIC_UNSET -1
#define LOGIC_ZERO 0
#define LOGIC_ONE 1
#define LOGIC_D 2
#define LOGIC_DBAR 3
#define LOGIC_X 4
// Macros for fault types
#define NOFAULT -1
#define FAULT_SA0 0
#define FAULT_SA1 1
现在,在一个API函数中,它声明了一个类型为char
的变量,并且分配给该char
的值是其中一个宏的值。
bool getObjective(Gate* &g, char &v, Circuit* myCircuit)
其中v
接收LOGIC
宏的值。
这对我来说没有意义,当我试图在char上做cout
时,我得到了ascii符号,这对我没有帮助。我真的很困惑。这是个错误吗?你能把int
传给char
吗?如果是,我如何打印字符,以便在控制台上获得宏或宏值?
char
的ostream
上的<<
重载有意打印ASCII符号。
您可以使用<< (int)v
来避免这种行为。
使用char
存储整数值没有错。尽管要注意char
可以是unsigned
类型,因此可能会使NOFAULT
(如-1
)的行为难以管理。
最好的做法是:使用int
。
您可以将int
传递给char
变量。如果int
是32位,char是16位,或者您的int
只是16位,那么您可以准备好对int
的某些部分进行划痕。
要打印,您可以随时投射,
std::cout<< (int) your_char
相关文章:
- 错误:无效的预处理指令 #i 的意思是 #if?
- C++预处理会生成变量成员、资源库和映射
- 使用预处理指令检查是否包含标头?
- 预处理的 C/C++ 文件是否特定于计算机?
- 使用 GCC 对 C 文件进行部分预处理(不删除 "define" 指令)
- 在 CPLEX 中求解线性规划,无需剪切和预处理
- CPP -D 选项,用于预处理 Fortran 代码
- 错误:粘贴"tmp_UINT"和"+"未提供有效的预处理令牌
- 任务计划程序库的预处理不起作用 - 多定义错误
- Eclipse 问题 - 编译期间不考虑 .c 和 .cpp 文件中定义的预处理
- 使用python预处理后,C++(opencv)中的垫子类型数据与image_to_array相同
- Howo 使用 cl 预处理为 masm 组装生成一个单独的文件
- 我有一个预处理的 C/C++ 源文件 (cacti.i).如何从这个 .i 文件生成可执行二进制文件,以便我可以像 ./
- 如何使用Visual Studio C/C++编译器(cl.exe)来预处理我的objective-C代码
- 是具有预处理前分支实现的结构违反ODR
- 与不完整的Cholesky预处理的共轭梯度返回特征库的意外错误
- Visual Studio C - 无法输出预处理文件
- 在海湾合作委员会中加快宏观预处理的任何方法
- 所有结构成员的预处理器批处理
- 当头文件被预处理时是否有一个预处理器选项显示?