小编Ale*_*der的帖子

我们可以在没有#ifdef __cplusplus的C文件中使用extern"C"吗?

为什么不extern "C"应该为需要定义为C函数的函数指定?将文件编译为C源时,对编译器有什么影响?

如果对C编译器没有影响,我们不能通过删除#ifdef __cplusplus检查来在头文件中定义一个函数,如下所示吗?

extern "C" {
    int MyFunc();
}
Run Code Online (Sandbox Code Playgroud)

另一个问题的答案#ifdef需要,但我不明白为什么:

关于#2:将为正在通过C++编译器运行的任何编译单元定义__cplusplus.通常,这意味着.cpp文件和该.cpp文件包含的任何文件.如果不同的编译单元包含它们,则相同的.h(或.hh或.hpp或what-have-you)可以在不同的时间被解释为C或C++.如果您希望.h文件中的原型引用C符号名称,那么它们extern "C"在被解释为C++时必须具有,并且extern "C"在被解释为C时它们不应该具有- 因此#ifdef __cplusplus检查.

c c++ extern-c

8
推荐指数
1
解决办法
4926
查看次数

双重删除数据不会崩溃

我正在尝试学习C++,并且正在编写程序来学习复制构造函数和运算符重载.我很惊讶下面的程序使用Copy构造函数时不会崩溃说"Double Free",而使用Operator = overloading时会一直崩溃.

#include <iostream>
using namespace std;

class XHandler
{
    public:
    XHandler()
    {
            data = new char[8];
            strcpy(data, "NoName");
    }
    XHandler (const char *str)
    {
            data = new char (strlen(str) + 1 );
            strcpy (data, str);
    }
    XHandler (const XHandler &xh)
    {
            data = xh.data;
    }
    XHandler& operator = (const XHandler &xh)
    {
            data = xh.data;
    }
    ~XHandler()
    {
            delete data;
    }
    void debug()
    {
            cout << data <<endl;
    }
    private:
    char *data;
};

int main()
{
    XHandler …
Run Code Online (Sandbox Code Playgroud)

c++ memory

4
推荐指数
1
解决办法
187
查看次数

Azure DevOps 将 iOS 应用程序部署到 Firebase 应用程序分发

我有一个构建 iOS 应用程序的 Azure 管道。我正在寻找一种将 .ipa 文件部署到 Firebase 应用程序分发的方法。我找不到任何提供执行此操作的步骤的文档或参考。我看到几篇文章解释了我们可以使用 PowerShell 发布到 Firebase 应用程序分发。有没有我可以参考的参考 Azure Pipeline yaml?我对 Azure DevOps 管道还很陌生,无法完成这一步。

azure firebase azure-devops azure-pipelines

2
推荐指数
1
解决办法
1535
查看次数

标签 统计

c++ ×2

azure ×1

azure-devops ×1

azure-pipelines ×1

c ×1

extern-c ×1

firebase ×1

memory ×1