我有存储POD结构的数据结构(每个实例仅存储一个类型,因为它基本上是一个特定POD结构的数组).有时候另一个开发 将修改其中一个结构,添加或修改数据类型.如果添加了非POD元素,例如std :: string,则数据结构在运行时会爆炸,因为内存模型会发生变化.有没有办法在运行时使用编译器定义或调用来检测类或结构是否符合POD(以避免此维护问题)?我正在使用g ++(GCC)4.2.4.
我正在尝试调试位于共享库中的c/c ++代码,这些代码由python中的ctypes.cdll.LoadLibrary()加载,然后从python调用特定的函数.python代码分叉子进程,所以我需要能够破解是否从python父进程或子进程调用c函数.一个简单的例子:test.c
// j = clib.call1(i)
int call1(int i)
{
return i*2;
}
Run Code Online (Sandbox Code Playgroud)
test.py
import os, sys, ctypes
path = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), "test.so"))
clib = ctypes.cdll.LoadLibrary(path)
i = 20
j = clib.call1(i)
print "i=%d j=%d\n" %(i, j)
$ gcc -g -O0 test.c -shared -o test.so
$ gdb --args python-dbg test.py
(gdb) break test.c call1
Function "test.c call1" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (test.c call1) pending.
(gdb) info breakpoints
Num Type …Run Code Online (Sandbox Code Playgroud)