2014-10-09 31 views
4

说我有这个库:移除结构是否构成ABI中断?

// lib.h 
typedef struct MyStruct { 
    int a; 
    int b; 
} MyStruct; 

int func(void); 

的所有功能都使用MYSTRUCT作为参数。是否可以在不破坏ABI的情况下删除MyStruct

+0

否。删除'MyStruct'将构成API中断。 – fuz 2014-10-09 16:24:23

+3

@FUZxxl:但OP的询问关于A ** B ** I。 – 2014-10-09 16:26:41

+0

@OliverCharlesworth哦,是的,在这种情况下删除'MyStruct'不会破坏ABI。 – fuz 2014-10-09 16:29:01

回答

5

一种ABI打破(而不是一个API断裂)不具有一个严格的定义(AFAIK),但是通常认为是指变形,比方说,使先前编译的一个库代码不再加载/正确运行。

作为库中未使用的结构定义源代码不会影响任何已编译的库工件,也没有什么可以通过删除它(在运行时)被破坏。