记录遇到的一个问题:
一个C头文件,被外部工程引用,文件中有一个结构体A,有一个typedef AAlis A,在外部工程中用AAlis 就可以,用A就不行,答案就在这里
形式上,如果 typedef 声明定义了一个未命名的类或枚举,则声明声明的第一个 typedef-name 是该类类型或枚举类型,仅用于表示类类型或枚举类型,仅用于链接目的。例如,在 typedef struct { /* ... */ } S; 中,是用于链接目的的 typedef-name。以这种方式定义的类或枚举类型具有外部链接(除非它位于未命名的命名空间中)。
typedef specifier - cppreference.com
经常混用C++ 和 C,顺便提一提以C的方式导出符号的注意事项
在C++ 中以C的方式到处 要写 extern “C”
C导出符号的函数名是没有装饰过的,不支持函数重载,
C不支持bool
C不是C++,不支持引用
(写多了C++的人很容易遗忘。。。)