相关疑难解决方法(0)

"静态"在C中意味着什么?

static在C代码中看到了不同地方使用的单词; 这就像C#中的静态函数/类(其中实现是跨对象共享的)?

c syntax static

1062
推荐指数
15
解决办法
86万
查看次数

什么是"静态"功能?

问题是关于普通函数,而不是 static方法,正如评论中所阐明的那样.

好的,我理解static变量是什么,但什么是static函数?

为什么如果我声明一个函数,让我们说void print_matrix,让我们说a.c(WITHOUT a.h)和include "a.c"- 我得到"print_matrix@@....) already defined in a.obj",但是如果我声明它static void print_matrix然后它编译?

更新只是为了清理 - 我知道包括.c很糟糕,正如你们许多人指出的那样.我只是做它在暂时清除空间main.c,直到我有更好的想法如何将所有这些功能集成到适当.h.c文件.只是一个临时的快速解决方案.

c static terminology function

465
推荐指数
11
解决办法
55万
查看次数

静态与非静态函数 - 调试嵌入式系统上下文

我对以下问题感到困惑:如何保持"静态"标签的优势,但仍然能够在现场调试生产代码?

一旦发生意外行为发生在客户站点,并且仅在那里发生.在许多情况下,可以选择执行调试可以节省大量精力并提供非常快速的响应.这样的调试通常涉及检查函数行为,这使我们进入"静态"定义.

无法从调试shell调试静态函数,例如放置断点或执行它.另一方面,将所有函数定义为public会导致代码结构和优化悲伤.

我知道有一些选项,比如编译至少两个不同的版本,一个是静态的,一个是没有,但是这很适合自动化测试,而不是最终的生产版本.

我们会从您这里获得一些见解,主要是关于您如何解决(如果有的话)这种困境.或者将问题改为:" 什么更重要? "

这里对C中"静态"的讨论很好.

c embedded debugging static

7
推荐指数
1
解决办法
2135
查看次数

应该在哪里放置非接口函数原型?

我反复阅读过头文件应该包含其他文件使用源代码所需的所有声明.假设您有一个不被其他源文件直接使用的函数(换句话说,非接口函数).它的原型应该放在.c文件的顶部,因为它不会被其他文件使用吗?或者它应该放在带有所有其他函数的头文件中,以便在一个地方完全汇总.c文件中的函数?

c header-files function-prototypes

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

C中静态功能的目的

我知道静态函数的名称只在声明它的文件(翻译单元)中可见.这使得封装成为可能.

但是静态函数通常在源文件中声明,因为如果你在头文件中执行它,你最终会得到它的多个实现(我认为这不是我的意图static).

例:

main.c中

#include "functions.h"

int main()
{
    FunctionA();
    FunctionB(); // Can't call regardless of "static".
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

functions.h

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

void FunctionA();

#endif /* FUNCTIONS_H */
Run Code Online (Sandbox Code Playgroud)

functions.c

#include "functions.h"
#include <stdio.h>

static void FunctionB(); // Same whether "static" is used or not.

void FunctionA()
{
    printf("A");
}

void FunctionB()
{
    printf("B");
}
Run Code Online (Sandbox Code Playgroud)

那么什么时候static有用?

c static function

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