c++ - c++是否允许在任何函数之外调用函数?

标签 c++ linux

我有代码

#include <stdlib.h>

void *gg = malloc(55);

int main(int argc, char **argv)
{
        return 0;
}

gcc 无法编译,但 g++ 可以。

所以,我只想确保 malloc 调用发生在 main 执行之前。

最佳答案

你做的事在 C++ 中是允许的。 C++ 标准有一整节关于 "Dynamic initialization of non-local variables" .

查看程序集 generated by GCC对于您的代码具有指导意义:

此处初始化器通过两个生成的函数调用,_GLOBAL__sub_I_gg(在 main 之前调用)依次调用 __static_initialization_and_destruction_0

在后一个函数的主体中,您会发现对 malloc 的调用。

关于c++ - c++是否允许在任何函数之外调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55177633/

相关文章:

c++ - 在 C++ 中使用 SSE2 SIMD 对两个数组求和的正确方法

c++ - Model View Controller 设计模式代码示例

Python3.6 导入错误 : cannot import name 'main' Linux RHEL6

linux - 直接从 GitLab 私有(private)仓库打开文件

linux - 如何使 xterm 命令行像 vim 一样工作

C++ 结构成员字符串数组,需要一个表达式

c++ - 使用 C++ 播放 avi

c++ - 类命名空间?

linux - 无法从嵌套子 shell 传递变量

windows - Wine 的对立面是什么?