我刚刚学习了lambda表达式,并想知道使用时打印到控制台时表达式或常规函数是否会执行得更快cout.
我应该用吗?
// Lambda expression
auto helloWorld = []()
{
cout << "Hello World" << endl;
};
Run Code Online (Sandbox Code Playgroud)
要么
// Normal function
void helloWorld()
{
cout << "Hello World" << endl;
}
Run Code Online (Sandbox Code Playgroud)
注意:我仍然是新手程序员,所以请随时指出我可能犯的任何错误.我只能学习
谢谢
此循环非常占用CPU:
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
GUIDelete()
Exit
Case $control1
Func1()
Case $control2
Func2()
EndSwitch
WEnd
Run Code Online (Sandbox Code Playgroud)
这就是我一直用的东西.我知道还有其他方法,但哪一个是CPU密集度最低的?
在阅读了GTK +库中的一些来源之后,我遇到了我认为是一段奇怪的代码:
typedef struct _GtkWidgetClass GtkWidgetClass;
...
struct _GtkWidgetClass
{
...
};
Run Code Online (Sandbox Code Playgroud)
我不明白这段代码是为什么它不是这样写的:
typedef struct
{
...
} GtkWidgetClass;
Run Code Online (Sandbox Code Playgroud)
我觉得我错过了一些东西......
如果有人能够填写我为什么GTK(或者其他任何代码)是以这种方式编写的,那将非常感激.
提前致谢
最近我一直在使用C中的内联汇编,并且想知道我是否可以直接从变量访问寄存器
像这样的东西:
volatile uint64_t* flags = RFLAGS;
Run Code Online (Sandbox Code Playgroud)
其中RFLAGS是CPU标志寄存器.显然,上面的代码没有编译,但我想知道是否有类似的方法来实现所需的结果.
使用gcc编译Ubuntu x86_64
如果我有以下代码:
#include <stdio.h>
#define VAR_NAME a_variable
int VAR_NAME = 42;
int main()
{
printf("%i\n", VAR_NAME);
printf("%i\n", a_variable);
a_variable = 123;
printf("%i\n", VAR_NAME);
printf("%i\n", a_variable);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
宣言是否a_variable明确?在我的系统上,声明了一个intnamed a_variable,但是我是否必须担心声明int命名的备用编译器VAR_NAME?
顺便说一下,上面的代码输出如下:
42
42
123
123
Run Code Online (Sandbox Code Playgroud)
编辑:
此外,如果前一个定义明确,我可以做以下事情吗?
#define VAR_NAME a_variable
...
#define DECL_VAR int VAR_NAME
// Declare an int named a_variable
DECL_VAR;
Run Code Online (Sandbox Code Playgroud)