小编Eri*_*k W的帖子

"signed"关键字的实际用途是什么?

我知道无符号整数只是正数(和0),并且与普通int相比可以加倍.两者之间有什么区别吗?

int variable = 12;
Run Code Online (Sandbox Code Playgroud)

和:

signed int variable = 12;
Run Code Online (Sandbox Code Playgroud)

您何时以及为何使用signed关键字?

c++

57
推荐指数
2
解决办法
6924
查看次数

C - 不兼容的指针类型

为什么以下代码会发出警告?

int main(void)
{
    struct {int x; int y;} test = {42, 1337};
    struct {int x; int y;} *test_ptr = &test;
}
Run Code Online (Sandbox Code Playgroud)

结果:

warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
         struct {int x; int y;} *test_ptr = &test;
                                            ^
Run Code Online (Sandbox Code Playgroud)

c struct pointers initialization incompatibletypeerror

26
推荐指数
2
解决办法
3905
查看次数

C结构作为数据类型

我希望能够做到这样的事情:

typedef struct
{
    char* c_str;

} string;

string s = "hello";
Run Code Online (Sandbox Code Playgroud)

是否有可能以任何方式做到这一点?

我知道有可能这样做:

typedef struct
{
    char* c_str;

} string;

string s = { "hello" };
Run Code Online (Sandbox Code Playgroud)

但是当它只是一个成员变量时,我不喜欢大括号.

c

20
推荐指数
2
解决办法
2763
查看次数

"f"代表C标准库函数名称是什么?

什么是f代表在C标准库函数的名称?我注意到很多功能都有f他们的名字,这对我来说并没有多大意义.

例如:fgets,fopen,printf,scanf,sqrtf等.

c naming libc

18
推荐指数
3
解决办法
7445
查看次数

C代码在Visual Studio中编译成哪种汇编语言?

当我调试一个C项目时,我可以看到它编译成的所有汇编代码.我想知道它是什么汇编语言.是NASM还是MASM还是其他什么?如果我使用内联汇编,我是否可以使用其他汇编语言?

c assembly visual-studio

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

NASM - 获取堆栈中的项目数

我试图通过用bp减去sp寄存器来弄清楚如何获得堆栈中的项目数.我究竟做错了什么?我得到了完全错误的结果

MOV bp, 0x7E00
MOV sp, bp

PUSH 'A'
PUSH 'B'
PUSH 'C'

POP bx
MOV al, bl
CALL _printchar

POP bx
MOV al, bl
CALL _printchar

MOV bx, sp
SUB bx, bp
ADD bx, 48 ;To get ascii number
MOV al, bl
CALL _printchar
Run Code Online (Sandbox Code Playgroud)

这是输出:

CB.

assembly nasm

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

SDL2 - Vsync 不工作

我在我的程序中使用了 vsync,它工作正常,直到我最小化窗口。我在创建渲染器时这样做了:

renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
Run Code Online (Sandbox Code Playgroud)

这是游戏循环:

while (running)
{
    checkEvent();
    handleKeyboard(timer.getDelta());

    render();
}
Run Code Online (Sandbox Code Playgroud)

它给了我稳定的每秒 60 帧,但是当我最小化窗口时,我每秒得到超过 100000 帧。为什么会这样?

c++ sdl-2

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

Valgrind:stdio.h的函数"puts"分配内存

我只是注意到valgrind显示此代码分配内存:

#include <stdio.h>

int main(void)
{
    puts("Hello world");
}
Run Code Online (Sandbox Code Playgroud)

编译时的结果gcc (Ubuntu 5.3.1-14ubuntu2.1):

==25080== Memcheck, a memory error detector
==25080== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==25080== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==25080== Command: ./a.out
==25080== 
Hello world
==25080== 
==25080== HEAP SUMMARY:
==25080==     in use at exit: 0 bytes in 0 blocks
==25080==   total heap usage: 1 allocs, 1 frees, 1,024 bytes allocated
==25080== 
==25080== All heap blocks were …
Run Code Online (Sandbox Code Playgroud)

c valgrind

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

NASM与CMP和OR之间的区别

我有两个问题.第一个:'或'与'cmp'有什么区别?我已经看过了两个,看起来他们做了同样的事情.我的第二个问题:做什么

or al, al
Run Code Online (Sandbox Code Playgroud)

意思?它不应该一直返回真(如x == x)吗?

assembly nasm

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

C和GTK3 - 使用Glade时不显示应用程序菜单

使用Glade(GtkBuilder)时,我无法获得正确的应用程序菜单.这是我目前使用的代码:

main.c中:

void app_init(GtkApplication* app, void* userdata)
{
    (void)userdata;
    GActionEntry appactions[] = {
        {"about", app_aboutaction, NULL, NULL, NULL, {0}},
        {"quit", app_quitaction, NULL, NULL, NULL, {0}},
    };

    g_action_map_add_action_entries(
        G_ACTION_MAP(app),
        appactions,
        sizeof appactions / sizeof *appactions,
        app
    );

    GMenu* menu = g_menu_new();
    g_menu_append(menu, "About", "app.about");
    g_menu_append(menu, "Quit", "app.quit");

    gtk_application_set_app_menu(app, G_MENU_MODEL(menu));
}

void app_ctor(GtkApplication* app, void* userdata)
{
    (void)userdata;

    GtkBuilder* builder = gtk_builder_new_from_file("./builder.ui");
    GtkWindow* appwin = GTK_WINDOW(gtk_builder_get_object(builder, "window"));
    gtk_window_set_application(appwin, app);
}

int main(int argc, char* argv[])
{
    GtkApplication* app = gtk_application_new(NULL, G_APPLICATION_FLAGS_NONE);
    g_signal_connect(app, …
Run Code Online (Sandbox Code Playgroud)

c gtk glade gtk3

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