void()问题 - 它没有打印结果

时间:2015-07-22 11:41:41

标签: c++ main visual-studio-2015 void cout

我正在编写一个分为三个不同文件的程序:

  1. 1)名为my.h的标题;
  2. 名为my.cpp;
  3. 的源cpp文件
  4. 名为use.cpp;
  5. 的主文件

    这里是他们的陈述:

    /* Header file my.h
    Define global variable foo and functions print and print_foo
    to print results out */
    
    extern int foo;
    void print_foo();
    void print(int);
    
    /* Source file my.cpp where are defined the two funcionts print_foo() and print()
    and in where it is called the library std_lib_facilities.h */
    
    #include "stdafx.h"
    #include "std_lib_facilities.h"
    #include "my.h"
    
    void print_foo() {
        cout << "The value of foo is: " << foo << endl;
        return;
    } 
    void print(int i) {
        cout << "The value of i is: " << i << endl;
        return;
    }
    
    / use.cpp : definisce il punto di ingresso dell'applicazione console.
    //
    
    #include "stdafx.h"
    #include "my.h"
    #include <iostream>
    
    using namespace std;
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        int foo = 7;
        int& i = foo;
        i = 99;
        char cc = '0';
    
        while (cin >> cc) {
            switch (cc) {
            case '1':
                void print_foo();
                break;
            case '2':
                void print();
                break;
            default:
                exit(EXIT_FAILURE);
            }
        }
    
        return 0;
    }
    

    我的主要问题是程序编译并正确运行,但它没有像我想象的那样打印任何内容。

    我该如何解决?

    谢谢!

    利奥

4 个答案:

答案 0 :(得分:2)

不需要调用指定返回类型的函数。正确

void print_foo();    // This actually declares a function prototype

print_foo();

print(i);    // Pass i as argument

答案 1 :(得分:1)

void中的void print_foo();void print(); switch中的extern int foo;放下。

目前您只是宣布一个函数原型;实际上并没有调用函数。

您的[assembly: OwinStartup(typeof(Chatter.Host.Startup))] namespace Chatter.Host { public class Startup { public void Configuration(IAppBuilder app) { // Any connection or hub wire up and configuration should go here app.MapSignalR(); } } 方法虽然在语法上有效,但可能会使您的代码库难以扩展和维护:请考虑明确传递参数。

答案 2 :(得分:1)

您的代码声称*“定义全局变量foo ...”如下...

extern int foo;

...但是这只是声明某些翻译单元实际上会定义它(没有前导extern限定符)。您发布的代码中没有实际变量,这意味着您的程序不应该链接,除非您使用的某些库巧合地带有foo符号。

这个较短的代码会缩小您的问题:

#include <iostream>

extern int foo;

void f()
{
    std::cout << foo << '\n';
}

int main() {
    int foo = 7;
    f();
}

您可以看到编译器错误消息here,即:

/tmp/ccZeGqgN.o: In function `f()':
main.cpp:(.text+0x6): undefined reference to `foo'
collect2: error: ld returned 1 exit status

答案 3 :(得分:0)

你会输入主要功能

case '1':
    print_foo();
    break;

注意我删除了“#34; void&#34;在这种情况下1.因为你没有重新声明那里的功能。你只需使用它。