• .c与.cpp文件的一点区别


            在编译源文件时,C编译器和C++编译器都会对符号(函数或变量)名作某些修正,但两者采用的修正方法不同,所以两者生成的目标文件不能互相链接。在C++中使用extern "C"可以让C++符号获得C链接特性。由于C++编译器会自动定义__cplusplus宏,所以在C语言头文件中采用这种结构可以保证无论使用何种编译器,生成的目标文件都具有C链接特性,能够与标准C编译器所生成的目标文件相链接。

    通常c/c++编译器会根据文件后缀来选择符号修正,所以最好把c的代码放到.c文件中,把c++的代码放到.cpp文件中。

    我用VC++6.0创建动态库,做了以下试验。

    在test.cpp中输出c函数,如下:
    1、新建Win32 Dynamic-Link Library
    2、输出函数
    extern "C" _declspec(dllexport) void far test();

    void far test()
    {
     
    }

    而在test.c中输出c函数,就可以这样,如下:
    1、新建Win32 Dynamic-Link Library
    2、输出函数
    _declspec(dllexport) void far test();

    void far test()
    {
     
    }

    看来.c和.cpp还是有很大区别的

  • 相关阅读:
    hdu多校4
    hdu多校第三场
    牛客多校4
    bzoj 1477 扩展欧几里德
    bzoj 1485 卡特兰数 + 分解因子
    hdu多校 2
    牛客网暑期多校2
    bzoj 1040 基向内环树dp
    hdu 多校第一场
    SPOJ
  • 原文地址:https://www.cnblogs.com/youyou/p/296165.html
Copyright © 2020-2023  润新知