标签: c-preprocessor

用定义替换std :: cout

我试图强制我的编译std::cout器用我的代码替换我的代码中的任何出现.但是当我写这样的东西时:

#define std::cout (*some code*)

我的编译器吐在我的脸上.有没有办法做到这一点 ?

编辑:

这是代码片段:

# define std::cout (std_out << std::cout)

(std_out是我之前打开的文件)

和std :: out出现的行上的错误

全球范围没有"cout"

c++ cout c-preprocessor

-3
推荐指数
1
解决办法
2509
查看次数

预处理程序常量溢出?

我使用Arduino Uno(16位int)和:

#define DT 49
#define DT_MICRO ((DT) * 1000)
...
while (val<DT_MICRO){/*something*/}
Run Code Online (Sandbox Code Playgroud)

哪个给

49
-16536
Run Code Online (Sandbox Code Playgroud)

如果我使用打印它们Serial.print(DT);。为什么?我期望49000。为什么会有一个负数?如果在代码中使用,也会发生同样的情况Serial.print(DT*1000)

使用

DT 49L
and DT_MICRO (DT*1000L)
Run Code Online (Sandbox Code Playgroud)

像预期的那样工作。感谢您的澄清。

c c-preprocessor

-3
推荐指数
1
解决办法
129
查看次数

简单#define:d宏在C中不起作用

我正在做C编程的入门课程,我们刚刚开始定义宏.如果cond为false,我应该定义打印msg(字符串)的宏CHECK,但是,它不会将msg打印到stdout流,无论cond是true还是false.有任何想法吗?

1     #define CHECK(cond, msg) if(!cond) fprintf(stdout, "%s", msg)
Run Code Online (Sandbox Code Playgroud)

c macros c-preprocessor

-3
推荐指数
1
解决办法
440
查看次数

如何在传递给C/C++宏之前解析int变量?

我正在尝试执行以下代码:

#define channel1 10
#define channel(id) channel##id

int main(){
    int id = 1;
    cout << channel(id)<<"\n";

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误: error: use of undeclared identifier 'channelid'

相反,我希望输出为10,channel(id)应该预处理,channel1并用10替换值.

有没有办法实现它?

c++ c-preprocessor

-3
推荐指数
2
解决办法
791
查看次数

在C中为MIN定义2个数字

#define MIN (A,B) ((A)<(B)?(A):(B)) 要么 #define MIN (A,B) ((A < B)? A : B )

请选择一个答案,为什么?

c macros c-preprocessor

-4
推荐指数
1
解决办法
718
查看次数

在c中声明结构内的变量

我想为我的编程语言创建一个面向对象的预处理器,将我的语言转换为C语言(如早期的C++).我想用结构模拟类.问题是:如何在结构中声明一个变量,如下所示:

typedef struct { //equivalent of class
   int a = 5;
   int (*sub)(int) = &int_sub; //function of a class, uses an external declared function
} class_name;
Run Code Online (Sandbox Code Playgroud)

我尝试了上面的代码,但编译器写了这个:

error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token 
       void (*sub)(int) = &int_sub;
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 我可以在结构中声明一个变量吗?

  2. 如果有,怎么样?

c oop struct c-preprocessor

-4
推荐指数
1
解决办法
411
查看次数

包含头文件不是.c程序所必需的,而是.cpp程序

我已经看到.c程序执行正常但没有包含头文件,虽然它会抛出警告,但是对于.cpp扩展名,不包含头文件会引发错误.有人可以解释内部行为吗?

c c++ c-preprocessor

-4
推荐指数
1
解决办法
59
查看次数

如何评估此C预处理器?

#include<stdio.h>
#define SQUARE(x) x*x
int main(){
float s=10,u=30,t=2,a;
a=2*(s-u*t)/SQUARE(t); // How is this evaluated ? 
printf("Result %f\n",a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译器显示的输出为-100.000000.但据我说它应该是-25.000000.我该怎么做才能纠正它,我的错误是什么?

c macros c-preprocessor

-5
推荐指数
1
解决办法
67
查看次数

C 预处理器 ## 在什么情况下起作用,什么情况下不起作用?

似乎有时与 ## 连接确实有效,有时则不起作用。

尽管它对于某些用途显然是至关重要的,但它是一个不可靠的功能。

使用##有一套明确的规则吗?

一个例子是:

file1.h
#define concat(a,b) a##b
#define BAR bar
extern int concat(fu,BAR) ();
Run Code Online (Sandbox Code Playgroud)

这里 concat 产生 fuBAR 而不是 fubar。

一个例子是:

file2.h
#define BAR bar
extern int fu##BAR ();
Run Code Online (Sandbox Code Playgroud)

这里 ## 会产生一个关于代码中杂散 ## 的错误。

c c-preprocessor

-5
推荐指数
1
解决办法
342
查看次数

#define DATA 10和#如果定义了DATA之间的区别

我在许多地方看到我们正在验证这样的陈述

 # if defined(DATA ) || defined(__hpux) || defined(__sun)
Run Code Online (Sandbox Code Playgroud)

我的疑问是:只有define喜欢#defined DATA和检查条件的含义是什么?

c c++ c-preprocessor

-6
推荐指数
1
解决办法
87
查看次数

这个程序是如何运行的?

我期待以下程序的答案为400 ......但为什么它是120?

#include<stdio.h>
#define N 10+10

int main()
{
    int a = N*N;
    printf("%d", a);
}
Run Code Online (Sandbox Code Playgroud)

c c-preprocessor

-7
推荐指数
1
解决办法
67
查看次数

标签 统计

c-preprocessor ×11

c ×9

c++ ×4

macros ×3

cout ×1

oop ×1

struct ×1