C++:这是使用整数变量作为函数调用指针的正确方法吗
C++: is this a correct way to use integer variables as pointers to a function call?
我是C++新手。
上下文:我发现似乎有效的第三方代码片段,但基于我对C++的(非常有限的(知识,我怀疑会引起问题。摘录如下:
int aVariable;
int anInt = 1;
int anotherInt = 2;
int lastInt = 3;
aVariable = CHAIN(anInt, anotherInt, lastInt);
其中CHAIN定义如下(这是库的一部分(:
int CHAIN(){ Map(&CHAIN, MakeProcInstance(&_CHAIN), MAP_IPTR_VPN); }
int _CHAIN(int i, int np, int p){ return ASMAlloc(np, p, &chainproc); }
int keyalloc[16384], kpos, alloc_locked, tmp[4];
int ASMAlloc(int np, int p, alias proc)
{
int v, x;
// if(alloc_locked) return 0 & printf("WARNING: you can declare compound key statements (SEQ, CHAIN, EXEC, TEMPO, AXIS) only inside main() call, and not during an event.xa");
v = elements(&keyalloc) - kpos - 4;
if(v < np | !np) return 0; // not enough allocation space or no parameters
Map(&v, p); Dim(&v, np); // v = params array
keyalloc[kpos] = np + 4; // size
keyalloc[kpos+1] = &proc; // function
keyalloc[kpos+2] = kpos + 2 + np; // parameters index
while(x < np)
{
keyalloc[kpos+3+x] = v[x];
x = x+1;
}
keyalloc[kpos+3+np] = kpos + 3 | JUMP;
x = ASMFind(kpos);
if(x == kpos) kpos = kpos + np + 4;
return x + 1 | PROC; // skip block size
}
int ASMFind(int x)
{
int i, j, k; while(i < x)
{
k = i + keyalloc[i]; // next
if(keyalloc[i] == keyalloc[x]) // size
if(keyalloc[i+1] == keyalloc[x+1]) // proc
{
j = x-i;
i = i+3;
while(keyalloc[i] == keyalloc[j+i]) i = i+1; // param
if((keyalloc[i] & 0xffff0000) == JUMP) return x-j;
}
i = k;
}
return x;
}
编辑:
奇怪的是运行
CHAIN(aVariable);
有效执行
CHAIN(anInt, anotherInt, lastInt);
不知怎么的。这让我相信aVariable实际上是一个指针。
问题:
将参数化函数调用存储到这样的整数变量中是否正确?"aVariable"是否只是一个指针,或者这可能会破坏随机内存区域?
您正在调用一个函数(通过模糊接口(,并将结果存储在一个整数中。它可能会引起问题,也可能不会引起问题,这取决于你如何使用这个值/你期望它意味着什么。
您的示例包含太多未定义的符号,读者无法提供更好的答案。
另外,我认为这是C,而不是C++代码。
相关文章:
- 使用共享指针的函数调用,其对象应为 const
- 返回指向对象的指针的函数调用是否为 prvalue?
- VkSurfaceKHR 指针的值在函数调用后更改,无需任何显式赋值
- 指针在函数调用后更改其地址
- C++:这是使用整数变量作为函数调用指针的正确方法吗
- 使用函数指针时,ESP 未在函数调用中正确保存
- 为什么分配了 nullptr 的指针可以调用成员函数?
- 函数调用歧义(用户定义的转换和 Derived2Base 指针转换)
- 创建指针时是否没有构造函数调用
- 在父指针上调用虚函数
- 如何从另一个类调用指向成员的指针函数
- 在数组函数指针中调用void
- 这些函数调用的返回指针的区别是什么?
- 为什么我不能在插入的函数调用中直接使用返回的指针作为参数
- C++ 通过函数指针错误调用成员函数
- 函数调用中的 void 指针在 C++ 与 C 中
- 析构函数在与 STL 的共享指针中调用两次
- C++ 指针 - 函数调用中的重新分配
- C++递归指针函数调用
- 如何编写一个可以处理对象或指针函数调用的模板函数