我有一个头文件,假设abc.h,其中我有如下函数声明:
static int function1();
我在abc.c中包含了这个头文件,并定义了函数并使用了它。
static int function1()
{
< function definition>
}
编译后,我收到警告:
warning: function1 declared static but never defined
如何在不删除静态的情况下删除警告。谢谢。
假设我想在编译内核之前在arch/x86/boot/string.c中使用printk()。我必须包含哪个头文件,以便链接器知道在哪里可以找到printk()?我尝试了#include <linux/kernel.h>和#include <linux/printk.h>,但在make bzImage期间总是收到错误,告诉我链接器找不到printk
arch/x86/boot/compressed/string.o: In function `memcmp`:
string.c:(.text+0x19): undefined reference to `printk`
我有一个与函数模板相关的简单问题。假设我有一个头文件,其中包含一个带有名为f的模板方法的类:
class test
{
public:
template < class T > void f(T t) {}
};
如果这个头文件包含在几个.cpp文件中,并且每个.cpp都调用相同类型的f (假设是int),那么我可以将函数的指针放在代码中的其他地方吗?考虑到可能有几个定义,链接器会只保留一个吗?
嗨,我注意到如果我在.cpp中包含了一个头文件,那么我就可以创建那个头文件类的一个对象。就像我在main.cpp中包括main.cpp一样,我可以用main.cpp编写A *a;。但是,如果我在另一个头文件中包含一个头文件,然后尝试创建其中包含的头文件的对象,这是行不通的。喜欢,
B.h**:** 文件
#include "A.h"
class B
{
public:
B(){};
A *a;
};
我必须添加类A的前向声明才能使其工作。为什么?
我有一个头文件。在这个头文件中,我想使用一个类的映射。但是在我包含之后,我得到了一个拷贝,因为我在项目(非常大的项目)中有一个no matching function error ()函数。我在这个网站的上看到地图包含一个using std::copy,所以我猜它会与之冲突。
我不能对复制函数进行任何更改,所以有没有办法在这个头文件中使用map?(没有其他地方)。有没有办法让我的复制功能不会冲突?
我在Windows7上使用Visual Studio 2008。