在C++宏"int val = rand()"中创造新价值
Create new value in C++ macro "int val = rand()"
我正在尝试创建c++宏,它可以在"if"条件下检查时做一些事情。
我的宏在大多数情况下工作,但我有问题时,如果是创建临时值。当然,我可以将新值的创建移到"IF"之前,但这很麻烦,因为我必须在代码的许多地方做。
有可能得到工作"如果(int val = rand())"?
这段代码没有意义,但显示了我的问题。
#include <iostream>
#include <cstdlib>
#include <ctime>
bool printIf(int line, bool val)
{
std::cout << "Line: " << line << std::endl;
return val;
}
#define IF(x) if( (x) ? printIf(__LINE__, true) : printIf(__LINE__, false) )
int main()
{
srand(time(NULL));
//int val;
//IF (val = rand())
IF(int val = rand())
{
std::cout << "val = " << val << std::endl;
}
}
编译错误:
$ g++ main.cpp && ./a.out
main.cpp: In function ‘int main()’:
main.cpp:18:6: error: expected primary-expression before ‘int’
IF(int val = rand())
^
main.cpp:11:20: note: in definition of macro ‘IF’
#define IF(x) if( (x) ? printIf(__LINE__, true) : printIf(__LINE__, false) )
^
main.cpp:18:6: error: expected ‘)’ before ‘int’
IF(int val = rand())
^
main.cpp:11:20: note: in definition of macro ‘IF’
#define IF(x) if( (x) ? printIf(__LINE__, true) : printIf(__LINE__, false) )
^
main.cpp:22:1: error: expected ‘)’ before ‘}’ token
}
^
main.cpp:22:1: error: expected primary-expression before ‘}’ token
我认为问题在于您在()
中包装了变量声明。如果我去掉括号,那么代码编译为:
#include <iostream>
#include <cstdlib>
#include <ctime>
bool printIf(int line, bool val)
{
std::cout << "Line: " << line << std::endl;
return val;
}
#define IF(x) if( x ? printIf(__LINE__, true) : printIf(__LINE__, false) )
int main()
{
srand(time(NULL));
//int val;
//IF (val = rand())
IF(int val = rand())
{
std::cout << "val = " << val << std::endl;
}
}
输出:Line: 18
val = 1
生活例子
相关文章:
- 为什么我不能将 rand() 与数组的大小一起使用?
- 如何解决这个超硬恒星的创造问题
- 为什么新的随机库比std::rand()更好
- 为什么rand()的使用被认为是不好的
- C++使用 rand 定义函数语法
- 为什么 rand 不在我的代码中生成随机数?
- 为什么 CWE 认为 rand() 具有潜在危险
- 在 c++ 中,rand() 在执行有调试和不带调试的程序时生成不同的结果
- Rand() 没有显示随机数,请帮助我了解出了什么问题:)
- Rand()大小写开关在多次迭代后运行到无穷大
- rand()函数在特定问题中的工作
- 为什么 someNumber = rand() & 100 + 1;不产生错误?
- 除了 rand() 之外,是否有任何随机生成器库,开发人员可以手动设置种子?
- 如何生成比用户使用 rand() 函数输入的数字大 5-10% 的数字?
- rand()/RAND_MAX 函数每次打印 1
- 使用 rand() 和 srand() 有问题
- " rand()%3-1 " 在 C++ 中是什么意思?
- 如何使 rand() 更加随机?
- C++ 更深入地了解 rand() 和 srand() 内部
- 在C++宏"int val = rand()"中创造新价值