相关疑难解决方法(0)

C中的函数指针如何工作?

我最近在C中使用了函数指针.

继续回答你自己的问题的传统,我决定对那些需要快速深入研究这个主题的人进行一些基本的总结.

c function-pointers

1170
推荐指数
10
解决办法
77万
查看次数

C中的动态方法调度

我知道这听起来很傻,我知道C不是面向对象的语言.

但有没有办法在C中实现动态方法调度?我考虑过函数指针,但没有得到完整的想法.

我怎么能实现这个?

c oop function-pointers vtable

17
推荐指数
2
解决办法
4710
查看次数

_Noreturn in a c in c:error:expected specifier-qualifier-list before'_Noreturn'

我正在尝试编译一段包含_Noreturn的代码:

#ifndef SOMEHEADER_H
#define SOMEHEADER_H

#include <stdalign.h>
#include <stdbool.h>
#include <stdint.h>

extern struct s {

    _Noreturn void (*somenoreturnfunc)(bool);
} svar;

#endif
Run Code Online (Sandbox Code Playgroud)

这给了我:

error: expected specifier-qualifier-list before '_Noreturn' 上: _Noreturn void (*somenoreturnfunc)(bool);

所以我从这里尝试了这个建议:

#ifndef SOMEHEADER_H
#define SOMEHEADER_H

#include <stdalign.h>
#include <stdbool.h>
#include <stdint.h>

#include "noreturn.h"

extern struct s {

    noreturn void (*somenoreturnfunc)(bool);
} svar;

#endif
Run Code Online (Sandbox Code Playgroud)

noreturn.h:

#ifndef NO_RETURN_H
#define NO_RETURN_H
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
#define noreturn _Noreturn
#elif defined(__GNUC__)
#define noreturn __attribute__((noreturn))
#else
#define noreturn
#endif
#endif …
Run Code Online (Sandbox Code Playgroud)

c gcc c11 noreturn

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

使用 Structs 模拟 C 中的类

我被限制在比赛中使用 C,我需要模拟课程。我正在尝试构建一个简单的“点”类,它可以返回并设置一个点的 X 和 Y 坐标。然而,下面的代码返回诸如“未知类型名称点”、“预期标识符或(”和“预期参数声明符”等错误。这些错误是什么意思?我该如何纠正它们?这是编写“的正确方法”伪类”?

typedef struct object object, *setCoordinates;

struct object {
    float x, y;
    void (*setCoordinates)(object *self, float x, float y);
    void (*getYCoordinate)(object *self);
    void (*getXCoordinate)(object *self);
};

void object_setCoordinates(object *self, float x, float y){
    self->x = x;
    self->y = y;
}

float object_getXCoordinate(object *self){
    return self->x;
}

float object_getYCoordinate(object *self){
    return self->y;
}

object point;
point.setCoordinates = object_setCoordinates;
point.getYCoordinate = object_getYCoordinate;
point.getXCoordinate = object_getXCoordinate;

point.setCoordinates(&point, 1, 2);
printf("Coordinates: X Coordinate: %f, Y Coordinate: %f", point.getXCoordinate, point.getYCoordinate); …
Run Code Online (Sandbox Code Playgroud)

c struct class

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

C结构中的函数定义?

我有一个我需要理解的C代码.有一个

typedef struct someStruct {
    int i; 
    char c; 
    someStruct() {
        i = 0;
        c = 'c';
    }
    someStruct(char inpChar) {
        i = 1;
        c = inpChar;
    }
} t_someStruct;
Run Code Online (Sandbox Code Playgroud)

(我知道,代码实际上没有意义或有用.我只是简化它.)所以有这个结构,它有两个成员(int i和char c).有趣的是它基本上有两个构造函数,这对我来说是一个新概念.它工作正常,但我们可以编写结构的构造函数吗?我在谷歌上找不到任何东西,也许我没找对.

c constructor struct

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

标签 统计

c ×5

function-pointers ×2

struct ×2

c11 ×1

class ×1

constructor ×1

gcc ×1

noreturn ×1

oop ×1

vtable ×1