- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Geany 项目有一个奇怪的问题。该项目非常简单,包含 3 个文件,均位于同一目录中:main.c
、foo.h
和 foo.c
。
编译器错误:
In file included from main.c:1:0:
foo.h:4:12: warning: ‘bar’ used but never defined
static int bar(void);
^
/tmp/cc0zCvOX.o: In function `main':
main.c:(.text+0x12): undefined reference to `bar'
Compilation failed.
collect2: error: ld returned 1 exit status
出了什么问题?
main.c:
#include "foo.h"
int main(int argv, char* argc[])
{
bar();
return 0;
}
foo.h:
#ifndef _FOO_H_
#define _FOO_H_
static int bar(void);
#endif // _FOO_H_
foo.c:
#include "foo.h"
#include <stdio.h>
static int bar(void)
{
printf("Hello World\n");
return 1;
}
最佳答案
如果函数被声明为static
,则该函数位于文件范围中,意味着该函数的范围仅限于翻译单元(在这种情况下,源文件)。存在于同一编译单元中的其他函数可以调用该函数,但存在于编译单元之外的函数无法看到定义(存在)或调用该函数。
相关:来自C11
标准文档,章节,标识符的链接
If the declaration of a file scope identifier for an object or a function contains the storage class specifier
static
, the identifier has internal linkage.(30)
以及脚注 (30),
A function declaration can contain the storage-class specifier
static
only if it is at file scope;
解决方案:去掉函数定义和声明中的static
。
FWIW,将 static
函数的前向声明放在头文件中没有多大意义。无论如何,static
函数不能从其他源文件调用。
关于c - Geany 项目包含编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29959407/
我想在命令行调用 geany 时打开一个现有项目。这似乎是一个明显的需求,但我没有看到任何允许这样做的命令行选项。 有人知道吗? 最佳答案 要从命令行打开一个 geany 项目,只需将项目文件作为参数
我是 Geany 文本编辑器的忠实粉丝。我用它来编写 Python、C 和作为一个简单的文本编辑器。 我的问题如下: 假设我打开了一个文件 example.txt,它包含: https://www.y
如果在 geany 中打开的文件被另一个程序修改,然后 geany 被带到前面,那么 geany 会显示一个模式对话框,如下所示。 The file 'stuff.txt' on the disk i
Geany 是我能找到的最接近完美 Web 开发 IDE 的东西。但是,我找不到自动关闭大括号 ( { ) 的方法。 例如,键入: function test() { ..并按 RETURN 应该会导
我刚开始使用 Geany 一个星期。而且总是必须按 F9 来构建然后按 F5 才能运行,这太糟糕了。 那么有什么方法可以配置 Geany 以便它可以构建然后立即执行(如 CodeBlocks 中的 F
我正在寻找一种在 Geany 中对行进行排序的方法。 然后找到了下面的解决方案。 最佳答案 我在 http://crunchbang.org/forums/viewtopic.php?id=24607
为了方便起见,我对首选项进行了相当多的更改。现在,我想将其安装在几台具有修改后的首选项的计算机上。 如果我可以将修改后的安装中的首选项/设置文件复制到新安装文件夹中,而不是一一修改每个新安装的首选项,
在 Geany 中,编辑 PHP 脚本时,当您选择行并按下 control-e 时,所选行将被注释为包含在“/* ... */”中。有没有办法改变这种行为,让它在每行前面放一个“//”? 我用过的所有
我主要将 Geany 用于 Python,因此我将缩进类型设置为空格并将缩进宽度设置为 4。但是在使用 HTML 时,我想使用 2 个空格。 有没有办法告诉 Geany 在处理 HTML 文档时自动切
我是第一次尝试 Geany。编译和构建工作正常(并且确实自动检测到命令),但是我无法让 Execute 做任何事情。 我的设置: 新建项目 将基本的 C hello world 保存为 hello-w
http://michaeljaylissner.com/blog/using-pylint-in-geany#comments 这篇博客说将构建命令设置为 pylint -r no "%f" 并设
我经常使用 geany 文本编辑器。 我已经激活了插件 MultiTerm,但是问题是字体太小,无法增大字体大小。 尝试: 1. 在 MultiTerm 和 Cmd + 中选择文本2. 在 Multi
在 Geany 中,是否可以使用键盘快捷键同时缩进多行(而不是手动键入每个缩进)? 最佳答案 也许我没有正确理解这个问题,但是 TAB 键和 CTRL+i 快捷键在多行时确实可以做到这一点已被选中。
我不知道我做了什么,但突然间我的 geany 编辑器没有打印一些特殊字符,比如 (. , 时间和语言 > 语言 > 键盘 将输入法覆盖为英语(加拿大)-美国 关于text - Geany 编辑弄乱了
Geany's documentation on negative assertions让它们看起来像是可能的。 作为引用,这有效并给了我结果: pcregrep -r "(?tools->grep)
有没有一种方法可以使用 geany 文本编辑器一次性突出显示要注释掉的一段代码? 最佳答案 Control-E 切换评论。 关于comments - Geany 文本编辑器评论,我们在Stack Ov
我的 Geany 项目有一个奇怪的问题。该项目非常简单,包含 3 个文件,均位于同一目录中:main.c、foo.h 和 foo.c。 编译器错误: In file included from mai
当我运行并构建一个简单的程序时,它失败了。这是错误消息: g++ -Wall -o "main" "main.cpp" (in directory: /home/markuz/Desktop) /tm
我正在 Geany(C++ IDE)中为 Linux 编写 CLI 应用程序。我想链接一个简单的配置文件读取器类,以便它可以在我的程序中使用。仅仅包括它是行不通的,我得到 undefined refe
我最近开始使用名为 Geany 的轻量级 IDE。它非常高效,占用资源少,并且具有我需要的所有基本功能。它内置了很多编程语言的语法高亮显示,包括我正在编写代码的 C++,但是一些高亮显示似乎无法正常工
我是一名优秀的程序员,十分优秀!