1
A
回答
1
这真的是唯一可行的办法是,如果任一
- 你必须声明和定义一个头文件里面
- 你得到一个函数指针
- 有些疯疯两轮牛车的方式
- 你有整个程序的来源
对于#1我把一个例子hea der文件我们可能正在处理:
#ifndef TEST_H
#define TEST_H
#include <stdio.h>
static int foo(int a, int b) {
return printf("Frobination: %d-%d\n",a,b);
}
#endif
虽然在头文件里面做这件事有点奇怪,但并非不可能。在这种情况下,我们可以把它包装成正常使用:
%module test
%{
#include "test.h"
%}
%include "test.h"
并运行它为:需要提醒的是这是当然的静态函数的本地版本,在这里被使用,就像
Python 2.7.3 (default, Aug 1 2012, 05:16:07)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import test
>>> test.foo(1,2)
Frobination: 1-2
17
>>>
正常情况下有多个翻译单元和静态函数。
#2,我们可能有头文件:
#ifndef TEST_H
#define TEST_H
typedef int (*fptr)(int a, int b);
extern fptr foo;
#endif
和,作为一个执行:
%module test
%{
#include "test.h"
%}
int foo(int a, int b);
其中:
#include "test.h"
#include <stdio.h>
static int foo_impl(int a, int b) {
return printf("Frobination: %d-%d\n",a,b);
}
fptr foo = foo_impl;
然后我们可以用包我们向SWIG撒谎并声称foo不是函数指针,但它起作用并且完全合法,因为所有的ge星号代码有效。
对于#3,我们可以在理论上,通过各种平台特定的非便携挂羊头卖狗肉提取静态函数住在成函数指针的地址,但那是脆弱的,全方位的一个坏主意。
对于#4,如果你有可用的源,然后你回家免费。
相关问题
- 1. 静态线程函数访问非静态类成员在C++
- 2. 访问从静态函数
- 3. 访问静态函数
- 4. 访问从静态函数
- 5. 在swift类的静态函数中访问非静态常量
- 6. C#中静态类访问
- 7. C++访问一个静态函数中的私有静态变量
- 8. 在C++中访问静态类变量?
- 9. 在C#中静态函数中访问服务器变量的问题
- 10. asp.net从静态函数访问控件
- 11. 如何访问一个静态函数
- 12. 静态函数访问类的成员
- 13. Python3:从子类访问静态函数
- 14. 如何静态函数访问类
- 15. 从外部静态库访问函数
- 16. 静态函数访问的速度
- 17. c中的静态函数
- 18. 在c + +静态虚函数
- 19. 从静态成员函数访问静态映射 - 分段错误 - C++
- 20. 访问静态变量的报价从静态函数
- 21. 从静态函数访问非静态字段
- 22. 在C++中,是否可以在构造函数中访问静态变量?
- 23. 静态函数调用非静态函数在C++
- 24. 静态函数可以在php中访问非静态变量吗?
- 25. C++中是否存在“静态类”,就像静态函数意味着要在同一个文件中访问?
- 26. C#从静态类访问函数的调用线程之外
- 27. C++成员函数访问私有静态变量?
- 28. 在C++中更新静态函数中的非静态成员
- 29. C中的静态函数可以在其他文件中访问
- 30. 从动态DLL访问静态链接库中的静态变量/函数
我很困惑这将如何工作 - 如果一个函数在C中是静态的,它不能在同一个C程序中的另一个翻译单元中被访问。唯一可能的方法是如果函数定义在某个头文件中。 – Flexo