我正在照顾一个庞大的旧C程序,并将其转换为C ++(我是新手)。
程序必须在许多不同配置下的许多不同平台上运行,这一事实与许多复杂的预处理器黑客有关。
在一个文件(称为file1.c
)中,我正在调用functionA()
。
在另一个文件(称为file2.c
)中,我有一个functionA()
的定义。
不幸的是,函数的确切类型由以多种方式创建的宏集合指定。
现在,链接器在抱怨:
functionA是无法解析的外部符号。
我怀疑问题是在file1.c中看到的原型与在file2.c中看到的函数的真实定义稍有不同。
由于_cdecl
和fastcall
之间以及带有和不带有__forceinline
之间的不匹配,存在许多细微差异的范围。
是否有某种方法可以确切显示编译器认为的是functionA()
而不是file1.c
的file2.c
类型?
最佳答案
您可以将一个标志传递给编译器(/ P,我认为),该标志使它输出传递给编译器的完整的预处理输出-然后,您可以打开此(巨大)文件,并在其中搜索所需的信息会在那里。
关于c++ - 函数声明和 Unresolved external ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1502629/