相关疑难解决方法(0)

如何使用avr-gcc在C/C++中执行预主要初始化?

为了确保之前运行一些初始化代码main(使用Arduino/avr-gcc),我有以下代码:

class Init {
public:
    Init() { initialize(); }
};

Init init;
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望能够简单地写:

initialize();
Run Code Online (Sandbox Code Playgroud)

但这不编译......

是否有一种不那么冗长的方式来达到同样的效果?

注意:代码是Arduino草图的一部分,因此该main函数是自动生成的,不能修改(例如initialize在任何其他代码之前调用).

更新:理想情况下,初始化将在setup函数中执行,但在这种情况下,还有其他代码,具体取决于之前发生的代码main.

c c++ initialization arduino avr-gcc

9
推荐指数
1
解决办法
8669
查看次数

如何在C和JAVA中的main()之前执行特定的函数?

我想在C和JAVA语言的main函数之前执行一个函数.我知道一种方法,就是#pragma在C语言中使用指令.在这两种语言中还有其他方法吗?

c java pragma

4
推荐指数
2
解决办法
7128
查看次数

在main之前执行任何功能

我想在main()之前执行用户定义函数.可以main()在c 之前执行一个函数吗?

sum(int a, int b) {   return (a+b); }

g_sum = sum(1, 5);

main(){
  sum(5, 6);
  printf("%d", g_sum);
}
Run Code Online (Sandbox Code Playgroud)

c

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

用于在任意翻译单元中的 main 之前执行任意代码的 C++ 成语

我有一个带有我的main()函数的翻译单元和另一个没有 main 的翻译单元。假设即使我只控制第二个而无法触摸第一个。

现在,由于我不会讨论的原因,我希望能够在运行之前运行一些代码main()。我知道这可以通过使用函数调用初始化全局变量来完成,但我想隐藏这一点 - 尽可能少地使用宏(我敢说不使用宏吗?可能不可能,C++ 中没有适当的静态块)

什么是优雅的,或者我们可以说,不是很丑的做这件事的方式?更清楚地说,我正在寻找可以多次使用此功能的东西,而不仅仅是让它工作一次的东西。我希望它尽可能接近:

// ... at global scope ...
static {
    // my code here
}
Run Code Online (Sandbox Code Playgroud)

PS:这个问题与这个关于初始化静态类成员的问题有关,但不一样。它还希望清楚地反驳这个声明,它不能在 C++ 中完成

注意:是的,我知道静态初始化顺序失败,不需要提醒我……而且我不是要求绕过它的东西。显然,静态运行代码需要一些谨慎。

c++ idioms static-block

0
推荐指数
1
解决办法
620
查看次数

标签 统计

c ×3

c++ ×2

arduino ×1

avr-gcc ×1

idioms ×1

initialization ×1

java ×1

pragma ×1

static-block ×1