相关疑难解决方法(0)

如何确定指针大小的预处理器C

我正在开发OpenGL的软件实现,而OpenGL似乎要求我返回32位指针。为了节省时间,我将其放入64位系统的C语言map中,以便从32位伪地址中检索64位指针。但是,在32位系统上,这会造成麻烦,因此我应该逐字使用指针。

这基本上是我要在共享标头中执行的操作:

#if <64-bit>
    #include <search.h>
    extern void * pointerTable;
    typedef struct {
          int key;
          void* value;
    } intPtrMap;

    inline int compar(const void *l, const void *r) {
        const intPtrMap *lm = l;
        const intPtrMap *lr = r;
        return lm->key - lr->key;
    }

    inline uint32_t allocate(size) {
        void* result = malloc(size);
        intPtrMap *a = malloc(sizeof(intStrMap));
        a->key = (uint32_t) result;
        a->value = result;
        tsearch(a, &pointerTable, compar);
        return (uint32_t) result;
    }

    inline int getPtr(ptr) {
        intPtrMap *find_a = malloc(sizeof(intPtrMap));
        find_a->key = ptr; …
Run Code Online (Sandbox Code Playgroud)

c pointers

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

sizeof C中的函数类型

我有一些关于sizeof运算符的情况,它与函数类型一起使用.

案例1: [现场演示]

#include <stdio.h>

char func()
{
    printf("sizeof func = %zu\n", sizeof(func())); //Ok. Output : 1
    return 0;
}

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

sizeof(func())用C有效吗?

案例2: [现场演示]

printf("sizeof func = %zu\n", sizeof(&func())); // error
Run Code Online (Sandbox Code Playgroud)

它不起作用.编译器给出错误.为什么?

案例3: [现场演示]

printf("sizeof func = %zu\n", sizeof(&func)); //Ok. Output : 8
Run Code Online (Sandbox Code Playgroud)

在这里,sizeof(&func)等于指针的大小?

这里,案例3工作正常,其中案例2给出错误.为什么?

c gcc function sizeof c11

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

不同的函数指针是否相互兼容?

今天我了解到函数指针和数据指针不一样,因此彼此不兼容(为什么函数指针和数据指针在C/C++中不兼容?).然而,我的问题是,不同的函数(非成员)指针是否相互兼容(以相同的方式实现).

在代码中:

typedef void(*FuncPtr0)();
typedef void(*FuncPtr1)(int);

FuncPtr0 p0;
FuncPtr1 p1;

p0 = reinterpret_cast<FuncPtr0>(p1);    // will this always work, if p1 really 
p0();                                   // points to a function of type FuncPtr0
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

c++ pointers function-pointers

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

C 中指针的大小

如何找到“指针”类型的大小?例如,如果我想知道整数的大小,我可以使用“sizeof(int)”。指针相当于什么?是否可以在不初始化指针的情况下执行此操作?

c pointers sizeof

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

标签 统计

c ×3

pointers ×3

sizeof ×2

c++ ×1

c11 ×1

function ×1

function-pointers ×1

gcc ×1