经过多年使用丑陋的MFC ASSERT宏,我终于决定抛弃它并创建最终的ASSERT宏.
我很好地获取文件和行号,甚至是失败的表达式.我可以显示带有这些的消息框,以及中止/重试/取消按钮.
当我按下Retry时,VS调试器会跳转到包含ASSERT调用的行(而不像某些其他ASSERT函数那样反汇编).所以这一切都非常有效.
但真正酷的是显示失败的函数的名称.
然后我可以决定是否调试它而不试图从文件名中猜出它的功能.
例如,如果我有以下功能:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
ASSERT(lpCreateStruct->cx > 0);
...
}
Run Code Online (Sandbox Code Playgroud)
然后当ASSERT触发时,消息框将显示如下内容:
Function = CMainFrame::OnCreate
Run Code Online (Sandbox Code Playgroud)
那么,在运行时找到当前函数名的最简单方法是什么?
它不应该使用MFC或.NET框架,即使我确实使用这两者.
它应该尽可能便携.
任何人都可以告诉下面的代码有什么问题吗?
int main () {
return main();
}
Run Code Online (Sandbox Code Playgroud)
我测试过,它编译正确.它一直在运行.现场背后的诀窍呢?
根据该问题的答案: 如果有的话,哪些C++编译器会进行尾递归优化? 看起来,编译器应该进行尾递归优化.
但我已经尝试过提出的选项,似乎编译器在模板函数的情况下不能进行这种优化.它能以某种方式修复吗?
c++ tail-recursion visual-studio-2010 tail-call tail-call-optimization
我正在尝试使用两个char参数来制作摇滚,纸张,剪刀游戏的功能,其中第一个参数代表用户选择的摇滚,纸张或剪刀.第二个参数代表游戏的结果,胜利,失败或平局.但是,当我试图调用该函数时,没有任何事情发生.我迷失在接下来我需要做什么.非常感谢所有帮助!
#include <iostream>
#include <cstdlib>
using namespace std;
double playRPS (char a, char b);
int main() {
char letter;
char result = 0;
cout << "Welcome to COP3014 ROCK PAPER SCISSORS!\n\n";
cout << "Please select: " << endl
<< "Rock(r), Paper(p), or Scissors(s)? " << endl
<< "Or enter q to quit --> ";
cin >> letter;
if (letter == 'r' || letter == 'R' || letter == 'p' || letter == 'P' || letter == 's' || letter == …Run Code Online (Sandbox Code Playgroud) 我正在开发登录/注册系统。到目前为止,我收到的错误是变量“count”在未初始化的情况下被使用。
bool count;
string userId, password, id, pass;
system("cls");
cout << "\t\t\n Please enter the username and password\n\n";
cout << "Username:";
cin >> userId;
cout << "Password:";
cin >> password;
//reads info from the file
ifstream readL("record.txt");
while (readL >> id >> pass) {
if (id == userId && pass == password) {
count = true;
}
else {
count = false;
}
}
readL.close();
if (count == true) {
cout << userId << " your LOGIN is successfull.\n\n";
main(); …Run Code Online (Sandbox Code Playgroud) 我第一次在开发控制台中编译并运行我的程序时,当我打开它时,我的电脑开始滞后,它在我的桌面上创建了一堆 .tmp 文件,名称类似于trzFE47.tmp我的电脑开始滞后我不得不关闭我的电脑我什至检查过任务管理器的后台进程处理可疑的事情,但我什么也没发现,所以当我重新启动我的电脑时,我再次编译我的 .cpp 程序,avast 给了我一个警告,说在我的代码中检测到可疑项目
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
using namespace std;
int main() {
int l;
int a;
int b;
int c;
Sleep(3000);
srand(time(0));
l = 1+rand()%6;
a = 1+rand()%6;
b = 1+rand()%6;
c = 1+rand()%6;
cout << a << endl << b << endl << c << endl;
if (a==b&& b==c&&c==a){
int v;
cout << "you win";
cin >> v;
}else{
cout << "try again?"; …Run Code Online (Sandbox Code Playgroud)