我想显示输出 - 数字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中定义.但在我的情况下,我有一个用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链接的模板).我怀疑的是,甚至可以用这种方式调用这个模板函数吗?如果是,那怎么能实现呢?谢谢.