如何“重新定义”一个char *到另一个char *?

时间:2010-12-20 15:11:55

标签: c++ c-preprocessor

类似的东西:(这是任务,如何做到这一点,而不是改变主要功能的主体)

我认为这太简单了...但是......我不知道怎么做......

#include <iostream>

#define "a" "b"

int main( int argc,char ** argv) {
   std::cout << "a";
   return 0;
}

//输出:b

怎么做?

6 个答案:

答案 0 :(得分:8)

幸运的是,您无法重新定义字符串文字。当然,真正的问题是:为什么你想要这样做?

答案 1 :(得分:4)

宏名称必须是标识符,因此不能包含字符"

答案 2 :(得分:4)

Changing C++ output without changing the main() function

例如来自该主题:

#include <iostream> 
#include <cstdio> 
#include <sstream> 

#define cout     printf("a"); std::ostringstream os; os 

int main() 
{ 
    std::cout << "b"; 
}

更简单的一个:

#include <iostream>
#define cout cout << "a"; return 0; std::cout
int main() 
{ 
    std::cout << "b"; 
}

答案 3 :(得分:2)

你做不到。预处理器不会“查看”字符串文字。

答案 4 :(得分:0)

可能你想这样做:

#include <iostream>

#define a "b"

int main( int argc,char ** argv) {
   std::cout << a;
   return 0;
}

输出:b

答案 5 :(得分:0)

#define是一种糟糕的c++风格。使用const

#include <iostream>  
// const char * string_a = "a"; // Regular: Use const char *
const char * string_a = "b"; // Replacing: Instead of bad    #define "a" "b"  

int main( int argc,char ** argv) {    
    std::cout << string_a;    
    return 0; 
}