我是C ++的新手(不是一般的编程,只是C ++),而且我正在学习使用Pluralsight订阅C ++编程。我正在编写一个练习程序(通过计算机控制台进行的一系列游戏),而且我还在坚持一些事情。在开展Tic-Tac-Toe游戏的过程中,我想称一个我不会每次都重写的板子公式。因此我定义了一组字符串对我有用,但我无法弄清楚如何调用我的用户定义的公式。我不打算发布所有代码,因为它很长,但我会展示你需要的部分(如果一行有" ...."就此而言,意味着我删除了多行代码,使其更适合此网站)。如果你想知道,我正在使用 Microsoft Visual Studio社区2017 RC 和 C ++ 14 。
HEADER FILE:
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <string>
using namespace std;
主要文件:
...
#define TTTBoard () \
{ \
system("cls"); \
cout << "\n\n Let's play Tic-Tac-Toe!\n\n\n"; \
cout << " A B C " << endl; \
cout << " _______________________ " << endl; \
cout << " | | | |" << endl; \
cout << " 1 | " << PlayerSymA1 << " | " << PlayerSymB1 << " | " << PlayerSymC1 << " |" << endl; \
cout << " |_______|_______|_______|" << endl; \
cout << " | | | |" << endl; \
cout << " 2 | " << PlayerSymA2 << " | " << PlayerSymB2 << " | " << PlayerSymC2 << " |" << endl; \
cout << " |_______|_______|_______|" << endl; \
cout << " | | | |" << endl; \
cout << " 3 | " << PlayerSymA3 << " | " << PlayerSymB3 << " | " << PlayerSymC3 << " |" << endl; \
cout << " |_______|_______|_______|" << endl; \
}
...
int main()
{
//This is where I want to call my TTTBoard formula
}
我试图用多种方式调用它,但没有任何效果。以下是我已经尝试过的。我知道我尝试的一些内容并没有完全合理,但我很生气,我无法让它工作,所以无论如何我都尝试了。
TTTBoard
TTTBoard;
TTTBoard()
TTTBoard();
TTTBoard()
{
}
TTTBoard();
{
}
提前感谢您的帮助!!!
答案 0 :(得分:4)
预处理器宏不是调用。相反,它们是扩展,意味着插入宏的主体代替宏调用,并替换参数。
所以,如果你有像
这样的宏#define FOO() { \
bar(); \
}
然后使用它
int main()
{
FOO()
}
预处理器创建的内容和编译器看到的是
int main()
{
{ bar(); }
}
上面的例子还展示了如何使用类似函数的宏。
最后,您不需要宏。在像你这样的情况下,使用实际功能更有意义。在现代C ++中,对宏的需求很少。