小编cee*_*dee的帖子

动态跳转到C中的标签

我想显示输出 - 数字1到5,然后是无限的4-5.有什么方法可以传递i(4)的值而不是goto1中的字符i.或者是否有任何其他有效的方法来实现这一点,而没有说明开关中的所有选项(即案例1:goto1(c1)等...).

主要目的是跳转到在程序中计算其标签的语句.

#define goto1(i) \
goto c##i

int main(){    
    c1 : printf(" num is 1 \n");
    c2 : printf(" num is 2 \n");
    c3 : printf(" num is 3 \n");
    c4 : printf(" num is 4 \n");
    c5 : printf(" num is 5 \n");

    int i=4;
    goto1(i);
}
Run Code Online (Sandbox Code Playgroud)

c

6
推荐指数
2
解决办法
3556
查看次数

从C文件调用模板函数

我知道模板没有在C中定义.但在我的情况下,我有一个用C++编写的API,由C编写的应用程序使用.我希望在API中添加模板函数.该函数在abc.cpp中定义如下:

template<typename T> T function_name(T param1){
  ...
  ...
  return val;
}
Run Code Online (Sandbox Code Playgroud)

abc.hpp中的声明如下:

template<typename T> T function_name(T);
Run Code Online (Sandbox Code Playgroud)

并且从xyz.c调用此函数:

int a ,b = 5;
a = function_name(b);
Run Code Online (Sandbox Code Playgroud)

但是,它在abc.cpp和abc.hpp中都显示以下错误:

 error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token
 template<typename T>
Run Code Online (Sandbox Code Playgroud)

即使使用extern"C"也无济于事(导致错误:带C链接的模板).我怀疑的是,甚至可以用这种方式调用这个模板函数吗?如果是,那怎么能实现呢?谢谢.

c c++ templates template-function

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

标签 统计

c ×2

c++ ×1

template-function ×1

templates ×1