相关疑难解决方法(0)

如何在运行时找到当前函数的名称?

经过多年使用丑陋的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框架,即使我确实使用这两者.
它应该尽可能便携.

c++ assert function

36
推荐指数
6
解决办法
5万
查看次数

在c中的main()中调用main()

是否可以在c中main()main()函数内调用?

c

25
推荐指数
3
解决办法
4万
查看次数

主函数可以在C++中调用自身吗?

任何人都可以告诉下面的代码有什么问题吗?

int main () { 
    return main(); 
}
Run Code Online (Sandbox Code Playgroud)

我测试过,它编译正确.它一直在运行.现场背后的诀窍呢?

c++

15
推荐指数
6
解决办法
1万
查看次数

Visual C++尾部调用优化

根据该问题的答案: 如果有的话,哪些C++编译器会进行尾递归优化? 看起来,编译器应该进行尾递归优化.

但我已经尝试过提出的选项,似乎编译器在模板函数的情况下不能进行这种优化.它能以某种方式修复吗?

c++ tail-recursion visual-studio-2010 tail-call tail-call-optimization

3
推荐指数
1
解决办法
2413
查看次数

当我打电话给我的功能时,什么都没发生?

我正在尝试使用两个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)

c++ function

1
推荐指数
1
解决办法
133
查看次数

我收到变量“count”未初始化的错误。但它应该在读取并验证文件中的数据后进行初始化。C++

我正在开发登录/注册系统。到目前为止,我收到的错误是变量“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)

c++ variables fstream

1
推荐指数
1
解决办法
298
查看次数

当我编译我的 C++ 代码时,avast 认为它是病毒

我第一次在开发控制台中编译并运行我的程序时,当我打开它时,我的电脑开始滞后,它在我的桌面上创建了一堆 .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)

c++

0
推荐指数
1
解决办法
2456
查看次数