有没有办法在每次调用某个函数时在C或C++中正在运行的进程中转储调用堆栈?我的想法是这样的:
void foo()
{
print_stack_trace();
// foo's body
return
}
Run Code Online (Sandbox Code Playgroud)
其中的print_stack_trace
工作方式类似于caller
Perl.
或类似的东西:
int main (void)
{
// will print out debug info every time foo() is called
register_stack_trace_function(foo);
// etc...
}
Run Code Online (Sandbox Code Playgroud)
在哪里register_stack_trace_function
放置某种内部断点,这将导致在调用时打印堆栈跟踪foo
.
在某些标准C库中是否存在这样的事情?
我正在使用GCC在Linux上工作.
我有一个测试运行,基于一些不应该影响此行为的命令行开关,行为不同.我的代码有一个伪随机数生成器,我假设它是基于这些开关被不同地调用的.我希望能够使用每组开关运行测试,并查看随机数生成器是否针对每个开关进行不同的调用.
来自维基百科:
算法的复杂性是
O(n(logn)(loglogn))
位操作.
你怎么到达那个?
复杂性包括这个loglogn
术语告诉我有一个sqrt(n)
地方.
假设我在前100个数字(n = 100
)上运行筛子,假设将数字标记为复合需要恒定时间(数组实现),我们使用的次数mark_composite()
将类似于
n/2 + n/3 + n/5 + n/7 + ... + n/97 = O(n^2)
Run Code Online (Sandbox Code Playgroud)
并且为了找到下一个素数(例如,7
在越过所有数字的多个之后跳转到5
),操作的数量将是O(n)
.
因此,复杂性将是O(n^3)
.你同意吗?
如果函数式编程语言不能保存任何状态,他们如何做一些简单的事情,比如从用户那里读取输入?他们如何"存储"输入(或存储任何数据?)
例如:这个简单的C语言如何转换为像Haskell这样的函数式编程语言?
#include<stdio.h>
int main() {
int no;
scanf("%d",&no);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
(我的问题受到了这篇优秀文章的启发:"名词王国的执行".阅读它让我更好地理解了什么是面向对象的编程,Java如何以一种极端的方式实现它,以及函数式编程语言是如何实现的对比.)
oop paradigms haskell programming-languages functional-programming
#include <stdio.h>
int main() {
float a = 1234.5f;
printf("%d\n", a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它显示0
!! 怎么可能?是什么原因?
我故意%d
在printf
声明中加入研究行为printf
.
在shell上,当我需要一个特定的列时,我会输入awk.
这打印了第9列,例如:
... | awk '{print $9}'
Run Code Online (Sandbox Code Playgroud)
如何告诉awk打印所有列,包括和列9之后,而不仅仅是第9列?
两者有什么区别?我的意思是方法都是一样的.因此,对于用户来说,他们的工作方式相同.
那是对的吗??
$ cat inheritance.cpp
#include <iostream>
using namespace std;
class A { };
class B : private A { };
int main() {
A* ab = new B;
}
$
$ g++ inheritance.cpp
inheritance.cpp: In function 'int main()':
inheritance.cpp:9: error: 'A' is an inaccessible base of 'B'
$
Run Code Online (Sandbox Code Playgroud)
我只是不明白这个错误.
据我所知,正如本教程所证实的那样,private
继承只应改变class B
外部世界可见成员的方式.
我认为私有说明者所做的不仅仅是改变class B
成员的可见性.
主要是DFS用于在图中找到循环而不是BFS.有什么原因?两者都可以在遍历树/图时查找是否已访问过节点.
algorithm tree graph breadth-first-search depth-first-search
我在这里看到这两个术语的混合用法.
C++ 11,以前也称为C++ 0x ...
但我不确定为什么.