Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 可以用不同的头文件调用相同的函数吗?_C++ - Fatal编程技术网

C++ 可以用不同的头文件调用相同的函数吗?

C++ 可以用不同的头文件调用相同的函数吗?,c++,C++,我有一个功能: ---showme.cpp void showme () { std::cout <<"I am " << T << endl; } 我不确定是否有更好/更有效的方法。您应该更改函数以获取参数。调用函数时可以使用宏 void showme (int T) { std::cout <<"I am " << T << endl; } int main (int argc, char** argv)

我有一个功能:

---showme.cpp

void showme () {
   std::cout <<"I am " << T << endl;
}

我不确定是否有更好/更有效的方法。您应该更改函数以获取参数。调用函数时可以使用宏

void showme (int T) {
   std::cout <<"I am " << T << endl;
}

int main (int argc, char** argv) {
  // I want to call showme() with different "T" values defined by #define

  #define T 5
  showme(T);

  #define T 6
  showme(T);

}
void showme(int T){

std::cout根据注释中的解释,您真正想要的是拥有一个
模板
函数,因此您的示例应更改为:

#include <iostream>

template<size_t T> //or int or whatever other type you really need to use
void showme () {
   std::cout << "I am " << T << std::endl;
}

int main (int argc, char** argv) {
  showme<5>();

  showme<6>();
}
#包括
template//或int或任何您真正需要使用的其他类型
void showme(){

std::不能使用函数参数?为什么要为此使用
#define
?或者宏只在同一个文件中进行文本替换。在
top.cpp
中定义宏对
showme.cpp
没有影响。首先,它不起作用-在翻译单元
showme.cpp
中的宏
t
在翻译单元
top.cpp
中,通过宏
T
执行ECT。这是XY问题的一个很好的示例。您实际上在尝试做什么?对于几个可能的问题,有几种可能的解决方案。将其设为模板参数。
#include <iostream>

template<size_t T> //or int or whatever other type you really need to use
void showme () {
   std::cout << "I am " << T << std::endl;
}

int main (int argc, char** argv) {
  showme<5>();

  showme<6>();
}