任何人都可以告诉如何编写一个程序,该程序在编译时使用gcc
printsc
和g++
printsc++
吗?
问问题
677 次
5 回答
9
#ifdef __cplusplus
printf("c++\n");
#else
printf("c\n");
#endif
如果您的文件扩展名不正确,您可能会遇到问题。
于 2012-09-24T14:28:22.690 回答
7
像这样的东西:
#if __cplusplus
printf("c++");
#else
printf("c");
#endif
除非您使用它进行编译,否则g++ -x c
即使使用 g++ 编译它仍会打印 C。这是一个问题。
于 2012-09-24T14:28:04.823 回答
5
C 和 C++对标签的处理方式struct
不同
#include<stdio.h>
typedef int T;
int main(void) {
struct T { int a[2]; };
puts((sizeof(T) > sizeof(int)) ? "C++" : "C");
return 0;
}
于 2012-09-24T15:15:29.460 回答
3
使用 C 和 C++ 之间的差异之一。(在 sizeof(int) == 1 的实现上会做错事)
#include <stdio.h>
int main()
{
printf("c%s\n", (sizeof('a') == 1 ? "++" : ""));
return 0;
}
于 2012-09-24T14:43:35.263 回答
0
您的问题有点含糊,我认为您的意思不是字面意思how do you print 'C' or 'C++'
;但我正在阅读它how do you execute a print in either C or C++ depending on the compiler
假设这就是您要问的,您可以尝试一下:
#ifdef __cplusplus //If you compiled with g++
#include <iostream> //include c++ headers and namespace
using namespace std;
#define PRINT(str) cout << str; //print the message with cout
#else //If you compiled with gcc
#include <stdio.h> //include c headers
#define PRINT(str) printf(str); //print using printf
#endif
int main(int argc, char *argv[])
{
PRINT("Hello\n"); //Whatever you compiled with, this now works
return 0;
}
于 2012-09-24T14:44:50.670 回答