导航:首页 > 源码编译 > 函数c模板不能编译

函数c模板不能编译

发布时间:2024-12-31 19:03:37

㈠ 模板类无法编译通过,谁能帮我解释

返回值前面加个 typename就可以,
这是为了告诉编译器class_A<T>::struct_A是一种类型而不是类的成员变量

其实:
warning C4346: “class_A<T>::struct_A” : 依赖名称不是类型
用“typename”为前缀来表示类型
编译器说的非常明确了!

VS7.1上编译通过!VS6.0不知道可不可以!

template <class T>
typename class_A<T>::struct_A* //---这里加个typename
class_A<T>::generate_new_struct_A_instance()
{
struct_A * new_instance = new struct_A;
new_instance->a = 1;
new_instance->b = 2;
return new_instance;
}

///
改成double 为什么可以,我很长时间没看模板了,具体我也不清楚!
我估计对于特化的函数是把它当作一般函数那样编译的!

㈡ TC 2.0 中clrsrc函数不能被编译

或标签) ,该连接器无法找到所有的图书馆和目标文件它的搜索。一般情况下,有两个原因发生此错误:什么代码要求不存在(符号拼写错误或使用了错误的情况下,例如) ,或要求的代码错误的(您使用的是混合版本图书馆?一些从一个版本的产品,另一些从另一个版本) 。

无数种编码和编译错误可能会导致LNK2001 。有几个具体原因下面列出,一些有联系的更详细的解释。
编码问题

不匹配的情况下在您的代码或模块定义( 。画质)文件可能会导致LNK2001 。例如,如果您命名一个变量“ var1 ”在一个C + +源文件,并尝试使用它作为“ VAR1 ”在另一个,你会收到此错误。解决办法是完全匹配的情况下,文中所有提及。

一个项目,使用功能内嵌尚未确定了职能。 cpp文件,而不是在头文件可能会导致LNK2001 。

如果您使用的是C + +中,请确保使用外部的“ C ”时调用C函数的C + +程序。通过使用外部的“ C ”您的使用武力的C命名约定。了解编译器开关一样/总蛋白或/锝武力将文件编译为一个C ( /技术合作)或C + + ( /总蛋白)档案不管文件扩展名,或者您可能会得到不同的函数名比您预期的。

试图参考功能或数据不具备的外部联系的原因LNK2001 。 C + +中,内置的功能和构造数据内部的联系,除非明确指定为外部。

丢失函数机构或变量会导致LNK2001 。刚刚一个函数原型或外部宣言将使编译继续,没有错误,但链接将无法解决您的电话的地址或参考变量,因为没有功能代码或变量空间保留。

姓名装修采用参数的函数进入最后装饰功能名称。调用一个函数的参数类型不匹配是在函数声明可能会导致LNK2001 。

错误包括原型将导致编译预期功能的机构,不提供。如果您同时拥有一类和非类执行函数F ,小心C + +的范围内解决的规则。

当使用C + +中,一定要包括执行特定功能的一类,而不只是一个原型的类的定义。

试图调用一个纯虚函数的构造函数或析构函数的抽象基类将导致LNK2001因为按照定义一个纯虚函数没有基类执行。

全球唯一的函数和变量是公开的。
职能宣布与静态修饰的定义文件的范围。静态变量具有相同的限制。试图访问任何静态变量以外的文件,他们被宣布可能会导致出现一个编译错误或LNK2001 。

一个变量的函数内宣布(一局部变量)只能使用范围之内的这一职能。

C + +的全球静态常量有联系。这是不同于c.如果您尝试使用全球不断在C + +的多个文件你错误LNK2001 。一个办法是包括常量初始化的一个头文件,其中包括在您的头。 cpp文件必要时,就好像它是一个函数原型。另一种办法是使变量非恒定和使用时参考不断评估它。

㈢ C语言如何实现头文件不定义函数名,然后c文件里就不编译该函数,或者其他能实现这样效果的办法

采用条件编译即可。

在.h头文件中加上

#if1
#defineFUNC_ENABLE
voidfun();
#endif

在.c中加上

#ifdefFUNC_ENABLE
voidfun(){printf("OK ");}
#endif

当我们不想编译该函数时,加#if 1改为#if 0即可。

例子:

#include<stdio.h>

#if1
#defineFUNC_ENABLE
voidfun();
#endif

#ifdefFUNC_ENABLE
voidfun(){printf("OK ");}
#endif
intmain(void){
fun();
return0;
}

㈣ c语言的gets函数编译不成功阿,很短的程序

C语言的gets函数一般包含在stdio.h头文件里,如果没有包含比头文件那可能会有问题。第二种情况包含了还出问题,说明你的编译器已经不支持这个函数了,这个函数非常不安全,容易造成溢出,建议换成fgets函数。

函数原型

char *fgets(char *buf, int bufsize, FILE *fp);

数解释:

参数一是输入字符串存放地址,

参数二是存放地址最大容量,

参数三是从哪里输入,可以从文件也可从输入设备,如果从输入设备输入这个参数可以写成stdin,如果从文件输入此参数为文件指针。

返回值

输入成功返回参数一,失败返回NULL.

补充知识:

为什么gets不让用呢,我们可以看它的原型:char *gets(char *buf);

这个函数可以一直输入知道换行或者EOF,它并不考虑buf空间是否足够大能放下,这就容易导致溢出,有些别有用心的人就会利用这个漏洞去攻击你的程序。

而fgets可以通过第二参数保证不会读入超过buf空间的字符。

㈤ 我自己写了一个函数定义在另一个.c文件中,已声明,但编译时报错未定义

在定义函数的.c文件中包含声明函数的.h文件。例如:

//f1.h
#include <stdio.h>
void func(int x);
//f1.cpp
#include "f1.h"
void func(int x)
{
//函数定义
}
//main.cpp
#include "f1.h"
void main()
{
int x = 2;
func(2);
}
阅读全文

与函数c模板不能编译相关的资料

热点内容
怎么解压成lmf3格式 浏览:310
云服务器设置端口转发 浏览:585
数学分析复旦pdf 浏览:280
用什么能改打印服务器 浏览:145
上海不动产权证怎么加密码 浏览:587
linux推荐版本 浏览:574
安卓网格布局有什么特点 浏览:327
生化危机用什么app看 浏览:916
布谷鸟搜索算法matlab 浏览:138
服务器的灯如何设置 浏览:862
单片机控制门流程图 浏览:304
沪漂女程序员跳槽 浏览:306
百度石榴算法指的是 浏览:786
怎么将文件压缩得尽可能小 浏览:447
linux开发常用命令 浏览:831
我的世界java版如何进入服务器 浏览:897
如何把jpg转换pdf格式 浏览:290
华为p10plus图片加密 浏览:369
宏杰文件夹加密密码忘了 浏览:620
dos命令rd 浏览:667